2010-05-27

使用 Arrays.binarySearch() 須注意的小細節

使用 Arrays.binarySearch() ,若發生 "怪怪" 的問題,請先檢查一下,陣列內的元素是否已先做過排序。

根據 Java API 的說明文件,使用 "binarySearch" 方法前,須對陣列先行 "排序" 。 (Ref: The array must be sorted prior to making this call......)

所以,陣列內各元素的值,若未先排序,就直接做 "搜尋" ,很容易就發生 "意外" 囉!

********************** [ Begin ] **********************
binarySearch

public static int binarySearch(int[] a,
                               int key)

    Searches the specified array of ints for the specified value using the binary search algorithm. The array must be sorted (as by the sort(int[]) method) prior to making this call. If it is not sorted, the results are undefined. If the array contains multiple elements with the specified value, there is no guarantee which one will be found.

    Parameters:
        a - the array to be searched
        key - the value to be searched for
    Returns:
        index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the array: the index of the first element greater than the key, or a.length if all elements in the array are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found.

********************** [ End ] **********************
以下用程式碼來示範  Arrays.binarySearch() "錯誤及正確" 的作法。

/********************************************************************
  示範程式碼
********************************************************************/
import java.util.Arrays;

public class Array_binarySearch_VV {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("[陣列未先排序,就做搜尋]\n");
        CanNotWork();

        System.out.println("===========================\n");
        
        System.out.println("[陣列已先排序,再做搜尋]\n");
        sortBeforeSearch();
    }
    
    /*
     * 有問題的寫法
     */
    static void CanNotWork() {
        int i = 0;
        int iSearch = 6;
        int iNumbers[] = { 3, 4, 10, 12, 6, 15 };

        // 排序前陣列內各元素的值
        System.out.println("排序前陣列內各元素的值:");
        System.out.println(
                Arrays.toString(iNumbers)
        );

        // 執行 binarySearch,結果找不到
        System.out.println("\n搜尋 [" + iSearch + "] 在陣列中的位置?");
        i = Arrays.binarySearch(iNumbers,iSearch);
        System.out.println("搜尋的結果值:" + i);
    }
    
    /*
     * 正確的寫法
     */
    static void sortBeforeSearch() {
        int i = 0;
        int iSearch = 6;        
        int iNumbers[] = { 3, 4, 10, 12, 6, 15 };

        // 排序前陣列內各元素的值
        System.out.println("排序前陣列內各元素的值:");
        System.out.println(
                Arrays.toString(iNumbers)
        );

        // 執行 sort
        Arrays.sort(iNumbers);
        
        // 排序後陣列內各元素的值
        System.out.println("排序後陣列內各元素的值:");
        System.out.println(
                Arrays.toString(iNumbers)
        );
        // 執行 binarySearch,結果找得到
        System.out.println("\n搜尋 [" + iSearch + "] 在陣列中的位置?");
        i = Arrays.binarySearch(iNumbers,iSearch);
        System.out.println("搜尋的結果值:" + i);
    }
}

2010-05-26

Google Site 網站示範例

一談起 Google 的協作平台 (Google Site) ,很多人都會說這是適用於 "協同運作用" 的網站平台。當您有 "架設網站" 的需求,很可能就會有人認為 "宜用 Google Blogger";不宜用 Google Site" 。

對於以上這樣的觀點,我個人則持保留態度。以下彙整一些使用 Google Site 建置的網站,各位可透過這些網站範例,做一了解、比較,也許會有不一樣的新觀點哦。


美士多公司網站
http://www.maximol.com.tw/

Google Fans Club 社群網站
http://gfc.googlapps.com.tw/

Google 提供的協作平台範例
以下的範例介紹置於 Facebook 的網站中,所以您需要有登入 Facebook 的帳號,才能看到這些介紹內容。
http://www.facebook.com/posted.php?id=262395110204&share_id=104275199607266&comments=1#!/gfc.sites?v=app_4949752878

雲端運算商機簡介

以下彙整與「雲端運算」相關的介紹資料。

什麼是「雲端運算」?
http://www.youtube.com/watch?v=Z5f2FQkLfdo


