Java-Enumeration ( 枚举类)
摘要:Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和Hashtable类型集合元素的功能,不支持元素的移除操作。 Java8中Enumeration接口的源码: package java.util; public interface Enumeration<E>
阅读全文
posted @
2021-07-22 19:31
duanxz
阅读(1931)
推荐(0) 编辑
SPI的实现原理
摘要:前言: SPI是jdk内置的服务发现机制, 全称叫Service Provider Interface. SPI的工作原理, 就是ClassPath路径下的META-INF/services文件夹中, 以接口的全限定名来命名文件名, 文件里面写该接口的实现。 然后再资源加载的方式,读取文件的内容(接
阅读全文
posted @
2021-07-22 17:20
duanxz
阅读(1622)
推荐(0) 编辑
OS信号实现Java异步通知
摘要:OS信号实现Java异步通知本文将结合操作系统的信号机制,来尝试实现一个简单的,不依赖功能环境的Java异步通知功能。没有特殊说明,本文所有的示例,都是基于Linux。信号简介信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。通俗来讲,信号
阅读全文
posted @
2017-01-11 20:47
duanxz
阅读(870)
推荐(0) 编辑
http请求中java中的302和sendRedirect的区别
摘要:一、HTTP Get请求URL最大长度 各浏览器HTTP Get请求URL最大长度并不相同,几类常用浏览器最大长度及超过最大长度后提交情况如下: IE6.0 :url最大长度2083个字符,超过最大长度后无法提交。IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2
阅读全文
posted @
2016-04-29 10:45
duanxz
阅读(4740)
推荐(0) 编辑
Java链式方法 连贯接口(fluent interface)
摘要:有两种情况可运用链式方法: 第一种 除最后一个方法外,每个方法都返回一个对象 object2 = object1.method1(); object3 = object2.method2(); object3.method3(); 以上三行代码等价于如下链式方法 object1.method1().
阅读全文
posted @
2016-04-12 23:02
duanxz
阅读(1520)
推荐(0) 编辑
instanceof, isinstance,isAssignableFrom的区别
摘要://获得监听器集合,遍历监听器,可支持同步和异步的广播事件 instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: St
阅读全文
posted @
2015-11-12 11:21
duanxz
阅读(429)
推荐(0) 编辑
Java的自动装箱与拆箱(Autoboxing and unboxing)
摘要:一、什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 //自动装箱 Integer total = 99; //自动拆箱 int totalprim = total; 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 下面我们来看看
阅读全文
posted @
2015-10-15 09:32
duanxz
阅读(1372)
推荐(0) 编辑
RandomAcessFile、MappedByteBuffer和缓冲读/写文件
摘要:项目需要进行大文件的读写,调查测试的结果使我决定使用MappedByteBuffer及相关类进行文件的操作,效果不是一般的高。网上参考资源很多,如下两篇非常不错:1、花1K内存实现高效I/O的RandomAccessFile类2、Java中Stream和Memory-mapped File的I/O性...
阅读全文
posted @
2015-10-13 16:26
duanxz
阅读(3558)
推荐(0) 编辑
Java读写大文本文件(2GB以上)
摘要:如下的程序,将一个行数为fileLines的文本文件平均分为splitNum个小文本文件,其中换行符'r'是linux上的,windows的java换行符是'\r\n':package kddcup2012.task2.FileSystem; import java.io.BufferedIn...
阅读全文
posted @
2015-10-13 15:17
duanxz
阅读(54422)
推荐(3) 编辑
Java中的10颗语法糖
摘要:语法糖(Syntactic Sugar):也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的机会。 相对于C#及许多其他JVM来说,Java在现代编译语言之中属于“低糖语言”。尤其是JDK1.
阅读全文
posted @
2015-08-06 15:58
duanxz
阅读(8444)
推荐(0) 编辑
String,StringBuffer与StringBuilder的区别
摘要:String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同...
阅读全文
posted @
2015-07-16 14:49
duanxz
阅读(263)
推荐(0) 编辑
通过Java SE 7自带的监控服务(WatchService API)实现类似.NET FileWatcher的功能
摘要:Java SE 7 Tutorial中增加了一个监控目录变更情况的示例,用于介绍其新发布的WatchService API。 但对于用惯了.NET FileWatcher的用户而言,如果用于项目我认为它有两个欠缺: 1、应该提供一个独立线程后台运行机制,让这个监控过程自己在后台转,不影响前端处理 2
阅读全文
posted @
2014-10-20 11:25
duanxz
阅读(904)
推荐(0) 编辑
Java 的 Tuple 元组数据类型
摘要:元组类型,即 Tuple 常在脚本语言中出现,例如 Scala 的 ("Unmi", "china@qq.com", "blahbla")。元组可认为是象数组一样的容器,它的目的是让你方便构造和引用,例如 Pair 可认为是一个只能存两个元素的元组,像是个 Map; 真正的元组应该是可以任意多个元素
阅读全文
posted @
2014-04-04 14:03
duanxz
阅读(10307)
推荐(0) 编辑
thread-safe之3:SimpleDateFormat安全的时间格式化
摘要:想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多
阅读全文
posted @
2014-03-25 17:19
duanxz
阅读(1433)
推荐(0) 编辑
JVM插码之四:Java动态代理机制的对比(JDK 和CGLIB,Javassist,ASM)
摘要:一、class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: clas
阅读全文
posted @
2014-03-03 08:39
duanxz
阅读(2359)
推荐(1) 编辑
Java动态编程初探——Javassist
摘要:最近需要通过配置生成代码,减少重复编码和维护成本。用到了一些动态的特性,和大家分享下心得。 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Ja
阅读全文
posted @
2014-02-27 12:55
duanxz
阅读(20995)
推荐(3) 编辑
框架Mockito
摘要:一、什么是mock测试,什么是mock对象? 先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks 从图中可以清晰的看出 mock对象就是在调试期间用来作为真实对象的替代品。 mock测试就是在测试过程中
阅读全文
posted @
2014-02-12 14:52
duanxz
阅读(869)
推荐(0) 编辑
java代码规范学习
摘要:一、编程规约 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。 说明:Java的interface中,接口是比抽象类更高一层的
阅读全文
posted @
2013-12-03 15:34
duanxz
阅读(500)
推荐(0) 编辑
[转]java中byte转换int时为何与0xff进行与运算
摘要:在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) {String ret = "";for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[ i ] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperCase();}return ret;}上面是将byte[]转化十六进制的字符串,注意这里b[ i
阅读全文
posted @
2013-08-17 11:38
duanxz
阅读(454)
推荐(0) 编辑
怎样用java生成GUID与UUID
摘要:GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的IDJava代码import java.util.UUID; public class Test { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.pr...
阅读全文
posted @
2013-07-04 12:59
duanxz
阅读(47097)
推荐(1) 编辑