有人测试Hibernate的时间消耗基本是jdbc的1.4倍。其中我认为比较大的一个问题就是cache的内存占用,最基本的,hibernate会在session-level的cache中保存所有新insert的object,而其实这些新插入的object在一般的web系统中是不会马上用到的。 hibernate3.2为了解决这个问题,新加入了StatelessSession实现,StatelessSession提供的是Command-Oriented API,它取出的对象是全部detached的。它 ...
- 09:03
- 浏览 (95)
- 评论 (0)
你这个问题其实分两种情况:1. 100同时使用?2. 总共100人使用,使用频度不高,如果是这个没有问题。下面讨论第一种情况:关键不在于你的CPU有多强,这里要了解一下Java运行原理。Java有一个垃圾回收机制,总是在内存剩余大概5%才启动,因为它中断权限最高,它运行,其他全部停止,因此,我们不希望垃圾回收机制频繁启动,那么就要控制内存不要触碰剩余5%底线。而在普通JavaBeans系统中,每一次客户端请求访问时,系统总是new一个javabeans或Java Class,如果并发访问量很大,比如并发10人或100人,再加上你的系统复杂,有很多JavaBeans,假设有30个,那么这下子10 ...
- 21:01
- 浏览 (43)
- 评论 (0)
今天在正在作的项目中应用了Decorator模式,解决了代码扩展和维护的问题,问题需求如下:平台对外提供SP加载接口,其中支付部分设计到N个接口,这些接口的DAO实现需要分解为很多子方法来实现,如何灵活的组织和分解这些DAO接口是个很关键的问题;刚开始考虑用工厂对应不同的支付类型提供不同的实现,然后用工厂统一管理。但实际现在的状况是平台每一次的支付并不是一次支付行为对应一种支付类型,而是每次支付都可能绑定多种支付类型,因此扩展类型来实现并不是一个很好的办法,但这也是问题,还没想好如何更好的处理这个问题。于是考虑用装饰来对接口的实现根据不同的接口要求随意装配不同的DAO子接口实现,这是一个很典型 ...
- 20:17
- 浏览 (27)
- 评论 (0)
2006年过去了,新的一年开始了,每年的这个时候都要写总结,年年写总结,内容格式都一样,但不一样的是心态的变化以及对来年的展望和行动! 1)志在千里 一开始踌躇满志,一切想的很美好,来北京公司之前还是很兴奋的,毕竟时第一次到北京工作,但这种兴奋持久了没多长时间,因为我发现这个公司的文化以及协作精神实在是我所遇到的最不合作的同事,几乎每个人都是“我不知道,你问别人吧”,在这种氛围中度过了俩个月,带着项目回了石家庄。2)问题接踵而至 回去了项目交接中的问题 ...
- 21:05
- 浏览 (49)
- 评论 (0)
装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的. Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.为什么使用Decorator?我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见 ...
- 20:30
- 浏览 (56)
- 评论 (0)
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.为何使用?我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。 怎么办? 使用Adapter,在这两种接口之间创建一个混合接口(混血儿).如何使用?实现Adapter方式,其实"think in Java"的"类再生"一节中已经提到,有两种方式:组合(composition)和继承(inheritance).假设我们要打桩,有 ...
- 20:17
- 浏览 (50)
- 评论 (0)
代理模式是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的意思,我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理.设计模式中定义: 为其他对象提供一种代理以控制对这个对象的访问.为什么要使用Proxy?1.授权机制 不同级别的用户对同一对象拥有不同的访问权利,如Jive论坛系统中,就使用Proxy进行授权机制控制,访问论坛有两种人:注册用户和游客(未注册用户),Jive中就通过类似ForumProxy这样的代理来控制这两种用户对论坛的访问权限.2.某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动 ...
- 20:09
- 浏览 (48)
- 评论 (0)
1、饿汉式、懒汉式和登记式单例 在google上搜索eager singleton或lazy singleton,最前面的几条纪录居然都是中文网页(难道中国人特别关注设计模式?)。这是三种初始化 singleton的方式,饿汉式在类被加载时就被实例化。懒汉式类加载时,不被实例化,在第一次引用时实例化。 由于饿汉式、懒汉式都不能被继承,扩展的登记式singleton可以被继承。 注意到lazy initialization形式中的synchronized,这个synchroni ...
- 19:48
- 浏览 (71)
- 评论 (0)
四、常见错误4# :自编代码来拷贝数组 Java允许你克隆数组,但是开发者通常会错误地编写如下的代码,问题在于如下的循环用三行做的事情,如果采用Object的clone方法用一行就可以完成: public class Example{ private int[] copy; /*** Save a copy of ’data’. ’data’ cannot be null.*/ public void saveCopy (int[] data){ copy = new int[d ...
- 19:34
- 浏览 (59)
- 评论 (0)
"在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用IntrospectorCleanupListener作为相应的解决办法。"对于这一句话,引用关于IntrospectorCleanupListener一段解释: 引用spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由 JavaBeans Introspector的使用而引起的 ...
- 20:43
- 浏览 (190)
- 评论 (0)
一、开发和部署方式是否需要改变 二期的开发和部署是各个webmoudle和ejbmoudle分别打包部署,这样使的各个不同功能模块的应用比较独立,公用的jar包引入,不同的应用单独开发和打包,使的后开发模块对以前开发部分影响最小,而且利于统一管理和扩展维护;建议三期也采用这种方式,把我们现有的代码进行统一规划和分解,将工程也分解为独立单一的不同moudle。 二、项目管理以及开发方法 &nbs ...
- 19:31
- 浏览 (64)
- 评论 (0)
什么是健壮的企业级应用什么是健壮的企业级应用 “随需应变的软件”,就好像是塑胶泥,我们可以任意拿捏,变化出不同的形状。“随需应变的软件”,必然是健壮的软件,不论怎样折腾,都能够应对自如。 什么是“健壮的企业级应用”,对此我无法给出一个精确的定义,我只能够罗列一些我的理解。 “健壮的企业级应用”,其各个部分应该是低耦合、高内聚的。其内部的各个模块之间的关系最低,且可以互相替换,从而可以方便地拆卸、替换和修改各个模块。 其核心思想,就是“接口&rdqu ...
- 19:22
- 浏览 (86)
- 评论 (0)
极限编程概述极限编程(Extreme Programming,简称XP)是目前讨论最多、实践最多、争议也是最多的一种敏捷开发方法。XP是一套能够快速开发高质量软件所需的价值观、原则和活动的集合,使软件能以尽可能快的速度开发出来并向客户提供最高效益。XP是很多Java开源软件使用的软件开发方法,也是许多实干派大师倍加推崇的一种方法,同时也有很多使用传统软件开发方法的大师和大公司倍加批评的一种软件开发方法。可以说,认同者,对它是相见恨晚!批评者,认为它是离经叛道,胡说八道!接触XP之前,我也曾认为它的思想和实践都是胡扯。但是,经过深入学习之后,才发现XP是句句箴言,十分有道理。而之前的我,却是白走 ...
- 19:17
- 浏览 (118)
- 评论 (0)







评论排行榜