서론 https://www.youtube.com/watch?v=aSTuQiPB4Ns 토비님의 유튜브 강의 내용을 정리한 글 입니다. 본론 스프링 컨트롤러 리턴타입에 따른 동작방식 #1 Object @GetMapping("/async") public String async() throws InterruptedException { log.info("async"); Thread.sleep(2000); return "hello"; } 기본 tomcat thread pool 수인 200개 까지만 동시처리가 가능하다. [링크] https://tomcat.apache.org/tomcat-8.5-doc/config/executor.html #2 Callable @GetMapping("/callable") public ..
서론 https://www.youtube.com/watch?v=Wlqu1xvZCak 토비님의 유튜브 강의를 보고 정리한 내용입니다. 본론 https://kdhyo98.tistory.com/136 이전 코드까지는 모두 main스레드에서 동작했다. 하지만, IO나 큰 계산같은 작업들이 있다면 main스레드가 끝날 때까지 멈추게 되는데, 모바일 어플로 생각하면 버튼을 누를 때 작업을 완료될 때까지 멈추게 된다. 사용자가 작업 처리를 기다리지 않고 다른 이벤트를 받을 수 있도록 백그라운드에서 동작시켜야 하는데, 이걸 main이 아닌 다른스레드에 작업을 넘겨 처리할 수 있다. Ractive Streams 구현 사용자가 다 확인할 필요가 없는 경우에는 백그라운드에서 동작을 시켜 main은 다른 이벤트를 받게 할 수..
서론 https://www.youtube.com/watch?v=DChIxy9g19o 토비님 유튜브 강의를 보고 정리한 내용입니다. 본론 Operator https://kdhyo98.tistory.com/135 첫 번째 강의에서 Publisher, Subscriber를 하나씩 사용해서 리액티브 스트림즈를 간단하게 알아봤다. Operator는 기존 Publisher -> Subscriber에서 중간에 연산자를 두어 결과를 변경하거나 10개를 1개만 최종으로 보내거나 하는 녀석을 말한다. Publisher (DataA) -> (DataA) Operator (DataB) -> (DataB) Subscriber 느낌이다. Java 8의 스트림을 생각하면 이해하기 쉽다. 스트림의 map, reduce, filter..
서론 https://youtu.be/8fenTR3KOJo 토비의 스프링에 있는 토비님의 라이브 유튜브 강의를 보고 정리한 내용입니다. 본론 Iterable vs Observable Iterable public static void main(String[] args) { Iterable iter = () -> new Iterator() { int i = 0; final static int MAX = 10; public boolean hasNext() { return i < MAX; } public Integer next() { return ++i; } }; iter.forEach(System.out::println); } Iterable 인터페이스를 구현하면, for-each를 사용할 수 있다. 주로, C..
초기 데이터 셋팅 volumes: - ./mysql/init:/docker-entrypoint-initdb.d docker-entrypoint-initdb.d에 ./mysql/init 디렉토리에 있는 sql 파일을 추가한다. 이미지 실행 시 자동으로 해당 SQL 스크립트를 읽어서 세팅한다. 한글깨짐방지 command: - --skip-character-set-client-handshake - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci --skip-character-set-client-handshake 클라이언트와 관계없이 '--character-set-server'에서 지정한 문자집합을 기본으로 한다. 이게 없다면, 클라..
23년 8월 출간된 즉 한 달전에 나온 책인 만큼 코로나, 비트코인, 러시아와 우크라이나 전쟁, CHAT GPT 등 최신 이슈를 소재로 하여 책을 풀어가는 게 책 읽는 내내 흥미를 자극시켰다. 저자가 실리콘밸리와 한국을 넘나들며 다양한 경험을 한 만큼 두 나라의 사이버 범죄의 실제 사례들을 번갈아가며 이야기해준다. 미국 사례들을 통해 왜 미국이 IT 강국이고, 미국 대통령들이 사이버 보안 지원에 아낌없이 하는지를 설명하는 반면, 우리나라 사례들을 통해 숨기기 바쁜 정치적 문제, 의사결정, 수평적인 보고 체계, 책임회피를 위한 증거임멸 등 아쉬운 대처에 대한 사례들을 통해 아쉬운 경험들을 설명하면서 잘못된 점을 짚어주는 게 우리나라 발전을 위한 따끔한 쓴소리로 느껴졌다. 현대에 들어서 모든 것들이 컴퓨터이..
spring: jpa: properties: hibernate: query: plan_cache_max_size: 1 plan_parameter_metadata_max_size: 1 주로 위와 같이 yaml, properties 를 사용해서 하이버네이트 옵션을 주곤 한다. 자주 사용하는 옵션 외에는 어떤 옵션이 있는지 헷갈릴 때가 있고, 혹은 코드로 직접 옵션을 줄 때 옵션 별로 상수로 직접 구현할 필요 없이 이미 구현된 상수를 발견해서 기록한다. 아래 AvailableSettings는 hibernate-core에 있는 하이버네이트 옵션을 상수로 표현한 인터페이스다. hibernate-envers 또한 상수로 정의되어 있다. 클래스명 - EnversSettings 수동으로 코드에서 옵션을 변경할 때 경로..