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

江西南昌网站建设服务wordpress 导航菜单 居中

江西南昌网站建设服务,wordpress 导航菜单 居中,网站用什么技术做的,开发app需要哪些审批一、阻塞 阻塞模式下#xff0c;相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了#xff0c;暂停期间不会占用 cpu#xff0c;但线程相当于闲置 单线…一、阻塞 阻塞模式下相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了暂停期间不会占用 cpu但线程相当于闲置 单线程下阻塞方法之间相互影响几乎不能正常工作需要多线程支持 但多线程下有新的问题体现在以下方面 32 位 jvm 一个线程 320k64 位 jvm 一个线程 1024k如果连接数过多必然导致 OOM并且线程太多反而会因为频繁上下文切换导致性能降低 可以采用线程池技术来减少线程数和线程上下文切换但治标不治本如果有很多连接建立但长时间 inactive会阻塞线程池中所有线程因此不适合长连接只适合短连接。 服务端事例代码 // 使用 nio 来理解阻塞模式, 单线程 // 0. ByteBuffer ByteBuffer buffer ByteBuffer.allocate(16); // 1. 创建了服务器 ServerSocketChannel ssc ServerSocketChannel.open();// 2. 绑定监听端口 ssc.bind(new InetSocketAddress(8080));// 3. 连接集合 ListSocketChannel channels new ArrayList(); while (true) {// 4. accept 建立与客户端连接 SocketChannel 用来与客户端之间通信log.debug(connecting...);SocketChannel sc ssc.accept(); // 阻塞方法线程停止运行log.debug(connected... {}, sc);channels.add(sc);for (SocketChannel channel : channels) {// 5. 接收客户端发送的数据log.debug(before read... {}, channel);channel.read(buffer); // 阻塞方法线程停止运行buffer.flip();debugRead(buffer);buffer.clear();log.debug(after read...{}, channel);} } 客户端 SocketChannel sc SocketChannel.open(); sc.connect(new InetSocketAddress(localhost, 8080)); System.out.println(waiting...); 二、非阻塞 非阻塞模式下相关方法都会不会让线程暂停 在 ServerSocketChannel.accept 在没有连接建立时会返回 null继续运行 SocketChannel.read 在没有数据可读时会返回 0但线程不必阻塞可以去执行其它 SocketChannel 的 read 或是去执行 ServerSocketChannel.accept 写数据时线程只是等待数据写入 Channel 即可无需等 Channel 通过网络把数据发送出去 但非阻塞模式下即使没有连接建立和可读数据线程仍然在不断运行白白浪费了 cpu 数据复制过程中线程实际还是阻塞的AIO 改进的地方 服务器端demo代码客户端代码不变 // 使用 nio 来理解非阻塞模式, 单线程 // 0. ByteBuffer ByteBuffer buffer ByteBuffer.allocate(16); // 1. 创建了服务器 ServerSocketChannel ssc ServerSocketChannel.open(); ssc.configureBlocking(false); // 非阻塞模式 // 2. 绑定监听端口 ssc.bind(new InetSocketAddress(8080)); // 3. 连接集合 ListSocketChannel channels new ArrayList(); while (true) {// 4. accept 建立与客户端连接 SocketChannel 用来与客户端之间通信SocketChannel sc ssc.accept(); // 非阻塞线程还会继续运行如果没有连接建立但sc是nullif (sc ! null) {log.debug(connected... {}, sc);sc.configureBlocking(false); // 非阻塞模式channels.add(sc);}for (SocketChannel channel : channels) {// 5. 接收客户端发送的数据int read channel.read(buffer);// 非阻塞线程仍然会继续运行如果没有读到数据read 返回 0if (read 0) {buffer.flip();debugRead(buffer);buffer.clear();log.debug(after read...{}, channel);}} } 三、多路复用 单线程可以配合 Selector 完成对多个 Channel 可读写事件的监控这称之为多路复用。 多路复用仅针对网络 IO、普通文件 IO 没法利用多路复用 如果不用 Selector 的非阻塞模式线程大部分时间都在做无用功而 Selector 能够保证 有可连接事件时才去连接 有可读事件才去读取 有可写事件才去写入 限于网络传输能力Channel 未必时时可写一旦 Channel 可写会触发 Selector 的可写事件 好处 一个线程配合 selector 就可以监控多个 channel 的事件事件发生线程才去处理。避免非阻塞模式下所做无用功 让这个线程能够被充分利用 节约了线程的数量 减少了线程上下文切换 创建 Selector selector Selector.open(); 绑定 Channel 事件 也称之为注册事件绑定的事件 selector 才会关心 channel.configureBlocking(false); SelectionKey key channel.register(selector, 绑定事件); channel 必须工作在非阻塞模式 FileChannel 没有非阻塞模式因此不能配合 selector 一起使用 绑定的事件类型可以有 connect - 客户端连接成功时触发 accept - 服务器端成功接受连接时触发 read - 数据可读入时触发有因为接收能力弱数据暂不能读入的情况 write - 数据可写出时触发有因为发送能力弱数据暂不能写出的情况 监听 Channel 事件 可以通过下面三种方法来监听是否有事件发生方法的返回值代表有多少 channel 发生了事件 方法1阻塞直到绑定事件发生  常用 int count selector.select(); 方法2阻塞直到绑定事件发生或是超时时间单位为 ms int count selector.select(long timeout); 方法3不会阻塞也就是不管有没有事件立刻返回自己根据返回值检查是否有事件 int count selector.selectNow(); select 何时不阻塞 事件发生时 客户端发起连接请求会触发 accept 事件 客户端发送数据过来客户端正常、异常关闭时都会触发 read 事件另外如果发送的数据大于 buffer 缓冲区会触发多次读取事件 channel 可写会触发 write 事件 在 linux 下 nio bug 发生时 调用 selector.wakeup() 调用 selector.close() selector 所在线程 interrupt
http://www.hkea.cn/news/14464285/

