일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Gradle
- redis
- 맛집
- Spring Batch
- ubuntu
- java
- AWS
- Git
- db
- MySQL
- JVM
- Spring
- IntelliJ
- php
- linux
- Oracle
- Web Server
- it
- tool
- devops
- jenkins
- Design Patterns
- ReactJS
- laravel
- springboot
- jsp
- elasticsearch
- javascript
- Spring Boot
- 요리
- Today
- Total
목록Java & Kotlin/Java (110)
아무거나
리플렉션(Reflection) 정의: 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드, 타입, 변수들을 접근할 수 있도록 해주는 자바 API 코드설명 public class Pizza { public void eat() { ... } } public class Main { public static void main(String[] args) { Object pizza = new Pizza(); pizza.eat(); // 컴파일 에러 } } 위의 코드에서 컴파일 에러가 나는 이유는 모든 클래스의 조상 클래스인 Object라는 타입으로 Pizza 클래스의 인스턴스를 담을 수는 있지만 사용 가능한 메소드는 Object의 메소드와 변수들 뿐이기 때문이다. 이와 같이 구체적인 타입의 클래스를 모를 때 ..
Java에서 Apache OpenOffice + JODConverter 를 활용한 PDF Converter 개발 Apache OpenOffice란 다양한 운영체제에서 사용하 수 있는 오피스 제품이다.(오픈소스) -> 현재는 버전업 속도가 빠른 리브레오피스(LibreOffice)를 추천 현재 라이브러리는 RedHat Linux 기준으로 작성되었다. OpenOffice v4.0.0 기준으로 작성되었다. (그 이상 버전에서는 jre 관련 에러가 표시되어 다운그레이드함) build.gradle에 의존성 추가 dependencies { ... // Windows compile group: 'org.jodconverter', name: 'jodconverter-core', version: '4.0.0-RELEASE..
public static void main(String[] args) { fileCopy("./file/copy/example1.txt", "./file/copy/example2.txt"); } public static void fileCopy(String origPath, String newPath) { try { // 원본 파일을 읽는다 FileInputStream fileInputStream = new FileInputStream(origPath); // 원하는 경로로 파일을 복사한다 FileOutputStream fileOutputStream = new FileOutputStream(newPath); int data = 0; while ((data = fileInputStream.read()) !..
Swagger 이용시 java.lang.NumberFormatException: for input string 과 같이 오류를 표시하는 경우가 있다. 이럴 경우에는 아래와 같이 build.gradle 에 내용을 추가하자. dependencies { ... implementation("io.swagger:swagger-annotations:1.5.21") implementation("io.swagger:swagger-models:1.5.21") ... }
Stream을 활용한 데이터 가공 문자열로된 숫자와 알파벳대소문자로 되어있는 데이터 정렬 // Code List list = Arrays.asList("9", "A", "Z", "1", "B", "Y", "4", "a", "c"); List sortedList = list.stream().sorted().collect(Collectors.toList()); sortedList.forEach(System.out::println); return sortedList; // Output [ "1", "4", "9", "A", "B", "Y", "Z", "a", "c" ] 문자열로된 숫자와 알파벳대소문자로 되어있는 데이터 reverse 정렬 // Code List list = Arrays.asList("9", "..
조합(combination) 구하기 public static void main(String[] args) { String[] testArgs = {"001", "002", "003", "004"}; List powerSet = new LinkedList(); for (int i = 1; i

커맨드 패턴(Command Pattern) 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. Command 인터페이슬르 구현하면서 사용할 수 있다. 커맨드 패턴 예시 - 1 Command 인터페이스를 구현한다. [Command.java] package com.bkjeon.command; public interface Command { void execute(); } 메인 클래스를 구현한다. [Main.java] package com.bkjeon.command; import java.util.LinkedList; import java.util.List; public class Ma..

프록시 패턴(Proxy Pattern) 프록시 패턴은 쉽게 말해서 대리인이라고 생각하면되고, 작업을 나누어서 구현할 수 있다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것과도 인터페이스의 역할을 수행할 수 있다. 즉, 프록시는 결과값을 조작하거나 변경하면 안된다. Client 요청을 proxy가 처리하고, proxy가 처리하지 못한곳은 실제 업무를 처리하는곳에서(=RealSubject) 처리하면 된다. 프록시 패턴 예시 - 1 먼저 Subject 인터페이스를 생성한다. [Subject.java] package com.bkjeon.proxy; public interface Subject { // 리소스가 적게 드는 일 void action1(); //..

플라이웨이트 패턴(Flyweight Pattern) 플라이웨이트 패턴을 통하여 메모리 공간을 절약할 수 있다. Client가 Flyweight를 직접관리하지 않고 Factory나 다른 매니저들한테 Flyweight를 대신 관리하도록 하는것이 해당 패턴의 중요한 부분이다. 플라이웨이트 패턴 예시 - 1 먼저 Client가 다루는 Flyweight 클래스를 생성하자. [Flyweight.java] package com.bkjeon.flyweight; public class Flyweight { public Flyweight(String data) { this.data = data; } private String data; public String getData() { return data; } } Flywe..

메멘토 패턴(Memento Pattern) 객체의 상태를 Memento 라고 불리는 객체에 저장했다가, 다시 꺼내서 객체의 상태를 이전의 상태로 되돌리는 패턴 Originator: 상태값을 가지고 있는 객체 Memento: Originator의 상태를 저장하고 있는 객체 CareTaker: Memento를 관리해주는 관리자 역할을 함 메멘토 패턴 예시 - 1 먼저 abc라는 패키지를 생성하고 그 패키지 안에 Originator 클래스를 생성 [Originator.java] package com.bkjeon.memento.abc; public class Originator { String state; public Memento createMemento() { return new Memento(state);..