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

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

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

    Luben Park

    Java Ben 成長之路

    #

    如何通過Goool查找專業文獻資料

    如何通過Goool查找專業文獻資料
    轉自:http://www.readfree.net/html/200512/122142.html


    第一講
    推薦先讀讀google從入門到精通等文章.
    我們了解常規搜索方式,但每個人都會搜索出不同結果,為什么?核心問題在于關鍵詞選擇不同。
    關鍵的分析必須保證兩點:
    一是專業性,即這個詞是很精的,可能蚧愕乃閹鶻峁蚨噬踔量梢怨忠壞悖×勘苊獯籩諢拇剩鏽et,site等。即使需要大眾化詞,如password,username,但若加入一兩個特征詞,則結果將大大簡化。
    二是具有代表性,也即這個詞具有代表意義,也即它在包含你所需網頁內,它在出現的可能,以免一些有用信息被遺漏。
    如何達到上述兩個要求?我們必須分析網頁中字詞出現的特點,以及本學科專業詞匯特征。

    大家看看yahoo,google等medicine和science--biology條目下的分類,發現許多相關的詞均在內,如
    http://libinfo.uark.edu/eresources/eresources.asp
    醫學有關的都在Science & Technology 大條目下,又細分為:
    Agriculture & Food | Biology | Botany | Chemistry | Computer Science | Engineering | Environmental Dynamics | Geology | Kinesiology | Mathematics | Medicine | Nursing | Physics | Psychology | Statistics | Zoology。
    因此如果僅以medicine檢索,就會漏掉不少很有價值的信息,特別是漏掉的專業的。
    其次,在medicine下又有很多數據庫,如:EBSCO OVID,PROQUEST還有各大出版社自己的萬能密碼。

    第二講
    主要講定點搜索和遍搜索的區別及應用。
    所謂定點搜索,即指定找某個數據庫相關信息,或某篇文章。
    遍搜索是指在網上任意逛逛,找些pswd,或者無心插柳柳成蔭。
    (1)定點數據庫和期刊搜索。還是同第一講一樣,主要分析關鍵詞的選擇。當然關鍵詞之一是這個數據庫的名稱。大家注意了:數據庫名稱一定要用全稱和簡稱都試試。
    關鍵詞之二是free,ID,password,user name。
    為什么這個關鍵詞?其實這些只能稱作是一個關鍵詞,因為它們具有同性或不相容性。如elservier數據庫,你最好不要用username和password,因為它主要是采用IP限制的。因而你的重點放在pxory!而不是上述的任何一個。而找某一雜志,則多用user name 和ID/password合用(注:ID/password只可用一個!),因為雜志往往個人購買,便擁有帳號了。
    關鍵詞三:這些數據庫可能出現的地方?大學圖書館最多!即使是雜志,圖書館也較個人帳號多。那么圖書館主頁上有哪些關鍵詞?library,database,trial,free....,可看看國內一些圖書館的主頁,仔細分析比較,便能找到一些共性的東西。
    (2)定點文章搜索。
    文章,在國外通用PDF格式,因而文章搜索必須用PDF這個核心內容。即找后綴為PDF的東東,語法:filetype:PDF 這是關鍵之一
    關鍵詞之二:找你所需文章的題或文摘中最怪的詞!而不是常用詞。(不要用很專業的詞往往能找到相近的文章,所謂無心插柳了)
    命中率高,但最好是題目中出現的詞,為什么?因為往往許多個人站點收錄了不少文章,而這些文章往往是以題目名稱作為索引的。
    第三講
    專業文獻搜索技巧

    1 查找某本專業刊物的登錄密碼,如Brain Res
    首先選關鍵詞:雜志名(Brain Res),登錄(sign in),密碼(password)
    這樣成功率并不高,其實細細看來,不應有登錄,因為許多提供密碼的地方,并不出現登錄這個詞,而多出現用戶名(user name),而且雜志名多用全稱(brain research),再試試!哦,成功了!
    2 查找某篇文章的全文,尤其是外文文獻,許多全文服務均需收費。
    當然可先按第一種方法搜索一下,看看有無密碼可尋,若無,則找到該篇文章的特殊字段(key words),然后搜索PDF文件。不過這有幾個條件,一是該雜志確已上網,有明確地址,其二,一般需在1997年以后文獻才可。
    舉例:Gattullo D, Pagliaro P, Marsh NA, Losano G。New insights into nitric oxide and coronary circulation.Life Sci 1999;65(21):2167-74。
    這篇文章是收費的。采用:inurldf:Gattullo Pagliaro coronary,結果24項,找到其中的第2頁,有下面一項Life Sciences [Volume 65, Issue 21, Pages 2167-2268 (1999)]
    ... 1. New Insights into Nitric Oxide and Coronary Circulation, Pages
    2167-2174 D. Gattullo, P. Pagliaro, NA Marsh and G. Losano 2. ...
    147.46.94.112/journal/sej/j_l/l339.htm - 14k - 網頁快照 - 類似網頁
    打開網頁快照,第一篇即是其目錄,下載即可!OK!成功

    2 查找專業軟件的破解軟件或注冊碼
    常規軟件的注冊碼很好找,但專業軟件太少,而且注冊碼也少,破解更少,如何找?
    如找origin 6.1版的破解版,或注冊碼。不管采用網易、搜狐等軟件搜索,均找不到該軟件。那么只好借用特殊搜索了。
    分析:一般有些破解軟件的頁面一般至少有以下一些信息:軟件名稱,版本,序列號(serial number, OR sn),破解(crack, OR CRK),提供下載的地方有.ZIP字樣(壓縮文件為多)。為了方便起見,也防止版本太精確反而不易搜索的特點,在googlek 輸入
    origin 破解, 哦!OK!成功!如果其它的軟件一次搜索的結果太多的話,則考慮加6.1以減小其搜索范圍。或搜索結果太少且不是需要的話,將破解換為"注冊碼"試試,一般效果不錯。
    3 查找中文文獻的免費全文
    如我知道重慶維普提供免費全文服務,但目前許多站點都不能用了。另外,還有萬方數據庫、CNKI也提供,那么我如何查到這些數據庫的免費入口呢?
    這需要一定的技巧,采用google或百度試試:輸入:重慶維普 密碼
    哦!66項!仔細找一找,必有結果!OK!

    第四講
    這一講講百度與google比較
    搜索英文不必說用google,搜索中文呢?
    很多人并不了解它們更新的情況,google發展早,因而它貯存了大量舊的信息,百度發展遲,信息較新。
    更新速度:對中文google一般半月至一月一更新,而且僅搜索到三級鏈接,三級以下便不在搜索,那么我如何看到最新的google搜索的結果呢?這個站點:
    http://www3.google.com/,可見google采用不同服務器逐步更新的。百度的更新較快,半月一次,最快一周。那么如何衡梁這半月與一月的差劇與價值?
    對于一些試用數據庫,有效期短,或象萬方等一月一換密碼,最好選用百度,現在維普老是打一槍換一個地方,因而也只好用百度了,google往往搜索出來的結果已過期了。而能長期使用的密碼或數據庫,一般象國外的(國內有沒有,我真不知道),最好用google,畢竟技術更老道一些,搜索出的結果更多,更廣!

    第五講
    關于關鍵詞
    關鍵詞組合:
    nurse journal password
    new medicine password
    What's New medicine password
    périodiques électroniques password( 注意了,不是英文字母樣!)
    biomedical library password
    LWW Journal Collection password
    Bibliotekets databaser password
    Kluwer Online password
    journalwebsite password
    基本路子仍是數據庫+password+補充性關鍵詞(或稱定向性關鍵詞)
    所謂定向性關鍵詞是將你的檢索范圍定于某一可能的區域,如圖書館、個人站點,以縮小檢索范圍。如單個雜志,可定位于個人,若是數據庫檢索,則宜加library,因為個人是不會買數據庫的。
    同時另一個定向是生物和醫學,所用的關鍵詞medicine,biology,biomed.
    當然仍可加第三定向關鍵詞,如雜志(journal)、免費(free)、在線(online),但一定要注意第三關鍵詞的特征性不強,要選擇使用,不可過用,否則會將一大批可能有用的站點排除掉,切記!
    但這主要針對國外的,而國內的一般多在各大學圖書館內,常用密碼、免費、雜志、數據庫名等搜索,效果較好。
    但對于有些雜志,如sciencedirect,Ideallibrary多采用IP驗證方式,一般密碼并不能用,這時多采用代理服務器方式,因而如何找到有效的代理太重要的。如清華的elsevier便是代理。

    第六講
    本講講關鍵詞聯合使用。
    國內圖書館提到數據庫往往只提***數據庫,而國外圖書館多列出該數據庫內各種雜志名,而且多按字母分類。因而為了提高檢索的準確率,一般將同一數據庫內的雜志的首字母相同的雜志名用兩到三個聯合搜索,再結合前面講的加用其它關鍵詞,能有效縮小檢索范圍,翕中率極高。從這里可以看到,如果透徹分析一些圖書館內主頁設計的特征,是搜索的關鍵。
    如檢索brain research,可列出brain research bulltin,同時檢索,效果要好些。

    第七講
    搜索代理服務器技巧:
    中文:
    代理 維普(或其它數據庫名) 數據庫,能找到一些,但國內一般真正使用代理的較少。
    英文:
    proxy 數據庫名 IE netscape
    效果非常好,但一定要注意,許多地方不僅用代理服務器,而且需密碼認證,不可過于樂觀!應認真鑒別。

    第八講
    找特定文件名的文件,尤其是PDF、ZIP、DOC、TXT、RAR、EXE、RM、Mp3,MOV這些文件名都是大家想找的重點,至于各是什么類型文件,請上網查一下便知道了,這里不多說了。
    方法是利用語法filetype:后綴名。
    如找PDF文件,在正常關鍵詞后面加filetype:PDF即可,搜索結果全是PDF文件。這是我寫的另一篇,可參考:
    http://bbs.bioon.com/bbs0/dispbb ... D=839&ID=839&page=1
    找特定題目的網頁語法intitle:網站
    查找友情鏈接:
    "link:"(英文單字link后加冒號)用于搜索鏈接到某個URL地址的網頁。可以了解有哪些網頁把鏈接指向您的網頁
    查找特定站點:
    site:www.*.com
    如 金庸 古龍 site:sina.com.cn
    但不可加入http://或/這類,否則是錯的
    cache”用來搜索GOOGLE服務器上某頁面的緩存,通常用于查找某些已經被刪除的死鏈接網頁,相當于使用普通搜索結果頁面中的“網頁快照”功能。

    示例:查找GOOGLE緩存的中文yahoo首頁
    搜索:“cache:www.yahoo.com.cn

    info用來顯示與某鏈接相關的一系列搜索,提供cache、link、related和完全包含該鏈接的網頁的功能。

    示例:查找和新浪首頁相關的一些資訊。
    搜索:“info:www.sina.com.cn
    結果:www.sina.com.cn的網頁信息。

    示例:查找美國教育網上的宇宙大爆炸jpg圖片
    搜索:“BIG BANG filetype:jpg site:edu”
    結果:搜索有關 BIG BANG filetype:jpg site:edu 的圖片

    第九講
    專講一個特殊語法,很有用。inurl
    “inurl”語法返回的網頁鏈接中包含第一個關鍵字,后面的關鍵字則出現在鏈接中或者網頁文檔中。有很多網站把某一類具有相同屬性的資源名稱顯示在目錄名稱或者網頁名稱中,比如“MP3”、“GALLARY”等,于是,就可以用INURL語法找到這些相關資源鏈接,然后,用第二個關鍵詞確定是否有某項具體資料。INURL語法和基本搜索語法的最大區別在于,前者通常能提供非常精確的專題資料。

    示例:查找MIDI曲“滄海一聲笑”。
    搜索:“inurl:midi 滄海一聲笑”
    結果:已搜索有關inurl:midi 滄海一聲笑的中文(簡體)網頁。
    示例:查找微軟網站上關于windows2000的安全課題資料。
    搜索:“inurl:security windows2000 site:microsoft.com”
    結果:已在microsoft.com內搜索有關inurlecurity windows2000 的網頁。
    注意:“inurl:”后面不能有空格,GOOGLE也不對URL符號如“/”進行搜索。例如,GOOGLE會把“cgi-bin/phf”中的“/”當成空格處理。
    而一般眾多密碼或數據庫往往出現在鏈接之中,如查Ideallibrary
    inurl;ideallibrary proxy passowrd(ID)

    “allinurl”語法返回的網頁的鏈接中包含所有作用關鍵字。這個查詢的關鍵字只集中于網頁的鏈接字符串。

    示例:查找可能具有PHF安全漏洞的公司網站。通常這些網站的CGI-BIN目錄中含有PHF腳本程序(這個腳本是不安全的),表現在鏈接中就是“域名/cgi-bin/phf”。
    語法:“allinurl:"cgi-bin" phf +com”
    搜索:已向英特網搜索allinurl:"cgi-bin" phf +com. 共約有37項查詢結果,這是第1-10項 。 搜索用時0.36秒。

    第十講
    代理:
    國外的數據庫,許多需代理,如何搜索到?普通的代理遍地都是,只要用google輸入proxy free或代理服務器 免費就能搜索到非常多的代理,但這些代理并不適用于查閱一些著名數據庫,好么如何找到?一般有以下幾點技巧,我并作簡要分析:
    由于這些代理必須要出現于大學內。
    (1)因而如果采用普通的免費代理,則必須保證這種代理在某個大學,這可通過代理測得,其中無特別的技巧。可見下面一個代理服務器帖子的說明
    (2)如果要搜索,則應該將代理服務器限制于大學內,因而其搜索格式應該如下:
    proxy 數據庫名 site:edu
    這是標準格式,搜索的數據庫較多,但一定注意并不等于搜索出的代理都有用,有些代理還需密碼支持,仔細判定。
    其它類似可選關鍵詞也列一些,與上述核心關鍵詞適當組合便可,提高搜索準確率:
    Off-Campus:能提高無密碼搜索成功率
    netscape:能提高準確率
    第十一講
    用google查密碼。大多數人用google,仍未能對google有深入地了解。往往用google搜索出大量密碼,一用才知道都過期了,尤其是中文的密碼,現在更新極度頻繁,如何能查到最新的密碼很重要。在前面幾講我講過百度的更新較google快,然而百度對鏈接分析能力較google差,google能分析到下四層鏈接,而百度可能只能至第三層,而往往密碼出現的位置:大學主頁--圖書館---電子數據庫---某些數據庫密碼,從這個分析可以看到,許多密碼都出現在主頁的第四層下面,百度往往搜索不到(當然第三層也有很多,這是百度長處之一)。因而搜索中文密碼google仍很重要,那么如何用最新的google?google的中文數據庫一月一更新(太慢了,英文的一天一更新),但 google在全球有數千臺服務器,它們對各種語種更新的速度是不同的。并且更新方式采用梯度更新,即先更新某些服務器,后來全面更新。因而我們能利用google最新的服務器搜索,而 goole最新服務器的鏈接在這里:
    http://www3.google.com.

    posted @ 2005-12-20 18:04 Ben 閱讀(611) | 評論 (0)編輯 收藏

    Jsp如何實現網頁的重定向

    轉自  豆豆技術網
    1.可以使用:

      response.sendRedirect("http://www.foo.com/path/error.html");

      2.可以手工修改HTTP header的Location屬性,如下:

    <%
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    String newLocn = "/newpath/index.html";
    response.setHeader("Location",newLocn);
    %>

      3.也可以使用forward:

      <jsp:forward page="/newpage.jsp" />

      請注意:只能在任何輸出還沒有發送到客戶端之前使用這種方式。

      5.6 類似global.asa的做法

      在JSP中沒有global.asa的對應物。但可以有一個workaround來運行。例如,如果你需要存儲或存取application scope變量,你總是可以創建一個Javabean,并在頁面中需要這些變量的地方將它包含進來。

    <jsp:useBean id="globals" scope="application" class="com.xxx.GlobalBean"/>

      但是,也有一些產品具有這樣的對應:

      Allaire公司的產品JRun 3.0將提供global.jsa。JRun 2.3.3仍然給予支持,但只對JSP 0.92。當JRun 3.0最終推出時它將支持用于JSP 1.0和1.1的global.jsa。

      你可以從http://beta.allaire.com/jrun30得到JRun 3.0 beta 5

      另外,Oracle的JSP支持globals.jsa。

      5.7 jsp顯示當前時間

    <%@ page import="Java.util.*, Java.text.*" %>
    <HTML>
    <HEAD>
    <TITLE>JSP to display the current time</TITLE>
    </HEAD>
    <BODY>
    The current time is:
    <%
    Date now = new Date();
    out.println(DateFormat.getTimeInstance().format(now));
    %>
    </BODY>
    </HTML>

      5.8在JSP中創建目錄 Mkdir(String path)

    <%@ page import="Java.io.*" %>
    <%!
    String Mkdir(String path)
    {
    String msg=null;
    Java.io.File dir;

    // 新建文件對象
    dir =new Java.io.File(path);
    if (dir == null) {
    msg = "錯誤原因:<BR>對不起,不能創建空目錄!";
    return msg;
    }
        if (dir.isFile()) {
        msg = "錯誤原因:<BR>已有同名文件<B>" + dir.getAbsolutePath() + "</B>存在。";
        return msg;
        }
        if (!dir.exists())
    {
        boolean result = dir.mkdirs();
            if (result == false) {
        msg = "錯誤原因:<BR>目錄<b>" + dir.getAbsolutePath() + "</B>創建失敗,原因不明!";
            return msg;
        }
       // 如果成功創建目錄,則無輸出。
        // msg ="成功創建目錄: <B>" + dir.getAbsolutePath() + "</B>";
        return msg;
        }
      else {
          msg = "錯誤原因:<BR>目錄<b>" + dir.getAbsolutePath() + "</b>已存在。";
        }
      return msg;
    }
    %>
    <%
    String filepath = "/usr/home/hoyi/html/dir";
    String opmsg = Mkdir(filepath);
    %>

      5.9將return 轉為<br>函數

    public static String returnToBr(String sStr)
    {
    if (sStr == null // sStr.equals(""))
    {
    return sStr;
    }

    String sTmp = new String();
    int i = 0;

    while (i <= sStr.length()-1)
    {
    if (sStr.charAt(i) == '\n')
    {
    sTmp = sTmp.concat("<br>");
    }
    else
    {
    sTmp = sTmp.concat(sStr.substring(i,i+1));
    }
    i++;
    }
    return sTmp;
    }

    posted @ 2005-12-20 14:26 Ben 閱讀(417) | 評論 (1)編輯 收藏

    Jsp 傳數組給Applet

    <body>
      <%
      String[] choosedlist = (String[])session.getAttribute("choosedlist");
      String curshowType = (String)session.getAttribute("LowORHigh");
            String curpicType = (String)session.getAttribute("type");
            //System.out.println("Movie" + curshowType + curpicType );
      //for(int i = 0; i<choosedlist.length; i++){
       //System.out.println(choosedlist[i]);
      //}
     %>
     
     <APPLET
     CODE = "cn.com.ztesoft.Animation.Animation.class"
     codebase = "."
     WIDTH = 740 
     HEIGHT = 400 
     NAME = "TestApplet" 
     ALIGN = middle 
     VSPACE = 0 
     HSPACE = 0>
     <%
     for (int a=0; a<choosedlist.length; a++)
     {%>
      <PARAM NAME = "paramA<%=a%>" VALUE = "<%=choosedlist[a]%>">
     <%}%>
     <PARAM NAME = "ParamNumber" VALUE = "<%=choosedlist.length%>">  
     <PARAM NAME = "curshowType" VALUE = "<%=curshowType%>">
     <PARAM NAME = "curpicType" VALUE = "<%=curpicType%>">
     </APPLET>   
     <a href="gms.jsp">返回</a>
      </body>

    posted @ 2005-12-20 14:12 Ben 閱讀(797) | 評論 (0)編輯 收藏

    SWT……內幕?

    注: 轉載至 JR  
    SWT……內幕?
    FooSleeper
    原文:
    http://groups.yahoo.com/group/straight_talking_java/
    http://groups.yahoo.com/group/straight_talking_java/messages/24236

    翻譯整理:FooSleeper
    最后修改:2004-03-03


    譯注:本文來自straight_talking_java@yahoogroups.com討論組,已經是一年多前的文章。Alan Williamson是Java Developers Journal的編輯,下文來自他在IBM的一個消息來源。SWT和Swing的論爭我見過不少,Netbeans和Eclipse的也同樣多。譯者翻譯此文并不是要激起什么爭執,也不是支持哪一方(雖然我的確是站在SWT一邊的),更不是要攻擊Amy。我最重要的理由是,這是一篇有趣的文章。里面有內幕、線人、公司政治、壟斷巨頭、美女、商界風云……足夠拍一出電影。有趣,這就夠了。不過此文反映了IBM對Swing的看法和SWT的由來,還是有一點營養的。

    From:  Alan Williamson <alan@n-ary.com>
    Date:  Wed Nov 6, 2002  10:31 am 
    Reply-To: <straight_talking_java@yahoogroups.com>
    To: <straight_talking_java@yahoogroups.com>
    Subject:  SWT ... the scoop?(SWT……內幕?)

    好了這就來……閱讀……消化……再閱讀……再消化……
    ;-) 

    --------------------------------
    謝謝你的回復。我很樂意給你提供Swing和SWT背后的一些信息,既然你還把我當作你秘密的“IBM內幕線人”。

    要想弄清楚為什么一切都被弄得如此混亂,要從幾年前只存在AWT的時候說起。SUN當時已經建立了一套基本的可移植控件類,這些類映射到不同操作系統上的原生窗口組件(native widget),顯然下一步應該繼續增強這套模型,除了初始的CUA 92組件(文字、按鈕等等),再繼續加上表格、樹、記事本、滑塊等等……當時的AWT還滿是漏洞,遠不能稱為可靠,還需要SUN的coder們去修補。SUN的developer們如Graham和Otto總是習慣于公開把他們的bug歸咎為操作系統的差異,比如“Windows和OS/2的焦點次序不同”或者“在……之間Ctrl-X的行為不一樣”,以及其他蒼白的托辭,好讓批評的火力從SUN太早釋出代碼這個問題的真相上移開。然后Amy Fowler來到了SUN。不是我大男子主義,Amy是個聰明的美女,大多數呆頭呆腦只懂技術的開發人員都要被她捏在手里。

    Amy來自一家Smalltalk公司,叫做Objectshare,在那里她負責搞UI類庫。跟Java相比Smalltalk的歷史有些悲慘,曾幾何時有3家龐大的Smalltalk公司——IBM、Parc-Place和Digitalk。在90年代初期3家公司的市場份額大致相等,生活是美好的。Parc-Place采用仿窗口部件(emulated widgets)的設計(即Swing的設計),IBM和Digitalk則采用原生窗口部件(native widgets)。后來IBM壓倒了另外兩家,因此他們打算合并成一家,假設叫做Parc-Place Digitalk。隨后當他們試圖將他們的產品融合到一個叫做Jigsaw的計劃中時爆發了一場大戰,計劃由于政治原因失敗了(開發人員實際上已經能讓它運轉起來),就因為原生和仿造兩派的死戰。Amy贏得了精神上的勝利,不過在IBM我們贏得了他們所有的生意,因為這兩家公司在一整年里除了吵架什么都沒做。當塵埃落定之后PPD(Parc-Place Digitalk當時已改名為Objectshare,跟Windscale改名為Sellafield的原因相同——讓人們淡忘之前發生的災難)的股票價格從60美元掉到了低于1美元1股。他們因為偽報收入被NASDAQ摘牌,從此消失。此時SUN正走上與PPD類似的技術方向,于是PDD的技術人員都把他們的簡歷投到了SUN。Amy被雇傭了,她承諾通過輕量級方案解決所有窗口組件的問題,因此說服SUN管理層讓她當了GUI開發部門的頭頭。她是拿著“這里原來的人都搞砸了,我是來解決的”的鑰匙進來的。隨后Amy雇傭了所有她過去在Parc-Place的舊朋友,讓他們來開發Swing。

    顯然Swing應該做的是僅僅成為一個繪制框架,給那些希望創建地圖軟件或者繪圖軟件的人們使用,無論如何,應該圍繞AWT類庫來建造它,按鈕之類的東西仍然交給AWT來管。SUN的人比如Philip和Mark已經讓AWT能夠處理表格、樹和記事本(notebook,?),所以Swing的方向應該說很明顯了。但那些毀了PDD的人不干,他們非要把一切都弄成輕量級的。由于SUN管理層的無知,再加上Amy無情的政治手段,造成了我們今天所見的混亂局面。Amy還使SUN相信Swing是作為Mozilla項目的一部分與Netscape聯合開發的,事實上這只是她的宣傳伎倆。

    在IBM,我們從第一天起就憎惡Swing。龐大、滿是錯誤,而且難看至極。原先我們的工具如VisualAge for Java都是用Smalltalk(用的是原生窗口組件)寫的,所以當我們將這些工具向Java代碼庫遷移時,我們需要一套窗口組件。IBM這邊的開發人員都是原來搞Smalltalk的那一批人,我們對管理層要求用Swing來構建WebSphere Studio工具都非常不情愿。Swing是個可怕的充滿缺陷的怪獸。在WebSphere Studio最初的預覽中,當與Microsoft Visual Studio作對比演示的時候,我們所有的客戶都討厭它,就因為它的外觀,而不管它的功能有多強。大多數消費者都不會買一輛讓人覺得難看的車,哪怕這車有一臺出色的引擎。因此我們開始了一個項目,是把我們的Smalltalk原生窗口組件移植到Java上去。這個項目是加拿大的Object Technology International小組做的。這個項目獲得了成功,被運用在在我們發布的VisualAge Micro Edition產品中,VisualAge Micro Edition后來成為J2ME開發方面一個非常成功的IDE。但是OTI的人發現,Swing在讀取Windows事件方面有極嚴重的缺陷,我們甚至無法進行SWT(S開始是Simple的縮寫,不過后來變成了Standard的縮寫)和Swing間的互操作。他們在讀事件隊列的時候用了一種可能留下內存漏洞的方式,所以我們不得不采用我們自己的查詢Windows事件隊列的循環,以糾正這個錯誤。我們試了一次又一次讓SUN修復這個錯誤,但Amy就是聽不進去,所以我們才決定SWT和AWT/Swing不能共存。我們甚至在SWT中定義了自己的Point和Rectangle類——整個工具包對AWT或Swing都沒有任何依賴。我們把這個工具包放到了Eclipse中,這是一個工具平臺,它的總體設計目標就是要戰勝Micrsoft和Visual Studio。Eclipse是開源的,所以任何人都可以在上面構建自己的東西,我們已經有像TogetherSoft和Rational這樣的公司移植到了上面。我們的競爭者是Microsoft,所以我們所有努力和注意力都是從正面針對Microsoft。

    不管怎么說SUN對此非常不滿。他們的Netbeans跟Eclipse做的是相同的事,因此他們向IBM高層抱怨。他們認為SWT是要將你綁到Windows上,這純粹是胡說,因為SWT能通過GTK在Mac/Linux上運行,以及一大堆嵌入式平臺。他們拒絕讓Eclipse獲得Java認證,因為里面有原生代碼,所以Eclipse產品必須很小心地使用單詞“Java”這個SUN的商標。Eclipse甚至不能把自己稱為一個Java IDE,SUN已經威脅過要采取法律行動來制止IBM在任何時候把Eclipse稱作一個Java IDE。結果之一就是IBM在Eclipse上創建的GUI設計工具,允許你構建Swing/AWT GUI,卻不讓你往里面拖放SWT窗口控件。

    將SWT從Eclipse中分離出來是完全可能的,只需要把DLL摳出來放到路徑中,并使用窗口組件工具包來給你的銀行或者保險或者其他什么應用程序開發GUI。再次說明,我們無法更進一步,因為SUN把我們的雙手綁上了。雖然作為Eclipse開放源碼協議的一部分,CPL允許我們提供這樣的解決方案,但SUN已經很清楚地表明他們不希望我們這樣做。

    對于用戶社區來說,無論IBM和SUN的最終動機是什么,我發現有一點總是很有趣:喜愛Swing的人總會說“一旦你花上幾年時間去掌握它,你就能正確地使用它”,這基本上是他們在試圖證明和維護他們辛苦得來的用途有限的專門技術;而SWT的擁護者們說的是“哇,這真快,這跟原生的一樣,還可以用XP皮膚……它還又輕又小”。有一句話是我喜歡的,我們的一個用戶說,Swing就像Java決定不通過操作系統來實現原生的IO,而是通過磁頭馬達API自己來讀磁盤的扇區。Swing基本上就是這樣的,它拿著個底層的“paint(Graphics)”方法,自己來繪制所有的窗口組件。
    --------------------------------

    后記:現在的情況已經有所不同,SWT到底還是單獨發布了,VE也承諾在1.0版的時候支持SWT的GUI設計。 

    posted @ 2005-12-12 18:23 Ben 閱讀(313) | 評論 (0)編輯 收藏

    .Net在SqlServer中的圖片存取技術 選擇自 kwklover 的 Blog

     

    本文總結如何在.Net Winform和.Net webform(asp.net)中將圖片存入sqlserver中并讀取顯示的方法
    1,使用asp.net將圖片上傳并存入SqlServer中,然后從SqlServer中讀取并顯示出來
    一,上傳并存入SqlServer
     數據庫結構
      create table test
      {
         id identity(1,1),
         FImage image
      }
      相關的存儲過程
      Create proc UpdateImage
      (
         @UpdateImage Image
      )
      As
      Insert Into test(FImage) values(@UpdateImage)
      GO

    在UpPhoto.aspx文件中添加如下:
    <input id="UpPhoto" name="UpPhoto" runat="server" type="file">
    <asp:Button id="btnAdd" name="btnAdd" runat="server" Text="上傳"></asp:Button>

    然后在后置代碼文件UpPhoto.aspx.cs添加btnAdd按鈕的單擊事件處理代碼:
    private void btnAdd_Click(object sender, System.EventArgs e)
    {
            //獲得圖象并把圖象轉換為byte[]
            HttpPostedFile upPhoto=UpPhoto.PostedFile;
            int upPhotoLength=upPhoto.ContentLength;
            byte[] PhotoArray=new Byte[upPhotoLength];
            Stream PhotoStream=upPhoto.InputStream;
            PhotoStream.Read(PhotoArray,0,upPhotoLength);

            //連接數據庫
            SqlConnection conn=new SqlConnection();
            conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

            SqlCommand cmd=new SqlCommand("UpdateImage",conn);
            cmd.CommandType=CommandType.StoredProcedure;

            cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
            cmd.Parameters["@UpdateImage"].Value=PhotoArray;

            //如果你希望不使用存儲過程來添加圖片把上面四句代碼改為:
            //string strSql="Insert into test(FImage) values(@FImage)";
            //SqlCommand cmd=new SqlCommand(strSql,conn);
            //cmd.Parameters.Add("@FImage",SqlDbType.Image);
            //cmd.Parameters["@FImage"].Value=PhotoArray;

     conn.Open();
     cmd.ExecuteNonQuery();
     conn.Close();
    }

    二,從SqlServer中讀取并顯示出來
    在需要顯示圖片的地方添加如下代碼:
    <asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>

    ShowPhoto.aspx主體代碼:
    private void Page_Load(object sender, System.EventArgs e)
    {
         if(!Page.IsPostBack)
         {
                    SqlConnection conn=new SqlConnection()
                    conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";
                   
                    string strSql="select * from test where id=2";//這里假設獲取id為2的圖片
                    SqlCommand cmd=new SqlCommand()
                    reader.Read();
                    Response.ContentType="application/octet-stream";
                    Response.BinaryWrite((Byte[])reader["FImage"]);
                    Response.End();
                    reader.Close();
         }
    }


    3,在winform中將圖片存入sqlserver,并從sqlserver中讀取并顯示在picturebox中

    1,存入sqlserver
    數據庫結構和使用的存儲過過程,同上面的一樣
     1.1,在窗體中加一個OpenFileDialog控件,命名為ofdSelectPic
     1.2,在窗體上添加一個打開文件按鈕,添加如下單擊事件代碼:
        Stream ms;
      byte[] picbyte;
      //ofdSelectPic.ShowDialog();
      if (ofdSelectPic.ShowDialog()==DialogResult.OK)
      {
       if ((ms=ofdSelectPic.OpenFile())!=null)
       {
        //MessageBox.Show("ok");
        picbyte=new byte[ms.Length];
        ms.Position=0;
        ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
        //MessageBox.Show("讀取完畢!");

        //連接數據庫
        SqlConnection conn=new SqlConnection();
        conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

        SqlCommand cmd=new SqlCommand("UpdateImage",conn);
        cmd.CommandType=CommandType.StoredProcedure;

        cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
        cmd.Parameters["@UpdateImage"].Value=picbyte;

        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

        ms.Close();
        }
       }

    2,讀取并顯示在picturebox中
     2.1 添加一個picturebox,名為ptbShow
     2.2 添加一個按鈕,添加如下響應事件:
          SqlConnection conn=new SqlConnection();
     conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

     string strSql="select FImage from test where id=1";

     SqlCommand cmd=new SqlCommand(strSql,conn);

     conn.Open();
     SqlDataReader reader=cmd.ExecuteReader();
            reader.Read();

     MemoryStream ms=new MemoryStream((byte[])reader["FImage"]);


     Image image=Image.FromStream(ms,true);

            reader.Close();
            conn.Close();

     ptbShow.Image=image;

    posted @ 2005-12-12 18:20 Ben 閱讀(279) | 評論 (0)編輯 收藏

    java中利用POI處理Excel

    package txtToExcel;

    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFCell;

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.util.ArrayList;

    /**
     * @author lx
     *
     */
    public class TxtToExecl {
     /** Excel 文件要存放的位置,假定在C盤下 */
     public static String outputFile = "c:\\11.xls";
     
     private static String[] DataOfLine = null;

     private static ArrayList array = new ArrayList();

     public static void main(String argv[]) {
      try {
       String fromPath = "c:/11.txt";// 取得當前目錄的路徑
       FileReader txtReader = new FileReader(fromPath);// 建立FileReader對象,并實例化為txtReader
       BufferedReader br = new BufferedReader(txtReader);// 建立BufferedReader對象,并實例化為br
       String Line = br.readLine();// 從文件讀取一行字符串

       // 判斷讀取到的字符串是否不為空
       for (int i = 0; Line != null; i++) {
        // System.out.println(Line);//輸出從文件中讀取的數據
        array.add(Line);
        Line = br.readLine();// 從文件中繼續讀取一行數據
       }
       DataOfLine = new String[array.size()];
       // System.out.println(array.size());
       array.toArray(DataOfLine);
       br.close();// 關閉BufferedReader對象
       txtReader.close();// 關閉文件
      } catch (FileNotFoundException e1) {
       e1.printStackTrace();
      } catch (IOException e1) {
       e1.printStackTrace();
      }

      try {
       // 創建新的Excel 工作簿
       HSSFWorkbook workbook = new HSSFWorkbook();
       // 在Excel工作簿中建一工作表,其名為缺省值
       // 如要新建一名為"效益指標"的工作表,其語句為:
       // HSSFSheet sheet = workbook.createSheet("效益指標");
       HSSFSheet sheet = workbook.createSheet("FeeOfTel");

       // 創建字體,設置其為紅色、粗體
       HSSFFont font = workbook.createFont();
       font.setColor(HSSFFont.COLOR_NORMAL);
       font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
       HSSFCellStyle cellStyle = workbook.createCellStyle();
       //將字體設置到中間
       cellStyle.setFont(font);
       cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
       //將文字設置到右邊
       HSSFCellStyle cellStyle1 = workbook.createCellStyle();
       cellStyle1.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    //    HSSFDataFormat format = workbook.createDataFormat();
    //    cellStyle1.setDataFormat(format.getFormat("0.00"));

       int NumLine = (array.size() / 13);
       System.out.println(NumLine);
       // 在索引0的位置創建行(最頂端的行)
       HSSFRow row = null;
       HSSFCell cell = null;
       for (int j = 0; j <= NumLine; j++) {
        row = sheet.createRow((short) j);
        for (int i = 0; i <= 12 && i + j * 13 < array.size(); i++) {
         // 在索引0的位置創建單元格(左上端
         cell = row.createCell((short) i);

         // 定義單元格為字符串類型
         cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
         cell.setEncoding(HSSFCell.ENCODING_UTF_16);
    //     cell.setCellType(HSSFCell.CELL_TYPE_STRING);
         if (j == 0 || j == NumLine - 1) {
          cell.setCellStyle(cellStyle);
          cell.setCellValue(DataOfLine[i + j * 13]);
         }
         else{
          cell.setCellStyle(cellStyle1);
          cell.setCellValue(DataOfLine[i + j * 13]);
         }
         // 在單元格中輸入一些內容
         // System.out.println(DataOfLine[i + j * 13]);
    //     cell.setCellValue(DataOfLine[i + j * 13]);
        }
       }

       // 新建一輸出文件流
       FileOutputStream fOut = new FileOutputStream(outputFile);
       // 把相應的Excel 工作簿存盤
       workbook.write(fOut);
       fOut.flush();
       // 操作結束,關閉文件
       fOut.close();
       System.out.println("文件生成...");
      } catch (Exception e) {
       System.out.println("已運行 TxtToExecl() : " + e);
      }
     }
    }

    posted @ 2005-12-12 12:58 Ben 閱讀(712) | 評論 (4)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 
    主站蜘蛛池模板: 久久九九亚洲精品| 亚洲欭美日韩颜射在线二| 国产亚洲人成网站观看| 一级毛片正片免费视频手机看| a毛片基地免费全部视频| 亚洲网址在线观看你懂的| 成人无码精品1区2区3区免费看| 免费国产成人午夜私人影视| 亚洲av永久无码精品天堂久久| 久久久久久国产精品免费免费男同 | 亚洲美女精品视频| 18女人水真多免费高清毛片| 亚洲色婷婷综合开心网| 在线播放免费人成视频网站| 日韩免费福利视频| 国产精品成人免费观看| 亚洲毛片αv无线播放一区| 91成人免费福利网站在线| 亚洲日韩精品无码专区网址 | 久久精品国产精品亚洲艾| 十八禁在线观看视频播放免费| 亚洲AV午夜成人影院老师机影院 | 中文字幕免费视频一| 亚洲精品日韩专区silk| 一个人在线观看视频免费| 亚洲中文字幕乱码一区| 夜夜嘿视频免费看| 久草免费福利在线| 亚洲白嫩在线观看| 又粗又黄又猛又爽大片免费| 亚洲AV成人无码网站| 亚洲人成电影在线播放| 免费观看男人吊女人视频| 亚洲成人免费网站| 亚洲成a人片在线观看老师| a级毛片在线免费| 亚洲最大福利视频| 久久亚洲精品无码观看不卡| 岛国岛国免费V片在线观看| 亚洲欧洲日产国码久在线观看| 在线观看日本免费a∨视频|