본문 바로가기
빌드노트 검색

빌드노트

Java·JVM

Java·JVM 카테고리의 글입니다.

글 검색

글 목록

총 48개의 글

  1. ScheduledExecutorService 주기 작업이 한 번 실패한 뒤 멈춘다

    ScheduledExecutorService의 주기 작업은 한 회차의 예외가 밖으로 나오면 후속 실행을 중단한다. 반환 Future와 회차 기록을 읽고, 다음 회차를 허용할 실패만 안에서 처리하는 경계를 실제 비교로 확인한다.

  2. Java에서 2월 30일을 파싱했는데 2월 28일이 됐다

    Java 날짜 파싱의 기본 SMART는 2월 30일을 월말로 보정한다. 평년·윤년 입력을 직접 비교하고, uuuu와 STRICT로 잘못된 일자를 거절하는 방법 및 yyyy에 STRICT만 붙였을 때 정상 날짜가 실패하는 이유를 설명한다.

  3. CompletableFuture.orTimeout 뒤에도 작업이 계속된다

    CompletableFuture.orTimeout() 뒤에도 작업의 변경이 실행될 수 있다. Future 완료와 작업 종료를 latch로 따로 확인하고, 중단 요청을 보내는 곳과 실제 변경 전에 확인할 곳을 구분한다.

  4. Java toLowerCase()로 만든 조회 키가 서버마다 달라질 때

    같은 ASCII 식별자도 Java의 기본 로캘에 따라 소문자 키가 달라진다. 영어·터키어·ROOT의 문자열과 코드 포인트, Map 조회를 실제 비교하고, 언어 중립 키에 ROOT를 적용할 위치와 기존 저장 키의 한계를 설명한다.

  5. submit한 작업이 실패했는데 호출부에도 핸들러에도 예외가 없다

    ExecutorService.submit의 Future를 버리면 작업 실패가 호출부의 catch와 uncaught handler에 드러나지 않을 수 있다. execute·submit의 실제 비교로 완료 표식과 성공을 구분하고, 반환 Future를 관찰할 담당 경계를 정한다.

  6. 로그에 id=42가 있는데 String.matches는 왜 false일까

    로그 안에 id=42가 있어도 String.matches는 전체 입력을 검사해 false일 수 있다. 같은 패턴으로 matches·lookingAt·find의 결과와 탐색 위치, 실패 후 group() 예외, region의 영향을 직접 비교한다.

  7. Java replaceAll에서 달러 오류와 역슬래시 손실을 막으려면

    Java replaceAll의 replacement는 달러를 그룹 참조로, 역슬래시를 이스케이프로 해석한다. 실제 예외와 경로 손실을 비교하고, 문자 치환에는 String.replace를, 정규식 검색에는 Matcher.quoteReplacement를 적용하는 기준을 설명한다.

  8. count()로 개수를 찍은 Stream은 collect()에 다시 쓸 수 없다

    로그용 count()도 Stream을 끝낸다. 같은 Stream의 collect()에서 난 예외를 확인하고, 한 번 수집한 목록의 size()로 개수를 기록하는 수정과 원본에서 새 Stream을 만들 조건을 설명한다.

  9. HashMap에 키가 있는데 get은 null을 돌려준다

    삽입 뒤 키의 equals·hashCode에 쓰는 필드가 바뀌면 같은 객체로도 조회가 실패할 수 있다. 실제 해시·get·containsKey·entrySet 결과로 확인할 지점을 짚고, 불변 ID 키와 변경 전 제거 순서를 설명한다.

  10. subList를 만든 뒤 원본에 add하자 조회가 실패한다

    subList는 원본과 연결된 범위 뷰다. 원본 add 뒤 조회 실패와 변경 전 ArrayList 복사를 짧게 비교하고, set·뷰 remove의 차이와 복사 시점을 설명한다.

  11. 이모지 하나가 String.length()에서 2로 세어진다

    String.length()는 UTF-16 코드 단위를 센다. JShell에서 이모지·결합 문자의 길이와 잘린 서로게이트를 비교하고, 코드 포인트 또는 확장 자소군으로 제한하고 자르는 기준을 설명한다.

  12. Java split 뒤 마지막 빈 열이 사라지는 이유

    Java split이 끝의 빈 필드를 버리는 이유와 split(",", -1)로 보존한 뒤 열 수를 검사하는 방법을 설명한다. 빈 배열·빈 문자열 원소의 차이, 양수 limit의 함정과 정규식 구분자·CSV 문법의 경계를 실제 결과로 확인한다.