Kernel's profile三言两语PhotosBlogListsMore Tools Help
No list items have been added yet.

三言两语

Open heart, bravely fly! http://openhero.googlepages.com
September 20

两耳不闻窗外事,一心只读圣贤书........

8月中旬开始看java,到现在,突然感觉,java就那么回事,jsp就那么回事,j2ee也就那么回事,不过转回来,这一个月的时间之内,连着看了<java><j2ee><jsp><javascript><ajax>(两本)<java pattern><strut>唉!这才真正领悟到两耳不闻窗外事,一心只读圣贤书啊........
 
或许还是适合搞技术吧,不适合做人事,有时候突然发现.和以前的同学说话,都不知道说啥好.....找不到话题,难道本生就不属于那个圈子?还是自己想的就和他们不一样?还是....
 
红颜易寻,知己难求啊!

烂书!

或许题目这么写有点让人郁闷

一些书上的例子都是错的,一些书上的概念都不对,只有自己验证的时候才会发现这些问题,我倒认为这样的书在这个浮躁的时代,是本好书,只有你静下心来才会发现其中的问题,只有自己实践了才会发现其中的错误,才有资格骂写书的人是垃圾!

或许你能得到一本好书,上面的例子都是正确的,上面的代码copy过来就可以用,或许细心研究的时候就少了,或许调试代码的过程就少了,或许缺少了锻炼的机会.

或许这样想算是自虐吧!

无奈,看一本烂书,也就有烂熟的看法了!

生活中那么多的不如意,何不换中思维去考虑,或许有不一样的收获.

或许这也是我对生活的态度吧!

------也许,我已经屈服了?

------或许,我还在挣扎吧!

tomcat 标签 taglib

在tomcat中配置自定义标签的时候,会遇到一个问题 

web.xml中,有两个版本的DTD认证,一个是java1.2版本的,一个是2.0版本的,所以就形成了不同版本的时候作出的配置不一样

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd

是2.0版本的

所以在web.xml中添加自己的taglib的时候要包含在<jsp-config></jsp-config>中间才行.

<jsp-config>
 <taglib>
     <taglib-uri>/date</taglib-uri>
     <taglib-location>/WEB-INF/date.tld</taglib-location>
 </taglib>
</jsp-config>

Tomcat jndi 数据库配置 连接池配置

在Tomcat 5.5\conf\xxxxxxxx\xxxxxxxx\xxxxx.xml(xxxxx.xml为你自己的web的配置xml文件) 中添加resource

        <Resource name="MYSQL"
        type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        password="********"
        maxIdle="2"
        maxWait="5000"
        username="root"
        url="jdbc:mysql://localhost:3306/jnestore"
        maxActive="10"/>

以上是tomcat 5.5版本的配置,5.5版本只有这样陪才有效果,以前的版本可以按照paramter的方法添加;

Resource 一定要包含在<Context ......> </Context> 之间

在你的web的路近下,WEB-INF中找到web.xml,添加资源映射      

       <resource-ref>
           <description>connection</description>
           <res-ref-name>MYSQL</res-ref-name>
           <res-type>javax.sql.DataSource</res-type>
           <res-auth>Container</res-auth>
        </resource-ref>

把mysql的jdbc驱动.jar包放到tomcat的common/lib下去,也可以放到WEB-INF/lib下,

重新启动tomcat.

就可以用Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("java:comp/env/MYSQL");

Connection con = ds.getConnection(); 来连接数据库连接池

tomcat中web部署

在配置web的部署的时候,在网上搜索到很多的资料,不过,后来看tomcat的文档的时候

才发现修改server.xml方法并不好,在tomcat5.0版本以后,就可以通过添加conf文件夹下的[xx ][xx ].xml文件来部署新的web,这样不需要重新启动tomcat,会动态的添加新的部署

什么是"流"

见过伐木工人怎么把山上砍伐的树木运到山下嘛?

先把树木砍倒,去处枝叶,成一段一段的,然后再顺着山上的溪水,把树木运送到山脚.

这个就是流的过程.......

hoho............... 

printf 字符串输出固定长度

#include <stdio.h>

void main()
{
   char str[20] = "abcdefg";
    double n = 10.1234567;
 printf("%.3s \n", str);
 printf("%.3f \n", n);
}

 

输出:abc
          10.123

下面对printf中的%.M输出做一下简单的分析,在printf的定义中,回解析所有的字符有自己的协议栈来分析format的参数,其中,