小妹大之雲端運算-1/2
http://www.youtube.com/watch?v=RYm1wE3RTLw&feature=related


小妹大之雲端運算-2/2
http://www.youtube.com/watch?v=HMzFgwdf5WE&feature=related


2010-05-25

Eclipse 與 SVN Client 端整合應用



讓 Eclipse 與 SVN 整合,令 "程式碼" 的簽入/簽出工作,可以直接在 Eclipse 的 IDE 環境運作。

[安裝指引]: http://www.bestlong.idv.tw/thread-531-1-1.html

2010-05-24

蕭宏慈老師《拉筋。拍打。治百病》示範影片

一分鐘就學會的快治手法
從北京、深圳、四川、西藏、香港再紅到美國,全球共同見證!

筋長一寸,壽延十年!
筋縮乃老化與疾病的原因,因此拉筋即抗老化!
拍打是道家古法,將身體裡淤堵的陳年垃圾,拍浮出表面而排除乾淨。

蕭宏慈老師拉筋拍打分享會

拍打動作示範說明影片

Widget 資源與使用指引

想要讓自己的網站或是部落格,多點 "功能" 嗎?

有人說:「如果目標只是喝牛奶,實在沒有必要去養頭牛;甚至為了養這頭牛,更去搞出個牧場」。

只要您能善用 Widget ,網站/部落格所需的功能,就能以此外掛,讓您的網站/部落格立即具有 "特異功能" ,您不必會如何撰寫程式而傷透腦筋。

欲使用 Widget 時,第一個問題是:網路的 "那(where)" 有這樣的資源可茲引用?第二個問題則是:須經那些操作、設定的步驟,才能使 Widget 可以正常運作?

我的老師在她的部落格整理了如下的文章,希望這對您此方面的需求,有所幫忙囉!

《土芭樂數位學堂 -- 小掛件》






可在線上剪輯 YouTube 影片的網站 -- TubeChop

免程式安裝,可以透過 Web Browser 直接在線上對 YouTube 網站的影片進行「剪輯」,萃取影片中您最想要的精華。

TubeChop 網站 -- 簡易操作使用指引

免費下載「張君雅小妹妹,MSN表情符號」

提供可在 MSN 使用的「張君雅小妹妹」表情符號下載。


由於有朋友在問 "如何安裝" ,以下網址有 "操作指引" ,希望能幫您解決安裝的問題。

MSN 表情符號安裝操作指引

Google Blogger Templates

使用 Google Blogger 服務的朋友,對於自部落格的「客製」化,可自以下所介紹的網站,找尋符合自己口味的「部落格模版 (Templates)」。

一些簡單的套用操作,轉眼間就能讓自己的部落格長得「水水的」的說。

http://btemplates.com/

神話

【美麗的神話】

聆听中国 - FS组合

Google 的網站服務已支援 SSL

您有在用 Google 的 Web Mail Service -- Gmail 嗎?

以前您使用 "瀏覽器(Web Browser)" 進入 Gmail 網站的時候,如果在網址(URL)輸入,用的是 "http://www.gmail.com/" ,那麼,現在最好改變一下吧!

由於現在的 Gmail 網站,終於支援 SSL 了,所以,為了網路資訊安全的考量,避免自己在 Gmail 的帳戶名稱及密碼,在網路上被人攔截竊取,通訊協定最好自 http 變更為 https 吧!

也就是說,下回進入 Gmail 的網站時,在 "網址中多加個 s" ,這樣就可以使用安全等級較高的 https 網路通訊協定囉!

網址全名: https://www.gmail.com/

Java 程式語言設計師的市場需求

21世紀,全球進入網路E世代。時光回溯,早在1975年,年僅19歲的比爾‧蓋茲即獨具遠見,看見明日世界的未來,將微處理器與軟體做結合,改變當時 以大型電腦主機為主的運行生態,進而展開一場科技業的革命。比爾‧蓋茲所描繪出的未來世界藍圖,是一個網際網路與世界接軌的高速化資訊時代。

