摘要: 在实际问题中我们经常需要处理数据,单纯依靠数组来存储数据对开发来说非常困难,java提供了一套容器来方便我们编程。对java容器有一个整体的了解对我们来说非常重要,这样在需要特定容器时,不会手忙脚乱,本文主要介绍java的一些基本容器,而不要仅知道使用ArrayList。下面的图片是java中的简单容器分类 --图片来自网络 java定义了四种容器类型,List、Set、Queue和Map。 ... 阅读全文
posted @ 2015-06-29 00:03 Spanda 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 如果你正在写一个变量,它可能接下来将被另一个线程读取,或者正在读取一个上一次已经被另一个线程写过的变量,那么你需要使用同步,并且,读写线程都必须用相同的监视器锁同步。--Brain同步规则 synchronized 所有对象都自动含有单一的锁,当在调用一个对象的任意synchronized方法时,此对象将被加锁。 对于某个特定对象来说,所有的synchronized方法共享同一个锁。所以某... 阅读全文
posted @ 2015-06-14 21:28 Spanda 阅读(220) 评论(0) 推荐(0) 编辑
摘要: JAVA多线程,通常使用Executors的工厂方法来获得我们需要的线程池有newCachedThreadPool、newFixedThreadPool\newSingleThreadExecutor 阅读全文
posted @ 2015-06-09 21:00 Spanda 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 在类、方法、字段层面上的检测器的一般实现步骤 阅读全文
posted @ 2015-05-26 10:15 Spanda 阅读(546) 评论(0) 推荐(0) 编辑
摘要: FindBugs的检测器大多以下面五种方式来实现,且这五种实现方式findbugs都提供了接口: 检查类、方法、字段结构 微模式,简单的字节码模式 基于栈的模式 数据流分析 内部过程的分析 本文将介绍findbugs中stack-based pattern的实现过程和需要用到的接口。在这之前,我们必须要有一些必备的java知识,如JVM栈内存、JVM字节码指令、class文件结构。 ... 阅读全文
posted @ 2015-05-23 21:29 Spanda 阅读(1238) 评论(0) 推荐(0) 编辑
摘要: JDK 在1.4添加了新的Java IO类,用以提高IO速度。实际上,旧的IO包已经使用NIO重新实现过,因此即使不显式使用NIO,也能获得速度上的提高。先从例子说起: public class Nio { public static void main(String[] args) { // TODO Auto-generated method stub ... 阅读全文
posted @ 2015-05-21 14:47 Spanda 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 现实世界中我们总要处理不同的数据源: 字节数组。 String对象 文件。 “管道”,工作方式与实际管道相似。 一个有其他种类组成的序列。 其他数据源,如Interent连接等。 --From 《Java编程思想》 对于以上的数据源,Java io都提供了相对应的流处理类,如读取文件数据源FileInputStream,FileOutputStream,这些类都继承了InputS... 阅读全文
posted @ 2015-05-16 16:38 Spanda 阅读(370) 评论(0) 推荐(0) 编辑
摘要: BCEL是一个java字节码引擎库,有了他我们可以方便的表示出class文件的数据,另外BCEL还支持动态的创建和改变java class文件。这里我仅是初略的了解BCEL解释class文件的功能,为我后面学习FindBugs工具做准备,需要深入学习BCEL的创建、改变class文件的功能,可以查看... 阅读全文
posted @ 2015-05-15 17:59 Spanda 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 我们都知道Java文件经过编译后是一个二进制的class文件,但多数情况下我们更了解Java语法,它能帮助我们编写漂亮的代码,但知道Java更底层的东西我们就能写出更高效的代码。在研究findbugs工具时,由于其使用BCEL来处理class文件,这就要求我们对class文件的基本结构有一定的了解。... 阅读全文
posted @ 2015-05-14 23:23 Spanda 阅读(2259) 评论(0) 推荐(2) 编辑
摘要: 创建Eclipse项目在eclipse中新建一个Java项目,使用jdk 1.7,从版本3.0开始Findbugs要求Java 7。项目名称符合Java项目名即可,这里以FB Plugin为例。设置CLASSPATH为了开发一个detector,我们需要对FindBugs的detector进行扩展,... 阅读全文
posted @ 2015-05-11 20:36 Spanda 阅读(1251) 评论(0) 推荐(1) 编辑