当前位置: 首页 > news >正文

成都电子商务网站建设公司网站开发服务合同

成都电子商务网站建设公司,网站开发服务合同,南宁专业做网站,不相关的网站做单项链接可以吗这篇文章我们正式开始学习 Netty#xff0c;在入门之前我们还是需要了解什么是 Netty。 什么是 Netty 为什么很多人都推崇 Java boy 去研究 Netty#xff1f;Netty 这么高大上#xff0c;它到底是何方神圣#xff1f; 用官方的话说#xff1a;Netty 是一款异步的、基于事…这篇文章我们正式开始学习 Netty在入门之前我们还是需要了解什么是 Netty。 什么是 Netty 为什么很多人都推崇 Java boy 去研究 NettyNetty 这么高大上它到底是何方神圣 用官方的话说Netty 是一款异步的、基于事件驱动的网络应用程序框架用以快速开发高性能、高可靠性的网络 IO 程序。 为什么要使用 Netty 呢因为使用原生的 Java NIO 非常不爽它存在一系列的问题比如 使用 Java NIO 需要了解很多概念而且 API 非常繁琐。使用 Java NIO 编程复杂一不小心就会 Bug 横飞。开发工作量和难度也很大例如我们要处理断开重连、网络闪断、半包读写、网络拥塞、异常处理等等异常情况处理起来难度比较大。需要非常熟悉 Java 多线程和网络相关知识点才能编写一个高质量的 Java NIO 程序。JDK NIO 的 Bug例如臭名昭著的 Epoll Bug它会导致 Selector 空轮询最终导致 CPU 100%。 使用 Netty都解决了上面的问题它具备如下几个优点 容易上手Netty 是 Java NIO 进行了封装API 使用简单开发门槛相对较低。功能强大预置多种编解码功能支持多种主流协议底层 IO 模型随意切换等等。高性能精心设计的 Reactor 线程模型支持高并发优秀的内存模型减少了资源的消耗。设计优雅灵活且可扩展的事件模型可以清晰地分离关注点高度可定制化的线程模型粘包/粘包、异常检测等机制将我们从繁重的细节中解脱只需关注业务逻辑。社区活跃Netty 是目前最为活跃的开源项目之一版本迭代周期短bug 修复速度快。安全完整的 SSL/TLS 和 StartTLS 支持。质量有保障经过大规模的商业应用考验质量得到了充分的验证健壮性无比强大放心使用吧。 Hello World 接下来我们用 Netty 来实现我们的第一个应用程序Hello World。该 Hello World 程序大明哥做到尽可能简单理解不了没有关系能跑起来就行毕竟是第一个 demo。 注大明哥写这篇文章时 Netty 最新版本为4.1.77所以后面所有文章 Netty 版本都是基于 4.1.77包括源码解析。 引入 Netty dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.77.Final/version /dependency服务端 服务端的逻辑非常简单监听 8081 端口当有客户端连接进来时打印“**已连接”同时打印客户端发送过来的消息。 public class HelloWorldServer {public static void main(String[] args) {// 创建服务端启动引导器ServerBootstrap bootstrap new ServerBootstrap();// 配置线程模型bootstrap.group(new NioEventLoopGroup());// 指定服务端的 IO 模型bootstrap.channel(NioServerSocketChannel.class);// 定义处理器 Handlerbootstrap.childHandler(new ChannelInitializerNioSocketChannel() {Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {// 解码ch.pipeline().addLast(new StringDecoder());ch.pipeline().addLast(new ChannelInboundHandlerAdapter(){Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {System.out.println(ctx.channel() ,hello world);}Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {System.out.println(new Date() msg);}});}});// 绑定 8081 端口bootstrap.bind(8081);} }大明哥依次解释上面代码 ServerBootstrap bootstrap new ServerBootstrap();创建服务端启动引导器ServerBootstrap 将用于引导服务端的启动工作。bootstrap.group(new NioEventLoopGroup());给引导器配置一个线程组也就是 Netty 的线程模型我们知道 Netty 是基于 Reactor 的线程模型这里使用的单线程模型即接受连接和业务处理都是使用同一个线程。bootstrap.channel(NioServerSocketChannel.class);指定服务端的 IO 模型这里我们定义的是 NIO当然你也可以使用 BIOOioServerSocketChannel.class但是一般都不推荐因为 Netty 的优势就在于 NIO。bootstrap.childHandler()这里是定义业务逻辑处理器简单来说就是客户端向服务端做的操作连接、读、写服务端都是在这里进行处理的。bootstrap.bind(8081)绑定 8081 端口 一个最简单的 Netty 服务单程序就写完了。 客户端 客户端就做一件事连接服务端然后不停地往服务端发送 “hello world”。 public class HelloWorldClient {public static void main(String[] args) throws InterruptedException {// 客户端引导器Bootstrap bootstrap new Bootstrap();// 配置线程组bootstrap.group(new NioEventLoopGroup());// 指定 IO 类型为 NIObootstrap.channel(NioSocketChannel.class);// 配置 IO 处理器bootstrap.handler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());}});// 建立连接Channel channel bootstrap.connect(127.0.0.1,8081).channel();// 发送消息while (true) {channel.writeAndFlush(hello world..);TimeUnit.SECONDS.sleep(5);}} }客户端与服务端的逻辑差不多只不过它使用的是 BootstrapBootstrap 为客户端启动的引导器它负责启动客户端和连接服务端。创建引导器后就和服务端一样了需要配置线程模型指定 IO 类型配置 IO 处理器最后与服务端建立连接。 bootstrap.connect(127.0.0.1,8081)connect() 方法与服务端进行连接这里需要注意 connect() 方法是一个异步方法它返回的是 ChannelFuture调用 channel() 方法可以获取到对应的 channel代码里面这种方式处理不是很优雅我们后续再来讲。channel.writeAndFlush()向服务端发送消息。 到这里一个简单的 Netty 应用就完成了是不是比使用 NIO 简便很多也非常清晰。 运行结果 从服务端打印的日志可以看出当客户端连接服务端后打印日志[id: 0xee05e542, L:/127.0.0.1:8081 - R:/127.0.0.1:53354],hello world然后每隔 5 秒钟输出 hell world这和我们开始的预期一样。 可能小伙伴们对上面的代码还不是很理解对上面的 ServerBootstrap、group() 、channel() 等方法都不明白什么意思没有关系因为这篇文章仅仅只是让你对 Netty 有一个简单的认识后面文章大明哥会将这些概念全部都讲的明明白白的。 【注】上面两段代码有些瑕疵但是为了小伙伴更加容易接受大明哥就尽可能地简单演示后面会基于它来优化 代码http://m6z.cn/5zJPpt
http://www.lebaoying.cn/news/5319.html

