일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OS
- python-socketio
- Thread Library
- spring-data-jpa
- 쓰레드 라이브러리
- 함수형 인터페이스
- sql-mappler
- Spring
- functional interface
- Process
- 도커
- strict stubbing
- 롬복주의점
- 문자열 리터럴
- Thread Multiplexing
- java.util.function
- 프로세스
- hiberbate
- SystemCall
- 문자열 불변성
- none이미지
- @Header
- AOP
- 운영체제
- FunctionalInterface
- django-crontab
- custom annotation
- ReflectUtils
- task_struct
- rainbow table
- Today
- Total
목록전체 글 (35)
JH's Develog
[JAVA] 자바 쓰레드 동기화(1) - synchronized, wait()/notify() 멀티 쓰레드 환경에서 Critical section 문제를 해결하기 위해서는 Critical section에 대해 쓰레드를 동기화 해야합니다. 자바에서는 아래 두 가지 방법으로 쓰레드를 동기화 할 수 있습니다. 1) synchronize jhkimmm.tistory.com 저번 포스팅에 이어서 java.util.concurrent.locks 패키지의 lock 클래스 중 ReentrantLock 클래스를 이용하여 쓰레드를 동기화 하는 방법을 알아보겠습니다. ReentrantLock이란 ReentrantLock은 가장 일반적인 lock이며, synchronized 블럭의 wait() & notify() 처럼 awa..
synchronized 블럭을 이용해서 쓰레드를 동기화 할때 괄호안에 아래와 같이 객체의 참조변수(this)가 들어가는 경우가 있고 Class 클래스(.class)가 들어가는 경우가 있습니다. 객체의 참조변수가 들어가는 경우를 Object level lock이라고 하고 Class 클래스가 들어가는 경우를 Class level lock이라고 합니다. // Object Level locking public class ObjectLevelLockExample { public void objectLevelLockMethod() { synchronized (this) { //... } } } // Class Level locking public class ClassLevelLockExample { public v..
멀티 쓰레드 환경에서 Critical section 문제를 해결하기 위해서는 Critical section에 대해 쓰레드를 동기화 해야합니다. 자바에서는 아래 두 가지 방법으로 쓰레드를 동기화 할 수 있습니다. 1) synchronized 키워드 이용한 암묵적인 동기화 2) java.util.concurrent.locks 패키지의 lock 클래스들을 이용한 명시적 동기화 이번 포스팅에서는 synchronized 블럭을 이용한 암묵적인 동기화에 대해 정리하겠습니다. 기본적인 사용법 synchronized는 키워드는 Critical section을 설정하는데 사용되며 두가지 방식이 있습니다. 1. 메서드 전체를 Critical section으로 지정 public synchronized void example..
문제상황 계정 정보나 비밀키 정보를 담고 있는 파일을 .travis.yml에 넣기 위해 travis encrypt-file을 사용합니다. travis encrypt-file --pro --add 윈도우 환경에서 위 명령어로 정상적으로 암호화를 진행했음에도 불구하고 빌드하는 과정에서 아래와 같은 "digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c" 에러가 발생하는 경우가 있습니다. 이는 Travis CLI를 사용해 암호화를 진행했을 때 발생하는 에러로, 리눅스에서는 문제 없는데 윈도우에서만 발생한다고 합니다. 해결방법 Linux VM에서 작업 진행하는 방법으로 해결할 수 도 있지만, 제 2의 해결책이 존재합니다...
ReflectUtils란? ReflectUtils는 Spring에서 제공하는 유틸리티 클래스이며, Java Bean 형식의 클래스에 대해서 자바의 Reflection API를 쉽게 사용할 수 있게 도와줍니다. ReflectUtils를 사용하면 자바의 Reflection API를 직접 사용하지 않고도 Java Bean 형식 클래스 멤버의 이름, 값에 손쉽게 접근할 수 있습니다. getConstructor(Class type, Class[] parameterTypes) 메서드를 통해 Constructor 객체를 얻어와서 생성자에 접근하거나, getBeanProperties(), getBeanGetters(), getBeanSetters() 중 하나를 사용해서 해당 객체의 모든 프로퍼티에 대한 Property..
Postman에서 위와 같은 형식으로 multipart/form-data 요청을 보내는 것과 같은 형식으로 Controller 테스트를 작성해보겠습니다. import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; ... @AutoConfigureMockMvc @SpringBootTest public class NoteControllerTest { @Autowired private MockMvc mvc; @Test void test() throw..
QueryDsl에서 Projections.bean() 사용 시 발생하는 ExpressionException 입니다. com.jhkim.whiskeynote.core.dto.NoteBookDetailResponse com.querydsl.core.types.ExpressionException: com.jhkim.whiskeynote.core.dto.NoteBookDetailResponse ... Caused by: java.lang.InstantiationException: com.jhkim.whiskeynote.core.dto.NoteBookDetailResponse at java.base/java.lang.Class.newInstance(Class.java:571) at com.querydsl.core..
Spring Security에서 JWT를 사용한 인증에서 발생할 수 있는 ExpiredJwtException, JwtException, IllegalArgumentException과 같이 Filter에서 발생하는 Exception을 핸들링하는 방식에 대해 알아보겠습니다. @ControllerAdvice로는 안되는 이유 일반적으로 Spring에서는 아래와 같이 @ControllerAdvice 어노테이션을 붙인 클래스 내부에 @ExceptionHandler을 붙인 핸들링 메서드를 여러개 추가하는 방식으로 전역범위의 Exception을 핸들링 할 수 있습니다. @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception...