自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫,水迢迢

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

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

原创 java动态代理(JDK和cglib)

JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两

2015-11-23 22:40:31 625

转载 淘宝下单高并发解决方案

周末参加了@淘宝技术嘉年华 主办的技术沙龙, 感觉收获颇丰,非常感谢淘宝人的分享。这里我把淘宝下单高并发解决方案的个人理解分享一下。我不是淘宝技术人员,本文只是写自己的理解,所以肯定是会有一些出入的。在session中牧劳为我们介绍了淘宝下单部分的技术方案变迁,我不介绍变迁,而只对现有系统做介绍。要优化下单,提高下单的TPS (Transaction per second),我们首先要做的是对下单的

2015-11-17 21:33:06 995

原创 秒杀核心设计——防止超卖、高并发与varnish详解

1、商品详情页面静态化 2、varnish加速 Varnish可以有效降低web服务器的负载,提升访问速度。根据官方的说法,Varnish是一个cache型的HTTP反向代理。 按照HTTP协议的处理过程,web服务器接受请求并且返回处理结果,理想情况下服务器要在不做额外处理的情况下,立即返回结果,但实际情况并非如此。本文将分析在web服务器处理请求的过程中,Varnish能起到什么作用 w

2015-11-16 22:58:22 3107

原创 dubbo入门学习笔记

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 其核心部分包含: 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 3. 自动发现:

2015-11-15 15:32:58 1837 1

原创 深入详解Struts2——Struts2对依赖注入的支持

依赖注入又名控制反转,控制反转就是由容器控制对象之间的关系,而非传统实现中,由程序代码直接操控。控制权由应用程序转移到了外部容器中。 依赖注入将对象创建和对象链接的责任从对象自身转移到了IOC容器,由容器在运行期间将对象之间的依赖关系注入到对象之中。 struts2通过插件的形式来集成Spring,插件的Jar文件包含在struts-spring-plugin-2.0.11.jar的文件中。<s

2015-10-29 14:55:07 3349

原创 深入详解Struts2——使用注解配置Action

注解的作用就是代替传统的xml配置文件,struts2提供了注解功能,这样我们就不需要再配置struts.xml文件。与Action相关的注解有: ParentPackage:指定action所在包要继承的包 Namespace:所属action的命名空间 Result:定义一个result映射 Results:定义一组result映射 下面看一个注解配置Action的实例:@Namesp

2015-10-27 10:48:23 1474

原创 深入详解Struts2——异常处理

struts2提供了符合资深框架特点声明式异常处理机制。在struts2中,我们可以再struts.xml文件中配置异常映射,将一种异常类型和一个结果对应起来,由这个结果负责对异常做出响应。struts2通过拦截器对action抛出的异常进行捕获,这个拦截器是:com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor代码如下:pu

2015-10-27 10:10:42 767

原创 深入详解Struts2——struts.xml配置之Result配置详解

一个result代表了一个可能的输出,当Action类的方法执行完成时,它返回一个字符串的结果码,框架根据这个结果码选择对应的result,向用户输出。 result元素有两个属性 name:指定result的逻辑名 type:指定result的类型,不同类型的result代表了不同类型的结果输出 在result元素中,可以使用param子元素来指定这个结果对应的实际资源的位置。param元

2015-10-26 15:59:42 3044

原创 深入详解Struts2——struts.xml配置之Action配置详解

配置Action action映射是框架中基本的工作单元,action映射就是将一个请求URI映射到一个action类,当一个请求匹配某个action名字时,框架就使用这个映射来确定如何处理请求。struts.xml文件中的每一个action元素就是一个action映射。 例如:<action name="login" class="org.fyw.struts.action.LoginActi

2015-10-21 11:12:08 2852

转载 BigDecimal.setScale 处理java小数点

BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 setScale(1,BigDecimal.ROUND_HA

2015-10-20 11:07:44 1102

原创 深入详解Struts2——struts.xml配置详解(一)

bean的配置 struts2是一个可扩展的框架,核心组件都是可以配置的,这些组件通过struts2自己的依赖注入容器来装配。 在struts-default.xml文件中,定义了struts2框架的可配置组件,例如:<bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="com.opensympho

2015-10-16 15:21:37 4420

原创 深入详解Struts2——struts2的配置文件

struts2的配置文件 web.xml:/WEB-INF/ Web部署描述符,包括所有必需的框架组件 struts.xml:/WEB-INF/classes/ 主要的配置文件,包含result映射、action映射、拦截器配置等 struts.properties:/WEB-INF/classes/ struts2框架属性 struts-default.xml:/WEB-INF/lib/s

2015-10-15 11:48:15 984

原创 深入详解Struts2——struts2框架的调用流程

struts2调用的时序图如下所示: 1、当Servlet容器接收到一个请求后,将请求交给你在web.xml文件配置的过滤器FilterDispatcher,调用他的doFilter()方法 2、FilterDispatcher询问ActionMapper,以便确定这个请求是否有对应的action调用。 3、ActionMapper返回一个描述action调用的ActionMapping对

2015-10-13 11:07:34 1337

原创 深入详解Struts2——架构剖析

在struts2中,拦截器是一个重要的概念。拦截器可以在Action被调用之前和之后执行代码。Struts2框架的大多数核心功能都是作为拦截器来实现的。像累心转换、对象组装、验证、避免表单重复提交、文件上传都是在拦截器帮助下实现的。 下面看一下Struts2和Xwork2之间的交互图: 一个Http请求到达Struts2的FilterDispatcher之后,就会被转换成一个action c

2015-10-12 16:25:46 2380

原创 深入详解Struts2——Struts2初识

在讨论Struts2之前我们先简单说一下SpringMVC这个Web框架 SpringMVC Web框架是整个Spring集成框架中的一部分。SpringMVC框架是结构最清晰的MVC Model2的实现 ,它围绕DispatcherServlet进行设计。DispatcherServlet的作用是将请求分发给不同的处理器。SpringMVC是高度可配置的,包括可配的处理器(handler)映射、

2015-09-24 10:43:24 669

转载 MyEclipse内存溢出问题解决方法

往MyEclipse Window/Preferences/MyEclipse……/Servers/Tomcat/ Tomcat 6.x/JDK Optional Java VM arguments: 输入:-Xms256m -Xmx512m -XX:MaxNewSize=128m -XX:MaxPermSize=256m 解释: (1)-Xms400m:初始物理内存值(堆内存) (2)

2015-09-22 14:29:54 765

原创 深入浅出Mysql(四)

大批量插入数据优化 1、对应Myisam类型的表,可以通过以下方式快速的导入大量数据alter table tablname DISABLE KEYS;loading the data alter table tablname enable keys;这两个命令用来打开或者关闭Myisam表非唯一索引的更新。 2、对于InnoDB类型的表,这种方式并不能提高导入的效率,我们可以采取下面几种策

2015-09-18 17:29:47 630

原创 深入浅出Mysql(三)

索引的存储分类 Myisam的表数据文件和索引文件是自动分开存储的;InnoDB的数据和索引是存储在同一个表空间里面,但可以有多个文件组成。 创建索引语法:create [unique|fulltext|spatial] index index_name[using indext_type] on table_name (table_col_name,...)index_col_name:

2015-09-18 14:58:00 1079

原创 深入浅出Mysql(二)

通过Explain分析低效率sql的执行计划 用explain解释sql会有如下几列 select_type select类型 1、SIMPLE:简单的select语句,不包括union操作或子查询,例如: 2、PRIMARY/UNION PRIMARY:查询中最外层的select,如两表做union或者存在子查询的外层表的操作为PRIMARY,内层的操作为UNION,例如:

2015-09-18 11:15:55 1837 1

原创 深入浅出Mysql(一)

1、慢查询基础:优化数据访问 对于低效率查询,我们可以通过以下两个步骤来分析总是有效的: 1、确认应用程序是否在检索大量超过需要的数据。这通常意味着访问了太多的行,当时有时候也可能访问了太多的列 2、确认Mysql服务器层是否在分析大量超过需要的数据行 1.1 是否向数据库请求了不需要的数据 典型案例 查询不需要的记录 在查询时,Mysql会先返回全部结果集再进行计算,客户端应用程序会

2015-09-17 19:05:00 1544

原创 高性能Mysql——创建高性能的索引

一、索引基础select first_name from actor where id = 5;如果在id上建有索引,则Mysql将使用该索引找到id=5的列,也就是说Mysql先在索引上按值进行查找,然后返回符合条件的所有数据。 索引可以包含一个或者多个列的值。如果索引包含多个列,那么列的顺序也很重要,因为Mysql只能高效的使用索引的最左前缀列。 索引分类: 普通索引 唯一索引 主键

2015-09-16 18:07:54 807

原创 精通Hibernate——Hibernate缓存详解

Session的缓存时内置的,不能被卸载,称为Hibernate的一级缓存,SessionFactory有一个内置缓存和一个外置缓存,其中外置缓存时可插拔的缓存插件,级为Hibernate二级缓存。第二级缓存本身实现很复杂,必须实现并发访问策略以及数据过期策略。 持久化层缓存的范围 持久化层的缓存范围决定了缓存的生命周期以及可以被谁访问。缓存的范围可以被分为三类 1、事务范围 缓存只被当前事

2015-09-14 14:46:59 729

原创 精通Hibernate——应用程序中的悲观锁和乐观锁

当数据库采用read commited隔离级别时,会导致不可重复读和第二类丢失更新的并发问题。可以使用悲观锁或者乐观锁来避免这类问题 悲观锁:在应用程序中显式的为数据资源加锁,悲观锁假定当前事务操纵数据资源时,肯定还会有其他事务同时访问该数据,为了避免当前事务操作收到干扰,先锁定资源,但是他会影响性能。 乐观锁:假定当前操纵数据资源时,不会有其他事务同时访问该数据资源,此时,完全依赖数据库的隔离

2015-09-09 17:27:38 974

原创 精通Hibernate——数据库系统锁的基本原理

锁的基本原理如下: 1、当一个事务访问某种数据库资源时,如果执行select语句,必须先获得共享锁,如果执行insert、update或delete语句,必须先获得独占锁,这些锁用于锁定被操纵的资源 2、当第二个事务也访问相同的资源时,如果执行select语句,也必须先获得共享锁,如果执行insert、update或delete语句,也必须先获得独占锁。此时根据已经放置在资源上锁的类型,来决定第

2015-09-09 15:26:56 1009

原创 深入理解JVM:垃圾收集算法

标记-清除算法 首先标记出所有需要回收的对象,在标记完成以后统一回收所有被标记的对象,之所以说他是最基础的收集算法,是因为后续收集算法都是基于这种思路并对其不足进行改进而得到的。他的不足主要有两个:一是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续内存碎片,碎片太多会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收

2015-09-07 16:47:31 705

原创 精通Hibernate——多事务并发运行的并发问题

对于同时运行的多个事务,当这些 访问数据库中相同的数据时,如果没有必要的隔离机制,就会导致各种并发问题,这些问题可以归纳为以下几类: 1、第一类丢失更新:撤销一个事务时,把其他事务已提交更新的数据覆盖。 2、脏读:一个事务读到另一个事务未提交的事务 3、虚读:一个事务读到另一个事务已提交的新插入的数据 4、不可重复读:一个事务读到另一个事务已提交的更新数据 5、第二类丢失更新:一个事务覆盖

2015-09-07 10:42:37 3213 1

原创 精通Hibernate——数据库的事务与声明事务边界

数据库事务必须具备ACID特征,分别是原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability) 声明事务包含以下内容: 1、事务的开始边界 2、事务的正常结束边界(commit):提交事务 3、事务的异常结束边界(rollback):撤销事务,使数据回到事务前的状态 数据库系统支持以下两种事务 1、自动提交模式:每个sql语句

