SlideShare a Scribd company logo
1 of 127
Download to read offline
( )
Netty
JJUG CCC 2018 Spring
#jjug #ccc_i7
@mike_neck
•
•twitter: @mike_neck
•https://github.com/mike-neck
•L is B
• Swift
Netty
Netty
•
•Netty
•
1.Netty
2.Java API Netty
1.OIO(Old Blocking I/O)
2.NIO(Non-blocking I/O)
3.Netty
3.Netty
4.Netty
5.
• I/O(Input/Output)
I/O I/O
•
•
Netty
Netty
•
•Java : java version “10” 2018-03-20
•Netty : 4.1.24.Final
1. Netty
Netty (1)
•Netty
/
•
• /CPU
Netty (2)
•
•Elasticsearch
•Akka
•Finagle
•Gatling
Netty (3)
•blocking I/O non-
blocking I/O
•
•
Norman Maurer in Netty in Action 2016
Our primary goal has been to make Netty
accessible to the broadest range of
developers.
2. Java API
Netty
Netty
Java API I/O(1)
•JDK 1.0 java.net
API
•accept / read / write
API
•
(block)
• OIO (Old blocking I/O)
Java API I/O(2)
•Java 1.4 java.nio.channels
API
•select( epoll/kqueue)
API
•
• NIO(New Non-blocking I/O)
2-1. OIO
(Old blocking I/ O)
Java API Netty
OIO Echo
1.
2. (accept)
3. (read)
4.
5. (write)
6.
OIO Echo
class EchoServer {
public static void main(String[] args) {
var serverSocket = new ServerSocket(8000); //(1)
while(true) {
Socket socket = serverSocket.accept(); // (2)
var reader = toBufferedReader(socket.getInputStream());
var writer = toPrintWriter(socket.getOutputStream());
String line = reader.readLine(); // (3)
System.out.println(line); // (4)
writer.println(line); // (5)
socket.close(); // (6)
}
}
}
OIO Echo
ServerSocketaccept
ServerSocket accept
OIO Echo
ServerSocketaccept
accept
Socket
Socket
OIO Echo
ServerSocketaccept
Socket read
Socket
read
OIO Echo
ServerSocketaccept
Socket
read
App
OIO Echo
ServerSocketaccept
Socket write
write
Socket
read
App
write
OIO Echo
ServerSocketaccept
write
Socket close
close
Socket
read
App
write
close
OIO Echo
ServerSocketaccept
Socket
read
App
write
1 ServerSocket
OIO Echo
(?)
ServerSocketaccept
Socket
read
App
write
accept 1
read/write
ExecutorService exec = Executors.newFixedThreadPool(THREAD_NUM);
var serverSocket = new ServerSocket(8000); //(1)
while(true) {
Socket socket = serverSocket.accept(); // (2)
exec.submit(() -> {
var reader = toBufferedReader(socket.getInputStream());
var writer = toPrintWriter(socket.getOutputStream());
String line = reader.readLine(); // (3)
System.out.println(line); //(3)
writer.println(line); // (4)
socket.close();
});
}
OIO Echo
(?)
Thread
Socket App
Thread
Socket App
Thread
Socket App
Thread
…
Thread
Socket App
Thread
Socket App
Thread
Socket App
Thread
…
Thread
Socket App
Thread
Socket App
Executor Queue
Socket
App
Socket
App
Socket
App
Executor
=
Thread …
Thread
Socket App
Thread
Socket App
Executor Queue
Socket
App
Socket
App
Socket
App
read / write Thread
Socket
App
…
Thread
Socket App
Thread
Socket App
Executor Queue
Socket
App
Socket
App
Socket
App
Socket
App
OIO
• ( )
• read/write/close
•
read/write
( )
• /CPU
2-2. NIO
(Non-blocking I/ O)
Java API Netty
OIO(blocking )
…
• NIO (select
)
• I/O ( I/O
)
• I/O (accept /read /write )
( )
NIO Echo
1. ( ) I/O (OP_ACCEPT/OP_READ/
OP_WRITE)
2.
3. OP_ACCEPT
(OP_READ)
4. OP_READ
(OP_WRITE)
5. OP_WRITE
(OP_WRITE)
I/O
•Selector 4
•OP_READ - Channel
•OP_WRITE - Channel
•OP_CONNECT - Channel
(
)
•OP_ACCEPT - ServerSocketChannel (
) (
listen )
class EchoServer {
public static void main(String[] args) {
var channel = ServerSocketChannel.open();
channel.setOption(SO_REUSEADDR, true);
channel.bind(new InetSocketAddress(PORT));
channel.configureBlocking(false);
var selector = Selector.open();
channel.register(selector, SelectionKey.OP_ACCEPT);
runLoop(selector);
}
void runLoop(Selector selector) {
while(true) {
selector.select();
Set<SelectionKey> selectionKeys =
selector.selectedKeys();
for (var key: selectionKeys) {
if (key.isAcceptable()) accept(key, selector);
if (key.isReadable()) read(key);
if (key.isWritable()) write(key);
selectionKeys.remove(key);
}
}
OP_ACCEPT
void access(SelectionKey key, Selector selector) {
var serverSocketChannel =
(ServerSocketChannel) key.channel();
SocketChannel channel = serverSocketChannel.accept();
channel.configureBlocking(false);
channel.register(
selector,
SelectionKey.OP_READ,
ByteBuffer.allocate(1024));
}
OP_READ
OP_READ
void read(SelectionKey key) {
SocketChannel channel =
(SocketChannel) key.channel;
var buf = (ByteBuffer) key.attachment();
int size = channel.read(buf);
var bytes = new byte[size];
buf.flip().get(bytes);
buf.clear();
buf.put(handleMessage(bytes));
// read 1
key.interestOps(SelectionKey.OP_WRITE);
}
OP_WRITE
OP_WRITE
void write(SelectionKey key) {
SocketChannel channel = (SocketChannel) key.channel;
var buf = ((ByteBuffer) key.attachment()).flip();
channel.write(buf);
buf.compact();
if (buf.position() > 0) { // NW 1
key.interestOps(SelectionKey.OP_WRITE);
} else {
buf.clear();
channel.close();
}
}
NIO Echo
Selector
ServerSocketChannel
OP_ACCEPT
Selector ServerSocketChannel
(OP_ACCEPT)
NIO Echo
Selector
ServerSocketChannel
OP_ACCEPT
Selector#select I/O
select
NIO Echo
Selector
ServerSocketChannel
ServerSocketChannel
Selector
OP_ACCEPT
select
NIO Echo
Selector
ServerSocketChannel
accept SocketChannel
OP_READ Selector
SocketChannel
OP_ACCEPT
OP_READ
accept
NIO Echo
Selector
ServerSocketChannel
Selector#select I/O
SocketChannel
OP_ACCEPT
OP_READ
select
NIO Echo
Selector
ServerSocketChannel
OP_READ
Selector
SocketChannel
OP_ACCEPT
OP_READ
select
NIO Echo
Selector
ServerSocketChannelSelectionKey
SocketChannel
OP_ACCEPT
Application
OP_READ
ByteBuffer
read
NIO Echo
Selector
ServerSocketChannel
Socket Channel OP_WRITE
Selector
SocketChannel
OP_ACCEPT
Application
OP_WRITE
ByteBuffer
NIO Echo
Selector
ServerSocketChannel
Selector#select Socket writability
SocketChannel
OP_ACCEPT
Application
OP_WRITE
ByteBuffer
select
NIO Echo
Selector
ServerSocketChannel
Selector#select Socket
SocketChannel
OP_ACCEPT
Application
select
OP_WRITE
ByteBuffer
NIO Echo
Selector
ServerSocketChannel
(write)
SocketChannel
OP_ACCEPT
Application
select
OP_WRITE
ByteBuffer
NIO Echo
Selector
ServerSocketChannel
Selector
writability
SocketChannel
OP_ACCEPT
Application
OP_WRITE
ByteBuffer
NIO
Selector
read/write
SocketChannel App
select
OP_WRITE
SocketChannel App
SocketChannel App
OP_READ
OP_READ
NIO
•
• 1
• ByteBuffer
•OIO NIO
NIO
•
•
•ByteBuffer
•OIO NIO
•
…
API
NIO
Netty
Java API(NIO)
Netty
2-3. Netty
Java API Netty
Netty Echo
1. ChannelInboundHandlerAdapter
2. 1.
ChannelPipeline
3. 2.
Bootstrap
1. ChannelInboundHandlerAdapter
class EchoHandler extends ChannelInboundHandlerAdapter {
@Override public void channelRead(
ChannelContext ctx, Object msg) {
var buf = (ByteBuf) msg;
String message = buf.toString(UTF_8);
ByteBuf res = ctx.alloc().buffer();
res.writeCharSequence(message, UTF_8);
ctx.writeAndFlush(res);
}
}
channelRead OP_READ
byte[] String
ByteBuf
Netty
2. EchoHandler
ChannelPipeline
class InitHandler
extends ChannelInitializer<Channel> {
@Override
protected void initChannel(Channel ch) {
ch.pipeline()
.addLast(new EchoHandler());
}
}
ChannelPipeline 1
3.
ServerBootstrap
class EchoServer {
public static void main(String[] args) {
var parent = new NioEventLoopGroup();
var child = new NioEventLoopGroup();
var bootstrap = new ServerBootstrap();
bootstrap.group(parent, child)
.channel(NioServerSocketChannel.class)
.localAddress(8000)
.childHandler(new InitHandler());
ChannelFuture future = bootstrap.bind().sync();
future.channel().closeFuture().sync();
}
}
ServerBootstrap
blocking I/O
NIO
3.
ServerBootstrap
class EchoServer {
public static void main(String[] args) {
var parent = new NioEventLoopGroup();
var child = new NioEventLoopGroup();
var bootstrap = new ServerBootstrap();
bootstrap.group(parent, child)
.channel(NioServerSocketChannel.class)
.localAddress(8000)
.childHandler(new InitHandler());
ChannelFuture future = bootstrap.bind().sync();
future.channel().closeFuture().sync();
}
}
Netty …
3. Netty
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
Channel
• (SocketChannel)
(ServerSocketChannel)
• I/O (accept/bind/
connect/read/write)
Channel
NioServerSocketChannel
Channel
ServerSocketChannel SocketChannel
NioSocketChannel
extends extends
implements implements
(accept)
Channel Channel(read/write/close/connect)
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
ChannelFuture
•NIO non-blocking API I/O
•Netty
Future(ChannelFuture)
• (write/close)
ChannelFutureListener
ChannelFuture
ChannelFuture
Channel
(1)1 

write
ChannelFuture
Channel
(1)1 

write
ChannelFuture
(2) return
ChannelFuture
Channel
(1)1 

write
ChannelFuture
(2) return
write
write
1
2
(3) I/O write
ChannelFuture
Channel
(1)1 

write
ChannelFuture
(2) return
write
write
1
2 (4)
or
(3) I/O write
ChannelFuture
Channel
(1)1 

write
ChannelFuture
(2) return
write
write
1
2 (4)
or
(3) I/O write
ChannelFutureListener
(5)
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
ChannelHandler
•ChannelHandler SocketChannel (OP_READ/OP_WRITE)
• TCP/UDP
(HTTP/WebSocket/SSL)
• ChannelHandler
•ChannelHandler I/O
•ChannelInboundHandler : I/O (read)
•ChannelOutboundHandler : I/O (write)
ChannelPipeline
•ChannelPipeline 1 Channel 1
•Channel
•ChannelHandlerContext
ChannelHandler
•ChannelPipeline Channel
ChannelHandler
Channel
ChannelPipeline
Channel
ServerSocketChannel accept Channel
ChannelPipeline
Channel
ChannelPipeline
Channel
Inbound
Inbound
Outbound
Outbound
Inbound
ChannelInitializer ChannelHandler
Channel
ChannelPipeline
Channel
Inbound
Outbound
Channel EventLoopGroup 1 EventLoop
Inbound
Outbound
Inbound
EventLoop
Channel
ChannelPipeline
Channel
Outbound
Selector OP_READ
Outbound
EventLoop
OP_READ
Inbound
Inbound
Inbound
Channel
ChannelPipeline
Channel
Inbound
OP_WRITE EventLoop
Inbound
Inbound
EventLoop
OP_WRITE
Outbound
Outbound
ChannelInboundHandler
channelRegistered
accept Channel
EventLoop
channelRead
OP_READ ->
(1 )
channelReadComplete
(channelRead)
exceptionCaught
ChannelInboundHandler
ChannelInboundHandler
byte[]
ChannelInboundHandler
channelRead
ChannelHandlerContext
ChannelInboundHandler
ChannelInboundHandler
byte[]
ChannelInboundHandler
channelRead
channelRead byte[]
ChannelHandlerContext
ChannelInboundHandler
ChannelInboundHandler
String
byte[]
ChannelInboundHandler
channelRead
channelRead
channelReadComplete
byte[]
ChannelHandlerContext
ChannelInboundHandler
ChannelInboundHandler
String
byte[]
ChannelInboundHandler
byte[]
ChannelHandlerContext
fireChannelRead
String
channelRead
channelRead
channelReadComplete
ChannelInboundHandler
ChannelInboundHandler
String
byte[]
ChannelInboundHandler
byte[]
ChannelHandlerContext
fireChannelRead
String
String
channelRead
channelRead
channelReadComplete
channelRead
ChannelInboundHandler
ChannelInboundHandler
String
byte[]
ChannelInboundHandler
byte[]
ChannelHandlerContext
fireChannelRead
String channelRead
Method: POST
Path: /api/users
Content-Type: x-www-
form-urlencoded
name=Tom
String
channelRead
channelRead
channelReadComplete
ChannelOutboundHandler
ChannelOutboundHandler ChannelOutboundHandler
ChannelHandlerContext
class User
id=100
name=Tom
write
JSON
JSON
write
JSONwrite
byte[]
ChannelPipeline
ChannelHandler
•ChannelHandler
•ChannelInboundHandler head tail
•ChannelOutboundHandler tail head
•ChannelHandler ChannelHandlerContext
ChannelHandler
ChannelHandler
ChannelPipeline
ChannelHandler
ChannelPipeline
(1)
ChannelInboundHandler
(3)
ChannelInboundHandler
(2)
ChannelOutboundHandler
(4)
ChannelOutboundHandler
H T
ChannelInboundHandler
(1) -> (3)
ChannelOutboundHandler
(2) <- (4)
ChannelHandlerContext
ChannelPipeline
Inbound
Inbound
Outbound
Outbound
H T
Context Context Context Context
fireRead Tail ChannelInboundHandler
ChannelHandlerContext
ChannelPipeline
Inbound
Inbound
Outbound
Outbound
H T
Context Context Context Context
write Head ChannelOutboundHandler
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
EventLoop
•EventLoop 1 Thread Channel
•EventLoop EventLoopGroup
• 2 EventLoopGroup
• 1 EventLoopGroup
• EventLoop Selector
ChannelPipeline
EventLoop Channel
EventLoopGroup
ThreadEventLoop
ThreadEventLoop
ThreadEventLoop
EventLoopGroup
EventLoop
EventLoop Channel
EventLoopGroup
ThreadEventLoop
Channel
ThreadEventLoop
ThreadEventLoop
Channel
EventLoop 1
ThreadEventLoop
EventLoop Channel
EventLoopGroup
ThreadEventLoop
Channel
ThreadEventLoop
ThreadEventLoop
1 EventLoop
Channel
ThreadEventLoopChannel
Channel
EventLoop
•EventLoop 1 Channel
•ChannelHandler
EventLoop Channel
Netty
• 1 Thread Channel
ThreadLocal
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
ByteBuf
•ByteBuf Java ByteBuffer
byte
•Java ByteBuffer 1
ByteBuf /
• ByteBuffer 1 ByteBuffer
( ) CompositeByteBuf
ByteBuf 1 ByteBuf
ByteBuffer
position limit
/ byte
/ byte
( ) byte
capacity
ByteBuf
readerIndex writerIndex
byte
byte
byte
capacity
ByteBuffer
ByteBuffer first = …
ByteBuffer second = …
var byteBuffer = ByteBuffer.allocate(
first.remaining(), second.remaining());
byteBuffer.put(first);
byteBuffer.put(second);
byteBuffer.flip();
ByteBuffer
ByteBuffer
contents1
ByteBuffer
contents2
ByteBuffer
contents1 contents2
(1) 

ByteBuffer
(2) ByteBuffer
ByteBuf
ByteBuf first = …
ByteBuf second = …
var byteBuf = Unpooled.compositeBuffer();
byteBuf.addComponents(true, first, second);
ByteBuf
CompositeByteBuf
ByteBuf
contents1
ByteBuf
contents2
1 ByteBuf
CompositeByteBuf
ByteBuf
or
channelRead
1. channelRead 2. channelRead 3. channelRead
channelReadComplete fireChannelRead
Netty
•Channel
•ChannelFuture
•ChannelHandler & ChannelPipeline
•EventLoop
•ByteBuf
•Bootstrap
Bootstrap
•
• or
•Bootstrap
• ( )
•Channel
•EventLoopGroup
• or
Bootstrap
• or
• ServerBootstrap
• Bootstrap
( )
• / Channel EventLoop
•
•TCP -
•UDP -
•SCTP -
•
•OIO - (Java I/O )
•NIO - (select epoll kqueue)
•epoll - (edge trigger/ Linux OS )
•kqueue - BSD OS
( )
•Channel
• /TCP/NIO : NioServerSocketChannel
• /TCP/NIO : NioSocketChannel
• /TCP/epoll : EpollServerSocketChannel
•EventLoop
• /NIO : NioEventLoopGroup x 2
• /OIO : OioEventLoopGroup x 1
• /epoll : EpollEventLoopGroup x 2
ServerBootstrap ( )
class EchoServer {
public static void main(String[] args) {
var parent = new NioEventLoopGroup();
var child = new NioEventLoopGroup();
var bootstrap = new ServerBootstrap();
bootstrap.group(parent, child)
.channel(NioServerSocketChannel.class)
.localAddress(8000)
.childHandler(new InitHandler());
ChannelFuture future = bootstrap.bind().sync();
future.channel().closeFuture().sync();
}
}
4. Netty
HTTP
SimpleChannelInboundHandler
class HttpEchoHandler extends
SimpleChannelInboundHandler<HttpRequest> {
@Override
protected void channelRead0(
ChannelHandlerContext ctx, HttpRequest req) {
//
}
}
HttpRequest
•uri
•method
•protocolVersion
•httpHeaders
•(POST
HttpPostRequestDecoder )
Initializer
class HttpEchoInitializer extends
ChannelInitializer<SocketChannel> {
@Override
public void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(65535));
pipeline.addLast(new ChunkedWriteHandler());
pipeline.addLast(new HttpEchoHandler());
}
}
• Netty
•HTTP
POST Body
•HTTP Real World HTTP
• 1 /
•
5.
• Netty OIO NIO
• Netty NIO
• Netty
/ /
(
)
• Spring WebFlux/Play-Akka
•Netty In Action
•Norman Maurer/Marvin Allen Wolfthal
•Manning 2016
•Java
•Scott Oaks
•Acroquest Technology/
•
• 2015
URL
•Netty Project
•http://netty.io/index.html
•https://github.com/netty/
netty

