posts - 156,  comments - 601,  trackbacks - 0

我的评论

共3页: 上一页 1 2 3 
re: (原创)Java实现一个自动排序List x.matthew 2008-04-17 15:05  
@ZelluX
ZelluX你好,这样吧,我们把问题都分开来讲吧。
1. 关于用继承还是组合,我已经表面了我的意见。
2.关于LinkedList,我已经理解你的意思。这里我要强调是原来我原先的实现方式是
for(Object:object:List)这种每次都一次比较compare
与现在折半查找,比较O(logn)的比较。上面你也把代码拿出来了,也看到LinkedList是按从最一点,一个对象一个对象找,找的只是取它的next或previous地址引用(虽然java是值传递的,但这个值保存的内容是地址,这里是我说的地址引用意思)。这样如果拿10个数据来讲,各说最差的结果,那就是插入到最后。
第一种,应该要花费定位10次,比较10次。
第二种,应该是定位11次双向链表(5次+3次+2次+1次),比较四次
我是综合一起考虑的。

3.关于取名这块,的确我刚才没有理解你的意思,list不应该是有排序,所以这样取名的确是错误的,谢谢你提醒。

@流浪者
关于用继承还是组合,还是得看具体情况而定。但一般而言如果我们使用的是Java的基础类,这个基本上是很少改动,而且他本身已经有一套非常完善的接口定义做支持,所以建议还是使用继承。如果要扩展的类修改比较大,有可能将还会被废弃,建议使用composit或是适配器模式将其进行扩展,以减少耦合。

关于这个工具来源,主要是本人一个项目需要用到,如果用treeset的话,不能保存相同的值,所以使用起来不便,所以才去实现这个类。在这个也给大家介绍一个工具类叫 TreeList在apache commons-collections项目中,它也是基于二叉树结构实现的,效率很不错。

BTW:看到大家的回复,本人非常高兴也非常感谢大家。
re: (原创)Java实现一个自动排序List x.matthew 2008-04-17 14:12  
@ZelluX
可能你误解我的意思了。
List有序只是按照你插入的顺序,与排序完全是两个概念。
如果要说定位和比较那个效率好,你可以看一下LinkedList的源代码实现就知道了。其实它就只是一个地址的引用而以。
关于第一点,我承认composite从耦合性和扩展来讲,是比较继承要好。但也得看具体的实现应用的。这个并不是一个绝对一定要按这个说法做,我的理由还是上面所说的。针对变化这块,因为java 的util类库已经是很稳定的,变化的可能性几乎为零。
re: Spring 安全认证框架2.0.0 发布! x.matthew 2008-04-17 13:08  
@leekiang
你说得很对,Acegi最初作为Spring的一个子项目加入到SpringSource公司(之前叫interface21)下。目前官方网站域名没有变动。
http://www.acegisecurity.org/。项目名称已经统一改成Spring Security.
re: (原创)Java实现一个自动排序List x.matthew 2008-04-17 12:03  
@ZelluX
谢谢ZelluX的回复。
下面是对你的两个问题回复
1. 为什么我从原来的composite改成了extends。
的确从偶合上来看,composite的确要把继承好,但从应用的上来看,因为Java本身提供List接口,所以使用方便性来讲extends更优,而且list是线程不安全的,如果要加同步控制的话直接用Collections.synchronizedList即可。利大于弊
2. 关于效率的问题,谢谢你提醒。的确LinkedList不像ArrayList,它是需要从头到尾扫描的。但定位与执行比较的操作其使用的效率单位应该不是一个级别的。虽然目前来看,遍历指针的次数多了,但比较的次数少了,最多O(logn)次。好,接下来看你一直坚持的红黑树,我的理解应该是一个自平衡二叉查找树吧。
因为在我这边应用,经常会有插入一个节点再移去多余的一个节点操作。保证集合里永远只有当初设定的个数
那红黑树的效率应该O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目,这样的话,如果要执行你我上面一个操作的话,至少要执行四次O(logn), 一次查找,一次插入,一次查找,一次删除。单做比较次数就用O(2logn)次吧。
最后,还是很感谢你的回复!
re: (原创)Java实现一个自动排序List x.matthew 2008-04-17 09:57  
改进了一下代码,改成使用的折半插入法,在集合量很大的时候有一个速度有一个比较大的提升.
re: (原创)Java实现一个自动排序List x.matthew 2008-04-17 08:14  
@faen
因为我用的LinkedList, 插入排序的我觉得速度是可以的。当然也有好的算法,如二分法等。但你回复让我摸不着头脑,如果你觉得有好的算法应该提出来让大家看一下吗?
@demo
支持集群的方式,你是指日志的合并吗?如果是日志的合并处理这个应该实现不会太难,现在的实现也是单独一个后台程序去分析日志,只需把多个日志文件按时间重新排列组合即可。
关于现在开源的项目中,我也参考了很多。我希望能把所有它们有的或没有的都集成起来,用更直观的方式(图表)展现出来。
谢谢大家的支持,我在此表示感谢!!!代码虽然是全都是我开发,但因为利用了公司资源所以在此不便公开,但我会花时间,把设计图重新整理出来,分享给大家。也希望大家能继续支持我。

@Always BaNg.
关于标准变量这块我再查一下资料,如果需要修改过来也是很方便的。

@luchunwei
嗯,不过commons-configuration的确是一个很不错的项目,他支持很多格式的配置文件读取,包括有xml的。
其实通过设置可以加载一个目录的,下面是一个例子
java -Djava.ext.dirs="c:\lib" org.xmatthew.spy2servers.console.Main start
TO iamzzb。嗯,带上短信通知会让这个报警更实用,接下来我会选一个短信类库来实现,同时还会开发带JMS消息发送功能的插件。
回复 BeanSoft

关于安全性方面,可以通过网络安全设置来解决。
性能这块,通过测试开启jmx服务对服务其本身影响很少,基本上jmx服务也是sun官方推荐使用的技术。
所以从这两方对比而言,收益远远大于付出的。

谢谢BeanSoft回复。
非常感谢Ben,类库已经更新,由于附件上传的大小限制,现在已经分成两个类库包 lib.rar和lib2.rar,解压后把*.jar放到lib目录中即可。
文章已经更新,源代码已经整理并上传。
共3页: 上一页 1 2 3