自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乒乓狂魔的专栏

喜欢打乒乓球的程序员

  • 博客(46)
  • 收藏
  • 关注

原创 ZooKeeper源码研究寻求小伙伴

最近正在研究ZooKeeper源码,有这个意向的小伙伴吗?来一起探讨和研究现在想寻求能挤出时间、经常研究源码的小伙伴,终极目标能够改造ZooKeeper:利用空余时间研究源码,平时一起交流探讨,分工合作源码研究任务。...

2015-08-06 08:13:16 215

原创 本人博客已搬家

本人博客已搬往开源中国,地址 [url]http://my.oschina.net/pingpangkuangmo/blog[/url]

2015-02-07 11:26:08 239

原创 Spring事务源码分析(一)Spring事务入门

[size=medium]有时为了保证一些操作要么都成功,要么都失败,这就需要事务来保证。传统的jdbc事务如下:[/size][code="java"]@Test public void testAdd(){ Connection con=null; try { con=DriverManager.getConnection(url , username , ...

2015-01-30 07:35:08 418

原创 shiro源码分析(六)CredentialsMatcher 的案例分析

[size=medium]有了上一篇文章的原理分析,这一篇文章主要结合原理来进行使用。shiro.ini配置为:[/size][code="java"][main]#realm dataSource=com.mchange.v2.c3p0.ComboPooledDataSource dataSource.driverClass=com.mysql.jdbc.Driver...

2015-01-04 07:39:49 798

原创 shiro源码分析(五)CredentialsMatcher

[size=medium]Realm在验证用户身份的时候,要进行密码匹配。最简单的情况就是明文直接匹配,然后就是加密匹配,这里的匹配工作则就是交给CredentialsMatcher来完成的。先看下它的接口方法:[/size][code="java"]public interface CredentialsMatcher { boolean doCredentialsMatch(...

2014-12-29 07:39:22 1738 1

原创 shiro源码分析(四)具体的Realm

[size=medium]首先还是Realm的接口设计图:[/size][img]http://dl2.iteye.com/upload/attachment/0104/5692/3c8b1b3b-7caf-3977-9700-2df30fc7733b.png[/img][size=medium]这里只来说明SimpleAccountRealm和JdbcRealm的实现。首先是Si...

2014-12-24 07:28:05 283

原创 shiro源码分析(三)授权、认证、缓存的接口设计

[size=medium]前两篇文章主要说的是认证过程,这一篇来分析下授权的过程。还是开涛大神的案例([url]http://jinnianshilongnian.iteye.com/blog/2020017[/url]),如下:[/size][code="java"]public class ShiroTest { @Test public void testHellow...

2014-12-19 07:46:43 340

原创 shiro源码分析(二)Subject和Session

[size=medium]继续上一篇文章的案例,第一次使用SecurityUtils.getSubject()来获取Subject时[/size][code="java"]public static Subject getSubject() { Subject subject = ThreadContext.getSubject(); if (subje...

2014-12-15 08:02:24 668

原创 shiro源码分析(一)入门

[size=medium]最近闲来无事,准备读个框架源码,经别人推荐shiro,那就准备读读其中的设计。开涛大神已经有了跟我学Shiro系列,那我就跟着这个系列入门然后再深入源代码,所以我的侧重点就是源码分析。话不多说,上开涛大神的入门案例 地址[url]http://jinnianshilongnian.iteye.com/blog/2019547[/url]:[/size][cod...

2014-12-11 07:21:41 407

原创 单例模式大汇总

[size=medium]看了多方资料,整理下单例设计模式,有不少值得相互探究的地方,你就会发现就这一个小小的单例模式竟然映射出N多知识。我在这里把问题综述出来,一起相互探讨。单例涉及到的相关文章如下: [url=http://lgbolgger.iteye.com/blog/2159940]反射、枚举与单例[/url] ...

2014-11-27 07:46:24 137

原创 类加载器与单例

[size=medium]当使用不同的类加载器时,也会使单例失效,如下:单例为:[/size][code="java"]public final class Singleton{ private static final Singleton instance=new Singleton(); private Singleton(){ ...

2014-11-27 07:42:43 697

原创 序列化与单例

[size=medium]当单例模式的类实现了系列化Serializable接口,也可以通过反序列化来使它不再单例。我们的单例类:[/size][code="java"]public final class Singleton implements Serializable{ private static final long serialVersionUID = 173577...

2014-11-27 07:41:32 156

原创 反射、枚举与单例

[size=medium]通常我们所使用的单例模式,我们都可以使用反射使它不再单例,如下饿汉式的单例模式:[/size][code="java"]public final class Singleton { private static final Singleton instance=new Singleton(); private Singleton(){} ...

2014-11-27 07:39:50 166

原创 装饰者模式

[size=medium]有时候为了传承某个类的一些功能,我们可以采用继承该类来获取功能,并可以通过覆写某些方法来进行功能加强。然而若想对一批类的功能进行加强,如果仍采用继承,不仅在代码上重复,并且不利于扩展。如下所示:[/size][code="java"]public interface Component { public void fun();}public ...

2014-11-19 06:51:14 138

原创 工厂模式

[size=medium]本文章内容是看完《HeadFirst设计模式》书籍的工厂模式后为了加深印象而写。其实有的时候,某些博客并不是仅仅为了分享,更主要的是写给自己,主要是为了自己在写的过程去更加深刻去体会,光看看别人所说的,感觉挺有道理的,却没有转化成自己的东西,就更不会在实际的工作中去使用设计模式了。言归正传,工厂模式分成3种,简单工厂模式、工厂方法模式、抽象工厂模式。这些模式都是通...

2014-11-14 07:46:57 131

原创 集合的toArray方法产生的Object[]数组转换失败

[size=medium]最近遇见一个问题,即调用一个集合(只存放类A的对象)的toArray()方法变成Object[]数组,最后将它转换成A[]时抛出类型转换异常。不知道为什么不能转换成功。最后了解到,集合的toArray方法有两个,一种就是Object[] toArray(),另一种就是T[] toArray(T[] a),前一种没有指定数组的类型为Object,后一种指定数组的类型...

2014-11-13 05:38:34 444

原创 观察者设计模式

[size=medium]先来看下下报纸和杂志的订阅:(1)报社:出版报纸和杂志(2)订阅者:向某家报社订阅报纸和杂志,只要报社出版了新的报纸,订阅者就会收到最新的报纸和杂志。(3)报社具有添加和删除订阅者的功能(其实应该是订阅者具有订阅和退订的功能,这个主动权应该是订阅者而不是报社,报社也应该对外开放这样的方法)下面就让我们来简单实现上述的描述:报社:PublishingHo...

2014-11-09 10:25:07 163

原创 hibernate系列(五)Session接口方法

[size=medium]Session接口方法主要有save、persist、load、get、update、saveOrUpdat、merge、delete等,这里主要是对我看hibernate书籍的一个实践加总结。首先是save()方法:以之前的Customer和Order为例,看下类文件:[/size][code="java"]public class Customer...

2014-10-24 07:11:26 187

原创 hibernate系列(四)一对一关联关系

[size=medium]以Person类和IDCard类为例,这里仅仅说一种一对一关联关系,即Person类拥有IDCard,但是IDCard不含Person类,数据库库的表如下:[/size][code="sql"]CREATE TABLE `hibernate`.`person` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VAR...

2014-10-09 07:32:33 115

原创 hibernate系列(三)多对多的关联关系

[size=medium]以Teacher和Student为例,他们之间是多对多的关系。手动创建的数据库的三张表为,teacher、student、teacher_student。分别如下:[/size][code="sql"]CREATE TABLE `teacher` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc...

2014-10-08 06:35:52 131

原创 hibernate系列(二)一对多的关联关系

[size=medium]上一篇文章介绍了基本知识后,本篇该介绍下现实中的一对多的关联关系。如Customer和Order,一个Customer可以拥有多个Order,每个Order只属于一个Customer。这样就存在几种表示形式,可以分为单向关联和双向关联。形式1:Order拥有一个Customer引用,这种属于单向关联形式2:Customer拥有Order的集合,这种也属于单向关联...

2014-10-07 11:33:42 173

原创 hibernate系列(一)hibernate入门

[size=medium]最近开始学习hibernate,然后就想把这个学习历程总结下来。还是打算主要分两个过程,第一个过程:学会使用hibernate,第二个过程:做一些源码分析,更加深入的理解。言归正传,开始入门案例,这里的入门案例不牵扯其他框架,所以一开始学习的时候尽量不要牵扯其他框架,如SpringMVC。如果入门时牵涉其他框架,有时候会搞不清楚hibernate和其他框架的责任机...

2014-10-06 10:31:18 139

原创 Spring AOP源码分析(八)SpringAOP要注意的地方

[size=medium]SpringAOP要注意的地方有很多,下面就举一个,之后想到了再列出来:(1)SpringAOP对于最外层的函数只拦截public方法,不拦截protected和private方法,另外不会对最外层的public方法内部调用的其他方法也进行拦截,即只停留于代理对象所调用的方法。如下案例:B类有两个public方法,foo1()和foo2(),foo1内部调用了fo...

2014-10-01 10:00:49 206

原创 Spring AOP源码分析(七)ProxyFactoryBean介绍

[size=medium]这篇文章里面就要说说Spring自己的AOP,搞清楚哪种方式是Spring自己实现的AOP,哪种方式是Spring引入aspectj的AOP。Spring自己的AOP实现在于ProxyFactoryBean。先看下使用案例(仍和之前的案例是一样的):接口AService、实现类AServiceImpl、通知MyBeforeAdvice[/size][code="j...

2014-09-28 22:03:56 214

原创 Spring AOP源码分析(六)Spring AOP配置的背后

[size=medium]本篇文章主要对Spring AOP配置背后进行了哪些事情做下说明。还是如上类似的工程,在xml中AOP拦截配置如下:[/size][code="java"] ...

2014-09-27 11:39:16 224

原创 Spring AOP源码分析(五)Spring AOP的Cglib代理

[size=medium]上一篇文章介绍了Spring AOP的JDK动态代理的过程,这一篇文章就要介绍下Spring AOP的Cglib代理过程,仍然是使用上一篇文章的工程案例。JDK动态代理是由JdkDynamicAopProxy来生成代理对象的,Cglib则是由CglibAopProxy来生成代理对象的。JdkDynamicAopProxy、CglibAopProxy实现了AopPr...

2014-09-24 06:48:29 281

原创 Spring AOP源码分析(四)Spring AOP的JDK动态代理

[size=medium]本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计。首先整个SpringAOP的分两大过程。第一个过程:根据xml文件或者注解中配置的拦截信息,生成相应的代理对象,这个代理对象包含了对应的拦截器。第二个过程:执行所拦截的方法时,就是调用代理对象的执行逻辑,完成各种拦截。本文章先对第二个过程进行源码解析。...

2014-09-22 07:40:46 407

原创 Spring AOP源码分析(三)Spring AOP中的一些基本接口及其概念

[size=medium]本文章对一些SpringAOP的接口设计进行下介绍,主要是区分三者的关系,AOP联盟、Aspectj、SpringAOP所做的工作。主要内容:(1)Advice接口设计(2)MethodInterceptor接口设计(3)Advisor和Pointcut接口设计第一个:Advice接口设计Advice:AOP联盟定义的通知接口,即拦截到相应的方法后...

2014-09-22 07:40:20 190

原创 Spring AOP源码分析(二)JDK动态代理和CGLIB介绍

[size=medium]本篇是介绍java实现代理对象的两种方法,JDK动态代理和CGLIB。JDK动态代理:针对你所调用的方法是接口所定义的方法。动态的创建一个类,通过实现目标类的接口来实现代理。CGLIB:没有限制。通过继承目标类来创建代理类,实现代理。下面看案例:案例一,JDK动态代理:Person和Animals都实现了Say接口sayHello方法。现在就需要对...

2014-09-21 07:07:18 151

原创 ThreadLocal设计模式

[size=medium]ThreadLocal设计模式使用的也很频繁,会经常在各大框架找到它们的踪影,如struts2以及最近正在看的SpringAOP等。ThreadLocal设计模式也有很多误解,我的理解是(1)ThreadLocal所操作的数据是线程间不共享的。它不是用来解决多个线程竞争同一资源的多线程问题。(2)ThreadLocal所操作的数据主要用于线程内共享数据,可...

2014-09-19 07:48:13 370

原创 Spring AOP源码分析(一)AOP介绍和aspectj、SpringAOP入门

[size=medium]首先说说三个名词,面向对象、面向接口编程、面向切面编程(Aspect Oriented Programming 即AOP)。针对java来说面向对象:是对现实世界的描述,是后两者的基础,大前提。面向接口编程:接口就是一组规则的集合,这组规则可以有不同的实现方式。如JDBC,它本身仅仅是接口规范,不同的数据库有不同的实现,我们通过JDBC这样的接口编程,就无需关...

2014-09-14 10:10:56 181

原创 equals和hashCode源码解析

[size=medium]equals和hashCode网上也有很多的资料。这里只是记录下我目前的理解与认识。大家会经常听到这样的话,当你重写equals方法时,尽量要重写hashCode方法,有些人却并不知道为什么要这样,待会就会给出源码说明这个原因。首先来介绍下Object的equals和hashCode方法。如下:[/size][code="java"]public na...

2014-09-12 07:42:45 399

原创 SpringMVC源码总结(十二)ViewResolver介绍

[size=medium]首先我们先看看ModelAndView中重要的View接口。View接口:[/size][code="java"]String getContentType(); /** * Render the view given the specified model. * The first step will be preparing the r...

2014-09-10 06:43:45 277

原创 设计模式开篇

[size=medium]提到设计模式,我们会经常这样听说:"我也看过很多的设计模式,但在实际的项目中从来没有用过"。这的确是我以及很多人遇到的情况,那些设计模式都能看懂,但就是在项目用不到,总感觉纸上谈兵,落实不到我们具体的项目上。我的个人观点:(1) 对设计模式的理解还不够深入 首先我们要对设计模式所要解决的问题要理解透彻,即什么样的场景适合用这个设计模式。然后就是这个设...

2014-09-08 21:59:30 128

原创 SpringMVC源码总结(十一)mvc:interceptors拦截器介绍

[size=medium]本文章针对mvc:interceptors标签进行介绍,它的注册过程以及在访问时的拦截过程。首先说下接口HandlerInterceptor,它有如下三个方法:[/size][code="java"]boolean preHandle(HttpServletRequest request, HttpServletResponse response, Obj...

2014-09-08 20:21:32 431

原创 SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver

[size=medium]上一篇文章介绍了HandlerMethodArgumentResolver的来龙去脉,这篇就要说说自定义HandlerMethodArgumentResolver来解决我们的需求,本文提供了四种解决方案。需求,有一个Teacher类和Student类,他们都有属性name和age:前端form表单为:[/size][code="java"] ...

2014-09-04 07:45:48 262

原创 SpringMVC源码总结(九)HandlerMethodArgumentResolver介绍

[size=medium]本文章主要介绍HandlerMethodArgumentResolver在SpringMVC中的使用,介绍几个HandlerMethodArgumentResolver具体的使用情况,然后说明HandlerMethodArgumentResolver的注册来源以及如何自定义注册。首先具体看下请求映射到的handler的对应的映射函数的参数形式有哪些:Han...

2014-09-02 06:24:58 369

原创 SpringMVC源码总结(八)类型转换PropertyEditor的背后

[size=medium]PropertyEditor是Spring最初采用的转换策略。将会转移到Converter上。本文章主要对@InitBinder注解背后代码层面的运行过程做介绍。所以最好先熟悉它的用法然后来看通代码流程。先看实例,controller代码如下:[/size][code="java"]@Controllerpublic class FormActio...

2014-08-30 17:13:29 177

原创 SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter

[size=medium]这一篇文章主要介绍下HttpMessageConverter整个注册过程包含自定义的HttpMessageConverter,然后对一些HttpMessageConverter进行具体介绍。HttpMessageConverter接口介绍:[/size][code="java"]public interface HttpMessageConverter {...

2014-08-27 22:32:55 268

原创 SpringMVC源码总结(六)mvc:annotation-driven中的HandlerMethodReturnValueHandler

[size=medium]经过了两篇的乱码说明,要重新回到mvc:annotation-driven标签中,继续说说HandlerMethodReturnValueHandler的使用,下一篇文章主要说说HttpMessageConverter。HandlerMethodReturnValueHandler是RequestMappingHandlerAdapter用来处理当含有@Reque...

2014-08-26 06:21:04 241

空空如也

空空如也

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

TA关注的人

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