[JAVA] Apache POI 엑셀 스타일, 폰트
2023. 5. 19. 16:02
JAVA
SXSSFWorkbook 워크북 생성 워크북 객체를 생성해주고 워크북 내에 시트를 생성한다. 열 폭 세팅을 위해 시트의 setColumWidth(해당, 열, 폭) 메서드를 이용한다. SXSSFWorkbook workbook = new SXSSFWorkbook(); // 시트 생성 SXSSFSheet sheet = workbook.createSheet("과일표"); // 열 폭 수정 sheet.setColumnWidth(3, 6000); sheet.setColumnWidth(4, 7000); sheet.setColumnWidth(5, 8000); sheet.setColumnWidth(6, 6000); CellStyle 정렬 Alignment CellStyle 객체를 생성하여 Alignment 세팅하는 함수..
[JAVA] File Object
2023. 5. 19. 15:19
JAVA
createNewFile - 파일 생성 String rootPath = "C:/DevLog/"; String sFilePath = rootPath + "test.txt"; File file = new File(sFilePath); file.createNewFile(); 실무에 적용할 때 rootPath는 설정값을 읽어서 사용하도록 한다. properties파일 또는 yml 파일의 값은 서버와 분리하여 사용하기 때문이다. (Build시 해당 파일을 제외한다던가 설정을 통해 Local, 개발서버, 운영서버 설정 파일을 분리) mkdir - 디렉토리 생성 String rootPath = "C:/DevLog/"; String sNewDirectory = rootPath + "study"; File file = ..
[JAVA] Excel - Apache POI(SXSSFWorkbook Example)
2023. 5. 19. 15:05
JAVA
Workbook 종류 HSSF : Excel 2007 하위버전(.xls) 파일 포매을 사용할 때 사용 XSSF : Excel 2007 (,xlsx) 파일 포맷을 사용할 때 사용 SXSSF : 대용량 액셀 파일을 출력할 때 사용 XSSF, SXSSF 차이 XSSF 읽기, 쓰기가 가능하다. 메모리에 파일데이터를 쌇아두고 사용하기 때문에 용량이 큰 경우 Out Of Memory 에러가 발생한다. SXSSF 쓰기만 가능하다. 임시파일을 중간중간 생성하여 메모리를 적게 사용하기 때문에 XSSF 보다 매우 큰 엑셀 파일을 생성할 수 있다. XSSF는 전체 행에 대한 컨트롤이 가능하지만 SXSSF는 지정된 행(window size)에 관해서만 컨트롤이 가능해서 메모리를 적게 사용한다. SXSSFWorkbook Exa..
개념 - Eclipse로 프로젝트 시작하기
2022. 12. 4. 21:18
JAVA/개념
1. Jdk 8 사용 (1) 오라클에 접속해 java 8을 다운 받기 https://www.oracle.com/java/technologies/downloads/#java8-windows (2) 환경변수 설정 다운 받은 후 환경변수를 설정해 준다. Win + R -> sysdm.cpl 을 입력해 시스템 속성으로 이동 후 고급 탭에 환경 변수를 눌러준다. 변수 이름을 JAVA_HOME, 변수 값을 JDK8을 다운 받은 폴더로 설정해 준다. 마찬가지로 PATH를 jdk 8 폴더 안에 있는 bin으로 설정한다. (3) 설정 확인과 자바 버전 확인 Cmd 창을 실행 후 javac – version 을 입력하고 엔터를 누르면 자바 버전이 1.8로 설정이 잘 된 것을 확인할 수 있다. 2. Eclipse 다운 Ec..
JAVA - 정규표현식(regex)
2022. 11. 25. 18:30
JAVA
정규표현식(regex) 정규표현식(Regular expressions)은 줄여서 Regex라고 합니다. Regex는 문자열에 어떤 패턴의 문자들이 있는지 찾는데 도움을 줍니다. 이 글은 Regex의 패턴과 사용방법 위주로 정리하였습니다. Regex는 대부분 알고 있지만, 적용할 표현들이 헷갈렸다면 이 글을 참고하시면서 패턴을 작성해보세요. Metacharacters Metacharacters는 Regex의 패턴에서 어떤 문자가 특별한 의미를 갖는 것을 말합니다. 예를 들어, \d는 0에서 9사이의 숫자를 의미합니다. Regular Expression Description . 어떤 문자 1개를 의미 ^regex ^ 다음 regex로 line을 시작하는지 regex$ $ 앞의 regex가 line의 마지막으..
JAVA - 입력(Scanner, InputStream, BufferedReader)
2022. 11. 25. 04:46
JAVA
System.in 그리고 InputStream 한 곳에서 다른 곳으로의 데이터 흐름을 스트림이라고 한다. System 클래스의 in 이라는 필드는 InputStream 의 정적 필드 정리하자면 in 이라는 변수는 InputStream의 변수로 결국 InputStream 타입의 새 변수를 선언하고 그 변수에 System.in 을 할당시킬 수도 있다는 뜻이다. import java.io.IOException; import java.io.InputStream; public class Input_Test { public static void main(String[] args) throws IOException { InputStream inputstream = System.in; int a = inputstrea..
JAVA - 4-10_switch문의 제약 조건
2022. 11. 14. 21:13
JAVA
switch문의 제약 조건 1. switch 문의 조건식 결과는 정수 또는 문자열이어야 한다. 2. case문의 값은 정수, 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. int num, result; final int ONE = 1; switch(result) { case '1': // OK. 문자 리터럴 case ONE: // OK. 정수 상수 case "YES": // OK. 문자열 리터럴 case num; // 에러! 변수는 불가 case 1.0; // 에러! 실수는 불가
JAVA - 3-10_산술 변환
2022. 11. 14. 03:34
JAVA
산술 변환 연산 전에 피연산자의 타입을 일치시키는 것 1. 두 연산자의 타입을 일치시킨다.(큰 타입으로 일치) long + int -> long + long -> long float + int -> float + float -> float double + float -> double + double -> double 2. 피연산자의 타입이 int 보다 작은 타입이면 int로 변환된다. byte + short -> int + int -> int char + short -> int + int -> int '2' - '0' -> 50 - 48 = 2 char - chat -> int - int = int 반올림 - Math.round() Math.round(3.141592 * 1000) / 1000.0 Mat..
JAVA - 2-14_화면에서 입력받기
2022. 11. 12. 21:57
JAVA
Scanner 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스 1. import 문 추가 import java.util.*; 2. Scanner 객체의 생성 Scanner scanner = new Scanner(System.in); 3. Scanner 객체를 사용 int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장 String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장 int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환
JAVA - Supplier
2022. 9. 8. 17:51
JAVA/Chapter14
Supplier는 인자를 받지 않고 Type T 객체를 리턴하는 함수형 인터페이스다. public interface Supplier { /** * Gets a result. * * @return a result */ T get(); } Example 1 : Supplier "HelloWorld"라는 문자열을 리턴하는 Supplier 예제입니다. Supplier로부터 객체를 리턴받을 때는 get()을 호출하면 됩니다. import java.util.function.Supplier; public class SupplierExample1 { public static void main(String[] args) { Supplier supplier= ()-> "HelloWorld"; String result = ..
JAVA - orElse, orElseGet
2022. 9. 8. 17:45
JAVA/Chapter14
Optional 에는 orElse() 라는 메소드와 orElseGet() 이라는 메소드가 있다. 둘 다 Optional 을 통해 가져온 값이 null 일 때는 해당 값을 반환하라는 메소드다. orElse 와 orElseGet /** * Return the value if present, otherwise return {@code other}. * * @param other the value to be returned if there is no value present, may * be null * @return the value, if present, otherwise {@code other} */ public T orElse(T other) { return value != null ? value : o..
Java - 람다식에서 메서드 참조/생성자 참조 사용법
2022. 9. 1. 19:40
JAVA/Chapter14
String collect = memberList.stream().map(Member::getName).collect(Collectors.joining()); Java 8 이상에서 람다식을 사용할 때 클론 2개를 사용하는 경우가 있습니다. 이를 메서드 참조(Method Referentce) 혹은 이중 클론 연산자(::)라고 표현한다. 메서드 참조는 언제, 어떻게 사용할까 메서드 참조는 람다식에서 파라미터의 중복을 피하기 위해 사용한다. 파라미터가 중복되지 않았다면 메서드 참조 표현식은 사용 불가능하다. 인스턴스의 메서드를 참조하는 경우 package com.board.study.repository; import java.lang.reflect.Member; import java.util.Arrays; i..
Java - ObjectMapper
2022. 8. 30. 11:11
JAVA
ObjectMapper란? JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. (*여기서 다소 생소한 JSON 형식, 직렬화, 역직렬화를 잠깐 살펴본다.) JSON(Javascript Object Notation) "키 :값" 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 포맷이다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만 플랫폼과 언어 독립형 데이터 형식이다. 따라서 프로그래밍언어나 플랫폼에 독립적이므로 C, 자바, 파이썬 등에서 JSON 데이터 생성을 위한 코드를 각자 가지고 있다. JS를 제외한 언어는 라이브러리를 사용해야하는 경우가 많다 직렬화 (Serialize) 데이터를 전송하거나 저..
Java - ::(더블콜론)
2022. 8. 30. 09:51
JAVA/Chapter14
콜론 두개 (::) 이중 콜론 연산자)의 정식 명칭은 메소드 참조 표현식(method reference expression)이며, 결론부터 말하자면 람다식에서 파라미터를 중복해서 쓰기 싫을 때 사용합니다. 말 그대로 람다 표현식(expression)에서만 사용 가능하고, 사용 방법은 [인스턴스]::[메소드명(또는 new)]으로 사용하는데, 예제를 통해 보는 것이 이해가 빠릅니다. 스태틱 메소드인 경우 인스턴스 대신 클래스 이름으로 사용할 수 있습니다. Method Reference Lambda의 마지막 입니다. 기존 람다식을 더 줄일 수 있는 Method reference에 대해서 설명합니다. 기본 형식은 아래와 같습니다. ClassName::Method ex) Person::getAge person c..
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법
2022. 8. 25. 11:38
JAVA/Chapter14
Java 입출력 자바에서는 모든 I/O가 Stream(스트림)을 통해 이루어진다. Stream 스트림은 Byte형태로 테이터를 운반하는 데 사용되는 연결통로라고 생각하면 된다. 이는 자료(data)의 흐름이 물의 흐름과 같다는 의미에서 사용되었다고 한다. 다만 물이 한쪽 방향으로만 흐르는 것과 같이 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 또한 스트림은 먼저 보낸 데이터를 먼저 받게 되어있으며 연속적으로 데이터를 주고 받는다는 점에서 큐(queue)의 FIFO(First in First Out) 구조로 되어있다. 이때 데이터의 스트림의 근원지(시작점)을 Source, 데이터 종착점을 Sink, 연결한 것을 Stream이라고 표현 하며, Source ..
OutputStream 정의
2022. 8. 25. 11:19
JAVA/Chapter14
OutputStream 추상 클래스는 데이터가 나가는 통로의 역할을 한다. OutputStream 주요 메서드 통로로 데이터를 내보내는 기능이 필요하다. 데이터를 쓰는 기능과 관련된 메서드는 3개가 있다. OutputStream은 쓸 수 있어야 한다. /** * b를 OutputStream으로 내보낸다 */ public abstract void write(int b) throws IOException{} // ByteArrayOutputStream은 Byte Array로 내보내는 통로이다. ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); outputStream.write(1); // outputStream에는 [1]이 들어있다. out..
InputStream 정의
2022. 8. 25. 11:17
JAVA/Chapter14
InputStream JDK 11 기준 InputStream의 설명 This abstract class is the superclass of all classes representing an input stream of bytes Stream 개별 바이트나 무자열인 데이터의 원천 파일을 읽거나 쓸 때, 네트워크 소켓을 거쳐 통신할 때 쓰이는 추상적인 개념 쉽게 설명하면, '데이터가 전송되는 통로'라고 표현할 수 있다. 데이터가 네트워크를 거치건, 파일에서 넘어오건, 데이터가 오고가는 통로가 스트림인 것이다. byte 0이나 1이 8개 모이면 그것을 'byte'라고 부른다. '데이터'라고 생각하자. 종합하면 InputStream 추상 클래스는 데이터가 들어오는 통로의 역할에 관해 규정하고 있는 추상 클래스..
입출력 스트림 (InputStream, OutputStream)란?
2022. 8. 24. 11:55
JAVA/Chapter14
1. Stream 이란 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어납니다. 이때 데이터는 어떠한 통로를 통해서 데이터가 이동되는데, 이 통로를 Stream 이라고 합니다. 자바에는 이러한 기능을 수행하기 위해 InputStream와 OutputStream이 존재하며 단일 방향으로 연속적으로 흘러갑니다. InputStream과 OutputStream은 추상 클래스이며 추상 메소드를 오버라이딩해서 다양한 역할을 수행할 수 있습니다. (예 : 파일, 네트워크, 메모리 입출력) 자바에서 기본적으로 제공하는 I/O 기능은 java.io 패키지에서 제공됩니다. InputStream은 외부에서 데이터를 읽는 역할을 수행하고, OutputStream은 외부로 데이터를 출력하는 역할..
Stream map
2022. 7. 16. 18:29
JAVA/개념
1. 기본 사용법 1 jojae 2900 1991-02-26 seoul, hawai 2 haha 1000 2003-03-02 busan 3 arabia 30000 2001-04-06 seoul, paris 4 cici 150 1982-05-16 daegu, hongkong 5 zzang 40000 1910-06-26 gwangju 6 ssu 200000 2012-07-11 busan 7 kuku 150 1991-02-27 seoul, hawai 8 kuku 2222 1998-07-27 hawai public class Human implements Comparable { private Long idx; private String name; private Integer money; private Local..