분류 전체보기77 [왜] synchronized block은 오버헤드를 증가시킬까? synchronized란? 메소드나 블록 코드에 동기화 영역을 표시 동기화 블록은 한 시점에, 1개의 쓰레드만이 접근 가능 블록에 접근을 시도하는 다른 쓰레드들은 블록 안 쓰레드가 실행을 마치고 블록을 벗어날 때까지 블록(blocked) 상태 즉, 멀티스레드의 동시접근을 방지 사용처 메소드 method에 synchronized를 걸 경우, 그 함수가 포함된 객체에 lock을 거는 것 코드블록 synchronizd method synchronized instance method 인스턴스 메소드 동기화 메소드를 가진 인스턴스 기준으로 lock 호출하는 인스턴스가 같다면, 1개 쓰레드가 1번 instanec method를 수행할 때, 나머지 쓰레드는 모든 instance method를 수행할 수 없다. 호출하.. 2020. 4. 19. [왜] 로그 찍을 때 System.out.println을 사용하면 안 좋을까? System.out.println 이란? java.lang.System Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array. (해석) System class에 의해 제공되는 기능에는 표준입력, 표준출력, 에러출력스트림, 외부 프로퍼티와 환경변수에 대한 접근,.. 2020. 4. 18. [spring] 스프링부트의 Spring-Boot-Devtools 스프링부트가 제공하는 Optional Tool org.springframework.boot:spring-boot-devtools 의존성 추가 추가 시 기본 프로퍼티 변경 개발 환경의 편리함을 위한 일부 캐시 false h2 on session-persistent on restart on 리스타트 기능? 코드 변경 시 자동 재시작 스프링부트가 사용하는 2개 클래스로더 중, 리스타트 클래스로더 이용 Base Class Loader (의존성을 읽어들이는 클래스로더) Restart Class Loader (어플리케이션을 읽어들이는 클래스로더) 라이브 리로드 기능? 코드 변경 시 브라우저를 새로고침 브라우저 플러그인 필요 리모트 어플리케이션 기능? 원격에 어플리케이션 코드를 생성하고, 로컬에서 실행 Producu.. 2020. 4. 18. [spring] 스프링부트의 테스트 스프링부트 테스트 준비물 spring-boot-starter-test 의존성 junit (unit test framework) jsonpath (json assertion) mockito (mocking framework) selenium (web scrapping) junit test runner를 설정하는 @RunWith(SpringRunner.class) 스프링부트 테스트 어노테이션 @SpringBootTest / @JsonTest / @WebMvcTest @SpringBootTest의 기본 웹 환경은 WebEnvironment = SpringBootTest.WebEnvironment.MOCK 테스트할 때, 원래의 서블릿 컨테이너 대신 mocking container를 띄운다. 원래 서블릿처럼 Di.. 2020. 4. 17. [spring] 스프링부트의 로깅 로깅 퍼사드(Logging Facade) & 로거(Logger) Logging Facade Logger API들을 추상화해놓은 인터페이스 로깅 퍼사드를 통해 로거 사용 장점 : 구현체를 쉽게 바꿀 수 있다 (Spring Data JPA처럼) 종류 : SLF4j / JCL / Commons Logging Logger 종류: log4j2 / JUL(java.util.logging) / LogBack 스프링부트의 로깅 과거 : Commons Logging 현재 : Spring-JCL의 개입으로 Commons Logging(인터페이스) -> SLF4j(인터페이스) -> Logback(구현체) 중요 : 최종적으로 Logback을 사용함을 기억 SLF4j는 의존성에 의거하여 로거를 선택한다. 어떤 구현체로도 바꿀 .. 2020. 4. 16. 이전 1 ··· 6 7 8 9 10 11 12 ··· 16 다음