
2008年8月21日
這幾天用TimerTask作了個(gè)框架,擔(dān)心超過十萬條數(shù)據(jù)的時(shí)候速度變慢,其實(shí)每秒十萬次的運(yùn)行速度等到以后放在服務(wù)器上運(yùn)行應(yīng)該游刃有余吧,還不清楚,不過現(xiàn)在在我筆記本上運(yùn)行得還可以,內(nèi)存吃的很大,java就這毛病,程序員不能自由釋放內(nèi)存。1G內(nèi)存不夠用,我筆記本2G有分配不了,似乎虛擬內(nèi)存java用不了,沒仔細(xì)做過實(shí)驗(yàn)。
這幾天看新聞知道番茄花園作者被警方逮捕,樹大招風(fēng),槍打出頭鳥,很正常,從程序員的身份來講,盜版是要打擊的,不過我本身電腦里要付費(fèi)的軟件都是盜版的,很矛盾,呵呵。

2008年7月12日
實(shí)在太久沒寫servlet了,應(yīng)該至少1年了,那時(shí)候做了點(diǎn)皮毛,現(xiàn)在項(xiàng)目要求用到servlet的相關(guān)知識(shí),同時(shí)我在blogjava的bolg又開張了。學(xué)習(xí)的過程將記錄在我的blog中。對(duì)比了一下netbean和eclipse感覺用netbean編寫servlet程序方便些,eclipse用了幾年,但是還是感覺每次要找好相關(guān)的jar需要花費(fèi)太多時(shí)間,于是決定用netbean編寫了。

2007年1月14日
看看以下代碼:
將26個(gè)英文字母重復(fù)加了5000次,
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long lstart1=System.currentTimeMillis();
??String str ="";
??for(int i=0;i<times;i++)
??{
???str+=tempstr;
??}
??
??long lend1=System.currentTimeMillis();
??long time = (lend1-lstart1);
??System.out.println(time);
可惜我的計(jì)算機(jī)不是超級(jí)計(jì)算機(jī),得到的結(jié)果每次不一定一樣一般為 154735 左右。
也就是154秒。
我們?cè)倏纯匆韵麓a
String tempstr = "abcdefghijklmnopqrstuvwxyz";
?
??int times = 5000;
long lstart2=System.currentTimeMillis();
??StringBuffer sb =new? StringBuffer();
??for(int i=0;i<times;i++)
??{
???sb.append(tempstr);
???
??}
??long lend2=System.currentTimeMillis();
??long time2 = (lend2-lstart2);
??System.out.println(time2);
?得到的結(jié)果為 16 有時(shí)還是 0
所以結(jié)論很明顯,StringBuffer 的速度幾乎是String 上萬倍。當(dāng)然這個(gè)數(shù)據(jù)不是很準(zhǔn)確。因?yàn)檠h(huán)的次數(shù)在100000次的時(shí)候,差異更大。不信你試試。
下一次我將解釋為什么StringBuffer 的效率比String 高這么多。

2007年1月3日
swt 簡(jiǎn)單的托盤程序
java寫和操作系統(tǒng)相關(guān)的程序難度非常大。在java 6出現(xiàn)之前,如果你想實(shí)現(xiàn)一個(gè)托盤程序,最簡(jiǎn)單的就是用swt了。
通過google我找到了一段代碼。
其實(shí)很簡(jiǎn)單。主要的代碼如下:
?????????????final Tray tray = display.getSystemTray();
??????????? final TrayItem trayItem = new TrayItem(tray, SWT.NONE);
??????????? Image image = new Image (display, 16, 16);
??????????? trayItem.setImage(image);
知道了重點(diǎn),事情變的很簡(jiǎn)單了。看看所有程序
//-----------------
public class SystemTray extends Shell {
??? public static void main(String args[]) {
??????? try {
??????????? Display display = Display.getDefault();
??????????? SystemTray shell = new SystemTray(display, SWT.SHELL_TRIM);
?????????? // shell.createSystemTray(shell);
??????????? final Tray tray = display.getSystemTray();
??????????? final TrayItem trayItem = new TrayItem(tray, SWT.NONE);
??????????? Image image = new Image (display, 16, 16);
??????????? trayItem.setImage(image);
??????????? shell.open();
??????????? shell.layout();
??????????? while (!shell.isDisposed()) {
??????????????? if (!display.readAndDispatch())
??????????????????? display.sleep();
??????????? }
??????? } catch (Exception e) {
??????????? e.printStackTrace();
??????? }
??? }
??? public SystemTray(Display display, int style) {
??????? super(display, style);
??????? createContents();
??? }
??? /**
???? * Create contents of the window
???? */
??? protected void createContents() {
??????? setText("SWT Application");
??????? setSize(500, 375);
??? }
??? //swt 默認(rèn)情況下不允許shell被繼承
??? //所以我重載了父類的方法
??? protected void checkSubclass() {
???????? }
}
//--------------------
如果你想成功運(yùn)行以上代碼,你最好在eclipse下新建一個(gè)swt的類。具體操作你搜索一下吧。
但是上面的代碼只是加入了托盤,這可能是最簡(jiǎn)單的實(shí)現(xiàn)托盤的程序了。我們加入事件處理,讓程序能夠最大和最小化。然后把托盤用圖片來表示。
詳細(xì)的代碼不參考
下載
到eclipse里運(yùn)行