stone2083

我的评论

想法是好的,做法是不可取的。
任何对第三方组件的扩展,需要遵循开放-封闭原则:只能寻找组件的扩展点进行功能扩展,不允许直接修改源码。

试想一下,你修改了源代码,以后如何解决与官方网站版本升级的同步问题?
没有团队敢使用你的包。

很早之间,我就有这个想法。但是发觉MappedStatement,SqlMapExecutorDelegate都是面向实现编程;
并且SqlMapClient也是通过:
public SqlMapConfiguration() {
errorContext = new ErrorContext();
delegate = new SqlMapExecutorDelegate();
typeHandlerFactory = delegate.getTypeHandlerFactory();
client = new SqlMapClientImpl(delegate);
registerDefaultTypeAliases();
}
直接new出来的。
所以,似乎找不到扩展的地方来实现“分页”的需求。

不知道大家是否有更好的方案,欢迎讨论。
re: 在你眼中Java是什么? stone2083 2008-12-02 10:39  
需求决定技术。(技术包括使用的语言,以及使用的架构)
现在误用,滥用JAVA的场景太多了。并且用了之后,还来抱怨。

至于说到,java提供丰富的类库,让人变懒了。我有两个观点:
1)这是件好事:开发需求的目的,就是为了降级开发成本;
2)这是个错误观点:只有对于懒人,才会变得更懒。一般情况下,在完成需求的同时,真正的程序员,都会去熟读类库的实现。做到心中有备。

确实,正如1楼所说的,我同样是抱着OOAD的态度选择和使用java。

#####################################
说到SSH现象,我只想说,国内没有一个良好的搞技术的氛围。
太多太多的人,学习SSH仅仅是为了得到一份工作,而不是出于对这三种框架的热爱。并且也仅仅是学习如何使用,并不清楚框架的设计原理和理念。


re: What is Spring? stone2083 2008-12-02 09:49  
现在,对spring是越来越难下定义了。
通过mvnrepository看看spring的范围:
http://mvnrepository.com/search.html?query=spring
做的是越来越庞大了。

想想早几年的时候,对Spring的概念,还停留在ioc容器上。接下来又出现了AOP的概念。
如今呢?感觉spring对任何第三方组件,都要插一手。不过,话又说回来,spring对第三方组件的封装,确实提高了开发效率。

关键看,你要用spring什么了?

re: 学习Common BeanUtils stone2083 2008-09-28 23:06  
推荐使用cglib的beancopier替代beanutil做copy工作。
深有同感。
75个体会总结的虽然比较散,但是,大多数都是实施简单却很有效果。
re: 由数据订正想到的 stone2083 2008-07-28 21:13  
无奈啊,很多时候,也只能尽自己力量,在有限的条件呢,把事情做好。
理想和现实的差距实在是太大了。
re: 资源如何避免多线程下载 stone2083 2008-07-18 20:39  
文章的本意不是说通过servlet,来控制文件的下载。
而是站在协议的角度上,通过servlet的例子,来说明,只要修改content-length的值,就能达到“只允许单线程下载资源“的目的。
虽然,通过修改协议的规定,擅自修改http头信息的方式的做法,不符合规范。但是对于小站点来说,是一个成本最小的方法。
站点上的图片等,都是资源,如果都允许多线程下载,那么用户量一多,对于小网站来说,还是有点困难的。
文章采用servlet,仅仅用于举例说明.真正的应用上,可以通过修改apache,lighttpd,等web服务器的配置,来达到这个目的。

如果是资源的下载,那么肯定通过更为专业的ftp server来对外服务。而不是采用http协议。当然传统的ftp server,也是有IO消耗的。

