JDK 8을 JDK 17로 마이그레이션 하는중 생긴 문제이다.LineNumberReader lnr = new LineNumberReader(new FileReader(file));lnr.skip(Long.MAX_VALUE);int lineCount = lnr.getLineNumber();targetCnt = prevTargetCount + lnr.getLineNumber() - lineToSkipCount + 1;파일 끝까지 쭉 스킵하고 라인 수를 가져오는 로직이다.JDK 8 시절에는 +1 보정을 넣어서 타겟 수를 계산했다.근데 마이그레이션 이후 같은 로직인데 값이 달라지기 시작했다.문제의 주범https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8230342H..
![[Spring/기초] Pageable 자주 사용하지만 관심은 없었던 그 녀석](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FGaxsE%2FbtsOx6ESr3S%2FAAAAAAAAAAAAAAAAAAAAAFAhtZqQeA_-9DzXKeBWum7SYp3qzcgJ62E5LBAnPzGg%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dftp%252Bh%252BpU%252FznE%252FHDTblMe8kfWe5M%253D)
Paging된 데이터를 만드는 컨트롤러 사용하다보면 Pageable객체를 자주 사용하게 된다.@GetMapping("/users")public Page getUsers(Pageable pageable)그냥 이렇게만 써도, 프론트에서 ?page=0&size=10&sort=name,desc 이런 식으로 요청 보내면정상적으로 10개씩 name 기준 내림차순으로 잘린 리스트가 반환된다.근데 Pageable은 인터페이스이다. 우리는 new도 안했고 객체 생성도 안했는데 이건 어디서 구현체를 받아오는걸까? Pageable & PageRequest Pageable은 인터페이스 진짜 일하는 녀석은 PageRequest이다.Pageable pageable = PageRequest.of(0, 10, Sort.by("nam..
![[Java/기초] 인텔리제이 javadoc 자동화?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FBvLiu%2FbtsNbfn3EL4%2FAAAAAAAAAAAAAAAAAAAAAIj_DoQeF82FnSMSOZwdwVTg_oiIdXYvKz3AUYlGYg5M%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D8HObN1xm3pqu7%252F0%252BUmwBZ3XVvBo%253D)
우리는 주석을 달아야한다.코드를 작성하다보면 나중에 이코드가 뭘하는건지 주석을 달야하며 많은 분들이 javaDoc을 이용하는걸로 알고있다./** + Enter이런 간단한 커멘드만 입력하면 바로 주석을 달수 있어서 사람들이 많이 사용하는 거 같다.하지만 이렇게 완전 간단하게 나오며 잘나와봤자 이정도이다.근데 JavaDoc에는 여러 기능이 더있다. 같은 html헤더를 제공하거나, @를 사용한 다른걸 더 넣을수있다.나는 이걸 어느정도 자동화한 틀을 빠르게 불러오고 싶었다.인텔리제이 Live Templates1. Live Templates 생성Settings->Editor->LiveTemplates로들어가서 plus버튼을 누른다. 그럼 2번 Template Group이 나올텐데 여기에 JavaDoc을 추가한다..
![[Java/Tread] 스레드 기본 개념 정리 (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbsUzSu%2FbtsJQfszUtQ%2FAAAAAAAAAAAAAAAAAAAAAN4vIyrcZ2Y3OIZRcAcizvekgarJrKfJpTey-1fluZ9K%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dn91CUaqzT%252BtacraTFYuFUzwkRNY%253D)
Thread 기본 개념에 대해서 알아보자우리는 우리도 모르게 thread를 사용해왔다. 자바의 main 스레드를 실행시켜서 작업을 처리해왔다. 이런 스레드를 좀더 잘 이해하고 잘 사용하면 성능 향상을 만들어 낼수 있지만 공부해야할 것이 많은 그리고 작업을 만들때 고민해야하는 것이 많지만 확실히 도움이 될꺼라고 생각해서 공부하려 한다! 시리즈 식으로 정리하며 공부해보려고 한다.1. 프로세스와 스레드Process프로세스는 메모리에서 실행중인 프로그램의 인스턴스를 뜻한다. 프로그램이 실행되면 운영체제가 메모리를 할당해서 프로세스를 생성하고 이를 통해서 프로그램이 독립적인 환경에서 실행된다.독립성 : 각 프로세스는 독립적인 메모리 공간을 가지며 다른 프로세스가 접근할 수 없다.자원 할당 : 운영체제는 프로세스..
![[Java/기초] Exceptions 총정리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FuFyW9%2FbtsIpHdjXY5%2FAAAAAAAAAAAAAAAAAAAAAAcVMalq7TEUWcQtpTB-MykvlMOxzhZ7cW9weGGVoPVP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DmMM0cAzFkX52%252Bwd%252Bs4S4mxamzwg%253D)
자바 예외 총정리예외란?사용자의 잘못된 조작 혹은 개발자의 로직 실수로 인해서 발생하는 프로그램 오류를 말한다. 예외처리 코드를 통해서 프로그램을 종료하지 않고 다시 정살 실행 상태가 유지 되도록 할 수 있다.예외 vs 에러에러(error)란 자바 프로그램 밖에서 발생한 오류를 뜻한다. 컴퓨터가 고장이 난다거나. OS에서 비정상적인 상황이 발생해서 JVM이 실행될 수 없는 경우등으로 복구가 불가능 하다.error : 프로세스에 영향을 줌exception : 스레드에만 영향을 줌예외 처리 방법예외 복구 : 상황 파악 후 문제 해결해서 정상 상태로 돌려놓는 방법예외 회피 : throws를 통해서 직접 처리 안하고 호출한 쪽으로 던져 회피예외 전환 : 회피와 비슷하지만 그냥 던지지 않고 적합한 의미를 가진 예..
![[JAVA/Gradle] 한글 깨짐 해결 (Window 11, Gradle 8.7, IntelliJ)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdqZGMD%2FbtsHCR2pHD3%2FAAAAAAAAAAAAAAAAAAAAAGkCdNG-NmfYHfBMEqy2DLx64yaPriXNJXLi3TRVuj-v%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DEBEcORXSxS2lfDCct%252FnmZlFJI5c%253D)
모든 것이 안될 때 날 구원해준 한글 깨짐 해결을 해보자File Encodings, Edit Custom VmOptions, build.gradle에 encoding 관련 설정 추가, application.properties 추가, Run/Debug Configurations설정 다는 다 안됐다. 근데 이제 내가 설명할 방법으로 됐다. Window에서 설정을 했다.주의 설정이 끝나면 컴퓨터를 껏다 켜야함 Gradle 한글 설정Window + R 로 실행 열고 control 입력시계 및 국가국가 또는 지역관리자 옵션시스템 로캘 변경Beta 에 체크 이제 gradle 콘솔창에서도 한글이 잘 보이는걸 볼 수 있다.