들어가며 Gson을 사용하여 ZonedDateTime 객체를 Serialize/Deserialize 하는 경우가 있다. public void test() { String json = new GsonBuilder().create().toJson(ZonedDateTime.now()); ZonedDateTime dateTime = new GsonBuilder().create().fromJson(json, ZonedDateTime.class); } 위와 같이 기본 세팅으로 실행할 경우 오류가 발생한다. java.lang.RuntimeException: Failed to invoke java.time.ZoneId() with no args 이에 대한 해결방법을 공유하고자 한다. ※Gson 사용법은 아래 이전 글을..
(Effective Java) 규칙22. 인터페이스는 타입을 정의하는 용도로만 사용하라 인터페이스의 목적 인터페이스를 구현하는 클래스를 만들게 되면, 그 인터페이스는 해당 클래스의 객체를 참조할 수 있는 자료형(type) 역할을 하게 된다. 해당 클래스의 객체로 어떤 일을 할 수 있는지 클라이언트에게 알리는 행위임 인터페이스의 목적은 여기까지이며 다른 목적으로 인터페이스를 정의 하고 사용하는 것은 적절치 못함 인터페이스를 잘못 사용하는 예 상수 인터페이스(constant interface) 형태 메서드가 없고, static final 필드만 있는 형태로 모든 필드는 상수 정의임 대체로 상수 이름 앞에 클래스 이름을 붙이는 번거로움을 피하기 위해서임 //상수 인터페이스 안티패턴 - 사용하지 말 것! pub..
들어가며 기존에 Apache Commons 라이브러리를 통해서 Zip 압축 기능을 구현했는데 파일을 각각 ZipArchiveEntry로 추가해줘야 하는 방식이었다. public long compressZip(List fileList, File targetFile) throws IOException { try (ZipArchiveOutputStream zos = new ZipArchiveOutputStream(new FileOutputStream(targetFile))) { int readSize; byte[] buf = new byte[BUFFER_SIZE]; for (File file : fileList) { ZipArchiveEntry ze = new ZipArchiveEntry(file.getNam..
(Effective Java) 규칙20. 추상 클래스 보다는 인터페이스를 우선하라 추상 클래스, 인터페이스 자바 언어에는 여러 가지 구현을 허용하는 자료형을 만드는 방법이 두가지 포함되어 있음. 인터페이스, 추상클래스(abstract class) 이 두 방법의 분명한 차이는 추상 클래스는 구현된 클래스를 포함할 수 있지만 인터페이스는 아니라는 것임. 자바 1.8 부터는 'default' 메서드를 통해 인터페이스에도 구현을 포함시킬 수 있음 좀 더 중요한 차이는 추상 클래스를 자료형으로 사용하기 위해서는 반드시 계승이 필요하다는 것이다. 인터페이스는 포함된 모든 메서드를 정의하고 인터페이스가 규정하는 일반 규약을 지키기만 하면됨 자바는 다중 상속(multiple inheritance)를 허용하지 않기 때문..
들어가며 Java를 사용하여 문자메시지 발송 기능을 구현하는 방법을 알아보겠습니다. 구현 방법 쿨 엠에스 API 쿨 엠에스 API는 문자메시지 발송 서비스를 REAT API를 통하여 연동할 수 있는 상용 서비스 입니다. 유료 서비스이며 회원가입시 300포인트를 주는데 일반 문자의 경우 1개당 20원 입니다. 테스트 용도로 사용할 수 있으며 필요한 경우 금액을 충전해서 사용가능 개발환경 세팅 1. SDK 적용 SDK를 별도로 제공하고 있어서 SDK를 적용해보겠습니다. 사이트에서 사용하고 있는 Build 방법에 따라서 SDK를 적용해줍니다. 필자는 gradle을 사용하고 있기에 gradle로 적용함 dependencies { testCompile group: 'junit', name: 'junit', ver..
들어가며 Linchart를 사용하면서 전시해야 할 값(series)의 수가 너무 많아서 UI성능이 느려지는 이슈가 발생했다. 해결 방법 Series-Reducer 사용 series-reducer는 Chart 전시 값(series)이 많을 때 series개수를 줄여줌 Ramar-Douglas-Peucker 알고리즘을 통해서 series개수를 줄여준다고 함 예제 코드 List graphPointList = new ArrayList(); for () { graphPointList.add(new Point(x, y)); } final double epsilon = 0.01; // 0.01은 series-reduce 웹페이지에 예제로 나와있는 값임. epsilon이 작을수록 연산량이 많아짐 & 그래프가 디테일해 ..
들어가며 Windows 장비 원격 데스크톱 연결 시 "인증 오류가 발생했습니다"는 오류 메시지가 발생하면서 접속되지 않는 경우가 있습니다. 원인 기존 CredSSP 프로토콜에 원격 코드 실행 취약성 이슈로 인해 Windows 업데이트 후 접속하려는 서버에 CredSSP 관련 업데이트가 되지 않은경우 접속을 차단함 해결방법 1. gpedit.msc 실행 window키 + R 눌러 실행창 실행 후 gpedit.msc 입력 2. Oracle 수정 암호화 취약으로 변경 컴퓨터 구성 -> 관리 템플릿 -> 시스템 -> 자격 증명 위임 -> Oracle 수정 암호화 끝으로 이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏 광고 클릭은 많은 힘이 됩니다!
- Total
- Today
- Yesterday
- JavaFX
- git
- effective java
- 자전거
- TableView
- 이펙티브자바
- 일본 자전거 여행
- 일본 배낭여행
- 이펙티브
- 인텔리제이
- java
- JavaFX 테이블뷰
- 자전거 여행
- 배낭여행
- JavaFX Window Close
- 배낭 여행
- effectivejava
- intelij
- JavaFX Table View
- 일본여행
- 일본 여행
- 텐트
- Java UI
- windows
- springboot
- 스프링부트
- 방통대 과제물
- 자바
- JavaFX 종료
- 이펙티브 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |