Java 12

[SpringBoot + Fastexcel] 대용량 엑셀 생성 및 다운로드

개요 여태까지 엑셀 생성 및 다운로드 기능을 구현할 때 Apache Poi 라이브러리를 사용했었고 이와 관련하여 게시글을 여러 번 남겼습니다. https://jaimemin.tistory.com/2069 [SpringBoot] 대용량 엑셀 파일 생성 및 다운로드 삽질기 개요 작년에 이어 올해도 엑셀 파일 생성 및 다운로드 기능을 담당하게 되었습니다. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운.. jaimemin.tistory.com Apache Poi 라이브러리가 보편적으로 사용됨에 따라 레퍼런스도 많고 주기적인 버전업이 이루어졌기 때문에 지금까지 해당 라이브러리를 사용해왔..

[DEV] 기록 2022.09.14 (6)

SQLite DB 사용기

개요 현업에서는 주로 MariaDB나 PostgreSQL을 사용했는데 이번에 개인적으로 간단한 프로젝트를 하고 싶어 로컬 파일로 데이터베이스를 관리하는 SQLite DB를 사용해봤습니다. Dokon Jang님 포스팅을 많이 참고했고 자세한 설명은 아래 블로그를 방문하시면 확인하실 수 있습니다. https://docko.tistory.com/entry/Java-SQLite-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 Java - SQLite 데이터베이스 사용하기 안드로이드 개발 시 SQLite 데이터베이스를 자주 활용하고 했습니다. Java Application에도 SQLite 데이터베이..

[DEV] 기록 2022.07.10

[Java] "No suitable driver found for jdbc:sqlite"

개요 Maven 저장소에서 org.xerial:sqlite-jdbc jar를 다운로드했음에도 불구하고 DB에 연결 시도할 때 아래와 같은 메시지가 발생했습니다. "java.sql.SQLException: No suitable driver found for jdbc:sqlite" 해결 방법 우선, Maven 저장소에서 jar 파일을 정상적으로 다운받았는지 확인해야 합니다. Intellij 기준 프로젝트 구조 내 External Libraries에 pom.xml에 등록한 jar 파일이 있는지 확인합니다. External Libraries에 있는데도 불구하고 계속 동일한 에러가 발생한다면 DB에 연결하기 전에 Class.forName("org.sqlite.JDBC"); 구문을 추가해줍니다. 참고 https:/..

[DEV] 기록 2022.07.10 (1)

[Java] 위도, 경도 간 실제 거리 구하는 방법

개요 현재 위치 기준 가까운 순서대로 나열하기 위해 위도, 경도 간 실제 거리를 구해야 했습니다. 저는 clean_h님 블로그 글을 참고하여 아래 코드를 작성하였고 자세한 설명은 아래 블로그를 방문해서 봐주시면 될 것 같습니다. https://se-jung-h.tistory.com/entry/%EC%9E%90%EB%B0%94intelij-%EC%A2%8C%ED%91%9C%EC%9C%84%EB%8F%84%EA%B2%BD%EB%8F%84%EB%A1%9C-%EC%8B%A4%EC%A0%9C-%EA%B1%B0%EB%A6%AC-%EA%B5%AC%ED%95%98%EA%B8%B0?category=839321 자바(intelij) / 좌표(위도,경도)로 실제 거리 구하기 위도, 경도 지구는 위도와 경도로 나타낼 수 있다..

[DEV] 기록 2022.07.10

[Java] zip 파일에서 원하는 파일 추출해서 저장하는 방법

개요 클라이언트에서 zip 파일을 업로드했을 때 zip 파일 내 tar.gz 파일만 추출해서 NAS에 저장하도록 로직을 바꿔야 했습니다. 찾아본 결과 추출할 파일명만 안다면 생각보다 간단하게 코드를 작성할 수 있었습니다. 코드 비고 같은 Java 8버전이더라도 JDK-8223197 버전 이전 버전을 사용할 경우 FileSystem.newFileSystem(zipFilePath, null) 코드에서 ambiguous가 뜰 것입니다. https://bugs.openjdk.java.net/browse/JDK-8223197 [JDK-8223197] Release Note: Added FileSystems.newFileSystem(Path, Map) Method - Java Bug System Three new ..

[DEV] 기록 2022.05.29

[Java] UTF-8로 파일 작성하는 코드

개요 파일에 한글로 된 데이터를 한 줄씩 작성하는데 UTF-8 인코딩을 하지 않아 텍스트가 깨지는 현상이 발생했습니다. 찾아본 결과 생각보다 간단하게 코드를 작성할 수 있었습니다. 코드 참고 https://mkyong.com/java/how-to-write-utf-8-encoded-data-into-a-file-java/ How to write a UTF-8 file in Java - Mkyong.com In Java, we can use `OutputStreamWriter` to write data to a UTF-8 file. mkyong.com

[DEV] 기록 2022.05.29

[SXSSFWorkbook] 엑셀 드롭다운 셀 생성하는 방법

개요 기존에 Excel 생성 및 다운로드 관련 게시글을 여럿 공유했었습니다. https://jaimemin.tistory.com/2069 [SpringBoot] 대용량 엑셀 파일 생성 및 다운로드 삽질기 개요 작년에 이어 올해도 엑셀 파일 생성 및 다운로드 기능을 담당하게 되었습니다. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운.. jaimemin.tistory.com https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운로드 기능을 구현하는 코드를 공유했었..

[DEV] 기록 2022.04.20

[Java] 정렬

Comparable vs Comparator Interface 자바는 정렬을 돕기 위해 Comparable 그리고 Comparator 인터페이스를 제공합니다. 공통점 두 인터페이스 모두 public 접근 변경자로 선언하기 때문에 모든 자료형을 담을 수 있습니다. 차이점 특성 Comparable Comparator 메서드 Comparable 인터페이스는 compareTo(Object a) 메서드를 사용 -> 개체가 하나 제공됨 (this) Comparator 인터페이스는 compare(Object o1, Object o2) 메서드를 사용 -> 개체가 두개 제공됨 정렬 사용처 Collections.sort(List) 메서드는 Comparable 타입을 가지는 객체들을 정렬할 때 사용 -> 기본 정렬 규칙 설..

면접 준비 2021.04.25

Java 날짜 시간 유형에 대한 고찰

개요 현재 다중 서버 환경에서 프로젝트를 개발하고 있는데 인프라팀에서는 분명 서버 간 시간을 동기화하였다고 했는데도 불구하고 LocalDateTime.now()를 로그로 찍어보면 서버 간의 시간이 조금씩 다른 것을 확인할 수 있었습니다. 이에 따라, LocalDateTime.now() 대신 어떤 클래스의 메서드를 사용해야 할지 고민하는 와중 stackoverflow에 Java의 날짜 시간 유형을 잘 정리한 글이 있어 의역을 해보고자 합니다. Instant vs LocalDateTime Instant 클래스와 LocalDateTime 클래스는 비슷해 보이지만 사실 완전히 다릅니다. 하나는 순간(moment)을 나타내고, 다른 하나는 순간(moment)을 나타내지 않습니다. Instant 클래스는 타임라인의..

[DEV] 기록 2021.01.25 (2)