自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring高级事务管理难点剖析

1Spring事务传播行为所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring支持7种事务传播行为PROPAGATION_REQUIRED(加入已有事务)如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见也是默认的方式。PROPAGATION_SUPPORTS(跟随环境)支持当前事务,如果当前没有事务,就以非

2016-03-08 01:03:46 468

原创 Struts工作原理

1、HTTP请求经过struts2框架的核心控制器(StrutPrepareAndExecuteFiler)第二步:核心控制器依次查找ActionMapper来决定调用这个请求是否调用action。如果actionMapper决定调用action,那么核心控制器就把请求的处理器控制权委托给actionProxy第三步:actionProxy通过ConfigurationManage

2016-03-04 15:24:13 355

原创 代理模式

一、什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可去掉功能服务或增加额外的服务。

2016-03-02 00:08:43 409 1

转载 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器

第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;负载均衡策略:可以降低单台机器的访

2016-02-29 23:15:29 324

原创 Hibernate小结

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 一、使用流程 1:通过configuration来读cfg.xml文件 2:得到SessionFactory 工厂 3:通过SessionFactory 工厂来创建Session实例 4:通过Session打开事务 5

2016-02-28 21:55:35 290

转载 策略模式

策略模式(Strategy)1 场景问题1.1 报价管理向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,比如:(1)对普通客户或者是新客户报的是全价(2)对老客户报的价格,根据客户年限,给予一定的折扣(3)对大客户报的价格,根据大客户的累计消费金额,给予一定的折扣(4)还要考虑客户购买的数量和金额,比如:虽然是新用户,但是一次购买的数量非常大,或者是总金额非常高,也会有一定的折扣 (5)还有,报价人员的职务高低,也决定了他是否有权限对价格进

2016-02-25 23:55:35 796

原创 观察者模式

一、什么是观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。二、观察者模式的本质观察者模式的本质是触发联动。三、观察者模式的两种实现1.推模型目标对象主动像观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据,相当于广播通信。2.拉模型目标对象在通知观察者的时候,值传递少量

2016-02-25 00:01:04 364

原创 mysql优化总结

我们可以从四个方面来对数据库进行优化:SQL及索引、数据库表结构、系统配置、硬件。这四种优化成本一次升高,效果却依次降低。所以我们对数据库的优化应该更关注成本低效果好的SQL及索引优化和数据库表结构优化。优化手段一:我们可以开启慢查询日志对有效率问题的SQL进行监控优化手段二:使用explain查看SQL的执行计划优化手段三:建立合适的索引,尽量选择在where从句、gro

2016-02-23 23:08:01 281

原创 设计模式之单例模式