透過軟體與硬體的完美結合,在0與1之間,人類得以突破舊有龜速化的資訊傳遞流程,彈指之間,訊息的溝通便能周遊全世界。也因此,我們得以藉由聰明的軟 體程式設計與高科技硬體設備,翱翔於網路世界,知識與訊息快速交換,讓學習曲線縮短,也能快速且完美地達成許多不可能的任務。

未來世界 E 指搞定


E化的世界,也勾勒出資訊時代特殊的產業與人力,真正能夠將各高科技產品功能發揮到極致的幕後推手,是專業的軟體設計與各類程式。也因此,在「E化不滅 定律」的未來世界裡,軟體程式設計師就扮演著相當重要的角色,而一位功力高強的軟體設計師,自然身價不凡。

JAVA 資訊業的國際語言


JAVA,是近10年來席捲資訊產業的新生代程式語言。因為跨平臺的設計特性,JAVA程式可以輕易地被移植到不同的機器設備上執行工作。它所具有的記 憶體自動回收和例外處理等機制,大幅度降低在撰寫傳統C/C++程式時的額外負擔與除錯難度。JAVA採用物件導向理論作為程式語言核心,相較於其他程 式語言而言,更容易維護與開發。

近年來,手機、PDA與iPhone等行動通訊設備蓬勃發展,加上Unix/Linux/Solaris系列伺服器的高普及率,使 JAVA被廣泛運用。 而在昇陽 (Sun Microsystem) 和國際商業機器(IBM) 等公司的大力推動下,JAVA已成為開發行動通訊設備和網站伺服器軟體不可 或缺的重要技術。因此,JAVA亦廣受學術界與企業界的採用,成為程式設計師需要精熟的基本程式語言之一。

北訓電腦臺中認證中心講師胡啟明表示,就程式設計而言,分為JAVA(IBM體系,客戶以大型企業為主)與.NET(微軟體系,客戶以中小型企業為主) 兩大類程式設計領域,兩者技術與運用層面差距不大。

巨匠電腦北區認證中心JAVA程式設計師李易紳進一步說明,由於新崛起的.NET是近5年才積極進軍市場,而JAVA程式設計在業界使用時間較長,因 此,就技術面而言,.NET與JAVA程式設計雷同處頗多,但JAVA程式設計人才的市場普及率仍略勝.NET,是以,對JAVA程式設計師的需求較 高。

對於JAVA程式設計師的市場需求與產業前景,李易紳進一步說明,目前國內與日本對於JAVA程式設計師的需求度極高,加上通訊手機業者的各類加值服務 內容增多,跨平臺資訊交流整合模式的風氣日盛,未來3-5年內可以說是JAVA程式設計師的黃金年代。「想要跨足JAVA程式設計師領域的新鮮人或是業 內好手,應充實自己的專業技能,最好具備專業證照。」李易紳說。

聯成電腦JAVA程式設計師張益裕則表示,JAVA程式設計是目前較受重視與歡迎的程式設計資格認證項目之一。政府對產業E化的積極推動,以及資策會與 職訓局等相關單位大力推廣下,各類資訊軟體課程的獎勵補助方案與政策,隨科技產業的快速發展而與時俱進,民間企業、補教機構與學校單位多設有科技資訊類 科系與職訓課程。

成為JAVA程式設計師的基本要件


若將焦點鎖定在JAVA程式設計師,對這類工作有興趣者需具備何種職能條件,方能順利進入職場?綜合多位資深JAVA程式設計師的看法,瞭解物件導向概 念、程式語言(最好是第3代程式語言),以及熟悉業界常用的程式庫,如:JAVA Spring與Hibernate(物件/關係對應的解決方案),並 了解程式開發工具(如Eclipse)者,就有機會成為JAVA程式設計師。不過,巨匠電腦北區認證中心JAVA程式設計師李易紳補充說明,由於 JAVA程式物件導向概念在學習上有一定難度,對想要投入JAVA程式設計的有心人來說,需投入更多心力與學習時間。

資訊科技日新月異,相關程式應用多變、版本升級快速,是以,JAVA程式設計師須留意自身對資訊與技術面的更新,否則易失去競爭力。而JAVA程式設計 師的自修管道,除參與各類程式設計相關課程,亦可與相關社群網站網友交換產業情報。

