zhrb的空間

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            20 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks

          #

               摘要: 實現Linux應用二進制兼容的意義


          隨著操作系統技術的發展從注重性能到注重服務,操作系統所配套的服務軟件多少以及開發環境是否易用就成為決定一個操作系統生命力的關鍵因素。微軟今日壟斷地位的形成,就得益于微軟完整的應用軟件體系。而以前國產操作系統未能形成良性發展的局面,也是受阻于沒有完整的軟件體系的配套。所以,注重配套服務軟件開發,提高系統適用面就成為Kylin操作系統在設計和開發只初就統籌考慮的問題。


          通過自己的力量,從頭為Kylin操作系統開發來所有應用軟件時間不允許,人力、物力上不可行。它山之石可以攻玉,我們必須借助目前現有成熟的應用軟件體系才能在較短時間內構成較完整的應用軟件體系,滿足用戶的基本需求。  閱讀全文
          posted @ 2008-03-06 22:27 zhrb 閱讀(660) | 評論 (0)編輯 收藏

          原帖地址:
          http://www.runpc.com.tw/content/168/168E18_1.aspx
          2008年必須知道的新技術——軟體開發篇 [zz]
          2008年必須知道的新技術─軟件開發篇
          文/蔡學鏞.匯整/編輯部
          ________________________________________
          新 技術不斷出現,其中某些技術很可能會成為我們不可避免的挑戰,因此每隔幾年,我們
          都應該審視我們未來應該注意的技術有哪些。透過本文章,和大家分享我的技 術觀察與建
          議。 當然對大多數的開發者來說,Visual Studio 2008是今年的重頭戲,這也是Windows
          Vista推出之后的第一個全新的Visual Studio版本,不容我們輕忽。但依照慣例,微軟還是
          會用大量的技術資料、研討會、資源…等,把我們喂得飽飽的。我就不用在此多介紹了。
          另外RIA也是今年的重點,最值得注意的RIA技術當然是WPF/Sliverlight和AIR/Flash。關于
          RIA,許多文章都已經有提及,我也 不在此贅述。我想在這篇文章中帶領大家認識的,是比
          較不一樣的新挑戰。

          多核心與網絡運算
          穆爾定律觀察到,每隔兩年,在單一芯片上能做的事會加倍。但是穆爾定律繞道而行,不是
          產生越來越快的處理器(這幾年CPU頻率的增加已經趨緩), Intel與AMD等公司的作法是產
          生多核心的裝置:單一芯片內包含兩個、四個、甚至更多個處理器。如果你的程序沒有共時
          (concurrent),則一 次只會在單一個處理器上執行,使用者會認為你的程序很慢。對于
          編程員來說,如何充分運用多核心的運算威力,變成一個重要的課題。 而網絡的連結,造
          成分布式的環境;如何用更有效的方式進行分布式編程,也會越來越重要。 結合了上面了
          兩點因素,Erlang正開始獲得大家的重視。

          Erlang解決了現今開發者面對的最迫切問題之一:如何寫出可靠、共時(concurrent)、高
          效能的系統。Erlang已經在世界各地被許多公司 廣泛地采用,這些公司用它來產生可靠、
          有效率、具規模彈性的應用。 Erlang是一個編程語言,它的設計目的,正是為了幫助我們
          建立極度平行、分散、容錯(fault-tolerant)的系統。它已經被商業采用運行多 年,建
          立出許多容錯系統。多年來,這些Erlang所建立的系統出錯率極低。 Erlang程序在多核心
          的計算機上執行時,會充分運用系統:這意味透過本文章,和大家分享我的技 術觀察與建
          議。 當然對大多數的開發者來說,Visual Studio 2008是今年的重頭戲,這也是Windows
          Vista推出之后的第一個全新的Visual Studio版本,不容我們輕忽。但依照慣例,微軟還是
          會用大量的技術資料、研討會、資源…等,把我們喂得飽飽的。我就不用在此多介紹了。
          另外RIA也是今年的重點,最值得注意的RIA技術當然是WPF/Sliverlight和AIR/Flash。關于
          RIA,許多文章都已經有提及,我也 不在此贅述。我想在這篇文章中帶領大家認識的,是比
          較不一樣的新挑戰。

           多核心與網絡運算
          穆爾定律觀察到,每隔兩年,在單一芯片上能做的事會加倍。但是穆爾定律繞道而行,不是
          產生越來越快的處理器(這幾年CPU頻率的增加已經趨緩), Intel與AMD等公司的作法是產
          生多核心的裝置:單一芯片內包含兩個、四個、甚至更多個處理器。如果你的程序沒有共時
          (concurrent),則一 次只會在單一個處理器上執行,使用者會認為你的程序很慢。對于
          編程員來說,如何充分運用多核心的運算威力,變成一個重要的課題。 而網絡的連結,造
          成分布式的環境;如何用更有效的方式進行分布式編程,也會越來越重要。 結合了上面了
          兩點因素,Erlang正開始獲得大家的重視。

          Erlang解決了現今開發者面對的最迫切問題之一:如何寫出可靠、共時(concurrent)、高
          效能的系統。Erlang已經在世界各地被許多公司 廣泛地采用,這些公司用它來產生可靠、
          有效率、具規模彈性的應用。 Erlang是一個編程語言,它的設計目的,正是為了幫助我們
          建立極度平行、分散、容錯(fault-tolerant)的系統。它已經被商業采用運行多 年,建
          立出許多容錯系統。多年來,這些Erlang所建立的系統出錯率極低。 Erlang程序在多核心
          的計算機上執行時,會充分運用系統:這意味著你的Erlang程序在四核心的計算機上會比單
          核心的計算機上快,而最棒的是,你完全不需 要更動程序,就有如此顯著的效果。當然,
          你可以用別的語言做到和Erlang一樣的事,但是只會事倍功半。
           GUI
          在Windows 3.x時代,Charles Petzold的Windows程序設計著作是大家必讀的經典。有人要
          他為Windows NT也寫一本這樣的書,他卻說:等NT賣千萬套再說吧!這顯示出Charles
          Petzold一直都是屬于「大眾技術類」的作家,當他在2007年也寫出一本3D程序書籍時,或
          許代表我們3D程序設計的時代已經揭開序幕。 Vista與MacOS都早已經進入3D的時代。如何
          運用3D的API,開發出更炫目的設計,會是未來GUI吸引使用者的重點。

           Java
          除了Sun官方的Java,Google剛推出的手機平臺Android也是一種Java平臺。更不用提AIR也
          可以算是廣義的Java平臺(太多地方都 類似Java,連Bytecode檔案格式都很類似)。由于
          Android和AIR都不是弱勢的平臺,所以可能會造成Java的分歧。 但是雖然彼此分歧,也算
          各有其所。Java用在Web后端,Android用在手機,AIR用在Web前端。

           Shell
          30多年來,沿襲自Unix的Shell用法,再怎么改變,終究是換湯不換藥。在微軟推出
          PowerShell之后,Shell終于有了截然不同的面貌和 更強大的威力。運用.NET,整合各種對
          象模型(WMI、COM…),PowerShell名稱中有出現Power(威力)絕非浪得虛名。相當值得
          系統管 理員與編程員學習。 但是提醒你,PowerShell或許不難上手,但是有太多陷阱。一
          開始不熟悉這些陷阱時,會吃不少苦頭。

           語言
          從Tiobe的編程語言需求排名,可以看到Ruby與D語言快速進入主流;Perl消退,被Python超
          越;C# 慢慢上漲、Java與C維持平盤、C++ 漸漸低落;Delphi持續探底,Lua往上猛竄。 估
          計未來幾年,OO語言還是主流,函數語言漸漸流行。目前主要是學術圈在使用函數語言(
          Functional Language),但確實有相當多跡象顯示,函數編程有可能會漸漸走入業界。

          自己寫parser。除非你用像REBOL這樣的語言,否則寫parser應該會是很痛苦的事,幸好你
          可以利用 ANTLR幫你產生parser。目前ANTLR已經支持相當多主流語言,ANTLR相當值得學習

           Security
          網絡的時代,危機四伏。許多系統的保全都是事后加上的,這樣子很危險。事先良好的規劃
          是建立保全環境的關鍵,而規劃的最佳工具是模型塑造 (modeling)。用形式上的作法,
          尋找威脅與弱點,以破除攻擊。 STRIDE是相當知名的威脅分類模型。STRIDE可以用來為系
          統的重大威脅進行分類。威脅正是攻擊者希望發生的事,也就是我們不希望發生的事。如果
          我 們塑模所有的STRIDE威脅分類,我們就有很高的機會可以涵蓋大多數重要的領域。

          STRIDE是Spoofing(偽造)、Tampering(竄改)、Repudiation(否認)、Information
          Disclosure(信息揭露)、Denial of Service(服務阻斷)、與Elevation of Privilege
          (特權提升)的縮寫。 建立保全模型,有三個部分:威脅、資產、與緩解(mitigation)
          。透過塑模了解你的系統可能面臨的威脅,并緩解問題,保護資產。不要讓你的程序, 布
          滿弱點,危害大眾,程序員必須及早補充Security相關的知識,將STRIDE應用在開發過程中

           整體而言
          簡單才是王道。PHP、RoR、REST會流行正是因為簡單才是王道。復雜的技術固然有許多美好
          的愿景(彈性、效率、跨平臺…),但是大多數的 developer尚未看到愿景,就已經半途陣
          亡。復雜的技術,學習門坎太高,開發過程太長,成本太高,所以只適合用在極少數的項目
          中。 多語言的時代來臨。以往只要用C/C++,就可以包辦各種應用的開發,不管是系統程序
          、桌面應用、網絡應用。現在卻是多語言的時代。多會幾個語言比較保 險,尤其是學會兩
          、三個Script語言絕對不嫌多。 今天的資產是明天的包袱。不甘心丟棄手中的技術(畢竟
          是多年學習的結果),改用(改學)新技術者,會漸漸被時代拋棄。Paradigm Shift是常態
          ,所以我們應該積極地接受這些新挑戰,畢竟IT產業就是這樣。

          posted @ 2008-02-28 18:07 zhrb 閱讀(405) | 評論 (0)編輯 收藏

                  接口主要是用來描述這個系統有些什么功能,應該怎么調用這些功能,是更高的一
          層抽象。主要是用來表現給外界看。同時接口比較穩定,不能隨便變來變去。因為你一
          變,對于外界來說你的表現就變了。接口對于系統來說,相當于一個規范的描述,感覺
          有點像虛擬機規范之于虛擬機。接口對于編程人員來說,相當于幫你隱藏了一些東西,
          這寫隱藏(如何實現)的東西,你不需要去關注。

              抽象類,在語法上的區別,你也說了。實際上抽象類也可以部分的實現接口的功能
          ,即描述一些東西給外界看。抽象類更像一個系統的骨架,里面有一些基本的需要共享
          的代碼。和一些已經實現好的方法。想想,如果全都用接口代替抽象類的話,那么我們
          底下子類的編寫就需要編寫大量的代碼。而這些子類,本可以實現代碼和屬性的共享的
          。所以抽象類,更多的是一個對內的東西。

              可以說接口是比抽象類更抽象的一個東西。接口和抽象類關注的地方不一樣。當然
          從邏輯上來看,他們的區別不是那么的明顯。但是從用法上來看,他們還是有比較大的
          區別。

              寫的有點亂...

          posted @ 2008-02-28 15:43 zhrb 閱讀(1460) | 評論 (3)編輯 收藏

          從某處獲得如下代碼:

           1// WelcomeApplet.java: Applet for displaying a message
           2import javax.swing.*;
           3
           4public class WelcomeApplet extends JApplet {
           5  /** Construct the applet */
           6  public WelcomeApplet() {
           7    getContentPane().add(
           8      new JLabel("Welcome to Java", JLabel.CENTER));
           9  }

          10}
          然后編輯好相應的html文件
          <html>
          <head>
          <title>Welcome Java Applet</title>
          </head>
          <body>
          <applet
            
          code = "WelcomeApplet.class"
            width 
          = 200
            
          height = 70>
          </applet>
          </body>
          </html>

          結果使用IE7和Maxthon2均無法正常運行,就是顯示一個叉。(機器已經正確安裝了sun公司的虛擬機)
          但是使用appletviewer卻可以正常運行,換用opera瀏覽器也可以正常打開。
          看來IE7的設計還是有問題啊。希望微軟和Sun這對冤家早日和解....
          posted @ 2008-02-24 11:12 zhrb 閱讀(2062) | 評論 (4)編輯 收藏

          java類庫中java.util.Arrays 類的toString方法的源代碼。如下:
           1   public static String toString(long[] a) {
           2        if (a == null)
           3            return "null";
           4    int iMax = a.length - 1;
           5    if (iMax == -1)
           6            return "[]";
           7
           8        StringBuilder b = new StringBuilder();
           9        b.append('[');
          10        for (int i = 0; ; i++{
          11            b.append(a[i]);
          12        if (i == iMax)
          13        return b.append(']').toString();
          14            b.append("");
          15        }

          16    }
          for循環有點奇怪,中間的那個表達式是空的。其實即使加上了條件,for (int i = 0; i<=iMax ; i++) 和源程序是一個效果的,純粹是多余的,但是多余地加上了這條,結果編譯出錯了!提示沒有返回語句
          上面的文字摘自下面的文章:
          http://www.aygfsteel.com/raylong1982/archive/2007/11/01/157542.html
          我的理解是:
          如果return語句唯一存在于for循環里面,for中間語句加入任何判斷條件,除非這個判斷條件絕對為真(如空語句、ture、3>2),否則判斷條件就有可能為假導致無法執行到這個循環中的return語句,編譯器顯然不允許這種情況發生,所以當return語句只在for循環體內出現,就不允許for循環中間的那個語句出現類似i<=iMax這樣的充滿不確定性的判斷,語法上。簡單一句話,包含return的那個句子,至少要讓編譯器覺得,這個return是可以執行到的,以減少程序運行后出錯的可能。
          不過即使編譯器如此努力,還是架不住人們可能出現的語義上的錯誤,看下面這段代碼: 
          1    public static int max(int a, int b){
          2        for(;;)
          3            if (falsereturn a>b?a:b;
          4    }

          從語義上分析,return是無論如何也執行不到的,但是編譯器認為for循環內的語句肯定可以執行到,并且里面還有return語句,所以就想當然的認為應該可以執行到return語句,所以沒有報錯。至于到底有沒有錯,想想看、試一下就知道了。呵呵


          posted @ 2007-11-01 22:05 zhrb 閱讀(838) | 評論 (0)編輯 收藏

               摘要: Java中接口與抽象類的區別(一些學習體會,不知正確與否,請指正)  閱讀全文
          posted @ 2007-10-18 12:10 zhrb 閱讀(1505) | 評論 (2)編輯 收藏

               摘要: 判斷字符串是否為數的幾種方法   閱讀全文
          posted @ 2007-10-15 22:37 zhrb 閱讀(1998) | 評論 (4)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 安远县| 英超| 舒兰市| 平和县| 黄梅县| 乌拉特中旗| 新乡市| 西青区| 鸡西市| 蒲江县| 精河县| 平顺县| 嫩江县| 新泰市| 巴林右旗| 安乡县| 桃源县| 丹阳市| 凌源市| 长治市| 壶关县| 柳州市| 即墨市| 长春市| 柳河县| 黎平县| 方正县| 祁东县| 忻州市| 西平县| 德江县| 微博| 永嘉县| 崇信县| 敦化市| 夏邑县| 垫江县| 武功县| 正宁县| 介休市| 汽车|