2015-09-06 17:46:46 1696

原创 精通Hibernate——数据库的事务与声明事务边界

数据库事务必须具备ACID特征,分别是原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability) 声明事务包含以下内容: 1、事务的开始边界 2、事务的正常结束边界(commit):提交事务 3、事务的异常结束边界(rollback):撤销事务,使数据回到事务前的状态 数据库系统支持以下两种事务 1、自动提交模式:每个sql语句

2015-09-06 17:45:36 439

原创 精通Hibernate——报表查询、技巧以及优化

投影查询 是指查询结果仅包含部分实体或实体的部分属性。投影是通过select关键字来实现的。以下Hql会检索出Customer及关联的Order对象from Customer c join c.orders o where o.orderName like 'T%';如果希望查询结果中只包含Customer对象select c from Customer c join c.orders o whe

2015-09-06 14:36:34 1507

原创 精通Hibernate——HQL查询详解

十三四

2015-09-02 15:50:50 870

原创 精通Hibernate——Hibernate的检索策略

在Session的缓存中存放的是互相关联的对象图。在默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象,下面我们以Order和Customer为例介绍如何配置Hibernate的检索策略,以优化检索性能。 Session有三种检索方法:load,get和find,他们都用来从数据中检索对象。load和get按照参数指定的OID加载一个持久化对象

2015-09-02 09:43:56 725

