
java
qingxili
这个作者很懒,什么都没留下…
展开
-
求两个日期之间相隔的天数:
求两个日期之间相隔的天数: Java代码 1. java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); 2. java.util.Date beginDate= format.parse("2007-12-24"); 3. java.util.Date endD转载 2015-04-23 14:07:49 · 612 阅读 · 0 评论 -
原生类型的处理
下面的程序由一个单一的类构成,该类表示一对类型相似的对象。它大量使用了5.0 版的特性,包括泛型、 自动包装、 变长参数(varargs)和 for-each 循环。那么它会打印什么呢? import java.util.*; public class Pair { private final T first; private final T second; public Pair原创 2015-05-12 18:18:20 · 294 阅读 · 0 评论 -
JAVA设计模式之单例模式
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话原创 2015-05-12 09:55:02 · 291 阅读 · 0 评论 -
java 类装载
Class的装载分了三个阶段,loading,linking和initializing,分别定义在The Java Language Specification的12.2,12.3和12.4。 Class.forName(className)实际上是调用Class.forName(className, true, this.getClass().getClassLoader())。注意第二个参数转载 2015-05-12 16:37:07 · 414 阅读 · 0 评论 -
Java 内部类继承
public class Outer { class Inner1 extends Outer{ public Inner1() { super(); // 调用 Object() 构造器 } } class Inner2 extends Inner1{ public Inner2() { super(); // 调用 Inner1() 构造器 N原创 2015-05-13 15:08:26 · 304 阅读 · 0 评论 -
Java transient关键字
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。 这样当多个线程转载 2015-05-15 16:38:15 · 250 阅读 · 0 评论 -
java中四种引用类型
今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混。后来在网上查资料,感觉收获颇多,现记录如下。 对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachabl转载 2015-07-01 20:44:36 · 272 阅读 · 0 评论 -
Java序列化机制和原理
本文讲解了Java序列化的机制和原理。从文中你可以了解如何序列化一个对象,什么时候需要序列化以及Java序列化的算法。 有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。 Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些转载 2015-08-25 11:02:21 · 285 阅读 · 0 评论 -
结合实例说说线程封闭和背后的设计思想
高并发问题抛去架构层面的问题,落实到代码层面就是多线程的问题。多线程的问题主要是线程安全的问题(其他还有活跃性问题,性能问题等)。 那什么是线程安全?下面这个定义来自《Java并发编程实战》,这本书强烈推荐,是几个Java语言的作者合写的,都是并发编程方面的大神。 线程安全指的是:当多个线程访问某个类时,这个类始终都能表现出正确的行为。 正确指的是“所见即所知”,程序执行的结果和转载 2015-08-13 20:51:55 · 390 阅读 · 0 评论 -
Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2015-08-15 21:42:56 · 263 阅读 · 0 评论 -
Java NIO原理图文分析及代码实现
最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http://weixiao转载 2015-08-16 00:16:41 · 293 阅读 · 0 评论 -
java 项目中内存溢出问题的解决
在做一个数据推送端项目时,需要频繁从数据库里面读取数据,把一些静态和动态数据定时推送给服务端。由于数据读取非常频繁,在推送数据的时候,出现了,非常典型的内存溢出问题。 通过上网查看到一篇文章,做了下参考,如下: 1 引言 Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释转载 2015-05-04 17:09:23 · 1125 阅读 · 0 评论 -
wait()方法在等待时释放对象锁
import java.util.*; public class Worker extends Thread { private volatile boolean quittingTime = false; public void run() { while (! quittingTime) pretendToWork(); System.out.println("Beer is goo原创 2015-05-11 22:16:56 · 1312 阅读 · 0 评论 -
二元选择排序
简单选择排序,每趟循环只能确定一个元素排序后的定位。我们可以考虑改进为每趟循环确定两个元素(当前趟最大和最小记录)的位置,从而减少排序所需的循环次数。改进后对n个数据进行排序,最多只需进行[n/2]趟循环即可。具体实现如下: public static int[] selectSort(int[] a) { int i,j,min,max,temp; int n=a.le原创 2015-04-26 03:13:54 · 420 阅读 · 0 评论 -
Dual-Pivot Quicksort algorithm
New Dual-Pivot Quicksort algorithm The new Quicksort algorithm uses partitioning a source array T [ ] a, where T is primitive type (such as int, float, byte, char, double, long and short), to thr转载 2015-05-08 20:19:19 · 531 阅读 · 0 评论 -
Java中普通代码块,构造代码块,静态代码块区别及代码示例
//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。 其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。 1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 2 public class CodeBlock01{ 3转载 2015-05-08 21:12:12 · 261 阅读 · 0 评论 -
Java中重载、覆盖和隐藏三者的区别分析
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义) 3.main方法也是可以被重载的 覆盖:子类重写父类的方法,要求方法名和参数类型转载 2015-05-09 16:43:47 · 277 阅读 · 0 评论 -
JVM指令集
JVM指令集(指令码、助记符、功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式: aconst_null 功能描述: null进栈。转载 2015-05-09 11:21:12 · 235 阅读 · 0 评论 -
java 惰性初始化
下面这个可怜的小类实在是太懒了,甚至于都不愿意用通常的方法进行初始化,所以它求助于后台线程。这个程序会打印什么呢?每次你运行它的时候都会打印出相同的东西吗? public class Lazy { private static boolean initialized = false; static { Thread t = new Thread(new Runnable()转载 2015-05-09 22:52:16 · 2032 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的Java 理论与实践中,Brian Goetz 将介绍几种正确使用 volatile变量的模式,并针对其适用性限制提出一些建议。 Java 语言中的 volat转载 2015-05-10 17:02:57 · 252 阅读 · 0 评论 -
bitCount 求二进制数中1的个数
解法一: 对于一个正整数如果是偶数,该数的二进制数的最后一位是 0 ,反之若是奇数,则该数的二进制数的最后一位是 1 。因此,可以考虑利用位移、判断奇偶来实现。 Java代码 public int bitCount(int x){ int count = 0; while(x!=0){ if(x%2!=0){ //判断奇转载 2015-05-11 09:55:16 · 608 阅读 · 0 评论 -
包内私有方法无法覆盖,覆盖需宽化权限
package hack; import click. CodeTalk; public class TypeIt { private static class ClickIt extends CodeTalk { void printMessage() { System.out.println("Hack"); } } public static void m原创 2015-05-11 15:39:26 · 380 阅读 · 0 评论 -
java 守护线程总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守护者。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被转载 2015-05-11 21:58:56 · 298 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList
原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOn转载 2015-10-28 21:08:47 · 227 阅读 · 0 评论