전체 글16 유니코드와 문자셋, 인코딩 김영한 선생님의 자바 고급2편을 듣는 중 문자셋과 인코딩 내용이 나왔고, 궁금증이 생겼다. 문자도 컴퓨터에선 결국 이진 데이터로 저장되고, 전송되어야 한다.그래서 '문자 집합(charset, 이하 문자셋으로 통일)'이라는 것이 존재한다.이 문자 집합은 '저희 집합에서는 이 정도까지 범위의 문자를 이런 값으로 저장할 거에요'를 의미한다. 초기의 ASCII부터 시작해서,서유럽 확장 알파벳을 포함한 ISO-8859-1이었나? 암튼 그거랑.그렇게 확장이 되다가 한글 인코딩을 위한 EUC-KR, 확장판인 MS949.그 많은 문자셋이 대부분은 ASCII랑 호환이 되는데 또 일부분은 안되고~그러다가 공간 효율성과 범용성이라는 두 마리 토끼를 갖춘 UTF-8이 사실상 표준이 되었고~ 여기까지는 이해가 갔다.문자를 결국.. 2025. 4. 25. Java 기본 API에 존재하는 캐싱 얼마 전 메서드 구현 중 빈 List를 반환해야 하는 경우가 생겼다(반환할 Element가 전혀 없는 상황).return new ArrayList();근데 이렇게 빈 컬렉션을 반환하는 경우는 매우 많을텐데, 관련 API가 있지 않을까? 싶어서IDE에 냅다 Collections. 를 입력해 보았다. 아니나 다를까 Collections.emptyList() API가 존재했다. 메서드 내부에서 static final 멤버에 싱글턴 불변 리스트를 박아놓았다가 반환해주는 모양이었다.기쁜 마음으로 사용했다. 그 다음엔 Optional을 반환하는 메서드를 작성할 일이 있었다.메서드 내엔 return 분기가 여러 개가 있었고, 값이 없을 때는return Optional.empty(); 를 사용했다.그런데 퇴근 후 내가.. 2025. 4. 20. 대기중인 스레드가 많으면 왜 좋지 않을까? 생성한 워커 스레드에 작업을 지시하고 호출 스레드는 그 결과를 기다리지 않고 종료하는 로직이 있었다.대략적인 구조는 아래와 같았다.Thread thread = new Thread(runnable);thread.start();return;여기서 요구 사항이 추가되어, 호출 스레드가 하나의 워커 스레드의 작업 결과를 기다렸다가 반환하는 기능이 추가되어야 했다.Thread thread = new Thread(runnable);thread.start();thread.join();return;이렇게 로직을 짰는데, 몇 초 뒤 이런 생각이 났다.어? 뭐여? 어차피 호출 스레드는 worker 작업이 끝날 때까지 블로킹되는데, 굳이 스레드를 만들 필요가 있나?이렇게 해도 되잖아?runnable.run();return;.. 2025. 3. 30. 사람을 낚는 AI 자바로 UUIDv7를 만들기 위해 라이브러리를 다운받기 전,혹시 자바 17버전에서는 라이브러리 없이 UUIDv7 생성이 가능하지 않을까? 하는 생각이 들어 AI님께 질문을 드렸다. 그랬더니,Google Gemini: 자바 17버전부터는 java.util.UUID.randomUUID()의 반환값이UUIDv7입니다!자바 17버전 이하를 사용하신다면 UUID 라이브러리를 사용하시고, 17버전 이상이라면 라이브러리는 필요 없습니다! 듣고 나서 어라? 싶었다.JDK 17부터 똑같은 메서드의 반환값이 이전 버전과 달라지면 어떤 문제가 일어날까?17로 올릴 때는 크게 문제가 안 될 것 같다.하지만 다운그레이드를 해야 하는 상황이 온다면 어떨까? 라이브러리or프레임워크 호환 문제로 JDK를 다운그레이드해야 하는 상황.. 2025. 3. 3. 이전 1 2 3 4 다음