- 浏览: 94895 次
- 性别:
- 来自: 杭州
最新评论
-
dylan0514sina.cn:
youjianbo_han_87 写道dylan0514sin ...
方法缓存 -
youjianbo_han_87:
dylan0514sina.cn 写道youjianbo_ha ...
方法缓存 -
dylan0514sina.cn:
youjianbo_han_87 写道缓存方法有意义吗,方法+ ...
方法缓存 -
youjianbo_han_87:
缓存方法有意义吗,方法+调用从缓存中取内容的方法 换成 方法+ ...
方法缓存 -
dylan0514sina.cn:
Shen.Yiyang 写道剔除策略只有方法执行的时候指定ke ...
方法缓存
文章列表
处理流程
正如JDK规范中指出一个Channel任意时刻只能执行单个线程的写操作。单个Nioworker可以顺序处理多个socketChannel的写操作,单个SocketChannel上的多次写操作会事先放入到写请求队列;结果由Nioworker调度执行。当Channel被 ...
netty使用了相关的算法计算出比较合适缓冲区大小,整个流程图如下
ReceiveBufferSizePredictor可以根据实际读取的字节大小数设置下次读写叫合适的缓冲区大小。类结构如下
AdaptiveReceiveBufferSizePredictor 提供了一种自适应的计算方式,如下代码所述,当改类初始化的时候,会填充SIZE_TABLE数组。
private static final int[] SIZE_TABLE;
static {
List<Integer> sizeTable = new ArrayList< ...
Netty 是一个客户端服务器框架,它基于jdk nio开发。Netty home.
Netty 样例代码如下
客户端
// Configure the client.
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCach ...
关于csv文件导出的开源框架很多,可以到http://sourceforge.net/search/?type_of_search=soft&words=csv去了解学习。在典型的基于java的MVC框架中,当要下载数据时需求在页面上添加链接或按钮,触发一次请求返回一个流,在响应中指定mime type类型比如 response.setContentType("application/ms-excel;charset=gbk")。常用的web框架struts2,webwork,Spring MVC都提供了一致的方式只要你构造一个流。流行的eXtremeComponen ...
在struts2或webwork等web框架中中编写基于ec:table可分页记住复选框
1.分离主页面和子页面,子页面用于加载ec 列表
2.在主页面上定义全局数组(装载选中的记录key)
3.提交选中的提交按钮使用自定义freemarker,在ftl代码中:
1.将子页面当前选中key,在全局数组中不存在,则放入。
2.取出全局数组中的记录,根据它生成对应的hidden域,每个hidden域的名字为checkedNos,值为对应数组中的key
4.因为使用ajax分页,通过ec:table中oninvoke指定JS function,,编写此function分为三步
...
struts2或webwork嵌套集合类型转换
- 博客分类:
- any
给出例子代码
public class TestAction{
private List users;
////// getter setter
}
....
public class User{
private String username;
////getter setter
}
在以上代码中,假设users集合装的是User类实例,则在于TestAction同包下建立一个TestAction-conversion.properties文件:
Element ...
PropertyResolver 是 Environment的顶层接口,主要提供属性检索和解析带占位符的文本。bean.xml配置中的所有占位符例如${}都由它解析。通过例子代码了解它的功能和使用
public class PropertySourcesPropertyResolverTests {
private Properties testProperties;
private MutablePropertySources propertySources;
private ConfigurablePropertyResolver propertyResolver;
...
介绍
Environment架构是spring 3.1版本引入的,它代表当前应用运行环境比如servlet,porlet
。主要处理两部分的内容 profiles和properties,properties将使用org.springframework.core.env.PropertyResolver解析。而Environment继承了此实现。
背景
一个profile是有名字的,在激活状态下它代表注册在容器中的一组bean definitions.一组bean可以通过xml和注解配置被归于到一个profile中,只要这个profile被激活了那这组bean则是可以被注册的。那Env ...
介绍
Bean definition profiles是3.1版本引入的新特性。
背景
它提供了一种机制:当客户端请求某一bean时,容器可以根据不同的环境注册并返回不同的bean。“environment”对不同的用户也说意义也不太一样,把应用部署在性能环境中测试 ...
介绍
spring3.1之后提供了方法的缓存支持,透明的将缓存添加到应用中。这种缓存架构类似事务架构,提供了不同的缓存方案。
理解缓存架构
缓存架构的核心在于缓存Java方法,减少方法执行次数。就是说当目标方法执行时,架构会检查指定参数的方便是否已经被执行过,如果没有则执行,并缓存结果返回;否则直接返回缓存结果并不执行方法。当然这种情况只针对方法执行结果结果不会变。
缓存和缓冲区
缓冲区用于在读写操作之间开放的临时存储区,操作快的一方必须等待慢的一方因此影响性能。缓存区通过开放大的比较合适的数据块而不是单字节,以缓解这种性能损失,特征是单条记录读写只有一次,而且至少有 ...
基于xml schema的扩展标签
- 博客分类:
- spring3.x
xml schema是spring 2.0版本之后引入的,在之后的2.5和3.x加入了新的元素。引入的主要动机在于:虽说spring把<bean/>中一切皆为对象,但在开发人员的角度上讲,我们要在Spring中具体化或抽象化一些东西,比如具体化单值、集合;或特定于具体应用的抽象比如AOP,事务。那不得不在spring中配置一些基础设施bean。或第三方框架支持我们都使用过spring Security框架,说实在的如果不使用security标签,我们必须为每个过滤器有一个<bean/>定义。所以我们为了方便不得不去自定义标签,xml schema将适用。
引入schem ...
BeanDefinition数据流
- 博客分类:
- spring3.x
BeanDefinition是Spring配置文件中bean定义的内存表现形式,我们先来看看bean的创建。在下图中不同的元素的解析路线用不同的颜色标注
主线部分
实例化xmlApplicationContext
实例化XmlBeanDefinitionReader
ResourceLoader定位bean文件
XmlBeanDefinitionReader读入Resource
DefaultBeanDefinitionDocumentReader解析Document
默认命名空间判断
import元素判断
alias元素判断
beans元素递归
非默认bean命名空间 ...
bean的创建周期回调
- 博客分类:
- spring3.x
初始化回调
实现org.springframework.beans.factory.InitializingBean接口,afterPropertiesSet方法将在bean的所有属性装配好之后调用
<bean id="exampleInitBean" class="examples.AnotherExampleBean"/>
public class AnotherExampleBean implements InitializingBean {
public void afterPropertiesSet( ...
内置Scope分类
Singleton 每个IOC容器对一个bean定义创建唯一实例
Prototype 对一个bean定义,每次请求容器都会创建新的实例
Request 对一个bean定义,一次web请求会创建一个实例
Session 对一个bean定义,一次web会话创建一个实例
Global Session 对一个bean定义,一次porlet会话创建一个实例
后三种只在Web环境下使用,AbstractApplicationContext refresh入口
AbstractRefreshableWebApplicationContext会注册这三种BEAN
WebAppli ...
singleton实例依赖于prototype实例,ProtoType含义是无效的,必须钩入向Spring容器请求,也就是调用getBean方法。换句话说,我们必须改变依赖关系的注入。
例如A的scope是 Singleton ,B的scope是Prototype,当A依赖B时,B实例会在第一次初始化 ...