`
janeky
  • 浏览: 365952 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
  简述 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 ...
Global site tag (gtag.js) - Google Analytics