J2SE
weistar103
这个作者很懒,什么都没留下…
展开
-
关于Thread.IsAlive属性
今天在讨论多线程的时候,谈到了这个属性。IsAlive,顾名思义,它表示线程当前是否为可用状态,如果线程已经启动,并且当前没有任何异常的话,则返回true,否则为false 为什么要了解这个属性,是因为下面代码有的朋友不是很理解 下面代码演示的多个线程对共享资源争用的问题,具体细节这里不详细讨论了。Thread thread1 = new Thread(new ThreadS...原创 2015-07-04 12:12:10 · 301 阅读 · 0 评论 -
JDBC4.0 驱动加载过程
注意,jdbc4.0不再需要显示调用class.forName()注册驱动,而是自动调用驱动jar包下META-INF\services\java.sql.Driver文本中的类名称去注册,DriverManager是一个单例类。参见如下简单的程序String url ="jdbc:mysql://localhost:3306/jdbcana"; String u...原创 2013-01-16 10:09:25 · 242 阅读 · 0 评论 -
Java自定义的类加载器
一、类加载器类别 * 1.java虚拟机自带的加载器 * 根类加载器(Bootstrap,c++实现) * 扩展类加载器(Extension,java实现) * 系统类加载器(System,java实现) * 2.用户自定义的类加载器 * java.lang.ClassLoader的子类 * 用户可以定制类的加载方式Java自定义...原创 2013-01-15 08:38:54 · 71 阅读 · 0 评论 -
深入理解HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道 HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银 行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合...原创 2013-11-18 15:49:49 · 95 阅读 · 0 评论 -
使用Log4j生成不同日志级别的日志文件
在src根目录下存放log4j.xml文件,具体配置如下(测试使用log4j-1.2.16.jar):<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://.原创 2012-12-26 17:09:54 · 149 阅读 · 0 评论 -
深入理解HashMap
文章摘自:http://www.iteye.com/topic/539465Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。1、hashmap的数据结构要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就...原创 2012-12-13 10:08:25 · 101 阅读 · 0 评论 -
java字节码加解密
一.创建KEYclass Key { //private String keyName; public Key() { } public Key(String keyName) { //this.keyName = keyName; } public...原创 2012-06-30 09:53:51 · 221 阅读 · 0 评论 -
java动态代理简单实现
一.接口public interface Foo { public void doThing();}二.接口实现public class FooImpl implements Foo { @Override public void doThing() { System.out.println("Java Dynamic Proxy success");...原创 2012-06-30 09:45:45 · 62 阅读 · 0 评论 -
线程池简单实现
其实线程池的实现就是生产者消费者问题的实现,理解了生产者消费者问题就不会对线程池的实现感到神秘了,线程池在很多地方会用到,比如tomcat等各种中间容器的实现,Spring对线程池的支持等,当然mina中也使用到了线程池的概念。看下简单对线程池的实现代码,主要包括三个类,一个是线程池,一个是工作任务,一个是客户端进行任务添加。任务类,比较简单,实现...原创 2012-06-25 11:42:40 · 75 阅读 · 0 评论 -
用Java数字签名提供XML安全
文章源自:http://www.importnew.com/6271.html用Java数字签名提供XML安全众所周知,XML在产品和项目开发中起着非常重要的作用。通过XML文档可以获取很多信息,还可以使用XML文件进行CRUD(增加、查询、更新和 删除)操作。然而值得注意的是,我们如何确保XML中的数据是来自经过认证的可信和可靠的来源。关于XML文件数据的可靠性和真实性存在很...原创 2013-11-29 16:11:02 · 390 阅读 · 0 评论 -
java文件复制方法参考
最快的文件复制方法 private static void nioTransferCopy(File source, File target) { FileChannel in = null; FileChannel out = null; FileInputStream inStream = null; Fil...原创 2013-12-02 14:17:31 · 91 阅读 · 0 评论 -
Java 8特性探究(1):通往lambda之路_语法篇
文章源自:http://developer.51cto.com/art/201404/435591.htm函数式接口函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口。java 8提...原创 2014-07-08 09:59:16 · 64 阅读 · 0 评论 -
Java:对象的强、软、弱和虚引用
文章源自:http://zhangjunhd.blog.51cto.com/113473/53092/ 1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。...原创 2015-02-28 11:00:25 · 142 阅读 · 0 评论 -
一个通用并发对象池的实现
Source: http://ifeve.com/generic-concurrent-object-pool/Source of English: http://www.javacodegeeks.com/2012/09/a-generic-and-concurrent-object-pool.html这篇文章里我们主要讨论下如何在Java里实现一个对象池。最近几年,Java虚拟机的性...原创 2015-01-20 09:32:11 · 146 阅读 · 0 评论 -
如何创建不可变的Java类或对象
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述如何创建不可变的Java类或对象,更多Java专业知识,广州疯狂java培训官网与你分享; immutable Objects就是那些一旦被创建,它们的状态就不能被改变的Objects,每次对他们的改变都是产生了新的immutable的对象,而mutable Ob...原创 2015-01-07 16:29:16 · 257 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
文章源自:http://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队...原创 2014-12-29 11:49:02 · 86 阅读 · 0 评论 -
中断线程深入
本文转自http://jiangzhengjun.iteye.com/blog/652269中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程为中断状态,即设 置为true。线程中断后的结果是死亡、还是等待新的任务或是继续运行至下一步,取决于这个程序本身。线程会不时地检测这个中断标识位,以判断线程是否应 该被中断(中断标识值是否为true)。它并不像stop方...原创 2014-12-25 15:18:05 · 168 阅读 · 0 评论 -
深入java.lang.ThreadLocal类
文章源自:http://lavasoft.blog.51cto.com/62575/51926/一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,...原创 2014-12-24 16:50:29 · 88 阅读 · 0 评论 -
Java 8新特性探究(3):解开lambda最强作用的神秘面纱
文章源自:http://developer.51cto.com/art/201404/435591.htm 1.关于JSR335JSR是Java Specification Requests的缩写,意思是Java 规范请求,Java 8 版本的主要改进是 Lambda 项目(JSR 335),其目的是使 Java 更易于为多核处理器编写代码。JSR 335=lambda表达式+接口改...原创 2014-07-10 17:50:12 · 74 阅读 · 0 评论 -
Java 8特性探究(2):深入解析默认方法
文章源自:http://developer.51cto.com/art/201404/435591.htm什么是默认方法,为什么要有默认方法简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法。只需在方法名前面加个default关键字即可。 为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,...原创 2014-07-08 11:12:13 · 78 阅读 · 0 评论 -
同步器--Exchanger
用于实现两个线程间的数据交换,每个线程在完成一定的任务后想与对方交换数据,第一个先拿出数据的线程将一直等待第二个线程拿着数据到来时,才能彼些交换数据.public class ExchangerTest { public static void main(String[] args) { final Exchanger<String> exchanger = new Ex...原创 2012-06-25 08:11:49 · 102 阅读 · 0 评论 -
同步器--CountDownLatch
CountDownLatch像倒计时计数器,调用它的countDown()方法就将计数器减1,当达到0时,所有等待者开始执行,可以实现一个人通知多人,如裁判,也可以实现一个计划要多个领导签字后才能继续向下实施的情况.public class CountdownLatchTest { public static void main(String[] args) { Executor...原创 2012-06-24 21:55:26 · 75 阅读 · 0 评论 -
同步器--CyclicBarrier
/** * 淘宝面试题:如何充分利用多核CPU,计算很大的List中所有整数的和 * @author weistar * */public class CountListIntegerSum { private long sum;// 存放整数的和 private CyclicBarrier barrier;// 障栅集合点(同步器) private List<...原创 2012-06-24 21:55:15 · 79 阅读 · 0 评论 -
Java认证:Java核心之Java内存分配原理
JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆...原创 2012-06-22 15:59:53 · 100 阅读 · 0 评论 -
Java 序列化的高级认识
将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够。如果你只知道实现 Seri...原创 2012-06-21 20:59:20 · 82 阅读 · 0 评论 -
Java 理论与实践: 非阻塞算法简介
简介: Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能。非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 —— 例如比较和交换。非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞吐率,对生存问题(例如死锁和优先级反转)也能提供更好的防御...原创 2012-06-21 10:49:05 · 60 阅读 · 0 评论 -
java enum 浅析
java中的枚举类型包括了其他语言中枚举类型的一般特性。 public class EnumDemo{ public enum Seasons { winter,spring,summer,fall; } public static void main(String[] args){ for(Seasons s:Seasons...原创 2012-06-20 21:31:08 · 85 阅读 · 0 评论 -
Java Collections API 您不知道的 5 件事
简介: Java™Collections API 远不止是数组的替代品,虽然一开始这样用也不错。Ted Neward 提供了关于用 Collections 做更多事情的 5 个技巧,包括关于定制和扩展Java Collections API 的基础。注:此文摘自IBM文档库. 1. Collect...原创 2012-06-20 21:01:55 · 259 阅读 · 0 评论 -
JAVA Appliation下取得资源文件的路径
今天要写一个单元测试,这个单元测试类要去读和它同目录的一个XML文件。它的位置如下:ConfigFactoryImplTest要去读取boss-connector-service.xml。 那么如果得到这个文件呢?先看下面的一个对路径的测试代码import java.io.File;public class PathTest { publ...原创 2012-06-19 21:26:02 · 135 阅读 · 0 评论 -
HashTable、HashMap、Vector、ArrayList之间的区别
所有都是Collection(总接口)Array有多少元素是确定的,比如足球队上场的队员有11名,是固定的,就用array。ArrayList是不固定的,比如用sql查询数据库,不知道有多少记录返回,用arraylist.Enumeration是用来一个一个列举Collection的元素的,但java2后被Iterator替代。Hash...原创 2012-06-19 19:31:40 · 74 阅读 · 0 评论 -
Class.forName 介绍
Class.forName(xxx.xx.xx) 返回的是一个类首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。 至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。 A a = (A)Class....原创 2012-06-18 19:57:08 · 70 阅读 · 0 评论 -
Java认证JVM基础概念:数据类型和堆与栈
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte, short, int, long, char, float, double...原创 2012-06-22 16:03:26 · 88 阅读 · 0 评论 -
ResourceBundle 与locale的使用
ResourceBundle使用ResourceBundle访问本地资源,在设计时,我们往往需要访问一些适合本地修改的配置信息,如果作为静态变量,那么每次修改都需要重新编译一个class,.config保存此类信息并不适合,这时我们需要ResourceBundle。 通过ResourceBundle,我们需要访问位于/WEB-INF/classes目录...原创 2012-06-22 16:10:56 · 252 阅读 · 0 评论 -
java中格式化输出数字和日期
在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下。主要使用的类:java.text.DecimalFormat1。实例化对象,可以用如下两种方法: DecimalFormat df=(DecimalFormat)NumberFormat.getInstance(); DecimalFormat df1=(DecimalF...原创 2012-06-22 16:15:51 · 164 阅读 · 0 评论 -
同步器--Semaphore
它可以维护当前访问自身的线程个数,并提供了同步机制,使用它可以控制同时访问资源的线程个数,如实现一个文件允许的并发访问数.单个信号灯对象可以实现互斥锁的功能,并且可以是由一个线程获得了"锁",再由另一个线程释放"锁",可应用于死锁恢复的场合.注:还有另一个构造器Semaphore(int permits, boolean fair),其中fair为true表示先进来的先拿到灯,即公平,默认...原创 2012-06-24 21:55:00 · 104 阅读 · 0 评论 -
使用Condition实现多路等待通知
一个锁内部可以有多个Condition,即有多路等待和通知,可参考JDK1.5的Lock和Condition实现的可阻塞队列的应用案例,在传统的线程机制中一个监视器对象上只能有一路等待和通知,要想实现多路等待和通知,必须嵌套使用多个同步监视器对象.使用Condition可简单实现多路等待通知public class TwoConditionCommunication { publ...原创 2012-06-24 21:54:27 · 224 阅读 · 0 评论 -
使用readLock与writeLock实现缓存
锁妙用:读写锁:分为读锁和写锁,多个读锁不能互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM自己控制的,只要上好相应的锁即可,如果你的代码只读数据,可以多人同时读,但不能同时写,那就上读锁;如果要修改数据,只能有一个人在写,且不能同时读取,那就上写锁,总之,读的时候上读锁,写的时候上写锁.如使用readLock与writeLock实现缓存public class CacheDemo ...原创 2012-06-24 21:54:12 · 219 阅读 · 0 评论 -
Callable与Future应用
应用于异步的任务执行,类似JS的回调方法.Future取得的结果类型与Callable返回的结果类型必须一致.如异步执行方式:public class FutureTaskDemo { public static void main(String[] args) { // 初始化一个Callable对象和FutureTask对象 Callable<Object...原创 2012-06-23 17:14:36 · 84 阅读 · 0 评论 -
线程间通信
传统线程间通信// 传统的线程通信public class TraditionalThreadCommunication { public static void main(String[] args) { final Business business = new Business(); new Thread(new Runnable() { @Overrid...原创 2012-06-23 17:06:30 · 68 阅读 · 0 评论 -
多线程访问共享数据
多线程访问共享数据方式总结: 1.若每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,如卖票系统.2.若每个线程执行的代码不同,这时需要用不同的Runnable对象,有以下几种方式来实现这些Runnable对象之间的数据共享:2.1将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runnable对象,每个线...原创 2012-06-23 15:38:30 · 96 阅读 · 0 评论