- 博客(38)
- 收藏
- 关注
原创 Log系列:使用log定位多模块系统中出现issue的模块
Log技术在维护一些分布式系统时,是一个很好的手段。特别是在一些分布式/多模块的系统中,Log经常是解决问题首选的方式。因为在分布式/多模块的系统里,发现问题后最复杂的部分往往在于定位上。问题由哪个模块导致,在哪个模块开始体现,出现问题模块的输入数据来源...个人遇到的一个实际的例子是,一个分布式的系统,由时差在6-8小时的3个team分别维护3个模块。3个模块的接口分别是: 1. 一
2006-06-15 13:49:00 2403
转载 C++ Template: 模板参数传递中的切片问题
Effective Standard C++ Library: Explicit Function Template Argument Specification and STL A New Language Feature and Its Impact on Old Programming Techniques Klaus Kreft and Angelika Langerhtt
2006-06-06 11:54:00 3697
原创 C++ RTTI: 2个宏实现“根据对象名创建对象”
1. 问题提出:C++ RTTI缺乏一些运行时信息,无法根据对象名直接创建对象。所以MFC为了实现序列化,从头构造了自己的RTTI信息,并定义了一整套宏。具体可以参考MFC源代中一下类和宏的实现:CRuntimeClass, CObject, DECLARE_DYNAMIC, IMPLEMENT_DYNAMIC2. 需求:个人正在写一个做集成测试的工具,有一个配置文件,用于指定哪些CASE
2006-05-30 15:06:00 3704
原创 文件数据库试用
文件数据库文件数据库又叫嵌入式数据库,将整个数据库的内容保存在单个索引文件中,以便于数据库的发布。文件数据库的3个重要特征(相对于传统数据库)1. 数据操作接口SQL92标准,不管是传统数据库,还是文件数据库,都必须支持SQL92标准。2. 数据保存格式传统数据库(DB2, Oracle, SQL server等)数据保存的方式各异。文件数据库将数据保存在单一文件中
2006-02-15 11:16:00 10603
原创 基于消息分发的多线程程序设计,常见的问题,以及解决方法
商业软件的开发,大部分都需要有一些为其它模块提供服务的底层模块。这些底层模块由于实现的是一些通用功能,需要同时为几个高层模块提供功能,因此通常被设计成一种基于消息队列的框架。任何需要访问这些通用功能的高层模块,都可以通过发送消息并接受返回值来得到需要的服务。这种构架的设计,一般是围绕消息队列来展开的:首先有一个消息队列,并对外暴露发送消息的API;然后实现一个负责维护并调度该消息队列的线程,该线程
2005-12-16 15:31:00 4284
原创 PRB: Catastrophic Error Occurs Referencing ADO Recordset.
MS SQL Server 使用时的一个小问题,事务提交会破坏该数据库连接上的记录集。场景如下:1. 执行一个SQL 查询,产生一个记录集。2. 在同一个数据库连接上执行一个transact的commit或者rollback操作3. 去查询第一步的记录集。ADO会报错:“Using ADO 2.6 and later, the error is Run-time error -214741811
2005-12-01 09:42:00 2570
原创 XML parser如何实现DTD校验之一:Element层次结构的校验
如何做DTD的校验DTD对XML文档的结构定义主要体现在两个方面,对子节点类型的定义和对属性的定义。一个xml parser要实现DTD校验,必然要实现对这两种DTD定义的校验。先考虑DTD子节点类型校验的情况。DTD声明对子节点机构的定义主要分为几种类型: A节点下可以包含任意节点类型,最简单的情况。 A节点只能包含文本信息。 A节点可以而且必须包含B和C节点,并且B节点必须位于C节点之前。 A
2005-08-17 09:35:00 3167 1
原创 魔兽终于开始了。
魔兽世界终于开始公测了。化了4个小时,升到了7级,感觉还不错,就是地图有点大,刚开始有点晕路,习惯就好。嗯,节奏也有点慢,发个魔法需要准备N秒钟,暴雪不是也向靠这个托玩家时间吧???想当年,暗黑的年代,瞬移到牛牛们中间,嗖嗖的几个nova倒下一片的年代是一去不复返了。唉,还是喜欢高节奏的游戏啊,暗黑,KOF, CS也不错。不过画面效果和游戏内涵倒是没得说,人物动作很自然流畅,网速过得去,没有pk过
2005-04-27 15:37:00 2424
原创 XPath expression language的词法分析和AST树实现。
XPATH 所使用的表达式语言,主要由两个部分组成: 表达式语言和xpath的路径搜索表达式. 1. 表达式语言, 由+, -, *, /, or, and, not和数值,字符串,函数等组成, 符合正规语法. 2. XPath路径搜索表达式, 是指在xml文档中搜索某个xml node的表达式.比如/books/book,搜索books节点下的所有book字节点. 具体可以参考www
2005-04-20 09:20:00 4010 1
原创 Xml DTD校验中关于external entity的实现策略。
在Xml parser的实现中,DTD的实现是一个比较麻烦的地方。麻烦之处不在于DTD的逻辑部分,而在于如何处理DTD的外部Entity,比如,DTD文件间的相互调用。比如如下的DTD声明:%imported-file;上面两段DTD语句,首先声明一个参数化的external Entity, 紧接着引用该external entity,表示导入该DTD文件作为整个DTD的一部分。那么,当Xml P
2005-04-18 13:39:00 2869
原创 用C++实现一个XML parser的必要工作。
考虑一个完整的XML Parser一般由几部分组成:必要组件:1. DOM 接口定义,以及DOM MODEL的实现。2. 一个XML词法分析器,用于将XML字符流转换成TOKEN流。3. 一个XML PARSER,将TOKEN流组织成DOM MODEL.4. 一套在DOM NODE中遍历的数据结构和算法,NodeIterator,TreeWalker.5. 一个DTD的词法分析器和DTD PARS
2005-04-14 12:34:00 4040
原创 一个最最简单的xml sax writer.
JAVA 的xml包不少,可就没找到一个包提供了SAX writer的功能,正好需要按照SAX方式输出xml文件,所以自己写了一个,包含注释大约100行,使用起来也颇为简单。 /* * Created on 2005-1-29 * * Mininal sax writer. you can use it like that: * XmlWrite
2005-02-19 22:55:00 5275
原创 一个简单生成Excel文件格式的java包。
作为学习Excel 2003 Xml文件格式的过程,实现了一个Excel xml writer,可以生成Excel xml file.基本上提供了Excel 2003 xml文件格式完整支持,列表如下: Row Cell Styles(Font,Alignment,Interior,NumberFormat) NamedRange Formula(not co
2005-02-16 14:36:00 2589
原创 Excel 2003的XML文件格式
表格软件的的层次结构一般都比较简单,整个文件是一个Workbook节点,Workbook中可以包含多个Worksheet,Worksheet有多个Row对象,每个Row包含多个Cell. Workbook Worksheet Row Cell
2005-02-16 14:27:00 3824
原创 java 5.0:范型导致的容器不兼容性。
将代码移到java 5.0上,发现根本无法编译通过,原来是由于java 5.0由于引入“范型”而带来得不兼容。具体来说就是,Collections得许多static函数成了范型专用版本,无法继续作用于以前版本得容器Collection类。 比如函数sort( List list, Comparator comp),在以前版本中能够用于对任何List类型得容器进行排序,而
2005-01-30 00:54:00 2084
原创 org.apache.commons.beanutils---操作javabean的工具
org.apache.commons.beanutils是Apache的Commons下的一个子项目,因为跟踪struts的原因,深入跟踪了一下这个包,发现其中的BeanUtils类提供的一些静态工具函数还是很好用的。这个工具包在struts中大量被使用,用于操作struts的ActionForm对象。 cloneBean:复制一个Bean对象。使用reflect方式,
2005-01-08 23:26:00 2293
原创 孟岩的C++培训课
因公司安排参加了2天C++的培训,孟岩老师的主讲。 课讲的很好,第一天是一些C++的一些原理,如对象内存布局,多重继承,等等,第二天主要是STL和范型。内容不少,讲的也很透彻,很久没有这么探究C++的理论,咋听之下,感觉还是不错的。 唯一的遗憾是,好像现在C++领域除了这些东西以外,好像真的是找不到新的课题了。关于C++的对象布局,在lipman的书里,
2005-01-08 23:19:00 2268
原创 Log4j配合Apache Commons Logging
Apache的Common Logging是一个高层的日志框架,本身并没有实现真正的写日志能力,而是依赖其它的日志系统如Log4j或者java本身的java.util.logging。可以通过配置文件来设定最终使用log4j还是java.util.logging。 默认使用的是java.utl.logging,如果要使用Log4j,需要做一些配置,分3各步骤, 1.
2005-01-08 02:01:00 3057
原创 java解惑:揭开Struts MVC Model2的面纱。
所有关于Struts的帖子,总是将MVC Model2描叙的特别神乎,俨然是新一代的设计模式。本人新学,翻了几篇帖子,还是没能弄明白什么是Model2,于是下载Struts源码,原来是在原有视图( html )和Control(jsp/servlet)之间,添加了一个ActionSerlvet作为新的Control,所有其它动作,都要经过ActionServlet来分发。
2004-12-29 19:46:00 1794
原创 Eclipse Tip:Restore from Local History.
今天用Eclipse写代码时,不小心把一个核心代码文件删除。苦苦想办法,垃圾箱中没有,Norton文件恢复中也没有,试试反编译.class文件,结果也不太理想,注释啊什么的,一个都不见了。万般无奈之下,想到说不定Eclipse本身已经考虑到这个问题了。一边查帮助,一边google,终于发现了Project Explorer视图右键菜单上的”Restore from Local His
2004-12-21 20:03:00 10227 2
原创 两部不错的玄幻小说
休息时间,发现两部不错的小说,《魔法学徒》,《异人傲世录》。作者很有想象力,而且文风轻松诙谐,难得的佳作。 这年头,除了看小说,也没有什么有意思的活动了。 暗黑过时了,星际也没几个人继续,CS凑不齐人,也许只能等等魔兽世界,或许是不错的消遣。
2004-12-19 19:22:00 1823 1
原创 C10K--10000个客户端的诱惑
如果不熟悉网络编程,建议先学习Linux的网络编程部分+signal模型(或者Windows的网络编程+Complete端口模型)。ACE是个不错的包,封装了这些模型,但是没有较好的理论基础,要设计高性能的网络服务器是不大可能的。 网络服务器的几种模型可以参考C10K的介绍。当然,如果在linux下,最好的模型自然是 EPoll(effective poll?)。目前
2004-12-18 14:01:00 2470
原创 "Premature Parameter Construction."(转载)
Be Careful of Premature Parameter ConstructionSometimes it is good to remember that arguments to a method are evaluated first before the method itself is called. Many moons ago, we concentrated our
2004-12-17 13:56:00 1018
原创 客户端访问Weblogic的一段例程
在Weblogic上部署了一个stateless ejb,然后新建一个java application,访问这个stateless ejb。 非常简单,先设置好InitialContext的几个参数,然后创建一个InitialContext,查询ejb的JNDI。JNDI可以从weblogic的console管理员页面上看到:点击配置页面的Servers/myserver,可
2004-11-15 23:51:00 1337
原创 java解惑:Class.forName(String driverClassName)载入JDBC驱动程序的幕后。
开始接触JDBC时,一直有一个疑虑,为什么执行Class.forName(“com.mysql.jdbc.Driver“)就可以载入MySql的驱动程序?JDBC的驱动程序初始化过程是怎么样的?连接具体的数据库时,JDBC的DriverManager又是如何运作的?带着这么几个疑惑,本人下载了MySql的驱动源代码,结合J2SDK的源代码,分析了一下JDBC的驱动管理机制。
2004-11-14 16:33:00 5903
原创 org.apache.commons.pool---Apache的对象池实现。
对象池技术在服务器开发上应用广泛。在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分。本文是个人学习对象池的一个记录,以Apache的commons-pool实现为研究对象。在下一篇blog中,本人将继续研究Apache的common-dbcp,这是对象池技术在JDBC上的一个应用范例。 Apache对象池技术的实现上颇为简单,只有2
2004-11-13 19:12:00 5116
原创 org.apache.commons.io---实用的文件操作工具
org.apache.commons.io是Apache jakarta下common项目的一个功能模块,提供了一下高层的文件操作方法,非常好用。一下是本人学习过程的一个记录,枚举了几个我认为好使的功能点。 其实好用的功能主要集中在一类FileUtil中,包含了建立,删除,复制,移动,比较文件新旧,递归枚举目录清空目录,一次读取整个文件等。以下是一个我认为有用的列表: 1.
2004-11-10 17:04:00 9669 2
原创 Eclipse 3.01 + JBoss 3.2.3 + Lomboz 3.0.1,第一个ejb终于跑起来了。
Eclipse 3.01 + JBoss 3.2.3 + Lomboz 3.0.1,第一个ejb终于跑起来了。 两点需要特别注意: JBoss版本必须是3.2.3, 其它版本总出奇怪的问题,不是jboss-boot找不到,就是XDoclet执行出错。 生成EJB文件时会报一个错,ejbs.xml文件找不到,然后退出。其实只要
2004-11-08 17:53:00 2562 1
原创 java的ResourceBundle.
Java的ResourceBundle是一个很好用的工具,可以很方便的用来实现软件的国际化和本地化功能。因为ResourceBundle能够按照一定的规则,自动寻找目录下符合某个文化和地区的资源文件(.properties文件)。通过为不同的文化和地区提供不同的资源文件,然后让java自动根据规则来读取这些资源文件,实际上就完成软件的本地化工作。 先看一个小例子,建立
2004-11-04 20:31:00 5331
原创 关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE
Unicode是Unicode.org制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持。Unicode.org官方对Unicode的定义是:Unicode provides a unique number for every character。可见,Unicode所做的是为每个字符定义了一个相应的数字表示。比如,“a“的Unicode值是0x0061,“一”的Unicd
2004-10-31 15:18:00 19629 4
原创 要小心java的OutputStream.writeUTF()函数。
正在用JAVA写一段连接MSN服务器的代码,但是发现怎么给MSN服务器发送命令消息,结果都只有一个,那就是没有响应,随后Socket连接被关闭。 发送消息的代码如下: public void send(String cmd) { try{ DataOutputStream do
2004-10-31 03:08:00 14541 6
原创 编译Eclipse。
从www.eclipse.org上下载Eclipse源代码包,解压缩。发现Eclipse的源代码目录和和最终编译出来的目录结果基本一摸一样,在根目录下,也是一个plugins子目录和一个features子目录,唯一缺少的是那个startup.jar和eclipse.exe。 到www.eclipse.org上看了一下build instruction,发现编译非常简单
2004-10-31 02:15:00 6001
原创 Eclipse的插件机制。
Eclipse因为其强大的插件机制而闻名,完全可以说,整个Eclipse就是由插件组成的。到了eclipse 3.0,随着RCP概念的兴起,整个eclipse的插件也形成了明晰的层次关系。底层是RCP的org.eclipse.core.runtime,org.eclipse.ui;中间是构成eclipse本身workbench的大量插件如org.eclipse.swt,org.ec
2004-10-28 19:49:00 7346
原创 初学Ant.
工作需要,开始接触java,根据N年的C++经验,学习一门语言不外乎3件事:语法,编译部署工具,以及公用库。 java语法与C++和.Net差异不大,OO的概念也没有太大的不同;一些特殊的语法点,比如final,GC,reflect到处都是相关讨论。鉴于此,我将学习的重点放在公用库的使用和编译部署工具的学习上。 这是一个系列blog,先是一些java相关的编译,
2004-10-28 18:01:00 1370
原创 System.Collections.ArrayList代码分析
System.Collections.ArrayList是一个动态数组,与C++ STL的std::vector的行为很相似,特别是数组的动态扩充方式上,两者基本上一摸一样。不同的是ArrayList使用的是接口方式实现枚举器,而std::vector使用模板+typedef手法。以下本文就将主要在这两点上,对ArrayList进行一些分析。某些地方可能会提到STL相应的做法,以示比较。
2004-10-17 01:47:00 2867
原创 一些C++连接,以及个人的C++学习总结。
以下是本人几年以来学习和开发中的一些积累和总结,欢迎讨论,欢迎B4.1. 书籍: Essential c++ : 入门书籍,读完可以开始写C++代码 The C++ Programe Language : C++之父的著作,无微不至,居家旅行必备良书。 C++ Primier : 非常完整的C++著作,不过不推荐入门阅读,参考书。 Effective C++:
2004-10-17 00:52:00 4241 2
原创 跨平台C++软件开发中,由于不同操作系统对Unicode的支持差异,而导致的一些问题及解决方案。
1. 问题的提出。 各种各样的编码永远是软件开发者最为头痛的问题之一,Unicode为统一编码带来了希望。可是,就算是Unicode也不是百分百的完美,它只是完成了对各种语言编码的制定,而在具体的操作系统支持上,又分为UTF8,UTF16和UTF32好几个版本。比如,Windows系统支持的Unicode是UTF16,也就是每2个字节表示一个字符(还有一种称为代理的情况,容后讨论)。而
2004-10-16 19:10:00 3646
原创 Hebrew语言系统下WMF图片的显示问题及解决方案。
1.Right To Left语言: Hebrew(西伯来文)是一种Right-To-Left的语言系统。坐标系统与常见的Left-To-Right相反,屏幕右上角是坐标(0,0),自右向左X坐标值增加,自上而下,Y坐标值递增。
2004-10-15 23:42:00 1690
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人