분류 전체보기
-
스트림자바/자바8 2022. 5. 1. 18:28
스트림이란 무엇인가? 자바8 API에 새로 추가된 기능이다. 선언형(질의)으로 컬렉션 데이터를 처리할 수 있다. 컬렉션 반복을 간결하게 처리하는 기능. 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 선언형으로 코드를 구현할 수 있다는 뜻은 if조건문 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없이 저칼로리의 요리만 선택하라 같은 동작의 수행을 지정할 수 있다. filter, sorted, map, collect 같은 여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있다. 여러 연산을 파이프라인으로 연결해도 여전히 가독성과 명확성이 유지된다. 자바8의 스트림 API의 특징 선언형: 더 간결하고 가독성이 좋아진다. 조립: 유연성이 좋..
-
인터넷 네트워크WEB 2022. 3. 23. 16:29
인터넷 통신 클라이언트가 요청하고 서버가 응답하는 구조 인터넷 안의 수많은 경로를 통해 목적지까지 데이터를 전달시킬 수 있는 방법은 무엇인가? IP 인터넷 프로토콜 클라이언트와 서버는 IP 주소를 가지고 있다 패킷이라는 통신 단위로 데이터 전달 IP 패킷은 데이터와 클라이언트, 서버의 IP주소를 포함한다. IP 단계에서 한계 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 도착하지 않는다면? 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? 한계를 극복할 수 있는 방법이 무엇인가? 인터넷 프로토콜 스택의 4계층 1네트워크 인터페이스, 2인터넷(IP), 3전송(TCP UDP), 4애플리케이션(HTTP..
-
HTTP 웹 기본 지식WEB 2022. 3. 23. 15:44
모든 것이 HTTP 기반 위에서 동작합니다. 이미 HTTP 웹 기본 지식을 알고 있다는 가정하에 신기술이 출시되고 있습니다. 따라서 신규 개발자는 원리를 모르고 기능 위주로 학습하게 됩니다. 인터넷에서 검색해보면 조각조각되어 있고 잘못된 정보가 많습니다. 개발자는 평생 HTTP 기반에서 개발을 하게 됩니다. 우리는 실무에 꼭 필요한 HTTP 웹 기반 지식을 이해하고 있어야 합니다. 특히 백엔드 개발자에게 있어 필수 지식입니다. 요약 1. 인터넷 네트워크 구조 2. URI과 웹 브라우저의 흐름 3. HTTP의 이해, 메서드, 실무 적용
-
2. 자바에서 제공하는 함수형 인터페이스자바/자바8 2022. 3. 18. 10:15
1. 자주 사용하는 함수형 인터페이스(functional interface) - 아래 메소드는 오라클 자바8에서 사용법을 찾아 직접 사용해보기를 권장합니다. - 함수형 인터페이스는 매개변수와 리턴 타입을 지정 한다/안한다, 매개변수가 있다/없다, 리턴이 있다/없다로 다양하게 있습니다. - Function: T 타입으로 매개변수를 받아서 R 타입으로 리턴하는 함수 인터페이스. - BiFunction: 두 개의 값(T, U)를 받아서 R 타입을 리턴하는 함수 인터페이스. - Consumer: T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스. - Supplier: 매개변수 없이 정해진 값을 리턴하는 함수 인터페이스. - Predicate: T 타입을 받아서 boolean을 리턴하는 함수 인터페이스. ..
-
Callable과 Future자바/자바8 2022. 3. 17. 05:54
Callable - Runnable과 유사하지만 작업의 결과를 받을 수 있다. Future - 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. Callable을 사용한 작업 - 작업상태 확인하기: future.isDone() - 작업 취소하기: future.cancel() - 여러 작업 동시에 실행하기: executorService.invokeAll(Arrays.asList(hello, hello2, hello3)); - 여러 작업 중에 하나라도 먼저 응답이 오면 끝내기: executorService.invokeAny(Arrays.asList(hello, hello2, hello3)); long start = System.currentTimeMillis(); ExecutorService..
-
Executor자바/자바8 2022. 3. 17. 05:27
Thread의 장점 - 동시성 - 메모리를 공유하여 절약 Thread를 사용하는 방법 - Thread 클래스를 상속받아서 사용 - Runnable 함수형 인터페이스를 구현해서 사용 class MyThread extends Thread { @Override public void run() { System.out.println("MyThread Name: "+Thread.currentThread().getName()); } } Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Runnable Thread: "+Thread.currentThread().getName()); } }); Threa..
-
Spring JPA 이론 정리자바/JPA 2022. 3. 16. 20:03
1. JPA에서 가장 중요한 2가지 - 객체와 관계형 데이터베이스 매핑하기(ORM) - 영속성 컨텍스트 2. Entity Manager Factory와 EntityManager - 클라이언트 요청에 따라 EntityManager를 생성하여 DB에 접근하고 트랜잭션 처리를 수행합니다. 3. 영속성 컨텍스트 - 엔티티를 영구 저장하는 환경이라는 뜻. - EntityManager를 통해 1:1로 영속성 컨텍스트에 접근합니다. - EntityManager.persist(entity) 4. 엔티티의 생명주기 - 비영속(new): 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속(managed): 영속성 컨텍스트에 관리되는 상태 - 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭..
-
02. Spring Boot JPA 테이블 자동 생성자바/JPA 2022. 3. 16. 18:37
1. 스프링에서 JPA 구동방식 - Persistenc class에서 설정 정보를 읽어서 EntityManagerFactory를 만듭니다. 필요할 때마다 EntityManger를 생성해 작동합니다. - 스프링 부트에서는 JPA를 사용할 때 EntityManagerFactory에 대한 코드를 따로 작성할 필요가 없습니다. - 스프링 부트에서는 JpaRepository을 확장 받는 인터페이스를 생성해서 쉽게 JPA 기능을 사용할 수 있습니다. package com.example.hellojpa; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Reposit..