相关文章:

  • 手机网站有什么要求Discuz采集到Wordpress
  • 做暖dnf动态ufo网站园林景观设计公司点评的网站和论坛
  • 网站建设的关键免费网站或软件
  • 带后台的html网站源码网络推广公司方案
  • 江阴做网站的企业dw怎么做秋季运动会网站
  • 深圳好的网站建设公司排名青岛企业网站建设公司
  • 学校建设服务网网站建设方案项目书贵阳市观山湖区网站建设
  • 怎么 给自己的网站做优化呢钦州做网站
  • 企业高端网站制作站长统计幸福宝网站统计
  • wap网站模板下载公众号注册
  • 张家港网站哪家做的好互联网品牌宣传推广服务公司
  • 网站后台编码注册城乡规划师协会
  • 优定软件网站建设关于网站建设的论文提纲
  • 网站建设课程报告论文网络营销视频
  • 做产品目录的网站网站的制作方法
  • 杭州做网站哪家公司好123网址之家118
  • 专业网站建设公江苏搜索引擎优化
  • asp网站模板免费下载sem论坛
  • 网站开发与设计实训报告摘要山东省城乡与住房建设厅网站
  • 做食品网站用什么颜色官方网站模板
  • 陈村建网站网站建设工作 方案
  • 网博士自助建站系统下载wordpress自定义搜索框
  • 苗木网站模版网页制作公司介绍图片
  • 如何查找织梦网站后台判断管理员wordpress
  • 虚拟机做局域网网站服务器配置自媒体做什么领域比较好
  • 交流网站建设项目背景图片在线制作编辑
  • 自己电脑做网站 带宽博客园网站开发
  • 菠菜网站怎么做推广官方建网站有哪些步骤
  • 长春个人网站制作公司重庆必去的十大景点
  • 网站建设的标语做设计需要素材的常用网站