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, 插入排序的我覺得速度是可以的。當然也有好的算法,如二分法等。但你回復讓我摸不著頭腦,如果你覺得有好的算法應該提出來讓大家看一下嗎?
re: (原創)設計一個Tomcat訪問日志分析工具 x.matthew 2008-04-14 13:42
@demo
支持集群的方式,你是指日志的合并嗎?如果是日志的合并處理這個應該實現不會太難,現在的實現也是單獨一個后臺程序去分析日志,只需把多個日志文件按時間重新排列組合即可。
關于現在開源的項目中,我也參考了很多。我希望能把所有它們有的或沒有的都集成起來,用更直觀的方式(圖表)展現出來。
re: (原創)設計一個Tomcat訪問日志分析工具 x.matthew 2008-04-14 10:22
謝謝大家的支持,我在此表示感謝!!!代碼雖然是全都是我開發,但因為利用了公司資源所以在此不便公開,但我會花時間,把設計圖重新整理出來,分享給大家。也希望大家能繼續支持我。
@Always BaNg.
關于標準變量這塊我再查一下資料,如果需要修改過來也是很方便的。
@luchunwei
嗯,不過commons-configuration的確是一個很不錯的項目,他支持很多格式的配置文件讀取,包括有xml的。
re: 在批處理中加載某個目錄所有的jar x.matthew 2008-04-13 17:45
其實通過設置可以加載一個目錄的,下面是一個例子
java -Djava.ext.dirs="c:\lib" org.xmatthew.spy2servers.console.Main start
TO iamzzb。嗯,帶上短信通知會讓這個報警更實用,接下來我會選一個短信類庫來實現,同時還會開發帶JMS消息發送功能的插件。
回復 BeanSoft
關于安全性方面,可以通過網絡安全設置來解決。
性能這塊,通過測試開啟jmx服務對服務其本身影響很少,基本上jmx服務也是sun官方推薦使用的技術。
所以從這兩方對比而言,收益遠遠大于付出的。
謝謝BeanSoft回復。
re: (原創)搭建一個組件化的監控平臺 x.matthew 2008-03-18 10:31
非常感謝Ben,類庫已經更新,由于附件上傳的大小限制,現在已經分成兩個類庫包 lib.rar和lib2.rar,解壓后把*.jar放到lib目錄中即可。
re: (原創)搭建一個組件化的監控平臺 x.matthew 2008-03-13 12:09
文章已經更新,源代碼已經整理并上傳。