Ⅰ java匹配url的正則表達式
給你個正則表達式的資料,自己慢慢研究,授你以漁:
一、正則表達式基礎知識
我們先從簡單的開始。假設你要搜索一個包含字元「cat」的字元串,搜索用的正則表達式就是「cat」。如果搜索對大小寫不敏感,單詞「catalog」、「Catherine」、「sophisticated」都可以匹配。也就是說:
1.1 句點符號
假設你在玩英文拼字游戲,想要找出三個字母的單詞,而且這些單詞必須以「t」字母開頭,以「n」字母結束。另外,假設有一本英文字典,你可以用正則表達式搜索它的全部內容。要構造出這個正則表達式,你可以使用一個通配符——句點符號「.」。這樣,完整的表達式就是「t.n」,它匹配「tan」、「ten」、「tin」和「ton」,還匹配「t#n」、「tpn」甚至「t n」,還有其他許多無意義的組合。這是因為句點符號匹配所有字元,包括空格、Tab字元甚至換行符:
1.2 方括弧符號
為了解決句點符號匹配范圍過於廣泛這一問題,你可以在方括弧(「[]」)裡面指定看來有意義的字元。此時,只有方括弧裡面指定的字元才參與匹配。也就是說,正則表達式「t[aeio]n」只匹配「tan」、「Ten」、「tin」和「ton」。但「Toon」不匹配,因為在方括弧之內你只能匹配單個字元:
1.3 「或」符號
如果除了上面匹配的所有單詞之外,你還想要匹配「toon」,那麼,你可以使用「|」操作符。「|」操作符的基本意義就是「或」運算。要匹配「toon」,使用「t(a|e|i|o|oo)n」正則表達式。這里不能使用方擴號,因為方括弧只允許匹配單個字元;這里必須使用圓括弧「()」。圓括弧還可以用來分組,具體請參見後面介紹。
1.4 表示匹配次數的符號
表一顯示了表示匹配次數的符號,這些符號用來確定緊靠該符號左邊的符號出現的次數:
假設我們要在文本文件中搜索美國的社會安全號碼。這個號碼的格式是999-99-9999。用來匹配它的正則表達式如圖一所示。在正則表達式中,連字元(「-」)有著特殊的意義,它表示一個范圍,比如從0到9。因此,匹配社會安全號碼中的連字元號時,它的前面要加上一個轉義字元「\」。
圖一:匹配所有123-12-1234形式的社會安全號碼
假設進行搜索的時候,你希望連字元號可以出現,也可以不出現——即,999-99-9999和999999999都屬於正確的格式。這時,你可以在連字元號後面加上「?」數量限定符號,如圖二所示:
圖二:匹配所有123-12-1234和123121234形式的社會安全號碼
下面我們再來看另外一個例子。美國汽車牌照的一種格式是四個數字加上二個字母。它的正則表達式前面是數字部分「[0-9]{4}」,再加上字母部分「[A-Z]{2}」。圖三顯示了完整的正則表達式。
圖三:匹配典型的美國汽車牌照號碼,如8836KV
1.5 「否」符號
「^」符號稱為「否」符號。如果用在方括弧內,「^」表示不想要匹配的字元。例如,圖四的正則表達式匹配所有單詞,但以「X」字母開頭的單詞除外。
圖四:匹配所有單詞,但「X」開頭的除外
1.6 圓括弧和空白符號
假設要從格式為「June 26, 1951」的生日日期中提取出月份部分,用來匹配該日期的正則表達式可以如圖五所示:
圖五:匹配所有Moth DD,YYYY格式的日期
新出現的「\s」符號是空白符號,匹配所有的空白字元,包括Tab字元。如果字元串正確匹配,接下來如何提取出月份部分呢?只需在月份周圍加上一個圓括弧創建一個組,然後用ORO API(本文後面詳細討論)提取出它的值。修改後的正則表達式如圖六所示:
圖六:匹配所有Month DD,YYYY格式的日期,定義月份值為第一個組
1.7 其它符號
為簡便起見,你可以使用一些為常見正則表達式創建的快捷符號。如表二所示:
表二:常用符號
例如,在前面社會安全號碼的例子中,所有出現「[0-9]」的地方我們都可以使用「\d」。修改後的正則表達式如圖七所示:
圖七:匹配所有123-12-1234格式的社會安全號碼
二、Jakarta-ORO庫
有許多源代碼開放的正則表達式庫可供Java程序員使用,而且它們中的許多支持Perl 5兼容的正則表達式語法。我在這里選用的是Jakarta-ORO正則表達式庫,它是最全面的正則表達式API之一,而且它與Perl 5正則表達式完全兼容。另外,它也是優化得最好的API之一。
Jakarta-ORO庫以前叫做OROMatcher,Daniel Savarese大方地把它贈送給了Jakarta Project。你可以按照本文最後參考資源的說明下載它。
我首先將簡要介紹使用Jakarta-ORO庫時你必須創建和訪問的對象,然後介紹如何使用Jakarta-ORO API。
▲ PatternCompiler對象
首先,創建一個Perl5Compiler類的實例,並把它賦值給PatternCompiler介面對象。Perl5Compiler是PatternCompiler介面的一個實現,允許你把正則表達式編譯成用來匹配的Pattern對象。
▲ Pattern對象
要把正則表達式編譯成Pattern對象,調用compiler對象的compile()方法,並在調用參數中指定正則表達式。例如,你可以按照下面這種方式編譯正則表達式「t[aeio]n」:
默認情況下,編譯器創建一個大小寫敏感的模式(pattern)。因此,上面代碼編譯得到的模式只匹配「tin」、「tan」、 「ten」和「ton」,但不匹配「Tin」和「taN」。要創建一個大小寫不敏感的模式,你應該在調用編譯器的時候指定一個額外的參數:
創建好Pattern對象之後,你就可以通過PatternMatcher類用該Pattern對象進行模式匹配。
▲ PatternMatcher對象
PatternMatcher對象根據Pattern對象和字元串進行匹配檢查。你要實例化一個Perl5Matcher類並把結果賦值給PatternMatcher介面。Perl5Matcher類是PatternMatcher介面的一個實現,它根據Perl 5正則表達式語法進行模式匹配:
使用PatternMatcher對象,你可以用多個方法進行匹配操作,這些方法的第一個參數都是需要根據正則表達式進行匹配的字元串:
· boolean matches(String input, Pattern pattern):當輸入字元串和正則表達式要精確匹配時使用。換句話說,正則表達式必須完整地描述輸入字元串。
· boolean matchesPrefix(String input, Pattern pattern):當正則表達式匹配輸入字元串起始部分時使用。
· boolean contains(String input, Pattern pattern):當正則表達式要匹配輸入字元串的一部分時使用(即,它必須是一個子串)。
另外,在上面三個方法調用中,你還可以用PatternMatcherInput對象作為參數替代String對象;這時,你可以從字元串中最後一次匹配的位置開始繼續進行匹配。當字元串可能有多個子串匹配給定的正則表達式時,用PatternMatcherInput對象作為參數就很有用了。用PatternMatcherInput對象作為參數替代String時,上述三個方法的語法如下:
· boolean matches(PatternMatcherInput input, Pattern pattern)
· boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)
· boolean contains(PatternMatcherInput input, Pattern pattern)
三、應用實例
下面我們來看看Jakarta-ORO庫的一些應用實例。
3.1 日誌文件處理
任務:分析一個Web伺服器日誌文件,確定每一個用戶花在網站上的時間。在典型的BEA WebLogic日誌文件中,日誌記錄的格式如下:
分析這個日誌記錄,可以發現,要從這個日誌文件提取的內容有兩項:IP地址和頁面訪問時間。你可以用分組符號(圓括弧)從日誌記錄提取出IP地址和時間標記。
首先我們來看看IP地址。IP地址有4個位元組構成,每一個位元組的值在0到255之間,各個位元組通過一個句點分隔。因此,IP地址中的每一個位元組有至少一個、最多三個數字。圖八顯示了為IP地址編寫的正則表達式:
圖八:匹配IP地址
IP地址中的句點字元必須進行轉義處理(前面加上「\」),因為IP地址中的句點具有它本來的含義,而不是採用正則表達式語法中的特殊含義。句點在正則表達式中的特殊含義本文前面已經介紹。
日誌記錄的時間部分由一對方括弧包圍。你可以按照如下思路提取出方括弧裡面的所有內容:首先搜索起始方括弧字元(「[」),提取出所有不超過結束方括弧字元(「]」)的內容,向前尋找直至找到結束方括弧字元。圖九顯示了這部分的正則表達式。
圖九:匹配至少一個字元,直至找到「]」
現在,把上述兩個正則表達式加上分組符號(圓括弧)後合並成單個表達式,這樣就可以從日誌記錄提取出IP地址和時間。注意,為了匹配「- -」(但不提取它),正則表達式中間加入了「\s-\s-\s」。完整的正則表達式如圖十所示。
圖十:匹配IP地址和時間標記
現在正則表達式已經編寫完畢,接下來可以編寫使用正則表達式庫的Java代碼了。
為使用Jakarta-ORO庫,首先創建正則表達式字元串和待分析的日誌記錄字元串:
這里使用的正則表達式與圖十的正則表達式差不多完全相同,但有一點例外:在Java中,你必須對每一個向前的斜杠(「\」)進行轉義處理。圖十不是Java的表示形式,所以我們要在每個「\」前面加上一個「\」以免出現編譯錯誤。遺憾的是,轉義處理過程很容易出現錯誤,所以應該小心謹慎。你可以首先輸入未經轉義處理的正則表達式,然後從左到右依次把每一個「\」替換成「\\」。如果要復檢,你可以試著把它輸出到屏幕上。
初始化字元串之後,實例化PatternCompiler對象,用PatternCompiler編譯正則表達式創建一個Pattern對象:
現在,創建PatternMatcher對象,調用PatternMatcher介面的contain()方法檢查匹配情況:
接下來,利用PatternMatcher介面返回的MatchResult對象,輸出匹配的組。由於logEntry字元串包含匹配的內容,你可以看到類如下面的輸出:
3.2 HTML處理實例一
下面一個任務是分析HTML頁面內FONT標記的所有屬性。HTML頁面內典型的FONT標記如下所示:
程序將按照如下形式,輸出每一個FONT標記的屬性:
在這種情況下,我建議你使用兩個正則表達式。第一個如圖十一所示,它從字體標記提取出「"face="Arial, Serif" size="+2" color="red"」。
圖十一:匹配FONT標記的所有屬性
第二個正則表達式如圖十二所示,它把各個屬性分割成名字-值對。
圖十二:匹配單個屬性,並把它分割成名字-值對
分割結果為:
現在我們來看看完成這個任務的Java代碼。首先創建兩個正則表達式字元串,用Perl5Compiler把它們編譯成Pattern對象。編譯正則表達式的時候,指定Perl5Compiler.CASE_INSENSITIVE_MASK選項,使得匹配操作不區分大小寫。
接下來,創建一個執行匹配操作的Perl5Matcher對象。
假設有一個String類型的變數html,它代表了HTML文件中的一行內容。如果html字元串包含FONT標記,匹配器將返回true。此時,你可以用匹配器對象返回的MatchResult對象獲得第一個組,它包含了FONT的所有屬性:
接下來創建一個PatternMatcherInput對象。這個對象允許你從最後一次匹配的位置開始繼續進行匹配操作,因此,它很適合於提取FONT標記內屬性的名字-值對。創建PatternMatcherInput對象,以參數形式傳入待匹配的字元串。然後,用匹配器實例提取出每一個FONT的屬性。這通過指定PatternMatcherInput對象(而不是字元串對象)為參數,反復地調用PatternMatcher對象的contains()方法完成。PatternMatcherInput對象之中的每一次迭代將把它內部的指針向前移動,下一次檢測將從前一次匹配位置的後面開始。
本例的輸出結果如下:
3.3 HTML處理實例二
下面我們來看看另一個處理HTML的例子。這一次,我們假定Web伺服器從widgets.acme.com移到了newserver.acme.com。現在你要修改一些頁面中的鏈接:
執行這個搜索的正則表達式如圖十三所示:
圖十三:匹配修改前的鏈接
如果能夠匹配這個正則表達式,你可以用下面的內容替換圖十三的鏈接:
注意#字元的後面加上了$1。Perl正則表達式語法用$1、$2等表示已經匹配且提取出來的組。圖十三的表達式把所有作為一個組匹配和提取出來的內容附加到鏈接的後面。
現在,返回Java。就象前面我們所做的那樣,你必須創建測試字元串,創建把正則表達式編譯到Pattern對象所必需的對象,以及創建一個PatternMatcher對象:
接下來,用com.oroinc.text.regex包Util類的substitute()靜態方法進行替換,輸出結果字元串:
Util.substitute()方法的語法如下:
這個調用的前兩個參數是以前創建的PatternMatcher和Pattern對象。第三個參數是一個Substiution對象,它決定了替換操作如何進行。本例使用的是Perl5Substitution對象,它能夠進行Perl5風格的替換。第四個參數是想要進行替換操作的字元串,最後一個參數允許指定是否替換模式的所有匹配子串(Util.SUBSTITUTE_ALL),或只替換指定的次數。
Ⅱ JAVA是什麼軟體,有什麼用
它是個面向網路的程序設計語言,用來讓程序員創建應用程序,這些應用程序可以通過網路下載,而且可在任何計算平台上安全地運行。如果再加上萬維網和公司內部網體系,你將會擁有一個標準的網路計算環境,Java作為一個分布式的,面向對象的程序設計語言,可以讓位於任何地方的任何計算機應用網路上的應用程序。
如果在商業角度看待Java,Java是個時髦話。同不少已經有20年歷史的其他程序設計語言相比,Java吸收了計算機科學領域的各種最新成果,另外一方面,由於Java還比較年輕,它缺少諸如Visual Basic 或C++那樣的豐富的編程工具的支持。
同C++一樣, Java是個面向對象的語言,這就意味著軟體可以以部件的形式編制,為了滿足某種任務,軟部件可以互相配合。運行Java,不必非得在網路環境中進行,Java同其他傳統的諸如COBOL或 Basic這樣的程序設計語言一樣,可以創建獨立運行的應用程序。只不過Java對互聯網上的應用開發更拿手。
Java適宜於互聯網的開發應用,其中一個原因是它使用了虛擬機,虛擬機是個用來解釋Java指令的軟體包,可以讓Java在任何機器上運行,比如有運行在Mac或 UNIX下的虛擬機軟體包。虛擬機並不是Java語言本身,它是個為特定機器編寫的解釋器軟體。Java的虛擬機策略就相當於世界語,這是個人造的國際語言,目的是使得不同語言之間的翻譯和溝通更加容易。
要稱作一個通用的計算機語言,Java是最適合不過的,這意味著它可以在所有的計算機上運行,(盡管需要為各種機器編寫Java虛擬機軟體),可以根據需要提供軟部件,並且具有內在的安全機制。
用Java編寫的操作系統,稱為JavaOS,是個基於語言的操作系統,它看起來似乎沒有機會來占據PC市場。但是它為Microsoft Windows和MacOS未來的發展提供了線索。它也許將來會應用到各種儀器設備中,包括電視遙控器和溫控器。
基於網路的內容供應商對Java技術很感興趣,因為它增加了交互性和動畫功能,這是吸引觀眾的關鍵因素。對於軟體商來說, Java有希望可以讓人們採用租用軟體的方式,諸如字處理器或者電子表格軟體,而無需購買軟體,這就改變了目前的商業模式。
Java也使得網路計算機成為現實,無須硬碟的,價值500美元的PC
將可以取代Wintel 結構的計算機。所有這一切都顯出Java的重要性,它的支持者把它視作對付微軟和蓋茨的最後的和最好的希望,這就是為什麼一些人對Java表現出狂熱的崇拜的原因。
Ⅲ 求韓順平講java 中sql資料庫中的那兩張表的源碼
我這邊有韓順平的視頻講座,很基礎,從最基本的開始講的,你需要的話我給你,下面是清單:
韓順平 循序漸進學 java 從入門到精通 第0講-開山篇
韓順平 循序漸進學 java 從入門到精通 第1講-內容介紹 項目演示 原理剖析
內容介紹:本章講解以下內容: (1)課程介紹(2)項目演示(坦克游戲,雷霆戰艦,滿漢樓,爆炸人..)(3)java介紹(4)java開發工具介紹(5)java語言的特點(6)jdk的安裝和配置演示 (7)java運行原理剖析(Hello,wrold)
韓順平 循序漸進學 java 從入門到精通 第2講-變數 數據類型
內容介紹:本章講解以下內容: (1)初識變數(2)java的基本數據類型(3)定義變數、初始化、賦值(4)基本數據類型的轉換 a.自動轉換 b.強制轉換 c.計算中的轉換
韓順平 循序漸進學 java 從入門到精通 第3講-運算符 流程式控制制
內容介紹:本章講解以下內容: (1)java的算術運算符(2)java的關系運算符(3)java的邏輯運算符(4)java的三大流程式控制制-順序控制(5)java的三大流程式控制制-分支控制
韓順平 循序漸進學 java 從入門到精通 第4講- 流程式控制制
內容介紹:本章講解以下內容: (1)java的三大流程式控制制-分支控制(2)java的三大流程式控制制-循環控制(3)作業布置
韓順平 循序漸進學 java 從入門到精通 第5講-類 對象
內容介紹:本章講解以下內容: (1)類的介紹(2)對象的介紹(3)類和對象關系(4)類和對象的區別和聯系(5)如何定義類(6)如何創建類
韓順平 循序漸進學 java 從入門到精通 第6講-成員屬性 成員方法
內容介紹:本章講解以下內容: (1)類的成員屬性(2)如何訪問(使用)對象的成員變數(3)對象在內存的形式(4)類的成員方法的定義和使用
韓順平 循序漸進學 java 從入門到精通 第7講-成員方法 構造方法
內容介紹:本章講解以下內容: (1)類的成員方法的理解(2)方法-調用過程(3)類的成員方法(函數)-注意事項(4)類的成員方法的定義和使用(5)類的構造方法(默認構造方法)(6)類的構造方法小結
韓順平 循序漸進學 java 從入門到精通 第8講-this 類變數
內容介紹:本章講解以下內容: (1)this代詞詳講(2)類變數詳講
韓順平 循序漸進學 java 從入門到精通 第9講-類方法 封裝
內容介紹:本章講解以下內容: (1)類方法詳解(2)抽象(3)封裝(4)四個訪問修飾符 public private protected 默認(5)包
韓順平 循序漸進學 java 從入門到精通 第10講-訪問修飾符 重載 覆蓋
內容介紹:本章講解以下內容: (1)四個訪問修飾符的詳解(2)繼承詳解(3)方法的重載
(4)方法的覆蓋
韓順平 循序漸進學 java 從入門到精通 第11講-約瑟夫問題
內容介紹:本章講解以下內容: (1)約瑟夫問題詳解(用鏈表解決)
韓順平 循序漸進學 java 從入門到精通 第12講-多態
內容介紹:本章講解以下內容: (1)多態詳解
韓順平 循序漸進學 java 從入門到精通 第13講-抽象類 介面
內容介紹:本章講解以下內容: (1)抽象類詳解(2)介面的詳解
韓順平 循序漸進學 java 從入門到精通 第14講-final 作業評講
內容介紹:本章講解以下內容: (1)用介面實現多態(2)實現介面 vs 繼承類(3)final修飾符詳解
(4)作業評講
韓順平 循序漸進學 java 從入門到精通 第15講-作業 測試題
(1)作業、測試題評講
韓順平 循序漸進學 java 從入門到精通 第16講-數組
(1)數組詳解(2)簡單數據類型的數組(3)對象數組
韓順平 循序漸進學 java 從入門到精通 第17講-排序
(1)排序介紹(2)冒泡排序(3)選擇排序
韓順平 循序漸進學 java 從入門到精通 第18講-排序 查找
(1)插入排序法(2)快速排序法(3)外部排序法(4)查找介紹(5)順序查找和二分查找
韓順平 循序漸進學 java 從入門到精通 第19講-多維數組
(1)多維數組講解
韓順平 循序漸進學 java 從入門到精通 第20講-二進制 位運算 位移運算
內容介紹:本章講解以下內容: (1)二進制(原碼、反碼、補碼)(2)位運算(取反,位與,位異或,位或)(3)位移運算(算術右移,算術左移,邏輯左移)
韓順平 循序漸進學 java 從入門到精通 第21講-集合
內容介紹:本章講解以下內容: (1)集合框架圖,體系介紹(2)ArrayList 詳解
韓順平 循序漸進學 java 從入門到精通 第22講-集合
內容介紹:本章講解以下內容: (1)使用ArryaList完成雇員薪水管理系統(2)LinkedList的介紹和使用(3)Vector的介紹和使用(4)Stack(棧)的介紹和使用
韓順平 循序漸進學 java 從入門到精通 第23講-集合
內容介紹:本章講解以下內容: (1)HashMap的介紹和使用(2)Hashtable的介紹和使用(3) HashMap、Hashtable的區別(4) ArrayList、Vector的區別
韓順平 循序漸進學 java 從入門到精通 第24講-集合補充
內容介紹:本章講解以下內容: (1)對集合使用的補充說明.
韓順平 循序漸進學 java 從入門到精通 第25講-泛型 異常
內容介紹:本章講解以下內容: (1)java泛型介紹(2)java泛型舉例詳解(3)java泛型的優點
(4)異常的介紹和異常的分類
韓順平 循序漸進學 java 從入門到精通 第26講-異常
內容介紹:本章講解以下內容: (1)異常的處理-try catch finally(2)異常的處理-throws
韓順平 循序漸進學 java 從入門到精通 第27講-作業評講
內容介紹:本章講解以下內容: (1)作業評講(最佳裁判、學生成績...)
韓順平 循序漸進學 java 從入門到精通 第28講-面試題評講
內容介紹:本章講解以下內容: (1) 賽迪網程序員面試題評講[最後待定...]
韓順平 循序漸進學 java 從入門到精通 第29講-滿漢樓 swing介紹
內容介紹:本章講解以下內容: (1) 圖形用戶界面編程介紹(gui)(2)滿漢樓餐飲系統演示
(3)awt swing swt jface關系(4)eclipse介紹(5)swing組件介紹(6)swing的窗體組件和按鈕組件
韓順平 循序漸進學 java 從入門到精通 第30講-布局管理器
內容介紹:本章講解以下內容: (1)布局管理器介紹(2)BorderLayout 邊界布局(3)FlowLayout 流式布局(4)GridLayout 網格布局
韓順平 循序漸進學 java 從入門到精通 第31講-常用組件
內容介紹:本章講解以下內容: (1)JPanle的介紹和使用(2)布局管理器的綜合使用
(3)swing常用組件JTextField JPasswordField JLabel(4)swing常用組件JCheckBox JRadioButton(5)swing常用組件 JComboBox JList JScrollPane
韓順平 循序漸進學 java 從入門到精通 第32講-swing編程實戰
內容介紹:本章講解以下內容: (1)swing編程實戰-金山詞霸界面(2)swing編程實戰-qq聊天界面(3)swing編程實戰-qq登錄界面(4)swing編程實戰-記事 本界面(5)swing組件 JSplitPane JTextArea JTabbedPane (6)swing組件JMenuBar JMenu JMenuItem JToolBar
韓順平 循序漸進學 java 從入門到精通 第33講-繪圖技術 坦克大戰1
內容介紹:本章講解以下內容: (1)坦克大戰游戲演示(2)java繪圖坐標系
(3)像素的概念(4)java繪圖技術-原理(5)java繪圖常用的方法
韓順平 循序漸進學 java 從入門到精通 第34講-繪圖技術 坦克大戰2
內容介紹:本章講解以下內容: (1)坦克大戰游戲-繪出坦克(2)作業-畫蛤蟆 和 王八
韓順平 循序漸進學 java 從入門到精通 第35講-事件處理 坦克大戰3
內容介紹:本章講解以下內容: (1)java事件處理機制-原理(2)java事件處理機制案例詳解
(3)事件源 事件 事件監聽者 事件處理方法詳解(4)java事件處理機制 通俗版理解
(5)讓一個小球可以被控制上下左右移動(鍵盤監聽)
韓順平 循序漸進學 java 從入門到精通 第36講-事件監聽 坦克大戰4
內容介紹:本章講解以下內容: (1)java事件處理機制繼續講解(2)事件監聽器介面
(3)事件處理機制的一些案例
韓順平 循序漸進學 java 從入門到精通 第37講-事件總結 坦克大戰5
內容介紹:本章講解以下內容: (1)java事件處理編程總結(2)坦克大戰游戲---讓自己的坦克可以自由的移動.
韓順平 循序漸進學 java 從入門到精通 第38講-線程 坦克大戰6
內容介紹:本章講解以下內容: (1)進程的介紹(2)線程的介紹及其作用
(3)用繼承Thread類的方法來開發線程(4)用實現Runnable介面的方法來開發線程
韓順平 循序漸進學 java 從入門到精通 第39講-線程 坦克大戰7
內容介紹:本章講解以下內容: (1)如何更好的理解線程(2)繼承Thread和實現Runnable介面的區別(3)線程的實際運用 ---坦克大戰游戲(3.0) 玩家可以發射子彈.
韓順平 循序漸進學 java 從入門到精通 第40講-線程
內容介紹:本章講解以下內容: (1)線程使用的經驗之談(2)線程同步處理方式
(3)對象鎖和線程安全(4)synchronized的具體使用
韓順平 循序漸進學 java 從入門到精通 第41講-坦克大戰8
內容介紹:本章講解以下內容: (1)坦克大戰游戲升級(3.0) 玩家可以連續發射子彈
(2)坦克大戰游戲升級(3.0) 當擊中敵人坦克時,敵人坦克就消失
韓順平 循序漸進學 java 從入門到精通 第42講-坦克大戰9
內容介紹:本章講解以下內容:
(1)坦克大戰游戲升級(4.0) 當擊中敵人坦克時,敵人坦克就消失,並出現爆炸效果
(2)坦克大戰游戲升級(4.0) 敵人坦克可以自由移動
(3)坦克大戰游戲升級(4.0) 敵人坦克可以移動控制在區域內
(4)坦克大戰游戲升級(4.0) 敵人坦克可以發射子彈
(5)坦克大戰游戲升級(4.0) 敵人坦克可以連發子彈
韓順平 循序漸進學 java 從入門到精通 第43講-io編程 坦克大戰10
內容介紹:本章講解以下內容:
(1)坦克大戰游戲升級(4.0) 當敵人的坦克擊中我的坦克時,我的坦克爆炸並消失
(2)坦克大戰游戲升級(4.0) 如何控制敵人坦克重迭運動
(3)java io 編程( 文件編程 )初步介紹
(4)文件和文件流的基本概念
(5)java io 流類一覽表
(6)文件流的分類 位元組流 和 字元流的介紹
韓順平 循序漸進學 java 從入門到精通 第44講-io編程
內容介紹:本章講解以下內容: (1)java 常用 io流-文件類(File)(2)演示如何得到文件信息
(3)演示如何創建文件夾,遍歷文件,創建新文件
(4)FileInputStream 和 FileOutputStream類的使用案例
韓順平 循序漸進學 java 從入門到精通 第45講-io編程
內容介紹:本章講解以下內容:
(1)使用FileInputStream 和 FileOutputStream完成圖片拷貝
(2)文件字元流的使用案例 FileReader FileWriter
(3)緩沖字元流的使用案例 BufferedReader BufferedWriter
(4)列印輸出流的案例 PrintWriter
韓順平 循序漸進學 java 從入門到精通 第46講-io編程 記事本開發
內容介紹:本章講解以下內容: (1)java io 編程綜合案例 (2)一個簡單的文件記事本開發
韓順平 循序漸進學 java 從入門到精通 第47講-坦克大戰11
內容介紹:本章講解以下內容: (1)坦克大戰游戲升級(5.0) 如何控制敵人坦克重迭運動
韓順平 循序漸進學 java 從入門到精通 第48講-坦克大戰12
(1)坦克大戰游戲升級(5.0) 可以分關
(2)坦克大戰游戲升級(5.0) 閃爍效果
(3)坦克大戰游戲升級(5.0) 可以在玩游戲的時候暫停和繼續
(4)坦克大戰游戲升級(5.0) 可以記錄玩家的成績
韓順平 循序漸進學 java 從入門到精通 第49講-坦克大戰13
(1)坦克大戰游戲升級(5.0) 可以存檔退出
(2)坦克大戰游戲升級(5.0) 可以恢復到退出狀態 接著上一局玩
韓順平 循序漸進學 java 從入門到精通 第50講-坦克大戰14
(1)坦克大戰游戲升級(5.0) java播放聲音文件(2)播放經典的fc坦克大戰游戲開始音.
韓順平 循序漸進學 java 從入門到精通 第51講-作業評講
內容介紹:本章講解以下內容: (1)老猴排序-作業評講
韓順平 循序漸進學 java 從入門到精通 第52講-試題評講
內容介紹:本章講解以下內容: (1)賽迪網初級程序員筆試題評講
韓順平 循序漸進學 java 從入門到精通 第53講-資料庫概念
(1)資料庫的基本概念(2)資料庫的基本結構(3)資料庫的基本特點(4)目前主流資料庫的介紹
韓順平 循序漸進學 java 從入門到精通 第54講-sql server安裝配置卸載
(1)sql server 資料庫的安裝、配置、卸載
韓順平 循序漸進學 java 從入門到精通 第55講-sql server基本使用
(1)資料庫sa 用戶和普通用戶的創建和密碼分派(2)windows驗證和混合驗證的講解
(3)企業管理器的基本使用案例
韓順平 循序漸進學 java 從入門到精通 第56講-查詢分析器 ddl dml dql
(1)查詢分析器的基本使用案例(2)簡單的ddl 、dml 和 dql語句使用案例
韓順平 循序漸進學 java 從入門到精通 第57講-sql server 數據類型
(1)表名和列名的命名規則(2)表支持的數據類型-字元型char varchar text ntext nchar nvarchar (3)表支持的數據類型-數字類型 bit
韓順平 循序漸進學 java 從入門到精通 第58講-sql server 數據類型
(1)表支持的數據類型-數字類型 int bigint float numeric
(2)表支持的數據類型-日期類型 datetime timestamp
(3)表支持的數據類型-image binary
(4)表的基本操作(建表,增,刪,改)
韓順平 循序漸進學 java 從入門到精通 第59講-sql server 基本查詢
(1)表的主鍵 和 外鍵(2)查詢所有列,指定列,取消重復行(3)使用算術表達式,使用列的別名(4)使用where 子句(5)模糊查詢(like)
韓順平 循序漸進學 java 從入門到精通 第60講-sql server 基本查詢
(1)在where條件中使用in(2)使用is null的操作符(3)使用邏輯操作符號(4)使用order by字句
(5)使用列的別名排序(6)數據分組-max,min,avg,sum,count(7)group by 和 having子句
(8)對數據分組的總結
韓順平 循序漸進學 java 從入門到精通 第61講-sql server 復雜查詢
(1)多表查詢(2)自連接(3)子查詢 單行子查詢 多行子查詢
韓順平 循序漸進學 java 從入門到精通 第62講-sql server 復雜查詢
(1)在from子句中使用子查詢(2)分頁查詢(3)內連接(4)外連接(左外連接 右外連接)
韓順平 循序漸進學 java 從入門到精通 第63講-sql server 約束
(1)維護數據的完整性(2)主鍵 外鍵 not null foreign key unique check
韓順平 循序漸進學 java 從入門到精通 第64講-sql server 備份恢復 jdbc-odbc
(1)使用企業管理器完成資料庫的分離、附加(2)使用企業管理器完成資料庫的備份和恢復
(3)使用查詢分析器完成資料庫的備份和恢復(4)crud介紹
(5)jdbc介紹和jdbc驅動的分類(6)jdbc-odbc橋連接 的案例詳解
韓順平 循序漸進學 java 從入門到精通 第65講-sql server jdbc
(1)jdbc-odbc橋連案例詳解(2)sql注入漏洞解析(3)使用PreparedStatement技巧
(4)Statement和PreparedStatement的區別
韓順平 循序漸進學 java 從入門到精通 第66講-sql server jdbc
(1)jdbc驅動直連資料庫(2)jdbc的案例詳解(3)在java程序中創建,刪除資料庫(表)
(4)在java程序中備份,恢復資料庫(表)
韓順平 循序漸進學 java 從入門到精通 第67講-sql server 作業評講
(1)對表操作的測試題評講(重要!)
韓順平 循序漸進學 java 從入門到精通 第68講-項目開發流程
(1)軟體開發項目流程介紹(2)滿漢樓餐飲系統簡單介紹和分析
韓順平 循序漸進學 java 從入門到精通 第69講-學生管理系統1 項目分析
(1)學生管理系統開發流程詳細介紹1.使用jude作出流程圖2.設計資料庫3.功能分析
(3)資料庫編程實戰之一--學生管理系統1
韓順平 循序漸進學 java 從入門到精通 第70講-學生管理系統2
(1)資料庫編程實戰之一--學生管理系統2
韓順平 循序漸進學 java 從入門到精通 第71講-學生管理系統3 增刪改
(1)資料庫編程實戰之一--學生管理系統3 完成對學生的增加、刪除、修改
韓順平 循序漸進學 java 從入門到精通 第72講-學生管理系統4 model2模式
(1)資料庫編程實戰之一--學生管理系統4
完成對學生信息的修改
(2)提出模式的概念(3)對學生管理系統從model1模式改為model2模式
韓順平 循序漸進學 java 從入門到精通 第73講-學生管理系統5 sqlhelper
(1)資料庫編程實戰之一--學生管理系統5
在model2模式中對model層再次分層.業務層和DAO層.
(2)編寫一個DAO類 SqlHelper(3)完成學生管理系統並總結
韓順平 循序漸進學 java 從入門到精通 第74講-滿漢樓系統1 項目分析
(1)java項目實訓之--滿漢樓餐飲系統1
滿漢樓餐飲系統設計分析
滿漢樓餐飲系統使用演示
滿漢樓餐飲系統設計文檔說明
(2)充分理解項目開發五大流程.
韓順平 循序漸進學 java 從入門到精通 第75講-滿漢樓系統2 項目分析
(1)java項目實訓之--滿漢樓餐飲系統2
滿漢樓餐飲系統安裝與配置
滿漢樓餐飲系統的操作流程
韓順平 循序漸進學 java 從入門到精通 第76講-滿漢樓系統3 實現閃屏 登錄
(1)java項目實訓之--滿漢樓餐飲系統3
a.實現登錄閃屏效果b.實現登錄界面
韓順平 循序漸進學 java 從入門到精通 第77講-滿漢樓系統4 菜單
(1)java項目實訓之--滿漢樓餐飲系統4
a.實現登錄界面所有b.實現經理,主管,系統管理員的操作主界面-菜單部分
韓順平 循序漸進學 java 從入門到精通 第78講-滿漢樓系統5 工具欄狀態欄
(1)java項目實訓之--滿漢樓餐飲系統5
a.對主界面的布局結構進行分析
b.實現經理,主管,系統管理員的操作主界面-工具欄和狀態欄
韓順平 循序漸進學 java 從入門到精通 第79講-滿漢樓系統6 登錄驗證
(1)java項目實訓之--滿漢樓餐飲系統6
a.編寫數據層,業務層的部分類,完成用戶到資料庫的登錄驗證
b.加深對model2模式的認識.c.編寫SqlHelper工具類
韓順平 循序漸進學 java 從入門到精通 第80講-滿漢樓系統7 窗口拆分
(1)java項目實訓之--滿漢樓餐飲系統7
a.完成經理,主管,系統管理員的操作主界面-八個可選操作選項
b.完成窗口的拆分顯示
韓順平 循序漸進學 java 從入門到精通 第81講-滿漢樓系統8 界面切換
(1)java項目實訓之--滿漢樓餐飲系統8
a.完成經理,主管,系統管理員的操作主界面-人事管理和登錄管理切換
b.完成主界面一些特效
韓順平 循序漸進學 java 從入門到精通 第82講-滿漢樓系統9 人事管理
(1)java項目實訓之--滿漢樓餐飲系統9
a.完成經理,主管,系統管理員的操作主界面-人事管理的顯示,增加,刪除和修改
韓順平 循序漸進學 java 從入門到精通 第83講-滿漢樓系統10 報表統計 uml圖
(1)java項目實訓之--滿漢樓餐飲系統10
a.完成經理,主管,系統管理員的操作主界面-報表統計的顯示
b.如何使用jude軟體設計uml的用例圖,類圖,和時序圖(重要)
c.滿漢樓項目實訓之-結束語
韓順平 循序漸進學 java 從入門到精通 第84講-網路基礎
(0)java網路編程開篇名義(1)山寨版qq項目演示(2)為什麼選擇qq來講解網路編程
(3)網線,網卡,無線網卡(4)協議(tcp/ip)介紹(5)ip地址介紹(6)Ip地址與包的路由傳遞
韓順平 循序漸進學 java 從入門到精通 第85講-port url socket編程原理
(1)埠port(2)url地址(3)單工、半雙工和全雙工概念.(4)java網路編程基本原理圖
(5)客戶端向伺服器端互發信息 (半雙工通訊)
韓順平 循序漸進學 java 從入門到精通 第86講-半雙工 雙全工
(1)客戶端向伺服器端互發信息 (半雙工通訊)
在案例一得基礎上增加,可以從控制台輸入信息,相互通訊.
(2)客戶端和伺服器端,可以任意互發信息,帶界面
韓順平 循序漸進學 java 從入門到精通 第87講-山寨qq項目1 登錄界面
(1)山寨版qq天下項目實戰之一(2)完成山寨版qq登錄界面
韓順平 循序漸進學 java 從入門到精通 第88講-山寨qq項目2 好友列表界面
(1)山寨版qq天下項目實戰之二(2)完成山寨版qq的好友列表界面
韓順平 循序漸進學 java 從入門到精通 第89講-山寨qq項目3 聊天界面 對象流
(1)山寨版qq天下項目實戰之三(2)完成山寨版qq聊天界面(3)講解如何在網路間傳遞對象流
韓順平 循序漸進學 java 從入門到精通 第90講-山寨qq項目4 登錄驗證
(1)山寨版qq天下項目實戰之四(2)完成伺服器控制界面
(3)完成客戶端和伺服器端得程序結構分析(4)完成用戶的登錄驗證(到伺服器去驗證)
韓順平 循序漸進學 java 從入門到精通 第91講-山寨qq項目5 一對一的聊天
(1)山寨版qq天下項目實戰之五
(2)完成滑鼠移動到那個好友就高亮他,雙擊可以跳出聊天窗口(3)完成一對一的聊天
韓順平 循序漸進學 java 從入門到精通 第92講-山寨qq項目6 多對多的聊天
(1)山寨版qq天下項目實戰之六(2)完成山寨版qq多對多的聊天
韓順平 循序漸進學 java 從入門到精通 第93講-山寨qq項目7 好友在線提示
(1)山寨版qq天下項目實戰之七(2)完成山寨版qq多對多的聊天的顯示
(3)完成山寨版qq如何好友在線則顯示彩色頭像,如果不在線則顯示灰色的頭像.
韓順平 循序漸進學 java 從入門到精通 第94講-山寨qq項目8 好友在線提示
(1)山寨版qq天下項目實戰之八(2)完成山寨版qq當一個好友上線,可以通知所有
在線的好友,並讓他的頭像顯示彩色頭像.
(3)提出要完成的新任務.
1.不讓同一個賬號反復登錄
2.如果好友不在線,則不能聊天.
********************************************************************
Ⅳ java中如何自動生成注釋
你說的應該是生成javadoc吧?
最簡單方式就是使用命令行, cd到你的項目源代碼目錄下, 輸入如下指令:
javadoc-ddocs-subpackagescom.yourpackage
其中-d docs指定了生成的javadoc在相對目錄docs下, -subpackages com.yourpackage指定了你要被生成javadoc的源代碼包.
JAVADOC是官方提供的一種生成注釋文檔的工具, 他的用法如下:
用法:javadoc[options][packagenames][sourcefiles][@files]
-overview<file>從HTML文件讀取概覽文檔
-public僅顯示public類和成員
-protected顯示protected/public類和成員(默認值)
-package顯示package/protected/public類和成員
-private顯示所有類和成員
-help顯示命令行選項並退出
-doclet<class>通過替代doclet生成輸出
-docletpath<path>指定查找doclet類文件的位置
-sourcepath<pathlist>指定查找源文件的位置
-classpath<pathlist>指定查找用戶類文件的位置
-cp<pathlist>指定查找用戶類文件的位置
-exclude<pkglist>指定要排除的程序包列表
-subpackages<subpkglist>指定要遞歸載入的子程序包
-breakiterator計算帶有BreakIterator的第一個語句
-bootclasspath<pathlist>覆蓋由引導類載入器所載入的
類文件的位置
-source<release>提供與指定發行版的源兼容性
-extdirs<dirlist>覆蓋所安裝擴展的位置
-verbose輸出有關Javadoc正在執行的操作的信息
-locale<name>要使用的區域設置,例如en_US或en_US_WIN
-encoding<name>源文件編碼名稱
-quiet不顯示狀態消息
-J<flag>直接將<flag>傳遞到運行時系統
-X輸出非標准選項的提要
通過標准doclet提供:
-d<directory>輸出文件的目標目錄
-use創建類和程序包用法頁面
-version包含@version段
-author包含@author段
-docfilessubdirs遞歸復制文檔文件子目錄
-splitindex將索引分為每個字母對應一個文件
-windowtitle<text>文檔的瀏覽器窗口標題
-doctitle<html-code>包含概覽頁面的標題
-header<html-code>包含每個頁面的頁眉文本
-footer<html-code>包含每個頁面的頁腳文本
-top<html-code>包含每個頁面的頂部文本
-bottom<html-code>包含每個頁面的底部文本
-link<url>創建指向位於<url>的javadoc輸出的鏈接
-linkoffline<url><url2>利用位於<url2>的程序包列表鏈接至位於<url>的文檔
-excludedocfilessubdir<name1>:..排除具有給定名稱的所有文檔文件子目錄。
-group<name><p1>:<p2>..在概覽頁面中,將指定的程序包分組
-nocomment不生成說明和標記,只生成聲明。
-nodeprecated不包含@deprecated信息
-noqualifier<name1>:<name2>:...輸出中不包括指定限定符的列表。
-nosince不包含@since信息
-notimestamp不包含隱藏時間戳
-nodeprecatedlist不生成已過時的列表
-notree不生成類分層結構
-noindex不生成索引
-nohelp不生成幫助鏈接
-nonavbar不生成導航欄
-serialwarn生成有關@serial標記的警告
-tag<name>:<locations>:<header>指定單個參數定製標記
-taglet要注冊的Taglet的全限定名稱
-tagletpathTaglet的路徑
-charset<charset>用於跨平台查看生成的文檔的字元集。
-helpfile<file>包含幫助鏈接所鏈接到的文件
-linksource以HTML格式生成源文件
-sourcetab<tablength>指定源中每個製表符占據的空格數
-keywords使程序包,類和成員信息附帶HTML元標記
-stylesheetfile<path>用於更改生成文檔的樣式的文件
-docencoding<name>指定輸出的字元編碼
Ⅳ 想要系統學習java到底要學習哪些知識
一、java基礎
學習任何一門編程語言,首先要學習的是基礎語法,開啟Java學習的第一步,當然就是深入掌握計算機基礎、編程基礎語法,面向對象,集合、IO流、線程、並發、異常及網路編程,這些我們稱之為JavaSE基礎。當你掌握了這些內容之後,你就可以做出諸如:電腦上安裝的迅雷下載軟體、QQ聊天客戶端、考勤管理系統等桌面端軟體。
java學習路線大陸傳送門
Ⅵ 快速排序演算法原理與實現
快速排序的基本思想就是從一個數組中任意挑選一個元素(通常來說會選擇最左邊的元素)作為中軸元素,將剩下的元素以中軸元素作為比較的標准,將小於等於中軸元素的放到中軸元素的左邊,將大於中軸元素的放到中軸元素的右邊。
然後以當前中軸元素的位置為界,將左半部分子數組和右半部分子數組看成兩個新的數組,重復上述操作,直到子數組的元素個數小於等於1(因為一個元素的數組必定是有序的)。
以下的代碼中會常常使用交換數組中兩個元素值的Swap方法,其代碼如下
publicstaticvoidSwap(int[] A, inti, intj){
inttmp;
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
(6)java程序員的qq分組擴展閱讀:
快速排序演算法 的基本思想是:將所要進行排序的數分為左右兩個部分,其中一部分的所有數據都比另外一 部分的數據小,然後將所分得的兩部分數據進行同樣的劃分,重復執行以上的劃分操作,直 到所有要進行排序的數據變為有序為止。
定義兩個變數low和high,將low、high分別設置為要進行排序的序列的起始元素和最後一個元素的下標。第一次,low和high的取值分別為0和n-1,接下來的每次取值由劃分得到的序列起始元素和最後一個元素的下標來決定。
定義一個變數key,接下來以key的取值為基準將數組A劃分為左右兩個部分,通 常,key值為要進行排序序列的第一個元素值。第一次的取值為A[0],以後毎次取值由要劃 分序列的起始元素決定。
從high所指向的數組元素開始向左掃描,掃描的同時將下標為high的數組元素依次與劃分基準值key進行比較操作,直到high不大於low或找到第一個小於基準值key的數組元素,然後將該值賦值給low所指向的數組元素,同時將low右移一個位置。
如果low依然小於high,那麼由low所指向的數組元素開始向右掃描,掃描的同時將下標為low的數組元素值依次與劃分的基準值key進行比較操作,直到low不小於high或找到第一個大於基準值key的數組元素,然後將該值賦給high所指向的數組元素,同時將high左移一個位置。
重復步驟(3) (4),直到low的植不小於high為止,這時成功劃分後得到的左右兩部分分別為A[low……pos-1]和A[pos+1……high],其中,pos下標所對應的數組元素的值就是進行劃分的基準值key,所以在劃分結束時還要將下標為pos的數組元素賦值 為 key。