Back-end

자바 네트워크 소녀 Netty" 공부하면서 정리한 내용입니다. 1. 이벤트 루프 a. 이벤트 처리 방식 애플리케이션이 이벤트를 처리하는 방법은 크게 2가지로 구분된다. 1. 이벤트 리스너 + 이벤트 처리 스레드 일반적으로 UI 프레임워크에서 사용하는 방식 이벤트 메서드를 이벤트 리스너에 등록하고, 이벤트가 발생했을 때 이벤트 처리 스레드(싱글 스레드)에서 등록된 메서드 수행 2. 이벤트 큐 + 이벤트 루프 1번 방식보다 프레임워크 구현이 복잡하지만 프레임워크 사용자는 간단하게 사용할 수 있음. 이벤트 큐에 이벤트 등록하고, 이벤트 루프가 이벤트 큐에 접근하여 처리 이벤트 큐는 다중 스레드(이벤트 루프)에서 공유 이벤트 결과를 돌려주는 방식으로는 콜백패턴과 퓨쳐패턴이 있다. b. 싱글스레드와 멀티스레드 이..
"자바 네트워크 소녀 Netty" 공부하면서 정리한 내용입니다. 1. 채널 파이프라인 a. 채널 파이프라인 구조 채널파이프라인은 채널과 이벤트 핸들러 사이에서 연결 통로 역할은 한다. b. 채널 파이프라인 구성 EventLoopGroup bossEventLoopGroup = new NioEventLoopGroup(1); EventLoopGroup workerEventLoopGroup = new NioEventLoopGroup(); try { ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossEventLoopGroup, workerEventLoopGroup) .channel(NioServerSocketChannel.class) ...
"자바 네트워크 소녀 Netty" 공부하면서 정리한 내용입니다. 1. 부트스트랩이란? 부트스트랩은 네티로 작성한 네트워크 애플리케이션의 동작 방식과 환경을 설정하는 도우미 클래스이다. 부트스트랩의 구조 및 네티 환경 설정은 다음과 같다 전송 계층(소켓 모드 및 I/O 종류) 이벤트 루프(단일 스레드, 다중 스레드) 채널 파이프라인 설정 소켓 주소와 포트 소켓 옵션 부트스트랩은 빌더 패턴을 사용하여 구현되어 있기 때문에 다양한 설정을 쉽게 할 수 있다. 부트스트랩은 ServerBootstrap / Bootstrap 클래스로 나뉘며, 둘다 AbstractBootstrap 추상클래스를 상속받는다. 2. ServerBootstrap 서버 애플리케이션을 구현할 때 사용. a. ServerBootstrap 설정 예..
이번 업무에서는 하나의 게이트웨이(클라이언트)로 다수의 장비에 tcp 소켓으로 접속하여 장비와 통신하는 업무를 맡게 되었다. 여기서 사용하게 된 네트워크 프레임워크로는 Netty를 사용하게 되었다. Netty에 대해 공부한 내용을 정리해 보겠다. 참고 도서는 "자바 네트워크 소녀 Netty" 이다. 1. Netty를 선택하게 된 이유? 기존 HTTP 클라이언트와 같은 범용 프로토콜은 확장성이 좋지 않다. 이는 특별한 목적을 위한 프로토콜을 구현할 때 많은 제약이 있다. Netty는 이러한 문제점을 해결하기 위해 나왔다. 장비와 통신하기 위해 TL1이라는 프로토콜을 사용하는 Netty를 사용하게 되면 특정 목적의 프로토콜을 구현할 때 편리할 것이라고 생각한다. 그럼 Netty에 대해서 알아보자. 2. Ne..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 스코프(Web Scope)란? 웹 환경에서만 동작하는 스코프이다. 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 2. 웹 스코프의 종류 requst: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 요청마다 별도의 빈 인스턴스가 생성되고 관리된다. session: HTTP Session과 동일한 생명주기를 가지는 스코프 application: 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프 websocket: 웹 소켓과 동일한 생명주기를 가지는 스코프 해당 스코프들은 범위만 다르고 동작 방식은 비슷하기 때문에 request 스코프로 설명하겠다. 3. request 스코프 동작 방식..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 빈 스코프란(Bean Scope)? 빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링에서는 다양한 빈 스코프를 지원한다. 2. 빈 스코프 종류 싱글톤: 기본 스코프, 스프링 컨테이너의 시작부터 종료까지 유지되는 스코프 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 소코프 웹 관련 스코프 request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application: 웹의 서플릿 컨텍스트와 같은 범위로 유지되는 스코프 스코프를 설정하는 방법이다. 컴포넌트 스캔 자동 등록 @Scope("prototype") @Co..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 싱글톤(Singleton)이란? 싱글톤 패턴은 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 클라이언트의 요청에 따라 객체의 인스턴스를 생성할 경우 메모리 측면에서 매우 비효율적이다. 이를 해결하기 위해 싱글톤 패턴을 사용한다. 싱글톤 코드 public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public void logi..
1. 조회 빈이 2개 이상인 경우 @Autowired를 통해 의존 관계를 주입할 때 타입으로 조회하여 주입하게 된다. 만약 같은 타입의 빈이 2개 이상일 때 에러가 발생한다. @Component public class FixDiscountPolicy implements DiscountPolicy {...} @Component public class RateDiscountPolicy implements DiscountPolicy {...} @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discou..
1. Google Guice? Spring은 DI 뿐만 아니라 다양한 기능을 제공하는 반면에 Google Guice는 DI 프레임워크이다. 작은규모의 프로젝트나 경량성이 중요한 경우에 사용하는 것이 적합하다. Communicator 인터페이스를 정의했다고 가정하자. Communicator 구현체는 CommunicatorImpl이다. 만약 구현체를 변경해야 하는 상황이 오면 Communication과 Communicator 는 강하게 결합되어 있어 유지보수에 상당한 어려움이 생길 수 있다. 2. 문제 코드 public interface Communicator { } public class CommunicatorImpl implements Communicator{ } public class Communica..
개요 The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | principalOauth2UserService (field private org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder com.cos.security1.config.outh.PrincipalOauth2UserService.bCryptPasswordEncoder) ↑ ↓ | securityConfig defined in file [E:\\Project\\SpringWebStudy\\security1\\out\\production\\classes\\com\\cos\\secur..
kmindev
'Back-end' 카테고리의 글 목록 (2 Page)