SlideShare a Scribd company logo
1 of 13
Download to read offline
 
1 
Communicating in Asynchronous 
World with Netty 
In this chapter, we will cover asynchronous socket programming and common recipes using 
Netty for building network­based application. The user story is, you get requirements to 
develop a system, that client and server can communicate asynchronously using TCP/IP . So 
we will divide the problem to 6 common recipes: 
● Building an asynchronous TCP/IP server and client 
● Sending hello message to server when connection is ready 
● Receiving message asynchronously 
● Get callback when closing an active Channel 
● Get notification from ChannelHandler states 
● Data pipeline processing with ChannelHandler 
Introduction 
Before we go to the first recipe, we need to ask ourselves for the key question of first chapter: 
Why is the asynchronous programming model is more suitable for building applications in 
Internet­Scale Services ? And some main reasons are: 
● Cooperatively schedule the CPU or other resources to each connection. 
● Easily divide the work it into relatively small pieces. 
● Efficient and elegant coding style. 
● Scalability ­ hundreds of connections means only hundreds of socket/state objects 
● Requires no interlocking for access to shared resources. 
● integrates easily with event­driven programming and Lambda Expression in Java 8 
 
 
 
 
So we got some ideas to continue to next question “How Netty solve the asynchronous I/O?” 
The answer is at the main loop, or the message dispatcher, is a programming construct that 
waits for and dispatches events or messages in a program. Your program at the Internet­Scale 
Services always receiving a lot of data events, so with Netty, the work for building 
networking­based solution more elegant and easier. 
 
