- 浏览: 365952 次
- 性别:
- 来自: 广州
最新评论
-
dwlxjz:
其实感觉楼主分享的这个只是简单的实现,从逻辑上来说的一个办法。 ...
网页游戏服务端-人物移动广播优化 -
ndsafhhlk:
CountDownLatch的例子为啥用两个CountDown ...
java多线程学习-java.util.concurrent详解(一) Latch/Barrier -
尘墨染:
每隔一段时间触发异常的那个不对啊,只触发了一次。
java多线程学习-java.util.concurrent详解(三)ScheduledThreadPoolExecutor -
sgq0085:
import static java.nio.file.Sta ...
JDK7新特性<六> 监听文件系统的更改 -
solemichael:
遗憾的是只能监控一层目录,下层不能监控了,哎。
JDK7新特性<六> 监听文件系统的更改
文章列表
简述
class文件是什么?稍微接触过java的同学都会说:就是java源文件编译后的.class文件。这句话虽然对,但是不够准确。其他语言,例如scala,jruby等,都可以编译出class文件。class文件是能被jvm识别和运行的一种文件格式。它是八位的二进制流文件。今天就跟大家一起学习class文件的格式
整体结构
用ultraedit等工具打开class文件,看到的都是二进制。首先要了解哪几位代表什么标志?这里用u1,u2,u4,u8,代表属性占用多少个字节。
格式,如下类型 名称 数量u4 magic 1u2 minor_version 1u2 major_versi ...
概述
JDK7引入了Asynchronous
I/O。I/O编程中,常用到两种模式:Reactor 和 Proactor。Reactor就是Java的NIO。当有事件触发时,我们得到通知,进行相应的处理。Proactor就是我们今天要讲的 AIO了。AIO进行I/O操作,都是异步处理,当事件完 ...
有时需要递归遍历一个文件树,比如查找一个文件夹内符合条件的文件,查找某一天创建的文件……。jdk7 nio包提供一个新的接口 FileVisitor。它提供了遍历文件树的各种操作。
preVisitDirectory - 一个路径被访问时调用
PostVisitDirectory - 一个路径的所有节点被访问后调用。如果有错误发生,exception会传递给这个方法
visitFile - 文件被访问时被调用。该文件的文件属性被传递给这个方法
visitFileFailed - 当文件不能被访问时,此方法被调用。Exception被传递给这个方法。 ...
我们用IDE(例如Eclipse)编程,外部更改了代码文件,IDE马上提升“文件有更改”。Jdk7的NIO2.0也提供了这个功能,用于监听文件系统的更改。它采用类似观察者的模式,注册相关的文件更改事件(新建,删除……),当事件发生的,通知相关的监听者。
java.nio.file.*包提供了一个文件更改通知API,叫做Watch Service API.
实现流程如下
1.为文件系统创建一个WatchService 实例 watcher
2.为你想监听的目录注册 watcher。注册时,要注明监听那些事件。
3.在无限循环里面等待事件的触发。当一个事 ...
对于框架的原理,可以阅读 Doug Lea 的文章“A Java Fork/Join Framework”:了解 Fork/Join 模式的实现机制和执行性能。
原理解析:fork分解,join结合。这个框架的本质是将一个任务分解成多个子任务,每个子任务用单独的线程去处理。这里用到了递归的思想。框架的结构图可以参考
图片来源(http://www.ibm.com/developerworks/cn/java/j-lo-forkjoin/index.html)
使用fork/join 框架很简单,
1.实现子问题的一般求解算法
2.如何分解问题
3.继承 R ...
java.io.File 不够完美吧。Jdk7提供了一套新的文件系统,会让你满意的。
先来聊聊java.io.File的七宗罪吧:)
1.很多方法失败时候都没有抛出异常,很难查找原因
2.方法 rename 在不同平台中运行有问题
3.不能真正支持 symbolic links
4.不能读取文件的更详细属性,比如权限,所有者……
5.访问 文件的 metadata 效率低下
6.很多方法性能不行。例如处理比较大的目录
7.无法递归查找文件树,以及存在循环的symbolic links可能造成问题
本次jdk7更新了很多新的a ...
JDBC4.1更新了两个新特性
1. Connection,ResultSet 和 Statement 都实现了Closeable 接口,所有在 try-with-resources 语句中调用,就可以自动关闭相关资源了
try (Statement stmt = con.createStatement()){
…
}
2. RowSet 1.1:引入RowSetFactory接口和RowSetProvider类,可以创建JDBC driver支持的各种 row sets
RowSetFactory myRowSetFactory = ...
JDK7对Java语法有少量更新,重点是在易用性和便捷性的改进。
1.二进制字面量
JDK7开始,终于可以用二进制来表示整数(byte,short,int和long)。使用二进制字面量的好处是,可以是代码更容易被理解。语法非常简单,只要在二进制数值前面加 0b或者0B
byte nByte = (byte)0b0001;
short nShort = (short)0B0010;
int nInt = 0b0011;
long nLong = 0b0100L;
2.数字字面量可以出现 ...
JDK7至今仍未正式发布。从官方的 milestone schedule(里程碑)可知,目前已经准备就绪,处于测试准备阶段,感兴趣
的可以从官方下载JDK7开发预览版。笔者根据官方的相关文档,整理了这个系列的文章。
准备
JDK7下载 http://download.java.net/jdk7/
API文档 http://download.java.net/jdk7/docs/api/
新特性
1. 虚拟机
支持动
最近跟业内的朋友交流,都有一个困惑,招不到合适的人。不要说经验丰富的开发者,就连合适的应届生都比较难招。好的应届生都被一流的公司校园招*先筛选走了。剩下的应届生中,要选择合适的,需要进行多方面的考核 ...
我们学习一门语言,包括编程语言,都要经过一些阶段,入门,熟练 精通。每个人在每个阶段耗费的时间不同。如何从一
个入门级别继续提高,除了实践,吸取一些前人经验是必须了。《Effective Java》将一些Java的高级主题一一列举,如
庖丁解牛般。是入门级Java Programmer 继续提高水平不可多得的资料。这里分析我的一些读书笔记吧。
----------------------------------------------------------------------------------------------------------------- ...
面向对象分析与设计,在软件工程中越来越重要了。可惜很多大学的计算机都没有这门课。大多人读书时候,入门学了
C++等面向对象语言,也只是停留在语言层面,对于面相对象的精髓一知半解。在实际项目中,分析建模也是完全凭感觉,
即使错了,也不明白为什么?这本书是 面向对象分析与设计 入门的捷径。它延续Head First 系列的风格,轻松易懂,在
不知不觉中,你就掌握了原理。在此强烈推荐!
一、良好的应用程序的基石
伟大软件的简易三步骤:
1.确认你的软件做客户要它完成的事。
2.运用基本的OO原则来增加软件的灵活性。
3.努力实现可维护 ...
为什么用NIO
优点:NIO以块的方式处理数据,NIO是以流(字节)方式处理。NIO将最耗时的IO操作(即填充和提取缓冲区)转移回操作统。
缺点:面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性
补充:JDK1.4以 ...
代码维护一直是软件开发中比较重要的一块内容。尤其是需要多次开发,更新频繁的项目。如何保证项目团队保证高
效的生产力?保持代码Clean是一个有效的途径。看了Bob大叔的《Clean Code》,受益匪浅。里面详细地描述了Clean
Code的特征,从命名,到函数,到类,到系统。既抓出了一些常见的问题,也提供的很多解决方案。保持Code Clean,
并在团队中实施,是每个团队管理人员的责任。
我在这里就不多介绍了,只是摘录了一些片段,希望大家看后,能够去读读这本书。也欢迎一起谈论Clean Code
5S标准
Sort 分类排序,搞清楚 ...
前面一篇blog http://janeky.iteye.com/category/124727
我们主要探讨了ScheduledThreadPoolExecutor定时器的使用
---------------------------------------------------------------------------------
7.BlockingQueue
“支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。“
这里我们主要讨论BlockingQueue的最典型实现:LinkedBlockingQueue ...