至于楼上所说的X-sendfile,我也看过javaeye的文章(http://robbin.javaeye.com/blog/154538)。X-sendfile,确实是一个很先进的理念(至少我看来是,或许我是一个很老土的人)。
但是自己对这个没有任何尝试,也没有更多的评论资格。
re: SSL双向认证java实现 stone2083 2008-07-14 13:21  
@JessonWoo
hi,首先申明下,我自己对ssl的认识还是很肤浅的,仅仅上次和cnnic合作的时候,为了了解安全性问题,才被迫稍微看了相应的一些知识.

所谓认证,是要对某台(当然可以是集群)服务器身份做认证.
认证方式有两种:
自签名认证:服务端生成key,然后根据key导出证书.公布于站点.
通过第三方认证机构认证:有服务端生成key,然后导出认证信息,交由天威诚信等第三方认证机构认证,最后生成证书,公布于站点.

客户端,将证书下载,确认为可信任公司认证信息,并且导入到受信任区(trustscore),建立连接与服务端进行正常交互.至此,就完成了对服务端的认证.
所以客户端必须将证书导入信任区.

java中,可以查看证书:
写个简单的方法:
FileInputStream fis = new FileInputStream("cert.cer");
CertificateFactory cf=CertificateFactory.getInstance("X509");
X509Certificate c=(X509Certificate) cf.generateCertificate(fis);
System.out.println(c.getSubjectDN());
//可以查看下X509Certificate的一些get方法.

其实keytool仅仅是jdk中的工具.
openssl是更常用的一个工具
可见:http://www.openssl.org/
re: jdk gc简介 stone2083 2008-07-03 22:09  
这么朋友实在是过奖了.
我仅仅记录了我对jdk gc的浅薄理解.
sun的文档,比我这边是详细多了.
re: CGlib简单介绍 stone2083 2008-07-03 22:07  
不可否认,每项技术总会存在弊端,比如cglib,导致jvm Permanet Generation 不再稳定,如果配置不当,并且大量生成cglib代理类的时候,出现out of memory;
又或者,调试代理类的时候,相当不方便...
但是cglib有他可喜的一面,底层采用asm,动态生成字节码,比jdk proxy效率高了不知多少;为spring aop提供了底层的一种实现;hibernate使用cglib动态生成DO/PO (接口层对象)字节码...应用是何等的广泛.
为java静态语言提供了动态特性(当然,底层是asm功劳),多么可喜.

我不清楚,你所谓使用cglib产生附加问题,具体是什么问题?
re: 感慨于我们的技术土壤 stone2083 2008-05-25 20:33  
深有同感,现在google上搜索某些内容,会有多少千篇一律,甚至一字不差的文章.
期待原创的作品,哪怕是不成熟的想法,见解.
re: 关于Java String对象创建问题解惑 stone2083 2008-04-27 12:04  
没有必要太在意这个问题.
因为不同的jdk下,比如sun jdk,ibm jdk等,答案是非唯一的.而且不同的jdk版本下,也有可能存在不同的答案.
sun jdk是对String优化做的最多的.所以才这么拗.很多公司都拿string做面试题,没有意义的.
至于s=s+"47",至少在jdk5以下,在String pool中肯定会创建一个新的对象.但是之后的版本怎么处理,就没去看过了.
re: SSL双向认证java实现 stone2083 2008-04-20 17:18  
谢谢wangpeng朋友,找到上原先demo中的一个问题。
因为在Server端程序中,初始化的SSLServreSocket
serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(DEFAULT_PORT);
少写了条语句:serverSocket.setNeedClientAuth(true); //表明需要验证客户端的身份。

由于原demo程序,不需要客户端身份验证,所以即使服务端没有客户端证书,也能完成通讯。

受限于自己对jsse理解非常的浅,上面的文章仅仅是覆盖了jsse很表层的内容。
推荐ibm网站上的一篇文章,对jsse和ssl写得很深入浅出。
为高级 JSSE 开发人员定制 :http://www.ibm.com/developerworks/cn/java/j-customssl/

如有问题,欢迎再交流 :)
主要是spring和hibernate这些框架使用cglib动态生成代理类,动态加载类描述信息,导致如果perm区设置过小的情况下,会出现outofmemoryerror的情况。
但是也没有必要把perm区设置过大,可以在生产环境使用jstat命令观察perm区的情况,从来设定它的大小。
re: FindBugs自说 stone2083 2008-03-21 21:30  
findbugs确实不错,相当地智能。
一直在用它,提交代码测试前,一定会先使用findbug检查下代码。
它错误提示信息也非常详细,能改善代码质量和程序员的水平。
findbugs社区也相当活跃,更新非常迅速,推荐使用。。。 :)