전체 글

공부하면서 정리하는 블로그입니다. 틀린 내용이나 피드백 적극 환영합니다^^
"자바 네트워크 소녀 Netty" 공부하면서 정리한 내용입니다. 1. 부트스트랩이란?부트스트랩은 네티로 작성한 네트워크 애플리케이션의 동작 방식과 환경을 설정하는 도우미 클래스이다. 부트스트랩의 구조 및 네티 환경 설정은 다음과 같다전송 계층(소켓 모드 및 I/O 종류)이벤트 루프(단일 스레드, 다중 스레드)채널 파이프라인 설정소켓 주소와 포트소켓 옵션부트스트랩은 빌더 패턴을 사용하여 구현되어 있기 때문에 다양한 설정을 쉽게 할 수 있다.부트스트랩은 ServerBootstrap / Bootstrap 클래스로 나뉘며, 둘다 AbstractBootstrap 추상클래스를 상속받는다. 2. ServerBootstrap서버 애플리케이션을 구현할 때 사용. a. ServerBootstrap 설정 예시EventLoo..
이번 업무에서는 하나의 게이트웨이(클라이언트)로 다수의 장비에 tcp 소켓으로 접속하여 장비와 통신하는 업무를 맡게 되었다. 여기서 사용하게 된 네트워크 프레임워크로는 Netty를 사용하게 되었다. Netty에 대해 공부한 내용을 정리해 보겠다. 참고 도서는 "자바 네트워크 소녀 Netty" 이다.1. Netty를 선택하게 된 이유?기존 HTTP 클라이언트와 같은 범용 프로토콜은 확장성이 좋지 않다. 이는 특별한 목적을 위한 프로토콜을 구현할 때 많은 제약이 있다. Netty는 이러한 문제점을 해결하기 위해 나왔다. 장비와 통신하기 위해 별도의 프로토콜을 정의해서 사용하는데 Netty를 사용하게 되면 특정 목적의 프로토콜을 구현할 때 편리할 것이라고 생각한다.   그럼 Netty에 대해서 알아보자.  2..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 스코프(Web Scope)란?웹 환경에서만 동작하는 스코프이다.스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 2. 웹 스코프의 종류requst: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 요청마다 별도의 빈 인스턴스가 생성되고 관리된다.session: HTTP Session과 동일한 생명주기를 가지는 스코프application: 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프websocket: 웹 소켓과 동일한 생명주기를 가지는 스코프해당 스코프들은 범위만 다르고 동작 방식은 비슷하기 때문에 request 스코프로 설명하겠다. 3. request 스코프 동작 방식Control..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 빈 스코프란(Bean Scope)?빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링에서는 다양한 빈 스코프를 지원한다. 2. 빈 스코프 종류싱글톤: 기본 스코프, 스프링 컨테이너의 시작부터 종료까지 유지되는 스코프프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 소코프웹 관련 스코프request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프application: 웹의 서플릿 컨텍스트와 같은 범위로 유지되는 스코프 스코프를 설정하는 방법이다. 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpu..
김영한님의 Spring 핵심원리 강의를 듣고 정리하는 글입니다. 1. 싱글톤(Singleton)이란?싱글톤 패턴은 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.클라이언트의 요청에 따라 객체의 인스턴스를 생성할 경우 메모리 측면에서 매우 비효율적이다. 이를 해결하기 위해 싱글톤 패턴을 사용한다. 싱글톤 코드public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { ..
1. 조회 빈이 2개 이상인 경우@Autowired를 통해 의존 관계를 주입할 때 타입으로 조회하여 주입하게 된다. 만약 같은 타입의 빈이 2개 이상일 때 에러가 발생한다.@Componentpublic class FixDiscountPolicy implements DiscountPolicy {...}@Componentpublic class RateDiscountPolicy implements DiscountPolicy {...}@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discoun..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 클래스 생성과 구성 클래스는 인스턴스를 생성하기 위한 설계도이다. 클래스는 크게 변수 + 메서드로 구성된다. a. 변수란?변수는 쉽게 말해서 데이터(Value / Refernce)를 저장할 수 있는 저장공간이다. 변수는 선언위치에 따라 클래스 변수, 인스턴스 변수, 지역 변수로 나눌 수 있고, 이에 따라 사용가능한 스코프(영역)에 차이가 있다. 변수선언 예시class Variables { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv = 0; // 지역 변수(메서드 내부에서만 사용) }}public static void..
· DevOps/Linux
SFTP를 정리하기에 앞서 FTP에 대해서 간략히 정리하겠다.  FTP(File Transfer Protocol)는 말 그대로 파일을 전송할 때 사용하는 통신 규약이다. 즉, 계정을 제공하는 서버pc와 클라이언트pc(내pc)와 파일을 주고 받을 때 사용한 인터넷 통신 규약이다. FTP는 보안적인 문제로 잘사용되지 않는다.  1. SFTP(SSH File Transfep Protocol)란?보안을 강화한 FTP라고 생각하면 된다. SFTP는 FTP와 달리 서버간의 데이터  전송시 암호화하기 때문에 보안상의 문제점을 방지했다. 즉, SSH를 적용한 파일 전송 프로토콜이다.여기서 SSH란 원격 PC에 안전하게 엑세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜에 암호화 기능을 구현해 모든 데이터가 암호..
· DevOps/Linux
리눅스 환경에서 서비스에 사용되는 여러 프로세스들을 모니터링 하기 위해 supervisor를 적용했다적용과정을 공유하겠다.1. supervisor 란?supervisor는 여러 프로세스를 모니터링-관리하며 데몬 형식으로 지속적으로 동작해야 하는 프로세스가 있을 경우 유용하게 사용할 수 있다데몬은 서버(시스템)이 살아있는 동안 항상 실행되어야 하는 백그라운드 프로세스이다. Supervisor 란?supervisor가 프로세스에 대해 지속적으로 모니터링 하고, 프로세스가 예기치 않게 종료되어도 재구동하며 지속적으로 동작하도록 돕는 도구이다. 또한 여러 프로세스들을 통합해서 관리할 수 있다는 장점도 있다. 사용자에게 지속적으로 제공해야 하는 여러개의 프로세스(서비스)가 있는데, 사람이 직접 프로세스가 구동되고..
남궁성님의 Java의 정석(3rd Edition)을 보고 정리한 글입니다. 1. 스트림(Stream)이란?Java 8에서 추가되었다.컬렉션, 배열 등에 저장된 데이터를 for문을 사용하지 않고, 요소를 하나씩 참조해서 람다식과 함께 처리할 수 있도록 해주는 반복자이다. 스트림을 사용하기 전public class Test { public static void main(String[] args) { String[] str = {"aaa", "ddd", "ccc"}; List stringList = Arrays.asList(str); Arrays.sort(str); Collections.sort(stringList); for(String s ..
kmindev
평생쓰는 IT 개발 노트