JAVA語言熟悉與否 攸關「錢」途


JAVA程式設計師的薪資概分3類:若僅負責寫程式,月薪約35,000元;懂系統分析的JAVA程式設計師,月薪約40,000 元;具有專案管理能力 的JAVA程式設計師,月薪可達50,000元。工作採責任制,無明確休假日,休假時間較為彈性,視專案執行進度而定。 部份JAVA程式設計師選擇以 SOHO族型態接案,不過,這種方式所接專案規模較小,案源較不穩定。此外,也有JAVA程式設計師擔任派遣工作,若與SOHO接案規模相比,專案挑戰 性與收入皆勝出許多。

至於相關從業人員的職涯規劃,李易紳說,「多數JAVA程式設計師朝管理階層或講師路線作職涯方面的調整。」

職場觀測站


工作職能標準
  1. 了解JAVA物件導向概念與程式語言。
  2. 熟悉JAVA程式庫。
  3. 具備JAVA程式開發工具運用能力。

市場需求


政府單位對E化的推動與全球科技化趨勢下,數位科技、行動通訊的結合與多元運用,皆需JAVA程式設計師規劃執行。

工作環境

  1. 為行動工作者,工作地點彈性。只要有電腦,處處皆為辦公室,但仍需不時與客戶及合作團隊溝通及開會。
  2. 多以專案執行為之,採單獨執行或團隊合作完成任務。

工作內容

  • JAVA程式設計
  • 產品開發
  • 專案管理與執行

工作時間


責任制,多依專案結案時間為主。

教育訓練


1. JAVA程式語言與程式開發工具運用。
2. 了解負責專案特色與執行任務內容。

雇主用人偏好

1. 細心、有解決問題的能力。
2. 人際溝通與團隊適應力佳。
3. 具專業證照。

薪資水準

1. 相關科系畢業生/無工作經驗者:約28,000-32,000元
2. 1-3年工作經驗:約38,000-52,000元
3. 3年以上經驗:約60,000-70,000元

升遷條件

1. 以資歷與專業能力取勝。
2. 若朝行政管理職發展,則配合公司內部升遷制度進行考核。

未來發展

1. 公司內部MIS部門擔任系統維護工作。
2. 資訊業商品開發人員。
3. 大型專案管理、人員招募、統籌與執行。
4. 擔任專業講師。

職務進用資格

1. 具JAVA相關知識者。
2. 無特殊科系限制。

工作辛苦與危險度

久坐電腦前,視力與姿勢不良等問題發生率高。

多年的職場經驗與用人經驗,張益裕的感慨是,碰到年輕一代的JAVA程式設計師,尤其是具有基本程式設計概念與技術的年輕設計師,易有「溝通」上的問 題。「不少年輕設計師喜歡『走自己的路』,不太容易接受資深設計師的建議。在專案執行的結案壓力下,有時造成團隊的困擾。」此外,新進JAVA程式設計 師的行事風格與價值觀自成一格,過於強調個人主義的結果,往往破壞團隊中的人際和諧。因此,他個人聘用新進人員的標準,特別強調人際溝通、抗壓性與配合 度。

創造自我價值 成就感如影隨形


李易紳表示,身為JAVA程式設計師,最難克服的不是專案完成的時間壓力,而是面臨程式寫不出來或技術瓶頸時的挫折感。至於工作成就感,李易紳則認為, 「看到消費者因自己的努力得以運用科技所提供的便利,甚至找到更有效率的商業交易模式並成功獲利,是個人最大成就。」

進修主播臺


JAVA程式設計師進修管道頗多,如:資策會人才培育課程中設有JAVA程式設計師就業養成班與一系列JAVA技術課程。資策會與各民間電腦補習班業者 亦開設相關證照考取班。勞委會職訓局則規劃電腦系統設計及分析、電腦程式設計等相關課程,內容包含:網路工程人員訓練班、電腦進階班、程式設計班、 Linux系統管理認證班、Linux網站管理與架設班、手機JAVA遊戲程式設計班、JAVA程式設計、C/C++程式設計基礎班等。

開站宣告

CCC1960 部落格今天開張囉