Back End 58

POJO (Plain Old Java Object)

1. 객체지향적 원리에 충실하고, 특정 규약과 환경에 종속되지 않게 재활용될 수 있는 방식으로 설계된 객체. 2. 객체의 애플리케이션 핵심 로직과 기능을 담아 설계, 개발하는 방법을 POJO 프로그래밍이라고 한다. 3. 자동화된 테스트에 유리하며, 유지보수성이 높다. 4. 2000년, 마틴 파울러가 컨퍼런스 준비 과정에서 만든 용어다. import javax.jms.MessageListener; import javax.jms.Message; import javax.jms.JMSException; public class OrderProcessor implements MessageListener { @Override public void onMessage(Message message) { if (messag..

Back End/Spring 2023.07.31

Spring 개요

스프링은 자바 엔터프라이즈 환경에 필요한 모든 것을 제공하고 자바 엔터프라이즈 애플리케이션을 손쉽게 만들 수 있다. # 엔터프라이즈 애플리케이션 1. 대규모의 복잡한 데이터를 관리하고, 이러한 데이터를 이용해 비즈니스 프로세스 지원 및 자동화한다. 2. 비즈니스의 근간으로 보안과 안정성, 확장성이 필요하며, 뛰어한 성능과 서비스의 안정성이 요구된다. 3. 다수의 사용자가 접근하며, 기업내 분산된 다른 엔터프라이즈 애플리케이션과 통합된다. 4. 데이터 입/출력을 위한 다양한 사용자 인터페이스가 제공된다. 고객 서비스, 공급망, 인사, 회계, 보험, 외환거래, 환자기록, 배송추적 등이 엔터프라이 어플리케이션이 속하고 운영체제, 게임, 워드 프로세서, 공장 자동화, 승강기 제어, 전화 스위치 등이 속하지 않는..

Back End/Spring 2023.07.31

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