-
ML lec 01 - 기본적인 ML용어와 개념 정리인공지능 및 기계학습 개론/ML_LEC 2020. 2. 10. 19:50
ML explicit programming spam filter : many rules Automatic driving : too many rules ML : Field of study that gives computers the ability to learn without being explicitly programmed Supervised/Unsupervised learning supervised : learning with labeled examples (training set) Image recognition(image-cat/dog/mug/hat… labled) unsupervised : un-labeled data word clustering google news grouping Supervi..
-
cccNetty 2019. 1. 13. 17:08
- 메모리 모델과 바이트 버퍼netty에서 사용하는 bytebuf를 별도로 관리, 성능측면에서 GC부담 최소화, NIO bytebuffer와 같은 역할(좀더 성능 최적화)커스텀 타입 개발 가능, composite buffer 도입으로 버퍼 복사 최소화, 필요에 따라 버퍼 용량 자동 증가flip() 호출 필요 없음, 참조수 관리로 메모리 수동 해제, - ReferenceCounted 별도 메모리 풀에 할당/해제, 최초 참조수는 1, 참조수 0이되면 해제더 참조하는 객체가 생기면 retaion() -> +1, 다썼으면 release() -> -1 - byteBuf - 파이프라인 활용Channel은 connect, bind, read, write 등 네크워트 작업을 할수 있는 요소. 모든 I/O작업은 비동기 ..
-
Netty BootstrapNetty 2019. 1. 9. 14:13
지난번에 대충 인터페이스를 봤지만, 자세히 어떻게 돌아가는지 아직 잘 그림이 안그려진다. 1. EventLoopGrouop boss, worker 생성2.1 ServerBootstrap으로 boss, worker 설정2.2 채널을 생성할 때 사용할 클래스(NioServerSocketChannel.class)를 등록, 이걸로 안쪽에서 채널팩도리를 만들어 등록한다.2.3 로깅할 핸들러 생성 후 설정(이건 뜬금없이 왜 등록 하는지 모르겠다)2.4 자식 핸들러로 DiscardServerHandler를 생성해서 등록3. ServerBootstrap으로 8010포트 bind() 후 sync()4. sync()에러 리턴받은 ChanenlFuture의 channel(), closeFuture(), sync() 순서대로..
-
Netty Core InterfaceNetty 2019. 1. 7. 20:54
Channel, ChannelFuture, ChannelHandler, ChannelHandlerContext, ChannelPipeline, EventLoop순서대로 보자 - Channel대충 중요해보이는게 eventLoop(), pipeline(), read() 정도 보인다. ChannelOutboundInvoker는 뭐하는 녀석일까 대충 이런게 있다치고 넘어가자. - ChannelFuture줄줄이 설명이 잘 되있다; channelFuture는 비동기 I/O 동작의 결과물이라고 한다.netty는 모든 동작이 비동기이며, 그것은 모든 I/O call이 즉시 이녀석을 리턴한다고 볼 수 있다.(물론 요청의 완료 여부는 보장하지 않는다)이녀석은 요청이 어떻게 동작하는지 그 상태정보와 결과를 갖고있다. 자세한..
-
[RabbitMQ] 5. Topics, Topic(Pattern) ExchangeRabbitMQ 2019. 1. 7. 19:39
이번에는 특정 패턴을 기준으로 메시지를 선별하여 보낼 수 있는 exchage를 알아본다.direct exchange는 한가지 rule(bindingKey)만을 기준으로 메시지 선별이 가능했다.topic exchange 이녀석은 메시지 선별을 위해 여러 패턴을 설정할 수 있다. 이녀석은 무조건 routingKey를 점으로 구분된 단어 리스트로 넣어야한다.("stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit") - Topic Exchange특정 routingKey와 함께 전송된 메시지는 일치하는 바인딩 키로 연결된 모든 큐로 전달한다.(*는 1글자, #은 0개 이상)라우팅 키를 다음과 같이 정의할 때 ".." 각 큐에 걸려있는 바인딩 룰의 의미는 다음과 같다. Q1 :..
-
[RabbitMQ] 4. Routing, Direct ExchangeRabbitMQ 2019. 1. 6. 16:14
이번에는 바인딩을 큐 별로 하나씩 직접 연결하여, 특정 메시지만 선택적으로 받을 수 있는 컨슈머를 만들어본다.지난 로깅 예제에 추가로, 컨슈머 A는 전체 로그를 콘솔 출력하고, 컨슈머 B는 에러 로그만 파일로 저장해보자. channel.queueBind(queueName, EXCHANGE_NAME, "black");지난 시간에 봤었던 Binding은 exchange와 queue의 연결을 지정해줄 수 있는데 마지막 파라미터로 RoutingKey라는게 있었다.여기의 파라미터는 basicPublish의 routingKey와는 다른것으로 bindingKey로 이해하면 된다고 한다. bindingKey의 의미는 exchage의 type에 따라 다르게 동작한다.(이전 시간에 했었던 fanout exchage에서는 ..
-
[RabbitMQ] 3. Publish/Subscribe, Fanout(Broadcasting) ExchangeRabbitMQ 2019. 1. 5. 18:07
이번에는 같은 메시지를 여러 컨슈머에 배달하는 법을 알아본다. publish/subscribe 패턴이라고 한다.예시 상황으로 로그 메시지를 여러 컨슈머에 발송한다. 컨슈머 A는 로그를 콘솔 출력하고, 컨슈머 B는 디스크에 파일로 저장한다. * Wrap-UpA producer is a user application that sends messages.A queue is a buffer that stores messages.A consumer is a user application that receives messages. - Exchange무슨 뜻인지 정확하게 몰랐는데 드디어 설명이 나온다;RabbitMQ의 메시징 모델에서 핵심 아이디어는 producer는 어떤 메시지도 직접 queue로 메시지를 보내지는..
-
[RabbitMQ] 2. Work Queues, QosRabbitMQ 2019. 1. 1. 18:18
처리에 시간이 걸리는 메시지가 집중될 때를 대비해서 여러 컨슈머에 작업을 분배해서 배달할 수 있는 큐를 만들어보자작업이 나중에 끝나도록 스케줄 하는것 보다 작업을 메시지로 만들어 큐로 던진다.이러한 방법은 http 방식으로 처리하기 복잡한 웹 프로그램 환경에서 유용하다.기본 설정으로 MQ는 각 메시지를 다음 컨슈머에게 순차적으로 전달한다(라운드 로빈). 2개 이상 컨슈머를 실행시켜두고 여러 메시지를 보내니 순차적으로 핸들링 하는것을 확인 할 수 있었다. MQ는 메시지를 배달하는 즉시 해당 메시지에 삭제 마킹을 하는데 워커에서 작업을 처리중일 때 kill을 날리면 메시지를 유실한다. 메시지 유실을 방지하기 위해 MQ는 message acknowledgments 를 제공한다. 배달 후 메시지 삭제 마킹을 하..