自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 hibernate id 联合主键生成策略

如果数据库中用多个字段而不仅仅是一个字段作为主键,也就是联合主键,这个时候就可以使用hibernate提供的联合主键生成策略。具体如下:可以使用一个组件作为一个实体类的标识符。你的组件类必须满足以下要求:它必须实现 java.io.Serializable 接口它必须重新实现 equals() 和 hashCode() 方法,始终和组合关键字在数据库中的概念保持一致...

2013-02-24 14:42:56 119

原创 hibernate id 生成策略

1.介绍Hibernate是目前最为常用的ORM框架,当然也有人会选择iBATIS或者其他的架构.这里我们着重讲Hibernate的ID生成策略 2.可选的ID策略生成方式 (1)native/auto根据不同的数据库采用不同的ID生成方式,例如:在SQL Server中采用identity; 在MySQL中采用auto_increment; 在ORACLE中就会采用se...

2013-02-23 16:37:50 86

原创 hibernate类型转换

hibernate类型转换[img]http://dl.iteye.com/upload/attachment/0080/7671/e88eb8b1-1441-3b56-9346-8bd0d8600407.png[/img][img]http://dl.iteye.com/upload/attachment/0080/7673/105efb45-4a8d-3c3e-aedf-f56...

2013-02-23 15:29:16 158

原创 第一个hibernate程序(annotation版本)

上一次提到了使用xml方式来进行实体类的匹配。现在我们要是用annotation来配置,以后就不需要使用xml来配置。 1. 使用annotation我们需要在上一篇文章的基础上添加如下几个包: ejb3-persistence.jar,hibernate-annotations.jar,hibernate-commons-annotations.jar。 2....

2013-02-23 14:50:57 101

原创 第一个hibernate程序(xml版本)

1. 在使用hibernate3.3 的时候使用的包的配置情况: a.[b] [color=orange]hibernate3.jar[/color][/b] ---这是hibernate的核心包。 b.在lib文件夹中的required包中所用的jar包:[img]http://dl.iteye.com/upload/attachment/0080/7659/9007385e...

2013-02-23 14:38:47 71

原创 java io

Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWri...

2013-01-31 23:12:10 49

原创 NioSocketAcceptor初始化

一、Acceptor初始化1. new NIOSocketAccptor() 在NioSocketAcceptor中,初始化Acceptor的时候,我们会同时创建NIOProcessorpublic NioSocketAcceptor() { super(new DefaultSocketSessionConfig(), NioProcessor.class)...

2013-01-08 23:20:41 1375

原创 FileChannel

一个FileChannel 实例只能通过在一个打开的file对象(RandomAccessFile、FileInputStream或 FileOutputStream)上调用getChannel( )方法获取.调用getChannel( )方法会返回一个连接到相同文件的FileChannel 对象且该FileChannel 对象具有与file对象相同的访问权限。然后您就可以使用该通道对象...

2012-12-27 22:06:02 108

原创 缓冲区基础

一个Buffer 对象是固定数量的数据的容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。对于每个非布尔原始数据类型都有一个缓冲区类。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的。下面就是buffer的类结构图:[img]http://dl.itey...

2012-12-27 16:07:49 364

原创 NIO和传统的IO区别

传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。 小量的线...

2012-12-24 14:26:51 58

原创 java 多线程机制

程序、进程和线程: 程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的产生、存在和消亡的过程,也是一个动态的概念。每个进程都有一段专用的内存区域,而线程间可以共享相同的内存区域(包括代码和数据),并...

2012-12-17 17:20:12 134

原创 java读写锁

java5 过后有lock锁的读写机制[code="java"]package cn.com.scl.cache import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.lo...

2012-12-17 17:07:52 79

原创 阻塞队列

使用BlockingQueue的关键技术点如下: 1.BlockingQueue定义的常用方法如下: 1)add(anObject):把anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则招聘异常 2)offer(anObject):表示如果可能的话,将anObject加到Bl...

2012-12-17 16:53:53 61

原创 消费者生产者模式三种模式实现

生产者和消费中模式在多线程中时经典中,我们下面通过这种方式来看看阻塞队列,锁机制以及最原始的方式的区别与联系:[b][size=medium]对于通过阻塞队列:[/size][/b][code="java"] /** * */package com.chihonglu.ConsumerProducer.blockingQueue;import ja...

2012-12-17 16:52:19 109

原创 java 线程池

1. 引言     合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了...

2012-12-17 13:41:50 58

原创 Exchanger使用

JDK1.5中有一个Exchanger类,可以用来完成线程间的数据交换。 类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。当两个线程通过Exchanger交换了对象,这个交换对于两个线程来说都是安全的。 以下是例子...

2012-12-16 16:34:24 464

原创 CountDownLatch的使用

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指定了计数的次数co...

2012-12-16 16:26:54 69

原创 CyclicBarrier同步工具应用

一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之...

2012-12-16 16:17:10 68

原创 Java 信号量 Semaphore 介绍

Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Semap...

2012-12-16 15:53:48 76

原创 建造者模式

Builder模式的定义是:[b]将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。[/b] 首先它意图是要构建一个复杂的对象,而这个复杂的对象往往需要由好几个子对象或分步聚来完成最终的这个对象的构建,而这个复杂对象的子对像经常需要不断的变化,但它的构建过程是相对是稳定的。在构造一个对象的时候,往往有很多复杂的过程和次序,例如建造一个机器人,那要先造头,...

2012-12-15 21:25:17 69

原创 策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。[img]http://dl.iteye.com/upload/attachment/0077/8431/7bb3f063-40a6-30be-a17b-2b33458fee93.jpg[/img]Context( 应用场景 ): 需要使用 C...

2012-12-12 22:53:16 61

原创 代理模式

一、定义和分类代理模式在设计模式中的定义就是:为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。   那么什么时候要使用代理模式呢?在对已有的方法进行使用的时候出现需要对原有方法进行改进或者修改,这时候有两种改进选择:修改原有方法来适应现...

2012-12-12 21:38:37 87

原创 模板模式

1. 概述  定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2. 模式中的角色  2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。  2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。3. 模式解读  3.1 模板方法类图...

2012-12-04 15:23:32 59

原创 门面模式

外观模式(又称门面模式)是软件工程中常用的一种软件设计模式。提供了统一的接口。用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。[img]http://dl.iteye.com/upload/attachment/0077/3587/6d401ce6-b45c-302f-90a1-f320d4fc66aa.png[/img] Facade  这个外观类...

2012-12-02 22:41:08 68

原创 适配器模式

定义:[b]适配器模式将一个接口转换成客户希望的另外一个接口。它使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。[/b] 让我们来看看他的模型图: [img]http://dl.iteye.com/upload/attachment/0077/3570/23fb64b5-9961-38b9-acea-31a595ff308d.jpg[/img] ...

2012-12-02 22:01:52 58

原创 命令模式

 定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。结构和说明Command:定义命令的接口,声明执行的方法。ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。Receiver:接收者,真正执行命令的对...

2012-12-02 20:46:07 116

原创 单例模式

我们都知道单例模式定义其实很简单:确保一个类只有一个实例,并提供一个全局访问点。其实,创建单例模式四种方法,如下:1. 我们一般的做法都是创建一个私有构造器,通过调用方法来进行创建,代码如下:[code="java"]public class Singleton { private static Singleton singleton; private Sin...

2012-12-02 16:27:13 54

原创 工厂模式

工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) :定义一个创建对象的接口,但是由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。3. 抽象工厂模式(Abstract Factory) : 提供一个接口,用于[b]创建相关或依赖对象的...

2012-12-02 15:39:02 64

原创 装饰模式

今天我们来看看装饰模式,官网上的定义为[b]装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者模式提供了比集成更有弹性的体态方案[/b]。 我们说的更具体一点,现在我们有一个基类,但是现在我们需要给他添加一些功能或者属性,一般的做法就是继承基类,添加新增的方法和属性,但是如果我还需要增加一个方法和属性,有需要在上面的基础上再继承。这样导致类与类之间聚合度很强以及...

2012-12-01 16:00:19 85

原创 观察者模式

简单地说,观察者模式定义了[b][size=midium]一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象[/size][/b]。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。在java.util包中,已经内置了观察者模式,他们分别为被观察者(类Obserable)和观察者接口(Observer)代码如下:[code...

2012-11-29 23:55:13 65

空空如也

空空如也

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

TA关注的人

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