- 博客(58)
- 资源 (2)
- 收藏
- 关注
消息写
[size=medium]处理流程[/size][size=small] 正如JDK规范中指出一个Channel任意时刻只能执行单个线程的写操作。单个Nioworker可以顺序处理多个socketChannel的写操作,单个SocketChannel上的多次写操作会事先放入到写请求队列;结果由Nioworker调度执行。当Channel被调度时正常情况下消息队列会被出列处理之至为空...
2013-12-11 08:47:16
193
消息读
netty使用了相关的算法计算出比较合适缓冲区大小,整个流程图如下[img]http://dl2.iteye.com/upload/attachment/0092/0206/a1bc70bb-e134-3d3f-b144-865b12b1c445.jpg[/img]ReceiveBufferSizePredictor可以根据实际读取的字节大小数设置下次读写叫合适的缓冲区大小。类结构如下...
2013-12-10 12:12:07
269
Nio线程协作
Netty 是一个客户端服务器框架,它基于jdk nio开发。[url=http://netty.io/]Netty home[/url].Netty 样例代码如下[size=medium]客户端[/size][code="java"] // Configure the client. ClientBootstrap bootstrap = new Clien...
2013-12-10 10:01:58
198
web大数据导出
关于csv文件导出的开源框架很多,可以到[url=http://sourceforge.net/search/?type_of_search=soft&words=csv]http://sourceforge.net/search/?type_of_search=soft&words=csv[/url]去了解学习。在典型的基于java的MVC框架中,当要下载数据时需求在页面上添加链接或按钮,触发一...
2013-11-14 15:48:48
507
原创 分页复选实现
在struts2或webwork等web框架中中编写基于ec:table可分页记住复选框1.分离主页面和子页面,子页面用于加载ec 列表2.在主页面上定义全局数组(装载选中的记录key)3.提交选中的提交按钮使用自定义freemarker,在ftl代码中: 1.将子页面当前选中key,在全局数组中不存在,则放入。 2.取出全局数组中的记录,根据它生成对应的hid...
2013-09-01 20:53:51
343
struts2或webwork嵌套集合类型转换
给出例子代码[code="java"] public class TestAction{ private List users; ////// getter setter } .... public class User{ private String username; ////...
2013-08-21 13:15:34
133
支持占位符的文本解析PropertySourcesPropertyResolver
PropertyResolver 是 Environment的顶层接口,主要提供属性检索和解析带占位符的文本。bean.xml配置中的所有占位符例如${}都由它解析。通过例子代码了解它的功能和使用[code="java"]public class PropertySourcesPropertyResolverTests { private Properties testProperti...
2013-07-14 18:27:15
327
支持不同运行环境下的属性处理--Environment 特性
[size=large]介绍[/size] Environment架构是spring 3.1版本引入的,它代表当前应用运行环境比如servlet,porlet。主要处理两部分的内容 profiles和properties,properties将使用org.springframework.core.env.PropertyResolver解析。而Environment继承了此实现。[...
2013-07-14 01:47:03
410
支持开发、测试、生产环境下bean配置切换的profiles特性
[size=large]介绍[/size]Bean definition profiles是3.1版本引入的新特性。[size=large]背景[/size]它提供了一种机制:当客户端请求某一bean时,容器可以根据不同的环境注册并返回不同的bean。“environment”对不同的用户也说意义也不太一样,把应用部署在性能环境中测试时,注册的就是监控信息;或者客户A和客户B部署时...
2013-07-11 12:31:40
321
方法缓存
[size=x-large]介绍[/size] spring3.1之后提供了方法的缓存支持,透明的将缓存添加到应用中。这种缓存架构类似事务架构,提供了不同的缓存方案。[size=large]理解缓存架构[/size] 缓存架构的核心在于缓存Java方法,减少方法执行次数。就是说当目标方法执行时,架构会检查指定参数的方便是否已经被执行过,如果没有则执行,并缓存结果返回;否则直接返...
2013-07-10 18:20:41
275
基于xml schema的扩展标签
xml schema是spring 2.0版本之后引入的,在之后的2.5和3.x加入了新的元素。引入的主要动机在于:虽说spring把中一切皆为对象,但在开发人员的角度上讲,我们要在Spring中具体化或抽象化一些东西,比如具体化单值、集合;或特定于具体应用的抽象比如AOP,事务。那不得不在spring中配置一些基础设施bean。或第三方框架支持我们都使用过spring Security框架,说实...
2013-07-09 13:34:50
154
原创 BeanDefinition数据流
[size=medium]BeanDefinition是Spring配置文件中bean定义的内存表现形式,我们先来看看bean的创建。在下图中不同的元素的解析路线用不同的颜色标注[color=red]主线部分[/color] [list=1][*] 实例化xmlApplicationContext[*] 实例化XmlBeanDefinitionReader[*] Resourc...
2013-07-08 19:41:16
119
原创 bean的创建周期回调
[size=medium]初始化回调 实现org.springframework.beans.factory.InitializingBean接口,afterPropertiesSet方法将在bean的所有属性装配好之后调用[/size] [code="xml"][/code][code="java"]public class AnotherExampleBean ...
2013-06-29 16:24:34
131
原创 Scope实现原理
[size=medium]内置Scope分类Singleton 每个IOC容器对一个bean定义创建唯一实例Prototype 对一个bean定义,每次请求容器都会创建新的实例Request 对一个bean定义,一次web请求会创建一个实例Session 对一个bean定义,一次web会话创建一个实例Global Session 对一个bean定义,一次porlet会话创...
2013-06-27 18:02:40
1334
原创 MethodInjection 动态方法替换原理
[size=medium]singleton实例依赖于prototype实例,ProtoType含义是无效的,必须钩入向Spring容器请求,也就是调用getBean方法。换句话说,我们必须改变依赖关系的注入。[/size][img]http://dl2.iteye.com/upload/attachment/0086/0504/c7ba82d0-3e2d-3db4-8542-2f2501...
2013-06-21 14:45:58
347
LocalSessionFactoryBean
[size=medium]Hibernate SessionFactory的创建在LocalSessionFactoryBean afterpropertySet执行时进行运行时配置configTime***Holder设置的资源将由对应实现Hibernate接口的工厂方法在创建工厂时使用,创建完成之后configTime***Holder置空。 configTimeDataSour...
2013-06-07 12:18:41
184
类层次结构中的引用关系必须在同一ClassLoader下
编写接口[code="java"]/* * Copyright (c) 2008 Skyon Technology Ltd. * All rights reserved. * * project: ims * create: 2013-6-7 * cvs: $Id: $ */package com.skyon.cl.test;/** * TODO (...
2013-06-07 11:03:55
181
AbstractBeanFactory获取bean周期
[code="java"]AbstractBeanFactory是IOC容器实现的骨架,当从Spring容器获取Bean时,调用的正是getBean方法。实现步骤如下 检查单例缓存 在父工厂中查找 初始化当前bean依赖的beans(depends-on) 根据scope使用不同的创建方式bean 检查获取的bean是FactoryBean类型还是普通bean...
2013-05-11 22:58:42
133
原创 java.util.zip.ZipException:invalid entry
[code="java"]Tomcat中时启动会校验项目的/WEB-INF/lib下的所有jar包,jar文件是一种带有Manifest清单文件的压缩包,Manifest文件是jar规范提供用来提供依赖扩展的,比如该jar包是一个包含main方法的可执行的Jar包,那么manifest清单文件中就包含Main-class:xxxx;同时如果改jar需要依赖其他的jar包,则清单文件中就多了一行Cl...
2013-05-10 11:03:06
654
JAVA中查找类或资源文件
[size=medium] 根据语义的不同,查找类或资源的方式通常不太一样;Servlet语义下查找的类或资源必须在WEB根目录下;在URLClassloader语义下查找的类或资源在指定的URL中;[b] [color=red]而java.io.File查找的类或资源特定于本地文件系统,File实例文件和目录路径名的抽象表示形式,并不能说明文件系统就存在对应的目录或文件,可以用ex...
2013-05-09 14:07:13
455
OpenSessionInViewFilter
[code="java"]在一次请求内绑定一个Session到线程,防止Web资源加载时的懒加载问题。HibernateTransactionManager或JTATransactionManager将会使用此Session。非事务运行时(并非事务挂起)也可使用。该类的flushMode设置为Manual,由于该类一般为事务层提供Session,当Session同步到事务,对于非只读事务(de...
2013-04-08 00:52:23
125
HibernateInterceptor
[code="java"]继承HibernateAccessor功能,在代理到Hibernate操作之前尚未发现Session则创建绑定,否则使用线程已绑定的Session;操作中出现错误可开启exceptionConversionEnabled以转换异常;操作结束后,Session由自己创建则关闭或延迟关闭,否则回复FlushMode/* * Copyright 2002-2012 ...
2013-04-08 00:10:49
90
HibernateAccessor
[code="java"]HibernateAccessor是HibernateInterceptor和HibernateTemplate父类,它主要提供Hibernate刷新机制的转换和Hibernate异常体系到Spring异常体系的转换刷新机制 Spring定义刷新选项 FLUSH_NEVER FLUSH_AUTO FLUSH_EAGER ...
2013-04-07 23:59:44
210
SessionFactoryUtils
[code="java"]SessionFactoryUtils支持JTATransactionManager和HibernateTransactionManager;被Spring内部HibernateTemplate或HibernateInterceptor使用,同时可由应用代码调用。它提供了事务或非事务性Session获取,释放,Hibernate异常转换,事务超时等功能。下面介绍主要方法...
2013-04-07 15:41:59
401
原创 SessionHolder
[code="java"]DEFAULT_KEY 存储Threadlocal Session(可能由OpenSessionInViewFilter/Interceptor获取,也可能由Spring激活时SessionFactoryUtils直接或间接调用获取)sessionMap 除了存放DEFAULT_KEY指定线程绑定的Session,还有hibernate配置中指定的 Transact...
2013-04-07 13:30:07
124
原创 DataSourceUtils 管理参与事务性的JDBC连接
[code="java"]提供一些静态方法用于管理可能参与事务的JDBC连接。JDBCTemplate或JDBCDaoSupport自动使用它,而且在DataSourceTransactionManager或JTATransactionManager,hibernateTransactionManager中支持。DataSourceTransactionManager中 Data...
2013-04-01 17:27:01
777
ConnectionHolder
[code="java"]继承了ResourceHolderSupport功能,包装了一个JDBC连接,提供了创建和释放保存点支持,它有以下属性connectionHandle JDO规范连接处理器,用户获取和释放JDBC连接,标准实现中释放方法不作任何处理。当事务挂起时,可能将connectionHandle置空currentConnection Connection缓存,在第一次请求和...
2013-03-29 11:30:37
266
JDBCContext
[code="java"]成员变量owner:sessionconnectionManager:管理连接isTransactionCallbackRegistered:是否注册回调hibernateTransaction:JTATransaction或CMTTransaction事例重要方法borrowConnection由session.connection调...
2013-03-29 10:40:02
235
原创 AbstractPlatformTransactionManager
[code="java"]AbstractPlatformTransactionManager是Spring提供事务支持的核心处理类,它的功能可大致划分 处理传播行为 处理挂起与恢复 检查只读标志,处理回滚 处理回调 了解事务传播行为 PROPAGATION_REQUIRED 支持已存在的事务或开启新事务 PROPAGATION_SUPPORTS 支持...
2013-03-28 17:06:23
354
ResourceHolderSupport
[code="java"]资源Holder父类。它有以下几个属性 synchronizedWithTransaction 当Holder被注册到同步之后,为true,否则为false;同步处理完成之后,synchronizedWithTransaction被重新设置为false rollbackOnly 设置事务只读模式,JDBC并没有提供像JTA UserTransaction 的s...
2013-03-28 13:45:50
661
TransactionSynchronization
[code="java"]同步处理是Spring事务支持主要内容之一,也是其它框架的内容之一.Spring事务同步处理类是org.springframework.transaction.support.TransationSynchronization. 成员变量 status_committed 事务提交成功 status_rolled_back 事务回滚成功 s...
2013-03-28 12:06:01
487
原创 JDBCTransaction JTATransaction CMTTransaction
[code="java"]事务模型 java事务模型可分为三类:本地事务模型, 编程事务模型, 声明事务模型 本地事务:由资源管理器处理,比如JDBC Connection,通过设置自动提交模式是否禁用来使用事务,也就是说事务处理与Connection直接相关 编程事务模型:JTA事务由javax.transaction包API支持,事务处理与资源使用分离开...
2013-03-28 00:32:49
192
TransactionFactoryFactory TransactionFactory
[code="java"]三种事务的创建由对应的JDBCTransactionFactory,JTATransactionFactroy,CMTTransactionFactory完成这三者区别在 connectionReleaseMode JTATransactionFactroy和CMTTransactionFactory连接释放模式执行每条语句后释放连接,JDBCTra...
2013-03-27 20:31:55
384
TransactionManagerLookupFactory
[code="java"]TransactionManagerLookupFactory.getTransactionManagerLookup根据hibernate.transaction.manager_lookup_class确定TransactionMangerLookup,简要介绍TransactionMangerLookup public TransactionManage...
2013-03-27 19:14:30
318
ConnectionProviderFactory 使用那种“连接池”
[code="java"]hibernate提供org.hibernate.connection.ConnectionProvider获取jdbc连接,ConnectionProvider实现类包括 DriverManagerConnectionProvider DateSourceConnectionProvider UserSuppliedConnectionProvide...
2013-03-27 18:46:59
316
原创 ConnectionManager 管理JDBC连接
[code="java"]log:打印日志(废话)callback: 回调类:在 打开连接,关闭连接,事务状态时机定义动作factory:供应ConnectionProvider以提供连接,Batch以管理StatementreleaseMode:释放模式connection:连接缓存borrowedConnection:连用连接缓存wasConnectionSuppl...
2013-03-27 18:39:25
1240
ConnectionReleaseMode 连接何时释放
[code="java"]AFTER_STATEMENT 每条SQL执行完马上释放 AFTER_TRANSACTION 事务结束之后释放 ON_CLOSE session关闭或失去连接之后释放 // $Id: ConnectionReleaseMode.java 8409 2005-10-14 20:28:18Z steveebersole $package org.hiber...
2013-03-27 15:53:43
585
JConsole,JVisualVM
JConsole,JVisualVM都是JAVA自带的监测工具,在%JAVA_HOME%\bin下JConsole使用官方文档http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html直接在cmd下 jconsole就可启动;jconsole等都是监测进程级的JAVA应用。当启动jconsol...
2013-03-13 17:58:26
93
原创 JVM调优实例
[url=http://blog.youkuaiyun.com/kthq/article/details/5180962]JVM调优实例[/url]
2013-03-07 15:44:45
104
原创 环境变量及批处理文件
service.bat CATALINA_HOME 用来定位Tomcat目录 CATALINA_BASE service.bat脚本认为这包含可执行的bin\tomcat6.exe,如果CATALINA_BASE没配置,则使用 定位\logsCATALINA_HOME JAVA_HOME service.bat脚本用它来定位虚拟机:先查找\...
2013-03-04 18:27:39
119
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人