自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫,水迢迢

八十一难拦路七十二变制敌

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

原创 Spring技术内幕:Spring AOP的实现原理(三)

生成SingleTon代理对象在getSingleTonInstance方法中完成,这个方法时ProxyFactoryBean生成AopProxy对象的入口。代理对象会封装对target目标对象的调用,也就是说针对target对象的方法调用行为会被这里生成的代理对象所拦截。具体的生成过程是首先读取ProxyFactoryBean配置,为生成代理对象做好准备。Spring通过AopProxy类来具体生

2015-06-27 16:18:10 1440 1

原创 Spring技术内幕:Spring AOP的实现原理(二)

**二、AOP的设计与实现 1、JVM的动态代理特性** 在Spring AOP实现中, 使用的核心技术时动态代理,而这种动态代理实际上是JDK的一个特性。通过JDK的动态代理特性,可以为任意Java对象创建代理对象,对于具体使用来说,这个特性使通过Java Reflection API来完成的。在此之前先简要复习一下Proxy模式,其静态类图如下: 我们可以看到有一个RealSubjec

2015-06-24 21:14:58 1413

原创 乐观人生81句

1.每天告诉自己一次,『我真的很不错』。2.生气是拿别人做错的事来惩罚自己。3.生活中若没有朋友,就像生活中没有阳光一样。4.明天的希望,让我们忘了今天的痛苦。5.生活若剥去理想、梦想、幻想,那生命便只是一堆空架子。6.发光并非太阳的专利,你也可以发光。7.愚者用肉体监视心灵,智者用心灵监视肉体。8.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。9.贪婪是最真实的贫穷,满足是最真实的财富。10

2015-06-23 20:32:10 834

原创 Spring技术内幕:Spring AOP的实现原理(一)

一、SpringAOP的概述 1、AOP概念 AOP是Aspect-Oriented Programming(面向切面编程)的简称。维基百科的解释如下: Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。从关注点中分离出横切关注点是面向切面的程序设计的核心。分离关注点使解决特定领域问题的代码从业务逻辑代码中独立出来,业务逻

2015-06-23 16:09:07 4990 2

原创 Spring技术内幕:SpringIOC原理学习总结

前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理。 IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关系业务逻辑本身就可以了。 SpringIOC容器的执行步骤是: 1、资源定位,即首先要找到applicationContext.xml文件

2015-06-23 09:59:08 2512 2

原创 Spring技术内幕——Spring Framework的IOC容器实现(五)(大结局)