More Related Content

What's hot

Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能Yoshifumi Kawai
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409稔 小林
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSYoshifumi Kawai
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2Sho Nakazono
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用Takaaki Suzuki
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 

Similar to JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty

swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientShinya Mochida
 
Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Martijn Verburg
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyErsin Er
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSocketsGonzalo Ayuso
 
How to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveHow to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveAmiq Consulting
 
55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx FranceDavid Delabassee
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINAtrustinlee
 
Non blocking io with netty
Non blocking io with nettyNon blocking io with netty
Non blocking io with nettyZauber
 
What's new in Xamarin.iOS, by Miguel de Icaza
What's new in Xamarin.iOS, by Miguel de IcazaWhat's new in Xamarin.iOS, by Miguel de Icaza
What's new in Xamarin.iOS, by Miguel de IcazaXamarin
 
Cncf k8s_network_part1
Cncf k8s_network_part1Cncf k8s_network_part1
Cncf k8s_network_part1Erhwen Kuo
 
jQuery Mobile & PhoneGap
jQuery Mobile & PhoneGapjQuery Mobile & PhoneGap
jQuery Mobile & PhoneGapSwiip
 
Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Yulia Tsisyk
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net PerformanceCUSTIS
 

Similar to JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty (20)

swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClient
 
Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)
 
Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2
 
Asynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with NettyAsynchronous, Event-driven Network Application Development with Netty
Asynchronous, Event-driven Network Application Development with Netty
 
What Lies Beneath
What Lies BeneathWhat Lies Beneath
What Lies Beneath
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
 
Java
JavaJava
Java
 
Nio nio2
Nio nio2Nio nio2
Nio nio2
 
NIO and NIO2
NIO and NIO2NIO and NIO2
NIO and NIO2
 
How to Connect SystemVerilog with Octave
How to Connect SystemVerilog with OctaveHow to Connect SystemVerilog with Octave
How to Connect SystemVerilog with Octave
 
55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France55 new things in Java 7 - Devoxx France
55 new things in Java 7 - Devoxx France
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINA
 
Non blocking io with netty
Non blocking io with nettyNon blocking io with netty
Non blocking io with netty
 
What's new in Xamarin.iOS, by Miguel de Icaza
What's new in Xamarin.iOS, by Miguel de IcazaWhat's new in Xamarin.iOS, by Miguel de Icaza
What's new in Xamarin.iOS, by Miguel de Icaza
 
Cncf k8s_network_part1
Cncf k8s_network_part1Cncf k8s_network_part1
Cncf k8s_network_part1
 
jQuery Mobile & PhoneGap
jQuery Mobile & PhoneGapjQuery Mobile & PhoneGap
jQuery Mobile & PhoneGap
 
Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"Adam Sitnik "State of the .NET Performance"
Adam Sitnik "State of the .NET Performance"
 
