- 浏览: 370022 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
xujishen:
新入职 写道还是没很明白~~这个BigDecimal.ROUN ...
BigDecimal带精度的运算 -
542348257:
数字为long型的时候 好像处理有点问题
【无聊的笔记】将数字转换为中文读法 -
陈小妞:
当你输入100003980的时候在万位会多一个万字
【无聊的笔记】将数字转换为中文读法 -
stranger520:
可能有问题吧,举个例子: pacage1/User.class ...
java读取指定package下的所有class -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java学习——mina篇
Nio也就是继JDK1.4之后关于io的新特性的new Io,也就是传说中的无阻塞io。
public class MainServer {
private static final int port = 19999;
private static ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
ServerSocketChannel server = ServerSocketChannel.open();
Selector sel = Selector.open();
server.socket().bind(new InetSocketAddress(port));
//无阻塞
server.configureBlocking(false);
//绑定连接事件。
server.register(sel, SelectionKey.OP_ACCEPT);
System.out.println("server start");
while (true) {
sel.select();
Iterator iter = sel.selectedKeys().iterator();
while (iter.hasNext()) {
SelectionKey key = (SelectionKey) iter.next();
iter.remove();
// 判断是否有新的连接到达
if (key.isAcceptable()) {
System.out.println("有新连接");
SocketChannel sc = server.accept();
sc.configureBlocking(false);
sc.register(sel, SelectionKey.OP_READ);
}
//判断是否可读取
if (key.isReadable()) {
SocketChannel sc = (SocketChannel) key.channel();
sc.configureBlocking(false);
int count = sc.read(buffer);
if (count <= 0) {
System.out.println("客户端已经关闭了");
sc.close();
} else {
System.out.println("有数据过来了");
buffer.flip();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
String msg = new String(bytes);
System.out.println("收到信息>>" + msg);
buffer.clear();
}
}
}
}
}
}
public class MainClient {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
SocketChannel client = SocketChannel.open();
client.configureBlocking(false);
Selector selector = Selector.open();
client.register(selector, SelectionKey.OP_CONNECT);
client.connect(new InetSocketAddress("localhost", 19999));
String message = "client test";
ByteBuffer bb = ByteBuffer.allocate(message.length());
boolean flag = true;
while (flag) {
selector.select();
Iterator it = selector.selectedKeys().iterator();
while (it.hasNext()) {
SelectionKey key = (SelectionKey) it.next();
it.remove();
if (key.isConnectable()) {
System.out.println("客户端连接上");
SocketChannel sc = (SocketChannel) key.channel();
if (sc.isConnectionPending())
sc.finishConnect();
sc.register(selector, SelectionKey.OP_WRITE);
}
if (key.isWritable()) {
System.out.println("客户端可以写");
SocketChannel sc = (SocketChannel) key.channel();
bb.clear();
bb.put(message.getBytes());
bb.flip();
sc.write(bb);
//发完一条信息,退出发送,关闭连接。
flag = false;
}
}
}
//关闭连接
client.close();
}
}
发表评论
-
2013年技术愿望目标
2013-01-07 23:25 0一: 读源码 1:jetty 2:webx,spr ... -
jetty的http协议解析
2012-07-31 23:59 0上篇文章讲到:jetty的connection解析到hand ... -
jetty源码阅读之connection解析到handler调用
2012-07-29 21:58 0前言: 想要处理用户发出的http请求,首先得获得连接 ... -
jetty源码阅读之connector
2012-07-29 14:56 0AbstractConnector @Overr ... -
定时执行Timer的源码阅读
2012-02-22 18:51 1715Timer的实现原理: 1:timer简介; ... -
jetty翻译
2011-09-06 23:50 0异步等待 异 ... -
【转】mysql Host is blocked error错误解决方案
2011-08-01 14:40 2941Host is blocked because of ma ... -
java按值传递
2011-06-28 23:13 0来看看代码 packag ... -
【无聊的笔记】将数字转换为中文读法
2011-06-05 15:43 6282将阿拉伯数字的数变成我们常用的中文读法, 比如说: 1 ... -
用mina网络传输使用ObjectSerializationCodecFactory一个小注意点
2011-04-05 18:18 8718背景: 之前的 一篇介绍mina的博客中,提到通过mi ... -
jboss下的war包的context映射配置
2011-02-10 17:19 0一般web容器都可以在 deploy 目录下放多个war包, ... -
maven war plugin 的filter 配置。
2011-02-10 17:14 0具体可以参考,maven的官方配置。 http://m ... -
【why系列】内部类为什么访问外围内需要用final
2011-01-10 13:16 011111111111111 -
java命令行知多少(反正我知道的比较少)
2010-12-29 17:11 3858打开 %java_home%\bin 下面,看一堆的命令 ... -
【why系列】为什么序列化要实现一个空接口Serializable
2010-12-25 22:16 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 -
【why系列】为什么说java是不可变的对象
2010-12-25 22:15 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 package ... -
java线程总结
2010-12-23 15:25 01:java启动一个线程,会为每一个线程,分配一个 ... -
【监控】通过jmx获得系统的gc,内存情况
2010-11-27 21:52 6248通过jmx访问jvm知道的Mbean的一些信息,可以取得系统运 ... -
自动动手写原生态jmx,MbeanInfo,invoke
2010-11-16 22:07 2040使用jmx的东东主要包括下面几个步骤了: 发布j ... -
用spring连接jmx
2010-11-14 18:20 1818接着上一篇 “原生态连接jmx”的例子。 上一篇中,发 ...
相关推荐
Java NIO——Java NIO——Java NIO
本篇文章将带你深入理解NIO的源码,揭示其在大数据环境下的应用与优势。 NIO与传统的IO模型(-blocking I/O)相比,主要的区别在于它允许单线程处理多个通道(channels),而无需为每个通道创建一个单独的线程。...
Java NIO,全称为Non-blocking Input/Output,是Java在1.4版本引入的一个新特性,旨在提供一种更高效、更灵活的I/O操作方式。相比于传统的BIO(Blocking I/O),NIO允许我们以非阻塞的方式读写数据,提高了系统资源...
ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。ByteBuffer是一个字节缓冲区,可以存储字节序列。在NIO中,所有的数据读写都通过缓冲区进行,ByteBuffer与其他类型的Buffer...
这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...
首先,我们要理解Java NIO的核心组件之一——流。在Java的IO体系中,流是数据传输的抽象,它代表了数据的流向,可以是输入流(InputStream)或输出流(OutputStream)。然而,NIO中的流与传统的IO流有所不同,它们...
为此,Java 1.4 版本引入了新的I/O处理方式——NIO,即New IO。NIO提供了一种基于通道(Channel)和缓冲区(Buffer)的新模型。 - **通道(Channel)**:可以理解为数据的双向通道,支持数据的读取和写入。 - **缓冲...
11. **Java标准库**:Java提供丰富的标准库,如`java.util`、`java.io`、`java.nio`等,涵盖日期时间、集合、网络通信等多个领域。熟悉并熟练使用这些库可以提高开发效率。 12. **Java 8及以后的新特性**:Java 8...
这份"java面试——深圳-银盛支付-Java中级.zip"压缩包文件很可能包含了针对Java中级开发者的一系列面试问题和解答,旨在帮助求职者提升自己的技能,并在面试中脱颖而出。下面,我们将深入探讨一些可能涵盖的Java中级...
下面将根据"java面试——深圳-中国平安-Java中级.pdf"这份资料,提炼出一些核心的Java知识点。 1. **Java基础**: - **数据类型**:包括基本数据类型和引用数据类型,理解它们的区别和内存管理。 - **类与对象**...
"java面试——杭州-蚂蚁金服-资深工程师.zip" 这个标题表明这是一份关于Java技术的面试准备资料,特别针对的是在杭州的蚂蚁金服公司应聘资深工程师的职位。这意味着这份压缩包可能包含了针对Java语言、高级编程技巧...
这份"Java学习材料(499篇文章)"的压缩包显然包含了大量关于Java学习的资源,旨在帮助初学者和有经验的开发者提升技能。下面将详细讨论Java的一些关键知识点。 1. **Java基础**: 包括变量、数据类型、运算符、控制...
这个压缩包文件“java面试——杭州-阿里云-Java中级.zip”包含了一份详细的PDF文档,它可能涵盖了面试中常遇到的问题、技术要点以及解决策略。以下是基于Java中级工程师面试的一些关键知识点: 1. **基础语法**:...
7. **IO/NIO/BIO**:理解Java的输入输出模型,包括BufferedReader、FileInputStream等基本IO流,以及非阻塞IO(NIO)和BIO的区别和应用场景。 8. **网络编程**:理解TCP/IP协议,会编写Socket编程,了解HTTP协议,...
3. **JAVA IO与NIO** - 流的概念:字节流、字符流、输入流、输出流,以及缓冲流的使用。 - 文件操作:创建、读写、复制、删除等操作。 - NIO(New IO):通道、缓冲区、选择器的使用,理解异步I/O的优势。 4. **...
Java NIO,全称Non-Blocking Input/Output,是非阻塞式输入输出,它是Java从1.4版本开始引入的一种新的I/O模型,为Java程序员提供了处理I/O操作的新方式。NIO的主要特点是其能够使Java程序以更有效的方式处理I/O流,...
这份"java面试——杭州-蚂蚁金服-Java高级.zip"压缩包包含了一份详细的PDF文档,旨在帮助求职者准备这些面试。下面我们将深入探讨一些可能涉及的关键Java知识点。 1. **内存管理与垃圾回收**: - **内存区域**:...
在Java高级面试中,面试官通常会关注应聘者对核心概念、高级特性和实际问题解决能力的掌握。针对“深圳-OPPO-Java高级”这个主题,我们可以预想面试会涵盖多个关键知识点,包括但不限于: 1. **Java基础**: - 类...