这里通过使用BeanDefinitionResolver来对BeanDefinition进行解析,然后注入到property中。下面到BeanDefinitionValueResolver中看一下解析过程,以对Bean reference进行解析为例 /** * Resolve a reference to another bean in the factory. * cl

2015-06-19 11:36:12 1740

原创 Java基础面试题及答案

1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √

2015-06-19 10:01:36 1501

原创 javascript如何使页面文字闪烁

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content

2015-06-19 09:46:00 1980

原创 如何让你的代码变得清晰整洁

摘要:烂代码不一定是问题,只要它们没有出错,没有人会对它嗤之以鼻。但不幸的是,它们没被发现的概率太小了。错误会被发现。需要新的功能,新系统发布了。现在你不得不面对这堆恐怖的代码,试着去清理它们。 猜猜看怎么了!你正”继承“(接收)了一堆混乱的旧代码。恭喜你!现在都是你的了。混乱的代码可能来自任何地方。中间件,网络,可能来自你自己的公司。你知道在一个角落里有一个家伙,没有人过去管他在做什么。猜猜看

2015-06-18 21:22:49 3529

原创 Spring技术内幕——Spring Framework的IOC容器实现(四)

前面分析了BeanDefinition在IOC容器中的载入和解析过程。在这些动作完成以后,用户定义的BeanDefinition信息已经在容器内建立起了自己的数据结构以及相应的数据表示,但此时这些数据不能供IOC容器直接使用,需要在IOC容器中对这些BeanDefinition数据进行注册。这个注册为IOC容器提供了更友好的使用方式,在DefaultListableBeanFactory中,是通过H

2015-06-18 21:06:10 1115

原创 Spring技术内幕——Spring Framework的IOC容器实现(三)

接上一篇的时序图。这里调用的loadBeanDefintions实际上是一个抽象方法,那么实际载入过程发生在哪里呢?在loadBeanDefintions中,初始化了读取器XMLBeanDefinitionReader,然后把这个读取器在IOC容器中设置好(过程和编程式使用XMLBeanFactory是类似的),最后是启动读取器来完成BeanDefinition在IOC容器中的载入,代码如下:/**

2015-06-17 21:04:39 1146

原创 JDK7新特性详细说明及代码示例

在2011年7月28日,Oracle发布了JDK7的正式版。最近我从网上搜集了一些资料,把文字说明和代码示例结合起来,方便我们的学习。 下面我们来看看JDK7比6多了哪些新特性 1、访问文件系统 与之前的JDK中通过java.io.File访问文件的方式不同,JDK7将通过java.nio.file包中的类完成。JDK7会使用java.nio.file.Path类来操作任何文件系统中的文件。(这

2015-06-17 10:04:10 5938

原创 Spring技术内幕——Spring Framework的IOC容器实现(二)

三、IOC容器的初始化过程 IOC容器的初始化时由前面介绍的refresh方法来启动的,这个方法标志着IOC容器的正式启动。这个启动包括BeanDefinition的Resource定位、载入和注册。下面我们将详细分析这三个实现过程,Spring把这三个过程分开,并使用不同的模块来完成,通过这样的设计让用户更加灵活的这三个过程进行剪裁和扩展,定义出最适合自己的IOC容器的初始化过程。 第一个过程

2015-06-16 20:33:32 1521

原创 Spring技术内幕——Spring Framework的IOC容器实现(一)

一、SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上。这些依赖关系可以通过把对象的依赖注入交给框架IOC容器来完成。他可以再解耦代码的同时提高了代码的可测试性。 依赖控制反转的实现由很多种方式,在Spring中,IOC容器是实现这个模式的载体,他可以再对象生成或者初始化时直接将数据注入到对象中

2015-06-15 21:18:03 2100

原创 Spring技术内幕——Spring的设计理念和整体架构

横看成岭侧成峰,远近高低各不同。 不识庐山真面目,只缘身在此山中。 ——苏轼 Spring的各个子项目 1、Spring Framework(Core):Spring项目的核心。包含了一系列IOC容器的设计,提供了反转模式的实现,同时还集成了AOP功能。另外,在Spring Framework中,还包含了其他Spring的基本模块,比如MVC、JDBC、事务处理模块的实现。 2、Spring

2015-06-11 20:36:46 2046

原创 http协议中get与post区别详解

对于http协议中的get与post的两种提交方式我们并不陌生,现在我们具体分析下他们两种提交方式的本质和区别。 首先我们来说一下他们两个之间的区别: 表单提交中的post方式与get方式的区别 1、get是从服务器上获取数据,post是向服务器传送数据 2、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HT

2015-06-10 20:48:59 1275

原创 Maven实战——实用Nexus创建私服(下)

使用Maven部署构件至Nexus 日常开发生成的快照版本构件可以直接部署到Nexus中策略为Snapshot的宿主仓库中,项目正式发布的构建部署到Nexus中策略为Release的宿主仓库中。POM的配置方式如下:<project> ... <distributionManagement> <repository> <id>nexus-re

2015-06-10 12:04:21 890

原创 Maven实战——使用Nexus创建私服(上)

首先下载Nexus,官方下载地址是http://nexus.sonatype.org/download, 我们可以根据需要下载不同的Bundle包,都是有.tar.gz、.zip和.war格式的 1、bundle方式安装nexus nexues的Bundle自带了Jetty容器,因此用户不需要额外的web容器就能直接启动nexus。首先将Bundle文件解压到,会得到两个目录: nexus-w

2015-06-09 17:29:41 1190

原创 Session与Cookie的详解及如何实现Session共享

首先我们来说一说Cookie,Cookie实际是Web服务端与客户端彼此传递的一部分内容,内容是任意的,但要在允许的长度范围内(一般每个域名在30-70不等)。客户端会将它保存在本地机器上(如IE会保存在本地的一个txt文件)。由于客户端程序对其进行管理,过期的Cookie会自动删除,我们可以通过以下方式来设置cookie的过期时间: 默认cookies失效时间是直到关闭浏览器,也可以指定cook

2015-06-09 15:51:58 1875

原创 Jenkins和Maven构建持续集成

真是运维的福利,不用在敲Linux命令了 需要的工具:Linux或window、Jenkins、tomcat7、Jdk、maven、项目部署的war包 1、首先从Jenkins官网下载最新的Jenkins的war包http://jenkins-ci.org/ 2、把jenkins.war放在tomcat的webApps下,然后启动tomcat,截图如下: 点击“系统管理——系统设置”如下

2015-06-09 11:54:52 2536

原创 Maven实战——聚合与继承(下)

聚合与继承的关系 聚合是为了方便快速构建项目,继承是为了消除重复配置 共同点是两者的packaging都是pom,聚合模块与继承关系中的父模块除了pom之外都没有实际内容。 聚合关系与继承关系的比较: 在现有实际项目中,往往发现一个pom既是聚合pom又是父pom,这么做主要是为了方便。一般来说,融合使用聚合和继承没有什么问题。例如,可以将account-aggregator和accou

2015-06-04 21:55:06 1140

原创 Maven实战——聚合与继承(中)

依赖管理 上一节我们说到可以继承dependencies元素,我们很容易想到把这一特性应用到accout-parent中。子模块account-email和account-persist同时依赖了org.springframework:spring-core:2.5.6,spring-beans:2.5.6,spring-context:2.5.6,junit:junit:4.7。以此可以将这些公

2015-06-04 11:22:36 1029

原创 Maven实战——聚合与继承(上)

聚合 首先我们来看两个pom.xml文件,我们将通过这两个pom文件来引入我们要学习的聚合与继承 account-email<modelVersion>4.0.0</modelVersion><groupId>com.juvenxu.mvnbook.account</groupId><artifactId>account-email</artifactId><name>Account Em

2015-06-03 18:29:23 1134

原创 Linux如何修改root用户的密码

Linux系统的root账号是非常重要的一个账号,也是权限最大的一个账号,但是有时候忘了root密码怎么办?总不能重装系统吧,这个是下下策,其实Linux系统中,如果忘记了root账号密码,是可以通过进入单用户模式或其它方法修改密码的。当然,具体方式跟Boot Loader、操作系统有关系,GRUB与LILO的实现方式有所不同。Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这

2015-06-02 17:43:38 6345

原创 Maven实战——生命周期和插件

Maven的构建过程包括:初始化、编译、测试、打包、集成测试、部署 Maven拥有三套相互独立的生命周期:clean(清理项目)、default(构建项目)、site(建立项目站点) 每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,以clean为例: pre-clean:执行一些清理前需要完成的工作 clean:清理上一次构建生成的文件 post-clean:

2015-06-02 16:28:48 1070

原创 Spring学习笔记——关于Spring注解扫描不能注入new对象问题

这几天Leader让我用工厂模式对部分业务逻辑代码进行重构,过程是痛苦的(这里就不详细说了),结果很甜蜜。下面记录一下我在重构过程中遇到一个问题。 部分代码如下:@service(orderFactory)public class OrderFactory implements IOrderFactory{ public OrderCreate factory(String type){

2015-06-01 18:18:25 7584

空空如也

空空如也

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

TA关注的人

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