Back End/Java 14

poi(excel 라이브러리), iText(pdf 라이브러리)

엑셀api - poi pdf api - iText 엑셀은 sheet안에 row와 col으로 이루어져있다. 반복문을 사용해야하고 이중for문을 이용해야한다. 1차for문은 row를 핸들링하고 2차 for문은 col을 핸들링 해준다. poi를 통해 excel파일을 읽는 순서. Start Point -> Open Excel File -> Read the First Sheet -> For each Row in Sheet -> For each Cell in Row -> Print Cell Value -> End Point excel에서는 다양한 타입의 데이터가 들어가있는데 가져올때 sheet에서 row안에 cell에 cell.getCellType()을 통해 해당하는 셀타입을 골라내서 case문으로 각각 처리할 수..

Back End/Java 2023.07.27

URLConnection 네트워킹 API

Jsoup은 html만을 가져올 수 있었는데. 다른 리소스 예를들어 html, json, xml, 이미지, 파일(음악, 영상)파일을 내 컴퓨터로 가져올수있다. 네트워크 관련 API를 이용하면 되는데 URLConnection api의 하위의 http에 특화된 HttpURLConnection 클래스를 이용하면 특정 웹서버에서 데이터를 가져올 수 있다. 여기서는 가져오는 절차가 있다. 1 URL 생성 어느 사이트에서 데이터를 가져올지 url을 정해준다. 2 HttpURLConnection 초기화 연결을 할려면 이 클래스를 이용해 초기화를 해야한다. openConnection()을 이용해 HttpURLConnection 객체를 얻는다. 3 Http 메서드 설정 (예: GET) 요청을 하기위해 GET, POST ..

Back End/Java 2023.07.27

Jsoup API를 이용한 웹크롤링

