自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (7)
  • 收藏
  • 关注

转载 深入JVM锁机制2-Lock

前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实

2013-08-30 16:18:00 808

转载 深入JVM锁机制1-synchronized

目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。   数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令

2013-08-30 16:15:35 752

转载 你应该更新的Java知识之Optional

java.lang.NullPointerException,只要敢自称Java程序员,那对这个异常就再熟悉不过了。为了防止抛出这个异常,我们经常会写出这样的代码:Person person = people.find("John Smith");if (person != null) { person.doSomething();}遗憾的是,在绝大多数Java代码里,

2013-08-28 10:55:48 1268

转载 你应该更新的Java知识之惰性求值

在开发中,我们经常会遇到一些需要延迟计算的情形,比如某些运算非常消耗资源,如果提前算出来却没有用到,会得不偿失。在计算机科学中,有个专门的术语形容它:惰性求值。惰性求值是一种求值策略,也就是把求值延迟到真正需要的时候。在Java里,我们有一个专门的设计模式几乎就是为了处理这种情形而生的:Proxy。不过,现在我们有了新的选择:Supplier。我们先来看看Supplier的定义:

2013-08-28 10:54:39 983

转载 你应该更新的Java知识 Java Guava 集合

我们打算做要做这样一件事,给出所有有资格过五四青年节的人的名字。如果你不知道的话,有资格过五四青年节的人要年龄在14周岁到28周岁之间。按照传统的思路,这段代码应该是这样写:List names = new ArrayList();for (Person person : people) {  int age = person.getAge();  if (age >=

2013-08-28 10:53:32 1487

转载 你应该更新的Java知识之集合初始化

在Java里,如何初始化一个List呢?我知道,你可以毫不费力地写出这样的代码:List names = new ArrayList();names.add("dreamhead");这几乎是在Java 5/6风格的代码中随处可见的,但不知道你怎么想,反正这样的代码让我觉得很不爽。首先,变量声明里存在重复,明明我已经知道它是一个String的List,还要再后面

2013-08-28 10:52:45 996

转载 你应该更新的Java知识之Observer

作为一个Java程序员,不熟悉设计模式简直不好意思和人打招呼,而Observer模式可以说是位列最常用的设计模式之列,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式。手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和Observer,从JDK 1.0

2013-08-28 10:51:56 782

转载 你应该更新的Java知识之构建工具

时至今日,如果你的Java项目依然需要启动一个特定的工具,比如IDE,才能编译部署,那你的项目不在本文的讨论之中,因为实在落后得太让人无语了。好,回归正题。旧时代的Java世界,构建工具等同于两个词Ant和Maven。Ant源自Make,同JUnit一样,它也是一个航班产物(参见《Ant权威指南》序)。不过,Make的基础注定了它的起点不高,所有一切都要手工打造。我还依稀记得曾几何

2013-08-28 10:51:05 813

转载 你应该更新的Java知识之常用程序库(二)

Hamcrest一句话,如果你写单元测试,就应该用Hamcrest。如今不写单元测试,你都不好意思说自己在做工程项目了。但你一般这么写断言呢?如果你还写成下面这样,我只能说你落伍了:  assertEquals(a, b);请告诉我,哪个是执行结果,哪个是预期结果,不管你是怎样,反正大多数情况下,我是记不住的。所以,这个在只重功能不重可读性年代产生的API该更新了。

2013-08-28 10:50:17 707

转载 你应该更新的Java知识之常用程序库(一)

http://www.blogbus.com/dreamhead-logs/226738702.html在很多人眼中,Java已经是一门垂垂老矣的语言,但并不妨碍Java世界依然在前进。如果你曾离开Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老Java中的新东西。Guava一句话,只要你做Java项目,就应该用Guava。guav

2013-08-28 10:49:16 812

转载 NoSQL数据库探讨之一 - 为什么要用非关系数据库?

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1、High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和

2013-08-27 17:49:30 727

转载 google Collection 的MapMaker使用体验

前几天准备在写一个本地缓存的时候,有一个功能是设置超时时间,我当时用的是每次get的时候判断上次get的时间,跟当前时间对比看是否超过预期时间,来决定是否过期的。       RednaxelaFX提示我说,可以考虑使用googleCollection的MapMaker,除了可以设置超时功能外,还可以绑定key的未取到值的function,当通过get(key)取缓存为空的时候,可以通过这

2013-08-27 16:39:05 5315 2

转载 CentOS 查看IP,端口 修改IP,打开端口生效

你知道,在windows中习惯了ipconfig,在CentOS中查看IP是感觉麻烦了好多;今天收集的资料,就集中解决IP 端口的问题:查看IPifconfig eth0 →查看IP 不过输出的信息多一些ifconfig|grep 'Bcast'  → 这个输出的信息要清晰多了修改IP并生效编辑/etc/sysconfig/network-scripts/ifcfg-e

2013-08-23 17:20:19 920

转载 SecureCRT的详细使用教程

SecureCRT技巧总结目录SecureCRT技巧总结... 1一、安装和激活... 1二、一些按钮的中文翻译... 4三、创建一个普通的Session. 5四、美化终端窗口和字体。... 9五、修改默认的session配置... 10六、SecureCRT自带的文件传输... 11七、克隆session. 12八、

2013-08-23 17:19:38 1888

转载 SecureCRT连接VMWare中Linux

转者严正声明:网络上关于SecureCRT连VMWare中linux的博客大部分都带有误导人的意味,我也深受其害,当然也不能怪别人,至少我在看博客的时候学到了不少的东西,之前按照下面的博客配置,确实能用SecureCRT连VMWare中的linux,但是导致了意外的一个问题,就是VMWare中的linux将不能上网。现在总结下来,其实真的很简单,要实现既能用SecureCRT连VMWare中的li

2013-08-23 17:11:20 906

转载 J.U.C包介绍

一、包结构1.线程池2.同步集合a)BlockingQueueArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueDelayQueueSynchronousQueueConcurrentLinkedQueueb)ConcurrentMapConcurrentHas

