自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 1111

https://forums.virtualbox.org/viewtopic.php?f=10&t=80202

2016-11-08 16:15:48 248

原创 AQS独占式获取源码全解析

public final void acquire(int arg) { // sss if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); }

2016-08-12 15:35:19 400

原创 AQS源码分析

private static boolean shouldParkAfterFailedAcquire(Node pred, Node node) { int ws = pred.waitStatus; if (ws == Node.SIGNAL) /* * This node has already set sta

2016-07-23 19:32:34 619

转载 数据结构 、 多线程 系列文章

http://blog.csdn.net/rss.html?type=column&column=killthreadseries  多线程 http://blog.csdn.net/morewindows/article/details/6678165/ 算法

2016-01-25 16:23:16 467

转载 io / nio 两篇经典文章

http://www.cnblogs.com/rollenholt/archive/2011/09/29/2195730.htmlhttp://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html

2015-12-21 18:39:22 355

转载 为什么Java byte 类型的取值范围是-128~127

概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1步骤:1.确定byte是1个字节,也就是8位2.最大的应该是0111 1111,因为第一位是符号位,0表示正数3.最小的应该是1000 0000,同理,表示负数最小的(1111 1111是最大的负数-1)4.0111 1111即1275.1000 0000按

2015-12-21 14:24:45 382

转载 深入研究java.lang.Runtime类

一、概述      Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。      一旦得到了一个当前的Runtime对象的引用,就

2015-12-04 18:37:30 272

原创 UML --类图中的关系详解

1、一般化关系:标示类与类之间的继承关系,接口与接口之间的继承关系或者类对接口的实现关系。java: extends 、 implements2、关联关系:类与类之间的联接,它使一个类知道另一个类的属性和方法。java:实例变量。3、聚合关系:属于关联关系的一种,是强的关联关系,聚合是整体和个体之间的关系。java:实例变量与关联关系区别:前者两个类在同一层次,后者两个类处于不平等的层

2015-12-03 16:14:46 404

转载 《JAVA与模式》之命令模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的:  命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。  命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构  命令模

2015-12-01 23:38:54 205

转载 Java的享元模式

Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。________________________________________Java中的String类型  在JAVA语言中,String类型就是使用了享元模式。String对象是

2015-12-01 00:08:49 216

转载 彻底理解JAVA动态代理

代理设计模式定义:为其他对象提供一种代理以控制对这个对象的访问。代理模式的结构如下图所示。动态代理使用java动态代理机制以巧妙的方式实现了代理模式的设计理念。代理模式示例代码public interface Subject { public void doSomething(); } public class Rea

2015-11-25 16:09:36 220

转载 《JAVA与模式》之装饰模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的:  装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构  装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情

2015-11-24 17:26:06 200

转载 《JAVA与模式》之合成模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述合成(Composite)模式的:  合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。合成模式  合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复

2015-11-24 16:36:43 343

转载 Builder模式在Java中的应用

在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则。我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数,DoDoContact(String nam

2015-11-22 14:15:22 285

转载 TreeMap 结构解析

TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点:       1、红黑树的基本概念。       2、红黑树增加节点、删除节点的实现过程。       3、红黑

2015-11-20 15:48:44 483

转载 Java IO最详解

初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!) 这是java io 比较基本的一些处理流,除此之外我们还会提到一些比

2015-11-10 22:06:57 322

转载 Java中hashCode的作用

以下是关于HashCode的官方文档定义:[plain] view plaincopyhashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。     hashCode 的常规协定是:   在 Java 应用程序执行期间,在同一对象上多次调用 hash

2015-11-10 10:24:09 237

转载 java与模式 博客园

http://www.cnblogs.com/java-my-life/archive/2012/04/20/2455726.html

2015-11-05 11:31:04 488

转载 ConcurrentHashMap 原理详解

ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码

2015-11-03 17:44:36 302

转载 快速排序 白话版

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速

2015-10-28 11:15:06 288

转载 Java 详解希尔(Shell)排序

希尔排序(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序。希尔排序并不稳定,O(1)的额外空间,时间复杂度为O(N*(logN)^2)。最坏的情况下的执行效率和在平均情况下的执行效率相比相差不多。    希尔排序间隔序列函数 h = h * 3+ 1    希尔排序比插入排序快很多的原因:当h值很大时,数据项每一趟排序移动的元素个数少,但移动的距离

2015-10-27 11:16:12 472

转载 归并排序

Java排序算法(九):归并排序归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有

2015-10-24 23:59:26 227

转载 重入、降级锁

/** *  *  * 两种互斥锁机制: *  * 1、synchronized *  * 2、ReentrantLock *  * ReentrantLock是jdk5的新特性,采用ReentrantLock可以完全替代替换synchronized传统的锁机制, * 而且采用ReentrantLock的方式更加面向对象,也更加灵活,网上有很多关于对比两者锁

2015-10-19 18:04:14 781

转载 ReentrantReadWriteLock 读写锁 概念

在多线程的环境下,对同一份数据进行读写,会涉及到线程安全的问题。比如在一个线程读取数据的时候,另外一个线程在写数据,而导致前后数据的不一致性;一个线程在写数据的时候,另一个线程也在写,同样也会导致线程前后看到的数据的不一致性。        这时候可以在读写方法中加入互斥锁,任何时候只能允许一个线程的一个读或写操作,而不允许其他线程的读或写操作,这样是可以解决这样以上的问题,但是效率却大打

2015-10-19 17:47:27 339

转载 Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景    大规模服务化之前,应用可能只是通过RMI或Hessian等

2015-10-19 15:55:32 329

转载 Dubbo入门实例

1. 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 主要核心部件 Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制.RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能Registry: 服务目录框架用于服务的注册和服务事件发布和订阅。 Dubbo采用全

2015-10-16 21:52:01 484

转载 interrupt、interrupted 、isInterrupted 区别

1、interrupt interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。

2015-10-14 17:14:22 292

转载 spring cron表达式

Cron表达式是一个字符串,字符串以5或6个空格隔开,分开工6或7个域,每一个域代表一个含义,Cron有如下两种语法 格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year 或 Seconds Minutes Hours DayofMonth Month DayofWeek 每一个域可出现的字符如下:代码S

2015-10-14 11:10:46 237

转载 HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。      数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难

2015-10-03 00:16:17 243

转载 Timer的缺陷 用ScheduledExecutorService替代

1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两个任务的间隔时间,会发生一些缺陷:下面看例子:Timer的源码:[java] view plai

2015-09-29 00:08:35 260

转载 Java中native关键字

今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记。native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。JNI是Java

2015-09-27 23:46:00 207

转载 Mybatis之配置文件中的objectFactory节点内容说明

Mybatis中有一个默认的创建类的对象,名字叫做DefaultObjectFactory,这个类用于负责创建对象实体类。从这个类的外部看,这个类的主要作用就是根据一个类的类型得到该类的一个实体对象,比如,我们给他一个Tiger的type,他将会给我们一个Tiger的实体对象,我们给他一个java.lang.List对象,他将会给我们一个List的实体对象。这个其实从它的名字上就能看出来。

2015-09-23 19:19:36 565

转载 Mybatis类型转换TypeHandler介绍

1.1     目录1.2     建立TypeHandler1.2.1    TypeHandler接口1.2.2    BaseTypeHandler抽象类1.3     注册TypeHandler1.4     Mybatis自动获取TypeHandler1.5     Mybatis中自动注册的TypeHandler  1.2     建立TypeHan

2015-09-23 18:53:39 11661 1

转载 SQL执行流程分析

本篇将走进mybatis的源码,分析mybatis 的执行流程, 好啦,鄙人不喜欢口水话,还是直接上干活吧:1. SqlSessionFactory 与 SqlSession.  通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过SqlSession去执行sql语句(注意:是从表面看,实际的待会儿就会讲

2015-09-23 16:04:14 278

转载 由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理

最近在用mybatis做项目,需要用到mybatis的拦截器功能,就顺便把mybatis的拦截器源码大致的看了一遍,为了温故而知新,在此就按照自己的理解由浅入深的理解一下它的设计。 和大家分享一下,不足和谬误之处欢迎交流。直接入正题。 首先,先不管mybatis的源码是怎么设计的,先假设一下自己要做一个拦截器应该怎么做。拦截器的实现都是基于代理的设计模式设计的,简单的说就是要创造一个目标类

2015-09-22 10:35:50 471 1

转载 Mybatis单表自动

package org.iMybatis.mapper.builder;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import org.ap

2015-09-17 15:10:51 273

原创 111

http://blog.csdn.net/hfmbook/article/details/41985853

2015-09-16 19:40:45 155

转载 java 之DelayQueue实际运用示例

在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。Delayed,一种混合风格的接口,用来标记那些应该在给定延迟时间之后执行的对象。此接口的实现必须定义

2015-09-15 19:35:10 182

转载 Java多线程中join方法的理解

hread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join();      //使调用线程 t 在此之前执行完毕。t.join(1000);  //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码:Java代码 

2015-08-27 22:07:30 143

转载 Java线程池使用说明

一 简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量

2015-08-20 23:07:29 218

SQL中文手册

官方 sql 语言中文手册 使用 SQL 合计函数 你可以确定数据组的各种统计。你可以把这些函数用于查询和合计表达式,条件是在具备 SQL特性的 QueryDef对象中或在创建基于SQL查询的 Recordset对象时。

2013-08-07

hink in Java 第四版练习答案(绝对完全版)

hink in Java 第四版练习答案(绝对完全版) Java核心编程 习题 答案 源码

2015-05-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除