当前位置: 首页 > 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.w-s-a.com/news/541363/

相关文章:

  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设
  • 新网站怎么做网络推广怎么做企业网站排名
  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司
  • 微站直播平台杭州seo按天计费
  • seo 新旧网站 两个域名福州设计网站建设
  • 如何做网站客户端如何做网络营销网站
  • 苏州网站建设制度打鱼网站建设
  • 瓜子二手车直卖网上海小红书seo
  • 天津中小企业网站制作珠海做网站的
  • 网站排名影响因素最牛的科技网站建设
  • 长春网站建设公司怎么样电商网站建设与开发期末考试
  • 品牌网站建设搭建国内外网站建设
  • 辽宁人社app一直更新整站seo定制
  • 兰州网站建设论坛装修品牌
  • 云南省城乡住房与建设厅网站用什么网站可以做电子书
  • 自己电脑怎么做网站服务器吗0基础如何做网站
  • 做网站的股哥网络整合营销方案策划
  • 网站你懂我意思正能量晚上唯品会网站开发费用
  • 网站认证金额怎么做分录网页无法访问是怎么回事
  • 樟木头建网站的wordpress自适应吸附菜单
  • 番禺网站设计威海微网站建设
  • 新乡网站建设服务网站建设的点子
  • 赛罕区城乡建设局网站什么是新媒体运营