2013-08-23 13:05:44 1359

转载 JUC 基础内容概述

Concurrent Programming in Java 的作者 Doug Lea 编写了一个极其优秀的、免费的并发实用程序包,它包括并发应用程序的锁、互斥、队列、线程池、轻量级任务、有效的并发集合、原子的算术操作和其它基本构件。我们一般称这个包为 J.U.C。1. JUC概况以下是Java JUC包的主体结构:Atomic : AtomicIntegerLocks

2013-08-23 12:25:07 6210

转载 Java中遍历大容量map的正确方法

import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapTest { public static void main(String[] args) { Map map = new HashMap(); map.put("1", "1"); map.put(

2013-08-15 15:00:50 1246

转载 Java多线程初学者指南(2):为什么要进行数据同步

Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问

2013-08-08 15:55:21 1140

转载 Java多线程初学者指南(1):线程简介

一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程(由操

2013-08-07 14:24:01 720

转载 Java线程join()方法的用处

run() 和start() 是大家都很熟悉的两个方法。把希望并行处理的代码都放在run() 中;stat() 用于自动调用run(),这是JAVA的内在机制规定的。并且run() 的访问控制符必须是public,返回值必须是void(这种说法不准确,run() 没有返回值),run()不带参数。闲话少说,我们要讲的是join(),我们首先来看个例子:

2013-08-07 14:19:49 718

原创 5个代码搜索引擎

http://code.ohloh.net/http://www.krugle.com/http://searchcode.com/http://nerdydata.com/http://www.symbolhound.com/

2013-08-07 14:02:04 976

转载 详细分析Java中断机制

1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出

2013-08-07 10:21:12 897

转载 eclipse中配置maven

下载地址http://maven.apache.org/download.cgi在线文档http://maven.apache.org/ref/3.0.5/安装一.安装JDK,配置好JAVA_HOME,配置好PATH测试打开cmdecho %Java_Home%java -version二.安装配置manen1

2013-08-03 17:16:49 12659

原创 ibator

ibator,Eclipse安装地址: http://ibatis.apache.org/tools/ibatoribatorConfig配置文件

2013-08-01 15:29:26 957

AOP的实现机制.pdf

AOP的实现机制的实例代码和文档一起使用。

2013-02-22

commons-cli-1.2-bin.zip

commons-cli的jar包 Commons CLI 是一个用来处理命令行参数的 Java 工具包。

2012-01-27

Java网络编程,一本入门级书籍

Java网络编程,关于java网络方面的入门级书籍

2009-08-04

即用即查——JSP函数与对象参考手册

即用即查——JSP函数与对象参考手册 即用即查——JSP函数与对象参考手册

2008-11-21

JSP数据库开发实例精粹.pdf

JSP数据库开发实例精粹.pdf

2008-02-04

JAVA编程习题与解答(全美经典学习指导系列)中文版

JAVA编程习题与解答(全美经典学习指导系列)中文版

2007-07-12

空空如也

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

TA关注的人

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