相关文章:

  • 做网站和网络推广国家企业信息公示网查询官网
  • 电子商务网站设计与网络营销实验手表网站推荐
  • 表白网站源码大全微信公众号里的小网站怎么做的
  • 郑州网站优化seohtml 公司网站 代码下载
  • 网站外包建设 请示如何把电脑改成服务器做网站
  • wordpress后台总是404云南官网优化
  • 成都 网站推广网站数据库怎么恢复
  • 营销型 手机网站制作物业管理系统和物业管理软件
  • 营销型网站的分类不包含杭州搜索引擎排名
  • 个人网站空间申请努力把网站建设成为
  • 地方网站方案个人网页背景图片大全
  • 网站推广方案怎么写的河北网站搜索排名优化方案
  • 如何用jsp做网站网站无法下载视频 怎么做
  • 找i满洲做卖房广告不收费的网站中国建筑官网超高层
  • 免费登记照制作app桂林seo哪家好
  • 佛山营销网站设计榆社网站建设
  • 泰国房产网站大全鲜花网站数据库建设
  • 昆山网站建设公司苏州爬虫科技wordpress连接更改
  • 做企业网站所要注意什么wordpress橫排友情链接
  • 做理财的网站网络功能设计
  • 中国建设网官方网站企业登录微信营销和微博营销的本质区别
  • 做淘宝要用的网站吗网站推广软件推广
  • 网站建设与管理A卷流动性管理
  • 全国货运信息网配货seo点击排名
  • 松江网站开发企业年金查询官网
  • 宁波做网站定制游戏网站策划
  • 深圳网站建设工作做网站有个名字叫小廖
  • 手机网站 搜索优化 百度创建一个网站 优帮云
  • 网站制作专家易语言怎么做网站
  • 绿色做环保网站的好处泰州网站整站优化