Getting ready: 
Make sure you install the Gradle Integration with Eclipse (4.4) and the JDK 8 is installed 
Go to the page ​http://trieu.github.io/netty­cookbook 
You will see the guideline how to checkout the source code of book. 
Recipe 1.1 Building an asynchronous TCP Server 
In this recipe, we go through an simple example to build a TCP server. You will use 
EventLoopGroup, ServerBootstrap, ChannelInitializer, StringEncoder, StringDecoder, 
ChannelHandler and ChannelInboundHandlerAdapter  to build solution. 
 
 
How to do it ... 
The basic main steps: 
1. Configure the server with ServerBootstrap 
2. Setting the String codec to define how server encoding/decoding messages and add to 
ChannelPipeline. 
3. Implementing the handler, the subclass of ChannelInboundHandlerAdapter, that the 
main logic of our application 
4. Start server and synchronize with the active channel, the socket that is listening 
public​ ​final​ ​class​ ​AsynchTcpServer​ { 
    ​static​ ​final​ ​int​ PORT ​=​ ​Integer​.​parseInt​(​System​.​getProperty​(​"port"​,​ ​"8007"​)); 
    ​public​ ​static​ ​void​ main​(​String​[]​ args​)​ ​throws​ ​Exception​ ​{     
        ​EventLoopGroup​ bossGroup ​=​ ​new​ ​NioEventLoopGroup​(​1​); 
        ​EventLoopGroup​ workerGroup ​=​ ​new​ ​NioEventLoopGroup​(); 
        ​try​ { 
            ​ServerBootstrap​ b ​=​ ​new​ ​ServerBootstrap​(); 
            b​.​group​(​bossGroup​,​ workerGroup) 
             ​.​channel​(​NioServerSocketChannel​.​class) 
             ​.​handler​(​new​ ​LoggingHandler​(​LogLevel​.​INFO​)) 
             ​.​childHandler​(​new​ ​ChannelInitializer​<​SocketChannel​>()​ { 
                 ​@Override 
                 ​public​ ​void​ initChannel​(​SocketChannel​ ch​)​ ​throws​ ​Exception​ { 
                     ​ChannelPipeline​ p ​=​ ch​.​pipeline​(); 
                     p​.​addLast​(​new​ ​StringDecoder​(​CharsetUtil​.​UTF_8​)); 
                     p​.​addLast​(​new​ ​StringEncoder​(​CharsetUtil​.​UTF_8​));  
                     p​.​addLast​(​new​ ​ChannelInboundHandlerAdapter​(){ 
   ​@Override 
  public​ ​void​ channelRead​(​ChannelHandlerContext​ ctx, 
  Object​ msg​)​ ​throws​ ​Exception​ { 
   ​String​ s ​=​ ​String​.​format​(​"Response the message %s from 
server"​,​ msg​); 
   ctx​.​writeAndFlush​(​s​); 
  } 
 
 
                     ​}); 
                 } 
             ​}); 
            ​ChannelFuture​ f ​=​ b​.​bind​(​PORT​).​sync​(); 
            ​Channel​ channel ​=​ f​.​channel​();   
            channel​.​closeFuture​().​sync​(); 
        ​}​ ​finally​ { 
            bossGroup​.​shutdownGracefully​(); 
            workerGroup​.​shutdownGracefully​(); 
        } 
    } 
} 
Recipe 1.2 Sending hello message to server when 
connection is ready 
In practice, sending  messages between client and server is not safe. If connection is not ready 
or not available, your code should be notified immediately if you want to send a message 
asynchronously to server. You can extend the SimpleChannelInboundHandler in your 
implemented handler. Then, when a channel or a connection is ready, you can use the 
ChannelHandlerContext to send data. 
 
 
 
 
 
How to do it … 
The example code:  
public​ ​class​ ​TcpClientHandler​ ​extends​ ​SimpleChannelInboundHandler​<​String​>​ ​{  
String​ message; 
CallbackProcessor​ asynchCall; 
    ​public​ ​TcpClientHandler​(​String​ message​,​ ​CallbackProcessor​ asynchCall​)​ { 
  this​.​message ​=​ message; 
  this​.​asynchCall ​=​ asynchCall; 
    ​} 
    ​@Override 
    ​public​ ​void​ channelActive​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception​ { 
  ctx​.​writeAndFlush​(​this​.​message​); 
    } 
Recipe 1.3 Receiving message asynchronously 
You want to create a TCP client, and the response should be send back to the caller. In the 
recipe, we can use the cool feature in Java 8, the Lambda Expression to create better elegant 
syntax likes this code 
new​ ​TcpClient​(​"127.0.0.1"​,​8007​).​setMessage​(​"Hello"​).​onResponseReceived​(​rs ​­>​ { 
System​.​out​.​println​(​rs​);   
}).​execute​(); 
How to do it ... 
Define a FunctionalInterface, named “CallbackProcessor”  
@FunctionalInterface 
public​ ​interface​ ​CallbackProcessor​ ​{   
public​ ​void​ process​(​String​ res​); 
} 
 
 
In the handler, when client receive the message from server, the channelRead0 method is 
called and received data. In this code, you can apply the function “process” to delegate to 
lambda method. 
public​ ​class​ ​TcpClientHandler​ ​extends​ ​SimpleChannelInboundHandler​<​String​>​ ​{  
String​ message; 
CallbackProcessor​ asynchCall; 
    ​public​ ​TcpClientHandler​(​String​ message​,​ ​CallbackProcessor​ asynchCall​)​ { 
  this​.​message ​=​ message; 
  this​.​asynchCall ​=​ asynchCall; 
    ​}   
    ​@Override 
    ​public​ ​void​ channelRead0​(​ChannelHandlerContext​ ctx​,​ ​String​ msg​)​ { 
        ​this​.​asynchCall​.​process​(​msg​); 
    } 
Recipe 1.4 Get notification from Netty I/O operations 
Using the asynchronous I/O in Netty, or non­blocking I/O permits a ChannelHandler 
processing to continue before the transmission has finished. The advantages are improving 
throughput, latency, and/or responsiveness. 
Channel I/O in Netty is designed to maximize CPU utilization and throughput by offloading 
most I/O onto a coprocessor, by using Zero­Copy Networking.  
The context of our problem is when your application receives all data from peers, you want to 
close channel and add a listener to get notification when the operation completes. 
 
 
 
How to do it … 
Implement the interface GenericFutureListener to get notification when a TCP channel close 
successfully.  
@Sharable 
public​ ​class​ ​TcpServerOutboundHandler​ ​extends​ ​ChannelOutboundHandlerAdapter​ ​{  
@Override 
public​ ​void​ flush​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception​ ​{  
super​.​flush​(​ctx​);  
ctx​.​close​().​addListener​(​new​ ​GenericFutureListener​<​Future​<?​ ​super 
Void​>>()​ { 
@Override 
public​ ​void​ operationComplete​(​Future​<?​ ​super​ ​Void​>​ future) 
throws​ ​Exception​ { 
System​.​out​.​println​(​"close connection: 
"​+​future​.​isSuccess​()); 
} 
}); 
} 
 
 
Recipe 1.5 Get notification from ChannelHandler states 
In Netty, there are 2 core concepts that you usually use:  
Channel​ : the link ('connection') to a resource that provides IO operations like read / write 
(the link between client and server) 
ChannelHandler​: Your business logic needs a place, and this is where it belongs too. 
The state of Channel is really important, because it tells you about the connection status. The 
diagram here , illustrate the state model of Channel 
 
How can we hook the code and listen the states of Channel ? 
How to do it … 
In the interface ChannelInboundHandler, there 4 methods you can override. 
    ​void​ channelRegistered​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception; 
    ​void​ channelUnregistered​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception; 
    ​void​ channelActive​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception; 
    ​void​ channelInactive​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception; 
This example code for illustrating the solution: 
 
 
public​ ​class​ ​TcpServerHandler​ ​extends​ ​ChannelInboundHandlerAdapter​ { 
    ​@Override 
    ​public​ ​void​ channelRead​(​ChannelHandlerContext​ ctx​,​ ​Object​ msg​)​ { 
  System​.​out​.​println​(​msg​);   
        ctx​.​write​(​"ok"​); 
    } 
    ​@Override 
    ​public​ ​void​ channelRegistered​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception​ ​{   
  super​.​channelRegistered​(​ctx​); 
  InetSocketAddress​ address ​=​ ​(​InetSocketAddress​)​ ctx​.​channel​().​remoteAddress​(); 
  System​.​out​.​println​(​"channelRegistered "​+​ address​.​getAddress​()); 
  isCatchedException ​=​ ​false; 
    ​}   
    ​@Override 
    ​public​ ​void​ channelUnregistered​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception​ ​{   
  super​.​channelUnregistered​(​ctx​); 
  InetSocketAddress​ address ​=​ ​(​InetSocketAddress​)​ ctx​.​channel​().​remoteAddress​(); 
  System​.​out​.​println​(​"channelUnregistered "​+​ address​.​getAddress​()); 
    ​}   
    ​@Override 
    ​public​ ​void​ channelActive​(​ChannelHandlerContext​ ctx​)​ ​throws​ ​Exception​ ​{   
  super​.​channelActive​(​ctx​); 
  System​.​out​.​println​(​"channelActive "​+​ctx​.​channel​()); 
  ctx​.​channel​().​writeAndFlush​(​"connected"​); 
    } 
The output from code look likes this: 
 
 
 
Recipe 1.6 Data pipeline processing with 
ChannelHandler 
In Netty, a ChannelPipeline is a set of data processing ChannelHandlers connected as pipe, 
where the output of one element is the input of the next one. The elements of a 
ChannelPipeline are often executed in parallel. 
There are four concepts that you should familiar with in this recipe. 
ChannelInboundHandler​ Defines listener methods for incoming I/O events 
ChannelOutboundHandler​ Defines listener methods for outgoing I/O events 
ChannelPipeline​ A list of ChannelHandlers that process incoming and outgoing events in a 
specific order. 
ChannelInitializer​ : Configures the pipeline for a Channel. 
The pattern in Netty normally likes this: 
Channel​ ch ​=​ ​...; 
ChannelPipeline​ p ​=​ ch​.​pipeline​(); 
EventExecutor​ e1 ​=​ ​new​ ​DefaultEventExecutor​(​16​); 
EventExecutor​ e2 ​=​ ​new​ ​DefaultEventExecutor​(​8​); 
p​.​addLast​(​new​ ​MyProtocolCodec​()); 
p​.​addLast​(​e1​,​ ​new​ ​MyDatabaseAccessingHandler​()); 
p​.​addLast​(​e2​,​ ​new​ ​MyHardDiskAccessingHandler​()); 
 
 
 
The diagram above show how inbound events and outbound events go through all handlers in 
ChannelPipeline. 
How to do it … 
public​ ​class​ ​DataProcessingPipeline​ ​extends​ ​ChannelInitializer​<​SocketChannel​>{ 
final​ ​static​ ​Logger​ logger ​=​ ​Logger​.​getLogger​(​DataProcessingPipeline​.​class​);  
@Override 
protected​ ​void​ initChannel​(​SocketChannel​ ch​)​ ​throws​ ​Exception​ { 
 ​ChannelPipeline​ p ​=​ ch​.​pipeline​();    
         ​// the Decoder 
         p​.​addLast​(​"stringDecoder"​,​ ​new​ ​StringDecoder​(​CharsetUtil​.​UTF_8​)); 
         ​// the Encoder 
         p​.​addLast​(​"stringEncoder"​,​ ​new​ ​StringEncoder​(​CharsetUtil​.​UTF_8​)); 
         ​// the log handler and data transformer 
         p​.​addLast​(​"logger"​,​new​ ​MessageToMessageDecoder​<​String​>(){ 
@Override 
protected​ ​void​ decode​(​ChannelHandlerContext​ ctx​,​ ​String 
msg​,​List​<​Object​>​ ​out​)​ ​throws​ ​Exception​ ​{  
logger​.​info​(​String​.​format​(​"logged raw data '%s'"​,​ msg​)); 
InetSocketAddress​ address ​=​ ​(​InetSocketAddress​) 
ctx​.​channel​().​remoteAddress​(); 
Map​<​String​,​ ​String​>​ request ​=​ ​new​ ​HashMap​<>(); 
 
 
request​.​put​(​"data"​,​ msg​); 
request​.​put​(​"from­ip"​, 
address​.​getAddress​().​getHostAddress​()); 
out​.​add​(​request​); 
}    
         ​}); 
         ​// the processing logic handler 
         p​.​addLast​(​"handler"​,​new​ ​SimpleChannelInboundHandler​<​Map​<​String​,​ ​String​>>(){ 
   ​@Override 
  public​ ​void​ channelRead0​(​ChannelHandlerContext​ ctx​,​ ​Map​<​String​,​ ​String​> 
request) 
  throws​ ​Exception​ { 
  logger​.​info​(​String​.​format​(​"from­host: '%s'"​, 
request​.​get​(​"from­ip"​))); 
  logger​.​info​(​String​.​format​(​"data: '%s'"​,​ request​.​get​(​"data"​))); 
  ctx​.​writeAndFlush​(​"Done"​); 
  }   
         ​}); 
} 
} 
How it works… 
The main idea is  the implementation of MessageToMessageDecoder. The message “Hello” is 
sent from client and is catched at StringDecoder first. Then, it transform “ByteBuf” to String. 
All classes , extends from abstract class MessageToMessageDecoder,  the data will be catched 
at the method “protected void decode(ChannelHandlerContext ctx, String msg,List<Object> 
out)”.  After processing the inbound event, data should be put into List<Object> out.  
When you run the code, the output should look like this: 
2014​­​11​­​17​ ​14​:​41​:​45​ INFO  ​LoggingHandler​:​100​ ​­​ ​[​id​:​ ​0x8daa6b57​]​ REGISTERED 
2014​­​11​­​17​ ​14​:​41​:​45​ INFO  ​LoggingHandler​:​100​ ​­​ ​[​id​:​ ​0x8daa6b57​] 
BIND​(​0.0​.​0.0​/​0.0​.​0.0​:​8007) 
2014​­​11​­​17​ ​14​:​41​:​45​ INFO  ​LoggingHandler​:​100​ ​­​ ​[​id​:​ ​0x8daa6b57​,​ ​/​0​:​0​:​0​:​0​:​0​:​0​:​0​:​0​:​8007​] 
ACTIVE 
2014​­​11​­​17​ ​14​:​41​:​59​ INFO  ​LoggingHandler​:​100​ ​­​ ​[​id​:​ ​0x8daa6b57​,​ ​/​0​:​0​:​0​:​0​:​0​:​0​:​0​:​0​:​8007​] 
RECEIVED​:​ ​[​id​:​ ​0x0fa09432​,​ ​/127.0.0.1:47855 => /​127.0​.​0.1​:​8007] 
 
 
2014​­​11​­​17​ ​14​:​41​:​59​ INFO  ​DataProcessingPipeline​:​34​ ​­​ logged raw data ​'Hello' 
2014​­​11​­​17​ ​14​:​41​:​59​ INFO  ​DataProcessingPipeline​:​47​ ​­​ ​from​­​host​:​ ​'127.0.0.1' 
2014​­​11​­​17​ ​14​:​41​:​59​ INFO  ​DataProcessingPipeline​:​48​ ​­​ data​:​ ​'Hello' 
 
 

More Related Content

What's hot

Quantum (OpenStack Meetup Feb 9th, 2012)
Quantum (OpenStack Meetup Feb 9th, 2012)Quantum (OpenStack Meetup Feb 9th, 2012)
Quantum (OpenStack Meetup Feb 9th, 2012)Dan Wendlandt
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)Salvatore Orlando
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceRick Hightower
 
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Dave Neary
 
Securing & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave NetSecuring & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave NetLuke Marsden
 
Coap based application for android phones
Coap based application for android phonesCoap based application for android phones
Coap based application for android phonesMd Syed Ahamad
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updatesmestery
 
OpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgridOpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgridKamesh Pemmaraju
 
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021StreamNative
 
Troubleshooting Tracebacks
Troubleshooting TracebacksTroubleshooting Tracebacks
Troubleshooting TracebacksJames Denton
 
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Benjamin Cabé
 
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutronmestery
 
Developing Realtime Data Pipelines With Apache Kafka
Developing Realtime Data Pipelines With Apache KafkaDeveloping Realtime Data Pipelines With Apache Kafka
Developing Realtime Data Pipelines With Apache KafkaJoe Stein
 
Next Generation Network Developer Skills
Next Generation Network Developer SkillsNext Generation Network Developer Skills
Next Generation Network Developer Skillsmestery
 
Neutron behind the scenes
Neutron   behind the scenesNeutron   behind the scenes
Neutron behind the scenesinbroker
 
How and why we got Prometheus working with Docker Swarm
How and why we got Prometheus working with Docker SwarmHow and why we got Prometheus working with Docker Swarm
How and why we got Prometheus working with Docker SwarmLuke Marsden
 
Neutron Advanced Services - Akanda - Astara 201 presentation
Neutron Advanced Services - Akanda - Astara 201 presentationNeutron Advanced Services - Akanda - Astara 201 presentation
Neutron Advanced Services - Akanda - Astara 201 presentationEric Lopez
 
Overlay/Underlay - Betting on Container Networking
Overlay/Underlay - Betting on Container NetworkingOverlay/Underlay - Betting on Container Networking
Overlay/Underlay - Betting on Container NetworkingLee Calcote
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networkingmarkmcclain
 

What's hot (20)

Quantum (OpenStack Meetup Feb 9th, 2012)
Quantum (OpenStack Meetup Feb 9th, 2012)Quantum (OpenStack Meetup Feb 9th, 2012)
Quantum (OpenStack Meetup Feb 9th, 2012)
 
Spring 5 Project Reactor
Spring 5 Project ReactorSpring 5 Project Reactor
Spring 5 Project Reactor
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
 
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
Networking in OpenStack for non-networking people: Neutron, Open vSwitch and ...
 
Securing & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave NetSecuring & Enforcing Network Policy and Encryption with Weave Net
Securing & Enforcing Network Policy and Encryption with Weave Net
 
Coap based application for android phones
Coap based application for android phonesCoap based application for android phones
Coap based application for android phones
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
 
OpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgridOpenStack networking - Neutron deep dive with PLUMgrid
OpenStack networking - Neutron deep dive with PLUMgrid
 
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021
What's New in Apache Pulsar 2.9- Pulsar Summit Asia 2021
 
Troubleshooting Tracebacks
Troubleshooting TracebacksTroubleshooting Tracebacks
Troubleshooting Tracebacks
 
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
Running UK railway with Eclipse Paho and Eclipse Mosquitto – Eclipse IoT Day ...
 
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
 
Developing Realtime Data Pipelines With Apache Kafka
Developing Realtime Data Pipelines With Apache KafkaDeveloping Realtime Data Pipelines With Apache Kafka
Developing Realtime Data Pipelines With Apache Kafka
 
Next Generation Network Developer Skills
Next Generation Network Developer SkillsNext Generation Network Developer Skills
Next Generation Network Developer Skills
 
Neutron behind the scenes
Neutron   behind the scenesNeutron   behind the scenes
Neutron behind the scenes
 
How and why we got Prometheus working with Docker Swarm
How and why we got Prometheus working with Docker SwarmHow and why we got Prometheus working with Docker Swarm
How and why we got Prometheus working with Docker Swarm
 
Neutron Advanced Services - Akanda - Astara 201 presentation
Neutron Advanced Services - Akanda - Astara 201 presentationNeutron Advanced Services - Akanda - Astara 201 presentation
Neutron Advanced Services - Akanda - Astara 201 presentation
 
Overlay/Underlay - Betting on Container Networking
Overlay/Underlay - Betting on Container NetworkingOverlay/Underlay - Betting on Container Networking
Overlay/Underlay - Betting on Container Networking
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack NetworkingONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
 

Viewers also liked

Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and NettyTim Boudreau
 
Fast Data processing with RFX
Fast Data processing with RFXFast Data processing with RFX
Fast Data processing with RFXTrieu Nguyen
 
Slide 2 collecting, storing and analyzing big data
Slide 2 collecting, storing and analyzing big dataSlide 2 collecting, storing and analyzing big data
Slide 2 collecting, storing and analyzing big dataTrieu Nguyen
 
Reactive Data System in Practice
Reactive Data System in PracticeReactive Data System in Practice
Reactive Data System in PracticeTrieu Nguyen
 
Where is my next jobs in the age of Big Data and Automation
Where is my next jobs in the age of Big Data and AutomationWhere is my next jobs in the age of Big Data and Automation
Where is my next jobs in the age of Big Data and AutomationTrieu Nguyen
 
2016 Data Science Salary Survey
2016 Data Science Salary Survey2016 Data Science Salary Survey
2016 Data Science Salary SurveyTrieu Nguyen
 
Slide 3 Fast Data processing with kafka, rfx and redis
Slide 3 Fast Data processing with kafka, rfx and redisSlide 3 Fast Data processing with kafka, rfx and redis
Slide 3 Fast Data processing with kafka, rfx and redisTrieu Nguyen
 
Experience economy
Experience economyExperience economy
Experience economyTrieu Nguyen
 
Introduction to Human Data Theory for Digital Economy
Introduction to Human Data Theory for Digital EconomyIntroduction to Human Data Theory for Digital Economy
Introduction to Human Data Theory for Digital EconomyTrieu Nguyen
 
How to build a data driven business in big data age
How to build a data driven business in big data ageHow to build a data driven business in big data age
How to build a data driven business in big data ageTrieu Nguyen
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)Trieu Nguyen
 

Viewers also liked (12)

Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and Netty
 
Notes on Netty baics
Notes on Netty baicsNotes on Netty baics
Notes on Netty baics
 
Fast Data processing with RFX
Fast Data processing with RFXFast Data processing with RFX
Fast Data processing with RFX
 
Slide 2 collecting, storing and analyzing big data
Slide 2 collecting, storing and analyzing big dataSlide 2 collecting, storing and analyzing big data
Slide 2 collecting, storing and analyzing big data
 
Reactive Data System in Practice
Reactive Data System in PracticeReactive Data System in Practice
Reactive Data System in Practice
 
Where is my next jobs in the age of Big Data and Automation
Where is my next jobs in the age of Big Data and AutomationWhere is my next jobs in the age of Big Data and Automation
Where is my next jobs in the age of Big Data and Automation
 
2016 Data Science Salary Survey
2016 Data Science Salary Survey2016 Data Science Salary Survey
2016 Data Science Salary Survey
 
Slide 3 Fast Data processing with kafka, rfx and redis
Slide 3 Fast Data processing with kafka, rfx and redisSlide 3 Fast Data processing with kafka, rfx and redis
Slide 3 Fast Data processing with kafka, rfx and redis
 
Experience economy
Experience economyExperience economy
Experience economy
 
Introduction to Human Data Theory for Digital Economy
Introduction to Human Data Theory for Digital EconomyIntroduction to Human Data Theory for Digital Economy
Introduction to Human Data Theory for Digital Economy
 
How to build a data driven business in big data age
How to build a data driven business in big data ageHow to build a data driven business in big data age
How to build a data driven business in big data age
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 

Similar to Netty Cookbook - Chapter 1

The new (is it really ) api stack
The new (is it really ) api stackThe new (is it really ) api stack
The new (is it really ) api stackLuca Mattia Ferrari
 
Services in kubernetes-KnolX .pdf
Services in kubernetes-KnolX .pdfServices in kubernetes-KnolX .pdf
Services in kubernetes-KnolX .pdfKnoldus Inc.
 
Building Cloud-agnostic Serverless APIs
Building Cloud-agnostic Serverless APIsBuilding Cloud-agnostic Serverless APIs
Building Cloud-agnostic Serverless APIsPostman
 
MySQL X protocol - Talking to MySQL Directly over the Wire
MySQL X protocol - Talking to MySQL Directly over the WireMySQL X protocol - Talking to MySQL Directly over the Wire
MySQL X protocol - Talking to MySQL Directly over the WireSimon J Mudd
 
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdf
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdfMuleSoft_Meetup_Datagraph and Async APIs.pptx.pdf
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdfVikalp Bhalia
 
Application Modernisation through Event-Driven Microservices
Application Modernisation through Event-Driven Microservices Application Modernisation through Event-Driven Microservices
Application Modernisation through Event-Driven Microservices confluent
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectChau Thanh
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservicesRon Barabash
 
Day in the life event-driven workshop
Day in the life  event-driven workshopDay in the life  event-driven workshop
Day in the life event-driven workshopChristina Lin
 
Webinar: Draw a line between HTTP/2 client and HTTP Client
Webinar: Draw a line between HTTP/2 client and HTTP ClientWebinar: Draw a line between HTTP/2 client and HTTP Client
Webinar: Draw a line between HTTP/2 client and HTTP ClientKnoldus Inc.
 
Modern VoIP in Modern Infrastructures
Modern VoIP in Modern InfrastructuresModern VoIP in Modern Infrastructures
Modern VoIP in Modern InfrastructuresGiacomo Vacca
 
Building high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftBuilding high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftRX-M Enterprises LLC
 
On component interface
On component interfaceOn component interface
On component interfaceLaurence Chen
 
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ Jitendra Bafna
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocolsDaniel Austin
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesAlexander Penev
 

Similar to Netty Cookbook - Chapter 1 (20)

The new (is it really ) api stack
The new (is it really ) api stackThe new (is it really ) api stack
The new (is it really ) api stack
 
Services in kubernetes-KnolX .pdf
Services in kubernetes-KnolX .pdfServices in kubernetes-KnolX .pdf
Services in kubernetes-KnolX .pdf
 
Building Cloud-agnostic Serverless APIs
Building Cloud-agnostic Serverless APIsBuilding Cloud-agnostic Serverless APIs
Building Cloud-agnostic Serverless APIs
 
MySQL X protocol - Talking to MySQL Directly over the Wire
MySQL X protocol - Talking to MySQL Directly over the WireMySQL X protocol - Talking to MySQL Directly over the Wire
MySQL X protocol - Talking to MySQL Directly over the Wire
 
JUG louvain websockets
JUG louvain websocketsJUG louvain websockets
JUG louvain websockets
 
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdf
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdfMuleSoft_Meetup_Datagraph and Async APIs.pptx.pdf
MuleSoft_Meetup_Datagraph and Async APIs.pptx.pdf
 
Monkey Server
Monkey ServerMonkey Server
Monkey Server
 
Application Modernisation through Event-Driven Microservices
Application Modernisation through Event-Driven Microservices Application Modernisation through Event-Driven Microservices
Application Modernisation through Event-Driven Microservices
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat Architect
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
 
Day in the life event-driven workshop
Day in the life  event-driven workshopDay in the life  event-driven workshop
Day in the life event-driven workshop
 
Webinar: Draw a line between HTTP/2 client and HTTP Client
Webinar: Draw a line between HTTP/2 client and HTTP ClientWebinar: Draw a line between HTTP/2 client and HTTP Client
Webinar: Draw a line between HTTP/2 client and HTTP Client
 
Modern VoIP in Modern Infrastructures
Modern VoIP in Modern InfrastructuresModern VoIP in Modern Infrastructures
Modern VoIP in Modern Infrastructures
 
Building high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache ThriftBuilding high performance microservices in finance with Apache Thrift
Building high performance microservices in finance with Apache Thrift
 
Netty training
Netty trainingNetty training
Netty training
 
On component interface
On component interfaceOn component interface
On component interface
 
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
 
Twitter Finagle
Twitter FinagleTwitter Finagle
Twitter Finagle
 

More from Trieu Nguyen

Building Your Customer Data Platform with LEO CDP in Travel Industry.pdf
Building Your Customer Data Platform with LEO CDP in Travel Industry.pdfBuilding Your Customer Data Platform with LEO CDP in Travel Industry.pdf
Building Your Customer Data Platform with LEO CDP in Travel Industry.pdfTrieu Nguyen
 
Building Your Customer Data Platform with LEO CDP - Spa and Hotel Business
Building Your Customer Data Platform with LEO CDP - Spa and Hotel BusinessBuilding Your Customer Data Platform with LEO CDP - Spa and Hotel Business
Building Your Customer Data Platform with LEO CDP - Spa and Hotel BusinessTrieu Nguyen
 
Building Your Customer Data Platform with LEO CDP
Building Your Customer Data Platform with LEO CDP Building Your Customer Data Platform with LEO CDP
Building Your Customer Data Platform with LEO CDP Trieu Nguyen
 
How to track and improve Customer Experience with LEO CDP
How to track and improve Customer Experience with LEO CDPHow to track and improve Customer Experience with LEO CDP
How to track and improve Customer Experience with LEO CDPTrieu Nguyen
 
[Notes] Customer 360 Analytics with LEO CDP
[Notes] Customer 360 Analytics with LEO CDP[Notes] Customer 360 Analytics with LEO CDP
[Notes] Customer 360 Analytics with LEO CDPTrieu Nguyen
 
Leo CDP - Pitch Deck
Leo CDP - Pitch DeckLeo CDP - Pitch Deck
Leo CDP - Pitch DeckTrieu Nguyen
 
LEO CDP - What's new in 2022
LEO CDP  - What's new in 2022LEO CDP  - What's new in 2022
LEO CDP - What's new in 2022Trieu Nguyen
 
Lộ trình triển khai LEO CDP cho ngành bất động sản
Lộ trình triển khai LEO CDP cho ngành bất động sảnLộ trình triển khai LEO CDP cho ngành bất động sản
Lộ trình triển khai LEO CDP cho ngành bất động sảnTrieu Nguyen
 
Why is LEO CDP important for digital business ?
Why is LEO CDP important for digital business ?Why is LEO CDP important for digital business ?
Why is LEO CDP important for digital business ?Trieu Nguyen
 
From Dataism to Customer Data Platform
From Dataism to Customer Data PlatformFrom Dataism to Customer Data Platform
From Dataism to Customer Data PlatformTrieu Nguyen
 
Data collection, processing & organization with USPA framework
Data collection, processing & organization with USPA frameworkData collection, processing & organization with USPA framework
Data collection, processing & organization with USPA frameworkTrieu Nguyen
 
Part 1: Introduction to digital marketing technology
Part 1: Introduction to digital marketing technologyPart 1: Introduction to digital marketing technology
Part 1: Introduction to digital marketing technologyTrieu Nguyen
 
Why is Customer Data Platform (CDP) ?
Why is Customer Data Platform (CDP) ?Why is Customer Data Platform (CDP) ?
Why is Customer Data Platform (CDP) ?Trieu Nguyen
 
How to build a Personalized News Recommendation Platform
How to build a Personalized News Recommendation PlatformHow to build a Personalized News Recommendation Platform
How to build a Personalized News Recommendation PlatformTrieu Nguyen
 
How to grow your business in the age of digital marketing 4.0
How to grow your business  in the age of digital marketing 4.0How to grow your business  in the age of digital marketing 4.0
How to grow your business in the age of digital marketing 4.0Trieu Nguyen
 
Video Ecosystem and some ideas about video big data
Video Ecosystem and some ideas about video big dataVideo Ecosystem and some ideas about video big data
Video Ecosystem and some ideas about video big dataTrieu Nguyen
 
Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)Trieu Nguyen
 
Open OTT - Video Content Platform
Open OTT - Video Content PlatformOpen OTT - Video Content Platform
Open OTT - Video Content PlatformTrieu Nguyen
 
Apache Hadoop and Spark: Introduction and Use Cases for Data Analysis
Apache Hadoop and Spark: Introduction and Use Cases for Data AnalysisApache Hadoop and Spark: Introduction and Use Cases for Data Analysis
Apache Hadoop and Spark: Introduction and Use Cases for Data AnalysisTrieu Nguyen
 
Introduction to Recommendation Systems (Vietnam Web Submit)
Introduction to Recommendation Systems (Vietnam Web Submit)Introduction to Recommendation Systems (Vietnam Web Submit)
Introduction to Recommendation Systems (Vietnam Web Submit)Trieu Nguyen
 

More from Trieu Nguyen (20)

Building Your Customer Data Platform with LEO CDP in Travel Industry.pdf
Building Your Customer Data Platform with LEO CDP in Travel Industry.pdfBuilding Your Customer Data Platform with LEO CDP in Travel Industry.pdf
Building Your Customer Data Platform with LEO CDP in Travel Industry.pdf
 
Building Your Customer Data Platform with LEO CDP - Spa and Hotel Business
Building Your Customer Data Platform with LEO CDP - Spa and Hotel BusinessBuilding Your Customer Data Platform with LEO CDP - Spa and Hotel Business
Building Your Customer Data Platform with LEO CDP - Spa and Hotel Business
 
Building Your Customer Data Platform with LEO CDP
Building Your Customer Data Platform with LEO CDP Building Your Customer Data Platform with LEO CDP
Building Your Customer Data Platform with LEO CDP
 
How to track and improve Customer Experience with LEO CDP
How to track and improve Customer Experience with LEO CDPHow to track and improve Customer Experience with LEO CDP
How to track and improve Customer Experience with LEO CDP
 
[Notes] Customer 360 Analytics with LEO CDP
[Notes] Customer 360 Analytics with LEO CDP[Notes] Customer 360 Analytics with LEO CDP
[Notes] Customer 360 Analytics with LEO CDP
 
Leo CDP - Pitch Deck
Leo CDP - Pitch DeckLeo CDP - Pitch Deck
Leo CDP - Pitch Deck
 
LEO CDP - What's new in 2022
LEO CDP  - What's new in 2022LEO CDP  - What's new in 2022
LEO CDP - What's new in 2022
 
Lộ trình triển khai LEO CDP cho ngành bất động sản
Lộ trình triển khai LEO CDP cho ngành bất động sảnLộ trình triển khai LEO CDP cho ngành bất động sản
Lộ trình triển khai LEO CDP cho ngành bất động sản
 
Why is LEO CDP important for digital business ?
Why is LEO CDP important for digital business ?Why is LEO CDP important for digital business ?
Why is LEO CDP important for digital business ?
 
From Dataism to Customer Data Platform
From Dataism to Customer Data PlatformFrom Dataism to Customer Data Platform
From Dataism to Customer Data Platform
 
Data collection, processing & organization with USPA framework
Data collection, processing & organization with USPA frameworkData collection, processing & organization with USPA framework
Data collection, processing & organization with USPA framework
 
Part 1: Introduction to digital marketing technology
Part 1: Introduction to digital marketing technologyPart 1: Introduction to digital marketing technology
Part 1: Introduction to digital marketing technology
 
Why is Customer Data Platform (CDP) ?
Why is Customer Data Platform (CDP) ?Why is Customer Data Platform (CDP) ?
Why is Customer Data Platform (CDP) ?
 
How to build a Personalized News Recommendation Platform
How to build a Personalized News Recommendation PlatformHow to build a Personalized News Recommendation Platform
How to build a Personalized News Recommendation Platform
 
How to grow your business in the age of digital marketing 4.0
How to grow your business  in the age of digital marketing 4.0How to grow your business  in the age of digital marketing 4.0
How to grow your business in the age of digital marketing 4.0
 
Video Ecosystem and some ideas about video big data
Video Ecosystem and some ideas about video big dataVideo Ecosystem and some ideas about video big data
Video Ecosystem and some ideas about video big data
 
Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)
 
Open OTT - Video Content Platform
Open OTT - Video Content PlatformOpen OTT - Video Content Platform
Open OTT - Video Content Platform
 
Apache Hadoop and Spark: Introduction and Use Cases for Data Analysis
Apache Hadoop and Spark: Introduction and Use Cases for Data AnalysisApache Hadoop and Spark: Introduction and Use Cases for Data Analysis
Apache Hadoop and Spark: Introduction and Use Cases for Data Analysis
 
Introduction to Recommendation Systems (Vietnam Web Submit)
Introduction to Recommendation Systems (Vietnam Web Submit)Introduction to Recommendation Systems (Vietnam Web Submit)
Introduction to Recommendation Systems (Vietnam Web Submit)
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Netty Cookbook - Chapter 1