/* 一下内容来自output.c-------------------------------------------------------

 while ((ch = *format++) != _T('\0') && charsout >= 0) {
        chclass = find_char_class(ch);  /* find character class */
        state = find_next_state(chclass, state); /* find next state */
      /* execute code for each state */
        switch (state) {
......
                case ST_DOT:
            /* zero the precision, since dot with no number means 0
               not default, according to ANSI */
            precision = 0;
            break;

--------------------------------------------------------------*/

就如代码中所说的,如果小数点后面不是数字,则按照ANSI标准来格式化后面的输出,来比较输出的长

September 05

[转]技術對談-看Google怎麼用Java

http://www.ithome.com.tw/itadm/article.php?c=39042

技術對談-看Google怎麼用Java
文/李延華 (記者) 2006-08-29

Google首席Java架構師Joshua Bloch與Google專任工程師兼Java講師Neal Gafter,與七位臺灣Java社群專家對談。


席捲全球Java界的《Java Puzzlers》作者-Google首席Java架構師
Joshua Bloch與Google專任工程師兼Java講師Neal Gafter,應邀來臺擔任Java 2006的講師。iThome邀請多位Java專家與兩位Google大師對談。在輕鬆的氣氛中,Joshua與Neal針對Java的發展與 Google的技術應用等議題,以幽默詼諧的方式提出他們的看法。

PC組成高度容錯的分散式架構
王建興:當我們知道可與兩位來自Google的Java大師座談時,心中浮現的自然是Google舉世聞名的分散式架構,Java向來有效能上的爭議,但Google為何會採用Java?又如何應用Java?

Neal:Google打造的許多應用程式都是大型的分散式系統,我們不會將應用程式放到一臺大型的單一主機上。我們喜歡使用現成的PC,來建構我們的系統,而不是大型而且可靠度佳的昂貴主機。單一PC隨時可能發生錯誤,我們試著用軟體的方式建立容錯的機制。

基本上,我們沒使用J2EE,這其中有許多原因,包括Google在J2EE之前就已經有了自己的分散式架構,甚至還是使用 Java 語言建構出來的。所以Google有自己的RPC(Remote Procedure Call)系統,而且廣泛地使用,它可以在不同語言之間達到良好的溝通,不論伺服器、用戶端、Java、Python 或C++,而且運作地很平順。

我們應用Interface Definition Language編譯程式,成為可以跨Java、Python及C++三種語言的系統。所以當我們設計一個分散式系統時,其中一件事就是看哪種通訊協定可以適合這些語言來開發,另外就是我們怎麼處理容錯、備份、如何確保我們不會遺失任何使用者的資料、如何恢復某臺當掉的機器。Google有特別的解決方式處理這方面的問題,我們有個通用的解決方法。

Joshua:沒錯,如Neal所言,失敗不是少見的情況,而是很常見的。當你要建立一個像Google這樣規模的搜尋服務,你可以想像會有多少問題,但是我們就是要持續的讓服務運作下去,盡量讓系統可以自動修復,不要造成延遲。

王文彬:Google的應用好像都是自製的,是否曾使用其他公司的產品?

Joshua:會的,我們會拿現成的來用,多數工具是我們自製的,不過如果有別人已開發好的軟體,剛好是我們需要的,而且價格不錯,我們會買下它,Google Web Toolkit(GWT)就是很好的例子。

Neal:我們就常用一些開放源碼的產品,用哪些可能不方便講,不過我們用很多Linux工具,有時候我們會用些其他人開發好的工具,其實Google沒有規定一定什麼都要自己開發,當你要把程式交給開放源碼社群時,你會傾向社群支持你的東西,但你不會要他們付錢給你。

彬:這就是JBoss要做的。

Java與C++人才的比重逐漸改變
王建興:我們聽早上的主題演講,你們說Google應用Java在中介層(Middle-Tier),例如GMail、Calendar。我們很有興趣知道什麼樣的應用適合使用Java?

Neal:沒錯,在中介層的開發,Java是很好的選擇。Google 有很多基礎的設施,Web Servlet 引擎,讓你很簡單就能以Java撰寫與部署中介層的程式。

Joshua:而且有許多現成的函式庫,不需要用到bit-level,就可以整合原有底層的C++程式,這可以廣泛地移植到用戶端的程式,像是一些AJAX程式。

Neal:這還是要看各個開發團隊決定用什麼,如果是要開發一些以Web為主的程式,可能就不考慮Java而選擇C++,有可能因為他們對C++很熟,所以,即使他們開發的東西和我做的很像,但他們還是決定選擇C++。

王建興:你們認為Java能提供更好的可攜性嗎?

Joshua:絕對是的。而且Java可以提供較好的效能表現。

Neal:一般來說,以Google使用Java的方式下,可攜性沒那麼重要。因為我們將Java應用程式部署在特定版本的Linux。

不過,可攜性的優點,是當我們移至下一個版本的Java,或下一個版本的Linux時,我們不想鎖在某個特定版本的Java、架構或作業系統,所以可攜性很重要。

Joshua:但我們不會要求寫程式時,要同時兼顧在任何平臺上都可以執行,這有點與寫程式的態度有關,你是要寫給自己用的,或是寫給全世界用的。

王建興:我想你們會採用 Java 有一個很重要的理由是想要降低開發的心力和時間。

Joshua:絕對如此。還有另一個理由,學生在學校裡學的都是Java,而且喜歡Java,他們甚至不懂C++,所以比找C++人才容易。

Neal:而且Java除錯容易多了。

王文彬:現在Google的C++與Java工程師的比例為何?各占一半嗎?

Joshua:我不太確定。可以肯定的是Google正在徵求更多的Java工程師。

Neal:應該不到這個比例,使用C++的應該多一點,可能是 6:4 左右。不過,使用Java的人正在成長中,5年前Google大概沒什麼人使用Java,所以我們可以預見,Java在Google裏越來越重要。

王建興:即使Java對開發企業應用程式是夠快的,可是你們怎麼兼顧延展性(Scalability)?

Joshua: Google解決Java的延展性,就像解決其他這類延展性問題。像是複製、大型分散式系統,或者用更多機器來解決這些問題。

王建興:所以你們會用分散式架構來解決?

Joshua:對。

葉秉哲:請問Google分散式基礎架構早在Google搜尋引擎剛草創的時代就已經存在了嗎?

Neal:許多Google的叢集和分散式基礎架構,的確可追溯到Google兩位創始者在史丹福大學研究所,以三五臺機器研究時代。不過早期的基礎架構都已被重新設計過,所以現在已經很難看到雜亂的程式碼了。單以搜尋引擎核心本身而言,大概就被改寫過三次。

Joshua:不過,當然,某些核心的演算法,例如PageRank仍然存在。

沒有修改JVM,調校是從程式著手
王建興:在你們早上的演講中,提到有許多在Java社群有所貢獻的人,現在都在Google,我們看到有很多人都熟悉JVM,我們猜你們有基於效率的考量修改JVM。我們有猜對嗎?

Joshua、Neal:猜錯了。

Joshua:你們可能會這麼想,但就我所知沒有。我們使用現成的JVM,不是我們為自己人說話,但昇陽的JVM效能一直在精進,我們把原來跑在 JRE 1.4的程式放在Tiger上,發現,哇!效能這麼好。再放在Mustang,哇!效能更快,我們就不用花什麼功夫特別去調整我們的程式了。

Neal:我們的確是和昇陽保持聯繫,所以當我們遇到了特定的問題時,我們就會讓他們知道,這樣的VM對我們不夠用。

Joshua:而且我們提供解決方案。

王建興:所以最佳化是在應用程式的層級進行?

Joshua:是的,開發精簡而有效率的程式,Java是很好的工具。Java程式既短且清楚,而且提供夠多的函式庫,可以根據需求置換。要寫出一樣的C++程式,就得花上更多的力氣。

Neal:你可以找到許多用在Java的效能衡量與調校的工具,那可以很容易找出問題在哪。

王建興:程式效能的瓶頸。

Neal:是呀,我總是很驚訝瓶頸怎麼會在這兒,所以總是真的找到了才相信。

王建興:效能瓶頸所在,總是令人驚訝不已。

Joshua:沒有真的證明前,總是猜錯瓶頸究竟在哪裏。

開放原始碼,對Java的幫助有限
朱仲傑:我們知道這幾年Java將會開放原始碼,你們們覺得這會對提升Java的效能,或找出Java的效能瓶頸有幫助嗎?

Joshua:Neal和我並不同意這個觀點,基本上我們有研究許可(Research License)已經可以閱讀原始碼,調校或找出問題都很簡單,我不是要說這麼做沒用,而是我們不需要因為原始碼不夠開放而這麼做,從1995年到現在,已有很多進步,可以寫很高效能的Java程式。

Neal:Java SE今年年底就要釋出原始碼,你可能會覺得屆時開放源碼社群協助Java SE,找出Java SE的問題。不過,其實他們現在就已經可以這麼做了,Java SE已有公開的原始碼,你可以在上面加些警告,也可以告訴昇陽哪裏有問題。但是實際上,很少人這麼做,所以我不覺得完全開放源碼之後,會吸引大家貢獻些什麼,因為現在就可以了。

Joshua:不過學術單位在Java開放以後,就可以更自由的使用與修改Java了。

Neal:有些事是開放Java源碼以後可以做的。像是Java語法的實驗,現在我雖然可以改Java的東西,做些實驗性質的應用,加些新的功能,但因為我不是昇陽的員工,不被允許提供給別人試用。

Joshua:我要提出相反的看法,7年前Philip Wadler、Martin Odersky這兩個人,在Java上加了很多功能,然後取名叫「Pizza」,現在的Generic功能很多都是根源於Pizza的。

Neal:但如果他們在Java開放原始碼之後再做,就不需要自己重寫一個Java SE了!

Joshua:我要說的是,這類在Java之上的再開發,7、8年前就有。

Google力求提供在地化的服務
馮彥文:我很好奇Google的軟體,有沒有還未自動化的?需要人工處理的?

Neal:有,像在地化,因地區不同的翻譯之類。

Joshua:也是有些工具可以幫忙。

Neal:其實也有系統幫助不在Google工作的人,協助我們做在地化。

Joshua:基本上Google會盡量能自動化就自動化,Yahoo就不那麼自動化,Yahoo是有歷史原因的,因為從一開始的設計就是由人工登錄網址;而Google從一開始的索引就是讓網路自己搜尋,但也沒辦法做到樣樣自動化。

Neal:還是有些服務像登廣告,得由人工檢查填寫資料的是否正確,及是否侵犯他人的商標。

Joshua:不過我再強調,我們都盡量自動化,不能做到的,才用人工補強。例如Google News,就不是用人工挑選資料,是電腦篩選的。

Neal:Google設計服務時,還是以自動化為原則,這樣的服務才不會被限制住。如果有服務是我們無法靠自動化來解決的,可能我們就做錯了方向。

馮彥文:所以像 Google廣告,如果我想申請的是中文、日文,這些不同語言的廣告,你們需要不同地區的人協助嗎?

Neal:我想我們在全球不同國家,都有分公司照顧各種語言的用戶,我們的服務在全球都有,還是需要有人知道當地的語言、文化、法律的特色,才能服務當地的人。

葉秉哲:所以我們才能看到Google Map在日本是日文,在希臘是希臘文。

Neal:沒錯。

Joshua:Google了解這個世界只有一小部分人的母語是英文,我們也了解,在這個一直成長的網路世界人口中,大部分的人說著其他語言,Google想要為這部分的人服務。

衝擊可以激盪出更多興奮的點子
錢世豐:Google在全球有那麼多員工,分散在不同的地方,如何合作完成工作?

Joshua:我們公司使用電子郵件和即時傳訊系統溝通。有人說到Google Talk嗎?

昨晚我抵達台北的時候,寫電子郵件給老婆,一打開即時通訊,就有Google的人傳訊過來問我「Hey,你現在在哪裏?我有個技術問題想問你,有個API裏有個名字,我不認為那是個好名字,你覺得呢?」基本上,Google是個全球性的公司,合作的方法就是要有全球化的想法。

Neal:Google盡可能的維持小型團隊,而且讓小型團隊在同地點工作,理想的團隊規模可能是5個人,4個或5個,也許多到8個。大過這個數字,溝通就複雜多了。

Joshua:舉例像匹茲堡分公司,匹茲堡的團隊可能有些人會在某個計畫上分擔工作,和位於山景城(Mountain View)總部的員工合作。Google是從史丹福的研究生開始的,逐漸聚集許多工程師加入,這些工程師聚在一起就會有些東西蹦出來。

王文彬:你們現在有多少員工?一萬人?

Neal:還沒,大約7000~8000人。

王文彬:那現在一定也多了許多人是從事業務工作,從一個管理者的角度來看,如何和業務這類不同性質的人合作?

Joshua:這對公司而言的確是有點挑戰。可能有時候需要順從別人的意見,但Google還是盡量保有某些原則。當然還是有混亂衝擊(Chaos)的時候,優秀的科技公司,總是會有些「衝擊」,因為衝擊可以激盪出更多令人興奮的點子。

王文彬:我總很好奇,你們有很多東西都是自製的,那新進同仁要如何學習這些東西呢?學習方式為何?

Joshua:這是非常棒的問題,來到Google就像剛移民時,都要上一些課,像剛上大學會有新生訓練一樣,Google有兩個禮拜的新生訓練,教導Google現有的產品。例如我們是開發Java程式的,就會教導一些寫Java的方式。

Neal:新進員工會有指定的mentor(學長)帶他,如果有什麼問題,可以問學長,實作上的問?

Google的80/20工作法則
錢世豐:Google的員工可以利用20%的工作時間做任何想做的事,是真的嗎?

Neal:真的!我當初的20%時間是做一個行事曆的應用,後來發展成為今日的Google Calendar。它現在變成我的80%,而目前來臺灣就是用我的20%時間。

Joshua:很多年來,我的20%是更新《Effective Java》。

Google專任工程師Neal Gafter(左)與Google首席Java架構師Joshua Bloch(右),兩人利用Google的20%自由工作時間寫出《Java Puzzlers》暢銷書。攝影/賴基能

AJAX仍在演進,是未來的趨勢
朱仲傑:我們知道AJAX是從Google Map點燃的,而AJAX現在正火紅,Java Script有個大問題是相容性,有些語法只能在IE或Firefox上使用。Gmail可以在很多瀏覽器上使用,但Google Calendar就只能在IE和Firefox上用。

Neal:不,它現在可以在Mac OS上使用了。

使用AJAX撰寫應用程式,會比用Java用戶端技術撰寫應用程式花上更多力氣。真的,因為可攜性不會是免費奉送的。另一方面,並不是很多人的機器都裝有 Java,但每個人都有瀏覽器,Firefox到處都有,而IE更佔有90%,只要有Windows就有IE。實務上來說,當你能夠在這兩個瀏覽器上執行,對大多數人來說,就具備了可攜性。

Joshua:我看AJAX是比以前的HTML更豐富,但還是沒有比傳統的Windows、Mac OS或Unix上的應用程式豐富。不過另方面,AJAX一直在改進,比以往更容易移植、更容易維護,這些背後技術的演進,讓使用者能自然地使用,不會感覺到技術端有什麼不同,這些都是好事。我有時候對AJAX做不到一些功能而感到挫折,但另一方面以一些商業的角度來看,選AJAX還是正確的決定。

Neal:AJAX的應用還是無法像一般例如Java開發的程式來得豐富,其中部分原因是技術太新,所以不那麼普及,沒有那麼多函式庫可以讓開發變得簡單,而且AJAX還是有效能上的問題,Java Script還是一個直譯式的語言,如果未來有更豐富複雜的以AJAX 開發的應用程式,我們還是需要有更好的Java Script解譯方法。我還是會很高興看到越來越多用戶端在使用Java。

Joshua:會的,大約60%的電腦出廠時就裝好Java 5的JRE(Java Runtime Environment)。

丁彬:Google以併購的方式取得GWT,Google還有其他的AJAX 工具集的計畫嗎?

Neal:Google很多專案採用AJAX技術,不過如果你的問題,是Google有沒有其他的AJAX Toolkit產品,就我所知是沒有。

Joshua:就我所知,也是沒有。就算有,我也不被允許談論這些計畫。

葉秉哲:所以你們會用嗎?(指GWT)

Neal:我們現在沒有,因Google Calendar在AJAX誕生之前就開始開發了,但如果開發時就有這些工具,我想我會採用。至於我現在是否會將Google Calendar轉由AJAX工具開發,這聽起來就有點費功夫了,可能不太值得。

葉秉哲:如果有新的應用,你們可能就會採用?

Neal:如果有新的計畫是以AJAX為目標,我想會採用的,因為有現成的可以利用。

Joshua:如果有時間我也會想用,不過有點困難。

葉秉哲:當Google在使用腳本語言時,為什麼會選擇Python,而不是Perl 之類的語言?

Joshua:當我們任職於Google時,Google已經採用Python,所以我並不知道最初的原因。在Google內部也有人使用 Perl,不過只是用於個人的20%時間,屬於實驗性質,用來展示及說服個人的想法;當此計畫成長到有其他人加入時,還是得轉移到Google最常用的語言平臺上。

Google OS?只是揶揄微軟
朱仲傑:現在你們用的Java是哪一個版本?

Joshua:我很驕傲的說,現在我們已經用到Tiger,我是2004年7月4日加入Google,大約從2005年3月起,全公司就轉換到Tiger,這是在Tiger發表後沒多久的事。

Neal:我們已經完成JDK 1.6的測試,只要等JDK 1.6公佈後,我們也可以很快地轉換過去。

錢世豐:請問你們有自己的作業系統嗎?

Joshua:沒有,我們用Linux,我們在一些大規模的系統用Linux,但我們沒有自己的作業系統。

Neal:但我在自己的筆記型電腦上做了一個「Google OS」的螢幕保護程式,當我去演講開會的時候,大家都會看到我用「Google OS」。

王文彬:這是行銷?

Neal:是我們在揶揄微軟。

C#與Java各擅勝場
王建興:.NET是Java的主要競爭對手,現在也有開放源碼的.NET Framework可執行於Linux,它叫做Mono,你對Mono的看法?

Neal:嗯,它還不完整,是吧。有很多開放源碼的Java實作,也都不完整。很多Java的實作,都只有60%~70%的API支援,就算是90%都不夠好。那意謂著我可能會呼叫到一個不能起作用的方法。要支援全部才算有用。

Joshua:像我在Java的委員會,我還是覺得即使是.NET公開的API也不會很實際,Java有完整公開的計畫,主要就是要把所有函式庫都公開。

丁彬:那C#呢?C#的目的之一,就是要從Java社群挖走一些人,你們覺得呢?

Neal:我認為C#的確有一些好的想法。他們有自由選擇不需要保留向下相容性,舉例來說,當他們在語言中決定增加Generics語法時,他們建立了另一套全新的Collections API,身為程式設計員或是軟體廠商,必須在原本的和新的介面中,選擇一套來使用。以語言設計的角度來說,這樣做可能比Java設計者的選擇來得好,C# 有這樣的自由可以讓設計者更大幅地改良語言的設計。

Joshua:我這樣說好了,「模仿」絕對是高度的讚美,何況是像C#如此公開的模仿。我不全然認為C#挖走了Java 的開發者。當你的目標是在Windows 上開發時,為了某些明顯的因素,使用C#或C++會面臨較少的整合性問題。

Neal:在Java的Generics中,有Wildcard的語法,我認為這是一個極為重要的部分,它讓程式設計人員更有威力、可以更靈活的表達設計理念。C#中就沒有這項功能,這也可能和當時的程式語言社群中對於 Wildcard 的需求討論還沒這麼熱烈有關,但我認為對C#來說,要增加這項功能已經太晚了。

Joshua:每一種程式語言都有它的優點和缺點,我或許有點偏頗,不過我的確很喜歡Java中這些新的功能。C# 中有太多過去Pascal及C++的影子。

王建興:以一個架構師的角度,可以區別一下Java和.NET的核心的不同嗎?

Joshua:我對.NET的核心沒有那麼熟,他們出現得比Java晚,所以可以針對Java的缺點改進,但如果你有看《Java Puzzlers》,你會發現還是有很多Puzzlers也同樣在C#出現。

朱仲傑:《Java Puzzlers》、《Effective Java》的第二版何時會問市呢?

Joshua:我在今年舊金山的JavaOne大會,於數千人面前保證,在下一屆JavaOne之前,會推出《Effective Java 2nd edition》,我會繼續努力朝著明年出版的目標努力。至於《Java Puzzlers》的第二版,希望不會再有那麼多難題了。因為越多難題與陷阱其實代表這個語言的缺點越多,只要我們不要再加入更多不好的語言特性在 Java中,就不會有太多新的難題。

Java太肥了嗎?
王文彬:我對Java的未來方向有點好奇,Java已經很成熟,若我們再持續加入新功能,會不會讓語言太過龐大而失焦?

Joshua:會的,每個語言都有生命週期,有些語言持續增加新功能,導致該語言後來很難寫、很醜、難以使用,很多語言後來變成這樣,而我會盡力讓Java不變成這樣。我相信現在的Java已經是一個相當完整的語言,雖然還是有很多好的功能可以加入,但將這些東西一股腦全部加進來絕對是錯的。

Neal:我覺得在JDK 5就加入了太多功能。

王文彬:是的,像annotation 就是。

Joshua:但是使用者喜歡耶!我是annotation技術團隊的負責人,雖然這不是我心目中最想要的功能,但是我相信它對一般的Java工程師幫助很大。

Neal:有兩個我覺得後悔的功能:Static Import 和 Varargs。
Joshua:其實Static Import我覺得並沒有太傷害Java語言本身,因為根本就很少用。Varargs在特定的時候,確實會造成無法預期的結果。

錢世豐:你們最喜歡哪些Java新功能?

Joshua:我覺得enum這個小功能很重要,但當初沒有規劃好enum的比較,現在的規格允許我們可以比較兩個enum是否相等,但是卻不能使用像是大於、小於來比較兩個enum。另外像switch不能使用在String 上,很多人需要這個功能,沒理由Java無法做到。我覺得像這樣的小功能,是我很希望未來的Java再加入。

Neal:我自己認為有個功能是現在Java缺乏的:closures。

Web 2.0的定義始終是分歧的
朱仲傑:你們怎麼看Web 2.0呢?會覺得是泡沫嗎?

Joshua:我覺得這只是大家為現在的網路現象取個名字,就像從寫HTML開始,後來有Java Script,現在有公開的API,就可以做一些Mashups(混搭程式),我覺得一些Mashups很棒,像房屋網站Zillow.com就整合 Google Map,這些東西都很棒,不過這比較像是行銷人員把這種現象取了個Web 2.0的名詞。

Neal:我不知道大家怎麼看待Web 2.0的意義,我認為這是把網路應用服務集合的意思,其中有些想法也是行之有年,像Amazon上可以寫書評。不過我想Web 2.0會是現在和未來一些網路服務的趨勢。

Joshua:那如果說Web 2.0是平臺呢?當我們說 Web 2.0是一些以網路服務為基礎的平臺,像Amazon、Google、eBay有提供 API,這樣一些網路服務就可以利用其他網站現有的平臺提供更多應用。
錢世豐:我覺得直到有租屋網站和Google Map整合後,大家才開始注意Web 2.0的現象。

Neal:我覺得大家對Web 2.0的定義都不大相同,幾年後如果Web 2.0成功了,這個詞就還會存在;如果沒有成功,就不會再叫Web 2.0了。

錢世豐:有些人說GMail與Google Map是 Web 2.0 的開始。

Joshua:Google Map無疑的是屬於Web 2.0服務,你看Zillow.com就是整合Google Map的應用。整理⊙李延華

        Joshua Bloch

Google首席架構師,著有《Effective Java》、《Java Puzzlers》

「當你要建立一個像Google這樣規模的搜尋服務,你可以想像會有多少問題,但是我們就是要持續的讓服務運作下去,盡量讓系統可以自動修復,不要造成延遲。」


        Neal Gafter

Google專任工程師兼Java講師,著有《Java Puzzlers》

「使用AJAX撰寫應用程式,會比用Java用戶端技術撰寫應用程式花上更多力氣,因為可攜性不會是免費奉送的。」
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1179140

August 24

[转]我不知道,我愿你知道

下面的知识我不知道,但我愿你知道!耐心学习一下,你的人生会很丰富!
【天干地支】(包括五行、四季、方位、八卦)
【天干】甲、乙、丙、丁、戊、己、庚、辛、壬、癸
【地支】子(鼠)、丑(牛)、寅(虎)、卯(兔)、辰(龙)、巳(蛇)、午(马)、未(羊)、申(猴)、酉(鸡)、戌(狗)、亥(猪

【四季、五行、方位】
春——木——东——右
夏——火——南——下
秋——金——西——左
冬——水——北——上
()——土——中——中
【八卦】乾(天)、坤(地)、震(雷)、巽(风)、坎(水)、离(火)、艮(山)、兑(泽) 
【月份别名】(农历十二个月的别名)
一月为正月、端月, 二月为杏月, 三月为桃月, 四月为余月、槐月, 五月为蒲月, 六月为伏月、荷月, 七月为巧月, 八月为桂月, 九
月为菊月, 十月为阳月, 十一月为辜月, 十二月为腊月。
【湖海岳岭】(中国历史上的五湖、四海、五岳、五岭)
【五湖】鄱阳湖、洞庭湖、洪泽湖、太湖、巢湖
【四海】渤海、黄海、东海、南海
【五岳】东岳泰山、西岳华山、南岳衡山、北岳恒山、中岳嵩山
【五岭】越城岭、都庞岭、萌渚岭、骑田岭、大庾岭
【书经名著】(中国的四书五经、古典小说)
【四书】《大学》、《中庸》、《论语》、《孟子》
【五经】《诗》、《礼》、《易》、《书》、《春秋》 
【四大古典小说】罗贯中的《三国演义》、施耐庵的《水浒》、吴承恩的《西游记》、曹雪芹的《红楼梦》
【清末四部暴露小说集】《官场现形记》、《二十年目睹之怪现状》、《老残游记》、《孽海花》
【文化书典】(代表中国文化的书典)
【文学】《诗经》、《楚辞》、《李太白诗集》、《杜工部诗集》、《白香山诗集》、《韩昌黎文集》、《宋元戏曲史》、《水浒》、《红楼
梦》、《鲁迅杂感选集》
【史学】《左传》、《史记》、《史通》、《廿二史札记》、《帝王春秋》
【哲学】《论语》、《墨子》、《孙子》、《老子》、《庄子》、《孟子》、《荀子》、《韩非子》、《论衡》、《金刚经》、《化书》、《
李氏焚书》、《续四书大全说》、《四存编》、《太平天国文选》、《清代学术概述》、《孙中山选集》、《五四运动文选》
【科学】《梦溪笔谈》、《农书》、《本草纲目》、《天工开物》
【开国将帅】(1950年授勋的元帅、大将)
【十大元帅】朱德、彭德怀、刘伯承、贺龙、陈毅、罗荣桓、徐向前、聂荣臻、叶剑英、林彪
【十大将军】粟裕、徐海东、黄克诚、陈庚、谭政、肖劲光、张逸、罗瑞卿、王树声、许光达
【学圣居士】(中国历史上的诸学士的别称雅号)
【十二圣】史圣——司马迁;书圣——王羲之;药圣——李时珍;辞圣——屈原;草圣——张芝;画圣——吴道子;乐圣——李龟年;文圣—
—欧阳修;医圣——张仲景;诗圣——杜甫;茶圣——陆羽;词圣——苏轼。
【居士】香山居士——白居易;清真居士——周邦彦;清莲居士——李白;易安居士——李清照;六一居士——欧阳修;石湖居士——范成大
;后山居士——陈师道;仓山居士——袁枚;柳泉居士——蒲松龄;梦塘居士——孙联奎;六如居士——唐寅;淮海居士——秦观。
【年龄别称】(古代对整十年龄的别称)
三十而立,四十不惑,五十知天命,六十顺耳(花甲),七十古来稀,八十九十耄耋之年。
【体位喻意】(人身上的五官、内脏、手脚,大多可以用来作比喻)
首脑——领袖。面貌——状况。眉目——线索。耳目——侦探。须眉——男子。口齿——口才。咽喉——关隘、险要地势。心脏——要害部位
。脉络——线索、条理。体面——身份、光彩。骨干——中坚力量。骨肉——亲人。手腕——手段、关系。心腹——亲信。心肝——宝贝。心
血——精力。肺腑——内心。胃口——欲望。
【花木寓意】(古人赏花木之际,常寄托某种情感。)
松柏——表示坚贞。竹——表示气节轩昂。兰花——寄寓高尚。荷花——表示清白。梧桐——比喻爱情。红豆——表示相思。桑梓——表示故
乡。桃李——代表门生。垂柳——表示依恋。牡丹——表示富贵。菊花表示不畏风霜。以桃代寿。以梅表示不屈之意。等等。
【十大古曲】(我国古代十大名曲)
《高山流水》、《广陵散》、《平沙落雁》、《梅花三弄》、《十面埋伏》、《夕阳箫鼓》、《渔樵问答》、《胡笳十八拍》、《汉宫秋月》
、《阳春白雪》
【戏曲传说】(我国古代民间四大传说、五大戏曲)
【民间四大传说】牛郎织女传说、孟姜女传说、梁山伯与祝英台传说、白蛇许仙传说
【古典五大戏曲】关汉卿的《窦娥冤》、王实甫的《西厢记》、汤显祖的《牡丹亭》、洪升的《长生殿》和孔尚任的《桃花扇》。
【中国名胜】(中国各地的名胜古迹奇观)
【中国十大风景名胜】万里长城、桂林山水、杭州西湖、北京故宫、苏州园林、安徽黄山、长江三峡、台湾日月潭、避暑山庄、秦陵兵马俑
【中国五大名泉】镇江金山天下第一泉、无锡惠山天下第二泉、苏州虎丘天下第三泉、杭州虎跑泉、济南趵突泉
【中国四大石窟】甘肃敦煌莫高窟、山西云岗石窟、河南龙门石窟、甘肃麦积山石窟
【中国四大佛山】山西五台山、四川峨嵋山、浙江普陀山、安徽九华山
【江南三大名楼】湖北武汉的黄鹤楼、湖南岳阳的岳阳楼、江西的滕王阁
【世界名胜】(世界各地的名胜古迹奇观)
【世界七大奇观】埃及金字塔、巴比伦的空中花园、以弗所的阿苔密斯神殿、奥林匹亚的宙斯神像、哈利卡纳苏的摩索拉斯墓、地中海罗得岛
的太阳神巨像、亚历山大城的灯塔
【世界五大名宫】中国的故宫、法国的凡尔赛宫、英国的白金汉宫、美国的白宫、俄罗斯的克里姆林宫
【世界建筑名胜】朝鲜的千里马雕像、埃及的金字塔、意大利的比萨斜塔、法国的埃菲尔铁塔、柬埔寨的吴哥窟、美国的自由女神像、法国的
凯旋门
【世界十大避寒胜地】巴巴多斯(西印度群岛)、佛得角群岛(大西洋)、风向群岛(多米尼加)、尼加拉瓜(拉丁美洲)、巴基斯坦(亚洲
)、沙巴(马来西亚)、沙捞越(马来西亚)、苏里南(拉丁美洲)、多哥(非洲)、瓦利斯和富图纳群岛(大洋洲)
【地名别称】(中国地名的别称)
【乡】足球之乡——广东梅县;武术之乡——江苏沛县;游泳之乡——广东广莞;歌舞之乡——新疆库车;杂技之乡——河北吴桥。
两大“牡丹之乡”——河南洛阳、山东荷泽。
三大“年画之乡”——苏州桃花坞、天津杨柳青、山东潍坊。
【都】首都——北京、红色故都——瑞金、新油都——大庆、油都——玉门、木都——佳木斯、瓷都——景德镇、陶都——宜兴、皮都——张
家口、雨都——基隆、雾都——重庆、盐都——自贡、钨都——大余、锡都——个旧、钢都——鞍山。
【气候城】火洲——吐鲁番(新疆),风城——乌尔禾(新疆),天漏——雅安(四川),雨都——基隆(台湾),雾都——重庆(四川),
不夜城——漠河(黑龙江),雾州——西双版纳(云南),日光城——拉萨(西藏)。
【名城双别名】郑州——绿城、二七城;兰州——金城、瓜果城;哈尔滨——冰城、丁香花城;成都——蓉城、锦官城;青岛——海滨、绿色
山;长春——春城、汽车城;福州——榕城、木头城;拉萨——日光城、太阳城;广州——花城、羊城;杭州——丝绸、花园城;太原——龙
城、锦绣城;重庆——山城、雾城;昆明——春城、花城;洛阳——诗城、牡丹城;武汉——江城、首义城。
【古书之最】
1.第一部字典《说文解字》
2.第一部词曲《尔雅》
3.第一部韵文书《切韵》
4.第一部方言词典《方言》
5.第一部字书《字通》
6.第一部文选《昭明文选》
7.第一部笔记小说集《世说新语》
8.第一部诗歌总集《诗经》
9.第一部论语体著作《论语》
10.第一部编年体史书《春秋》
11.第一部记传体史书《史记》
12.第一部断代体史书《汉书》
13.第一部历史评论著作《史通》
14.第一部兵书《孙子》
15.第一部古代制度史《通典》
16.第一部农业百科全书《齐民要术》
17.第一部工农业生产技术论著《天工开物》
18.第一部药典书《新修本草》
19.第一部植物学辞典《全芳备祖》
20.第一部中医学书籍《皇帝内经大素》
21.第一部地理书《禹贡》
22.第一部建筑学专著《营造法式》
23.第一部戏典史《宋元戏曲韵史》
24.第一部图书分类目录《七略》
25.第一部文艺理论书《文心雕龙》
26.第一部汇编古代文化典籍《永乐大词典》
【世界十大文豪】
①.荷马──古希腊诗人 
②.但丁──意大利诗人 
③.歌德──德国诗人、剧作家、思想家
④.拜伦──英国积极浪漫主义诗人
⑤.莎士比亚──英国文艺复兴时期戏剧家、诗人 
⑥.雨果──法国作家 
⑦.泰戈尔──印度诗人和社会活动家
⑧.列夫·托尔斯泰──俄国文学巨匠
⑨.高尔基──前苏联无产阶级文学奠基人
⑩.鲁迅──中国现代伟大的文学家、思想家、革命家
August 10

算法书籍[转]

作者:BlueSky2008


The  Art  of  Computer  Programming  
mssql 作者:Donald  E.  Knuth  
出版社:  
           中文版由国防大学出版社发行,中文译本书名为《计算机程序设计艺术》  
作者主页:  http://www-cs-faculty.stanford.edu/~knuth/  
电子版图书:超星数字图书馆  有中文版第一卷和第三卷  
学习笔记:http://www.cfcs.com.cn/fjas/ebook.htm  
 
简介:  
           简称TAOCP,是算法界公认的"葵花宝典"。这本书被American  Scientist  评为20世纪科学界最重要的12本学术著作之一,这12本著作中包括Einstein的相对论、Dirac的量子力学、Mandelbrot的分形理论、Wiener的控制论等,由此可见这本书的价值。该书的作者Donald  E.  Knuth也是计算机界公认的大师,他是Tex  和  metafont文件格式的发明者,是编译原理中LR(k)文法分析算法以及其它很多著名算法的发明者。因为他在算法设计和分析领域的贡献,以及他所写的这本TAOCP,他获得了1974年计算机界的诺贝尔奖--图灵奖。  
           TAOCP原计划要出七册,但是一直到目前为止Knuth只完成了三册  ,而目前只能找到第一册和第三册的中文版。这本书最初写于60年代,当时还没有流行的高级编程语言,所以Knuth自己发明了一种称为MIX的汇编语言,书中的算法和代码都用MIX语言描述,因此这本书并不适合初学者使用。现在虽然已经是第三次修订版,但是看来Knuth并不打算用某种高级语言来重写他的书。这本书最大的特点就是语言生动活泼,内容深入浅出,随手翻来读一读也会觉得妙趣无穷。即使不作为学习资料,该书也极具收藏价值,毕竟历史上还没有人像Knuth一样因为写了一本书而得到图灵奖。    
推荐程度:五星级  
使用语言:MIX  
适用对象:适用于有较高水平的读者,初学者不易读懂,但是该书极具收藏价值。  
 
 
Introduction  to  Algorithms  
作者:Thomas  H.  Cormen,Charles  E.  Leiserson,Ronald  L.  Rivest  
出版社:  中文版书名为《现代计算机常用数据结构和算法》,潘金贵等编译,由南京大学出版社发行。  
第二版译名《算法导论》高等教育出版社。  
网络资源:http://www.cfcs.com.cn/fjas/ebook.htm  
习题解答:同上。  
 
简介:  
如果说TACOP是算法界的"葵花宝典",那么称这本书为"独孤九剑"必然当之无愧。该书是MIT的电子工程系和计算机系的算法教材,其三个作者也是计算机界赫赫有名的大师。该书的第一部分是算法学习的数学基础知识介绍;第二部分分类介绍常用算法和数据结构;第三部分是高级专题,介绍包括并行算法、NP问题、近似算法等在内的高级科研专题。其中基础知识部分适合初学者,高级专题部分则适合作为研究生的研究课题。该书的最大特点就是每条算法的设计分析都有严密的证明,看了后给人一种知其然而知其所以然的感觉。该书既可以作为算法学习用书,也可以作为一本算法和数据结构的字典,适合各类读者,十分具有收藏价值。该书使用类似Pascal的伪代码进行描述,并不拘泥于语言的细节,适合使用各种编程语言的读者。  
推荐程度:五星级  
使用语言:类Pascal的伪代码  
适用对象:适合各类读者,极具收藏价值  
 
 
算法与数据结构  
作者:傅清祥  王晓东  
出版社:电子工业出版社  
网络资源:超星电子图书馆有该书配套习题集的电子版  
简介:  
该书是《计算机学科教学计划1993》的配套教材之一。它覆盖了《计算机学科教学计划1993》中开列的关于算法与数据结构主科目的所有知识单元。全书强调"算法"与"数据结构"之间密不可分的联系,因而强调融数据类型与定义在数据类型上的运算于一体的抽象数据类型,为面向对象的程序设计方法打下扎实的基础。该内容丰富,表述详细,适合不同层次的读者。其中基础部分可作为计算机学科专业本科生的教材,高级专题部分可作为高年级本科生或研究生的教材。该书的第一章绪论介绍算法的复杂性和算法表达中的抽象机制,这一章写的尤为经典,受到了不少网友的推崇。该书某些章节和内容摘自前面介绍的那本《Introduction  to  Algorithms》,但是这本书省略了其中复杂的数学证明,因此更适合于初学者。  
推荐程度:五星级  
使用语言:Pascal  
适用对象:初学编程者,较有经验者,以及要参加各类程序员等级考试的读者  
 
 
国际信息学奥林匹克竞赛指导--实用算法的分析与程序设计  
作者:吴文虎  王建德  
出版社:电子工业出版社  
网络资源:超星数字图书馆藏有该书电子版  
http://oibh.ioiforum.org/download/ebook.htm  
 
简介:  
           该书是中学生信息学奥赛的辅导丛书之一。该书介绍了各种常用的算法和算法设计思想,并以大量的例题和解析详细说明各种算法的具体应用。因为是写给中学生看的,所以该书的语言通俗易懂,不需要太多的数学知识也能够看懂其中大部分的算法。该书的缺点是对算法只给出具体步骤而缺乏严密的理论证明,不过也正是因为这样才使得该书浅显易懂。书中引用了大量信息学竞赛的题目,这些题目很多都是具有实际应用背景的经典问题,具有较高的实用价值。对于参加竞赛的中学生和大学生读者来说,该书是竞赛的必备书,因为该书基本上涵盖了NOI、IOI、ACM/ICPC  竞赛的各个方面的内容;对于初学编程者来说,该书内容通俗易懂,深入浅出,例题生动有趣,解析具体详细,是学习编程不可多得的好书之一;对于有经验的编程者来说,该书涵盖的算法非常广泛,可作为算法参考手册使用。  
推荐程度:五星级  
使用语言:Pascal  
适用对象:参加竞赛者,初学编程者,较有经验者,以及要参加各类程序员等级考试的读者  
 
 
Computer  Algorithms:  Introduction  to  Design  and  Analysis  
作者:Sara  Baase  ,Allen  Van  Gelder  
出版社:影印版由高等教育出版社出版。目前尚未见到有中文版。右图是英文原版的封面,影印版的封面与此有所不同。  
网络资源:http://algorithm.lzu.edu.cn/modules.php?name=Downloads  
简介:  
这本书是国外计算机系的经典教材,是中国教育部推荐的国外优秀教材之一,被包括南京大学在内的几所国内著名大学的计算机系作为算法设计课程指定教材。该书的特点是强调算法设计的具体步骤,对每个算法的设计和分析都给出一步一步的思维过程,而不是直接给出结果。该书的第三章对递归思想的描述非常经典,以简单的语言和清晰的表述深入浅出地说明了递归的工作过程和原理。该书的内容也非常新,第三版的第13章介绍了如何用最新的DNA计算机设计算法来解决哈密尔顿路径问题  。该书使用类似Java语言的伪代码进行描述,充分利用了面向对象思想来描述抽象的ADT,但并不拘泥于具体的语言细节,学过任何一种高级语言的读者都能够看懂。该书重点在于介绍算法的设计和分析,对数据结构的介绍比较少,所以要和其他的数据结构参考书配套使用。  
推荐程度:四星级  
使用语言:类Java的伪代码  
使用对象:已经学习过数据结构的读者,参加程序员等级考试的读者  
 
 
数据结构与算法--面向对象的C++设计模式  
英文版书名:  
Data  Structures  and  Algorithms  with  Object-Oriented  Design  Patterns  in  C++  
作者:Bruno  R.  Preiss  
出版社:影印版和中文版由电子工业出版社出版  
网络资源:  
作者主页:http://www.pads.uwaterloo.ca/Bruno.Preiss/  
超星数字图书藏有该书中文电子版  
英文电子版和书中代码下载:  
http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus4/  
Java语言版本的英文电子版:  
http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus5/  
C#  语言版本的英文电子版:  
http://www.pads.uwaterloo.ca/Bruno.Preiss/books/opus6  
简介:  
           正如书名所显示的,该书的最大特点是以面向对象的C++设计模式来描述数据结构和算法。书中所有的数据结构都以类和对象进行封装,充分体现了抽象数据类型ADT的内在含义。该书既可作为基本算法和数据结构的学习教材,也可作为面向对象的设计模式的经典范例。该书的作者还写了这本书的Java版和C#  版,在作者的主页有该书不同语言版本的英文电子版,可以免费浏览或下载。这本书更适合作为数据结构的教材,作为算法分析的教材内容稍微浅了一点。  
推荐程度:四星级  
使用语言:有C++,Java,C#不同语言的版本  
适用对象:初学编程者,参加程序员等级考试者,以及C++(或java,  C#)语言的初学者  
 
 
数据结构、算法与应用--C++语言描述  
英文版书名:  
Data  Structure,  Algorithms,  and  Application  in  C++  
作者:Sartaj  Sahni  
出版社:影印版和中文版由机械工业出版社出版  
网络资源:  
作者主页:http://www.cise.ufl.edu/~sahni/  
书中代码和习题答案下载:  
http://www.mhhe.com/engcs/compsci/sahni/  
该书的Java语言版本主页:  
http://www.cise.ufl.edu/~sahni/dsaaj/index.html  
中文电子版可在中国互动出版社购买光盘或通过e币兑换下载,  
网址http://www.china-pub.com/  
简介:  
这又是一本C++描述的数据结构和算法教材。该教材第一章介绍了一下C++的一些语法,书中所有出现代码的地方都对代码做了较详细的解释,比较适合C++的初学者作为学习数据结构的教材。该书强调面向对象的思想和设计模式,对常用的ADT进行了封装,并且用大量的实例说明了数据结构和算法的具体应用。该书还有一个用Java语言描述的版本。该书适合初学者作为数据结构的教材。  
推荐程度:四星级  
使用语言:C++,  另有Java语言的版本  
适用对象:编程初学者、参加程序员等级考试者以及C++(或Java)语言初学者  
 
Photo 1 of 2
More albums (1)

HTML