in TIL on Til, Java, 동시성, Racecondition, Volatile, Atomicboolean, Cas, Webflux
멀티스레드 환경에서 volatile의 한계(가시성 vs 원자성)와 check-then-act 레이스 컨디션을 AtomicBoolean.compareAndSet(CAS)으로 해결하는 방법을 정리했습니다.
📝 TIL (Today I Learned) \n+> volatile만으로는 해결되지 않는 문제가 있다. "가시성"과 "원자성"은 다르고, check-then-act 패턴이 섞이면 레이스 컨디션이 터진다. 이걸 AtomicBoolean.compareAndSet으로 정리해 본다.
in TIL on Til, Android, Capacitor, 보안, Https, Manifest
Capacitor Android 앱에서 HTTPS만 사용하도록 usesCleartextTraffic을 false로 설정할 때, 카카오 SDK와의 Manifest merger 충돌을 tools:replace로 해결하는 방법과, CORS와의 관계를 정리했습니다.
📝 TIL (Today I Learned) Capacitor로 빌드한 Android 앱에서 HTTPS만 사용하도록 보안 설정을 바꾸다가, 카카오 SDK와 Manifest merger 충돌이 났고, tools:replace로 해결했다. 이 과정에서 usesCleartextTraffic이 무엇인지, CORS와는 어떻게 다른지까지 정리해 본다.
Spring에서 HTTP 요청이 Controller에 도달하기까지 거치는 Filter, Interceptor, AOP의 역할과 차이, 그리고 요청 처리 순서를 정리했습니다.
PATCH/PUT, DTO, Controller 같은 Spring 글을 읽었다면, “요청이 어디서 걸리고, 어떤 순서로 처리될까?”가 궁금할 수 있다. 이 글에서는 Filter, Interceptor, AOP가 각각 어디에 위치하고, 무엇을 할 때 쓰면 좋은지** 한 번에 정리한다.
알고리즘 문제 풀이 시 Integer ArrayList를 int[] 배열로 변환해야 할 때 사용할 수 있는 방법을 정리했습니다.
알고리즘 문제를 풀다 보면 List<Integer>로 모아둔 결과를 최종적으로 int[] 배열로 반환해야 하는 경우가 많다. String 리스트는 toArray()로 쉽게 변환할 수 있지만, primitive 타입인 int는 toArray()를 그대로 쓸 수 없다. 이번 글에서는 Integer ArrayList를 int 배열로 바꾸는 방법을 정리해보자.