- 博客(143)
- 资源 (20)
- 收藏
- 关注
原创 java设计模式(八)状态模式
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。看起来,状态模式好像是神通广大很厉害似的——居然能够“修改自身的类”!下面让我们一起来看一下他的厉害吧! 适用场景: 状态模式主要解决的是当控制一个对象状态装换的条件表达式过于复杂时
2012-12-10 15:18:40 384
原创 java设计模式(七)代理模式和java动态代理机制
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 代理设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,
2012-12-10 15:18:38 344
原创 java设计模式(六)观察者模式
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。《设计模式》一书对Obser
2012-12-10 15:18:36 574
原创 java设计模式(五)创建者模式和原型模式
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 创建者模式是创建型模式中最负责的一个设计模式了,创建者负责构建一个对象的各个部分,并且完成组装的过程.构建模式主要用来针对复杂产品生产,分离部件构建细节,以达到良好的伸缩性。把构造对象实例的逻辑移到了类的外部,在这个类外部定义了这个类的构造逻辑。它把一个复杂对象的
2012-12-10 15:18:33 427
原创 Java设计模式(四)策略模式
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类。 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Stra
2012-12-10 15:18:31 330
原创 java设计模式(二)设计模式分类和三种工厂模式
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 设计模式分类 首先先简单说一下设计模式的分类设计模式可以分为三大类,分别是创建型设计模式、行为型设计模式以及结构型设计模式。 创建型的设计模式:单例模式(Singleton)、构建模式(Builder)、原型模式(Prototype)、抽象工厂模式(Abstract F
2012-12-10 15:18:29 503
原创 Java设计模式(一)设计模式遵循的七大原则
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性。设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特征有很好的启发,不看设计模式,很难深层地体会到面向对象开发带来的好处
2012-12-10 15:18:27 362
转载 Java动态代理的实现详解
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。 ?在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 代理模式一般涉及到的角色有 –抽象角色:声明真实对象和代理对象的共同接口 –代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都
2012-12-10 15:18:23 444
原创 java反射详解
反射是JDK5.0提供的java新特性,反射的出现打破了java一些常规的规则,如,私有变量不可访问。 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”尽管在这样的定义与分类下Jav
2012-12-10 15:18:19 1790 2
原创 volatile关键字的用法
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中
2012-12-10 15:18:17 405
原创 java中Collection与Collections的区别
Collection是接口,Collections是工具类 1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 1) 排序(Sort)使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都
2012-12-10 15:18:15 416
原创 Java对象排序的3种实现方法
利用Collections工具类的sort方法实现排序/** * Java对象排序的3种实现方式 * @author zhangwenzhang * */public class TestObjectSort { /** * @param args */ public static void main(String[] arg
2012-12-10 15:18:12 5065
原创 增强型for循环的优点与缺点
先看如下代码: import java.util.*;public class For { public static void main(String args[]) { Set set = new HashSet(); String x = "a"; for (int i = 0; i set.ad
2012-12-10 15:18:10 1627 3
原创 JAVA中常用英文单词简写释义)
关于java ee, ide,jms,jmx,jndi等专业术语的全称问题 这里张孝祥老师只是大致提了下,我通过搜索资料,在这里把它们一一列出,并把最常用的几个已经背下. API (Application Programming Interface) 应用编程接口JRE (Java Runtime Enviroment) Java 运行时环境JDK (Java Developmen
2012-12-10 15:18:08 1438
原创 jdk1.7新特性
jdk1.7新特性 1 对集合类的语言支持; 2 自动资源管理; 3 改进的通用实例创建类型推断; 4 数字字面量下划线支持; 5 switch中使用string; 6 二进制字面量; 7 简化可变参数方法调用; 8 新增一些取环境信息的工具方法; 9 Boolean类型反转,空指针安全,参与位运算; 10 两个char间的equals; 11 安全的加减乘除;
2012-12-10 15:18:06 716
原创 JDK1.6(Mustang野马)的新特性
JDK1.6中包括10大新的特性 一:Desktop类和SystemTray类 二:使用JAXB2来实现对象与XML之间的映射 三:理解StAX 四:使用Compiler API 五:轻量级Http Server API 六:插入
2012-12-10 15:18:04 824
原创 Java1.5(Tiger)新特性简介
一、范型(generic)的支持 支持generic的tiger属于较1.4及以前最大的变化之一。由于支持范型,所以以前的诸多集合类(譬如,list和map)的接口都做了比较大的变化。而Java developer们从理论上说则可以摆脱使用括号的强制转型;使用类型安全(type-safe)的各种集合类,甚至可以写自己的支持范型的类。 Java在1.5之前一直没有相对应的功能。一个集合可
2012-12-10 15:18:02 477
原创 Concurrent多线程控制
在Java 5.0之前启动一个任务是通过调用Thread类的start()方法来实现的,任务的提于交和执行是同时进行的,如果你想对任务的执行进行调度或是控制同时执行的线程数量就需要额外编写代码来完成。5.0里提供了一个新的任务执行架构使你可以轻松地调度和控制任务的执行,并且可以建立一个类似数据库连接池的线程池来执行任务。这个架构主要有三个接口和其相应的具体类组成。这三个接口是Executor, E
2012-12-10 15:18:00 356
原创 Callable与Future
java.util.concurrent.Callable与java.util.concurrent.Future类可以协助您完成Future模式。Future模式在请求发生时,会先产生一个Future对象给发出请求的客户。它的作用类似于代理(Proxy)对象,而同时所代理的真正目标对象的生成是由一个新的线程持续进行。真正的目标对象生成之后,将之设置到Future之中,而当客户端真正需要目标对象时
2012-12-10 15:17:58 324
原创 Java中的多线程简单介绍(带代码)
一、提要java中的多线程算是java中的一个 很大的难点 ,虽然 看了 很多书 ,相信对于 很多 接触 java不够 深的人来说 ,多线程永远都是心中的痛!今天我们 就 通过大量的 例子 来 彻底把它征服 .二、Runable接口实现 Runable接口 是 实现多线程 的 一种方法。看例子 package thread; public
2012-12-10 15:17:56 385
原创 ThreadPoolExecutor线程池相关方法
ThreadPoolExecutor的构造函数说明: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit uni
2012-12-10 15:17:54 578
原创 ExecutorService线程池
原文地址:http://www.360doc.com/content/11/0908/11/7471983_146660376.shtml ExecutorService 建立多线程的步骤: 1。定义线程类 class Handler implements Runnable{} 2。建立ExecutorService线
2012-12-10 15:17:52 777
原创 ConcurrentLinkedQueue(无界队列) 的outofMemory错误解决方案
近期项目中碰到一个问题。 一个线程从MQ中取得数据,置于一个队列A(ConcurrentLinkedQueue类型)中,其它线程从A中取出数据进行处理。程序在低速运行时没有问题。在进行压力测试时,200万条数据以4000条/秒的速度进入A后,程序崩溃dump出core文件。 当时百思不得其解,经某大牛指点,可能是ConcurrentLinkedQueue没有对长度进行限制,
2012-12-10 15:17:49 1627
原创 探索 ConcurrentHashMap 高并发性的实现机制
原文地址:http://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/index.html 简介 ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。 由于 Conc
2012-12-10 15:17:45 445
原创 ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码
2012-12-10 15:17:43 329
原创 Java多线程总结之由synchronized说开去
这几天不断添加新内容,给个大概的提纲吧,方面朋友们阅读,各部分是用分割线隔开了的: synchronized与wait()/notify() JMM与synchronized ThreadLocal与synchronized ReentrantLock与synchronized 最重要一条: synchronized是针对对象的隐式锁使用的,注意是对象! 举个小例子,该例子没有
2012-12-10 15:17:41 378
原创 java反编译工具jad
(1)把jad.exe和所要反编译的class文件放在同一目录下 (2)执行命令jad -sjava *.class 这样就在该目录下生成了一个java文件 通过反编译可以清楚了了解到,泛型的工作是在编译的时候完成的,而多态的工作在编译的时候还没有涉及 jad.exe文件见附件 ,见邮箱草稿
2012-12-10 15:17:39 295
原创 JAVA编程经验
JDK和JRE 大家肯定在安装JDK的时候会有选择是否安装单独的jre,一般都会一起安装,我也建议大家这样做。因为这样更能帮助大家弄清楚它们的区别: Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windo
2012-12-10 15:17:36 395
原创 Object类分析equals、hashcode、clone
Object类中的equals(): Java代码 public boolean equals(Object obj) { return (this == obj); } public boolean equals(Object obj) { return (this == obj); } 可见equals方法就是比较引用是不
2012-12-10 15:17:34 396
原创 使用ConcurrentLinkedQueue尽量不用size()
服务端原本有个定时任务对一个集合ArrayList 中的消息做处理。 因为考虑到处理消息是先进先出原则,所以优化的时候考虑改用ConcurrentLinkedQueue 当时没仔细深入研究过这个集合就匆匆上线了。结果刚上线第二天就出问题了。服务端一次优化演变成了一个缺陷,还好及时回退了版本,后果才不是很严重。 回退后对ConcurrentLinkedQueue 做了一个简单的测试代码如下:
2012-12-10 15:17:32 1187
原创 PrepareStatement与Statement之间的区别
①PrepareStatement是预编译,对于批量处理可以大大提高运行效率。 ②如果说所使用的SQL语句是一次性的话,那么使用Statement较好,因为,这样的话使用PrepareStatement并不会产生太大的效果,相反,可能还会在性能方面劣于Statement,毕竟PrepareStatement对象开销比Statement较大。 ③Statement每次执行SQL语句,相关数据库都
2012-12-10 15:17:30 413
原创 BlockingQueue详解
本例介绍一个特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间时才会被唤醒继续操作。 本例再次实现前面介绍的篮子程序
2012-12-10 15:17:28 378
原创 Java多线程总结之线程安全队列Queue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的访问
2012-12-10 15:17:26 660
原创 SQL中的事务以及批量更新
1、SQL中的事务指的是将一组SQL语句同时提交,举个例子吧:在银行转账的时候,它的执行过程应该是先把钱取出来,然后再把钱存到另一个账号里面去吧,它的SQL执行过程应该是先DELETE,然后再UPDATE吧,如果在UPDATE的时候突然网络出了问题,其结果会是怎样呢?按照单条语句的提交策略则会因此导致钱没存进去,但是却已经取出来啦,这样的话我相信银行早晚会乱套的。但是,我们可以才去事务的方法去解决
2012-12-10 15:17:24 789
原创 java异常处理机制
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java
2012-12-10 15:17:22 386
原创 Java多线程基础知识
多线程是java应用程序的一个特点,掌握java的多线程也是作为一java程序员必备的知识。多线程指的是在单个程序中可以同时运行多个同的线程执行不同的任务.线程是程序内的顺序控制流,只能使用分配给序的资源和环境。还记得刚开始学习的时候总是和进程分不清,总是对这两个名词所迷惑。 下面就首先对这两个名词区分来作为本篇博客的开始: 一、线程与进程的区别 多个进程的内部数据和状态都是完全独立
2012-12-10 15:17:20 485
原创 深入java虚拟机(八)开发自己的类加载器
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在大多数情况下,系统默认提供的类加载器实现已经可以满足需求。但是在某些情况下,您还是需要为应用开发出自己的类加载器。比如您的应用通过网络来传输 Java 类的字节代码,为了保证安全性,这些字节代码经过了加密处理。这个时候您就需要自己的类加载器来从某个网络地址上读取加密后的字节代
2012-12-10 15:17:18 470
原创 深入java虚拟机(七)深入源码看java类加载器ClassLoader
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 ClassLoader类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称(即为包名加类名的全称),那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。java.lang.C
2012-12-10 15:17:16 544
原创 深入java虚拟机(六)——类加载的父亲委托机制
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在前面两篇博客中我们简单介绍了类加载器的基础和类的生命周期的基础内容,今天我们来继续深入的来看一下java的类加载器的详细内容。我们都知道。类加载器用来把类加载到java虚拟机。从JDK2.0开始,类的加载过程采用父亲委托机制。JVM的ClassLoader采用的是树形结构,除
2012-12-10 15:17:14 556
MyBatis_Generator_1.3.1
2015-09-02
Centos下NFS安装与配置-V1.0
2015-07-21
tomcat6,7,8集群session共享所需jar包(支持kryo,javolution)
2014-09-23
安装Nginx-1.7.4作为Windows服务自启动运行
2014-09-23
WinDBG JVM
2013-06-06
Jad(java反编译工具)
2012-12-05
FindBugs插件
2012-11-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人