Jsoup은 HTML문서를 웹 크롤링, 웹스크랩핑, 데이터 추출 등을 할 수 있게 도와주는 자바 라이브러리이다. Jsoup.connect(url) 주어진 Url에 연결을 시도한다. Connection 객체를 반환하여 GET, POST 요청을 할 수 있다. document.get() Connection 객체를 사용해 웹 페이지의 내용을 가져오고. Document 객체를 반환한다. Jsoup.parse(html) 주어진 html 문자열을 파싱해 document 객체를 생성한다. document.getElementById(id) 주어진 id에 해당하는 요소를 찾아 element객체로 반환한다. document.select(selector) 주어진 css 선택자와 일치하는 모든 요소를 찾아 elements객체(..

Back End/Java 2023.07.27

기타 API들

Json(JavaScript Object Notation) XML(eXensible Markup Language) 데이터를 표현하고 전송하기 위한 데이터 포맷 최근에는 Json이 더 많이 사용되고 있다. Json는 객체를 구조화된 텍스트형식으로 표현하는거고. 경량식이라 가볍고 가독성이 좋고 다양한 프로그래밍 언어와 호환이된다. { } 중괄호 안에 key와 value의 한 쌍으로 표현이된다. Json에서 배열도 표현이 가능한데 [ ] 대괄호안에 표현을 할수있고 대괄호 안에 { }의 Json데이터를 넣을 수 있다. json.org 사이트를 들어가면 추가적인 정보를 알 수 있다. XML은 데이터를 Tag형식으로 표현하는거다. 내부적으로 트리구조로 관리가된다. // Json형식 { "name":"홍길동", "a..

Back End/Java 2023.07.26

스트림 API(stream)

여러개의 메서드를 병렬로 해서 처리가 가능하다. 람다식을 이용해서 병렬식으로 처리하면 효율적으로 처리할 수 있다. 여러개의 연산을 병렬로 처리하면 아주 효율적으로 프로그램을 구현할 수 있다. stream 데이터의 흐름, 통로 컬렉션이나 배열같은 여러개의 데이터를 효율적으로 조작할려면 메서드를 이용해서 관리하면 효율적으로 관리할 수 있다. 배열이나 데이터의 흐름을 스트림으로 변환해서 처리하면 좋다. 배열을 스트림으로 변환할려면 Arrays.stream() 메서드를 이용한다. 이렇게 사용하면 데이터의 처리 작업을 연속적인 파이프라인으로 나타낼 수 있어 가독성이 높아지고. 병렬 처리를 쉽게 구현할 수 있다. int[] numbers={1,2,3,4,5}; IntStream stream = Arrays.stre..

Back End/Java 2023.07.24

람다식, 함수형 인터페이스

함수형 프로그래밍 - 함수를 간결하게 표현하는것 람다식은 익명 함수다(anonymous function) - 메서드의 구현을 간결하게 표현 원래 인터페이스안에는 추상메서드가 여러개 들어갈 수 있는데. 함수형 인터페이스는 단 하나의 추상메서드만을 가질수 있다. 이런 함수형 인터페이스를 이용하면 람다 표현식을 사용할 수 있다. 함수형 인터페이스라는걸 명시적으로 선언을 할려면 인터페이스 위에 @FuntionalInterface라고 선언해주면된다. 이걸 단일 추상 메서드 인터페이스(SAM)이라고 하는데 인터페이스여서 클래스로 구현을 해야되는데 람다식을 사용하여 구현을 할 수 있다. 클래스에서 @Override를 이용해서 추상메서드를 가져와서 구현한다. 인터페이스는 객체생성처럼 =new Class(); 이렇게 구..

Back End/Java 2023.07.20

제네릭(Generic)

ArrayList는 Object[] 모든자료형의 부모클래스인 Object배열이라. 어떤 타입의 객체들 다 들어갈 수 있다. 그래서 배열안에 String만 들어가다가 다른 타입의 객체가 들어갈 수 있어서. ArrayList이렇게 제네릭을 String으로 선언해주면 안전성이 보장이된다. 데이터 타입을 일반화하고 컬렉션, 메서드, 클래스 등을 사용할때 런타임때 데이터 타입을 결정할 수 있다. 제네릭클래스로 일반화 시키는 방법 public class ObjectArray{ private T[] array; public ObjectArray(int size){ // 제네릭 배열을 생성하는 방법은 배열을 생성한 후 형변환을 해야합니다. array=(T[]) new Object[size]; } public void ..

Back End/Java 2023.07.16

컬렉션 프레임워크 API(Collection Framework API)

인터페이스 / 클래스 설명 분류 List 순서가 있는 객체의 모음을 다루는 인터페이스 List ArrayList List 인터페이스를 구현하는 클래스 List LinkedList List 인터페이스를 구현하는 클래스 List Set 중복된 원소가 없는 객체의 모음을 다루는 인터페이스 Set HashSet Set 인터페이스를 구현하는 클래스 Set TreeSet SortedSet 인터페이스를 구현하는 클래스 Set Map 키-값 쌍의 객체를 다루는 인터페이스 Map HashMap Map 인터페이스를 구현하는 클래스 Map TreeMap SortedMap 인터페이스를 구현하는 클래스 Map 데이터를 저장하고 관리하는 다양한 방법을 사용할 수 있다. ArrayList에 데이터를 넣을때는 list.add(dat..

Back End/Java 2023.07.15

Wrapper Class

Java에서는 기본자료형(int, float, short 등의 자료형)이있는데 이것을 객체로 다룰수 있도록한 클래스이다. byte -> Byte short -> Short int -> Integer long -> Long float -> Float double -> Double char -> Character boolean -> Boolean Boxing / Unboxing 이 Wrapper class를 사용하는 이유는 collection framework에는 기본자료형을 넣지 못하고 객체자료형을 넣을수 있기 때문이다. 즉 int라는 기본자료형을 Integer로 포장을해준다고 생각하면 이해하기 쉽다. int num = 10; Integer box = Integer.valueOf(i); 이렇게 포장을 하고..

Back End/Java 2023.07.15