꾸준히

[TIL-189] 옳고 그름

무자비한 낭만주먹 2024. 1. 8. 07:26

[그림1]. 오늘도 감사한 공부 시작 ~

 

목차
0. 오늘의 학습 시간
1. 오늘 배운 것
2. 오늘의 알고리즘
3. 오늘의 CS
4. 영어 받아쓰기
5. 내일 할 일 (청사진)
6. 감사한 일

 

0. 오늘의 학습 시간
00:00 ~ 02:00: f-lab 갓생 챌린지, 야간 모각코
11:30 ~ 13:00: 점심시간 공부
20:00 ~ 21:00: 퇴근 후 밥 먹고 스타벅스서 공부
21:00 ~ 24:00: f-lab 갓생 챌린지, 야간 모각코 진행

 

1. 오늘 배운 것
a. 옳고 그름은 
내가 정진하는 이유는 이 길이 옳은 길이라는 믿음이 있어서가 아니다.
옳고 그름은 관심 없고 가리고 싶지도 않다.
나는 그냥 정진하라 배웠고 배운대로 하루하루 나아가는 것 뿐이다.


 미야모토 무사시 -

미래가 걱정되는 건 내가 틀릴지도 모른다고 생각해서다.
내 노력이 사실 의미 없는 발버둥일까봐 그게 겁나서 스스로 확인하고, 또 의심하고를 하루종일 반복하니 걱정이 안들리가 있나.

"내가 가기로 한 길엔 가야할 이유는 필요 없다."

 

2. 오늘의 알고리즘
간단한 리트코드 문제를 풀었다.

 

3. 이주의 CS
[2024-01-01]
- JVM의 메모리에서 'Heap, Method'영역을 제외한 나머지 영역은 공유되는게 아니다.
- 스택 영역의 경우 '쓰레드 마다' 런타입 스택이란 걸 만들고 스택 프레임을 쌓는다. (여기서 스택 프레임은 메서드 콜을 의미함)
- 결국 쓰레드마다 스택 안에 메서드 콜 정보를 쌓는다는 의미
- 에러 났을 때 보면 에러 내용이 스택 형식으로 적재되지 않은가, 그 얘기다.
- 그놈에 PC는 결국 스택 프레임을 가르키는 놈인데, 스택 프레임이 아까 뭐라고했는지 기억 나는가? 메서드 콜이다. 
- 결국 PC는 메서드 콜 위치를 가르키는 놈이다. 
- 클래스 로더가 하는 일은 결국에 클래스 파일을 바이트 코드로 번역하고 static 값들을 메모리에 적재하는 것 까지이다.
- 이건 중요한 건 아니지만, 클래스 레벨에서 new 한 객체들은 사실 심볼릭 메모리 레퍼런스라고 해서 논리적으로만 생성된다.
-  Stop-The-World는 GC가 동작하는 동안 다른 작업이 멈추는 현상을 의미하는데
- 이는 메모리를 효율적으로 비우기 위해 메모리의 상태가 변하면 안되는 경우에 이렇다.
- 그래서 이 STW는 서비스에 영향을 끼칠 수 있고 이 시간을 최소화하는 것이 필요하다.
- 주로 에덴 영역을 거쳐 OLD 영역으로 넘어온 경우에 이와 관련된 문제가 생긴다.
- 또한 GC는 실시간성이 중요한 서비스에 좋지 못한 선택이 될 수 있다.
- 그래서 이 GC를 어떻게 효율적으로 튜닝할 건지에 대한 내용이 GC 튜닝이다.
- GC는 어떤 Object를 Garbage로 판단하느냐는 Reachable이라는 개념을 이용한다.
- 결국 참조되냐 참조되지 않냐 여부를 보고 지운다는건데, 간단히 얘기하면 Stack이나 Method 영역에 참조되고 있지 않는 객체를 Garbage로 판단한다.
- 옛날 GC는 YOUNG와 OLD 영역으로 나눴고, YOUNG 영역을 OLD 영역에 비해 작게 만들었다.
- 이에 대한 근거는 대부분의 객체는 오래 남아있지 않는다는 이유 때문이었다. 이렇게 작은 영역(YOUNG)에 대한 GC라고 해서
우리는 이를 Minor GC 라고 불렀다.
- 반대로 OLD 영역에 대한 GC는 Major GC라고 부른다.
- 사실 STW문제는 GC 알고리즘에 따라 YOUNG영역에서도 충분히 발생할 수 있다.
- 최근 사용되고 있는 GC는 1.9부터 디폴트가 된 G1 GC이다.

[2024-01-02]
- 쓰레드를 생성하는 방법에는 Runnable 인터페이스를 사용하는 방법과 Thread 클래스를 사용하는 방법 두가지가 있다.
- Runnable 인터페이스와 Thread인터페이스 둘 다 java.lang 패키지에 있다.
- Runnable 인터페이스에 선언되어 있는 메서드는 run() 하나다.
- 반면 Thread 클래스는 매우 많은 생성자와 메소드를 제공한다.

[2024-01-03]
- 쓰레드 usecase 공부

 

4. 오늘의 무자막 시청
오늘의 영상: 라따뚜이
: 레미가 친구한테 음식 맛있게 먹어야 한다고 음식 맛있게 먹는 법을 가르쳐줬는데 씨알도 안먹혔다.

 

5. 오늘 할 일 (청사진)
- 자바의 신 무조건 20분 읽기 (점심시간)
- SQL 무조건 한 문제씩 해결 (짜투리 시간: 쉬운걸로)
- 멘토링 준비 (오늘이 버저비터)
- 무조건 꼬리질문 2문제씩 해결 (무조건 쉬운걸로: 쉬운 거 부터 먼저 다 해결하는 방식으로)
- 알고리즘 무조건 1문제씩 해결 (알고리즘 챌린지 코드, 자기 전에 할 계획)
- 영어 회화 20분

 

6. 감사한 일
오늘 푹 자서 너무 감사하다. 약간 졸음이 덜 깨긴 하지만 조금만 더 자고 더 열심히 공부해야겠다.

 

오늘 하루도 공부할 수 있어 크게 감사합니다

2024-01-03 개발자 최찬혁