Home
밴쿠버에서 개발하는 펭귄
Cancel

Java's Concurrency - 4 (Liveness)

이번 포스팅에서는 저번에 글이 길어져 포함하지 않은 Liveness에 대해서 알아볼 것이다. ⒈ Liveness? 동시에 실행되는 어플리케이션을 시간적으로 적절하게 실행시키는 것을 Liveness라고 한다. 한국말로 해석한 것을 찾아보니 활동성이라고 한다. 아래에서 가장 흔한 liveness 문제인 deadlock에 대해 알아보고 다른 두 가지 문...

Java's Concurrency - 3 (Synchronization)

⒈ What is Synchronization? 여러 쓰레드들은 오브젝트나 필드같은 resource들을 서로 공유한다. 이는 두 가지 문제를 일으킬 수 있는데, ¹ 쓰레드들끼리의 충돌과 ² 메모리의 inconsistency이다. Synchronization은 이 문제들을 해결할 수 있는 방법이다. Synchronization은 thread conte...

Java's Concurrency - 2 (Thread management)

⒈ Background 오늘은 지난 글에 이어 현재 동작하고 있는 thread를 control 할 수 있는 세 가지 방법에 대해서 알아보려고 한다. Sleep Interrupts Joins 하나씩 알아본 후에 세 가지 방법이 모두 포함된 example을 통해 어떻게 사용할 수 있는지 알아보자. ⒉ Sleep Thread.sleep...

Java's Concurrency - 1 (Basic)

⒈ Background 블로그 스터디원 중 한 분이 Java로 개발할 때 Thread를 따로 만들어주지 않으면 그건 Single-Threaded application인가 라는 질문을 주셔서 간단하게 답해보고, 개발자가 어떻게 Thread를 생성할 수 있는지 간단하게 알아보려고 한다. ⒉ Is Java Single-Threaded applicatio...

How does JVM work

이 글을 먼저 읽고 오는 걸 추천드립니다: JVM, JRE and JDK ⒈ What is Java Virtual Machine(JVM) Java Virtual Machine(JVM)의 주된 목적은 Java 컴파일러를 통해 변환된 Byte code(.class 파일)를 Machine code로 변환해주는 것이다. 이 글에서는 JVM의 아키텍쳐를 함...

JVM, JRE and JDK

⒈ Background 저번 블로그 포스팅 스터디 중 compiler와 interpreter 이야기가 나왔다. 자바가 어떻게 class 파일로 컴파일이 되는지, 그리고 실행 되는지 이야기 해보다가 예전에 같은 궁금증을 가지고 찾아본 내용을 바탕으로 글을 작성해본다. ⒉ What is JVM? Java Virtual Machine(JVM)은 Jav...

Lazy Loading

⒈ Background 회사에서 DB에 Blob(Binary Large Object)을 업로드하는 REST API를 만들게 되었다. 현재는 이 오브젝트만 ORM에서 빠져 있는 상태이다. 그 이유는 만약 이 오브젝트가 업로드 될 column을 다른 column들과 같은 방법으로 mapping을 하면 테이블이 읽혀질 때마다 함께 읽혀지기 때문에 Perf...