
java基础
文章平均质量分 78
FG2006
这个作者很懒,什么都没留下…
展开
-
java集合框架总结
<br /><br /><br />简化图:<br /><br />Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。<br /><br /><br />Java 2集合框架图<br /><br />集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。<br /><br />抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。<br /><br />实现类:8个实现类(实线表示),对接转载 2011-05-03 20:23:00 · 689 阅读 · 0 评论 -
java集合框架学习—LinkedHashMap的实现原理
<br /><br />转自:http://zhangshixi.iteye.com/blog/673789<br /> <br />1. LinkedHashMap概述:<br /> LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。<br /> LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接转载 2011-05-06 17:19:00 · 1274 阅读 · 1 评论 -
java中Hashtable与HashMap的区别
<br />转自:http://dev.youkuaiyun.com/htmls/38/38637.html<br />HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。<br /><br />1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。<b转载 2011-05-06 17:30:00 · 802 阅读 · 0 评论 -
Java精华积累:初学者都应该搞懂的问题
<br /><br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/09/06/1775430.aspx<br />如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。<br />问题一:下面声明了什么!<br />String s = "Hello world!";<br />许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的转载 2011-05-07 12:09:00 · 962 阅读 · 1 评论 -
简单介绍Java语言中内存管理的几个技巧
<br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/10/03/1810780.aspx<br /> <br /><br />Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点。<br /> <br />其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么N多理由来证明它确实占内存呢?两个字,陋习。<br />(1)别用new Boolean()。<b转载 2011-05-07 12:10:00 · 750 阅读 · 0 评论 -
如何才算掌握Java(J2SE篇)
<br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/07/03/1676989.aspx时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的转载 2011-05-07 12:14:00 · 753 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(二) AQS
在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。AQSAbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类,导致绝大多数讲解并发原理或者实战的时候都不会提到此类。但是虚心的作者愿意借助自己有限的能力和精力来探讨一二(参考资源中也有一些作者做了部分的分析。)。首先从理论知识开始,在了解了相关原理后会针对源码进行一些分析转载 2011-05-05 19:08:00 · 5555 阅读 · 1 评论 -
《深入浅出 Java Concurrency》—锁机制(六) CyclicBarrier
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/12/325913.html<br />如果说CountDownLatch是一次性的,那么CyclicBarrier正好可以循环使用。它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。所谓屏障点就是一组任务执行完毕的时刻。<br /> <br />清单1 一个使用CyclicBarrier的例子<br />package xylz.stu转载 2011-05-05 19:14:00 · 1713 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(七) 信号量 (Semaphore)
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/13/326021.html<br />Semaphore 是一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。<br />说白了,Se转载 2011-05-05 19:15:00 · 1778 阅读 · 0 评论 -
java集合框架学习—ArrayList的实现原理
<br /> <br />转自:http://zhangshixi.iteye.com/blog/674856<br />1. ArrayList概述:<br /> ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。<br /> 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向Array转载 2011-05-06 16:44:00 · 2696 阅读 · 0 评论 -
java集合框架学习—HashSet的实现原理
<br /><br />转自:http://zhangshixi.iteye.com/blog/673143<br />1. HashSet概述:<br /> HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。<br /> <br />2. HashSet的实现:<br /> 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元转载 2011-05-06 17:18:00 · 1223 阅读 · 0 评论 -
java集合框架学习—HashMap的实现原理
<br /><br />转自:http://zhangshixi.iteye.com/blog/672697<br />1. HashMap概述:<br /> HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。<br /> <br />2. HashMap的数据结构:<br /> 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数转载 2011-05-06 16:49:00 · 6042 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(十) 锁的一些其它问题
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/16/326246.html<br />主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是《Java Concurrency in Practice》,结合自己的理解和实际应用对锁机制进行一个小小的总结。<br /> <br />首先需要强调的一点是:所有锁(包括内置锁和高级锁)都是有性能消耗的,也就是说在高并发的情况下,由于锁机制带来的上下文切换、资源同步等消耗是非常可观的。在某转载 2011-05-05 19:20:00 · 1577 阅读 · 0 评论 -
java并发编程实践笔记
<br /><br />1, 保证线程安全的三种方法 :<br /><br />a, 不要跨线程访问共享变量<br />b, 使共享变量是 final类型的<br />c, 将共享变量的操作加上同步<br />2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .<br />3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 .<br />4, 无状态或只读对象永远是线程安全的 .<br />5, 不要将一个共享变量裸露在多线程环境下 (无同步或不可变性保护 )<br />6转载 2011-05-03 22:00:00 · 677 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(三) 加锁的原理 (Lock.lock)
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/07/325410.html<br />接上篇,这篇从Lock.lock/unlock开始。特别说明在没有特殊情况下所有程序、API、文档都是基于JDK 6.0的。<br />public void java.util.concurrent.locks.ReentrantLock.lock()<br />获取锁。<br />如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数转载 2011-05-05 19:10:00 · 7521 阅读 · 1 评论 -
《深入浅出 Java Concurrency》—锁机制(四) 锁释放与条件变量 (Lock.unlock And Condition)
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/08/325540.html<br />本小节介绍锁释放Lock.unlock()。<br />Release/TryRelease<br />unlock操作实际上就调用了AQS的release操作,释放持有的锁。<br />public final boolean release(int arg) {<br /> if (tryRelease(arg)) {<br />转载 2011-05-05 19:11:00 · 3791 阅读 · 1 评论 -
《深入浅出 Java Concurrency》—锁机制(五) 闭锁 (CountDownLatch)
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/09/325612.html<br />此小节介绍几个与锁有关的有用工具。<br />闭锁(Latch)<br />闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态。通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能是打开状转载 2011-05-05 19:12:00 · 2685 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(八) 读写锁 (ReentrantReadWriteLock) (1)
转自:http://www.blogjava.net/xylz/archive/2010/07/14/326080.html从这一节开始介绍锁里面的最后一个工具:读写锁(ReadWriteLock)。ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显然这个特点在一定程度上面减低了吞吐量,实际上独占锁是一种保守的锁策略,在这种情况下任何“读/读”,“写/读”,“写/写”操作都不能同时发生。但是同样需要强调的一个概念是,锁是转载 2011-05-05 19:17:00 · 2324 阅读 · 0 评论 -
《深入浅出 Java Concurrency》——原子操作
<br /><br />part1 从AtomicInteger开始<br />从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始)。很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。注意,这里有三个条件:简单,意味着程序员尽可能少的操作底层或者实现起来要比较容易;高效意味着耗用资源要少,程序处理速度要快;线程安全也非常重要,这个在多线程下能保证数据的正确性。这三个条件看起来比较转载 2011-05-05 16:01:00 · 6732 阅读 · 1 评论 -
《深入浅出 Java Concurrency》—锁机制(一)Lock与ReentrantLock
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html<br />前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最后的总结篇来整体说明。从这一章开始花少量的篇幅谈谈锁机制。<br />上一个章节中谈到了锁机制,并且针对于原子操作谈了一些相关的概念和设计思想。接下来的文章中,尽可能的深入研究锁机制,并且理解里面的原理和实际应用场合。<br />尽管synchronized在语法上已经足够转载 2011-05-05 19:07:00 · 17944 阅读 · 0 评论 -
《深入浅出 Java Concurrency》—锁机制(九) 读写锁 (ReentrantReadWriteLock) (2)
<br /><br />转自:http://www.blogjava.net/xylz/archive/2010/07/15/326152.html<br />这一节主要是谈谈读写锁的实现。<br />上一节中提到,ReadWriteLock看起来有两个锁:readLock/writeLock。如果真的是两个锁的话,它们之间又是如何相互影响的呢?<br />事实上在ReentrantReadWriteLock里锁的实现是靠java.util.concurrent.locks.ReentrantReadWri转载 2011-05-05 19:18:00 · 2025 阅读 · 0 评论 -
java中hashcode()和equals()的详解
<br /> 转自:http://www.iteye.com/topic/257191今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36)。 <br />1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。 <br />equals()方法在object类中定义如下: <br /> public boolean equals(Object obj) { <br转载 2011-05-07 11:19:00 · 1712 阅读 · 0 评论 -
java六种异常处理的陋习
<br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/07/03/1676984.aspx 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 . OutputStreamWriter out = ... 2. java.sql.Connection conn = ... 3. try { 4. Statement stat = conn.cre转载 2011-05-07 15:33:00 · 619 阅读 · 0 评论 -
使用jdk1.5装箱及拆箱功能时注意的问题
<br /><br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/06/06/1639943.aspx<br />我们知道java中所有到的类型要么就是引用类型和要么就是原始数据类型,其中原始数据类型有其相应的包装类(Wrapper Class),包括:Byte(byte), Short(short), Integer(int), Long(long), Float(float), Double(double), Boolean(bool), Char(char转载 2011-05-07 15:39:00 · 738 阅读 · 0 评论 -
Java枚举类型enum的使用原理
<br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/08/23/1756795.aspx<br />Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。 <br /><br /> 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 <br /><br />转载 2011-05-08 15:41:00 · 1136 阅读 · 0 评论 -
java的RTTI
在Java中,RTTI表现在:1。Class对象,是RTTI的核心,每个类都有一个class对象。每当编写并且编译一个新类,就会产生一个Class对象(被保存在同名的.class文件当中)2。instanceof 关键字用于检查对象是不是某个特定类型的实例。3。强制类型转换,如:Parent object = new Child();Child child = (Child)object;至于实现机制,根据JVM实现的不同,没有固定的答案。转载 2011-05-08 18:22:00 · 6616 阅读 · 2 评论 -
java的编译时多态和运行时多态
<br />1、运行时多态和编译时多态的区别?<br />编译时的多态,是指参数列表的不同, 来区分不同的函数, 在编译后, 就自动变成两个不同的函数名. 在运行时谈不上多态<br />运行时多态:用到的是后期绑定的技术, 在程序运行前不知道,会调用那个方法, 而到运行时, 通过运算程序,动态的算出被调用的地址. 动态调用在继承的时候,方法名 参数列表完全相同时才出现运行时多态!<br />运行时多态,也就是动态绑定,是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据实际类型判断并调用相应的属性和转载 2011-05-08 19:30:00 · 12317 阅读 · 0 评论 -
Comparable与Comparator的区别
<br /><br />转自:http://blog.youkuaiyun.com/wgw335363240/archive/2010/05/15/5595084.aspx<br />1.Comparable是对象内部需要实现的接口,如果一个对象要想用利用Array.sort进行排序,那么这个对象必须实现Comparable的接口,比较的实现是在对象的内部进行的。<br />2.Comparator接口是在对象外实现的接口,主要是方便了对没有实现Comparable接口的对象的比较和排序,比如:当我们对已经有的一个类进转载 2011-05-10 11:36:00 · 750 阅读 · 0 评论 -
java解惑你知多少(八)
56. 惰性初始化Java代码 public class Lazy { private static boolean initial = false; static { Thread t = new Thread(new Runnable() { publ转载 2011-04-26 16:28:00 · 961 阅读 · 0 评论 -
关于 Java 中 finally 语句块的深度辨析
本文系转载,原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-finally/#可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机。接下来我就带您一步一步的揭开这个 finally 的神秘面纱转载 2011-07-19 14:28:19 · 1556 阅读 · 3 评论 -
子类为什么不能重写父类的静态方法
"重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(形式上被重写了,但是不符合的多态的特性),“重写”是用来实现多态性的,只有实例方法是可以实现多态,而静态方法无法实现多态。例如: Employee man = new Manager();原创 2011-08-20 03:28:11 · 12150 阅读 · 7 评论 -
java Date学习总结
1.计算某一月份的最大天数Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,year); //year 为 inttime.set(Calendar.MONTH,i-1)转载 2011-05-17 15:35:00 · 1065 阅读 · 0 评论 -
Comaparable接口与Comparator接口区别
转自:http://www.open-china.net/blog/7707.html给了个类,要求编写一段代码,给以下类型的数据排序(按index降序排): public class A{ public int index ; public Strin转载 2011-05-13 10:41:00 · 2720 阅读 · 0 评论 -
Java读取Properties文件的六种方法
<br />转自:http://blog.youkuaiyun.com/Senton/archive/2009/04/16/4083127.aspx<br />使用J2SE API读取Properties文件的六种方法<br /><br />1。使用java.util.Properties类的load()方法<br />示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));<br />Properties p = new Pro转载 2011-05-08 14:16:00 · 669 阅读 · 0 评论 -
HashMap,LinkedHashMap,TreeMap的区别
<br /> <br />Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。<br />Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的转载 2011-05-11 10:35:00 · 65971 阅读 · 13 评论 -
JAVA实用技巧:定时执行任务的三种方法
<br /><br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/11/06/1870501.aspx<br />1)java.util.Timer<br />这个方法应该是最常用的,不过这个方法需要手工启动你的任务:<br />Timer timer=new Timer();<br />timer.schedule(new ListByDayTimerTask(),10000,86400000);<br />这里的ListByDayTimerTask类必须实现转载 2011-05-07 16:05:00 · 739 阅读 · 0 评论 -
Java中的克隆(Clone)机制
<br /><br />转自:http://blog.youkuaiyun.com/Senton/archive/2007/08/03/1723826.aspx<br />现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?<br /><br />1. Clone&Copy<br />假设现在有一个Employee对象,<br />Employee to转载 2011-05-07 16:09:00 · 704 阅读 · 0 评论 -
java序列化机制与原理
<br /><br />转自:http://blog.youkuaiyun.com/redcreen/archive/2011/01/07/6123491.aspx<br />Java序列化算法透析<br /> Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以转载 2011-05-08 15:04:00 · 700 阅读 · 0 评论 -
Java枚举类型enum的原理
<br /><br />转自:http://blog.youkuaiyun.com/abing37/archive/2009/07/29/4391222.aspx<br />1. 关于 Java Enum:<br />学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。是一种好的习惯。 JDK1.5 之前没有 Enum转载 2011-05-08 15:39:00 · 2662 阅读 · 0 评论 -
候捷谈Java反射机制
<br /><br />转自:http://blog.youkuaiyun.com/njchenyi/archive/2007/05/22/1620939.aspx<br />摘要<br />Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneab转载 2011-05-08 16:43:00 · 1476 阅读 · 0 评论