SlideShare a Scribd company logo
( )
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

KafkaとPulsar
KafkaとPulsarKafkaとPulsar
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
 

What's hot (20)

KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetupこれで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 

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

swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClient
Shinya 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
 
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
Emertxe Information Technologies Pvt Ltd
 
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
Ersin Er
 
What Lies Beneath
What Lies BeneathWhat Lies Beneath
What Lies Beneath
Maurice Naftalin
 
Nodejs and WebSockets
Nodejs and WebSocketsNodejs and WebSockets
Nodejs and WebSockets
Gonzalo Ayuso
 
Java
JavaJava
NIO and NIO2
NIO and NIO2NIO 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
Amiq 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 France
David 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 MINA
trustinlee
 
Non blocking io with netty
Non blocking io with nettyNon blocking io with netty
Non blocking io with netty
Zauber
 
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_part1
Erhwen Kuo
 
jQuery Mobile & PhoneGap
jQuery Mobile & PhoneGapjQuery Mobile & PhoneGap
jQuery Mobile & PhoneGap
Swiip
 
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 Performance
CUSTIS
 
2015 bioinformatics bio_python
2015 bioinformatics bio_python2015 bioinformatics bio_python
2015 bioinformatics bio_python
Prof. Wim Van Criekinge
 
Java NIO.2
Java NIO.2Java NIO.2
Java NIO.2
*instinctools
 

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_c1
Shinya Mochida
 
swift-log について
swift-log についてswift-log について
swift-log について
Shinya Mochida
 
Vim 入門
Vim 入門Vim 入門
Vim 入門
Shinya Mochida
 
Java プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupJava プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線Meetup
Shinya 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 #jjug
Shinya Mochida
 
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたSpring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Shinya Mochida
 
Javaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめJavaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめ
Shinya Mochida
 
Kotlin as an AltJS
Kotlin as an AltJSKotlin as an AltJS
Kotlin as an AltJS
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-computation
Shinya Mochida
 
Stream脳の作り方
Stream脳の作り方Stream脳の作り方
Stream脳の作り方
Shinya 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

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 

Recently uploaded (20)

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 

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