- 浏览: 217779 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
服务器端:
// 1. 分配一个 ServerSocketChannel 文件描述符 serverChannel = ServerSocketChannel.open(); // 2. 从 ServerSocketChannel里获取一个对于的 socket serverSocket = serverChannel.socket(); // 3. 生成一个 Selector selector = Selector.open(); // 4. 把 socket 绑定到端口上 serverSocket.bind(new InetSocketAddress(iport)); // 5. serverChannel 未非bolck serverChannel.configureBlocking(false); // 6. 通过Selector注册ServerSocketChannel: 只能注册 accept // 而SocketChannel可以注册CONNENCT,READ,WRITE ; register -> validOps // 在各个子类实现不同 serverChannel.register(selector, SelectionKey.OP_ACCEPT); while (true) { try { // 获得IO准备就绪的channel数量 int n = selector.select(); // 没有channel准备就绪,继续执行 if (n == 0) { continue; } // 用一个iterator返回Selector的selectedkeys Iterator it = selector.selectedKeys().iterator(); // 处理每一个SelectionKey while (it.hasNext()) { SelectionKey key = (SelectionKey) it.next(); // 判断是否有新的连接到达 if (key.isAcceptable()) { // 返回SelectionKey的ServerSocketChannel ServerSocketChannel server = (ServerSocketChannel) key .channel(); System.out.println("有连接"); SocketChannel channel = server.accept(); registerChannel(selector, channel, SelectionKey.OP_READ); doWork(channel); } // 判断是否有数据在此channel里需要读取 if (key.isReadable()) { processData(key); } } // 删除 selectedkeys it.remove(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
客户端:
//打开socket通道 SocketChannel socketChannel = SocketChannel.open(); //设置非阻塞方式 socketChannel.configureBlocking(false); //打开选择器 Selector selector = Selector.open(); //注册连接到服务器socket动作 socketChannel.register(selector, SelectionKey.OP_CONNECT); //连接 socketChannel.connect( new InetSocketAddress("localhost",9988)); Set<SelectionKey> selectkeySets; SelectionKey selectionKey; Iterator<SelectionKey> iterator; //与服务器通信通道 SocketChannel clientChannel ; while(true){ //选择一组建,其相应的通道已为I/O操作准备就绪 //此方法执行处于阻塞模式的选择操作 selector.select(TIME_OUT); //返回此选择器的已选择键集。 selectkeySets = selector.selectedKeys(); iterator = selectkeySets.iterator(); while(iterator.hasNext()){ selectionKey = iterator.next(); if (selectionKey.isConnectable()) { clientChannel = (SocketChannel)selectionKey.channel(); // 判断此通道上是否正在进行连接操作。 // 完成套接字通道的连接过程。 if (clientChannel.isConnectionPending()) {//判断此通道上是否正在进行连接操作 clientChannel.finishConnect(); //完成套接字通道的连接过程 } clientChannel.register(selector, SelectionKey.OP_WRITE); }else if (selectionKey.isReadable()) { clientChannel = (SocketChannel)selectionKey.channel(); //将缓冲区清空 receiveBuffer.clear(); //读取服务器发送来的数据库到缓冲区 count = clientChannel.read(receiveBuffer);//count 读取到的字节数 if (count > 0) { clientChannel.register(selector, SelectionKey.OP_WRITE); } }else if (selectionKey.isWritable()) { sendBuffer.clear(); clientChannel = (SocketChannel)selectionKey.channel(); clientChannel.write(sendBuffer); System.out.println("客户端向服务器发送数据:"+sendText); clientChannel.register(selector, SelectionKey.OP_READ); } } }
发表评论
-
[Java性能剖析]远程调试配置
2014-07-10 10:48 740一、服务器操作如下: 找到文件:apache-tomcat-5 ... -
[jdk工具命令]Java SE 文档
2014-07-10 10:43 738oracle java se documentation j ... -
[jdk命令工具]jconsole远程项目监控
2014-07-10 10:37 734入口:catalina.sh JAVA_OPTS=&quo ... -
[jvm参数]JVM简单配置
2014-07-10 10:35 1181-Xms256m -Xmx512M -XX:MaxPermSi ... -
struts2 高危漏洞修复
2013-07-23 10:30 11121. /** * 过滤器 */ ... -
转:调查服务器响应时间的利器 tcprstat
2012-11-16 13:50 1443http://rdc.taobao.com/blog/cs/? ... -
跟我学Spring3 学习笔记七 初始化与销毁
2012-10-18 16:45 2041最后 遗留一个问题, ... -
跟我学Spring3 学习笔记六 注入
2012-10-18 14:31 2167跟我学Spring3 学习笔 ... -
动态生成class
2012-10-16 11:17 1316ASM 进行动态生成class import org.obj ... -
FtpUtil ftp工具类 过滤文件名
2012-10-10 16:25 6888工具类: import java.io.Buff ... -
java 高性能网络编程 mina
2012-09-28 10:52 1641服务器端: // 创建一个非阻塞的server端so ... -
代理 下载网页,挖掘数据
2012-09-25 13:51 837URL url = new URL("http:// ... -
java nio 编程学习 一
2012-09-21 16:08 1142Java.nio中的主要类ServerSocketChanne ... -
MongoDB 实战笔记 四
2012-09-20 14:12 1090import java.net.UnknownHostExce ... -
Json 添加元素拼接JSON字符串(转)
2012-09-20 13:55 7000package com.util; import jav ... -
MongoDB 实战笔记 三
2012-09-20 13:37 2409导出mongoexport -d m ... -
MongoDB 实战笔记 二
2012-09-20 11:45 887MongoDB 实战笔记 count 查询记录 ... -
MongoDB 实战笔记 一
2012-09-20 11:30 1134MongoDB 实战笔记 来建立一个 test 的集 ... -
Struts 学习笔记 二
2012-09-17 16:56 823login.jsp 登陆页面 <html:form ac ... -
Struts 学习笔记 一
2012-09-14 15:36 1108struts 1.2 涉及到的包: commons-b ...
相关推荐
高性能网络编程必备技能之IO与NIO阻塞分析..................
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了如何才能充分利用新的 I/O ...
Netty是一个高性能、异步的网络通信框架,它解决了JDK自带的NIO API使用复杂的问题,提供了更高的性能和更低的延迟。...通过学习Netty,可以提升我们的Java网络编程技能,为构建高性能的分布式系统打下坚实的基础。
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器。它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器,它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
泉州大白网络科技 目录 一.微信小程序申请 二.服务器设置(申请、部署、域名) 1.申请服务器 2.部署服务器 3.域名申请和配置 三.小程序发布 1.下载DEMO 2.下载开发工具并安装 3.配置参数 4.发布 完整说明 一.微信...
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器。它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
《Java网络编程》第三版会为你介绍Java网络API的最新特性。...本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIOAPI编写超高性能的服务器。它还涵盖了Java对网络代理、Webcookie和URL缓存的支持。
主要介绍Java语言中高性能处理的原理技术:NIO和Socket。非常详细地讲解了NIO中的缓冲区、通道、选择器、编码,以及使用Socket技术实现TCP/IP和UDP编程,细化到了演示全部SocketOption的特性,这对理解基于NIO和...
由于Java的高性能和稳定性,许多大型企业和互联网公司选择使用Java开发核心业务系统和高并发的Web应用程序。 此外,Java还具有丰富的类库和广泛的社区支持,开发者可以利用这些资源快速构建应用程序。Java类库提供...
Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器。它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精 心的设计Reactor线程模型,达到上述性能指标是完全有可能的。 下面我们就一起来看下...
本书展示了如何使用jsse编写安全的网络应用程序,解释了如何使用nio api编写超高性能的服务器。它还涵盖了java对网络代理、web cookie和url缓存的支持。 《java网络编程》不仅仅是对api的解释:它还展示了如何使用...
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器。它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一...
JAVANIO原理详解 高并发数据库(Mysql数据库性能优化) 软件质量管控 企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志管理) 数据库连接池...
本书展示了如何使用JSSE编写安全的网络应用程序,解释了如何使用NIO API编写超高性能的服务器。它还涵盖了Java对网络代理、Web cookie和URL缓存的支持。 《Java网络编程》不仅仅是对API的解释:它还展示了如何使用...
净额从原生Java的Io操作(BIO)到NIO编程,约会NIO高效并发框架——Netty,需要用到Java的基础知识(多线程,网络编程,IO,设计模式尤其是代理模式),介绍了Netty的高级架构设计和核心模块组件,Google上的...