프로세스와 스레드 프로세스 ( 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를 출력함 ..
SOLID 로버트 C.마틴이 제시하고 마이클 페더스가 정리한, 객체지향 설계 5원칙 SRP, OCP, LSP, ISP, DIP 단일 책임 원칙( SRP: Single Responsibility Principle) 하나의 객체에 하나의 책임만 부여해야 한다. 상세 하나의 객체에 여러 책임이 부여되면, 각 책임이 서로 변경에 영향을 받을 수 있는 의존성을 가지게 될 수 있다. 이 때문에, 하나의 객체는 하나의 책임만 부여하여 결합도를 낮춰야 한다. 개방 폐쇄 원칙 (OCP: Open Closed Principle) 확장에는 열려있고, 변경에는 닫혀있어야 한다. 상세 확장은 가능하게 하여, 애플리케이션 변화에 대응할 수 있어야 하지만, 그 변화가 지금 애플리케이션 전체에 영향이 가지 않도록 폐쇄되어 있어야 한..
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
- 뾰족함
- pool
- 클린 아키텍처
- 외부 단편화
- Object Pool
- Session
- 동적 디스패치
- OOP
- pass by reference
- pass by value
- multimap
- 장애 해결기
- 수평 분할
- 메모리 단편화
- 육각형 아키텍처
- 세션 불일치
- Memory Fragmentation
- 메모리 파편화
- 동적 타입 언어
- ATDD
- 객체 풀
- RestAssured
- Clean Architecture
- 내부 단편화
- 수직 분할
- 컴포짓 패턴
- java
- 정적 타입 언어
- SpringBoot 2.2
- Sticky Session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |