<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 39,  comments - 263,  trackbacks - 0
      2006年1月8日
        這幾天用TimerTask作了個(gè)框架,擔(dān)心超過(guò)十萬(wàn)條數(shù)據(jù)的時(shí)候速度變慢,其實(shí)每秒十萬(wàn)次的運(yùn)行速度等到以后放在服務(wù)器上運(yùn)行應(yīng)該游刃有余吧,還不清楚,不過(guò)現(xiàn)在在我筆記本上運(yùn)行得還可以,內(nèi)存吃的很大,java就這毛病,程序員不能自由釋放內(nèi)存。1G內(nèi)存不夠用,我筆記本2G有分配不了,似乎虛擬內(nèi)存java用不了,沒(méi)仔細(xì)做過(guò)實(shí)驗(yàn)。
        這幾天看新聞知道番茄花園作者被警方逮捕,樹大招風(fēng),槍打出頭鳥,很正常,從程序員的身份來(lái)講,盜版是要打擊的,不過(guò)我本身電腦里要付費(fèi)的軟件都是盜版的,很矛盾,呵呵。
    posted @ 2008-08-21 23:54 nake 閱讀(2149) | 評(píng)論 (3)編輯 收藏
    實(shí)在太久沒(méi)寫servlet了,應(yīng)該至少1年了,那時(shí)候做了點(diǎn)皮毛,現(xiàn)在項(xiàng)目要求用到servlet的相關(guān)知識(shí),同時(shí)我在blogjava的bolg又開張了。學(xué)習(xí)的過(guò)程將記錄在我的blog中。對(duì)比了一下netbean和eclipse感覺(jué)用netbean編寫servlet程序方便些,eclipse用了幾年,但是還是感覺(jué)每次要找好相關(guān)的jar需要花費(fèi)太多時(shí)間,于是決定用netbean編寫了。
    posted @ 2008-07-12 15:15 nake 閱讀(1945) | 評(píng)論 (2)編輯 收藏
    看看以下代碼:
    將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 上萬(wàn)倍。當(dāng)然這個(gè)數(shù)據(jù)不是很準(zhǔn)確。因?yàn)檠h(huán)的次數(shù)在100000次的時(shí)候,差異更大。不信你試試。
    下一次我將解釋為什么StringBuffer 的效率比String 高這么多。
    posted @ 2007-01-14 12:24 nake 閱讀(4220) | 評(píng)論 (4)編輯 收藏

    swt 簡(jiǎn)單的托盤程序
    java寫和操作系統(tǒng)相關(guān)的程序難度非常大。在java 6出現(xiàn)之前,如果你想實(shí)現(xiàn)一個(gè)托盤程序,最簡(jiǎn)單的就是用swt了。
    通過(guò)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)單了??纯此谐绦?br />//-----------------
    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)托盤的程序了。我們加入事件處理,讓程序能夠最大和最小化。然后把托盤用圖片來(lái)表示。
    詳細(xì)的代碼不參考
    下載 到eclipse里運(yùn)行

    posted @ 2007-01-03 22:58 nake 閱讀(3413) | 評(píng)論 (4)編輯 收藏
    從8.1號(hào)開始,連續(xù)加班,再過(guò)1小時(shí)結(jié)束。
    posted @ 2006-09-21 02:39 nake 閱讀(976) | 評(píng)論 (4)編輯 收藏

    排序的算法是我們最常用的算法,初學(xué)程序,每個(gè)人都嘗試過(guò)排序。但只是局限于簡(jiǎn)單的排序。
    如將下列數(shù)字進(jìn)行排序
    1,3,5,8,3,6
    于是我們得出結(jié)果
    1,3,3,5,6,8
    將下列字母(字符)進(jìn)行排序
    a,i,e,f,w,s
    于是我們得出結(jié)果
    a,e,f,i,s,w
    但是我們遇到的情況就不是如此簡(jiǎn)單了。如給公司里的商品進(jìn)行排序,我們很輕易的想到按照商品的名稱排序不就完了,而且簡(jiǎn)單明了。但現(xiàn)實(shí)并如我們相信般簡(jiǎn)單。同一商品名稱可以有不同的批次,進(jìn)貨時(shí)間,可能還會(huì)有單價(jià)的不同。顯然只根據(jù)商品名稱排序是不合理的。

    再舉個(gè)簡(jiǎn)單例子然后用程序?qū)崿F(xiàn)。如公司要將員工進(jìn)行排序(不要說(shuō)領(lǐng)導(dǎo)排在前面),假設(shè)我們的需求比較復(fù)雜。先進(jìn)行姓排序,誰(shuí)的姓拼音靠前,誰(shuí)就排前面。然后對(duì)名字進(jìn)行排序。恩.如果同名,女性排前頭。如果名字和性別都相同,年齡小的排前頭。ok,一個(gè)也不算復(fù)雜的需求。

    如果對(duì)java比較熟悉的會(huì)知道java.util.Comparator 接口。要實(shí)現(xiàn)里面的函數(shù)
    ?int compare(Object o1, Object o2) 返回一個(gè)基本類型的整型,返回負(fù)數(shù)表示o1 小于o2,返回0 表示o1和o2相等,返回正數(shù)表示o1大于o2。

    于是我們?cè)O(shè)計(jì)的人員類要有幾個(gè)變量,firstname,lastname,sex,age分別表示姓,名,性別,年齡。


    public class Person {
    ? String firstname,lastname;
    ? Boolean sex;
    ? Integer age;
    ? public Person(String firstname,String lastname,Boolean sex,Integer age) {
    ??? this.firstname = firstname;
    ??? this.lastname = lastname;
    ??? this.sex = sex;
    ??? this.age = age;
    ? }
    ? public String getFirstName() {
    ???? return firstname;
    ?? }

    ?? public String getLastName() {
    ???? return lastname;
    ?? }
    ?? public Boolean getSex() {
    ????? return sex;
    ??? }

    ??? public Integer getAge() {
    ????? return age;
    ??? }

    //為了輸入方便,重寫了toString()

    public String toString()
    ??? {
    ????? return firstname +" "+lastname+" "+(sex.booleanValue()?"男":"女")+" "+age;
    ??? }
    }
    //end person

    下面是要實(shí)現(xiàn)比較器


    public class Comparators {
    ? public static java.util.Comparator getComparator() {
    ??? return new java.util.Comparator() {

    ????? public int compare(Object o1, Object o2) {
    ??????? if (o1 instanceof String) {
    ????????? return compare( (String) o1, (String) o2);
    ??????? }
    ?????? else if (o1 instanceof Integer) {
    ????????? return compare( (Integer) o1, (Integer) o2);
    ??????? }

    ?????? else if (o1 instanceof Person) {
    ????? return compare( (Person) o1, (Person) o2);
    ??? }

    ??????? else {
    ????????? System.err.println("未找到合適的比較器");
    ????????? return 1;

    ??????? }
    ????? }

    ????? public int compare(String o1, String o2) {
    ??????? String s1 = (String) o1;
    ??????? String s2 = (String) o2;
    ??????? int len1 = s1.length();
    ??????? int len2 = s2.length();
    ??????? int n = Math.min(len1, len2);
    ??????? char v1[] = s1.toCharArray();
    ??????? char v2[] = s2.toCharArray();
    ??????? int pos = 0;

    ??????? while (n-- != 0) {
    ????????? char c1 = v1[pos];
    ????????? char c2 = v2[pos];
    ????????? if (c1 != c2) {
    ??????????? return c1 - c2;
    ????????? }
    ????????? pos++;
    ??????? }
    ??????? return len1 - len2;
    ????? }

    ????? public int compare(Integer o1, Integer o2) {
    ??????? int val1 = o1.intValue();
    ??????? int val2 = o2.intValue();
    ??????? return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1));

    ????? }
    ????? public int compare(Boolean o1, Boolean o2) {

    ???????? return (o1.equals(o2)? 0 : (o1.booleanValue()==true?1:-1));

    ?????? }

    ????? public int compare(Person o1, Person o2) {
    ??????? String firstname1 = o1.getFirstName();
    ??????? String firstname2 = o2.getFirstName();
    ??????? String lastname1 = o1.getLastName();
    ??????? String lastname2 = o2.getLastName();
    ??????? Boolean sex1 = o1.getSex();
    ??????? Boolean sex2 = o2.getSex();
    ??????? Integer age1 = o1.getAge();
    ??????? Integer age2 = o2.getAge();
    ??????? return (compare(firstname1, firstname2) == 0 ?
    ??????????????? (compare(lastname1, lastname2) == 0 ? (compare(sex1, sex2) == 0 ? (compare(age1, age2) == 0 ? 0 :
    ???????????????? compare(age1, age2)) :
    ???????????????? compare(sex1, sex2)) :
    ???????????????? compare(lastname1, lastname2)) :
    ??????????????? compare(firstname1, firstname2));

    ????? }

    ??? };
    ? }

    }
    以上代碼有可能因?yàn)闉g覽器的布局自動(dòng)換行。
    compare(Person o1, Person o2)的返回值看起來(lái)比較別扭。最簡(jiǎn)單的是

    ??? public int compare(Boolean o1, Boolean o2) {

    ???????? return (o1.equals(o2)? 0 : (o1.booleanValue()==true?1:-1));

    ?????? }

    o1和o2相等返回0,否則o1如果是true 就表示o1大于o2。

    再嘗試輸出結(jié)果看看


    public class Main {
    ? public Main() {
    ? }
    ? public static void main(String[] args) {
    ??? Person[] person = new Person[] {
    ???????? new Person("ouyang", "feng", Boolean.TRUE, new Integer(27)),
    ???????? new Person("zhuang", "gw", Boolean.TRUE, new Integer(27)),
    ???????? new Person("zhuang", "gw", Boolean.FALSE, new Integer(27)),
    ???????? new text.Person("zhuang", "gw", Boolean.FALSE, new Integer(2)),


    ???? };
    ???? for (int i = 0; i < person.length; i++) {
    ?????? System.out.println("before sort=" + person[i]);
    ???? }
    ???? java.util.Arrays.sort(person, Comparators.getComparator());
    ? for (int i = 0; i < person.length; i++) {
    ??? System.out.println("after sort=" + person[i]);
    ? }


    ? }

    }

    輸出結(jié)果:

    before sort=ouyang feng 男 27

    before sort=zhuang gw 男 27

    before sort=zhuang gw 女 27

    before sort=zhuang gw 女 2

    after sort=ouyang feng 男 27

    after sort=zhuang gw 女 2

    after sort=zhuang gw 女 27

    after sort=zhuang gw 男 27


    仔細(xì)理解java的Comparator會(huì)給你寫排序帶來(lái)很大幫助


    ?

    posted @ 2006-05-27 17:20 nake 閱讀(2286) | 評(píng)論 (5)編輯 收藏
    ?

    軟件項(xiàng)目,特別是給企業(yè)用戶的項(xiàng)目,實(shí)施過(guò)程大多辛苦,而且一部分問(wèn)題不在于軟件本身。

    總結(jié)一下項(xiàng)目最后驗(yàn)收階段案例之一。

    案例:項(xiàng)目已經(jīng)按照客戶確認(rèn)的調(diào)研文檔完成實(shí)施工作。客戶的一把手提出新需求。

    此一把手H,H精通業(yè)務(wù),對(duì)電腦一竅不通。H對(duì)手下電腦部負(fù)責(zé)人Z提出“要對(duì)業(yè)務(wù)進(jìn)行風(fēng)險(xiǎn)管理,把風(fēng)險(xiǎn)大的業(yè)務(wù)提出來(lái)。”,一句話令Z頭大。Z苦惱H沒(méi)有定義什么是風(fēng)險(xiǎn)大,即使H說(shuō)明風(fēng)險(xiǎn)大的條件,現(xiàn)有的軟件架構(gòu),數(shù)據(jù)模型能否實(shí)現(xiàn)還是未知數(shù)。實(shí)現(xiàn)此功能成為不可完成的任務(wù)。持續(xù)下去Z和項(xiàng)目經(jīng)理W(軟件公司負(fù)責(zé)人)都面臨困境。

    Z會(huì)被認(rèn)為沒(méi)有完成領(lǐng)導(dǎo)安排的工作(實(shí)際上他忙的焦頭爛額)。

    W進(jìn)入兩難,一方面客戶要求的完成不了,另一方面面臨公司的的項(xiàng)目要拖延。

    解決辦法:1.按章辦事,調(diào)研文檔已經(jīng)寫清楚無(wú)此需求。直接拒絕。此為下策,沒(méi)辦法才用,但是關(guān)鍵時(shí)刻很有用。

    2.引導(dǎo)+忽悠。對(duì)付H這種老總要從其公司內(nèi)部出發(fā)。分析滿足他需求所需要的條件。一般要犧牲部分工作人員的工作時(shí)間。然后把影響放大,嚇唬他。如果可以的話可以找他們的相關(guān)人員幫忙,讓他聽到不同的聲音,讓他放棄此念頭。因?yàn)檐浖峭庑?,談?wù)撥浖r(shí)心里沒(méi)底氣,有自己人反對(duì),心虛。

    比如從財(cái)務(wù)著手比較有效。要滿足H的需求改變了財(cái)務(wù)的核算體系,原有的數(shù)據(jù)都要加上某寫核算項(xiàng),不能保證數(shù)據(jù)準(zhǔn)確性,而且大大增加了財(cái)務(wù)工作量,而且不符合會(huì)計(jì)制度(忽悠)。上策!

    posted @ 2006-05-16 17:46 nake 閱讀(3245) | 評(píng)論 (2)編輯 收藏

    轉(zhuǎn)載請(qǐng)注明出處:http://www.tkk7.com/nake/
    ???自從
    java 發(fā)布的第一個(gè)版本開始就已經(jīng)包含 JDBC 了。目前已經(jīng)有 10 個(gè)年頭了。 JDBC4.0 將要被打包到 java6.0 里( java SE J2SE 新的名字)。它展現(xiàn)設(shè)計(jì)的重大提升和提供更加豐富的 API ,更加重視簡(jiǎn)易開發(fā)和提高生產(chǎn)力 。

    ?????? 本文將討論一些 JDBC 在改善設(shè)計(jì)和提高性能上的重要的變化。但是不能列舉每一個(gè)變化。

    注解和泛型

    我想你已經(jīng)了解了包含在 JAVA 5.0 的注解( annotations 和泛型( generic 也有翻譯范型)。 JDBC4.0 也引進(jìn)了注解和泛型 DataSet ,這使得執(zhí)行 sql 語(yǔ)句和 SQL? DML data manipulation? language 定義變的簡(jiǎn)單。

    ?????? 在新的 API 里定義了一套 Query DataSet 接口。 Query 接口定義了一套方法,這些方法描述了 SQL select update 語(yǔ)句。而且詳細(xì)介紹了結(jié)果集如何綁定為一個(gè) DataSet 的。因?yàn)榉盒退?/span> DataSet 是可以帶參數(shù)的。因此可以說(shuō) DataSet 接口是類型安全的( type-saft .

    所有 Query 接口都要從 BaseQuery 接口繼承??梢酝ㄟ^(guò) Connection.createQueryObject() 或者 DataSource.createQueryObject() 得到Query對(duì)象。

    一個(gè)DataSet接口都繼承java.util.List ? DataSet 是有列概念的數(shù)據(jù)集,能從 Query 接口得到,并且可以帶有參數(shù)。 DataSet 可以在連接和斷開連接的情況下使用。從而 DataSet 實(shí)現(xiàn)了 ResultSet (連接) 或者 ? CachedRowSet (可以斷開連接)。因?yàn)?span lang="EN-US">DataSetjava.util.List的子接口,所以可以通過(guò)java.util.Iterator來(lái)訪問(wèn)每一行。

    DataSet 接口可以帶系統(tǒng)或者用戶自己定義的類作為參數(shù)。通過(guò)兩種方法你可以實(shí)現(xiàn):構(gòu)造函數(shù)或者 JavaBeans 對(duì)象,任何一個(gè)辦法都能達(dá)到將用戶自定義的類綁定到結(jié)果集的列里。但是在其它支持 JavaBeans 的框架里,用 JavaBeans 對(duì)象的實(shí)現(xiàn)就顯更加容易使用。

    下面簡(jiǎn)單舉例說(shuō)明如何通過(guò)新的 API 創(chuàng)建和運(yùn)行 SQL 查詢。用用戶自定義的類來(lái)定義結(jié)果集。(拷貝時(shí)候小心有制表符)

    pubic class Employee {
    ?? private int employeeId;
    ?? private String firstName;
    ?? private String lastName;

    ?? public int getEmployeeId() {
    ??????return employeeId;
    ?? }
    ??
    ?? public setEmployeeId(int employeeId) {
    ??????this.employeeId = employeeId;
    ?? }

    ?? public String getFirstName() {
    ??????return firstName;
    ?? }

    ?? public setFirstName(String firstName) {
    ??????this.firstName = firstName;
    ?? }

    ?? pubic String lastName() {
    ??????return lastName;
    ?? }

    ?? public setLastName(String lastName) {
    ??????this.lastName = lastName;
    ?? }
    }

    interface EmployeeQueries extends BaseQuery {
    ?? @Select (sql="SELECT employeeId, firstName, lastName FROM employee")
    ?? DataSet<Employee> getAllEmployees ();

    ?? @Update (sql="delete from employee")
    ?? int deleteAllEmployees ();
    }


    Connection con = ...

    EmployeeQueries empQueries = con.createQueryObject (EmployeeQueries.class);

    DataSet<Employee> empData = empQueries.getAllEmployees ();

    ?

    異常處理的增強(qiáng):

    1.?????? SQLException 分為兩類 transient non-transient 。

    2.?????? 支持連鎖的異常。

    3.?????? 繼承了 Iterable 接口。

    因?yàn)槔^承了Iterable 所以你可以這樣寫:

    catch(SQLException ex) {
    ?? for(Throwable t : ex) {
    ??????System.out.println("exception:" + t);
    ?? }
    }

    SQLExceptions.JPG
    參考

  • http://www.javaworld.com/javaworld/jw-05-2006/jw-0501-jdbc.html
  • JSR 221: JDBC 4.0 Specification:
  • http://www.jcp.org/en/jsr/detail?id=221
    未完

    posted @ 2006-05-11 22:26 nake 閱讀(6768) | 評(píng)論 (4)編輯 收藏
    ?????????陳水扁一邊嗆美,另一邊卻熱情對(duì)待布什夫人;他前天(2006-5-9)在哥斯達(dá)黎加總統(tǒng)就職大典上兩度“突襲”美國(guó)總統(tǒng)夫人勞拉的畫面,昨天一整天在臺(tái)灣島內(nèi)電視熱播。

      當(dāng)時(shí)正舉行哥國(guó)總統(tǒng)就職大典,陳水扁坐在第一排,勞拉則坐在第二排。阿扁不時(shí)轉(zhuǎn)頭瞄向左后方的勞拉,等到表演節(jié)目開始時(shí),扁跨步越過(guò)身邊所有人走到勞拉身旁寒暄。據(jù)說(shuō),扁邀請(qǐng)勞拉到臺(tái)灣訪問(wèn),勞拉則禮貌性回答“謝謝”。


    ?????????至典禮結(jié)束時(shí),全場(chǎng)嘉賓起身鼓掌,扁忽然再一個(gè)箭步?jīng)_向勞拉。勞拉表情有些錯(cuò)愕,但雙手繼續(xù)鼓掌。扁此時(shí)伸出右手,懸空一陣后主動(dòng)去輕抓勞拉正在鼓掌的手,迫使勞拉不得不與他相握。手一握到,扁立刻雙手緊抓不放,左手還不斷拍打,勞拉的另一只手此時(shí)卻不期然地移到自己胸前捂住,還下意識(shí)地抓緊了衣領(lǐng)。同時(shí),扁的傳譯員卻已擺好了相機(jī),扁示意勞拉對(duì)著鏡頭微笑,終于完成了這張與總統(tǒng)夫人微笑握手的歷史合照。
    原文出自http://www.zaobao.com/gj/zg060511_501.html
    posted @ 2006-05-11 19:23 nake 閱讀(496) | 評(píng)論 (1)編輯 收藏
    ? 整整一天的時(shí)間都在查bug,對(duì)數(shù),然后找到錯(cuò)誤的原因。需要我認(rèn)真,仔細(xì),不要放棄,不要繞過(guò)困難。找bug需要方法和耐心,要記錄下多種數(shù)據(jù)和過(guò)程,不要做無(wú)頭蒼蠅,如果數(shù)據(jù)像今天一樣多要先給數(shù)據(jù)分類分段排除。
    posted @ 2006-05-09 23:50 nake 閱讀(373) | 評(píng)論 (0)編輯 收藏
    ???最近看2本書,一本關(guān)于ajax的,一本是《Agile Software Develpment》。先看ajax,我實(shí)在不想公布它的書名,感覺(jué)被騙了,廣告做得好,翻譯和內(nèi)容都很差?!禔gile Software Develpment》還行,同時(shí)也學(xué)習(xí)了英文,是本值得細(xì)讀得書。
    posted @ 2006-04-24 22:39 nake 閱讀(397) | 評(píng)論 (0)編輯 收藏
    ???周六周日抽空完成了Table類的排序和搜索功能。搜索速度還能接受,搜索2萬(wàn)條記錄沒(méi)感覺(jué)到停頓,更多的記錄我還沒(méi)測(cè)試,排序就夠嗆,起初花了30分鐘還沒(méi)完成,郁悶!comparator要進(jìn)行優(yōu)化。

    ? public int compare(Number o1, Number o2) {
    ??? double n1 = o1.doubleValue();
    ??? double n2 = o2.doubleValue();
    ??? if (n1 < n2) {
    ????? return -1;
    ??? } else if (n1 > n2) {
    ????? return 1;
    ??? } else {
    ????? return 0;
    ??? }
    ? }

    感覺(jué)應(yīng)該還好,應(yīng)該是其它地方?jīng)]處理好。
    接下來(lái)我要處理
    1.改變JTable原來(lái)的UI 在table底下加入可以匯總的表格
    2.JTable類在瀏覽器上的表現(xiàn)
    3.dataset直接的關(guān)聯(lián)在table中實(shí)現(xiàn)
    posted @ 2006-04-18 20:43 nake 閱讀(446) | 評(píng)論 (0)編輯 收藏

    ? ? 好像是兩年前第一次接觸eclipse,不記得版本號(hào)了。那時(shí)候eclipse小有名氣,可能是本身喊的出名字的工具就只有jb。公司買的是jb6,但是我們都貪新,用剛出的jb9。結(jié)果因?yàn)橛帽I版被borland協(xié)同工商罰了好多錢(你不信就開防火墻,用jb調(diào)試程序,看看防火墻情況)。從此公司開始使用eclipse。
    ?? ?正是eclipse由IBM等出資和開源的緣故有人說(shuō)eclipse是六大門派里的少林,聽起來(lái)有點(diǎn)道理。武當(dāng)派(jboss)已經(jīng)歸于redhat名下(我不喜歡jboss因?yàn)樗拿掷镉袀€(gè)Boss)。可能我很喜歡eclipse了,生怕有一天開始收費(fèi),或者被收購(gòu),畢竟不是原滋原味。
    ??? eclipse發(fā)展太快,幾乎一個(gè)月一個(gè)Milestone,現(xiàn)在是3.2M6了,最后一個(gè)M。如果按照此速度4月要出3.2的stable build版本的RC1了。其中一項(xiàng)新特性是速度有所提升。看看我為了玩java我機(jī)器的配置吧。

    posted @ 2006-04-13 23:27 nake 閱讀(237) | 評(píng)論 (0)編輯 收藏

    今晚無(wú)聊 用google google 了google 有2,580,000,000項(xiàng)符合查詢結(jié)果。無(wú)意中有看到新成員froogle 。google家族成員越來(lái)越多,可是中文版出得就相對(duì)慢,而且不一定能順利在中國(guó)推廣,或者以后google沒(méi)個(gè)家族成員都有類似提示據(jù)當(dāng)?shù)胤煞ㄒ?guī)和政策,部分搜索結(jié)果未予顯示。
    喜歡google,喜歡他簡(jiǎn)潔、快速。

    posted @ 2006-04-05 00:32 nake 閱讀(238) | 評(píng)論 (0)編輯 收藏

    Table類的mind圖.
    Table類的設(shè)計(jì).jpeg

    當(dāng)然還有TableModel 沒(méi)有畫進(jìn)來(lái),因?yàn)樗鼘?huì)是變化多端的.code_name_map也沒(méi)有畫.還有輔助錄入以前寫過(guò)就不說(shuō)了.
    事件的處理以后再花時(shí)間寫清楚了.

    posted @ 2006-03-29 23:29 nake 閱讀(944) | 評(píng)論 (3)編輯 收藏

    今晚一邊考慮了DataRow,Cell,DataSet,DataTable,Connect,DataProvider的構(gòu)架一邊看 《一球成名》,覺(jué)得很愜意.

    posted @ 2006-03-28 23:07 nake 閱讀(429) | 評(píng)論 (0)編輯 收藏
    我的工作就是和數(shù)據(jù)庫(kù)打交道,數(shù)據(jù)庫(kù)當(dāng)然離不開dataset,用了幾年borland的dx.jar. borland這次看來(lái)真的玩完了.回想borland的歷史,每次危機(jī)時(shí)刻都有英雄出現(xiàn),扭轉(zhuǎn)局面.但愿這次也如此.
    我近段時(shí)間要完成的工作:
    1.完善我的dataset.
    2.實(shí)現(xiàn)table里的過(guò)慮,快速查找等功能

    接下來(lái)我才考慮用以上模塊實(shí)現(xiàn)項(xiàng)目管理軟件.
    posted @ 2006-03-27 23:57 nake 閱讀(265) | 評(píng)論 (0)編輯 收藏
    Subversion 已經(jīng)代替了CVS,至少在SourceForge上是如此.我花了一個(gè)晚上時(shí)間玩玩.原來(lái)在公司用vss,感覺(jué)能用就將就了.畢竟用哪個(gè)版本控制器不重要.
    posted @ 2006-03-27 23:43 nake 閱讀(232) | 評(píng)論 (0)編輯 收藏

    java 的Table類采用了MVC模式,所以設(shè)計(jì)出多種視圖相對(duì)容易.
    但是在工作中為了如果Table里的數(shù)據(jù)能用Tree的方式組織起來(lái),數(shù)據(jù)會(huì)更加緊湊,結(jié)構(gòu)清晰.
    效果如圖:但是往往工作中數(shù)據(jù)沒(méi)那么少,那么簡(jiǎn)單
    效果圖.JPG

    下圖是樹型圖的思維圖

    樹型Table.jpeg

    基本上程序上要寫的地方有:
    1.實(shí)現(xiàn)TreeModel接口,
       同時(shí)實(shí)現(xiàn)TableModel中幾個(gè)必要函數(shù)
        public Class getColumnClass(int column);
        public int getColumnCount();
        public String getColumnName(int column);
        public Object getValueAt(Object node, int column);
        public boolean isCellEditable(Object node, int column);
        public void setValueAt(Object value, Object node, int column);
       使tree和table能相互結(jié)合使用
    2.繼承AbstractTableModel
       將1中繼承TreeModel和此結(jié)合
    3.繼承TableCellRenderer
       要覆蓋paint,updateUI 要實(shí)現(xiàn)getTableCellRendererComponent

    4.TreeModelListener的實(shí)現(xiàn)了

    整體的代碼不長(zhǎng) 但花了我不少時(shí)間.需要的話留下mail吧.
    此代碼還有不完善的地方.如和sql結(jié)合.

    posted @ 2006-03-11 13:15 nake 閱讀(2912) | 評(píng)論 (45)編輯 收藏
       春節(jié)是中國(guó)人傳統(tǒng)節(jié)日一年的開始。
       一年的開始......
       埃及海難,人們大罵船長(zhǎng)不該跑該死,埃及人都學(xué)會(huì)了“都坐下不要?jiǎng)?,讓領(lǐng)導(dǎo)先走”。
       美國(guó)防部將中國(guó)列為“最具軍事威脅國(guó)家”,米國(guó)人本應(yīng)該出中文版《四年防務(wù)評(píng)估報(bào)告》,competition 對(duì)抗;競(jìng)爭(zhēng)行為,如為了利益或獎(jiǎng)品;敵對(duì)  。 menace 威脅;可能發(fā)生之危險(xiǎn);威脅。我英文不好就只能借助英語(yǔ)字典了。
       菲律賓體育場(chǎng)發(fā)生踩踏事件,他死因?yàn)樗F。
       IAEA理事會(huì)決定把伊朗核問(wèn)題報(bào)告安理會(huì)。絕不讓流氓國(guó)家menace 我們泱泱大國(guó)。
       我,我把我的程序整理了一遍,加了注釋,打成工具包。
       我,制定了一份偉大的、可持續(xù)使用的、為別人打工的工作計(jì)劃(三的計(jì)劃)。
    posted @ 2006-02-05 21:45 nake 閱讀(302) | 評(píng)論 (0)編輯 收藏
    在http://www.mysql.com/ 下載Query Browser
    運(yùn)行時(shí)需要
    libstdc++.so.5
    原來(lái)它藏在
    compat-libstdc++-8-3.3.4.ix86_64.rpm
    找了我超過(guò)4個(gè)小時(shí)。在http://download.fedora.redhat.com/pub/fedora/linux/core/4/x86_64/os/Fedora/RPMS/找到,需要下載下來(lái)然后
    rpm -ivh
    compat-libstdc++-8-3.3.4.ix86_64.rpm
    當(dāng)然在這之前可能要chmod -R 755
    compat-libstdc++-8-3.3.4.ix86_64.rpm
    posted @ 2006-01-27 03:01 nake 閱讀(315) | 評(píng)論 (0)編輯 收藏

    原文來(lái)自http://fanqiang.chinaunix.net/app/web/2005-08-30/3548.shtml

    Linux+Apache+Mysql+PHP典型配置

    作者:張微波 來(lái)源:5ilinux


     


     

    Linux+Apache+Mysql+PHP典型配置

    調(diào)試環(huán)境:Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4 Linux系統(tǒng)的安裝我就不講了,這是基本功,其實(shí)這篇文章在類似Redhat的其他linux也應(yīng)該通用,大家只要掌握我提供的方法就行。記得安裝 Redhat9。0的時(shí)候不要安裝系統(tǒng)默認(rèn)的apache,mysql和php以及相關(guān)的軟件。已經(jīng)安裝的請(qǐng)用rpm -e * 刪除已經(jīng)安裝的包。

    1.安裝Mysql3.23.58

    其實(shí)老實(shí)說(shuō)直接安裝Mysql官方網(wǎng)站提供的rpm包也是一個(gè)比較可行的辦法,他的官方網(wǎng)站的rpm包的提供基本跟tar包發(fā)行是同步的,這點(diǎn)我比較喜歡,至少安裝rpm包的在后面的調(diào)試中不會(huì)出現(xiàn)mysql庫(kù)文件找不到的情況。但這里還是有必要講一下自定義安裝的步驟,畢竟網(wǎng)友自定義安裝的還說(shuō)挺多的。

    軟件獲?。篬url]http://www.mysql.com/downloads/index.html[/url]

    安裝步驟:


    tar zxvf mysql-3.23.58.tar.gz
    cd mysql-3.23.58
    ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
    make
    make install
    #prefix=/usr/local/mysql mysql安裝的目標(biāo)目錄
    #sysconfdir=/etc my.ini配置文件的路徑
    #localstatedir=/var/lib/mysql 數(shù)據(jù)庫(kù)存放的路徑
    安裝完以后要初始化數(shù)據(jù)庫(kù),當(dāng)然你是升級(jí)的話不用做這步;
    /usr/local/mysql/bin/mysql_install_db
    如果系統(tǒng)沒(méi)有mysql這個(gè)用戶的話,最好做以下這步:
    useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql
    然后我啟動(dòng)mysql
    /usr/local/mysql/bin/safe_mysqld

    ok,先看看mysql能否正常工作
    mysql -uroot mysql

    一般情況下都是不能正常鏈接數(shù)據(jù)庫(kù),錯(cuò)誤提示一般為:

    ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    其實(shí)網(wǎng)上大家問(wèn)的最多的都是整個(gè)問(wèn)題,說(shuō)什么鏈接不到mysqld.sock,其實(shí)大家不妨看看mysql的錯(cuò)誤日志就明白怎么回事,我這里的錯(cuò)誤日志是在/var/lib/mysql/*.err.

    你會(huì)發(fā)現(xiàn)mysql只所以不能啟動(dòng),是因?yàn)?var/lib/mysql的權(quán)限不允許mysql服務(wù)訪問(wèn),英文mysql默認(rèn)是調(diào)用mysql用戶來(lái)啟動(dòng)服務(wù)的,好了,既然知道是什么原因找到不能啟動(dòng),那就簡(jiǎn)單了。我們只要chown -R mysql:mysql /var/lib/mysql就行,如果還是啟動(dòng)不了,再慢慢調(diào)試權(quán)限,反正一般啟動(dòng)不了都是權(quán)限的問(wèn)題。

    如果大家還是不能啟動(dòng)不了的話,那就用我的比較繁瑣的權(quán)限的設(shè)置,反正我每次都是這么做的,一般不會(huì)有問(wèn)題,見下:

    chown -R root /usr/local/mysql
    chgrp -R mysql /usr/local/mysql
    chown -R root /usr/local/mysql/bin
    chgrp -R mysql /usr/local/mysql/bin
    chgrp -R mysql /var/lib/mysql
    chmod 777 /var/lib/mysql
    chown -R root /var/lib/mysql/mysql
    chgrp -R mysql /var/lib/mysql/mysql
    chmod 777 /var/lib/mysql/mysql
    chown -R root /var/lib/mysql/mysql/*
    chgrp -R mysql /var/lib/mysql/mysql/*
    chmod 777 /var/lib/mysql/mysql/*
    chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a

    做完上面的步驟,然后把你編譯目錄的一個(gè)腳本COPY過(guò)去

    cp support-files/mysql.server /etc/rc.d/init.d/mysqld chkconfig --add mysqld 用ntsysv設(shè)置使mysql每次啟動(dòng)都能自動(dòng)運(yùn)行。

    好了,至此mysql安裝完畢,你可以這樣起動(dòng)你的mysql服務(wù)

    /etc/rc.d/init.d/mysqld start

    下面這步比較關(guān)鍵:

    ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
    ln -s /usr/local/mysql/include/mysql /usr/include/mysql
    大家可以不做這步,大可以在編譯其他軟件的時(shí)候自定義myslq的庫(kù)文件路徑,但我還是喜歡把庫(kù)文件鏈接到默認(rèn)的位置,這樣你在編譯類似PHP,
    Vpopmail等軟件時(shí)可以不用指定mysql的庫(kù)文件地址。

    2.安裝Apache1.3.29。

    我沒(méi)有選擇安裝Apache2.0是我對(duì)他還是不放心,因?yàn)榫W(wǎng)上最新公布的apache的漏洞基本上是針對(duì)2.0,當(dāng)然大家可以自己選擇安裝相應(yīng)的版本。我這里講的都是采用DSO動(dòng)態(tài)編譯的方法編譯Apache.

    tar zvxf apache_1.3.29.tar.gz
    cd apache_1.3.29
    修改src/include/httpd.h 增大最大線程數(shù)
    #define HARD_SERVER_LIMIT 256
    改成
    #define HARD_SERVER_LIMIT 2560
    保存退出編譯apache
    ./configure
    --prefix=/usr/local/apache
    --enable-module=so
    --enable-module=rewrite
    --enable-shared=max
    --htdocsdir=/var/www &&
    make &&
    make install



    # 這里我們通過(guò)enable-module參數(shù)告訴設(shè)置腳本,我們需要啟動(dòng)so和rewrite模塊,so模塊是用來(lái)提DSO支持的apache核心模塊,而rewrite模塊則是用意實(shí)現(xiàn)地址重寫的模塊,由于rewrite模塊需要DBM支持,如果在初次安裝時(shí)沒(méi)有編譯進(jìn)apache,以后需要用到時(shí)需要重新編譯整個(gè)apache才可以實(shí)現(xiàn)。為此除非你可以確定以后不會(huì)用到rewrite模塊,否則還是建議你在第一次編譯的時(shí)候把rewrite 模塊編譯好。

    enable-shared=max

    這個(gè)參數(shù)的作用時(shí)編譯apache時(shí),把除了so以外的所有apache的標(biāo)準(zhǔn)模塊都編譯成DSO模塊。而不是編譯進(jìn)apache核心內(nèi)。

    好了安裝apache很簡(jiǎn)單的哦,啟動(dòng)apache看看

    /usr/local/apache/bin/apachectl start

    然后用ie看[url]http://你的服務(wù)器地址。應(yīng)該能看到熟悉的apache羽毛標(biāo)志。[/url]

    3.安裝PHP4.3.4 軟件獲?。篬url]http://www.php.net/downloads.php[/url]

    tar zvxf php-4.3.4.tar.gz
    cd php-4.3.4
    ./configure \
    --prefix=/usr/local/php \
    --with-mysql=/usr/local/mysql \
    --enable-force-cgi-redirect \
    --with-freetype-dir=/usr \
    --with-png-dir=/usr \
    --with-gd --enable-gd-native-ttf \
    --with-ttf \
    --with-gdbm \
    --with-gettext \
    --with-iconv \
    --with-jpeg-dir=/usr \
    --with-png \
    --with-zlib \
    --with-xml \
    --enable-calendar \
    --with-apxs=/usr/local/apache/bin/apxs
    make
    make install



    # 我這里由于服務(wù)器需要用到GD庫(kù),所以加了一些支持GD的編譯參數(shù),GD直接用了redhat自帶的GD庫(kù),大家沒(méi)有安裝的話可以從安裝盤安裝,注意除了安裝GD以外,還要安裝libjpeg,libpng等庫(kù)文件。另外--with-mysql=/usr/local/mysql指向你安裝 mysql的路徑。--with-apxs指向apache的apxs文件的路徑。

    vi /usr/local/apache/conf/httpd.conf
    查找<IfModule mod_mime.c>
    在此范圍添加
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    然CPOPY PHP的配置文件
    cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
    修改php.ini文件
    register_globals = On
    ok!重新啟動(dòng)一下apache服務(wù)器
    /usr/local/apache/bin/apachectl restart
    然后寫個(gè)php測(cè)試頁(yè)info.php:內(nèi)容如下
    <?php
    phpinfo();
    ?>

    正常的話,應(yīng)該能看到php的信息了,恭喜你的Apche+Mysql+PHP安裝成功。

    posted @ 2006-01-26 20:22 nake 閱讀(541) | 評(píng)論 (0)編輯 收藏

    讓Linux的中文字變得清晰--一個(gè)超級(jí)簡(jiǎn)單的方法

        Fedora中的中文字體是模糊的,總有種霧里看花的感覺(jué),看久了眼鏡很不舒服。網(wǎng)上也有很多方法將字體改得清晰?;旧隙际菑膚indows中拷了 simsun字體后,再修改好幾個(gè)配置文件。往往會(huì)改得很郁悶,還一個(gè)不小心打錯(cuò)幾個(gè)字母,字體就變?yōu)槟J(rèn)的很難看的仿宋體。
        自己也郁悶了好久之后,網(wǎng)上看了一篇很強(qiáng)的方法,超級(jí)簡(jiǎn)單,又很實(shí)用:

    1:進(jìn)入下面的文件夾
     [root@S01 ~]#cd /usr/share/fonts/chinese/TrueType 
    2:刪除:gkai00mp.ttf/gbsn00lp.ttf/bsmi00lp.ttf/bkai00mp.ttf四個(gè)字體文件
    [root@S01 ~]#rm -rf gkai00mp.ttf gbsn00lp.ttf bkai00mp.ttf bsmi00lp.ttf
    3:將simsun.ttc重命名為:gkai00mp.ttf和bkai00mp.ttf,并放到/usr/share/fonts/chinese/TrueTypa下

    這樣重啟一下就OK了,怎么樣,簡(jiǎn)單吧

    simsun.ttc可以在windows中的%systemroot%windows/Fonts文件夾下拷貝。

    在linux 中設(shè)置java的環(huán)境
    vi /etc/profile.d/java.sh
       這樣可以在所有的用戶中使用
       在新的java.sh中輸入以下內(nèi)容:

    #set java environment
    JAVA_HOME=/usr/java/jdk1.5.0_06
    CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH


    posted @ 2006-01-26 08:42 nake 閱讀(408) | 評(píng)論 (0)編輯 收藏
     畢業(yè)后就沒(méi)用linux了,今晚裝了Fedora4  64位的.感覺(jué)一般.redhat5的時(shí)候我就稍微用過(guò).不過(guò)安裝過(guò)程很快提示是15分鐘.我裝了4G的數(shù)據(jù).裝完后就啟動(dòng) eclipse3.1.0M6.死機(jī),重起,再啟動(dòng),還死機(jī). 郁悶!不過(guò)adsl很容易設(shè)置.啟動(dòng)IM,不錯(cuò)雖然和m s n 的樣子不一樣但是還是可以用.
    posted @ 2006-01-20 01:40 nake 閱讀(283) | 評(píng)論 (2)編輯 收藏



    今天坐車回來(lái)突然有個(gè)想法,我把它記錄下來(lái)。
    在廣州上下班時(shí)間主要交通路線一定會(huì)塞車,而且通常是沒(méi)有交通意外,紅綠燈沒(méi)壞,交警們還在的情況下發(fā)生。部分原因是因?yàn)閺V州的主要商業(yè)區(qū)比較集中,市民的居住地也集中在幾個(gè)方向,這樣一來(lái)就會(huì)出現(xiàn)上下班時(shí)間集中在某個(gè)方向的車道塞車,而相反方向的車道卻被閑置著。

     給公路局的建議.gif
    但是如果把道路的設(shè)施稍微改動(dòng)一下。比如現(xiàn)在道路之間是用花圃、欄桿或者雙黃線隔開的。這有可能會(huì)美化道路,但是卻不能給市民帶來(lái)方便。如果我們把花圃、欄桿拆掉,把黃線給抹掉,用埋在道路表面的燈來(lái)代替。
    給公路局的建議2.gif

    如上圖 1,2,3 分別代表埋在路表面的黃燈 平時(shí)默認(rèn)2亮,在出現(xiàn)塞車時(shí)可以靈活的調(diào)整1,3燈是否為亮。通過(guò)調(diào)整塞車車道的寬度來(lái)緩解廣州的路況。我覺(jué)得是可行的辦法。
    1.從分利用了道路資源,不會(huì)出現(xiàn)一邊道路緊張一邊卻被閑置。
    2.在路表鋪上路燈的成本比每天塞車的成本低(我沒(méi)調(diào)查過(guò))
    但是還是會(huì)面臨各種問(wèn)題
    1.沒(méi)有相關(guān)法規(guī)規(guī)定,路表的指示燈可以作為指揮交通。
    2.即使有相關(guān)法規(guī)出臺(tái)。廣州的司機(jī)大老會(huì)買單嗎?誰(shuí)來(lái)監(jiān)管。
    3.即使可以通過(guò)電子眼來(lái)監(jiān)管司機(jī)。指示燈誰(shuí)來(lái)控制?如何控制燈亮燈滅。會(huì)出現(xiàn)車開到一半車道變窄的情況,車卻開到了相反方向。
    4.其實(shí)控制燈亮燈滅技術(shù)上計(jì)算機(jī)是可以實(shí)現(xiàn)的。
    posted @ 2006-01-17 21:39 nake 閱讀(1097) | 評(píng)論 (10)編輯 收藏

       今天運(yùn)氣不錯(cuò),一到車站就能上車,有位置坐,開了幾個(gè)站都沒(méi)有老太太上車。今天司機(jī)開車想瘋了一樣把車開得很快。也許現(xiàn)在很晚了吧。工作到了收尾階段,不是很忙了,我還是晚回。也許我是習(xí)慣了吧。我習(xí)慣下班后修改一些bug或者優(yōu)化程序,這樣我能夠靜下心來(lái)。我該改改我的習(xí)慣了。
       今天看了一篇文章,讓我想起了老子說(shuō)的信言不美,美言不信。善者不辯,辯者不善。知者不博,博者不知。意思是說(shuō),自己可以相信的、對(duì)自己真正有益的話不會(huì)好聽,但阿諛?lè)畛械暮寐犜捛f(wàn)不可以相信......

      

    posted @ 2006-01-10 22:54 nake 閱讀(356) | 評(píng)論 (2)編輯 收藏

    線程池的體驗(yàn),這里是簡(jiǎn)單的例子,不解釋了,只能意會(huì)不能言傳。

     

    //第一個(gè)類
    package thread;
    import java.util.LinkedList;


    public class ThreadPool {
      private LinkedList tasks = new LinkedList();

      public ThreadPool(int size) {
        for (int i = 0; i < size; i++) {
         System.out.println("new");
          Thread thread = new ThreadTask(this);
          thread.start();
        }
      }

      public void run(Runnable task) {
       System.out.println("run0");
        synchronized (tasks) {
          tasks.addLast(task);
          tasks.notify();
        }
      }

      public Runnable getNext() {
        Runnable returnVal = null;
        synchronized (tasks) {
          while (tasks.isEmpty()) {
            try {
             System.out.println("waiting");
             Thread.sleep(1000);
              tasks.wait();
              System.out.println("waited");
            } catch (InterruptedException ex) {
              System.err.println("Interrupted");
            }
          }
          returnVal = (Runnable) tasks.removeFirst();
        }
        return returnVal;
      }

      public static void main(String args[]) {
        final String message[] = { "zgw", "nake", "sunny", "piao" };
        ThreadPool pool = new ThreadPool(message.length / 1);
        for (int i = 0, n = message.length; i < n; i++) {
          final int innerI = i;
          Runnable  runner = new Runnable() {
            public void run() {
              for (int j = 0; j < 25; j++) {
                System.out.println("j: " + j + ": " + message[innerI]+"   "+innerI);
              }
            }
          };
         
         pool.run(runner);
        }
      }
    }
    //---------------------

    第二個(gè)類
    package thread;
    import java.util.LinkedList;

    class ThreadTask extends Thread {
      private ThreadPool pool;

      public ThreadTask(ThreadPool thePool) {
        pool = thePool;
      }

      public void run() {
        while (true) {
         System.out.println("gogogo");
          // blocks until job
          Runnable job = pool.getNext();
          try {
            job.run();
          } catch (Exception e) {

            System.err.println("Job exception: " + e);
          }
        }
      }
    }

    posted @ 2006-01-08 22:58 nake 閱讀(287) | 評(píng)論 (0)編輯 收藏
    <2006年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(18)

    我參與的團(tuán)隊(duì)

    隨筆檔案(39)

    收藏夾(1)

    搜索

    •  

    積分與排名

    • 積分 - 451258
    • 排名 - 119

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 99精品视频在线观看免费播放| 国产特级淫片免费看| 亚洲爆乳无码一区二区三区| 特级毛片在线大全免费播放| 青青草国产免费久久久91| 亚洲欧洲无码AV不卡在线| 全免费一级毛片在线播放| 亚洲a∨无码一区二区| 国产成人免费a在线视频色戒| 豆国产96在线|亚洲| av无码东京热亚洲男人的天堂| 亚洲avav天堂av在线网毛片| 亚洲黄片毛片在线观看| 精品久久久久久无码免费| 亚洲成色在线综合网站| 亚洲视频免费播放| 亚洲色大成网站www久久九| 尤物永久免费AV无码网站| 成人嫩草影院免费观看| 亚洲av伊人久久综合密臀性色| 亚洲黄色片免费看| 亚洲av永久无码| 亚洲中文字幕无码一区| 13一14周岁毛片免费| 亚洲国产精品成人午夜在线观看| 免费国产综合视频在线看| a级男女仿爱免费视频| 亚洲剧情在线观看| 国产传媒在线观看视频免费观看| 久久久免费观成人影院| 亚洲va在线va天堂va四虎| 国产h视频在线观看免费| 边摸边吃奶边做爽免费视频99| 亚洲国产精品va在线播放| 1024免费福利永久观看网站| 国产精品亚洲精品日韩电影| 亚洲AV无码乱码在线观看富二代 | 亚洲AV无码成人专区片在线观看| 免费无码一区二区三区| 男女猛烈xx00免费视频试看| 亚洲AV成人精品网站在线播放 |