atitit.高性能遍历 文本文件行 attilax总结

atitit.高性能遍历 文本文件行 attilax总结

文件读写有以下几种常用的方法 1

通常io读取2.5s 1

nio读取或许越高的.. 2

NIO通常采用Reactor模式,AIO通常采用Proactor模式
2

Java对BIO、NIO、AIO的支持: 2

BIO、NIO、AIO适用场景分析: 3

文件读写有以下几种常用的方法

1、字节读写(InputStream/OutputStream)

2、字符读取(FileReader/FileWriter)

3、行读取(BufferedReader/BufferedWriter)

文件大小:110m

行::55w

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

通常io读取2.5s

public static void main(String[] args) {

//SubstanceSaharaLookAndFeel

long t1=
new Date().getTime();

filex fx=new filex();

fx.readPerLine("e:\\ui.rar.txt", "gbk", new ScannerLineFilter4mail());

System.out.println("--f");

//List<String> li = filex.read2list_filtEmptyNstartSpace("c:\\em.txt");

System.out.println(new Date().getTime()-t1);

}

public class ScannerLineFilter4mail implements Closure {

int n=0;

@Override

public Object execute(Object arg0) throws Exception {

n++;

if(n%10000==0)

System.out.println("-----:"+n);

//  System.out.println(arg0);

return null;

}

nio读取或许越高的..

结果之一:NIO花费时间大概是BIO的三分之一少一点。(from site)

NIO通常采用Reactor模式,AIO通常采用Proactor模式

。AIO简化了程序的编写,stream的读取和写入都有OS来完成,不需要像NIO那样子遍历Selector。Windows基于IOCP实现AIO,Linux只有eppoll模拟实现了AIO。

Java7之前的JDK只支持NIO和BIO,从7开始支持AIO。

Java对BIO、NIO、AIO的支持:

·

Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

·

·

Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

·

·

Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

·

BIO、NIO、AIO适用场景分析:

·

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

·

·

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

·

·

AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

·

Java NIO 系列教程 - 特约稿件 - ITeye精华.htm

Java NIO和BIO 统计文件行数性能对比 - 开源中国社区.htm

BIO, NIO, AIO(转) - 赵磊的博客 - ITeye技术网站.htm

Java BIO、NIO、AIO 学习 - 力量来源于赤诚的爱! - 51CTO技术博客.htm

Java NIO 系列教程 - 特约稿件 - ITeye精华.htm

时间: 2024-10-12 14:59:06

atitit.高性能遍历 文本文件行 attilax总结的相关文章

Atitit 图像处理之理解卷积attilax总结

Atitit 图像处理之理解卷积attilax总结 卷积的运算可以分为反转.平移,相乘,求和. 在图像处理中,图像是一个大矩阵,卷积模板是一个小矩阵.按照上述过程,就是先把小矩阵反转,然后平移到某一位置,小矩阵的每一个小格对应大矩阵里面的一个小格,然后把对应小格里面的数相乘,把所有对应小格相乘的结果相加求和,得出的最后结果赋值给小矩阵中央小格对应的图像中小格的值,替换原来的值.就是上述说到的,反转.平移.相乘.求和.        一般图像卷积就是从第一个像素(小格)开始遍历到最后一个像素(小格

Atitit.执行cmd 命令行 php

Atitit.执行cmd 命令行 php 1. 执行cmd 命令行,调用系统命令的基础 1 1.1. 实际执行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题,程序文件读取编码设置 1 1.4. 回显乱码 2 2. exec,system等函数调用系统命令 2 3. php.ini,关掉安全模式safe_mode = off 3 4. 参考 3 1. 执行cmd 命令行,调用系统命令的基础 1.1. 实际执行模式 Processmonitor 检查.得到.. PID: 115372,

Atitit.数据库分区的设计&#160;attilax&#160;&#160;总结

Atitit.数据库分区的设计 attilax  总结 1. 分区就是分门别类的文件夹 (what)1 2. 分区的好处(y)1 3. 分区原则(要不要分区,何时分区)how2 4. 主要的分表类型有range,list,hash,key等2 5. 水平分区(Horizontal Partitioning) 垂直分区(Vertical Partitioning)3 6. 分区的操作4 7. 分区理论  并行数据库的体系结构4 8. 参考7 1. 分区就是分门别类的文件夹 (what) 分区的原理

Atitit.jquery 版本新特性attilax总结

Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: 4 ⒊更好的在 ie 6/7/8 上支持 html5: 4 ⒋切换动画更加直观: 4 ⒌匿名模块定义 awd 4 ⒍jQuery.Deferred 4 ⒎jQuery.isNumeric() 4 5. Jq1.8 5 5.1. jQuery 1.8 5 5.1.1. 可定制 5 5.1.2. 自动生

Atitit.常用分区api的attilax总结

1. Api 来源与oracle与mysql1 1.1. 分区定义partition by range (uid)  使用VALUES LESS THAN操作符来进行定1 1.1.1. mysql1 1.1.2. Oracle分区定义partition by range (uid)  使用VALUES LESS THAN操作符来进行定2 1.2. 分区按照hash2 1.2.1. Oracle语法2 1.3.  列表分区: partition by list().3 1.4. 分区的修改和合并3

atitit.词法分析的实现token attilax总结

atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2 2.1. 操作符(运算符 )::: 3 2.2. 4.界符:":"分号,"{}"大括号,单引号,双引号 3 3.  如何进行词法分析? 3 3.1. 使用Fsm状态机(自动机) 3 4. 词法分析器框架选型 4 4.1. 语法

Atitit.运行cmd 命令行 php

Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1.4. 回显乱码 2 2. exec,system等函数调用系统命令 2 3. php.ini.关掉安全模式safe_mode = off 3 4. 參考 3 1. 运行cmd 命令行,调用系统命令的基础 1.1. 实际运行模式 Processmonitor 检查.得到.. PID: 115372,

Atitit.注解解析(1)---------词法分析 attilax总结 java .net

Atitit.注解解析(1)---------词法分析 attilax总结  java .net 1. 应用场景:::因为要使用ui化的注解 1 2. 流程如下::: 词法分析(生成token流) >>>>语法分析(生成ast) >>解释执行... 2 3. 词法分析的框架,antlr 2 4. Fsm 状态机/// switch 2 5. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2 5.1. 操作符(运算符 )::: 2 5.2.

Atitit.js跨域解决方案attilax大总结&#160;后台java&#160;php&#160;c#.net的CORS支持

Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 3. jsonp ,2 4. CORS ,2 5. iframe+post3 6. 回调解决方案>>服务端推送dwr 反向ajax3 7. 服务器中转 3 8. Js跨3 9. 从所有的浏览器都支持来看,CORS将成为未来跨域访问的标准解决方案3 10. 参考4 1. 设置 document.do