Archive for April 2008
我想,像一般這樣的個人 blog 來說,最大最多最麻煩的訪客都是一樣的 – Spam Robots,其次的就是 Google 和 yahoo 等等 robots 吧!?
可是看著其他最後的 browser user-agent 的統計的就有點奇怪了…….
Windows, Macintosh, Linux; IE 5.5, 6.0, 7.0 和 Firefox 很正常,
就算是其他的 Safari, Opera, Camino, MacOS 等等都是可想會出現的
可是沒有想到有 FreeBSD, Nintendo Wii, iPhone, iPod, Playstation Portable, Playstation 3 出現在名單之中
唔……始終 NDS 沒有內置 browser 不能簡單直接上網吧?? XD
到底會有那個笨蛋會用 Wii 和 PS3 上網????
而且很不少來自日本的訪客…..大概是 YUI 歌詞的作用吧!?
- referer spam
- trackback spam
- comment spam
雖然做得到滴水不漏,但係都係要花D時間慢慢睇住個 log file。再係 web server 直接成個 IP range block 咗佢好過。
費事佢浪費我D resource 同 brandwidth 。
上次寫完 Java, Garbage Collection與 Memory management 當中提到 AWT 和 Finalize 的關係,仔細一想後覺得大有文章,要再寫多少少。
有一少部新手入門看的書當中介紹的做法,和一部份 WYSIWYG GUI Editor 的做法,都是以 JDialog / JWindow 來實作自己的的視窗。可是根據 Swing 正確的 MVC design pattern 和 finalize 的關係來說,這是完全錯誤,而且可笑的,荒謬的做法。
如果只是為了即省幾行 code 或即省介紹每一節的功能,那就比較合理,但卻會教壞新手。
javax.swing.JDialog, javax.swing.JFrame 和 javax.swing.JWindow 都是 extends 了 java.awt.Dialog, java.awt.Frame 和 java.awt.Window 。本質上它們依然是一個 AWT 元件,只係在其上再加建 Swing 的 API 去支持運作。它們,依然是擁有 finalize method 的重元件(須要兩次 GC 才能清理)。
也就是你在自己 extends 了它們的 object 都自動成了重元件,令到任何在其中的 members 都無可避免地減低 GC 效率和增加記憶體使用量。而且,這根本就會令到你的物件本身的可重用性減低。
但很可惜在官方的 Tutorial Using Top-Level Containers 沒有提到這一點和它的重要性。
比較合理的做法是以 javax.swing.JComponent 或 javax.swing.JPanel 為基礎,而另外自行寫一組簡單的 function 來實現
frame=new JFrame();
frame.getContentPane().add(xxx);
而且,也為了 GC 優化,在確定 Window 不會重用(不會再執行 show() 或 setVisible(true);) 的地方(例如 void windowClosed(){…} ) 加上
frame.getContentPane().remove(xxx);
// 別忘了還有 Menu 和其他
,令它們和重元件 window 分離。
這樣一來,在 GC 的時候,它就能把 Windows 和 載有大量 data 的部份分開辦理,在 JPanel 當中存在/連結的大量 memory 能一口氣在第一次 GC 就能被清掉,而不是等 finalize 執行後的第二次 (甚至第三次, 第四次) 的 GC 才能被移除。
當然這樣的 GC 優化這對只會冇單一 Window 的 application 沒有特別意義的,也對 EXIT_ON_CLOSE 的 window 沒有意義。但能算是比較正規的做法。
我不喜歡 Swing,它實在太易令人犯錯而不自知。特別是那不 Thread-safe,但又難以 debug 的設定。
頭先走左落去運動場跑步
但係慢慢咁跑左三個圈就已經頂唔順了…..
腳問題不太, 而係心肺支持唔到
唔知係我自己唔知輕重定係點樣
事關 N 年無跑步過超過 100M 了 (100M 係因為要追巴士)
原本以為都可以支持到五圈
不過諗諗下都係唔想聽日見報
不過諗真D……
雖然近年少左運動, 體能有退化
但係當年重係學生嘅我, 可唔可以支持到五個圈都係一個問題?
無論是 Java,英文,朋友,人際關係甚至係金錢管理。
古人話:『苦海無邊‥』呀唔係『學海無崖,唯勤是岸』都沒有錯
無論是甚麼人,學習甚麼也好,每學一件事,就會生出更多的問題要去解答,去再學習。不是你覺得已經足夠而放棄了學習,就是持續一直學下去,而永遠沒有學完了而停止的。
勤力的人,會比較快學得到他所需要的足夠的知識。但如果他停了下來放棄了 勤,就會慢慢被無情的浪再卷入學海當中。
最近,學習的進度好像學了下來。發覺自己雖然經學了不少,卻好像看到很多的地方要去學習改善。
我很疲倦而停下了腳步,我根本不能集中精神去學習。我心思都被某個人填滿--看吧,我原本沒有打算寫到她的,但還是這樣。
