티스토리 뷰

study/java

자바

dev.s 2018. 6. 1. 22:24

스트레티지 패턴



http 와 socket 차이

http 는 Application layer 에서 동작하는 프로토콜로 socket 위에서 동작한다. http만으로 데이터를 보내거나 받거나 할 수 없다.

socket 은 OS에서 네트워크에서 제공하는 API이다. Transport layer에서 동작하며 시스템 간 데이터를 전송하기 위해 사용된다. socket을 활용하여 자체적인 네트워크 프로토콜을 설계할 수도 있다. 로우 레벨로 컨트롤이 가능하다.

netty 설명

async Event-Driven Network Framework. 프로토콜 서버 및 클라이언트 같은 네트워크 어플리케이션의 개발을 빠르고 간편하게 할 수 있도록 도와주는 NIO 클라이언트 서버 프레임워크이다. TCP , UDP 소켓 서버와 같은 네트워크 프로그래밍을 간단하게 할 수 있도록 도와준다. 

Event-Loop 가 싱글 스레드로 동작하면서 event를 감지한다. 감지된 이벤트는 channel pipeline에 의해 등록된 eventHandler에 의해 처리 되며 감지된 이벤트에 대한 응답은 event-loop 스레드에서 바로 전달한다. 그리고 비지니스 로직이 수행된 후 다시 Event-loop로 데이터가 전달되면 해당 스레드를 통해 데이터가 클라이언트에게 전달된다. 각 이벤트 핸들러는 Interceptor filer chain pattern으로 등록되며 모든 핸들러가 수행된다.


blocking io / nonblocking io

I/O 가 block 으로 동작하느냐, 아니면 nonblock 으로 동작되느냐의 차이이다. blocking io 는 I/O 작업이 요청되면 작업이 완료되면 작업 결과가 반환된다. 작업이 수행되는 동안 프로세스는 동작을 중단하고 대기하고 있으며 이때의 CPU가 거의 사용되지 않아 리소스 낭비가 심하다. 네트워크를 예로 들면, 한 스레드에서 blocking 으로 작업이 수행되면 해당 스레드는 작업이 완료되기 전까지는 대기하여야 한다. 따라서 각 요청에 대해 각각의 다른 스레드를 활용해야 하고 그러면 클라이언트가 많아질수록 스레드의 수가 증가하며 스레드가 증가하면 CPU의 컨텍스트 스위칭 횟수가 증가하게 되고 엄청 비효율적이 된다. 

nonblocking은 위의 단점을 보완하기 위해 나오게 되었다. 작업 요청이 오면 요청을 받자마자 바로 응답값을 전달하기 때문에 스레드가 작업을 완료될때까지 기다릴 필요가 없다. 


컬렉션들 차이 설명, 쓰레드 세이프 컬렉션들

Map - 중복불가, <key, value> 로 저장됨. 저장된 순서로 유지. 스레드 세이프하게 동작하려면 ConcurruntMap 을 활용할 수 있다. 

Set - 중복불가, <value> 가 저장됨, 순서 없음, 스레드 세이프 synchronizedSet(TreeSet, SortedSet)

List - 중복가능, <value> 가 저장. 저장된 순서 유지, 스레드 세이프 synchronizedList


heap 메모리 gc 설명
g1 gc 설명
cms 왜 deprecated 됐는지


자바 버전 써본거 물어보고 7이라고 해서 8 버전 꺼 안 물어봄


카산드라 와 rdb 차이

Keyspace = database

column family = table

columns = rows

데이터는 key, value 로 저장됨.



카산드라의 단점
그 외 업무 질문들
톰캣과 네티 차이

톰캣은 servlet container

네티는 socket 통신을 간단하게 개발할 수 있는 비동기 이벤트 드리븐 네트워크 프레임워크



inner join outer join


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함