일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 이차전지관련주
- java
- 자바
- Spring
- k8s
- Sort
- 엘라스틱서치
- 예제로 배우는 스프링 입문
- 이펙티브 자바
- 이펙티브자바
- 알고리즘정렬
- 카카오
- kubernetes
- 알고리즘
- 티스토리챌린지
- effectivejava
- 스프링핵심원리
- 클린아키텍처
- 스프링
- Effective Java
- 카카오 면접
- 스프링부트
- Effective Java 3
- 스프링 핵심원리
- JavaScript
- 오블완
- 코딩테스트
- 자바스크립트
- ElasticSearch
- 김영한
- Today
- Total
목록2020/09 (42)
Kim-Baek 개발자 이야기
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎컴파일 시 오류 cannot find symbol -> 오타가 있을때 나오는 오류이다 (대소문자 구별을 잘 확인하자) ※에러 노트를 만들자 어떤 상황에서 에러가 났는지, 어떻게 고쳤는지 확인을 통해 추후에 에러를 잘 고칠 수 있게 된다. ◎공백과 주석 공백과 주석은 코드의 가독성을 높인다, 컴파일 시에는 사라지는 부분이다. ◎중괄호의 사용 중괄호는 코드(명령문)를 묶는다. 열었으면 닫아야한다. 중괄호를 기준으로 Tab 을사용한다 -> 어떻게 연결되는지 확인이 편리할 수 있도록 하는 것이다. ◎세미콜론의 사용 ; (세미콜론)은 하나의 명령문(실행문)이 종료됨을 알려준다.(마침표 개념) 실제로 실행할 때는 공..
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다. ◎자바설치 후 기본 설정 내 컴퓨터 오른쪽 클릭 후 속성에 들어간다. 시스템 속성 - 고급 - 환경변수 - 시스템 변수 추가 새로 만들기를 한다. JAVA_HOME 과 자바가 깔린 경로만 추가(C:\Program Files\Java\jdk1.8.0_73) path 를 수정하는데 맨 앞에 C:\Program Files\Java\jdk1.8.0_73\bin; 추가 자바가 올바르게 깔렸는지 확인을 하기 위해서는 명령프롬프트(실행 -> cmd) 를 통해 확인이 가능하다. java -version 을 입력한다. ◎명령 프롬프트 기본 명령어 cd : change directory의 줄임말로 위치를 바꿔주는 역할 dir ..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 PSA 소개 잘 만든 인터페이스 나의 코드 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 나의 코드 잘 만든 인터페이스 (PSA) 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 Service Abstractionhttps://en.wikipedia.org/wiki/Service_abstraction 예시 스프링 웹 MVC @Controller 와 @RequestMapping 나의 코드 @Controller | @ReuqestMapping | ... Servlet | Reactive 톰캣, 제티, 네티, 언더토우 스프링 트랜잭션 PlatformTransactionManager 나의 코드 @Transacti..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 AOP 소개 흩어진 코드를 한 곳으로 모아 흩어진 AAAA 와 BBBB class A { method a () { AAAA -> AAA 오늘은 7월 4일 미국 독립 기념일이래요. BBBB -> BB } method b () { AAAA -> AAA 저는 아침에 운동을 다녀와서 밥먹고 빨래를 했습니다. BBBB -> BB } } class B { method c() { AAAA -> AAA 점심은 이거 찍느라 못먹었는데 저녁엔 제육볶음을 먹고 싶네요. BBBB -> BB } } 흩어져 있는 것을 바꾸려면, 모두 찾아가서 바꿔야하는 문제가 생겨 모아 놓은 AAAA 와 BBBB class A { method a () { 오늘은 7..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 Inversion of Control 제어권이 뒤바꼈다고? 일반적인 (의존성에 대한) 제어권: “내가 사용할 의존성은 내가 만든다.” class OwnerController { private OwnerRepository repository = new OwnerRepository(); } IoC: “내가 사용할 의존성을 누군가 알아서 주겠지” 내가 사용할 의존성의 타입(또는 인터페이스)만 맞으면 어떤거든 상관없다. 그래야 내 코드 테스트 하기도 편하지. class OwnerController { private OwnerRepository repo; public OwnerController(OwnerRepository repo)..
인프런에서 백기선 님의 [예제로 배우는 스프링 입문] 을 듣고 정리한 내용입니다 프로젝트 살펴보기 ( Pet Clinic ) 프로젝트 구조 설명 일반적인 메이븐 프로젝트 src/main/java src/main/resources src/test/java src/test/resources 스프링 부트 기반 프로젝트 스프링 부트 스프링 데이터 JPA DB: HSQLDB 뷰: 타임리프 캐시: EHCache 코드가 어떻게 흘러가는 걸까? 로그로 분석하는 방법 application-properties 에서 스프링 프레임워크의 기본 로깅 레벨을 변경하면 더 자세히 볼 수 있다. 디버거로 분석하는 방법 디버깅 포인트를 찍고, Debug 모드로 실행하면 된다.
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 기본 Error Handler 스프링 부트에는 기본적으로 error handler가 들어가 있다. index페이지가 없을 때, localhost:8080으로 요청 시, 보이는 화면이 기본 error handler가 처리해준 결과이다. @MVC 예외 처리 방법 Error를 테스트 하기 위해 Controller를 만들어준다. Controller에서 /hello 요청이 왔을 때 Error를 던지게 한다. SampleException이라는 클래스를 만들어 RuntimeException을 던지도록 해준다.(extends RuntimeException) 그 후, 이 앱에 특화되어 있는 error 정보를 담고 있는 커스텀 클래스를 만들어..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 스프링부트는 복잡한 프로젝트 의존성을 '스타터(Starter)' 의존성 수십 개로 해결한다. 그저 프로젝트에 필요한 기능들을 빌드에 선언을 하기만 하면, 그에 필요한 개별 라이브러리들을 자동으로 추가해준다. 스타터 의존성을 사용안한다고 생각해보자. 그렇다면 스타터 의존성의 장점을 바로 알 수 있을 것이다. 스프링 부트 없이 빌드하려면 어떤 의존성을 추가해야 할까? 스프링 MVC를 지원하려면 어떤 의존성들이 필요할까? 어떤 버전을 사용해야 잘 호환이 될까? 이렇듯 이미 코드 첫줄을 작성하기도 전에 빌드 명세에 어떤 것을 추가하여 기능을 만들어야 할지 많은 고민해야 한다. 이러한 많은 고민 끝에 그레이들 빌드 명세에 다음 의존성..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @SpringBootApplication은 다음의 3개의 어노테이션을 포함한다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration SpringBoot 어플리케이션 구동에 특히 눈여겨 볼 것은 @ComponentScan 과 @EnableAutoConfiguration @ComponentScan @Component @Configuration, @Repository, @Controller, @Service, @RestController 위 어노테이션을 포함한 모든 클래스를 Bean으로 등록한다. @EnableAutoConfiguration - 설정 자동 등록하기 S..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @WebServlet 서블릿을 선언할 때 사용되는 Annotation 이 Annotation이 표시된 클래스는 Servlet Container에 의해 처리된다. 속성 값을 통해 해당 Servlet과 매핑될 URL 패턴을 지정한다. @Controller 이 Annotation이 표시된 클래스는 “Controller” 임을 나타낸다. @Controller는 @Component의 구체화된 역할을 한다. classpath scanning을 통해 구현 클래스를 자동으로 감지할 수 있도록 해준다. 일반적으로 RequestMapping 어노테이션을 기반으로 한 handler method와 함께 사용한다. @WebServlet과 @Cont..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @Component component-scan을 선언에 의해 특정 패키지 안의 클래스들을 스캔하고, @Component Annotation이 있는 클래스에 대하여 bean 인스턴스를 생성한다. @Controller, @Service, @Repository @Component —구체화—> @Controller, @Service, @Repository bean으로 등록 해당 클래스가 Controller/Service/Repository로 사용됨을 Spring Framework에 알린다. @RequestMapping @Controller @RequestMapping("/home") // 1) Class Level public cl..
@Autowired와 @Resource는 같은 기능을 하는 어노테이션이다. 하지만 둘에는 차이점이 존재한다. 1. @Autowired는 스프링 프레임워크 어노테이션이다. 그렇기 때문에 스프링을 사용하지 않는 환경에서는 @Resource를 사용해야 한다. 2. @Autowired의 경우 type과 id 가운데 매칭 우선순위는 type이 높다. @Resource는 그 반대. 표로 정리하면 다음과 같다. @Autowired @Resource 스펙 스프링 표준 자바 소속 패키지 org.springframework.beans.factory.annotation.Autowired javax.annotation.Resource 빈 검색 방식 byType 먼저. 못 찾으면 byName byName 먼저. 못 찾으면 by..
@SerializedName annotation의 value는 객체를 직렬화 및 역직렬화 할 때 이름으로 사용된다. class Albums { @SerializedName("제목") public String title; @SerializedName("내용") public String message; } { "제목": "Albums" "내용": "Free Music Archive", } isPresent() 라는 메소드를 찾아보다가 optional 쪽을 확인해보게 되었다. boolean isPresent() -> 내부객체가 null이 아닌지 확인한다. null이면 false를 반환한다. Optional 은 따로 정리를 할 필요성이 있다. 아래 포스팅을 참조해보자 www.daleseo.com/java8-op..
ES 를 도커 이미지로 띄우는 과정에서 에러가 발생하였다 [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 해당 문제는 vm이나 윈도우에 띄운다면 간단하게 설정만 변경하면 해결할 수 있는 문제이다. decaffein.tistory.com/entry/Elasticsearch-%EC%8B%A4%ED%96%89%EC%8B%9C-vmmaxmapcount-65530-is-too-low-%EC%98%A4%EB%A5%98-%EC%88%98%EC%A0%95-%EB%B0%A9%EB%B2%95 Elasticsearch 실행시 vm.max_map_count [65530] is too low 오류 수정 ..
Openstack 의 Tenant - Openstack Keystone 에서 사용하는 용어로, 사용자 그룹을 의미할 수 있고, 리소스나 어플리케이션에 권한을 갖고 관리하는 단위라고 볼 수 있다. - Keystone v2 에서 사용하는 용어이고, v3 에서는 project 로 용어가 변경되었다. @ignore - junit의 테스트 중, 제외하고 싶은 내용을 이 어노테이션을 사용하면 해당 테스트는 수행되지 않고 진행하게 된다. - 테스트 자체를 지우고 싶지는 않고, 빌드시 돌리고 싶지 않을 경우에 사용하면 좋을 듯 하다.
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 @Component Spring에서 관리되는 객체임을 표시하기 위해 사용하는 가장 기본적인 annotation이다. 즉, scan-auto-detection과 dependency injection을 사용하기 위해서 사용되는 가장 기본 어노테이션이다. @Controller Web MVC 코드에 사용되는 어노테이션이다. @RequestMapping 어노테이션을 해당 어노테이션 밑에서만 사용할 수 있다. @Repository 이것은 Annotation based Configuration, @Repository의 작업은 플랫폼 별 예외를 잡아서 Spring의 통합 검사되지 않은 예외 중 하나로 다시 던지는 것입니다. 이를 위해 Pe..
요즘 계속 회사에서 재택근무를 하다보니, 점점 근무환경이 불편하다고 느껴진다 ㅠㅠ 그래서 회사와 거의 동일한 환경을 세팅하고 싶다는 욕구가 점점 생겼고, 쿠팡에서 매직 트랙패드를 구매하게 되었다. 회사에서는 기본적으로 맥북을 사용하고 있는데, 집에서도 회사랑 똑같이 세팅하면 좀 더 편하지 않을까? 라는 생각을 했다. 쿠팡 로켓 배송으로 구매한 매직 트랙패드2이다. 일요일 저녁에 구매 했는데 월요일 아침에 도착하다니!!! 확실히 전자제품은 처음 비닐을 뜯을 때가 기분이 좋다. 비닐에 딱 쌓여있는 매직 트랙패드2이다. 트랙패드와 케이블로 구성은 심플하다. 사실 케이블은 많이 있어서 딱히 필요는 없는 것 같다. 회사에서 받은 매직 키보드 옆에 이번에 구매한 매직 트랙패드2를 놓았다. 애플에서 위의 폭을 동일하..
인텔리제이와 이클립스에서 프로젝트의 구조 인텔리제이에서 프로젝트 아래에 여러 모듈을 가지면서 사용한다. gradle 에서 모듈을 세팅하면서 발생한 문제 아래와 같이 build.gradle 파일에 내가 원하는 모듈을 세팅할 수 있다. project(':worker') { springBoot { mainClassName = '메인클래스 명' } dependencies { implementation(project(':core')) compile('org.elasticsearch:elasticsearch:6.6.1') } compileJava.dependsOn(processResources) } 위처럼만 하고 리빌드를 하면 에러가 나오는 것을 확인할 수 있다. Project with path ':mypath' ..
카카오 면접을 준비하면서, 공부했던 내용을 정리해놓고 다시 기억하기 위한 포스팅 자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 위와 같은 공통처리를 위해 활용할 수 있는 것이 3가지가 있다. 1. Filter 2. Int..
Kubernetes Service Qwiklabs의 Orchestrating the Cloud with Kubernetes을 공부 하면서 정리한 내용이다. Service Kubernets Service는 논리적인 Pods set의 추상적개념으로 이해하면 된다. 즉 Pods의 Endpoint라고 생각하면 된다. 특정 Pod 들은 언제든지 restart되거나 stop 될 수 있다. 그래서 Service를 통해 Pod 들의 안정적인 Endpoint를 제공할 수 있다. Service는 label 를 사용해 어떤 Pod들을 묶을지 결정한다. Service Type Service는 4가지 Type을 가지고 있으며, default는 ClusterIP Type이다. Service Type에 대해서는 간단하게 정리하고,..