一、什么是单例模式保证整个应用中某个实例有且只有一个,这类实例如果创建多个往往会导致许多问题,比如占用过多资源,得到不一致的结果等。二、单例模式的应用场景配置文件、工具类、线程池、缓存、日志对象等三、单例模式的代码实现单例模式分为饿汉模式和懒汉模式饿汉模式实现public class Singleton { private static Sing

2016-02-22 22:10:36 214

原创 日志框架和日志系统

日志框架和日志系统日志系统JUL(java.util.logging.*),JDK 1.4 自带的日志系统;JUL 并没有明显的优势来战胜Log4j,反而造成了标准的混乱——采用不同日志系统的应用程序无法和谐共存;Logback,是较新的日志系统,它是 Log4j 的作者吸取多年的经验教训以后重新做出的一套系统;它的使用更方便,功能更强,而且性能也更高;Logback 不能单独使用,必须配合日志框架 SLF4J 来使用;日志框架JUL 诞生以后,为了克服多种日志系统并存所带来的混乱,

2016-02-21 20:46:35 444

原创 过滤器和拦截器的区别

拦截器和过滤器的区别:过滤器Filter依赖Servlet容器,基于回调函数,过滤范围大,不仅过滤请求,还过滤资源等等。拦截器Interceptor依赖框架容器,基于反射机制,只过滤请求。

2016-02-20 22:04:09 249

原创 Maven的生命周期

maven包括了三套相互独立的生命周期 clean 清理项目default 构建项目site 建立项目站点1.clean主要负责项目清理pre-cleanexecutes processes needed prior to the actual project cleaningcleanremove all fil

2016-02-20 22:00:27 649

原创 Maven依赖范围

我们在平时编写项目的时候,如果要用到某一个框架,这时,我们要把这个框架的jar包引入到项目classpath路径下才可以使用。maven为我们提供了三种classpath分别是:编译 测试 运行在maven中我们通过设置scope属性来控制依赖范围:complie 默认的范围,编译测试运行都有效provided 在编译测试的时候有效,在运行的时候不会加入 具体例

2016-02-20 21:37:33 273

原创 junit4常用注解

@Test   将一个普通的方法修饰成一个测试方法@Test(expected = xxxException.class) 若测试时改方法抛出xxxException异常则测试成功@Test(timeout = 毫秒) 超出该时间则停止运行@BeforeClass 它会在该测试类的所有方法运行前执行,static修饰,只执行一次,所以常用来加载初始化配置如spring的ioc容器@

2016-02-20 21:29:13 396

原创 Java代码中的特殊注释

TODO: + 说明:说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明:说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。

2016-02-19 17:17:43 1134

原创 web过滤器

过滤器是一个服务器端的组件,它可以截取客户端的请求与响应信息,并对这些信息过滤。过滤器的应用场景:1.对用户请求进行统一认证2.编码转换3.对用户发送的数据进行过滤替换4.转换图像格式5.对响应内容进行压缩

2016-02-16 23:45:01 298

原创 Java自定义注解的语法要求

我们先来看一个注解@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Description { String value(); String

2016-02-06 22:22:43 390

原创 XML的DTD约束和Schema约束

DTD和Schema是两种常用的xml文件的约束文件,都是用来约定XML文件,目的是会提示使用者让使用者按照规定的格式去书写XML,验证XML文件有效性。主要的区别有一下几点: 1、Schema遵循XML语法,学习成本低,不需要再学习新的语法;DTD和XML语法使用的是自己特殊的语法 2、DTD只能指定元素含有文本,不定定义元素文本的类型,如字符型、整型、日期型、自定义类型等。Schema在这方面比DTD强大。 3、Schema对命名空间的支持,如果出现两个相

2016-02-06 21:40:25 739

原创 会话的四种跟踪技术

由于HTTP协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户进行登记,为用户分配唯一的ID,下一次用户在请求中包含此ID,服务器据此判断到底是哪一个用户。 ①URL 重写:在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。 ②设置表单隐藏域:将和会话跟踪相关的字段添加到隐式表单域中,这些

2016-02-03 23:13:12 1348

原创 动态数据源

使用注解+aop

2016-01-20 23:28:00 361

转载 在浏览器中输入www.taobao.com后执行的全部过程

在浏览器中输入www.taobao.com后执行的全部过程1、客户端浏览器通过DNS解析到www.taobao.com的IP地址a,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到a,然后通过TCP进行封装数据包,输入到网络层。2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择

2016-01-19 11:04:52 11844

原创 Java监听器

一、什么是监听器Servlet规范中定义的一种特殊类,用于监听ServletContext(application)、HttpSession(Session)、ServletRequest(Request)等域对象的创建与销毁和域对象的属性发生修改的事件,可以在事件发生的前后做一些必要的处理。二、监听器的应用场景1、统计在线人数和在线用户2、系统启动时加载初始化信息3、

2016-01-18 21:55:19 231

原创 spring mvc使用Maven配置Velocity

在Spring mvc中视图解析器组件默认为Jsp,这仅仅是其中一种视图解析器。除了使用Jsp作为视图解析器之外,我们还可以使用Velocity、FreeMarker作为视图解析器,该文章主要针对Spring mvc配置Velocity作为spring mvc的视图解析器,至于配置Freemarker与配置Velocity类似,Volocity的定位和Jsp一样。

2016-01-17 23:37:10 331

转载 Redis与Memcached的区别

传统MySQL+ Memcached架构遇到的问题  实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:  1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。  2.Mem

2016-01-16 23:58:02 254

原创 Spring核心IOC容器实现分析

在Spring IOC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能;另一个是ApplicationContext应用上下文,它作为容器的高级形态而存在。应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境做了许多适配。 单纯的这样说可能感觉比较抽象下面具体说一下,下面我们直接从实际代码中分析Spring IOC容器加载过程:

2016-01-15 23:17:37 334

原创 final关键字浅析

在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。1.修饰类  当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。2.修饰方法   当用

2016-01-14 22:30:59 278

转载 Java NIO:浅析I/O模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr

2016-01-13 23:25:11 227

原创 数据库的ACID属性

一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。原子性(Atomicity)整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状

2016-01-12 19:37:32 331

转载 数据库设计三大范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。                 在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值

2016-01-11 17:17:33 310

原创 JDBC实现事务

首先我们要知道JDBC对事务管理的支持:1.事务的操作是默认自动提交的2.可以通过调用setAutoCommit(false)来禁止自动提交3.我们可以通过提交commit()或者回滚rollback()来管理事务的操作下面以一个伪代码做讲解try { //try catch整个事务 conn.setAutoCommit(false); //将自动提交关闭

2016-01-10 17:41:15 385

转载 java设计模式—工厂模式

一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但

2016-01-10 16:59:57 248

原创 Linux基础知识总结

Linux系统简介:Linux系统是一个免费使用和自由传播的操作系统Linux应用:1.Linux作为Internet网络服务器的应用--提供Web DNS FTP和Mail服务2.Linux作为中小企业内部服务器的应用--提供网络代理 网络防火墙 DHCP和文件共享服务3.Linux作为软件开发环境的应用--支持C C++ PHP Java Python语言等(强烈建议计算机专业的同学安装Linux(Ubuntu)系统做日常开发)Linux系统的特点:多用户多任务一切都是文件(文件

2016-01-09 21:47:19 303

原创 ubuntu搭建java开发平台

这里提供解决方案,就不一一截图了第一步:安装JDK,从官网下载下来,然后解压(建议在一个固定的文件下下面存放Java开发环境),配置JDK的环境变量第二步:安装Tomcat,同样去官网下载,解压,配置环境变量第三步:安装MySQL,在终端执行sudo apt-get install mysql-server mysql-client来安装mysql,安装完成之后别忘了修改默认的字符集

2016-01-09 21:46:00 318

原创 Integer缓存分析

Integer我们从源码分析,当我们给一个Integer对象赋一个int值的时候,自动装箱会调用Integer类的静态方法valueOf public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return Integ

2016-01-08 23:53:30 413

转载 JAVA中实现链式操作(方法链)的简单例子

在使用jQuery时候,我们经常会看到或者使用到方法链,例如:复制代码代码如下:$("#p1").css("color","red").slideUp(2000).slideDown(2000);这段代码的意思是选择器选择id为p1的html标签,颜色变红,之后slideup,再slidedown。自然是可以将这几个方法分开写,但是不分开的话不仅有很好的易读性,代码量也会有减少,那么何乐而不为? 这种调用函数的方式在jQuery中称为“Chaining”,原理也很简单:能够chaining的方

2016-01-08 23:47:31 765

原创 git常用指令

git init 初始化git仓库git add 文件名 将工作文件修改提交到本地暂存区git add . 将该目录下所有工作文件修改提交到本地暂存区git commit -m "版本备注" 提交本地暂存区的代码git remote add origin url 本地仓库关联远程git仓库,并设置远程仓库的别名为origingit remote remove origin 删

2016-01-08 23:27:17 465

原创 Dubbo分布式服务框架

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。说到RPC框架和SOA服务治理,还是从"淘宝技术这十年"听过并尝试着了解这一块的内容,Dubbo是阿里开源的RPC框架,与其类似的还有HSF,但是这个应该是阿里内部框架。说到RPC之前,首先解释下什么是SOA(service orientied architecture) 所谓SOA就是面向服务编程,通常我们所写的一个web项目都是分层设计,前端到后端的Http请求,首先到达后端的C

2016-01-07 23:08:18 834

原创 设计模式之单例模式

单例模式 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 单例模式在全局范围内,同一个类只构造一个对象,全局范围可以引用。减少因对象创造、销毁带来的资源消耗。(项目中的应用:spring容器中所有的bean都是单例的),因

2015-12-17 18:25:59 940

原创 Mybatis工作原理

在使用mybatis之前,我们要知道不使用Mybatis的时候我们用JDBC是如何做数据库相关的操作,进而才会更加深刻的理解为什么我们要使用mybatis这种ORM框架,当然ORM框架还有一个比较有名的开源框架Hibernate,本文我会重点讲解为什么将JDBC封装成Mybatis这样一种持久层框架,在对Mybatis分析完成之后,我会对比两个ORM框架的异同点.1.使用JDBC实现数

2015-12-10 18:25:51 6214

原创 Java基础知识(一)

1.ArrayList和LinkList、Verctor有什么区别,性能、安全性、扩容2.线程池和连接池是什么,线程池可以做什么,连接池可以做什么,你用过什么连接池3.什么是线程可见性,线程之间如何保证共享变量的一致性4.HashMap和HashTable有什么区别、String、StringBuffer、StringBuild的区别5.LinkHashMap和HashMap、HashTable的区别6.Spring mvc由几大组件组成7.Restful风格的由来8.线程并发包熟悉吗?用过哪

2015-10-25 12:00:12 593

空空如也

空空如也

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

TA关注的人

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