프로세스와 스레드 프로세스 ( Process ) 자신만의 메모리 영역을 가지고, 작업을 처리하는 동적인 프로그램. 스레드 ( Thread ) 프로세스 내부에서 작업을 나누어 처리하는 작은 프로세스로, 자신만의 메모리와 프로세스 내부의 스레드가 공유하는 공유 메모리를 가지고 작업을 처리한다. 동시성 문제 예상하는 순서및 결과 스레드 01 이 공유 데이터 a = 1 저장 스레드 01 가 pring(a) 를 통해 콘솔에 1를 출력함 스레드 02 이 공유 데이터 a = 2 저장 스레드 02 가 pring(a) 를 통해 콘솔에 2를 출력함 실제 동작될 수 있는 예 스레드 01 이 공유 데이터 a = 1 저장 스레드 02 이 공유 데이터 a = 2 저장 스레드 02 가 pring(a) 를 통해 콘솔에 2를 출력함 ..
Pass By Value Pass By Value 는 매개 변수를 통해 값을 전달할 때 원래 값을 복사해서 전달하는 방식을 얘기한다. 결국 매개 변수를 통해 값을 전달하고 나면, 전달된 값에 무슨 짓을 하던 원래 값의 영향을 주지 않는다는 의미이다. 아래 예제코드를 통해 좀더 자세히 알아보자. 예제 코드 결과 메모리 변화 예제 코드에서 확인해보면 passByValue(int a, int b) 내부에서 매개 변수로 전달된 a, b 를 변경했음 에도 main() 로 돌아온 이후 a, b 의 값에는 변화가 없었다. 이와 같이 매개 변수로 전달할 때 값을 복사해서 전달하여 서로 영향을 미치지 않도록 하는 것을 ‘Pass By Value’ 라고 한다. 자바에서는 기본형(Primitive Type)의 경우 오직 ‘..
어느 날 갑자기 멈춰버린 서버 4월 중순이었나? 첫 입사 후 3개월 동안 틈틈이 리팩터링 한 코드를 배포한 이후 2일 간격으로 회사의 정상적으로 작동하던 서버가 죽어버렸다. 작은 스타트업에 유일한 신입 백엔드 개발자로 재직 중인 상황에 실무에서 처음 겪은 상황에 당황스러웠다. 로그를 확인해보니MySQL로 넘어가는 과정에서 DeadLock이라는 단어가 보였고, 이 때문이구나 라는 생각으로 이어졌다. 데드락은 두 가지 원인이 있었는데 하나는 이전에 데이터 무결성을 지키기 위해 트랜잭션 범위를 수정했었는데, 수정한 트랜잭션 범위가 넓어서 였고. 두 번째는 클라이언트 단에서의 중복요청이 발생해서 생겨난 것이다. 두 가지 원인중 하나가 클라이언트쪽 영향이었고. DeadLock이 원인이라면 이전에도 이와같이 ..
- Total
- Today
- Yesterday
- ATDD
- java
- 세션 불일치
- Session
- 클린 아키텍처
- 장애 해결기
- 메모리 파편화
- 내부 단편화
- 메모리 단편화
- 육각형 아키텍처
- OOP
- 수직 분할
- pass by value
- 외부 단편화
- 뾰족함
- multimap
- pass by reference
- 정적 타입 언어
- Object Pool
- 객체 풀
- Sticky Session
- Clean Architecture
- Memory Fragmentation
- pool
- 동적 타입 언어
- SpringBoot 2.2
- 동적 디스패치
- 컴포짓 패턴
- RestAssured
- 수평 분할
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |