꾸준히
[TIL-178] Comparable과 Comparator, 알고리즘 복습, 프로젝트 기획, 자바 공부, 클린 코드 기록
무자비한 낭만주먹
2024. 1. 7. 23:22
목차
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. 이번주도 너무 훌륭히 잘 해냈다. 이렇게 조금씩 쌓아 나가다보면 분명히 가득차 있을 거라 믿어 의심치 않는다.
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 개발자 최찬혁