日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

linux網(wǎng)絡(luò)配置命令 linux網(wǎng)絡(luò)配置的詳細(xì)過(guò)程( 四 )


public static void main(String[] args) {new NettyServer().serverStart();System.out.println("Netty server started !");}public void serverStart() {EventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup();ServerBootstrap b = new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new Handler());}});try {ChannelFuture f = b.localAddress(Constant.HOST, Constant.PORT).bind().sync();f.channel().closeFuture().sync();} catch (InterruptedException e) {e.printStackTrace();} finally {workerGroup.shutdownGracefully();bossGroup.shutdownGracefully();}}}class Handler extends ChannelInboundHandlerAdapter {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf = (ByteBuf) msg;ctx.writeAndFlush(msg);ctx.close();}@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();}}bossGroup 處理網(wǎng)絡(luò)請(qǐng)求的大管家(們),網(wǎng)絡(luò)連接就緒時(shí),交給workGroup干活的工人(們) 。
三、總結(jié)回顧

  • 同步/異步,連接建立后,用戶程序讀寫(xiě)時(shí),如果最終還是需要用戶程序來(lái)調(diào)用系統(tǒng)read()來(lái)讀數(shù)據(jù),那就是同步的,反之是異步 。Windows實(shí)現(xiàn)了真正的異步,內(nèi)核代碼甚為復(fù)雜,但對(duì)用戶程序來(lái)說(shuō)是透明的 。
  • 阻塞/非阻塞,連接建立后,用戶程序在等待可讀可寫(xiě)時(shí),是不是可以干別的事兒 。如果可以就是非阻塞,反之阻塞 。大多數(shù)操作系統(tǒng)都支持的 。
Redis,Nginx,Netty,Node.js 為什么這么香?這些技術(shù)都是伴隨Linux內(nèi)核迭代中提供了高效處理網(wǎng)絡(luò)請(qǐng)求的系統(tǒng)調(diào)用而出現(xiàn)的 。了解計(jì)算機(jī)底層的知識(shí)才能更深刻地理解I/O,知其然,更要知其所以然 。與君共勉!

推薦閱讀