- 博客(24)
- 资源 (3)
- 收藏
- 关注
转载 深入java String.intern()
public String intern()返回字符串对象的规范化表示形式。一个初始时为空的字符串池,它由类 String 私有地维护。 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。它遵循对于
2014-04-29 20:33:54 411
原创 4.深入java反射机制
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。Java 的这一能力在实际应用中用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。Reflection 是 Java 被视为动态(或准动态)语
2014-04-26 18:52:22 391
原创 3.深入java泛型
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定
2014-04-26 18:10:40 390
原创 2.深入java包装类自动装箱、自动拆箱
包装类(Wrapper Class) 包装类是针对于原生数据类型的包装。 因为有8个原生数据类型,所以对应有8个包装类。 所有的包装类(8个)都位于java.lang下。 Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现
2014-04-25 21:28:08 417
原创 1.深入java枚举类型
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。下面就是一个典型枚举类型的定义:publiv enum Colpublic enum Color{ RED,BLUE,BLACK,YELLOW,GREEN }
2014-04-25 20:12:57 372
转载 Mybatis3.2.6+mysql第一个例子
每当我们接触到一个新的框架时,很多人会选择把所有的文档读完,把别人的视频看完(以前我也一样),但是当你把所有的东西(文档、视频)都看完后来做第一个例子,发现你根本就无从下手,效率非常低下。我现在的做法是先到官网看搭建框架的五分钟教程,把框架先搭起来,运行第一个例子,希望看到这边的文章的童鞋们也采用这套做法,不要再继续做无用功了。Mybatis3.2.6下载:http://code.goog
2014-03-31 20:45:15 387
转载 lucene 简单的例子
使用lucene-core-3.1.0.jar一 创建索引[java] view plaincopyprint?public class Indexer { public static void main(String[] args) throws IOException { // 保存索引文件的地方 Strin
2013-09-09 22:16:38 491
转载 深入理解HashMap
1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,hashmap也不例外。Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“),请看下图(横排表示数组,纵排表示数组元素【实际上是一个链表】)。
2013-08-26 21:56:50 304
原创 多线程和并发中SynchronousQueue的使用
package javautilconcurrent;import java.util.Arrays;import java.util.List;import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;/** * 这是一个阻塞队列,其中,每个插入操作必须等待
2013-08-25 21:26:33 703
原创 多线程和并发中BlockingQueue的使用
package javautilconcurrent;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exec
2013-08-25 20:27:40 488
原创 多线程和并发中新的任务执行架构Executor、ExecutorService、ScheduledExecutorService
package javautilconcurrent;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors
2013-08-25 10:34:10 763
转载 Java多线程(七)、Volatile 关键字
简介: Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。Jav
2013-08-24 15:29:30 344
转载 Java多线程(六)、ThreadLocal类
一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一
2013-08-24 15:27:32 461
转载 Java多线程(五)、多线程其他知识简要介绍
一、线程组[java] view plaincopyprint?/** * A thread group represents a set of threads. In addition, a thread * group can also include other thread groups. The thread groups form * a tr
2013-08-24 15:24:55 487
转载 Java多线程(四)、线程池
系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互。在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。与数据库连接池类似的是,线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池就会启动一条线程来执行该对象的run方法,当run方法执行结束后,该线程并不会死亡,而是再次返回线程池中
2013-08-24 15:23:17 395
转载 Java多线程(三)、线程同步
在之前,已经学习到了线程的创建和状态控制,但是每个线程之间几乎都没有什么太大的联系。可是有的时候,可能存在多个线程多同一个数据进行操作,这样,可能就会引用各种奇怪的问题。现在就来学习多线程对数据访问的控制吧。 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。
2013-08-24 15:21:24 568
转载 Java多线程(二)、线程的生命周期和状态控制
一、线程的生命周期线程状态转换图:1、新建状态用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)。注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。
2013-08-24 15:19:40 380
转载 Java多线程(一)、多线程的基本概念和使用
一、进程和线程的基础知识1、进程和线程的概念进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存)线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源)在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。区别: 1、是否占有资源问题 2、创建或撤销一个进程所需要的开销比创建或撤销一个线程所需要的开销大。
2013-08-24 15:17:26 373
原创 使用java.lang.Process类时需要注意的事情
package javautilconcurrent;import java.io.BufferedReader;import java.io.InputStreamReader;/** * 使用Process需要注意的事情 * @author zly * */public class TestProcess { public static void ma
2013-08-24 14:50:31 928
原创 多线程并发中的简单使用wait和notify的方法
package javautilconcurrent;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 简单使用wait和notify * @author zly * */public class UseWaitAndNotify {
2013-08-23 22:11:05 429
原创 多线程并发中volatile变量的原理
引言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized ,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深
2013-08-23 20:51:16 507
原创 多线程并发中CopyOnWriteArrayList源码解读
概述CopyOnWriteArrayList是jdk concurrent包中提供的一个非阻塞型的,线程安全的List实现。CopyOnWriteArrayList在进行数据修改时,都不会对数据进行锁定,每次修改时,先拷贝整个数组,然后修改其中的一些元素,完成上述操作后,替换整个数组的指针。对CopyOnWriteArrayList进行读取时,也不进行数据锁定,直接返回需要查询的数据,
2013-08-23 14:33:45 551
原创 多线程并发中CopyOnWriteArrayList的使用
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationException,他们是在虚拟机层面阻塞的,而且速度非常快,几乎不需要CPU时间。2
2013-08-23 14:25:05 668
原创 多线程并发中ReentrantLock和ReentrantReadWriteLock的使用
package javautilconcurrent;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.locks.Lock;import
2013-08-23 13:24:07 383
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人