Android開發(1):隨機繪制彩色實心圓
posted @ 2011-09-06 16:06 銀河使者 閱讀(9696) | 評論 (2) 編輯
隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
|
javaAndroid開發(1):隨機繪制彩色實心圓
摘要: 本文介紹了如何利用Android的繪圖技術隨機繪制彩色實心圓。 閱讀全文
posted @ 2011-09-06 16:06 銀河使者 閱讀(9696) | 評論 (2) 編輯 關于Android中傳遞數據的一些討論
摘要: 雖然Intent和靜態變量都可以傳遞數據,但intent功能有限,static過于wrong,那么有沒有一種更好的方式呢,答案是yes,這就是Application Context,一個全局的Context,詳情請讀者參見本文的內容。 閱讀全文
posted @ 2010-11-09 16:25 銀河使者 閱讀(5355) | 評論 (1) 編輯 《Android/OPhone 開發完全講義》連載(10):Sqlite數據庫
摘要: 現在終于到講解數據庫的時間了。數據庫也是Android存儲方案的核心。在Android系統中使用了Sqlite數據庫。Sqlite是非常輕量的數據庫。從Sqlite的標志是一根羽毛就可以看出Sqlite的目標就是無論是過去、現在,還是將來,Sqlite都將以輕量級數據庫的姿態出現。Sqlite雖然輕量,但在執行某些簡單的SQL語句時甚至比MySQL和Postgresql還快。由于很多讀者是第一次接觸Sqlite數據庫,因此,在介紹如何在Android中使用Sqlite之前,先在本節簡單介紹一下如何在PC上建立Sqlite數據庫,以及Sqlite數據庫的一些特殊方面(由于本書的目的不是介紹Sqlite數據庫,因此,與其他數據庫類似的部分(如insert、update等)本書將不再介紹。沒有掌握這些知識的讀者可以參閱其他關于數據庫方面的書籍。 閱讀全文
posted @ 2010-10-28 22:16 銀河使者 閱讀(6869) | 評論 (0) 編輯 《Android/OPhone開發完全講義》連載(8):收到短信了,我該做點什么?
摘要: 短信是手機中經常使用到的一種服務。然而,當手機接收到短信時,也會向系統發送廣播。如果我們的應用程序要在手機接收到短信后做點什么,那就需要接收這個系統廣播。
接收系統廣播的步驟我們已經熟悉了,下面就按步就班地來完成這兩個步驟。 閱讀全文 posted @ 2010-09-13 16:59 銀河使者 閱讀(2915) | 評論 (1) 編輯 《Android/OPhone開發完全講義》連載(7):使用SharedPreferences存取復雜數據
摘要: 我們知道SharedPreferences只能保存簡單類型的數據,例如,String、int等。如果想用SharedPreferences存取更復雜的數據類型(類、圖像等),就需要對這些數據進行編碼。我們通常會將復雜類型的數據轉換成Base64編碼,然后將轉換后的數據以字符串的形式保存在 XML文件中。
閱讀全文 posted @ 2010-09-08 09:49 銀河使者 閱讀(4067) | 評論 (5) 編輯 實用Android開發工具和資源精選
摘要: 本文介紹了20個關于Android應用程序開發的實用工具資源,供大家分享。在google、開源平臺,和來自移動電話制造商HTC,Samsung和Sony Ericsson的支持下,Android平臺在市場占有率上相比去年取得的886%增長!如果我只看增長率,IPhone據統計才有61%的增長。這些 數據可以給你關于兩個平臺流行度的印像,但是事實上,這些數據告訴了智能機開發員的誰才是真正的贏家。在時下,智能機越來越流行,因此成為一個快速增長的 Android平臺的智能機開發人員將會是一個不錯的選擇。
閱讀全文 posted @ 2010-08-28 09:28 銀河使者 閱讀(4327) | 評論 (0) 編輯 中國移動開發者社區專訪:學習Android的兩大法寶
摘要: 最近Android比較火,無論是摩托羅拉搭載 Android 2.2準備咸魚翻身,還是Android Market年底將在臺灣開市……這些消息足以讓人們為之振奮。但當人們看到Android的外表光鮮之時,更要注意到其潛在內涵,尤其對于廣大開發者,一味盲目地崇拜并扎入其中并不實為理智之舉。本期,我們為您邀請到一位與代碼打了15年交道的李寧,以其親身經歷和開發經驗來為廣大開發者提出鑒言和忠告。 閱讀全文
posted @ 2010-08-25 05:45 銀河使者 閱讀(4994) | 評論 (2) 編輯 可循環顯示圖像的Android Gallery組件
摘要: Gallery組件主要用于橫向顯示圖像列表,不過按常規做法。Gallery組件只能有限地顯示指定的圖像。也就是說,如果為Gallery組件指定了10張圖像,那么當Gallery組件顯示到第10張時,就不會再繼續顯示了。這雖然在大多數時候沒有什么關系,但在某些情況下,我們希望圖像顯示到最后一張時再重第1張開始顯示,也就是循環顯示。要實現這種風格的Gallery組件,就需要對Gallery的Adapter對象進行一番改進。
閱讀全文 posted @ 2010-08-23 23:44 銀河使者 閱讀(5132) | 評論 (0) 編輯 移動互聯網的新寵:Android之繽紛世界
摘要: Android這個詞已強占我們的眼球有一段時間了。在此之前,提到Android,沒人會和移動互聯網以及Google這兩個當今最火辣的詞聯系起來。然而,自從Google推出自己的移動操作系統Android以來,Android、Google和移動互聯網就好像10年前的Windows、微軟和PC操作系統一樣,成為了當今最吸引眼球的組合。 閱讀全文
posted @ 2010-08-17 12:14 銀河使者 閱讀(2063) | 評論 (2) 編輯 《人人都玩開心網:Ext JS+Android+SSH整合開發Web與移動SNS》銷售排名第4,發篇ExtJS的文章(拖放樹結點)慶祝下
摘要: 《人人都玩開心網:Ext JS+Android+SSH整合開發Web與移動SNS》一書上架短短幾天,就進入了互動網計算機類銷售總排名第4的好成績?,F發篇Ext JS的技術文章慶祝下。在本文將介紹TreePanel組件非常有意思的一個功能:結點拖放。要使TreePanel組件的結點可以拖放非常簡單,只需要將TreePanel類的enableDD選項參數設為true即可。當然,要想實現更復雜的功能,還需要配合其他的參數和事件。 閱讀全文
posted @ 2010-08-03 14:15 銀河使者 閱讀(3678) | 評論 (0) 編輯 實現基于Android的英文電子詞典
摘要: 英文詞典是手機中經常使用的應用。因此,在本文將結合Android來討論如何實現一個
Android版的英文詞典。實現英文詞典的方法很多。在本文使用了SQLite數據庫來保存英文單詞信息。系統通過SQLite數據庫中保存的單詞信息來查找到與指定英文對應的中文信息。當然,實現這樣一個英文詞典需要解決一系列技術問題。例如,如何將保存英文單詞信息的數據庫文件隨程序(apk文件)一起發布;發布后如何打開數據庫;如何在輸入前幾個字母后,在AutoCompleteTextView組件提示列表中顯示以所輸入字符串開頭的所有單詞。在本章將逐漸給出這些問題的詳細答案。 閱讀全文 posted @ 2010-07-31 10:29 銀河使者 閱讀(6581) | 評論 (1) 編輯 不使用中間變量交換兩個數(Java版)
摘要: 在程序中實現交換兩個數的功能并不復雜,但如果不使用中間變量,就需要動一下腦筋。在本文介紹了兩個方法(其實原理都是一個)。其基本原理就是數的中和。也就是說,通過某種運算(二元運算)將a和b兩個數變成一個數,并保存在其中一個變量中。然后再通過同樣的運算符將a或b中和掉。這樣實際上是利用了a或 b本身作為了中間變量。 閱讀全文
posted @ 2010-07-28 10:29 銀河使者 閱讀(2800) | 評論 (8) 編輯 Android系統原理與源碼分析(1):利用Java反射技術阻止通過按鈕關閉對話框
摘要: 眾所周知,AlertDialog類用于顯示對話框。關于AlertDialog的基本用法在這里就不詳細介紹了,網上有很多,讀者可以自己搜索。那么本文要介紹的是如何隨心所欲地控制AlertDialog。 閱讀全文
posted @ 2010-07-27 23:05 銀河使者 閱讀(4482) | 評論 (2) 編輯 《人人都玩開心網:Ext JS+Android+SSH整合開發Web與移動SNS》樣章下載posted @ 2010-07-24 11:30 銀河使者 閱讀(5430) | 評論 (4) 編輯 《Android/OPhone開發完全講義》連載(5):Notification與狀態欄信息
摘要: Notification與Toast都可以起到通知、提醒的作用。但它們的實現原理和表現形式卻完全不一樣。Toast其實相當于一個組件(Widget)。有些類似于沒有按鈕的對話框。而Notification是顯示在屏幕上方狀態欄中的信息。還有就是Notification需要用NotificationManager來管理,而Toast只需要簡單地創建Toast對象即可。 閱讀全文
posted @ 2010-07-13 08:20 銀河使者 閱讀(2705) | 評論 (0) 編輯 《Android/OPhone開發完全講義》連載(4):Android SDK中常用命令行工具(二)posted @ 2010-07-08 20:58 銀河使者 閱讀(2346) | 評論 (0) 編輯 《Android/OPhone 開發完全講義》已出版,現提供源代碼下載
摘要: 《Android/OPhone 開發完全講義》已出版。 閱讀全文
posted @ 2010-07-01 13:43 銀河使者 閱讀(5243) | 評論 (3) 編輯 Google 菜市場(Android Market)上不去的解決方法
摘要: 最近幾天,突然手機(我的是G3,估計其他android手機也有類似的情況)上不了android market了,甚至連gmail也出現網絡問題(通過gprs、3g和wifi都不好使)。一開始還以為是手機的問題,后經過多次重啟,刷機,還是存在 問題。最后經過驗證,google更改了服務設置,相關服務(包括android market)已成了限制服務(原因嗎,大家都知道,這里就不說了),但還是有辦法解決地。首先下載下面的zip文件。 閱讀全文
posted @ 2010-06-15 13:20 銀河使者 閱讀(2607) | 評論 (1) 編輯 《Android/OPhone 開發完全講義》樣章和目錄下載
摘要: 《Android/OPhone 開發完全講義》一書預計在6-15左右出版,現提供3個樣章(第1、8和14章)試讀,歡迎提出寶貴意見。 閱讀全文
posted @ 2010-06-02 14:00 銀河使者 閱讀(7417) | 評論 (20) 編輯 新書《Android/OPhone開發完全講義》即將出版,看看哪個封面更好
摘要: 新書《Android/OPhone開發完全講義》將在6月份出版,現在三個候選封面效果。各位看看哪個封面更好些。
閱讀全文 posted @ 2010-05-26 20:47 銀河使者 閱讀(2504) | 評論 (12) 編輯 有道難題2009復賽題解答(Java版):求大于給定數的最小不重復數
摘要: 最近看了有道出的幾個復賽題,覺得很好玩,現給出Java版的答案。先看看提干部分。如果一個數字十進制表達時,不存在連續兩位數字相等,則稱之為“不重復數”。例如,105,1234和12121都是“不重復數”,而11,100和 1225不算。給定一個long類型數字A,返回大于A的最小“不重復數”。 閱讀全文
posted @ 2010-05-11 16:23 銀河使者 閱讀(3590) | 評論 (21) 編輯 Android組件系列(1):自動完成輸入內容的組件(AutoCompleteTextView )
摘要: AutoCompleteTextView和EditText組件類似,都可以輸入文本。但AutoCompleteTextView組件可以和一個字符串數組或List對象綁定,當用戶輸入兩個及以上字符時,系統將在AutoCompleteTextView組件下方列出字符串數組中所有以輸入字符開頭的字符串,這一點和www.Google.com的搜索框非常相似,當輸入某一個要查找的字符串時,Google搜索框就會列出以這個字符串開頭的最熱門的搜索字符串列表。 閱讀全文
posted @ 2010-04-21 14:53 銀河使者 閱讀(2798) | 評論 (0) 編輯 使用Java等比例縮放圖像
摘要: 繪制圖像的基本原理是創建一個目標大小的畫布,然后讀取源圖像,并將該圖像繪制這個畫布上。為了使程序通用,源圖像和壓縮后的目標圖像應用分別使用 InputStream和OutputStream來表示。 閱讀全文
posted @ 2010-04-16 15:11 銀河使者 閱讀(3287) | 評論 (4) 編輯 在Java中按字節獲得字符串長度的兩種方法
摘要: 由于Java是基于Unicode編碼的,因此,一個漢字的長度為1,而不是2。但有時需要以字節單位獲得字符串的長度。例如,“123abc長城”按字節長度計算是10,而按Unicode計算長度是8。為了獲得10,需要從頭掃描根據字符的Ascii來獲得具體的長度。如果是標準的字符,Ascii的范圍是0至255,如果是漢字或其他全角字符,Ascii會大于255。 閱讀全文
posted @ 2010-04-11 10:53 銀河使者 閱讀(22666) | 評論 (3) 編輯 Android 1.5和Android 2.1在相對布局(RelativeLayout)上的區別
摘要: 近日在做一個程序,需要在ListView中動態擴展每一個列表項。采用的方法是將列表項中某些組件的android:visibility屬性設為 gone,等需要顯示該組件時,再將android:visibility屬性設為visible。而且列表項的布局是RelativeLayout。 android:visibility屬性為gone的組件也參與了相對位置設置。例如,有A、B、C三個組件,其中B的 android:visibility屬性值為gone,也就是說,B不顯示。而A和C顯示。相對位置是B在A的下面,C在B的下面。這么做比理論上是沒問題的,由于啟動的是android 2.1的模擬器,所以列表項看起來完全正常。 閱讀全文
posted @ 2010-03-17 09:27 銀河使者 閱讀(4689) | 評論 (3) 編輯 大量Ophone/Android技術文章推薦
摘要: 先慶祝下,剛獲得OPhone SDN技術征文大賽二等獎,Dell Mini 3手機一部,支持移動的TD-SCDMA網絡?,F在終于可以做聯機測試了,哈哈?。?
文章URL http://www.ophonesdn.com/article/list 閱讀全文 posted @ 2010-01-15 13:08 銀河使者 閱讀(2149) | 評論 (2) 編輯 Android/Ophone中的懸浮對話框和即點即關對話框
摘要: Activity是Ophone系統的4個應用程序組件之一。通過傳統方法顯示的Activity都是充滿整個屏幕,也就是全屏的Activity。事實上,Activity不僅可以全屏顯示,還可以象對話框一樣直接顯示在屏幕上。而且可以通過單擊屏幕的任何位置(包括Activity內部和Activity外部)來關閉Activity。
閱讀全文 posted @ 2010-01-11 08:31 銀河使者 閱讀(3276) | 評論 (0) 編輯 《Java Web開發速學寶典》樣章(共3章)
摘要: 第4章 Servlet開發基礎、第8章 Java Web國際化、第10章 簡單標簽 閱讀全文
posted @ 2009-12-14 14:33 銀河使者 閱讀(4781) | 評論 (1) 編輯 Java Web開發速學寶典(JSP+Servlet+Struts 2 + Hibernate + Spring)源代碼下載
摘要: 由于有些讀者因隨書光盤遺失,應廣大讀者的要求,特提供《Java Web開發速學寶典》一書的源代碼下載,由于源代碼所使用的jar包過大(隨書光盤中包含了完整的源代碼和jar包),在這里只提供了jar文件的列表,讀者可以自行獲得這些jar包。 閱讀全文
posted @ 2009-11-16 13:14 銀河使者 閱讀(4080) | 評論 (2) 編輯 Java網絡編程從入門到精通(34):讀寫緩沖區中的數據---使用get和put方法按順序讀寫單個數據
摘要: 對于緩沖區來說,最重要的操作就是讀寫操作。緩沖區提供了兩種方法來讀寫緩沖區中的數據:get、put方法和array方法。而get、put方法可以有三種讀寫數據的方式:按順序讀寫單個數據、在指定位置讀寫單個數據和讀寫數據塊。除了上述的幾種讀寫數據的方法外,CharBuffer類還提供了用于專門寫字符串的put和append方法。在本文及后面的文章中將分別介紹這些讀寫緩沖區的方法。 閱讀全文
posted @ 2009-10-09 09:34 銀河使者 閱讀(4880) | 評論 (1) 編輯 新書出版:Java Web開發速學寶典,歡迎試讀
摘要: 本書主要對Java Web的核心技術——JSP和Servlet進行講解,此外,本書還對目前流行的MVC框架Struts 2(版本為Struts 2.1.6)的核心功能以及如何整合Spring與Hibernate進行了由淺入深的介紹。.本書分為4篇,第1篇對開發Java Web程序所必須掌握的技術進行講解,并用一個實例帶領讀者進入Java Web世界;第2篇主要講解JSP技術,使讀者可以掌握JSP的核心技術;第3篇講解Struts 2的核心內容,以及如何將Struts 2、Spring和Hibernate進行整合;第4篇是綜合實例,通過對3個完整項目的學習,讀者可以更好地對本書前3篇所講的內容進行理解和消化。本書的讀者對象包括:已經掌握Java基礎知識,想學習Java Web技術的讀者;已經掌握Java Web的基礎知識,想進一步了解和掌握Java Web核心技術的讀者;對JSP和Servlet技術比較熟悉,想進一步學習和掌握Struts 2,并想將Struts 2技術引入Java Web應用的讀者。 閱讀全文
posted @ 2009-09-21 12:11 銀河使者 閱讀(1932) | 評論 (0) 編輯 流媒體程序開發之:H264解碼器移植到OPhone
摘要: 本文用通俗的語言描述在OPhone上如何實現視頻的流暢播放及解碼器的調用方法。 閱讀全文
posted @ 2009-09-20 17:54 銀河使者 閱讀(2641) | 評論 (1) 編輯 Java網絡編程從入門到精通(33):非阻塞I/O的緩沖區(Buffer)
摘要: 如果將同步I/O方式下的數據傳輸比做數據傳輸的零星方式(這里的零星是指在數據傳輸的過程中是以零星的字節方式進行的),那么就可以將非阻塞I/O方式下的數據傳輸比做數據傳輸的集裝箱方式(在字節和低層數據傳輸之間,多了一層緩沖區,因此,可以將緩沖區看做是裝載字節的集裝箱)。大家可以想象,如果我們要運送比較少的貨物,用集裝箱好象有點不太合算,而如果要運送上百噸的貨物,用集裝箱來運送的成本會更低。在數據傳輸過程中也是一樣,如果數據量很小時,使用同步I/O方式會更適合,如果數據量很大時(一般以G為單位),使用非阻塞I/O方式的效率會更高。因此,從理論上說,數據量越大,使用非阻塞I/O方式的單位成本就會越低。產生這種結果的原因和緩沖區的一些特性有著直接的關系。在本節中,將對緩沖區的一些主要特性進行講解,使讀者可以充分理解緩沖區的概念,并能通過緩沖區來提高程序的執行效率。 閱讀全文
posted @ 2009-08-31 08:49 銀河使者 閱讀(3227) | 評論 (0) 編輯 Java網絡編程從入門到精通(32):一個非阻塞I/O的例子
摘要: 為了使讀者更好地理解非阻塞I/O,本節給出了一個簡單的例子用來演示如何將非阻塞I/O應用到網絡程序中。讀者可以先不必管這個例子的具體細節。因為這個例子的主要目的并不是講解非阻塞I/O的使用,而是先讓讀者對非阻塞I/O有一個籠統的感性認識。在看完這個例子后,讀者可能會有很多疑問,在本章后面的部分將會逐漸揭開這些迷團。這個例子的主要功能是訪問新浪網,并將新浪網的首頁在控制臺上輸出。 閱讀全文
posted @ 2009-08-21 09:08 銀河使者 閱讀(3038) | 評論 (3) 編輯 Android 資源和國際化
摘要: 資源是您在代碼中使用到的并且在編譯時被打包進您的應用程序的附加文件。Android支持多種不同的文件,包括XML、PNG和JPEG文件。XML文件的格式決定于其描述的內容。這些文件將描述文件支持的類型、語法或格式。 閱讀全文
posted @ 2009-08-21 08:25 銀河使者 閱讀(3367) | 評論 (0) 編輯 Android教程之實現動作感應技術
摘要: 今天有個公司說需要動作感應的幾個小游戲!也接觸android很久了,但是以前沒有看過關于動作感應技術的教程,到google上也沒搜索到類似教程!只有自己看API了,加上就其他平臺的動作感應試試吧!就在這里記錄下收獲吧! 閱讀全文
posted @ 2009-08-17 10:32 銀河使者 閱讀(932) | 評論 (0) 編輯 中國農歷算法java實現
摘要: 中國農歷算法 - 實用于公歷 1901 年至 2100 年之間的 200 年 閱讀全文
posted @ 2009-08-16 16:53 銀河使者 閱讀(1433) | 評論 (2) 編輯 Java網絡編程從入門到精通(31):非阻塞I/O簡介
摘要: 在網絡應用中,一般可以采用同步I/O(阻塞I/O)和非阻塞I/O兩種方式進行數據通訊。這兩種方式并非互相排斥和互相取代。我們可以在平時的應用中單獨采用其中一種通訊方式,也可以混合使用這兩種通訊方式。在本文中就什么是非阻塞I/O以及為什么要使用這種通訊方式進行了介紹,在下一篇文章中給出了一個簡單的例子來演示在網絡應用中如何使用非阻塞I/O進行通訊。 閱讀全文
posted @ 2009-08-16 10:46 銀河使者 閱讀(3134) | 評論 (2) 編輯 Java網絡編程從入門到精通(30):定制accept方法
摘要: 使用ServerSocket類的implAccept方法可以使用accept方法返回一個Socket子類對象。但implAccept是protected方法,因此,必須在ServerSocket類的子類中覆蓋accept方法,然后在accept方法中使用implAccept方法重新設置Socket對象。 閱讀全文
posted @ 2009-08-15 16:57 銀河使者 閱讀(2864) | 評論 (4) 編輯 Java網絡編程從入門到精通(29):服務端Socket的選項
摘要: ServerSocket類有以下三個選項:
1. SO_TIMEOUT: 設置accept方法的超時時間。 2. SO_REUSEADDR:設置服務端同一個端口是否可以多次綁定。 3. SO_RECBUF:設置接收緩沖區的大小。 閱讀全文 posted @ 2009-08-12 14:50 銀河使者 閱讀(3210) | 評論 (1) 編輯 Java網絡編程從入門到精通(28):獲取ServerSocket信息的方法及FTP原理
摘要: 本文介紹了如何通過getLocalPort、getInetAddress和getLocalSocketAddress方法獲得服務端的信息,以及FTP的兩種模式:主動模式和被動模式,及其原理。 閱讀全文
posted @ 2009-08-12 14:27 銀河使者 閱讀(4803) | 評論 (1) 編輯 Java網絡編程從入門到精通(27):關閉服務端連接
摘要: 在客戶端和服務端的數據交互完成后,一般需要關閉網絡連接。對于服務端來說,需要關閉Socket和ServerSocket。在關閉Socket后,客戶端并不會馬上感知自已的Socket已經關閉,也就是說,在服務端的Socket關閉后,客戶端的Socket的isClosed和isConnected方法仍然會分別得到false和true。但對已關閉的Socket的輸入輸出流進行操作會拋出一個SocketException異常。 閱讀全文
posted @ 2009-08-04 09:26 銀河使者 閱讀(3711) | 評論 (3) 編輯 在Android(OPhone)模擬器中加載和使用SDCard卡
摘要: Android模擬器或真機都會有一定大小的內部存儲空間(不是指內存,指的是持久化存儲空間),但這并不夠,有時我們需要更大的存儲空間。為了在模擬器上開發使用擴展存儲空間的程序,需要在PC上模擬一個SDCard的虛擬文件,然后加載到模擬器中。 閱讀全文
posted @ 2009-07-28 16:11 銀河使者 閱讀(3885) | 評論 (0) 編輯 想搶先體驗Android操作系統的魅力嗎?那就使用Android LiveCD吧!
摘要: 由于目前基于Android的手機在國內還沒有上市,就算上市,可以也比較貴。如果只是為了體驗android,花幾千元買個手機也不值得。不過幸好 Google想到了這一點,剛剛推出了Android LiveCD 0.2。那么什么叫LiveCD呢?就是可以刻在光盤中啟動的Android,可以在PC上運行。當然,也可以使用VMWare、VirtualPC等虛擬軟件來運行?;蚴褂媚承┛啼涇浖蜭iveCD刻在U盤上,那就變成了Android LiveUSB了。要注意哦,Android LiveCD可不是Android SDK中的那個模擬器,它是真正的操作系統,不是模擬的。用模擬器測程序并不一定符合真機的實際情況,而用Android LiveCD來測程序可以做到100%吻合,因為它就是真正的操作系統,唯一的不同就是一個運行在PC上,一個運行在手機上。不說廢話了,先來下一個 Android LiveCD吧,可以完全免費的哦。 閱讀全文
posted @ 2009-07-25 11:37 銀河使者 閱讀(2867) | 評論 (2) 編輯 生成n*n蛇形矩陣的算法
摘要: 在描述算法之前,先看看下面的5*5的表格:
1 3 4 10 11 2 5 9 12 19 6 8 13 18 20 7 14 17 21 24 15 16 22 23 25 上面的表格很容易看出規律。就是從左上角第一個格開始(起始為1),然后延右上角到左下角的斜線。先從下到上,再從上到下。開始按數字遞增排列。也就是說每一個斜線上分別有如下幾組數字: 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 閱讀全文 posted @ 2009-07-24 11:04 銀河使者 閱讀(8696) | 評論 (7) 編輯 android和OPhone模擬器界面對比
摘要: OPhone是中國移動推出的手機操作系統平臺,是基于android的,只是做了一些擴展。在界面和widget的顯示效果還是有一些區別的。下面是我做的一個寫blog的應用??纯此鼈兊慕缑嫘Ч?。 閱讀全文
posted @ 2009-07-23 12:16 銀河使者 閱讀(2166) | 評論 (3) 編輯 實現一個用于顯示當前時間的Google Android 窗口小部件(AppWidget)
摘要: Android不用我多說了,這是Google在2007年推出的一款主要用于移動設備的操作系統。google在android sdk1.5中加入了appwidget api。通過這項技術,可以在android手機的主界面(Home界面)顯示可以拖動的窗口,用于顯示各種用戶需要的信息。至于顯示什么,就完全依靠開發人員的想象力了。OK,廢話少說。我們先來體驗一下如何開發一個顯示當前時間的appwidget。這個appwidget每秒刷新一次,顯示時、分和秒。 閱讀全文
posted @ 2009-07-22 16:05 銀河使者 閱讀(2745) | 評論 (2) 編輯 Java網絡編程從入門到精通(26):在服務端接收和發送數據
摘要: 在建立完ServerSocket對象后,通過accept方法返回的Socket對象,服務端就可以和客戶端進行數據交互。Socket類和ServerSocket類都有兩個得到輸入輸出流的方法:getInputStream和getOutputStream。對于Socket類而言,使用getInputStream方法得到的InputStream是從服務端獲取數據,而getOutputStream方法得到的OutputStream是向服務端發送數據。而ServerSocket的getInputStream和getOutputStream方法也類似。InputStream從客戶端讀取數據,OutputStream向客戶端發送數據。 閱讀全文
posted @ 2009-07-20 13:53 銀河使者 閱讀(3035) | 評論 (2) 編輯 Java網絡編程從入門到精通(25):創建ServerSocket對象
摘要: ServerSocket類的構造方法有四種重載形式,它們的定義如下:
public ServerSocket() throws IOException public ServerSocket(int port) throws IOException public ServerSocket(int port, int backlog) throws IOException public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 在上面的構造方法中涉及到了三個參數:port、backlog和bindAddr。其中port是ServerSocket對象要綁定的端口,backlog是請求隊列的長度,bindAddr是ServerSocket對象要綁定的IP地址。 閱讀全文 posted @ 2009-07-12 19:40 銀河使者 閱讀(3774) | 評論 (2) 編輯 Java網絡編程從入門到精通(24):實現HTTP斷點續傳下載工具(附源代碼)
摘要: 在前面的文章曾討論了HTTP消息頭的三個和斷點繼傳有關的字段。一個是請求消息的字段Range,另兩個是響應消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用來斷定Web服務器是否支持斷點繼傳功能。在這里為了演示如何實現斷點繼傳功能,假設Web服務器支持這個功能;因此,我們只使用Range和Content-Range來完成一個斷點繼傳工具的開發。 閱讀全文
posted @ 2009-07-02 18:11 銀河使者 閱讀(4735) | 評論 (2) 編輯 Java網絡編程從入門到精通(23):HTTP消息頭字段
摘要: 本文介紹了HTTP消息的學用頭字段的功能和用法,如Host、Connection、Range、Date、Content-Length等,本文的需要使用HTTP模擬器進行測試,該模擬器請從如下地址下載:http://files.cnblogs.com/nokiaguy/HttpSimulator.rar 閱讀全文
posted @ 2009-06-23 13:04 銀河使者 閱讀(3221) | 評論 (0) 編輯 Java網絡編程從入門到精通(22):實現HTTP模擬器
摘要: 在討論HTTP協議的具體請求和響應頭字段之前,讓我們先來利用以前所學的知識來實現一個HTTP模擬器。所謂HTTP模擬器就是可以在用戶輸入HTTP的請求消息后,由這個模擬器將HTTP請求發送給相應的服務器,再接收服務器的響應消息。這個HTTP模擬器有幾下特點:
1. 可以手工輸入HTTP請求,并向服務器發送。 2. 接收服務器的響應消息。 3. 消息頭和實體內容分段顯示,也就是說,并不是象Telnet等客戶端一樣將HTTP響 應消息全部顯示,而是先顯示消息頭,然后由用戶決定是否顯示實體內容。 4. 集中發送請求。這個HTTP模擬器和Telnet不同的是,并不是一開始就連接服務器,而是將域名、端口以及HTTP請求消息都輸完后,才連接服務器,并將這些請求發送給服務器。這樣做的可以預防服務器提前關閉網絡連接的現象。 5. 可以循環做上述的操作。 閱讀全文 posted @ 2009-06-09 12:16 銀河使者 閱讀(4675) | 評論 (11) 編輯 eclipse + JBoss 5 + EJB3開發指南(14):消息驅動Bean
摘要: 在前面的文章中給出的SessionBean的例子都是同步調用SessionBean方法的,也就是說,只有當方法中的代碼都執行完,才能返回到客戶端。但在某些情況下,由于SessionBean方法的執行時間比較長,這就需要異步地調用該方法,否則客戶端就需要等待比較長的時間。要實現異步調用,就需要使用本要講的消息驅動Bean。消息驅動Bean的基本原理是客戶端向消息服務器發送一條消息后,消息服務器會將該消息保存在消息隊列中。在這時消息服務器中的某個消費者(讀取并處理消息的對象)會讀取該消息,并進行處理。發送消息的客戶端被稱為消息生產者。 閱讀全文
posted @ 2009-06-08 23:40 銀河使者 閱讀(2484) | 評論 (0) 編輯 Java網絡編程從入門到精通(21):HTTP消息的格式
摘要: 當用戶在瀏覽器中輸入一個基于HTTP協議的URL時(以http://開頭的URL),就相當于通知器按著這個URL組織生成一個HTTP請求,并交過個請求發送到服務器;同時,等待服務器的響應。無論是請求還是響應,都統稱為HTTP消息。 閱讀全文
posted @ 2009-06-08 17:22 銀河使者 閱讀(3938) | 評論 (3) 編輯 Java網絡編程從入門到精通(20):HTTP協議簡介
摘要: HTTP協議是一種應用層協議,HTTP是HyperText Transfer Protocol(超文本傳輸協議)的英文縮寫。HTTP可以通過傳輸層的TCP協議在客戶端和服務器之間傳輸數據。HTTP協議主要用于Web瀏覽器和 Web服務器之間的數據交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入http://host:port /path,開頭的4個字母http就相當于通知瀏覽器使用HTTP協議來和host所確定的服務器進行通訊。 閱讀全文
posted @ 2009-06-07 09:38 銀河使者 閱讀(4619) | 評論 (2) 編輯 eclipse + JBoss 5 + EJB3開發指南(13):在Servlet中訪問應用程序管制EntityManager對象
摘要: 在前面的文章中使用的都是容器管制的EntityManager對象。這類EntityManager對象是由EJB容器創建的,在這種情況下,EntityManager對象的生命周期完全由EJB容器來管理。在SessionBean中可以使用如下的代碼來通知EJB容器創建 EntityManager對象:
@PersistenceContext(unitName="myentity") protected EntityManager em; 上面的代碼需要放在任意一個SessionBean的類中,EJB容器會自動創建EntityManager對象。但如果要在Servlet中直接訪問 EntityManager對象,需要使用EntityManagerFactory接口的createEntityManager方法來創建 EntityManager對象,在使用完EntityManagerFactory和EntityManager對象后,可以使用相應的close方方關閉這兩個對象。 閱讀全文 posted @ 2009-06-06 14:07 銀河使者 閱讀(2206) | 評論 (2) 編輯 eclipse + JBoss 5 + EJB3開發指南(12):使用命名查詢執行JPQL
摘要: 在EJB3中可以使用EntityManager對象的createQuery方法來執行JPQL(類似于Hibernate中的HQL),這非常簡單。但使用createQuery方法處理JPQL時,在每次執行JPQL的過程中系統都需要對JPQL進行分析,這在一定程度上降低了系統運行時的性能。為此,EJB3提供了命名查詢的概念。命名查詢有些類型于數據庫中的存儲過程,在提交的過程中就已經被編譯處理了。因此,在執行效率上要高一些。 閱讀全文
posted @ 2009-06-05 10:12 銀河使者 閱讀(3038) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(11):實體Bean的連接策略(JOINED Strategy)
摘要: 本文介紹了如何使用連接策略(JOINED Strategy)對物理表進行劃分。子表與父表共享主鍵。 閱讀全文
posted @ 2009-06-04 15:31 銀河使者 閱讀(2082) | 評論 (0) 編輯 “Duke選擇大獎”薈萃2009最具創新的Java技術應用
摘要: Sun Microsystems公司(NASDAQ: JAVA)今天宣布第七屆年度“Duke選擇大獎”(Duke’s Choice Awards)獲獎者名單?!癉uke選擇大獎”計劃旨在表彰過去一年里全球個人或公司開發的、最具影響力的Java技術應用。這些獲獎者是由Sun公司副總裁兼Sun研究院院士James Gosling和一個由Sun公司Java技術專家組成的小組評選確定的。如需有關獲獎者及其應用的詳盡信息,請登錄:http://www.java.com/en/dukeschoice/。 閱讀全文
posted @ 2009-06-03 19:10 銀河使者 閱讀(512) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(10):通過繼承實體Bean,將單個表映射成多個表(單表策略,SINGLE_TABLE)
摘要: 如果以前使用過EJB1.x或EJB2.x的實體Bean,會發現無法通過繼承實體Bean將單個表分成多表。而在EJB3中,我們可以很容易地使用@Inheritance和@DiscriminatorColumn注釋來實現這個功能。 閱讀全文
posted @ 2009-06-03 16:22 銀河使者 閱讀(1822) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(9):實現Entity Bean的多對多(many-to-many)映射
摘要: 本文介紹了如何使用@ManyToMany注釋實現多對多的映射關系。在EJB3中多對多的映射關系需要使用一個連接表來描述。 閱讀全文
posted @ 2009-06-03 16:15 銀河使者 閱讀(1798) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(8):實現Entity Bean的一對多(one-to-many)映射
摘要: 本文介紹了如使用@OneToMany注釋來實現一對多的映射,以及使用@JoinTable注釋指定連接表來實現一對多的單向映射。 閱讀全文
posted @ 2009-06-03 15:27 銀河使者 閱讀(2179) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(7):實現Entity Bean的一對一(one-to-one)映射
摘要: 一對一映射是很常用的。在一般情況下,一個主表通過外鍵和從表形成一對一的關系。在EJB3中使用@OneToOne注釋來映射。一對一關系除了使用外鍵進行關聯外,也可以采用共享主鍵的方式連接兩個表。 閱讀全文
posted @ 2009-06-03 10:51 銀河使者 閱讀(2153) | 評論 (1) 編輯 Java網絡編程從入門到精通(19):套接字(Socket)的異常
摘要: 在Socket 類中有很多方法在聲明時使用throws拋出了一些異常,這些異常都是IOException的子類。在Socket類的方法中拋出最多的就是 SocketException,其余還有七個異??晒㏒ocket類的方法拋出。這些異常的繼承關系如圖1所示。其中灰色背景框所描述的例外就是 Socket類的方法可能拋出的異常。 閱讀全文
posted @ 2009-06-02 08:19 銀河使者 閱讀(3255) | 評論 (2) 編輯 Java網絡編程從入門到精通(18):Socket類的getter和setter方法(2)
摘要: 在Java類中,getter和setter方法占了很大的比重。由于Java中沒有定義屬性的關鍵字;因此,getter和setter方法用于獲得和設置Java類的屬性值;如getName和setName方法用于設置name屬性的值。如果某個屬性只有getter方法,那這個屬性是只讀的;如果只有setter方法,那么這個屬性是只寫的。在Socket類中也有很多這樣的屬性來獲得和Socket相關的信息,以及對Socket對象的狀態進行設置。 閱讀全文
posted @ 2009-06-01 17:31 銀河使者 閱讀(3743) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(6):編寫第一個實體Bean程序
摘要: EJB3容器通過EntityManager對象管理實體Bean,該類最主要的功能就是在記錄和JavaBean之間進行互相映射。例如,我們從數據庫中查出一條記錄,這條記錄有field1和field2兩個字段,假設有一個JavaBean,也包含了field1和field2屬性。那么 EntityManager可以將這條記錄中的值映射到JavaBean的field1和field2屬性中。也就是說,在數據庫中的一條記錄就對應于一個JavaBean的對象實例。下面將給出一個簡單的例子來演示如何來實現一個應用實體Bean的程序。在這個例子中使用無狀態的session bean通過EntityManager對象從數據表中查找一條記錄,將該記錄映射成實體Bean的對象實例,最后通過session bean的方法返回該記錄的某個字段值。 閱讀全文
posted @ 2009-05-29 22:02 銀河使者 閱讀(2601) | 評論 (0) 編輯 Base64編碼原理與實現
摘要: 本文介紹了Base64編碼的基本原理,并給出了一個簡單的Base64編碼的實現 閱讀全文
posted @ 2009-05-29 19:20 銀河使者 閱讀(4778) | 評論 (0) 編輯 Java網絡編程從入門到精通(17):Socket類的getter和setter方法(1)
摘要: 在Java類中,getter和setter方法占了很大的比重。由于Java中沒有定義屬性的關鍵字;因此,getter和setter方法用于獲得和設置Java類的屬性值;如getName和setName方法用于設置name屬性的值。如果某個屬性只有getter方法,那這個屬性是只讀的;如果只有setter方法,那么這個屬性是只寫的。在Socket類中也有很多這樣的屬性來獲得和Socket相關的信息,以及對Socket對象的狀態進行設置。 閱讀全文
posted @ 2009-05-29 09:43 銀河使者 閱讀(4782) | 評論 (3) 編輯 Java網絡編程從入門到精通(16):客戶端套接字(Socket)的超時
摘要: 客戶端套接字的超時(timeout)就是指在客戶端通過Socket和服務器進行通訊的過程中,由于網絡延遲,網絡阻塞等原因,造成服務器并未及時響應客戶端的一種現象。在一段時間后,客戶端由于未收到服務端的響應而拋出一個超時錯誤; 其中客戶端所等待的時間就是超時時間。由于生產超時錯誤的一端都是被動端;也就是說,這一端是在接收數據,而不是發送數據。對于客戶端Socket來說,只有兩個地方是在接收數據;一個是在連接服務器時;另一個是在連接服務器成功后,接收服務器發過來的數據時。因此,客戶端超時也分為兩種類型:連接超時和讀取數據超時。 閱讀全文
posted @ 2009-05-26 08:48 銀河使者 閱讀(3911) | 評論 (0) 編輯 Java網絡編程從入門到精通(15):為什么要使用SocketAddress來管理網絡地址
摘要: 在使用Socket來連接服務器時最簡單的方式就是直接使用IP和端口,但Socket類中的connect方法并未提供這種方式,而是使用 SocketAddress類來向connect方法傳遞服務器的IP和端口。雖然這種方式從表面上看要麻煩一些,但它會給我們帶來另外一個好處,那就是網絡地址的重用。 閱讀全文
posted @ 2009-05-22 09:02 銀河使者 閱讀(12546) | 評論 (0) 編輯 Java網絡編程從入門到精通(14):多種多樣的建立網絡連接的方式
摘要: 在上一篇文章中我們討論了Socket類的基本用法,并給出的例子中使用Socket類連接服務器時使用了一種最簡單的連接方式,也就是通過IP和端口號來連接服務器。而為了使連接服務器的方式更靈活,Socket類不僅可以通過自身的構造方法連接服務器,而且也可以通過connect方法來連接數據庫。 閱讀全文
posted @ 2009-05-18 09:01 銀河使者 閱讀(4220) | 評論 (2) 編輯 Java網絡編程從入門到精通(13):使用Socket類接收和發送數據
摘要: 網絡應用分為客戶端和服務端兩部分,而Socket類是負責處理客戶端通信的Java類。通過這個類可以連接到指定IP或域名的服務器上,并且可以和服務器互相發送和接受數據。在本文及后面的數篇文章中將詳細討論Socket類的使用,內容包括Socket類基礎、各式各樣的連接方式、get和set方法、連接過程中的超時以及關閉網絡連接等。 閱讀全文
posted @ 2009-05-14 10:21 銀河使者 閱讀(9240) | 評論 (3) 編輯 Java網絡編程從入門到精通(12):使用isReachable方法探測主機是否可以連通
摘要: 在J2SE5.0中的InetAddress類中增加了一個isReachable方法??梢允褂眠@個方法來探測主機是否可以連通。 閱讀全文
posted @ 2009-05-08 09:00 銀河使者 閱讀(4630) | 評論 (0) 編輯 Java網絡編程從入門到精通(11):使用NetworkInterface類獲得網絡接口信息
摘要: 從JDK1.4開始,Java提供了一個NetworkInterface類。這個類可以得到本機所有的物理網絡接口和虛擬機等軟件利用本機的物理網絡接口創建的邏輯網絡接口的信息。 閱讀全文
posted @ 2009-05-08 08:53 銀河使者 閱讀(10282) | 評論 (9) 編輯 Java網絡編程從入門到精通(10):Inet4Address類和Inet6Address類
摘要: 為了區分IPv4和IPv6地址,Java提供了兩個類:Inet4Address和Inet6Address,它們都是InetAddress類的子類,這兩個類分別按著IPv4和IPv6的規則實現了InetAddress類中的public方法。它們所不同的是Inet6Address類比Inet4Address類多了一個方法:isIPv4CompatibleAddress,這個方法用來判斷一個IPv6地址是否和IPv4地址兼容。和IPv4兼容的IPv6地址除了最后四個字節有值名,其他的字節都是0,如0:0:0:0:0:0.192.168.18.10、::ABCD:FAFA都是和IPv4兼容的IPv6地址。 閱讀全文
posted @ 2009-05-04 19:13 銀河使者 閱讀(5972) | 評論 (0) 編輯 eclipse + JBoss 5 + EJB3開發指南(1):編寫第一個無狀態的SessionBean
摘要: 本文中將編寫一個簡單的無狀態SessionBean。在發布EJB時,一般需要將EJB程序以jar文件的形式進行發布。這些jar文件將被放在
posted @ 2009-05-01 14:39 銀河使者 閱讀(5297) | 評論 (3) 編輯 Java網絡編程從入門到精通 (9):使用isXxx方法判斷地址類型
摘要: IP地址分為普通地址和特殊地址。在前面的文章中所使用的大多數都是普通的IP地址,在本文中將介紹如何利用InetAddress類提供的十個方法來確定一個IP地址是否是一個特殊的IP地址。 閱讀全文
posted @ 2009-04-26 18:07 銀河使者 閱讀(4887) | 評論 (2) 編輯 Java網絡編程從入門到精通(8):用getAddress方法獲得IP地址
摘要: getAddress方法和getHostAddress類似,它們的唯一區別是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte數組形式的IP地址。getAddress方法的定義是public byte[] getAddress()。這個方法返回的byte數組是有符號的。在Java中byte類型的取值范圍是-128?127。如果返回的IP地址的某個字節是大于127的整數,在byte數組中就是負數。由于Java中沒有無符號byte類型,因此,要想顯示正常的IP地址,必須使用int或long類型。 閱讀全文
posted @ 2009-04-21 12:41 銀河使者 閱讀(5250) | 評論 (0) 編輯 Java網絡編程從入門到精通(7):用getHostAddress方法獲得IP地址
摘要: getHotAddress方法用來得到主機的IP地址,這個IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定義是public String getHostAddress()無論InetAddress對象是使用哪種方式創建的,getHostAddress方法都不會訪問DNS服務器。如果想訪問使用IPv6地址的遠程主機,需要在操作系統上安裝IPv6協議。 閱讀全文
posted @ 2009-04-21 12:33 銀河使者 閱讀(6496) | 評論 (0) 編輯 WebSphere社區版,Geronimo1.1八卦和GBean架構
摘要: IBM WebSphere AS基于Apache Geronimo的社區免費版, 就像狼和狽終于走到一起,很可能要破壞應用服務器市場的平衡。IBM WebSphere Application Server的品牌,Apache Geronimo以GBean架構的開源大掃蕩,免費且比JBoss的LGPL寬松得多的Apache 2.0 License, 讓安全第一的商業客戶,喜歡擺弄技術的程序員和只想省錢的老板可以在上面達成某種妥協。
閱讀全文 posted @ 2009-04-18 21:36 銀河使者 閱讀(829) | 評論 (0) 編輯 將Java程序變成可執行文件的簡單方法
摘要: 運行Java程序(SWING或SWT的桌面程序)可以直接執行.class文件或將所有的.class文件及相關的其他文件壓縮成.jar文件,然后使用javaw -jar my.jar來運行程序(其中my.jar是一個jar文件名,可以是任何指定的jar文件)。但在windows下,用戶習慣直接運行一個exe來執行程序。在網上有很多程序可以將my.jar或.class文件直接轉換成exe文件。但很多都是將jar或.class文件放到exe里成,這樣不太方便。有些工具,如javalauncher可以使用一個exe程序(用c語言寫的)來調用jar文件。但有時需要在運行程序之間做些其他的工具,例如,在客戶端動態從服務端下載最新版本的程序。因此,在本文將使用delphi2009實現一個簡單的可以調用jar文件的程序,讀者可以對這個程序進行任何擴展,本文還提供了該程序的源代碼和exe文件。 閱讀全文
posted @ 2009-04-15 13:58 銀河使者 閱讀(4477) | 評論 (2) 編輯 Java網絡編程從入門到精通(6):使用getCanonicalHostName方法獲得主機名
摘要: getCanonicalHostName方法和getHostName方法一樣,也是得到遠程主機的域名。但它們有一個區別。getCanonicalHostName得到的是主機名,而getHostName得到的主機別名。在訪問某些域名時,getCanonicalHostName方法和getHostName方法的返回值是一樣的,這和DNS服務器如何解釋主機名和主機別名以及它們的設置有關。如通過www.ibm.com創建InetAddress對象后,使用getCanonicalHostName方法和getHostName方法返回的結果都是www.ibm.com(有時直接返回IP地址,這可能和IBM的DNS服務器的處理機制有關)。如果DNS不允許通過IP地址得到域名,那么這兩個方法就會返回IP地址來代替域名。
閱讀全文 posted @ 2009-04-14 08:56 銀河使者 閱讀(6586) | 評論 (0) 編輯 Java網絡編程從入門到精通(5):使用InetAddress類的getHostName方法獲得域名
摘要: getHostName方法可以得到遠程主機的域名,也可以得到本機名。getHostName方法的定義是public String getHostName(),勻樣可以使用三種方法創建InetAddress對象,這三種方法為:1.使用getLocalHost方法創建InetAddress對象。2.使用域名創建InetAddress對象。3. 使用IP地址創建InetAddress對象
閱讀全文 posted @ 2009-04-14 08:42 銀河使者 閱讀(5075) | 評論 (0) 編輯 Java網絡編程從入門到精通(4):DNS緩存
摘要: 在通過DNS查找域名的過程中,可能會經過多臺中間DNS服務器才能找到指定的域名,因此,在DNS服務器上查找域名是非常昂貴的操作。在Java中為了緩解這個問題,提供了DNS緩存。當InetAddress類第一次使用某個域名(如www.csdn.net)創建InetAddress對象后,JVM就會將這個域名和它從DNS上獲得的信息(如IP地址)都保存在DNS緩存中。當下一次InetAddress類再使用這個域名時,就直接從DNS緩存里獲得所需的信息,而無需再訪問DNS服務器。 閱讀全文
posted @ 2009-04-06 21:06 銀河使者 閱讀(4876) | 評論 (2) 編輯 IBM軟件集團及五大軟件品牌
摘要: 從1995年成立到今年,IBM軟件集團已經走過了10個年頭。從1995年起步至今,IBM軟件集團已經成為全球第二大軟件實體和全球領先的中間件供應商。2004年,其收入高達151億美元,比2003年的增長8億美元。目前,IBM軟件占IBM公司總利潤超過三分之一。 閱讀全文
posted @ 2009-04-02 19:29 銀河使者 閱讀(863) | 評論 (1) 編輯 Java網絡編程從入門到精通(3):為什么不能直接通過IP訪問網站
摘要: 在《創建InetAddress對象的四個靜態方法》一文中通過getAllByName得到了www.csdn.net對應的四個IP地址。從理論上說,在IE(或其他的Web瀏覽器,如Firefox)的地址欄中輸入這四個IP地址中的任何一個,都可能訪問www.csdn.net。如輸入http://211.100.26.124。但IE卻返回了一個錯誤信息。在輸入另外三個IP后,都會得到同樣的錯誤信息。 閱讀全文
posted @ 2009-03-31 10:44 銀河使者 閱讀(4390) | 評論 (6) 編輯 Java網絡編程從入門到精通(2):創建InetAddress對象的四個靜態方法
摘要: InetAddress類是Java中用于描述IP地址的類。它在java.net包中。在Java中分別用Inet4Address和Inet6Address類來描述IPv4和IPv6的地址。這兩個類都是InetAddress的子類。由于InetAddress沒有public的構造方法,因此,要想創建InetAddress對象,必須得依靠它的四個靜態方法。InetAddress可以通過getLocalHost方法得到本機的InetAddress對象,也可以通過getByName、getAllByName和getByAddress得到遠程主機的InetAddress對象。 閱讀全文
posted @ 2009-03-31 10:35 銀河使者 閱讀(5359) | 評論 (1) 編輯 Java網絡編程從入門到精通(1):Internet地址概述
摘要: 所有連入Internet的終端設備(包括計算機、PDA、打印機以及其他的電子設備)都有一個唯一的索引,這個索引被稱為IP地址?,F在Internet上的IP地址大多由四個字節組成,這種IP地址叫做IPv4。除了這種由四個字節組成的IP,在Internet上還存在一種IP,這種IP由16個字節組成,叫做IPv6。IPv4和IPv6后面的數字是Internet協議(Internet Protocol,IP)的版本號。
閱讀全文 posted @ 2009-03-23 21:03 銀河使者 閱讀(6137) | 評論 (2) 編輯 Java多線程初學者指南(12):使用Synchronized塊同步變量
摘要: 我們可以通過synchronized塊來同步特定的靜態或非靜態方法。要想實現這種需求必須為這些特性的方法定義一個類變量,然后將這些方法的代碼用synchronized塊括起來,并將這個類變量作為參數傳入synchronized塊。在使用synchronized塊時應注意,synchronized塊只能使用對象作為它的參數。如果是簡單類型的變量(如int、char、boolean等),不能使用synchronized來同步。 閱讀全文
posted @ 2009-03-22 21:26 銀河使者 閱讀(7337) | 評論 (4) 編輯 Java多線程初學者指南(11):使用Synchronized塊同步方法
摘要: synchronized關鍵字有兩種用法。第一種就是在《使用Synchronized關鍵字同步類方法》一文中所介紹的直接用在方法的定義中。另外一種就是synchronized塊。我們不僅可以通過synchronized塊來同步一個對象變量。也可以使用synchronized塊來同步類中的靜態方法和非靜態方法。 閱讀全文
posted @ 2009-03-22 21:15 銀河使者 閱讀(11349) | 評論 (1) 編輯 Java多線程初學者指南(10):使用Synchronized關鍵字同步類方法
摘要: 要想解決“臟數據”的問題,最簡單的方法就是使用synchronized關鍵字來使run方法同步。雖然可以使用synchronized來定義方法,但synchronized并不屬于方法定義的一部分,因此,synchronized關鍵字不能被繼承。如果在父類中的某個方法使用了synchronized關鍵字,而在子類中覆蓋了這個方法,在子類中的這個方法默認情況下并不是同步的,而必須顯式地在子類的這個方法中加上synchronized關鍵字才可以。當然,還可以在子類方法中調用父類中相應的方法,這樣雖然子類中的方法不是同步的,但子類調用了父類的同步方法,因此,子類的方法也就相當于同步了。 閱讀全文
posted @ 2009-03-20 13:05 銀河使者 閱讀(9770) | 評論 (4) 編輯 Java多線程初學者指南(9):為什么要進行數據同步
摘要: Java中的變量分為兩類:局部變量和類變量。局部變量是指在方法內定義的變量,如在run方法中定義的變量。對于這些變量來說,并不存在線程之間共享的問題。因此,它們不需要進行數據同步。類變量是在類中定義的變量,作用域是整個類。這類變量可以被多個線程共享。因此,我們需要對這類變量進行數據同步。數據同步就是指在同一時間,只能由一個線程來訪問被同步的類變量,當前線程訪問完這些變量后,其他線程才能繼續訪問。這里說的訪問是指有寫操作的訪問,如果所有訪問類變量的線程都是讀操作,一般是不需要數據同步的。 閱讀全文
posted @ 2009-03-19 13:23 銀河使者 閱讀(4966) | 評論 (1) 編輯 Java多線程初學者指南(8):從線程返回數據的兩種方法
摘要: 從線程中返回數據和向線程傳遞數據類似。也可以通過類成員以及回調函數來返回數據。但類成員在返回數據和傳遞數據時有一些區別,下面讓我們來看看它們區別在哪。 閱讀全文
posted @ 2009-03-19 13:02 銀河使者 閱讀(6901) | 評論 (0) 編輯 Java多線程初學者指南(7):向線程傳遞數據的三種方法
摘要: 在傳統的同步開發模式下,當我們調用一個函數時,通過這個函數的參數將數據傳入,并通過這個函數的返回值來返回最終的計算結果。但在多線程的異步開發模式下,數據的傳遞和返回和同步開發模式有很大的區別。由于線程的運行和結束是不可預料的,因此,在傳遞和返回數據時就無法象函數一樣通過函數參數和return語句來返回數據。本文就以上原因介紹了幾種用于向線程傳遞數據的方法,在下一篇文章中將介紹從線程中返回數據的方法。 閱讀全文
posted @ 2009-03-16 23:18 銀河使者 閱讀(15858) | 評論 (2) 編輯 Java多線程初學者指南(6):慎重使用volatile關鍵字
摘要: volatile關鍵字相信了解Java多線程的讀者都很清楚它的作用。volatile關鍵字用于聲明簡單類型變量,如int、float、boolean等數據類型。如果這些簡單數據類型聲明為volatile,對它們的操作就會變成原子級別的。不過在使用volatile關鍵字時也要慎重,并不是只要簡單類型變量使用volatile修飾,對這個變量的所有操作都是原來操作,當變量的值由自身的上一個決定時,如n=n+1、n++等,volatile關鍵字將失效,只有當變量的值和自身上一個值無關時對該變量的操作才是原子級別的,如n = m + 1,這個就是原級別的。所以在使用volatile關鍵時一定要謹慎,如果自己沒有把握,可以使用synchronized來代替volatile。 閱讀全文
posted @ 2009-03-14 16:44 銀河使者 閱讀(9414) | 評論 (10) 編輯 Java多線程初學者指南(5):join方法的使用
摘要: 在上面的例子中多次使用到了Thread類的join方法。我想大家可能已經猜出來join方法的功能是什么了。對,join方法的功能就是使異步執行的線程變成同步執行。也就是說,當調用線程實例的start方法后,這個方法會立即返回,如果在調用start方法后后需要使用一個由這個線程計算得到的值,就必須使用join方法。如果不使用join方法,就不能保證當執行到start方法后面的某條語句時,這個線程一定會執行完。而使用join方法后,直到這個線程退出,程序才會往下執行。 閱讀全文
posted @ 2009-03-12 09:07 銀河使者 閱讀(5997) | 評論 (14) 編輯 Java多線程初學者指南(4):線程的生命周期
摘要: 與人有生老病死一樣,線程也同樣要經歷開始(等待)、運行、掛起和停止四種不同的狀態。這四種狀態都可以通過Thread類中的方法進行控制。 閱讀全文
posted @ 2009-03-11 12:15 銀河使者 閱讀(8282) | 評論 (3) 編輯 Java多線程初學者指南(3):使用Runnable接口創建線程
摘要: 實現Runnable接口的類必須使用Thread類的實例才能創建線程。通過Runnable接口創建線程分為兩步:1. 將實現Runnable接口的類實例化。2. 建立一個Thread對象,并將第一步實例化后的對象作為參數傳入Thread類的構造方法。最后通過Thread類的start方法建立線程。 閱讀全文
posted @ 2009-03-10 11:56 銀河使者 閱讀(5882) | 評論 (0) 編輯 Java多線程初學者指南(2):用Thread類創建線程
摘要: 一個普通的Java類只要從Thread類繼承,就可以成為一個線程類。并可通過Thread類的start方法來執行線程代碼。雖然Thread類的子類可以直接實例化,但在子類中必須要覆蓋Thread類的run方法才能真正運行線程的代碼。 閱讀全文
posted @ 2009-03-07 14:06 銀河使者 閱讀(6575) | 評論 (5) 編輯 Java多線程初學者指南(1):線程簡介
摘要: 線程是程序運行的基本執行單元。當操作系統(不包括單線程的操作系統,如微軟早期的DOS)在執行一個程序時,會在系統中建立一個進程,而在這個進程中,必須至少建立一個線程(這個線程被稱為主線程)來作為這個程序運行的入口點。因此,在操作系統中運行的任何程序都至少有一個主線程。 閱讀全文
posted @ 2009-03-07 13:43 銀河使者 閱讀(5248) | 評論 (0) 編輯 Struts1.x系列教程(24):配置文件總結
摘要: 要想使用Struts,至少要依靠兩個配置文件:web.xml和struts-config.xml。其中web.xml用來安裝Struts框架。而struts-config.xml用來配置在Struts框架中要使用的資源。如Formbean、Action、插件等。如果使用了某些插件,如Validator、Tiles等。還可能需要其他的配置文件。雖然在前面的文章中已多次使用了這兩個配置文件,但都是分散介紹的。因此,在本文將對這些配置進行一下總結和回顧,以使讀者對Struts的配置有一個更清醒的認識。 閱讀全文
posted @ 2009-02-27 17:40 銀河使者 閱讀(4017) | 評論 (2) 編輯 Struts1.x系列教程(23):使用Tiles模板進行布局
摘要: Tiles提供的模板機制可以最大限度地避免重復編寫代碼。實際上,Tiles模板就是的JSP頁面,只是在這種JSP頁面中使用Tiles標簽代替確定不了的內容(相當于占位符),也就是需要在開發人員使用模板時來確定的內容。除了這一點,Tiles模板頁面和普通的JSP頁面完全相同。 閱讀全文
posted @ 2009-02-27 17:06 銀河使者 閱讀(3661) | 評論 (3) 編輯 Struts1.x系列教程(22):Tiles框架簡介
摘要: Tiles框架是Struts的一個插件。我們可以使用Tiles框架來進行頁面布局設計。Tiles框架提供了一種模板機制,它可以將網頁內容和布局分離,并允許先創建模板,然后在頁面中再插入具體的內容。 閱讀全文
posted @ 2009-02-25 22:42 銀河使者 閱讀(3065) | 評論 (0) 編輯 Struts1.x系列教程(21):使用MappingDispatchAction類調用不同的Action方法
摘要: 與LookupDispatchAction、DispatchAction不同,MappingDispatchAction類并不通過請求參數來指定動作,而是將一個Struts動作對應于一個Action方法。下面的例子演示了如何使用MappingDispatchAction類來將Struts 動作和Action方法相對應。 閱讀全文
posted @ 2009-02-24 19:55 銀河使者 閱讀(2928) | 評論 (0) 編輯 Struts1.x系列教程(20):使用EventDispatchAction類處理一個form多個submit
摘要: 雖然LookupDispatchAction類可以很好地處理擁有多個提交按鈕的Form,但是必須要和屬性文件相關聯,而且還得在getKeyMethodMap方法中進行key和Action方法的映射,使用起來十分不方便。從Struts1.2.9開始,加入了另一個用于處理多個提交動作的EventDispatchAction類。這個類也是DispatchAction的子類,它在使用上要比LookupDispatchAction類容易的多。EventDispatchAction類的基本原理是通過
posted @ 2009-02-24 15:07 銀河使者 閱讀(2390) | 評論 (1) 編輯 Struts1.x系列教程(19):LookupDispatchAction類處理一個form多個submit
摘要: 有時在HTML form中需要提供多個提交按鈕,這時LookupDispatchAction類就派上用場了。LookupDispatchAction是DispatchAction的子類,用于處理客戶端代碼中有一個Form含有多個提交按鈕的情況。 閱讀全文
posted @ 2009-02-23 21:34 銀河使者 閱讀(2810) | 評論 (0) 編輯 Struts1.x系列教程(18):使用DispatchAction類調用多個Action方法
摘要: 在使用Struts動作時,每一個Action都需要編寫一個類,并且要在struts-config.xml進行配置。這對于一個擁有很多Action的Web程序來說,工作量是非常大的。為此,Struts提供了DispatchAction類,這個類允許將一個Action作為一個方法來調用。在Web瀏覽器中通過請求參數來指定要調用的動作。 閱讀全文
posted @ 2009-02-20 14:01 銀河使者 閱讀(5829) | 評論 (5) 編輯 Struts1.x系列教程(17):使用IncludeAction和ForwardAction類包含和轉入Web資源
摘要: 在本文介紹了如何使用IncludeAction和ForwardAction類包含和轉入Web資源。這兩個類與
posted @ 2009-02-19 10:36 銀河使者 閱讀(2609) | 評論 (1) 編輯 Struts1.x系列教程(16):使用LocaleAction類實現國際化的Web程序
摘要: 我們曾經在《Struts1.x系列教程(13):國際化》一文中講過如何通過編程的方式實現多語言的Web頁面。在本文中,我們會介紹另外一種實現多語言Web頁面的方法。這種方式與《Struts1.x系列教程(13):國際化》一文中所介紹的方法的區別就是無需編寫一行代碼就可以完成多語言的設置。 閱讀全文
posted @ 2009-02-19 09:18 銀河使者 閱讀(2486) | 評論 (0) 編輯 Struts1.x系列教程(15):使用DownloadAction類統計文件下載次數
摘要: 除了標準的org.apache.struts.action.Action類外,在Struts中還提供了另外7個Action類來完成特殊的工作。本文及后面的文章中將介紹這些Action類的用法。 閱讀全文
posted @ 2009-02-18 10:34 銀河使者 閱讀(3349) | 評論 (0) 編輯 WebService大講堂之Axis2(10):使用soapmonitor模塊監視soap請求與響應消息
摘要: 在Axis2中提供了一個Axis2模塊(soapmonitor),該模塊實現了與《WebService大講堂之Axis2(9):編寫Axis2模塊(Module)》中實現的logging模塊相同的功能,所不同的是,logging模塊直接將SOAP請求與響應消息輸出到Tomcat控制臺中,而soapmonitor模塊利用applet直接在頁面中輸出SOAP請求和響應消息。 閱讀全文
posted @ 2009-02-17 09:22 銀河使者 閱讀(9222) | 評論 (8) 編輯 Struts1.x系列教程(14):動態Form
摘要: 雖然ActionForm功能強大,但有些時候使用起來有些麻煩。如每建立一個用戶錄入界面(JSP頁面),就得建立一個ActionForm子類來和這個頁面對應。當然,我們可以采用嵌套屬性從一定程度上彌補這個問題。但是在建立新的用戶錄入界面時,仍不可避免地要建立新的ActionForm子類。在Struts1.2.6及以后的Struts版本中提供了一種動態Form的技術。使得不用再建立新的ActionForm就可以封裝用戶提交的數據。實際上,這種技術將定義ActionForm子類的工作變成了編寫XML文件的工作。 閱讀全文
posted @ 2009-02-16 17:22 銀河使者 閱讀(4649) | 評論 (4) 編輯 Struts1.x系列教程(13):國際化
摘要: 對于一個面向全球的Web應用程序,按著不同國家的要求顯示相關信息(稱為國際化)顯得尤為重要。國際化的工作非常復雜和繁瑣。因為要翻譯很多Web界面,信息格式等。然而,Struts為我們提供了完成國際化工作的更容易的方式。在本文將介紹如何使用Struts來簡化國際化的工作。 閱讀全文
posted @ 2009-02-16 09:53 銀河使者 閱讀(3693) | 評論 (3) 編輯 WebService大講堂之Axis2(9):編寫Axis2模塊(Module)
摘要: Axis2可以通過模塊(Module)進行擴展。Axis2模塊至少需要有兩個類,這兩個類分別實現了Module和Handler接口。開發和使用一個Axis2模塊的步驟如下:
1. 編寫實現Module接口的類。Axis2模塊在進行初始化、銷毀等動作時會調用該類中相應的方法)。 2. 編寫實現Handler接口的類。該類是Axis2模塊的業務處理類。 3. 編寫module.xml文件。該文件放在META-INF目錄中,用于配置Axis2模塊。 4. 在axis2.xml文件中配置Axis2模塊。 5. 在services.xml文件中配置Axis2模塊。每一個Axis2模塊都需要使用 6. 發布Axis2模塊。需要使用jar命令將Axis2模塊壓縮成.mar包(文件擴展名必須是.mar),然后將.mar文件放在 posted @ 2009-02-16 09:05 銀河使者 閱讀(12788) | 評論 (3) 編輯 Struts1.x系列教程(12):Validator驗證框架的內置標準驗證
摘要: 本文介紹了Struts 1.x Validator驗證框架的內置標準驗證。 閱讀全文
posted @ 2009-02-14 19:27 銀河使者 閱讀(3718) | 評論 (0) 編輯 Struts1.x系列教程(11):Validator驗證框架高級應用
摘要: 在《Struts1.x系列教程(10):Validator驗證框架入門》一文中給出的例子中的name、age和email都是簡單的屬性,如果是嵌套的屬性(也就是一個屬性的數據類型是另外一個帶有屬性的類),可以使用圓點(.)符號來訪問。如我們可以通過設置
posted @ 2009-02-14 19:14 銀河使者 閱讀(3419) | 評論 (1) 編輯 WebService大講堂之Axis2(8):異步調用WebService
摘要: 在前面幾篇文章中都是使用同步方式來調用WebService。也就是說,如果被調用的WebService方法長時間不返回,客戶端將一直被阻塞,直到該方法返回為止。使用同步方法來調用WebService雖然很直觀,但當WebService方法由于各種原因需要很長時間才能返回的話,就會使客戶端程序一直處于等待狀態,這樣用戶是無法忍受的。當然,我們很容易就可以想到解決問題的方法,這就是多線程。解決問題的基本方法是將訪問WebService的任務交由一個或多個線程來完成,而主線程并不負責訪問WebService。這樣即使被訪問的WebService方法長時間不返回,客戶端仍然可以做其他的工作。我們可以管這種通過多線程訪問WebService的方式稱為異步訪問。雖然直接使用多線程可以很好地解決這個問題,但比較麻煩。幸好Axis2的客戶端提供了異步訪問WebService的功能。 閱讀全文
posted @ 2009-02-13 14:23 銀河使者 閱讀(14899) | 評論 (9) 編輯 WebService大講堂之Axis2(7):將Spring的裝配JavaBean發布成WebService
摘要: 在現今的Web應用中經常使用Spring框架來裝載JavaBean。如果要想將某些在Spring中裝配的JavaBean發布成WebService,使用Axis2的Spring感知功能是非常容易做到的。在本文的例子中,除了
posted @ 2009-02-13 09:14 銀河使者 閱讀(17231) | 評論 (15) 編輯 Struts1.x系列教程(10):Validator驗證框架入門
摘要: Validator框架是一個Struts插件,最初由David Winterfeldt設計并實現。Validator框架從Struts 0.5時代就可以使用,但那時Validator框架只是被捐助的一個jar包。Apache組織為了使開發人員更方便地使用Validator框架,決定從Struts1.1開始,將Validator框架作為Struts的一部分同Struts一起發布。 閱讀全文
posted @ 2009-02-12 16:55 銀河使者 閱讀(7792) | 評論 (7) 編輯 Struts 2雜談(1):ValueStack對象的傳送帶機制
摘要: 眾所周知,Strut 2的Action類通過屬性可以獲得所有相關的值,如請求參數、Action配置參數、向其他Action傳遞屬性值(通過chain結果)等等。要獲得這些參數值,我們要做的唯一一件事就是在Action類中聲明與參數同名的屬性,在Struts 2調用Action類的Action方法(默認是execute方法)之前,就會為相應的Action屬性賦值。這一切主要是依靠ValueStack對象實現的。 閱讀全文
posted @ 2009-02-11 22:22 銀河使者 閱讀(5734) | 評論 (4) 編輯 Weblogic10 + EJB3入門教程(1):編寫第一個無狀態會話Bean(Stateless Session Bean)
摘要: 在本文主要介紹如何來開發一個Stateless Session Bean,并在未安裝WebLogic10的機器上訪問Session Bean。開發EJB3 Stateless Session Bean要比開發EJB2 Stateless Session Bean容易得多,只需要幾個注釋就可以搞定。 閱讀全文
posted @ 2009-02-08 21:50 銀河使者 閱讀(4403) | 評論 (6) 編輯 Struts1.x系列教程(9):上傳任意多個文件
摘要: 從《Struts1.x系列教程(8):上傳單個文件》中給出的例子可以看出,在Struts1.x中上傳單個文件是非常簡單的,但在實際應用中,上傳文件的個數一般是不確定的,如在網絡硬盤中,用戶可以根據自己的需要上傳任意多個文件(當然,網絡硬盤一次上傳文件的數目一般也是有上限的,如50個,但用戶可以只上傳了3個文件,因此,在這種情況下,上傳文件的個數也是不確定的)。如果讀者用過“網易網盤”或其他類似的服務程序,它們的上傳文件功能基本上都是根據用戶選擇的文件多少來添加要上傳的文件(并不是一開始就在界面上放很多<input type=’file’>元素來讓用戶輸入上傳文件名)。為了讓讀者也可以使用Struts來實現這個功能,在本節將給出一個用Struts實現的類似“網易網盤”的上傳任意多個文件的Web程序。 閱讀全文
posted @ 2009-02-07 19:01 銀河使者 閱讀(4627) | 評論 (5) 編輯 在applet中訪問本地資源
摘要: applet運行在沙盒中,因此,對于不了解簽名的開發人員,使用applet來訪問本地資源被認為是“不可能完成的任務”,然而,我們可以使用keytool、jarsigner命令對jar文件進行簽名,這樣applet就可以在客戶端隨心所欲了,當然,這和ocx控件一樣,也需要客戶端進行確認。 閱讀全文
posted @ 2009-02-06 21:46 銀河使者 閱讀(3198) | 評論 (2) 編輯 Struts2.1.6測試小記
摘要: 經筆者測試,Struts2.1.6并不與Struts2.0.14完全兼容,如在struts2.1.6中還需要一個commons-fileupload-1.2.1.jar文件才能正常使用,而在struts2.0.14中并不需要這個文件。Struts2.1.6至少需要6個jar文件才能正常工作,這6個jar文件是:struts2-core-2.1.6.jar、freemarker-2.3.13.jar、commons-logging-1.0.4.jar、ognl-2.6.11.jar、xwork-2.1.2.jar、commons-fileupload-1.2.1.jar。 閱讀全文
posted @ 2009-02-06 12:55 銀河使者 閱讀(5512) | 評論 (14) 編輯 WebService大講堂之Axis2(6):跨服務會話(Session)管理
摘要: 在《WebService大講堂之Axis2(5):會話(Session)管理》一文中介紹了如何使用Axis2來管理同一個服務的會話,但對于一個復雜的系統,不可能只有一個WebService服務,例如,至少會有一個管理用戶的WebService(用戶登錄和注冊)以及處理業務的WebService。象這種情況,就必須在多個WebService服務之間共享會話狀態,也稱為跨服務會話(Session)管理。實現跨服務會話管理與實現同一個服務的會話管理的步驟類似,但仍然有一些差別,實現跨服務會話管理的步驟如下:
實現跨服務的Session管理需要如下三步: 1. 使用MessageContext和ServiceGroupContext獲得與設置key-value對。 2. 為要進行Session管理的WebService類所對應的 3. 在客戶端使用setManageSession(true)打開Session管理功能。 閱讀全文 posted @ 2009-02-03 23:42 銀河使者 閱讀(13845) | 評論 (20) 編輯 Struts1.x系列教程(8):上傳單個文件
摘要: 在Web程序中的上傳文件的功能一般會使用<input type=file.../>標簽在客戶端顯示輸入要上傳的文件名的用戶接口。如果讀者使用過JSP/Servlet來處理客戶端上傳的文件就會知道,實現這個功能并不是很容易。而在Struts中為我們提供了一種機制,可以非常方便地將客戶端上傳的文件保存在服務端。在Struts Html標簽庫中提供了一個<html:file>標簽,可以和FormFile類型的屬性一起使用。通過這個屬性返回的FormFile對象,就可以很方便地獲得上傳文件的InputStream對象,并做進一步地處理。 閱讀全文
posted @ 2009-02-03 09:43 銀河使者 閱讀(4179) | 評論 (0) 編輯 跳出多層循環的簡單方法(Java版)
摘要: goto語句往往被認為是跳出多層循環最簡單的方法,但在Java中雖然保留了goto關鍵字,但卻不能使用。不過Java提供了另外一種與goto語句相似的方法來解決這個問題,這就是break n和continue n語句。 閱讀全文
posted @ 2009-01-30 11:23 銀河使者 閱讀(3354) | 評論 (8) 編輯 WebService大講堂之Axis2(5):會話(Session)管理
摘要: 使用Axis2來管理WebService的會話(Session)狀態基本上對于開發人員是透明的。在WebService類需要使用org.apache.axis2.context.MessageContext和org.apache.axis2.context.ServiceContext類來保存與獲得保存在服務端的狀態信息,這有些象使用HttpSession接口的getAttribute和setAttribute方法獲得與設置Session域屬性。
![]() posted @ 2009-01-26 00:00 銀河使者 閱讀(18522) | 評論 (31) 編輯 WebService大講堂之Axis2(4):二進制文件傳輸
摘要: 在WebService類中除了可以使用byte[]作為傳輸二進制的數據類型外,也可以使用javax.activation.DataHandler作為數據類型。 不管是使用byte[],還是使用javax.activation.DataHandler作為WebService方法的數據類型,使用wsdl2java命令生成的stub類中相應方法的類型都是javax.activation.DataHandler。而象使用.net、delphi生成的stub類的相應方法類型都是byte[]。這是由于javax.activation.DataHandler類是Java特有的,對于其他語言和技術來說,并不認識javax.activation.DataHandler類,因此,也只有使用最原始的byte[]了。 閱讀全文
posted @ 2009-01-22 10:28 銀河使者 閱讀(22558) | 評論 (18) 編輯 WebService大講堂之Axis2(3):使用services.xml文件發布WebService
摘要: 在本文將介紹一下如何使用services.xml文件將帶包的POJO類發布成WebService,以及如何發布多個WebService。 閱讀全文
posted @ 2009-01-21 18:08 銀河使者 閱讀(56751) | 評論 (59) 編輯 Struts1.x系列教程(7):Logic標簽庫
摘要: Struts Logic標簽庫包含了如下三類標簽:循環標簽:iterate標簽。用于枚舉數組、集合類型對象中的元素; 條件處理標簽:用于是否相等、比較大小等判斷。這類標簽有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNotPresent、messagesPresent、notEmpty、notEqual、notMatch、notPresent、present;流控制標簽:用于轉向其他的頁面。redirect和forward屬性這類標簽。 閱讀全文
posted @ 2009-01-19 22:21 銀河使者 閱讀(4735) | 評論 (0) 編輯 Struts1.x系列教程(6):Bean標簽庫
摘要: Bean標簽庫共有11個標簽。這些標簽可以完成五種工作:獲得HTTP請求信息、訪問Java對象、訪問JSP內嵌對象和Struts配置對象、訪問Web資源和屬性文件、輸出信息. 閱讀全文
posted @ 2009-01-18 22:36 銀河使者 閱讀(5813) | 評論 (0) 編輯 09考研數據結構試題的一種解法(Java版)
摘要: 雖然研究生已畢業,但看到有一些難度的研究生考試題還是忍不住要做做,本文給出了09年研究生入學考試的一道數據結構題的Java實現。本文給出的算法的空間復雜度為O(1),時間復雜度為O(n)。 閱讀全文
posted @ 2009-01-17 20:50 銀河使者 閱讀(3493) | 評論 (7) 編輯 Struts1.x系列教程(5):HTML標簽庫
摘要: HTML標簽庫中的標簽基本上都是和HTML Tag一一對應的。但我們經常使用的主要是
posted @ 2009-01-16 16:54 銀河使者 閱讀(5448) | 評論 (0) 編輯 用緩沖技術提高JSP程序性能和穩定性
摘要: 在Web應用中,有些報表的生成可能需要數據庫花很長時間才能計算出來;有的網站提供天氣信息,它需要訪問遠程服務器進行SOAP調用才能得到溫度信息。所有這一切都屬于復雜信息的例子。在Web頁面中加入過多的復雜信息可能導致Web服務器、數據庫服務器負荷過重。 JSP代碼塊緩沖為開發者帶來了隨意地增加各種復雜信息的自由。
閱讀全文 posted @ 2009-01-16 08:57 銀河使者 閱讀(351) | 評論 (1) 編輯 Struts1.x系列教程(4):標簽庫概述與安裝
摘要: Struts的整個視圖層(就是MVC模式中的View層)是由Struts的定制標簽(或者稱為定制動作)和客戶端代碼(Javascript、HTML等)實現的。這些Struts標簽被寫在JSP頁面中,用于生成客戶端代碼、進行邏輯判斷等工作,使用Struts標簽可以盡量避免直接在JSP頁面中直接使用Java代碼,以使得JSP頁面更容易編寫和維護。 閱讀全文
posted @ 2009-01-15 11:53 銀河使者 閱讀(5002) | 評論 (0) 編輯 Struts1.x系列教程(3):屬性(資源)文件亂碼問題的解決之道
摘要: 資源文件不僅僅需要保存英文信息,在很多時候,也需要保存其他的語言信息,如中文信息。但Java的屬性文件只支持英文,要想在屬性文件中保存中文,需要使用\uxxxx格式,但這非常不方便,因此,本文將分別介紹如何使用native2ascii.exe和Eclipse插件的方式來解決這個問題。 閱讀全文
posted @ 2009-01-14 12:36 銀河使者 閱讀(6733) | 評論 (3) 編輯 Struts1.x系列教程(2):簡單的數據驗證
摘要: 簡單驗證從本質上說就是在服務端來驗證客戶端提交的form中的數據。這種驗證只是對form中的數據規則進行檢查,如必須輸入用戶ID,價格不能小于0或是對email格式的驗證。在這個驗證過程中,并不需要訪問數據庫。因此,簡單驗證需要在用戶提交form后,并且在服務器處理form中的數據之前進行。 閱讀全文
posted @ 2009-01-13 23:10 銀河使者 閱讀(6686) | 評論 (7) 編輯 Struts1.x系列教程(1):用MyEclipse開發第一個Struts程序
摘要: 本系列教程將詳細介紹Struts 1.x的基本原理和使用方法,讀者可以參閱“Struts 2系列教程”來比較Struts 1.x和Struts 2.x的相同點和不同點。在這篇文章中將以一個簡單的例子(mystruts)來演示如何使用MyEclipse來開發、運行Struts程序,并給出了解決ActionForm出現亂碼問題的方法。讀者可以從本文中了解開發Struts 1.x程序的基本過程。 閱讀全文
posted @ 2009-01-13 12:17 銀河使者 閱讀(42068) | 評論 (36) 編輯 手機電子書UMD數據格式實現代碼(C#版)
摘要: UMD格式是國內手機閱讀中使用較多的一種格式,但其公司卻并沒有將UMD數據格式公開,但是卻用另外一種方式將其公開,你去訪問一下他們的站點然后下載他的制作工具就知道。 閱讀全文
posted @ 2009-01-09 08:57 銀河使者 閱讀(828) | 評論 (0) 編輯 WebService大講堂之Axis2(2):復合類型數據的傳遞
摘要: 在實際的應用中,不僅需要使用WebService來傳遞簡單類型的數據,有時也需要傳遞更復雜的數據,這些數據可以被稱為復合類型的數據。數組與類(接口)是比較常用的復合類型。在Axis2中可以直接使用將WebService方法的參數或返回值類型聲明成數組或類(接口)。但要注意,在定義數組類型時只能使用一維數組,如果想傳遞多維數組,可以使用分隔符進行分隔。在傳遞類的對象實例時,除了直接將數組類型聲明成相應的類或接口,也可以將對象實例進行序列化,也就是說,將一個對象實例轉換成字節數組進行傳遞,然后接收方再進行反序列化,還原這個對象實例。本文的示例代碼演示了如何傳遞數組與類(接口)類型的數據,并演示如何使用字節數組上傳圖像。本示例的客戶端代碼使用Java和C#編寫。 閱讀全文
posted @ 2009-01-04 23:41 銀河使者 閱讀(27910) | 評論 (26) 編輯 WebService大講堂之Axis2(1):用POJO實現0配置的WebService
摘要: Axis2是一套嶄新的WebService引擎,該版本是對Axis1.x重新設計的產物。Axis2不僅支持SOAP1.1和SOAP1.2,還集成了非常流行的REST WebService,同時還支持Spring、JSON等技術。這些都將在后面的系列教程中講解。在本文中主要介紹了如何使用Axis2開發一個不需要任何配置文件的WebService,并在客戶端使用Java和C#調用這個WebService。 閱讀全文
posted @ 2009-01-02 17:17 銀河使者 閱讀(72528) | 評論 (108) 編輯 圖解 Tomcat 體系結構
摘要: Apache Tomcat 是一款非常著名的開源 Servlet/JSP 容器,被用做 Java Servlet 和 JavaServer Pages 技術的官方參考實現。如果您要了解這兩種技術的細節可以查閱參考資料。 閱讀全文
posted @ 2008-10-12 22:56 銀河使者 閱讀(2759) | 評論 (1) 編輯 為什么要在定義抽象類時使用abstract關鍵字
摘要: 眾所周之,在任何面向對象的語言中(包括Java、C#),在定義抽象類時必須使用abstract關鍵字。雖然這已經習已為常了,但實際上abstract是為了在實現接口或繼承抽象類避免歧議而必須存在的。 閱讀全文
posted @ 2008-09-30 14:31 銀河使者 閱讀(1595) | 評論 (4) 編輯 用Java實現按字節長度截取字符串的方法
摘要: Web應用程序在瀏覽器中顯示字符串時,由于顯示長度的限制,常常需要將字符串截取后再進行顯示。但目前很多流行的語言,如C#、Java內部采用的都是 Unicode 16(UCS2)編碼,在這種編碼中所有的字符都是兩個字符,因此,如果要截取的字符串是中、英文、數字混合的,就必須按字節長度來截取字符串。在本文中給出了一個按字節長度截取字符串的方法,以便這類操作變得更容易。 閱讀全文
posted @ 2008-09-07 09:46 銀河使者 閱讀(11591) | 評論 (11) 編輯 Tomcat在處理GET和POST請求時產生的亂碼問題
摘要: 由于從Tomcat5.x后,Tomcat處理GET和POST請求時采用了不同的編碼格式,因此,當Java Web程序運行在Tomcat5.x及以上版本時,需要同時考慮GET和POST請求,但也可以利用Java本身的編碼能力達到通用的效果。 閱讀全文
posted @ 2008-09-05 15:48 銀河使者 閱讀(3067) | 評論 (8) 編輯 Java編碼問題解決方案大揭密
摘要: 本文介紹了java編碼的原理,對各種語言的編碼(中文、日文、韓文),java屬性文件如何處理中文字符以及在web應用中亂碼問題的解決方案。 閱讀全文
posted @ 2008-07-19 13:45 銀河使者 閱讀(8240) | 評論 (16) 編輯 Java支持的編碼格式
摘要: JDK提供了一個將中文轉換為Unicode編碼格式的工具native2ascii.exe,它位于<JDK>/bin/目錄下。在DOS命令窗口下,通過native2ascii -encoding SJIS <源文件>?。寄繕宋募炯纯梢酝瓿赊D換。 閱讀全文
posted @ 2008-07-17 16:42 銀河使者 閱讀(2245) | 評論 (0) 編輯 用jabsorb(json) for java編寫AJAX應用程序
摘要: 本文介紹了如何使用jabsorb(json的升級版)開發基于AJAX的應用程序,主要包括在JSP和Sevlet中使用jabsorb,注冊全局對象、訪問集合類和異步調用技術。 閱讀全文
posted @ 2008-07-04 11:03 銀河使者 閱讀(3009) | 評論 (2) 編輯 Web上傳文件的原理及實現
摘要: 雖然現在有很多上傳組件可以利用,但是了解Web上傳文件的原理,對于處理突然出現的問題會有很大的幫助,下面就來講一下通過瀏覽器上傳文件的基本原理。在了解了原理之后,就可以非常容易地自制滿足自身需要的上傳組件了。
閱讀全文 posted @ 2008-05-29 12:42 銀河使者 閱讀(6785) | 評論 (1) 編輯 AJAX從服務端獲取數據的三種方法
摘要: 在本文中將給出一個例子來介紹使用AJAX技術從服務端獲得數據的三種方法。這個例子很簡單,就是兩個選擇框(html中的<select>標簽),通過選中第一個select的某一項后,會從服務端得到一些數據,并加載到第2個select中。這三種方法是獲得XML數據,直接獲得<option>字符串,以及獲得在客戶端可執行的javascript代碼。 本文還給出了一種ajax向服務端發送中文請求時出現亂碼的解決方案。 閱讀全文
posted @ 2008-05-25 23:16 銀河使者 閱讀(7800) | 評論 (18) 編輯 Java 6 Hotspot的性能將有可能超越編譯型語言
摘要: Sun公司的Kohsuke Kawaguchi考察了Hotspot JIT在JDK6 u10 b14 debug版中產生的匯編代碼,并將其記錄在博客中。該博文著重闡述了Java優化的程度。 閱讀全文
posted @ 2008-05-14 17:16 銀河使者 閱讀(894) | 評論 (6) 編輯 Java SE6調用Java編譯器的兩種新方法
摘要: 在很多Java應用中需要在程序中調用Java編譯器來編譯和運行。但在早期的版本中(Java SE5及以前版本)中只能通過tools.jar中的com.sun.tools.javac包來調用Java編譯器,但由于tools.jar不是標準的Java庫,在使用時必須要設置這個jar的路徑。而在Java SE6中為我們提供了標準的包來操作Java編譯器,這就是javax.tools包。使用這個包,我們可以不用將jar文件路徑添加到classpath中了。 閱讀全文
posted @ 2008-05-13 10:25 銀河使者 閱讀(3034) | 評論 (3) 編輯 【轉載】OpenEJB 3.0支持對枚舉和集合的依賴注入及OSGi和EJB 3.0特性
摘要: 開源輕量級EJB實現框架OpenEJB的最新版支持對枚舉、集合和Maps的依賴注入(Dependency Injection,即DI),并且支持OSGi和EJB 3.0規范。在經歷了一年半的開發后,OpenEJB 3.0最終版近期發布了。該版本還支持@EJB引用其他EAR文件中的本地接口、事務日志及基于HTTP協議的EJBd,同時它還支持EJB 3.0的新特性如Business Interfaces、Java Persistence API (JPA)及JAX-WS Web Services。 閱讀全文
posted @ 2008-05-12 19:36 銀河使者 閱讀(402) | 評論 (0) 編輯 Java的多進程運行模式分析
摘要: 一般我們在java中運行其它類中的方法時,無論是靜態調用,還是動態調用,都是在當前的進程中執行的,也就是說,只有一個java虛擬機實例在運行。而有的時候,我們需要通過java代碼啟動多個java子進程。這樣做雖然占用了一些系統資源,但會使程序更加穩定,因為新啟動的程序是在不同的虛擬機進程中運行的,如果有一個進程發生異常,并不影響其它的子進程。 閱讀全文
posted @ 2008-05-10 19:02 銀河使者 閱讀(2979) | 評論 (1) 編輯 《程序員》第9期智慧擂臺題目——高頻詞匯提取
摘要: 這次智慧擂臺請大家在一個比較龐大的英文文本中找出M個數量最多的短語(由N個單詞組成)。統一處理相同的文本文件,該文本只包含英文單詞、空格和回行符,比較誰的程序效率最高。 閱讀全文
posted @ 2008-05-10 09:37 銀河使者 閱讀(1673) | 評論 (1) 編輯 百度面試題的java實現
摘要: 有一根27厘米的細木桿,在第3厘米、7厘米、11厘米、17厘米、23厘米這五個位置上各有一只螞蟻。木桿很細,不能同時通過一只螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會后退。當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘米的距離。編寫程序,求所有螞蟻都離開木桿的最小時間和最大時間。 閱讀全文
posted @ 2008-05-10 09:23 銀河使者 閱讀(6667) | 評論 (10) 編輯 一著名軟件公司的java筆試算法題的答案
摘要: 原題如下:用1、2、2、3、4、5這六個數字,用java寫一個程序,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。 閱讀全文
posted @ 2008-05-10 09:19 銀河使者 閱讀(8077) | 評論 (11) 編輯 Java正則表達式初學者指南
摘要: 本文將介紹如何在Java中使用正則表達式來處理文本數據。正則表達式就是一個字符串,但和普通的字符串不同的是,正則表達式是對一組相似字符串的抽象 閱讀全文
posted @ 2008-05-10 09:14 銀河使者 閱讀(14267) | 評論 (8) 編輯 J2SE5.0中最有趣的新特性:注釋(annotation)
摘要: 本文將向你介紹J2SE5.0中的新特性之一:注釋。本文將從什么是注釋;J2SE5.0中預定義的注釋;如何自定義注釋;如何對注釋進行注釋以及如何在程序中讀取注釋5個方面進行討論。 閱讀全文
posted @ 2008-05-09 12:46 銀河使者 閱讀(3101) | 評論 (6) 編輯 如何防止覆蓋(override)toString方法時產生遞歸調用
摘要: 在Java中任何對象都繼承于Object類,因此,每個類都有一個toString方法用于返回當前對象的字符串形式(可能是對象地址或其他和對象相關的信息)。在每個類中也可以覆蓋toString方法以返回自定義的字符串。 閱讀全文
posted @ 2008-05-07 16:07 銀河使者 閱讀(1990) | 評論 (7) 編輯 在Java中連接字符串時是使用+號還是使用StringBuilder
摘要: 字符串是Java程序中最常用的一種數據結構之一。在Java中的String類已經重載的"+"。也就是說,字符串可以直接使用"+"進行連接,如String s = "abc" + "ddd";但這樣做真的好嗎?當然,這個問題不能簡單地回答yes or no。要根據具體情況來定。在Java中提供了一個StringBuilder類(這個類只在J2SE5及以上版本提供,以前的版本使用StringBuffer類),這個類也可以起到"+"的作用。那么我們應該用哪個呢? 閱讀全文
posted @ 2008-05-07 16:04 銀河使者 閱讀(25495) | 評論 (15) 編輯 java.lang.Object是如何成為默認父類的
摘要: 經常有Java初學者會問為什么一個沒有父類的Java類會自動從java.lang.Object類繼承。如下面是一個普通的Java類:
public class Test // 從Object類繼承 { public static void main(String[] args) { System.out.println(new Test().toString()); } } 從上面的代碼可以看出,實際上,Test類的父類就是Object,因此,在Test中可以使用Object類的public或protected資源,如toString方法。那么Java編譯器和JVM到底是如何做的呢? 閱讀全文 posted @ 2008-05-06 15:14 銀河使者 閱讀(2773) | 評論 (0) 編輯 Java SE 6之GUI:讓界面更加絢麗(下)
摘要: 在上一篇中我介紹了Java SE 6在GUI上的部分改進。在這篇 文章中我接著介紹另外幾種新的GUI功能。這些功能是:
1. 帶有排序和過濾功能的JTable。 2. 增強的JTabbedPane組件 3. 增強的打印功能 4. 增強的拖放功能 閱讀全文 posted @ 2008-04-30 20:19 銀河使者 閱讀(7923) | 評論 (6) 編輯 Java SE 6之GUI:讓界面更加絢麗(上)
摘要: Java是一種非常強大的編程語言,但Java的GUI能力一直是它的軟肋。雖然Java提供2種圖形解決方案,AWT和Swing。但這2種圖形庫的功能十分有限,使用它們并不能帶來更多的用戶體驗。而且AWT和Swing的更新速度很慢。一直到Java SE 5也沒什么明顯的變化。幸好Java SE 6終于為它們增加大更強大的功能。有了這些功能,使用AWT和Swing設計的用戶界面可以更貼近用戶。為了使讀者能夠更早地體驗Java SE 6 GUI的美麗,本文就Java SE 6 GUI提供的主要功能進行討論。 閱讀全文
posted @ 2008-04-29 14:34 銀河使者 閱讀(8056) | 評論 (10) 編輯 關于Java String對象創建問題解惑
摘要: 先看看下面的代碼
public String makinStrings() { String s = "Fred"; s = s + "47"; s = s.substring(2, 5); s = s.toUpperCase(); return s.toString(); } 問:調用makinStrings方法會創建幾個String對象呢? 閱讀全文 posted @ 2008-04-27 10:01 銀河使者 閱讀(3173) | 評論 (18) 編輯 接口、類、抽象類、對象的另類解釋
摘要: 大家也許都知道做工藝器或是工廠里做生產某些產品的模具模具。如做一個金屬的五角星,只要將鋼水罐到五角星的模具模具里就可以很容易地制做五角星。我們也可以將類比喻成做五角星的模具。 而生產出的一個個五角星就是一個個對象。 為了建立不同的對象(有的是金屬的、有的塑料的,等等),可通過向模具里灌入不同的液態材料就可以制做。這也相當于向類的構造方法中傳入不同的參數(相當于不同的液態材料)。 閱讀全文
posted @ 2008-04-27 09:50 銀河使者 閱讀(2752) | 評論 (9) 編輯
|
|