| 個人檔案人行道逆行部落格清單 | 說明 |
|
|
2006/10/4 Spring 2.0定版发布Spring2.0昨天最终发布了,新版本在原基础上强调了三个理念:简洁、强大、健壮。较之前版本做了以下增强:
1、IOC的增强,可以自定义Beans的应用范围
2、XML增强,支持namespace
3、AOP的增强,采用了AspectJ的优点更加高效地识别程序中需要应用的切点
4、JMS的增强,优化JMS消息的conusme以及本地事务处理
5、支持多种web开发语言,ruby,groovy以及beanshell
6、MVC的增强,增强了form表单校验功能
7、增加了对门户的支持
8、引入了Java5的metadata功能间接增强了对OR工具的增强
接下来又有事情可以做了 2006/8/16 DIC之创新观点IPv6与神州数码网络
随着信息化建设进程的加快,基于历史原因等因素,绝大部分的IPv4地址资源一直被欧美等国家控制着,而我国用户在IPv4地址的应用上一直处于极度匮乏的状态。于是乎,IPv6成了解决IPv4地址匮乏的灵丹妙药,按照正常方式从IPv4向IPv6转换成功的话,全球所有的终端均可拥有一个IP地址,从而可实现全球网络的概念。
金融应用的国际化与本地创新
银行业对国际化的需求日益迫切,业务国际化和运营模式的国际化趋势在慢慢浮出水面。业内人士指出,在银行积极推进国际化的进程中,信息化建设已成为提升银行竞争力的关键要素。从全球金融业的发展历史来看,正是信息化建设大大激发了传统金融行业的活力,为金融企业向现代金融巨头转型奠定了坚实的基础。因此,未来几年,也是我国银行信息化建设实现跨越式发 展的重要阶段。
坚持自主创新 建设创新型国家——专家学者在自主创新论坛上的演讲摘编
专家学者在自主创新论坛上的演讲摘编:尚勇:量化指标与宏观决策;马俊如:产学研结合的创新探讨;陈清泰:企业技术创新的政策思考;段瑞春:知识产权与品牌财富
坚持走中国特色自主创新道路——胡锦涛在全国科学技术大会上的讲话
这次会议的主要任务是:分析形势,统一思想,总结经验,明确任务,部署实施《国家中长期科学和技术发展规划纲要(2006-2020年)》,动员全党全社会坚持走中国特色自主创新道路,为建设创新型国家而努力奋斗,进一步开创全面建设小康社会、加快推进社会主义现代化的新局面。
华人企业国际化
[摘要]中国品牌在国际舞台扮上主角的,不多,尤其是IT产业。Acer董事长施振荣日前在北京大学演讲时,用“孤单”一词描述自己的感觉,并不是故作姿态之辞,因为一个企业的国际化总是和周围群体的国际化相得益彰的。也正因为如此,施振荣把Acer创业24年来、花费上百亿元的实战经验讲了出来,与业界同仁分享——
信息产业及现代服务业
发展信息产业和现代服务业是推进新型工业化的关键。国民经济与社会信息化和现代服务业的迅猛发展,对信息技术发展提出了更高的要求。
“大象”背上的SOA
在业界对于SOA仍然存在着种种顾虑时,作为SOA最极力倡导者之一的IBM,仍然信心十足的进行着它的SOA计划。而这也恰恰是IBM一向的行事风格。仅仅在3月,就在中国连续进行了与SOA颇为相关的两项重要推广—“2006 IBM SOA Day”和以SOA“落地”为主题的技术开放日。IBM借此正式宣告:SOA并不是又一个空泛的市场宣传口号。
技术与应用的新轮回2006年服务器技术展望
2006年将发布的新品和新技术有不少,例如AMD的多核皓龙、Intel的双核安腾、Sun的全系列Niagara服务器、IBM的Power6、HP的HP-UX 11i v3、微软的集群操作系统等,那么在新的一年中,最值得关注的技术与产品是哪些? 2006/7/12 Rule EngineRule engines are used in applications to replace and manage some of the business logic. They are best used in applications where the business logic is too dynamic to be managed at the source code level -- that is, where a change in a business policy needs to be immediately reflected in the application. Applications in domains such as insurance (for example, insurance rating), financial services (loans, fraud detection, claims routing and management), government (application process and tax calculations), telecom customer care and billing (promotions for long distance calls that needs to be integrated into the billing system), ecommerce (personalizing the user's experience), and so on benefit greatly from using rule engines.
Rule-based applications communicate with the rule engine by passing in the set of rules to be executed. Then, the application can inspect the results and either display them to the end user or perform further processing. The rule engine determines when to evaluate each rule based on the input required for the rule as well as the results obtained from the evaluation of previous rules. You do not need to specify the order or the dependencies of the rules. 以上是对Rule Engine的原文介绍,感觉还是很虚的东西,个人感觉Rule Engine的应用场景还是不够细化,仍然无法大部分抽取业务逻辑,不过结合workflow进行conditional flow control倒是一个不错的scene。Rule Engine只是对于if-else之类的条件进行抽取剥离(不过大部分业务代码也就是这个样子),光这点功能实现就使得原本已经很复杂的xml更加复杂,难看,针对drools来说,看到的是一堆堆的条件语句被抽到xml中,source-code也一样被抽到xml中,与其说隔离,不如说用xml写java,真的能剥离业务? 2006/6/15 Google's Bug or AJAX's Bug出现这个错误很简单,因为都是异步调用,每次操作都向application level发request,由于process的时间较长,操作的速度较快,这样结果返回时回调展现方法,将两个结果都显示出来了。 2006/5/7 技术周期 周期,我们都学过,完成一次振动所需要的时间,当然这强调的是机械周期,用在IT技术领域也一样适合,为什么呢?因为他们都有两个共同点,有两个极端,波峰、波谷,同时还有一个时间段的概念。
IT领域中技术的发展也是如此,没有最好的技术,只有最适合目前阶段的技术,当然这个技术不是狭义上的语言、服务等,而是涵盖整个IT的硬件、软件、工程、设计理念、前沿理论等等。
从结构设计上的技术回归,从最初的CS到BS,再到即将即将火热的RIA(这是BS的进阶,介于CS于BS中间,在我看来更像是轻量级CS结构^_^),CS就好比波谷、BS好比波峰,RIA就好比由于能量损失而衰减的波谷,总之,结构技术将再一次的回归。 语言艺术的技术回归,从最初的结构化语言到面向对象,再到面向服务、面向方面,设计理念一步步成熟,语言的parse也从客户端搬到了服务器,但现在随着微软的avalon的发布以及现在才抄得火热的AJAX,相信会掀起计算机设计技术的一次革命,其强调的技术之一就是让解析内容回归到客户端,这又是一次周期的表现。
系统架构设计上的技术回归,从最初的基于操作系统的架构设计被sun带到了跨平台的架构设计,再被ibm启发使用中间件技术,不过很可惜,这个市场巨大的技术应用并没有被ibm发挥到极致,反倒是bea抢了先机,逢人必推中间件,so,系统设计人员从考虑操作系统到不考虑操作系统再到考虑中间件(中间件的实现其实和操作系统的理念一样,也是通过统一平台调度资源,操作系统无非调度的是硬件资源罢了),这难道不也是周期的表现吗?
根据论文的写作规范,开题及开门见山摆出了论点,也举例了不少论据,现在文章末了应该总结对论点进行升华。鉴于我书念得少,加少不知怎么上了高中以后就对写作失去信心,就不总了。
Plus:浑浑噩噩地过了20多天,终于在大家都休假没人理我的情况下编出一篇看似技术类,实则调侃的文字,最近情绪处于低谷,哪位仁兄、仁姐能稍微开导我下。决定今天去影院看电影提提神,然后去KTV吼吼发泄下,不知道会不会被waitor鄙视,sigh...,有类似症状的同仁们可以分享下how ti relax的经验,拜谢 2006/4/1 信用卡考虑到未来两三年内我的消费需求增大,转帐已经不能满足这种消费模式,有必要申请一张信用卡了。申请过程,出于敏感,回来后想想设计一个信用卡管理系统究竟有多复杂? 从系统环境角度出发需要考虑目前招商银行的网络环境及布局,能够通过internet提供多种服务,以及服务的可靠安全保密功能,这个招商银行在同类中做得还是相当不错的,集中\分布式平台处理数据、跨平台、跨操作系统、跨网络协议运行也是需要考虑的,对于银行这种特殊机构,其分支机构众多,网点设备种类繁多也是需要考虑系统设计的因素。当然这些都不是考虑的重点,这些在其他种类的卡中都需要考虑,可以直接利用现有的资源,不做赘述。 从业务功能上考虑需要考虑用户资料管理、申请表管理、信用卡信息管理、帐单功能、对帐功能、划帐功能、报表功能、然后就是对以上各功能的维护管理。这里只简要提出需要考虑的各个方面,接下来就是细化的问题,鉴于各功能之间功能点差距不大,就不详述了,毕竟每个人有自己的一套方案,我也就不在此充当专家了,呵呵。 从技术实现的角度上的考虑就不是现在急于考虑的事情,根据前两步对各功能点的强调与侧重,再挑选合适的技术实现即可,而不是将流行的技术硬加载到系统上,当然还需要考虑采用这种技术的后期维护成本以及稳定性等等多种考虑因素,这里我也不再详述了。2006/3/22 Ctais的报表与RIA 目前项目中涉及到的报表系统还是老套的PB两层结构的报表系统,老大也曾表示想将目前两层结构的报表移植到三层结构中。对于老大轻描淡写的一句话,由于时间的关系一致没有好好考虑一个实现方案。今天突然又想到了这个话题,索性就好好想想,利用博客记录一下思绪。
报表从业务实现上并不复杂,业务上需要涉及的是样示定义、报表模板定义、数据查询组织、数据修改、报表打印等等,这些功能应该是最常用的核心功能,具体细节等以后有时间再考虑,这些功能有一个共同特点就是对view tier的要求特别高,需要很强的功能组件支持。也就是说从技术上相当依赖RIA。解决了这个问题,报表系统差不多就完成了50%的功能实现。下面来说说RIA的实现上可能需要考虑的问题。
1、基于RIA的组件的元数据系统的定义、读取、存储、解析、使用等;
2、数据集组件绑定的查询语句;
3、数据集组件需要显示的字段;
4、数据集组件对于用户定义的报表模板的组织与拼装展现;
5、数据集组件如何与Microsoft的组件(诸如excel)的结合绑定,以及第三方组件的plugin;
当然RIA带来的效应就是client is no longer a thin client,对客户端的要求增加了。当然毕竟这是少用户的需求,是用于产出报表的系统,不是像博客、论坛之流的泛数据化的操作,所以还是可以采用的一个技术方案,不过更为详尽的方案待有时间考虑后再贴出来。 2006/2/14 JSR175——用于 Java 编程语言的元数据工具down了一篇SUN关于MetaData的官方说明,粗看了一下,有些抵触,首先是建立在JDK1.5的Platform上,且对数据的描述是在源代码一级描述,属于静态描述,不易更改,极度不爽。待细细看看再写些文字发发牢骚,呵呵 2006/1/25 简单了解下POJO和POPOJO = pure old java object or plain ordinary java object or what ever. 就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。 2005/12/4 谈谈克隆的用途 Java中的克隆其实只有一种,即shallow copy,而所谓的deep copy则是shallow copy的重复,在设计缓存时,尤其是对数据库中的对象进行映射时将是非常有用的,通过ArrayList进行数据对象存储,通过LinkList实现LRU算法,简单的一个小技巧即实现了单机的缓存拷贝处理,对于Serializeable的clone,不确定的因素较多,在试验的过程中该类对象的克隆的效率一直是个棘手的问题,暂时还没有解决,希望有达人给个提示。^_^ ========= shallow copy ========= CloneTest(int i, char x) { void increment() { public String toString() { public Object clone() { public static void main(String[] args) { ======== deep copy ======== public Depth d; public Object clone() { public String toString() { public static void main(String[] args) { class Depth implements Cloneable { String i; public String toString() { public Object clone() { 2005/11/6 设计模式的理解常常都在讲设计模式,但是常用的就那几种模式,而且还都是简单工厂模式的不断变革、变通、改良,几乎所有的模式都或多或少的能看到工厂模式的影子。 为什么呢?无非是extend以及implements惹的祸,由于OOP,无法关心到每个共性对象的方方面面,就会产生通过抽取公用方法作为interface,按照这种原则,再根据需实例化对象的可知与不可知、实例化对象的多少、就产生了若干模式:简单工厂、工厂方法、抽象工厂、构建、代理、记忆、状态。 由于OOP的设计理论基础是静态基于业务模型的编程方法,如果业务发生变动则需要对原对象进行改造,而目前渐渐成熟的AOP(Aspect of program)据说可以尽量减少业务之间的耦合性,将核心业务与公用业务分离,目前我们项目中感觉是这样实现的,没有仔细研究过具体的代码,先看看再说。 2005/10/27 给新人出的考题,简单而实用1. JDK1.4中变量String tmpStr = new String(“test”),请说出tmpStr == “test”与tmpStr.equal(“test”)的结果,并简要说出原因。 答:tmpStr == “test”结果为false;tmpStr.equal(“test”)的结果为true。前者比较的是内存地址,如果用IntelliIdea实时Debug,可以看到@1245之类的地址,对象tmpStr与对象”test”的就在比较其地址的值,而不是地址存放的内容的值,所以会出现意想不到的结果,这个错误居然出现在开票模块中,不可思议! 2. 请简要描述EJB的调用过程以及其生存周期。 答:客户端通过网络远程调用Home接口创建EJBObject对象,将该对象的reference返给远程客户端,客户端通过reference调用该EJB的商务方法(例如:CTAIS中EAI的doService),实现业务功能,程序结果后销毁内存中的对象。 生命周期:客户端invoke一个home对象引用,容器检索是否有钝化的EjB对象,如果没有则EJB调用ejbCreate方法创建对象放到容器中,调用结果后容器将该EJB对象ejbPassivate钝化,如果容器已有该对象则ejbActivate激活对象,根据LRU算法规则,对长时间不适用或者容器已容不下多余的EJB对象时,将其ejbRemove()。 3. 请写出至少三个java原型(primitive type) 答:double,int,float,char。 4. 请简要写出jdbc调用过程 答: //创建连接Connection con = null; //初始化语句java.sql.PreparedStatement ps = null; //初始化结果集 ResultSet rs = null; //设置语句try { doSomeThing(); } catch () { } finally { //关闭结果集 rs.close(); //关闭语句 ps.close(); //关闭连接池 con.close(); } 5. 请简单描述在开发过程中出现程序错误应如何定位调试(无固定答案) 答:前台部分,可以通过页面左下角脚本错误提示获知JavaScript中具体哪行出现错误,或者通过jsp中元素对应的方法中设置alter断点来跟踪调试。对于后台错误,可以首先通过控制台提示的异常信息或者日志中的SQL语句来跟踪定位程序错误 6. 一个标准的EJB由哪些文件组成 答:EjbObject.java,EjbHome.java,EjbBean.java,ejb-jar.xml 7. 请简述JMS(queue)调用过程 答:1、初识化上下文;2、找到server的连接工厂;3、创建连接;4、创建session;5、查找jms destination;6、创建sender;7、创建消息;8、发送消息 8. 请简述Ormap文件的作用以及or技术在程序中的应用 答:ormap文件在于告知orm数据库表物理结构信息。为了更大的分离业务与数据操作,实现缩短开发周期,节省开发时间,使得数据库的操作对开发人员透明。 9. 何为轻量级开发?如何实现轻量级程序开发? 答:轻量级开发针对应用中开销较大的操作而言,比如创建、销毁数据库的连接池,大对象的创建、销毁都属于资源开销的操作,轻量级开发使用设计方法尽量减少该类资源的销号。由于jvm的垃圾回收机制会根据对象是否为null将对象置为无用标志并将其销毁,在程序开发中对于常用的对象可以不显示指明该对象为null,或者只要指向该对象的reference没有失效,该对象就能存在与栈中,供反复使用,比如可以将该对象的reference存于ArrayList中等等。 10. 在程序中如何应用事务控制数据库更新以及在事务应用的优点以及应用中应该注意哪些事项 答: //新建事务 UserTransaction ut = new UserTransaction(); Try { //启动事务 ut.begin; …… //更新数据程序 //提交事务 ut.commit; } catch () { ut.rollback(); }
事务是原子性的,事务中的做的事情尽可能简短明了 事务是一致性的,在事务中的所有事情都是同时成功,同时失败 事务是隔离性的,在事务与事务提交过程中互相都是透明的,所以事务不能交叉 事务是稳定性的,对于不可预知的故障,事务可以通过事务日志重建 11. 启动Weblogic提示以下错误可能是什么原因: *************************************************************************** The WebLogic Server did not start up properly. java.lang.OutOfMemoryError *************************************************************************** 答:可能是启动内存太小,无可分配内存,在启动脚本中修改set MEM_ARGS=-Xms128m -Xmx128m,将最小启动内容以及最大启动内存调大并保持,以免内存交换带来资源耗费。 12. 外围接口开发中,eaiconfig.xml、ejbproperty.xml、jmsproperty.xml、interfaces.xml四个文件的作用分别是什么? 答:eaiconfig:提供服务ID的说明、诠释,对bean以及业务程序的类定义以及eai的可配置变量设置 Ejbproperty:ctais访问外围系统ejb的配置 Jmsproperty:ctais访问外围Jms的配置 Interfaces:接口格式的定义 13. 在什么情况下需要更新ctais2or.jar 答:执行了DDL语句使得数据表发生的结构变化,名称变化,主键变化,类型变化。 14. 出现连接数不够限制应如何处理? 答:检查是oracle的限制还是weblogic的限制,如果是oracle的限制,加大process数(alter system set processes = 400 scope = spfile;),如果是weblogic的限制,进到控制台更改connections/pool 15. 如果出现连接池泄漏(leak)怎么处理? 答:连接池泄漏多半是由于weblogic检测可用连接时间间隔过长导致,可以调整检查时间间隔参数,或者直接对连接池shrink或者reset。 16. 什么是笛卡儿积?在oracle中如何体现,可以用SQL代替 答:笛卡儿集就是集合A{1,2}、B{3,4}按照A*B{13,14,23,24}的方式组合(?这个不知这样解释是否合适)。 在oracle中两表以上进行表查询缺少相应的连接关系时会导致笛卡儿积,在oracle中的执行计划会有(cartisian join)的提示。例如:select 1 from sb_zsxx, sb_jks。 17. 在开发中拼写自定义查询语句时碰到排序以及group by应该注意哪些问题,对排序的字段有哪些要求 答:考虑排序的的结果集是否很大,且oracle中sort_area_size是否够大,且临时表空间是否够大且是否自动扩展(如果数据集超大且表空间不自动扩展会提示错误:不能扩展临时表空间)。对排序的字段要求尽量是索引字段,且如果可以,建好按照desc或者asc的函数索引,这样可以省去排序的时间(因为索引查询时不仅查询了该条记录的rowid,而且也查询了该记录的值,且按照顺序建索引,所以剩余了排序的时间,可以大大减少逻辑读)。另排序以及group by的字段要仅可能少。 18. 在开发中,为什么要注意自定义SQL语句要严格按照大小写的规范? 答:根据oracle中cursor_sharing参数的设置情况,如果同一条语句大小写不一致,容易导致oracle解析语句时产生硬解析,这种情况多了会较大影响数据库性能,并容易导致library cache竞争,最终导致library cache lock。 2005/8/8 XML的四种解析器原理及性能比较 1: DOM 4:JDOM 2005/6/19 Martin Fowler关于敏捷开发的主题演讲Martin Fowler: |
|
|