State of the .Net Performance
State of the .Net PerformanceState of the .Net Performance
State of the .Net Performance
 
2015 bioinformatics bio_python
2015 bioinformatics bio_python2015 bioinformatics bio_python
2015 bioinformatics bio_python
 
Java NIO.2
Java NIO.2Java NIO.2
Java NIO.2
 

More from Shinya Mochida

サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情Shinya Mochida
 
IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話Shinya Mochida
 
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いクリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いShinya Mochida
 
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1Shinya Mochida
 
swift-log について
swift-log についてswift-log について
swift-log についてShinya Mochida
 
Java プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupJava プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupShinya Mochida
 
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugJJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugShinya Mochida
 
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたSpring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたShinya Mochida
 
Javaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめJavaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめShinya Mochida
 
JavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンJavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンShinya Mochida
 
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションgradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションShinya Mochida
 
On stream-lazy-computation
On stream-lazy-computationOn stream-lazy-computation
On stream-lazy-computationShinya Mochida
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるShinya Mochida
 
ドラクエの金銭感覚
ドラクエの金銭感覚ドラクエの金銭感覚
ドラクエの金銭感覚Shinya Mochida
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステムShinya Mochida
 
Intelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjIntelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjShinya Mochida
 

More from Shinya Mochida (20)

サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情
 
IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話
 
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いクリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
 
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1
jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1
 
swift-log について
swift-log についてswift-log について
swift-log について
 
Vim 入門
Vim 入門Vim 入門
Vim 入門
 
Java プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupJava プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線Meetup
 
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugJJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
 
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたSpring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
 
Javaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめJavaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめ
 
Kotlin as an AltJS
Kotlin as an AltJSKotlin as an AltJS
Kotlin as an AltJS
 
JavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンJavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターン
 
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションgradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーション
 
On stream-lazy-computation
On stream-lazy-computationOn stream-lazy-computation
On stream-lazy-computation
 
Stream脳の作り方
Stream脳の作り方Stream脳の作り方
Stream脳の作り方
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみる
 
ドラクエの金銭感覚
ドラクエの金銭感覚ドラクエの金銭感覚
ドラクエの金銭感覚
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム
 
Intelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjIntelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugj
 
i-Phone unit-test
i-Phone unit-testi-Phone unit-test
i-Phone unit-test
 

Recently uploaded

"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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
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
 

Recently uploaded (20)

"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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
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)
 

JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty