自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(193)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring的组件扫描

Spring2.0以后的版本中,引入了基于注解(Annotation)的配置。注解是JDK1.5的一个新特性。XML配置灵活。注解和XML可以配合使用。[b]1. Spring的注解支持:[/b]在spring的配置文件中引入context的Schema命名空间,并添加注解配置标签:[code="xml"] [/co...

2017-09-16 21:58:30 203

原创 ActiveMQ死信队列

Apache的ActiveMQ是JMS的一个开源实现,下面来说说ActiveMQ的使用1. admin的web管理浏览器输入http://localhost:8161/,打开后台管理页面:2. DLQ - 死信队列 (Dead Letter Queue)用来保存处理失败或者过期的消息。出现下面情况时,消息会被重发:i. 事务会话被回滚。ii. 事...

2017-07-03 10:21:02 705

原创 AtomicReferenceFieldUpdater 使用

[b]AtomicReferenceFieldUpdater[/b]位于[b]java.util.concurrent.atomic[/b]包中,作用是[color=red]原子性地更新对象属性[/color]。以原子性更新Cat类的name属性为例:name属性需要保持[color=red]可见性[/color],且[color=red]不是私有变量[/color]。[cod...

2014-11-19 22:13:43 251

原创 Struts2系列之三:注解式Action

struts2是的配置文件是struts.xml,可以将Action的URL映射和结果放在该文件中,也可以通过Convention Plugin支持注解方式来配置URL映射和结果。使用时需要把Convention Plugin添加到classpath中;如果是maven工程则添加依赖:[code="xml"] org.apache.struts struts2-c...

2014-10-08 23:18:57 233

原创 Netty系列之一:回显服务端和客户端

Netty是一款基于Java NIO的框架,能够建立通道、处理事件、编解码和异常处理等,为上层应用提供了清晰、简洁的开发接口:减少用户的编码和错误,使应用开发者能够把注意力集中在业务逻辑上。下面以回显功能为例:[size=medium][color=brown]一、服务端:[/color][/size][size=medium]1. 实例化引导类[/size]抽...

2014-09-02 22:26:10 343

原创 Java正则表达式实例

[size=medium]题目[/size]: 有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。[size=medium]文件内容[/size]:[b]context.txt[/b][color=blue]“并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(fligh...

2014-08-25 22:50:16 97

原创 AtomicInteger 使用

Java中,i++和++i都不是原子操作,多线程环境下需要使用synchronized关键字。JDK1.5的java.util.concurrent.atomic包提供了原子操作类,通过Unsafe类调native方法来实现。 这里以AtomicInteger为例:[b]内部存储[/b]维护了一个整型值,其初始值为0。考虑到多线程操作,使用volatile来保证其可见...

2014-08-02 22:57:39 222

原创 本地事务系列之五:使用Transactional注解

AOP的配置稍显复杂,通过[color=red]@Transactional[/color]注解,同样可以实现:1. 在需要事务的类或方法上加[color=red]@Transactional[/color]: 如果是类上加注解,该类的所有public方法都会应用事务 如果是方法上加注解,该方法会应用事务。 在接口上加注解有风险,如果使用CGLIB(类代理)将不...

2014-08-02 18:16:57 304

原创 本地事务系列之四:使用AOP

Spring AOP通过在文件中配置来管理事务,好处是对代码侵入性小。Spring AOP使用AspectJ表达式来定义切点,所以pom文件加入:[code="xml"] org.aspectj aspectjweaver 1.7.0[/code]FruitShop实现:方法中除了使用继承自JdbcDaoSupport的Jdbc...

2014-08-02 17:08:19 102

原创 本地事务系列之三:使用TransactionTemplate

TransactionTemplate的灵活性好,可以给代码块加事务处理,而不是方法粒度的控制。FruitShop实现:[code="java"]public class TxTemplateJdbcFruitShop extends JdbcDaoSupport implements FruitShop { private PlatformTransactionManager...

2014-07-17 22:15:33 564

原创 本地事务系列之二:使用PlatformTransactionManager

Spring的事务管理器接口:[code="java"]public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; // 获取事务状态 void com...

2014-07-17 21:37:07 1000

原创 本地事务系列之一:JDBC操作

本地事务即对一个数据源进行操作。大多数数据库支持事务。先看没有事务的时候,导致的数据不一致问题。准备数据:[code="sql"]-- MySQL-- Create the databaseDROP DATABASE IF EXISTS spring;CREATE DATABASE spring-- Drop three tables if exist...

2014-07-08 23:04:31 100

原创 MySQL 触发器

触发器的作用是在增、删、改操作之前(或之后)自动调用的SQL语句或存储过程。比如为了保持数据的一致性,删除订单记录时,触发删除订单详细记录。[size=medium]1. 创建触发器:[/size][code="sql"]DELIMITER $$ -- 结束符改为$$ CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|...

2014-06-30 21:35:09 98

原创 SQL CASE WHEN实例

有三张表: 学生表student(stu_id, name) 成绩表scores(stu_id, subject, score) 补考成绩表(stu_id, subject, score) 其中: stu_id:ID name:姓名 subject:课程 ...

2014-05-22 22:21:03 97

原创 JVM 四种引用

[size=medium]1. 强引用[/size]指通过普通方式创建一个对象,并把这个对象赋给一个引用变量。只要还有引用变量指向,就不会被JVM回收,即使在内存不足时。[size=medium]2. 软引用[/size]通过SoftReference实现。和强引用类似,区别是当内存不足时会被JVM回收。[code="java"]public sta...

2014-04-24 19:56:09 105

原创 PushbackInputStream 源码分析

扩展java.io.FilterInputStream,代表的是可放回输入流。用于根据特定字符来判断流类型或编码等。[size=medium]1. 内部存储:[/size][code="java"]protected byte[] buf; // 缓冲区,从底层流获取数据protected int pos; // 下一个要读取字节的位置protected vol...

2014-04-19 12:04:46 133

原创 NIO UDP 编程

和TCP的SocketChannel类似,UDP的[color=red]DatagramChannel[/color]能充分利用NIO的优势。服务端:Selector, [color=red]DatagramChannel[/color], ByteBuffer客户端:[color=red]DatagramChannel[/color], ByteBuffer区别:...

2014-04-17 23:18:09 204

原创 Kafka 安装和测试

[size=medium]1. 简介[/size]kafka (官网地址:[url]http://kafka.apache.org[/url])是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。[img]http://dl2.iteye.com/upload/attachment/0096/1014/758475a7-1c1b-3c60-a753-c04a6debec0d.j...

2014-04-15 10:31:04 458

原创 Spring AOP系列之五:后置通知

和前置通知类似,通过实现[color=red]org.springframework.aop.AfterReturningAdvice[/color]来完成后置通知:[code="java"]public class CarAfterAdvice implements AfterReturningAdvice { @Override // returnValue 方法返...

2014-04-14 08:59:58 109

原创 Spring AOP系列之四:前置通知

通过实现[color=red]org.springframework.aop.MethodBeforeAdvice[/color]来完成前置通知:[code="java"]public class CarBeforeAdvice implements MethodBeforeAdvice { @Override // method 目标类方法,args 方...

2014-04-13 21:28:21 115

原创 Spring AOP系列之三:环绕代理

通过实现[color=red]org.aopalliance.intercept.MethodInterceptor[/color]接口来实现环绕通知:[code="java"]public class CarAroundProxy implements MethodInterceptor { @Override public Object invoke(MethodInv...

2014-04-13 18:20:29 99

原创 Spring AOP系列之二:Java代理

通过Java代理的方式:汽车的代理,需要实现[color=red]java.lang.reflect.InvocationHandler[/color]接口[code="java"]public class CarJavaProxy implements InvocationHandler { private Object car; public void setCar...

2014-04-13 18:00:53 91

原创 Spring AOP系列之一:手动方式

AOP (Aspect Oriented Programming)面向切面编程,是对OOP (Object Oriented Programming)面向对象编程很好的补充,可以在不改变原始目标原型的情况下,动态地添加通用逻辑,完成业务逻辑和通用处理分离,实现解耦和利于扩展。首先看下手动方式,没有使用AOP代理:车辆接口:[code="java"]public in...

2014-04-13 17:44:05 77

原创 Eclipse TCP/IP Monitor 的使用

Eclipse自带的TCP/IP Monitor为我们检查请求和响应提供了方便。正常情况下,请求和响应走的流程是:i. 客户端 ----> 请求包 ----> 服务端:端口号 ii. 服务端:端口号 ----> 响应包 ---> 客户端经过Monitor拦截后,变成:i. 客户端 ----> 请求包 ----> TCP监视器:端口号 ii. TC...

2014-04-13 17:03:07 158

原创 BeanCopier系列之三:缓存BeanCopier提升性能

[url=http://czj4451.iteye.com/blog/1998750]BeanCopier系列之一:特性测试[/url][url=http://czj4451.iteye.com/blog/2044101]BeanCopier系列之二:使用Converter[/url]BeanCopier拷贝速度快,性能瓶颈出现在创建BeanCopier实例的过程中。所以,...

2014-04-12 18:14:13 358

原创 BeanCopier系列之二:使用Converter

[url=http://czj4451.iteye.com/blog/1998750]BeanCopier系列之一:特性测试[/url][url=http://czj4451.iteye.com/blog/2044150]BeanCopier系列之三:缓存BeanCopier提升性能[/url] 当源和目标类的属性类型不同时,不能拷贝该属性,此时我们可以通过实现Converter...

2014-04-12 17:36:30 348

原创 BeanCopier系列之一:特性测试

[url=http://czj4451.iteye.com/blog/2044101]BeanCopier系列之二:使用Converter[/url][url=http://czj4451.iteye.com/blog/2044150]BeanCopier系列之三:缓存BeanCopier提升性能[/url]cglib是一款比较底层的操作java字节码的框架。下面通过拷贝b...

2014-04-12 15:15:35 131

原创 NIO Socket 编程

Java NIO (Nonblocking IO)解决了常规IO的瓶颈:a. 服务端的监听操作会阻塞而无法处理其它事务。多线程方式受到线程池和系统资源的限制,同步操作将会变得复杂。多线程操作磁盘将会导致响应慢甚至死锁。b. 普通I/O通过Stream来操作,开发简单,但是对I/O的控制力弱c. 普通IO的读取或写入会在JVM内存和操作系统内存之间进行复制,开销较大。...

2014-04-11 22:48:32 122

原创 Linux安装JDK

[size=medium]1. 下载[/size][url]http://www.oracle.com/technetwork/java/javase/downloads/index.html[/url][img]http://dl2.iteye.com/upload/attachment/0095/8744/f0405064-4c6b-35ec-9a22-4fca077aa9cb...

2014-04-08 23:04:56 65

原创 myBatis系列之七:事务管理

[url=http://czj4451.iteye.com/blog/1976365]myBatis系列之一:搭建开发环境[/url][url=http://czj4451.iteye.com/blog/1980569]myBatis系列之二:以接口方式交互数据[/url][url=http://czj4451.iteye.com/blog/1982653]myBatis系列之三:增删改查...

2014-04-01 15:36:13 345

原创 Maven scope 类型

[size=medium]1. compile[/size][b]编译[/b]范围。默认scope。在工程编译(classpath)和打包时(如war, ear等,会包含该jar文件)有效。[size=medium]2. runtime[/size][b]运行时[/b]范围,用于运行和测试。编译代码时不需要该jar包,打war包时会被包含到其中,供容器动...

2014-03-26 22:21:55 120

原创 常用正则表达式

1. 日期[code="js"]function valiDate(time) { regex = /^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1]) ([0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$/; if (!regex.test(time)) { alert('时间格式不正确:需为yyyy-MM-dd ...

2014-03-19 09:58:23 91

原创 卡片扔掉奇数位 算法

有N张卡片,标号为从1到N。第一轮抽取到奇数位时,将卡片扔掉,偶数位保留;第二轮扔掉剩下来的奇数位。以此类推,最后剩下的卡片标号为?[size=medium]1. 列表实现[/size][code="java"]private static int retrieveLastViaList(int n) { LinkedList list = new LinkedList...

2014-03-15 18:03:37 147

原创 Ubuntu上安装Redis

[size=medium]1. 安装make, gcc和python-dev[/size]make, gcc是Redis的编译工具,python作为Redis的客户端语言[code="shell"]sudo apt-get updatesudo apt-get install make gcc python-dev[/code]如果安装过程中出现依赖问题,可以使...

2014-02-28 00:06:31 73

原创 hessian系列之三:与Spring集成

Spring封装了hessian客户端和服务端的通用代码,把实现者和调用者作为bean放到spring容器中管理,简化了开发。实际生产情况,接口项目里面只定义接口,分别为服务端项目和客户端项目所引用:[size=medium]1. 接口项目:[/size]pom.xml文件:[code="xml"]com.john.springhessian-intf1.0...

2014-02-17 20:21:42 252

原创 hessian系列之二:上传文件

hessian较早版本通过 byte[] 进行文件传输;4.0之后支持 InputStream 作为参数或返回值进行传输。注意:hessian会读取整个文件,如果文件过大,会导致JVM内存溢出。可以通过控制上传文件的大小,设置合理的JVM参数,以及采用随机读取方式来解决。[size=medium]1. 接口:[/size]一般放在独立的工程中,供服务端和客户端引用...

2014-02-17 17:16:15 124

原创 hessian系列之一:Hello world

Hessian是一个Web Service的轻量级二进制协议,使用起来比较简单。随着信息技术的发展,不同语言或平台系统之间的交互越来越多,普通Web Service使用起来会比较复杂,Hessian相对简单。下面介绍下使用Hessian实现异构系统之间的数据交互:Hessian构建服务和客户端一般需要如下四个步骤:1. 定义接口API2. 服务端实现-实现接口...

2014-01-06 20:51:28 83

原创 MD5生成消息摘要

[code="java"]public class MD5Util { private static final String MD5 = "MD5"; private static final int THIRTY_TWO = 32; private static final int SHIFT = 4; ...

2013-12-28 16:08:48 325

原创 myBatis系列之六:与SpringMVC集成

[url=http://czj4451.iteye.com/blog/1976365]myBatis系列之一:搭建开发环境[/url][url=http://czj4451.iteye.com/blog/1980569]myBatis系列之二:以接口方式交互数据[/url][url=http://czj4451.iteye.com/blog/1982653]myBatis系列之三:增删改查...

2013-12-26 13:33:11 80

原创 SpringMVC系列之三:集成Log4j

[url=http://czj4451.iteye.com/blog/1958594]SpringMVC系列之一、集成JSP[/url][url=http://czj4451.iteye.com/blog/1958909]SpringMVC系列之二、集成FreeMarker[/url]SpringMVC系列之三、集成Log4j在[url=http://czj4451.iteye.c...

2013-12-20 15:42:06 127

Windows Communication Foundation 入门.pdf

一本介绍C#的WCF的书,通俗易懂,入门比较好

2009-09-23

空空如也

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

TA关注的人

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