본문 바로가기
꾸준히

[TIL-178] Comparable과 Comparator, 알고리즘 복습, 프로젝트 기획, 자바 공부, 클린 코드 기록

by 무자비한 낭만주먹 2024. 1. 7.

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

 

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

 

0. 오늘의 학습 시간
09:00 ~ 24:00: 일요일은 풀 공부

 

1. 오늘 배운 것
1. 계속 궁금했던 Comparable과 Comparator 그리고 Arrays Collections의 sort에 대해 공부했다. 결론은 Arrays든 Collections든 결국 Comparable이나 Comparator 사용하는 객체들의 sort를 할 때 최종적으론 Arrays.sort에 들어가고 그 안에 merge sort(정확히는 TimSort)를 통해 정렬한다. 이 과정에서 binary sort를 진행하는데 그 때 두 함수형 인터페이스에서 정의했던 compare()나 compareTo()메서드가 사용된다.

2. 단순 완전탐색보단 해시를 이용하는 방법도 가끔은 고려해도 좋을 거 같다. 

3. 생각보다 시뮬레이션 파트에 어려운 문제가 많다는 걸 느꼈다.

4. 이번주도 너무 훌륭히 잘 해냈다. 이렇게 조금씩 쌓아 나가다보면 분명히 가득차 있을 거라 믿어 의심치 않는다.
 

[Java] Comaprable, Comparator? 이거 어떻게 동작하는거야?

목차 0. 개요 1. Comparable 인터페이스를 상속 받아야 하는 이유 2. 사실 이미 Comparable을 상속받는 객체 타입들 3. 그려 ~? 그럼 Collections.sort()는 어뗘? 4. Comparator가 뭐여 ..? 5. 함수형 인터페이스 ..? 그

https-blog-navercom-cksgurwkd12.tistory.com

2. 오늘의 알고리즘
(1) 단순 완전 탐색으로 풀이했던 문제를 해시를 이용해 풀어봤다.
(2) 기존 시뮬레이션 문제들을 복습했다.

 

3. 이주의 CS
(2023-12-10)
[이제는 눈감고도 말할 수 있는 또 자바의 역사]
- 오픈 소스 공부했을 때 배웠듯이 70~80년대 개인용 컴퓨터(PC)가 보급되면서 Oracle 같은 소프트웨어 기업들이 등장했다.
- 그런 기반 위에 1991년, 내가 태어나기 5년전 즈음 Green이라는 프로젝트가 생기면서 자바의 탄생이 시작됐다.
- 이 프로젝트의 목적은 제임슨 고슬링 형 포함 3명으 ㅣ친구들이 TV와 시청자가 서로 상호 작용 할 수 있는 무언가를 만들기 위해 시작했었다. 지금의 IPTV 같은 느낌이다.
- 그 때 지은 자바의 모태였던 언어의 이름은 Oak였다 (참나무: 고슬링 형 사무실 앞에 있는 나무).
- 나 태어나기 1년 전에 Oak라는 이름의 언어는 커피의 종류였던 Java라는 이름으로 드디어 세상에 등장했다.
- 당시 자바의 모토는 WORK (WorkOnceRunAnywhere): 한 번 개발하면 어디서든 동작하는 것이었다.
- 내가 태어난 해인 96년에 JDK 1.0이 등장했고 그 다음해인 JDK1.1 은 1년만에에 22만 다운로드를 기록하면서 엄청난 성장을 보이게된다.
- 중간에 J2SE(Java 2 Standard Edtion)으로 변경됐는데 이유는 그 당시에 J2EE, J2ME와 같은 기업용, 모바일(블랙베리) 같은 Edition들과 혼동을 막기 위해서였다. (같은 시리즈로 분류하고 싶어서인가? 어쨌든 ..)
- 그렇게 J2SE는 1.4 버전까지 출시되다가 1.5버전 부터는 앞에 1.을 뺀 J2SE 5라는 형식으로 불리게 됐다.
- J2SE 1.5 까지는 그대로 J2SE라는 prefix를 사용했지만 1.6 버전부터는 Java SE 1.6 같은 형식으로 불리기 시작했다.
- Java SE 1.6 까지는 기존에 고슬링 형이 있었던 Sun MicroSystem이 주요 스펙을 만들고 java를 만들어 왔지만 SE 7 부터는 Oracle이 선 마이크로 시스템즈를 인수해 지금에 이르렀다.
- 사실 자바 표준의 이름이 JDK, J2SE, Java SE로 변경됐지만 이 책에서는 자바 표준 버전을 일반적으로 불리는 JDK라고 사용한다고 한다.
-  사실 Java 버전에서 제공되어야 하는 표준 문서가 만들어지면 그 기준에 해당하는 각 벤더에 맞는 JDK가 별도로 만들어진다. 예컨대 IBM과 HP 서버는 별도의 OS를 가지고 있는데, 여기에 최적화되어 있는 JDK를 개발해서 사용하고 있다.
- 단, JDK 버전만 맞으면 어떤 OS에서 개발하든지 적용한 OS에서 컴파일만 하면 애플리케이션 실행에 문제가 없다.
- 그리고 맨날 보는 "OpenJDK"라는 건 "소스에 라이선스 문제가 되는 부분을 제거한 완전 오픈소스 버전의 JDK"를 말한다.
- 알고 있겠지만 JRE는 실행만을 위한 환경이다. JDK에서 개발에 필요한 컴파일 등의 각종 프로그램이 제외된 상태로 설치된다.
4. 오늘의 무자막 시청
오늘의 영상: 라따 뚜이 (초중반)
딱 봐도 어리버리해 보이는 주인공이 들어왔다. 엄마가 돌아가셔서 대신 일하러 왔는데 얼떨결에 잡일 담당으로 취업됐다. 근데 어머니 돌아가신거 말해서 미안하다는데 엄마는 천국을 믿어서 괜찮느니 하는 거 보면 제 정신은 아닌 거 같다.

 

5. 내일 할 일 (청사진)
1. 무조건 한 문제씩 챌린지 아침에 무조건 풀어야해 (실패하더라도 제출 꼭)
2. 자바의 신 마저 공부하기 (너무 재밌어서 못참겠어 .. 딴 거 빨리하고 자기전에 공부하자)
3. 점심시간에 코드 트리, 프로그래머스(sql) 풀기
4. 주짓수 다녀와서 꼭 flutter 숙제 채점 하고 우수 답안이랑 비교해보기
5. 평일 이해 안됐던 알고리즘 (투 포인터, 병합 정렬, 스도쿠 中 택1 해서) 조금이라도 고민해보기
6. 점심시간 끝나기 30분 전에 네트워크 공부하기

 

6. 감사한 일
이번 주 너무 잘해내서 스스로가 대견하다. 이렇게 하루하루 잘 쌓아갈 수 있음에 감사하다.

 

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

2023-12-11 개발자 최찬혁