`
BrokenDreams
  • 浏览: 249350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
68ec41aa-0ce6-3f83-961b-5aa541d59e48
Java并发包源码解析
浏览量:98092
社区版块
存档分类
最新评论
文章列表
        总结这个类之前,首先看一下Java引用的相关知识。Java的引用分为四种:强引用、软引用、弱引用和虚引用。         强引用:就是常见的代码中的引用,如Object o = new Object();存在强引用的对象不会被垃圾收集器回收。所以我们会在一些代码中看到显示切断强引用,以便回收相关对象的情况。 public void clear() { modCount++; // Let gc do its work for (int i = 0; i < size; i++) elementData[i] = null; siz ...
        今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数 ...
        本篇总结一下两个常用的集合类HashSet和LinkedHashSet。         它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序的集合。它们都扩展自java ...
        这篇总结一下java.util.IdentityHashMap。从类名上可以猜到,这个类本质应该还是一个散列表,只是前面有Identity修饰,是一种特殊的HashMap。         简单的说,IdentityHashMap和HashMap的区别在于对key的比较。         HashMap中会调用key的hashCode方法,hashCode方法可能会根据具体情况进行重写。在比较key时会用equals方法进行比较,equals方法也可能被重写。 public V put(K key, V value) { if (key == nul ...
        前面总结了java.util.HashMap,这篇来看一下HashMap的一个子类——java.util.LinkedHashMap。         先读了一下源码的注释,首先LinkedHashMap中所有的Entry组成了一个双向链表,该链表定义了内部数据的迭代顺序,通常是按key插入的顺序(最近插入的放到链表的末尾,覆盖操作不会影响链表顺序)。LinkedHashMap还提供了构造方法LinkedHashMap(int,float,boolean),如果第三个参数为true,那么内部数据的迭代顺序是按访问的某种顺序(访问时间由远到近),最近访问的数据会放到链表的末尾。这样 ...
        开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操 ...
        表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。         这篇要看一下java.util.ArrayDeque。从命名上看,它是一个由数组实现的双端队列。还是先看一下它实现了哪些接口。 public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Ser ...
        ArrayList的插入和删除元素的操作会花费线性时间,那么有没有插入和删除元素比较省时的集合呢,看下LinkedList这个实现。         老样子,先看看它实现了那些接口。 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable         之前看过的接口不看了。先看下java.util.Deque。 ...
        工作中经常会用到Java的集合类,最近不忙了,把相关知识总结一下,便于理解记忆。         打开java.util.ArrayList的源代码,首先映入眼帘的是@author  Josh Bloch(相对于源码,本人更喜欢看故事 ,每次看到一份源码, ...
        由于客户环境为64位windows系统,开发环境一直用32位。tomcat使用6.0.20非安装版。部署时发现在64位系统下,注册服务后无法正常启动服务(直接运行startup.bat可以成功启动tomcat),日志中报错信息为: 引用 [174  javajni.c] [error] %1 不是有效的 Win32 应用程序。 [994  prunsrv.c] [error] Failed creating java D:\java\jre\bin\server\jvm.dll [1269 prunsrv.c] [error] ServiceStart returned 1 ...
        工作中有一段时间经常使用Java的正则表达式,整理一下,做个总结。         JDK中提供了2个类来支持正则表达式,分别是java.util.regex.Pattern和java.util.regex.Matcher。前者表示一个模式,后者表示一个匹配器。         我们在日常使用中,一般会根据需要,建立一个模式。模式的构建通过下面方法: public static Pattern compile(String regex) { return new Pattern(regex, 0); }     或者 public stat ...

Java获取网络时间

       最近项目中涉及到一个时间验证的问题,需要根据当前时间来验证业务数据是否过期。所以直接写代码如下: new java.util.Date().getTime();         结果测试的时候出现了问题,怎么验证都是过期。后来发现是服务器主机时间不对。也就是说如果服务器时间不准确或者被篡改,那么验证这部分会出现问题。所以决定采用获取网络当前时间来代替获取系统当前时间。         搜索了一下,原来获取网络时间有一个协议:Network Time Protocol(NTP: 网络时间协议 )。         协议有了,那么java有没有相关实现呢。当然也有了。apac ...
Global site tag (gtag.js) - Google Analytics