原创 精通Hibernate——Hibernate的两种映射类型说明

Hibernate的映射类型分为两种,内置映射类型和客户化映射类型。 内置映射类型:负责把一些常见的java类型映射到相应的SQL类型 客户化映射类型:Hibernate允许用户实现UserType或CompositeUserType接口,来灵活定制客户化映射类型。客户化映射类型能够把用户定义的Java类型映射到数据库表的相应字段。 1、Hibernate内置的映射类型 1.1 Ja

2015-09-01 19:28:57 1104

原创 精通Hibernate——Hibernate的映射类型

Hibernate的映射类型分为两种,内置映射类型和客户化映射类型。 内置映射类型:负责把一些常见的java类型映射到相应的SQL类型 客户化映射类型:Hibernate允许用户实现UserType或CompositeUserType接口,来灵活定制客户化映射类型。客户化映射类型能够把用户定义的Java类型映射到数据库表的相应字段。 1、Hibernate内置的映射类型 1.1 Ja

2015-09-01 14:13:01 349

原创 精通Hibernate——映射组成关系

建立域模型与关系型数据模型有着不同的出发点。域模型是由程序代码组成,通过细化持久化类的粒度提供代码可重用度,简化编程。关系数据模型由关系数据组成。存在数据冗余的情况下,需要把粗粒度的表拆分为具有外键参照关系的几个细粒度表,从而节省表的存储空间;另一方面在没有数据冗余的前提下,应尽可能减少表的数量,简化表之间的参照关系,以便提高数据库的访问速度。 由于建立域模型和关系型数据的原则不一样,使得持久化类

2015-08-31 16:53:05 954

原创 精通Hibernate——Hibernate使用触发器需要注意的两点

数据库系统有时会利用触发器来完成某些业务规则。触发器在接收到特定的事件时被激发,执行事先定义好的一组数据库操作。能激发触发器运行的时间可以分为以下几种: 1.插入事件,insert 2.更新记录事件,update 3.删除记录事件,delete Hibernate与数据库中的触发器协同工作时会造成两类问题: 1.触发器使Session的缓存中的数据与数据库不一致 在激发执行触发器之后在执

2015-08-29 19:34:36 4103

原创 精通Hibernate——级联操纵对象

当我们加载一个类时session会加载所有和该类直接关联或者间接关联的对象。 在对象关系映射文件中,用于映射持久化类之间关联关系的元素,如、和元素,都有一个cascade属性,他用于指定如何操纵与当前关联的对象,他的可选属性如下: none:在保存、更新或删除对象时,忽略其他关联的对象,他是cascade默认属性 save-update:当通过session的save、update以及save

2015-08-29 17:23:33 936

原创 精通Hibernate——Session的保存、更新、删除和查询

session的save方法 使一个临时对象变为持久化对象。 session的save方法完成以下操作: 1、把customer对象加入到缓存中,使他变为持久化对象 2、选用映射文件指定的标识符生成器为持久化对象分配唯一的OID。Customer.hbm.xml文件中id元素的 子元素指定标识符生成器:<generator><id name="id" column="ID" >

2015-08-20 19:18:01 1988

原创 Spring学习笔记——Spring事务只对运行时异常回滚

我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚,岂不知Spring的事务默认只有在发生运行时异常即:RunTimeException时才会发生事务,如果一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。 下面我们来看看异常的分类,异常一般分为Checked异常和RunTime异常。 CheckedException: Java认为Checked异

2015-08-20 18:34:58 4944

原创 深入理解JVM:垃圾收集器与内存分配策略

堆里面存放着Java世界几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活,哪些已经死去。判断对象的生命周期是否结束有以下几种方法 引用计数法 具体操作是给对象添加一个引用计数器,每当有一个地方引用时,计数器的值就加1,;当引用失效时,计数器就减1;任何时刻计数器为0的对象就 是不可能再被使用的。客观的说引用计数器算法实现简单,判定效率也很高,在大部分情况

2015-08-18 20:05:03 1052

原创 精通Hibernate——Hibernate中Java对象的状态详解

Hibernate中对于要持久化的Java对象在他的生命周期中需要经历以下几种状态: 1、临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于session的缓存中。处于临时状态的Java对象被称为临时对象。 2、持久化状态(persistent):已经被持久化,加入到session中,处于持久化的状态Java对象被称为持久化对象。 3、游离状态(detached):已

2015-08-13 19:15:55 1470

空空如也

空空如也

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

TA关注的人

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