Thread Inheritance (경찰과 도둑 예시)
📘 Backend/Concurrency2023. 10. 2. 13:47Thread Inheritance (경찰과 도둑 예시)

📘 Thread 상속 하나의 예시를 들어, 돈을 보관할 안전한 금고를 설계한다고 가정해 봅시다. 그리고 해커들이 코드를 추측해서 금고를 여는데 얼마나 걸리는지 알아보겠습니다. 동시에 금고의 코드를 깨려는 헤커 스레드를 몇개 만들고, 경찰 스레드도 추가합니다. 경찰 스레드는 10초 안에 해커를 잡으러 옵니다. 만약 해커들이 그동안 돈을 훔쳐서 도망가지 않는다면 경찰이 해커를 체포합니다. 10초를 세는동안 경찰 스레드는 도착 상황을 화면에 띄워 보여줄 겁니다. 위 예시의 계층을 정리해 보자면, 최상위 Runnable 인터페이스 Runnable을 구현한 Thread Thread를 확장한 Hacker Thread / Police Thread (이때, Hacker Thread는 금고 객체에 대한 Referense..

Create Thread - Implementation Runnable & Thread
📘 Backend/Concurrency2023. 10. 2. 13:45Create Thread - Implementation Runnable & Thread

📘 Thread Creation with Runnable Runnable 인터페이스를 구현해 Multi-Threading을 구현합니다. 아래 예시 코드의 new Thread(() -> {}) 람다 부분은 내부적으로 new Runnable()로 구성됩니다. 📌 start() & sleep() 아래 코드를 실행시켜 보면, 당연히 처음 로그는 main 스레드에서 생성했으니 이름이 main 입니다. 그 후, thread.start()를 거친 후의 thread name은 운영체제에서 스케줄링 되지 않았습니다. 왜냐하면 sleep으로 인해 운영체제가 비동기적으로 sleep을 실행했고, 그래서 2번쨰 스레드의 이름이 테스트-1이 아닌 main이 나오게 됩니다. 그리고 마지막으로 새 스레드의 코드가 실행되어 테스트-1..

Java Serializable & Parsing
📘 Backend/Java2023. 10. 2. 00:08Java Serializable & Parsing

📘 Serialization vs JSON 비교 직렬화를 알아보게 된 계기는 CSV, JSON 같은 훌륭한 데이터 포맷이 있는데 왜 굳이 직렬화를 사용하는지 입니다. 직렬화란 자바 Object & Data를 다른 컴퓨터의 자바 시스템에서 사용 하도록 바이트 스트림(streams of byte) 형태로, 연속적인(Serial) 데이터로 변환하는 포맷 변환 기술입니다. 반대로 역직렬화는 바이트로 변환된 데이터를 원래대로 자바 시스템의 Object & Data로 변환하는 기술입니다. 이를 시스템적으로 보면 JVM의 Heap or Stack 메모리에 상주하는 객체를 직렬화해 DB나 외부 저장소에 저장하고, 다른 컴퓨터의 자바 시스템에서 이 파일을 역직렬화 하여 자바 객체르 변환 후 JVM 메모리에 적재시켜 사용..

Spring RestTemplate
📘 Backend/Spring2023. 10. 1. 21:16Spring RestTemplate

📘 Spring RestTemplate 참고한 블로그 HTTP 프로토콜을 사용하여 Rest API에 쉽게 액세스 할 수 있게 해주는 스프링 프레임워크의 클래스입니다. GET, POST, PUT, DELETE 등의 HTTP Method를 지원하며, 서버로 부터 응답을 받을때 JSON, XML등 다영한 포맷 형식을 지원합니다. WebCllient vs RestTemplate WebClient는 Web Flux에서 제공하는 Reactor를 이용한 비동기 & 논블로킹 방식을 사용하여 데이터를 주고 받는 반면, Spring WebClient와 비교하여 차이점이 있다면, RestTemplate는 HTTP 요청에 대해 동기식 & 블로킹하여 데이터를 주고 받습니다. 📘 HTTP Request & Response에 대한..

Intergration Spring Bean & Akka Actor
📘 Backend/Spring2023. 9. 28. 19:55Intergration Spring Bean & Akka Actor

📘 Akka Actor Akka Actor는 동시성 모델을 기반으로 하는 어플리케이션 프레임워크 입니다. 이번 진행중인 프로젝트에서, JVM에 여러 Thread가 동시에 작업하는 분산 어플리케이션을 Actor Model을 기반으로 단순화하기 위함과 데이터의 실시간성, 고성능이 요구되는 백엔드 설계를 위해 사용하게 되었습니다. Actor Model의 특징 액터들은 상태를 공유하지 않습니다. 액터들 간의 통신은 메시지 전달을 통해서 이루어 집니다. (이벤트 기반 모델) 액터간의 통신은 비동기로 이루어 집니다. 각 액터는 전달받은 메시지를 큐에 보관하며, 메시지를 순차적으로 처리합니다. 액터는 일종의 경량 프로세서 입니다. Akka 프레임워크는 Scala로 작성되었으므로 Java 기반의 어플리케이션에서 완벽하..

Spring ehCache & DevTools
📘 Backend/Spring2023. 9. 28. 18:32Spring ehCache & DevTools

📘 Spring ehCache Spring에서 간단하게 사용할 수 있는 Java기반 오픈소스 캐시 라이브러리 입니다. redis나 memcached같은 캐시 엔진들도 있지만, 저 2개의 캐시 엔진과는 달리 ehcache는 Daemon을 가지지 않고 Spring 내부적으로 동작하여 캐싱 처리를 합니다. 따라서 redis같이 별도의 서버를 사용하여 생길 수 있는 네트워크 지연 혹은 단절같은 이슈에서 자유롭고, 같은 로컬 환경 일지라도 별도로 구동하는 memcached와는 다르게 ehcache는 서버 어플리케이션과 라이프사이클을 같이 하므로 사용하기 더욱 간편합니다. Ehcache의 2.x 버전과 3 버전의 차이는 큽니다. 3 버전 부터는 javax.cache API(JSR-107)와의 호환성을 제공합니다. ..

2023. 9. 26. 21:00부하테스트 - Event 기반 Data Simulator 개발

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 해주세요.

image