自定义博客皮肤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 271

原创 ActiveMQ死信队列

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

2017-07-03 10:21:02 768

原创 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 334

原创 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 305

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

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

2014-09-02 22:26:10 401

原创 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 137

原创 AtomicInteger 使用

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

2014-08-02 22:57:39 265

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

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

2014-08-02 18:16:57 358

原创 本地事务系列之四:使用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 143

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

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

2014-07-17 22:15:33 650

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

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

2014-07-17 21:37:07 1055

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

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

2014-07-08 23:04:31 139

原创 MySQL 触发器

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

2014-06-30 21:35:09 137

原创 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 141

原创 JVM 四种引用

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

2014-04-24 19:56:09 143

原创 PushbackInputStream 源码分析

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

2014-04-19 12:04:46 171

原创 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 257

原创 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 489

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

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

2014-04-14 08:59:58 170

原创 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 144

原创 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 139

原创 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 111

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

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

2014-04-13 17:44:05 105

原创 Eclipse TCP/IP Monitor 的使用

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

2014-04-13 17:03:07 198

原创 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 406

原创 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 387

原创 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 162

原创 NIO Socket 编程

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

2014-04-11 22:48:32 172

原创 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 96

原创 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 375

原创 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 169

原创 常用正则表达式

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 120

原创 卡片扔掉奇数位 算法

有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 206

原创 Ubuntu上安装Redis

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

2014-02-28 00:06:31 101

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

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

2014-02-17 20:21:42 289

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

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

2014-02-17 17:16:15 163

原创 hessian系列之一:Hello world

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

2014-01-06 20:51:28 124

原创 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 371

原创 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 111

原创 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 161

空空如也

空空如也

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

TA关注的人

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