
Java
岑永洪
毕业于中科院软件所。现快陪练联合创始人。原e袋洗产品技术合伙人。 原创投圈CTO。
展开
-
很诡异的Groovy
昨天终于挑灯看完了http://www-106.ibm.com/developerworks/java/library/j-alj08034.html,很多年以后估计这篇文章就可以号称Groovy的经典入门文章了。Groovy是一种在jre之上的教本,根据那篇文章的作者说,除了这冬冬之外,还有其他几个比较多人用的,不过都是基于perl的,只有Groovy是基于Java的,而且正在提交jsr审定,没原创 2004-12-10 16:03:00 · 1201 阅读 · 0 评论 -
侃侃JavaScript Template
最近发现Web开发的流程和技术好像发生了蛮大的变化,以前可能就是用一些Struts之类的东西来定义页面,然后用个Hibernate来做持久,然后在上面再加个Spring的壳把他们连起来就完了。 最近看来这种方式好像开始有点变了,大家用AJAX的东西好像越来越多,用AJAX之后,页面跳转少了,Struts的那块好像就用处不大了,然后客户端的JS的咚咚倒是越来越多了。这我原创 2006-04-13 12:00:00 · 2476 阅读 · 0 评论 -
说说Continuation Server
Continuation Server是在一本叫做《Beyond Java》的书上面看到的。这本书写得还不错,只是前面几章略显的罗嗦了一点,反复的讨论着同一个主题。 后面的几章才开始转入主题,讨论了一些比较新的咚咚,例如ruby,rails,continuation server,metaprogramming。其他几个之前都接触过,所以也就算是看了个小结而已,而co原创 2006-04-17 10:01:00 · 2059 阅读 · 0 评论 -
使用greasemonkey扩展web应用
greasemonkey是firefox当中的一个extension,这个extension本身倒是没有什么特别的,装了以后你的浏览器不会多出什么新的功能,他的实际意义是他相当于给你打开了一个后门,你只要把自己定义的js文件install到greasemonkey里面,那么每次当你浏览某个网页时,你的脚本就会在客户端被加载和运行。这样做有什么好处了,例如你可以把某个网站的广告都过滤原创 2006-04-25 10:24:00 · 1855 阅读 · 0 评论 -
C++自谈
因为项目需要,最近开始学起了C++,学C++先从经典教材开始,花了一个星期,把Thinking in C++翻了一遍。 发现C++跟Java差别还真不是一般的多,最明显的一个是C++为了速度,大部分的方法调用都用的是静态绑定。这样就带来一个很奇怪的问题,如果我们把一个NULL值随便转换成一个其他类型,那么C++的编译器会非常正常的调用到对应的方法,这样有好处,也有坏处原创 2006-05-28 22:44:00 · 2869 阅读 · 11 评论 -
做了几个RSS源
最近做了几个RSS源,一个是用来关联电影的,就是把电影的名字和他在divx.thu.cn上的介绍做了个关联。大家有兴趣可以到http://newhost.byhh.net/file/rsslist.html上面看看都有哪些地址可以订阅,这里的地址主要是以FTP地址来分的。 另外一个是因为要找房子才做的,主要是用了一些网页搜索,挖掘,然后加一些过滤,效果还不错,^_^原创 2006-06-25 11:17:00 · 2434 阅读 · 0 评论 -
mysql的"1067"错误正确解决办法
今天遇到了mysql的11067错误,先是找了一下log,发现安装目录没有,之后上google找,发现这个问题还被问了多次,心想这下好了,估计没太大问题了。但试了一下,发现这些答案基本上是扯淡,照做肯定不行。 第一种是说在windows目录下面copy一个my.ini文件就能解决,这个简单,我照做了,完全不行,翻了几页google,发现这种方法已经被批了。原创 2006-07-30 01:49:00 · 2101 阅读 · 0 评论 -
Ehcache
1. 类图<spanlang=EN-US style=font-size:9.0pt;font-family:新宋体><span style=mso-element:field-begin;mso-field-lock:yes> SHAPE<spanstyle=mso-spacerun:yes> /* MERGEFORMAT <v:groupid="_x原创 2007-07-06 11:38:00 · 6271 阅读 · 1 评论 -
Hibernate的get函数
1. 从方法调用到事件处理在hibernate当中,大部分操作最终都是转化为事件,然后由对应的事件处理函数来处理。而事件内部主要包含的就是对Session实例的引用<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@原创 2007-07-13 14:46:00 · 6281 阅读 · 1 评论 -
Hivemind简介
1. 一个完整的例子a) 目录结构|--| |--META-INF| |--| |--hivemodule.xml| |--log4j.properties||--nick|--Test.java|--IHello.java|--IMessageBuilder.java|--impl |--HelloI原创 2007-07-25 15:18:00 · 5940 阅读 · 0 评论 -
Tapesty系列之一 --- 系统初启及请求处理
1. 系统启动a) 说明:Tapestry启动时,采用的仍然是典型的HttpSerlvet的启动模式。在初始化的时候,他将加载用户定义的hivemodule.xml文件,并利用ApplicationInitializer存储整个Web应用的上下文,例如ServletContext等。在完成了上述初始化工作以后,将加载ServletRequestServicer,用于处理原创 2007-07-26 16:42:00 · 3603 阅读 · 0 评论 -
Tapestry - 页面加载之一
1. 页面查找a) 说明:在Tapestry当中,由于我们主要用到的是PageService,所以这里的流程和代码都是参考的PageService。我们根据之前的解释,得到当前要显示的页面名称。首先从缓存当中查找页面是否被加载了。 b) 流程图:<v:shapetype id="_x0000_t75"coordsize="21600,2原创 2007-08-08 17:48:00 · 2768 阅读 · 0 评论 -
Tapestry - 页面加载之二
1. 页面创建a) 说明:页面创建主要是指当页面文件被找到以后,如何根据声明中的信息,初始化页面类及其控件树。b) 流程图:<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@11@9@5原创 2007-08-13 15:05:00 · 2224 阅读 · 0 评论 -
Tapestry - URL Encode
在Tapestry内部,URL的encode主要包含了3部分的内容。首先就是Page,就是链接应该指向的.page文件。第二部分就是链接本身所需要带的参数,即事件回调时需要传入的值。第三部分是持久参数,也就是通过@Persist定义的参数。 1. Pagea) 说明:当你使用的是DirectLink时,Page的将是你当前所在的页面。而如果你使用的是Servic原创 2007-08-30 14:22:00 · 3381 阅读 · 1 评论 -
手机蓝牙开发
终于实现了手机的蓝牙与PC的蓝牙之间的通信。手机上用的是J2ME,PC上用的是Python。 不知道是网上的代码有问题,还是我用的手机比较奇怪,服务发现部分的代码,一直不能使用。能发现设备,但就是不能发现服务,最后,不知道怎么试阿试,使用selectService()就把服务的URL取回来了,完成了第一个里程碑要完成的任务。 接下来可以基于蓝牙上面原创 2008-02-17 21:00:00 · 2517 阅读 · 0 评论 -
通过Hadoop做分布式索引
数据库里面有千万级的数据需要做索引,开始的方案是起线程,然后每次读取一定的数量,索引,然后继续读。一开始上了四台普通的PC,1.8的CPU,1G的内存,做了10个多小时才索引完。后来换了Hadoop,同样的四台机器,只要20分钟就完成了。当然不是直接上hadoop就能提速那么多,还是需要做很多地方的调整的。第一个,先把数据库记录dump出来成为文本文件,然后放到hdfs里面,这样做的目的是原创 2009-02-22 21:31:00 · 6329 阅读 · 1 评论 -
Hadoop记录排序
hadoop的每次输出都是输出的key,value对,默认的hadoop会对key进行排序,但如果我们想对value也排序的话怎么办了。一个具体例子,假设现在我们有一堆交易数据,例如,用户在某个时间买了某件货品,那么我们可能希望先根据用户名分组,但是在组内,我们希望按照时间排序。那么如果我们把用户名作为key,那就不能对时间排序。如果把用户名和时间作为组合key,那么记录就不是按照用户名来分组原创 2009-02-24 19:16:00 · 3949 阅读 · 0 评论 -
从一个打印LCD字符的Quiz说说矩阵转置
这是昨天看的一本用来测试你的Ruby技巧的题目。书名大概就是Ruby Quiz,题目是要打印LCD字符,也就是将字符串“0123456789”打印成这样。 - - - - - - - - | |原创 2006-04-11 17:59:00 · 1692 阅读 · 0 评论 -
从Rails的活动记录说说元数据编程
文章原题:跨越边界: 研究活动记录作者是:Bruce Tate, 总裁, J2Life, LLC原贴地址:http://www-128.ibm.com/developerworks/cn/java/j-cb03076/index.html?ca=dwcn-newsletter-java 这篇文章分析的是Rails所用到的活动记录,ActiveRecord的技术。活动记录原创 2006-04-06 18:38:00 · 2266 阅读 · 2 评论 -
Java当中新增的Instrument API
题目:构建自己的监测工具作者:Andrew Wilcox, 高级架构师, MentorGen LLC原文章地址:http://www-128.ibm.com/developerworks/cn/java/j-jip/?ca=dwcn-newsletter-java#author 这篇文章的目标是要自己实现一个Profiler,在实现的时候,他用到了很多5.0的agent原创 2006-04-06 18:26:00 · 2528 阅读 · 0 评论 -
J2SE 5.0新功能
1. Generic Types在5.0以前,当我们需要从集合类当中提取出某个元素时,需要显式的对他进行下塑造型,如ArrayList list = new ArrayList(); list1.add(0, new Integer(42)); int total = ((Integer)list1.get(0)).intValue(); 在5.0当中,通过原创 2005-01-05 11:26:00 · 2266 阅读 · 12 评论 -
Groovy基础入门
1. 从例子开始a) 目的:演示Groovy的一些简单特性。 b) 代码:class GTest1{ GTest1()hello(name){println("Hello ${name}");println("Hello "+name);}static void main(args) {t = new GTest1();t.hello("nick");}}原创 2005-01-18 14:50:00 · 4521 阅读 · 3 评论 -
重构
1 重构概述重构是测试驱动中的一个主要阶段。测试驱动主要分为三个阶段,第一阶段,书写测试用例,使用用例的方式来描述模块应该具有的功能。第二阶段,实现功能,让所有的测试用例通过,这阶段的工作,主要是从功能上,而不是从结构上对代码进行实现,因此,这部分的代码必然是存在一定的结构缺陷,例如结构不清,代码重复等。第三阶段,重构已有代码,重构的目标就是对第二阶段的功能代原创 2005-06-22 09:04:00 · 1880 阅读 · 0 评论 -
AOP
1. AOP概述AOP的运行模型与我们平时所用的事件监听模型非常相似。一般的事件监听模型是在事件源上维护监听器列表,然后当事件源发生改变时,由事件源向监听者发送事件通知,监听者在收到事件通知后再采取相应操作。AOP的思路与这个大体相同,但是他的监听器列表和事件类型描述都不在事件源上,而是被外提到Aspect中,在Aspect内部,程序员通过AOP提供的语法,描述他所感兴趣的事件类型,和原创 2005-06-23 17:08:00 · 1398 阅读 · 0 评论 -
J2SDK 1.4中的新功能类
1. NIO1.1. 说明:在新的I/O系统当中,我们将主要使用Channel和Buffer来描述我们底层的操作。1.2. 模型:1.3. 对Channel进行读写:/** * @author cenyongh@mails.gscas.ac.cn */public class CopyFile { public static void ma原创 2005-03-12 08:45:00 · 2213 阅读 · 1 评论 -
Java平台组件开发
1. 需要将应用程序拆分为多个独立组件的原因:a) 不同应用程序可以共享相同组件。不必为每个应用程序都不熟组件的一个独立副本。b) 应用程序随时间而改变。如果对应用程序的一个组件做了微笑更改,就应该能在不重新部署整个应用程序的情况下,重新部署该组件。c) 应用程序是动态的。根据运行时的条件,应用程序可能以开发期间完全未料到的方式加入新资源(数据和原创 2005-03-17 09:25:00 · 12105 阅读 · 1 评论 -
EMF-Ecore模型创建
1 包定义1.1 UML方式:a) 定义: i. 图: ii. 生成代码原创 2005-04-07 16:32:00 · 2071 阅读 · 0 评论 -
使用XML-RPC来访问Web服务
1. XML-RPCa) 原理:XML-RPC是以XML的方式来发送RPC调用,他使用HTTP作为传输协议,把需要发送的请求和请求的结果封装到HTTP的消息当中。由于RPC调用也是方法调用,只是被调用的一方不是在本地而已,虽然是这样,但是不能改变的是调用的本质,对于调用方,他需要提供所调用的方法和方法的参数,而对于被调用方,她通过解释调用方的请求,执行响原创 2005-08-31 23:01:00 · 1790 阅读 · 0 评论 -
使用SOAP访问Web服务
1. SOAPa) 原理:SOAP可以理解为另外一种形式的XML-RPC实现,他也是在HTTP的协议体里面附带了所要调用的服务请求,或者服务结果。另外,SOAP可以定义一些额外的变量类型,而不仅是协议所规定的那部分。另外,SOAP把他的消息封装到一个Envelop当中,Envelop包括了三部分,Header,Body和Attachment。其中Head原创 2005-09-01 23:26:00 · 2745 阅读 · 0 评论 -
Java 2D备忘
1. 渲染过程Graphics Primitives:图形,文字,图片(原材料)。Rendering Engine:对原材料进行变化,组合,渲染,剪切等。Output Devices:输出变换后的产品。 2. Geometry(Graphics Primitives)a) Point2D i. 说明:Poi原创 2005-04-18 08:59:00 · 3980 阅读 · 5 评论 -
WSDL在Web Service中的意义和作用
1. WSDLa) 原理:从XML-RPC和SOAP的使用我们可以看到,请求消息都是根据服务提供方的服务接口来生成一个HTTP请求,在请求当中封装所要调用的方法,以及方法调用时的参数。客户端服务调用代码要完成的任务,也就是使用实现所提供的接口,来声明调用方所需要的方法名及参数,然后由实现根据用户的输入来组合HTTP请求。这个过程可以这样来描述,首原创 2005-09-04 22:56:00 · 11837 阅读 · 2 评论 -
JSF详解
1. 结构:a) 结构图: b) 说明:JSF以MVC模式为基础,与Struts不同,JSF的目标是希望以一个与Swing相类似的方式来开发网页,因此,从JSF的结构图当中,他的核心概念不是页面,而是控件树,也就是说,当用户提交一个请求时,JSF会先将页面上的组件先转换为与Swing当中类似的,由容器和控件组成的控件树,然后数据和事件被设置到对应的控件上,然原创 2005-05-26 11:27:00 · 6538 阅读 · 6 评论 -
Mastering EJB笔记-1
1 分布式程序需要考虑的问题:1.1 RMI:提供客户端和服务器端的调用机制。1.2 Load balancing:负载均衡。1.3 Transparent fail-over:优美降级,当某一服务器崩溃了以后,怎么让运行于该服务器上的服务在不被打断的情况下,转移到其他的服务器上。原创 2005-10-24 23:13:00 · 1080 阅读 · 0 评论 -
Groovy与Java代码间的互操作
1 Groovy互操作说明Groovy脚本有两种调用方式,一是作为普通脚本文件(.groovy),使用Groovy提供的命令行groovy或者通过类groovy.lang.GroovyShell来调用。二是作为普通的Java类文件(.class),用传统的方式来调用,这需要先使用groovyc把脚本文件编译成类文件,然后再使用java命令来调用。原创 2005-06-17 20:46:00 · 9048 阅读 · 0 评论 -
我理解的IoC和AOP
由于,我自己也只是看过一些这方面的文章,没有实作过,所以在这篇文章里面将不会设计到太多实现上的细节,基本上都是一些概念上和我个人理解的东西。这两个概念基本上是一个设计层的概念,主要讲的就是怎么去分离关注,用面向对象的话说,就是怎么把职责进行分离。而这两个模式,我个人认为都有一个共同点,就是变以前的主动为被动,而我认为,这种改变可能也是将来面向对象发展的一个趋势。首先说说什么原创 2005-06-14 22:28:00 · 2285 阅读 · 0 评论 -
转移到MSN
新地址http://spaces.msn.com/nickcen/原创 2006-03-09 23:44:00 · 1206 阅读 · 0 评论 -
Wicket & Tapestry
最近要做一个类CMS的系统,在选型的时候,由于之前用的Tapestry 4,所以,一开始打算用他的,但是4的pretty url做的不好,而且需要有个xml来写那些循环,binding之类的逻辑。所以,直接就pass,想看看5,虽然5的feature list里面列出了一大堆的新功能,而且号称速度提高不少,但他的view层居然又走回了之前jsp的老路,允许在页面里面写表达式,所以,也直原创 2009-03-17 22:18:00 · 2184 阅读 · 0 评论