1. 程式人生 > >JAVA中的網路程式設計詳解

JAVA中的網路程式設計詳解

1、網路程式設計

網路程式設計

網路程式設計對於很多的初學者來說,都是很嚮往的一種程式設計技能,但是很多的初學者卻因為很長一段時間無法進入網路程式設計的大門而放棄了對於該部分技術的學習。

在 學習網路程式設計以前,很多初學者可能覺得網路程式設計是比較複雜的系統工程,需要了解很多和網路相關的基礎知識,其實這些都不是很必需的。首先來問一個問題:你 會打手機嗎?很多人可能說肯定會啊,不就是按按電話號碼,撥打電話嘛,很簡單的事情啊!其實初學者如果入門網路程式設計的話也可以做到這麼簡單!

網路程式設計就是在兩個或兩個以上的裝置(例如計算機)之間傳輸資料。程式設計師所作的事情就是把資料傳送到指定的位置,或者接收到指定的資料,這個就是狹義的網路程式設計範疇。在傳送和接收資料時,大部分的程式設計語言都設計了專門的

API實現這些功能,程式設計師只需要呼叫即可。所以,基礎的網路程式設計可以和打電話一樣簡單。

下面就開始Java語言的網路程式設計技術學習吧。

13.1 網路概述

網 絡程式設計技術是當前一種主流的程式設計技術,隨著聯網趨勢的逐步增強以及網路應用程式的大量出現,所以在實際的開發中網路程式設計技術獲得了大量的使用。本章中以淺 顯的基礎知識說明和實際的案例使廣大初學者能夠進入網路程式設計技術的大門,至於以後的實際修行就要閱讀進階的書籍以及進行大量的實際練習。

13.1.1 計算機網路概述

網路程式設計的實質就是兩個(或多個)裝置(例如計算機)之間的資料傳輸。

按照

計算機網路的定義,通過一定的物理裝置將處於不同位置的計算機連線起來組成的網路,這個網路中包含的裝置有:計算機、路由器、交換機等等。

其實從軟體程式設計的角度來說,對於物理裝置的理解不需要很深刻,就像你打電話時不需要很熟悉通訊網路的底層實現是一樣的,但是當深入到網路程式設計的底層時,這些基礎知識是必須要補的。

路由器和交換機組成了核心的計算機網路,計算機只是這個網路上的節點以及控制等,通過光纖、網線等連線將裝置連線起來,從而形成了一張巨大的計算機網路。

網路最主要的優勢在於共享:共享裝置和資料,現在共享裝置最常見的是印表機,一個公司一般一個印表機即可,共享資料就是將大量的資料儲存在一組機器中,其它的計算機通過網路訪問這些資料,例如網站、銀行伺服器等等。

如果需要了解更多的網路硬體基礎知識,可以閱讀《計算機網路》教材,對於基礎進行強化,這個在基礎學習階段不是必須的,但是如果想在網路程式設計領域有所造詣,則是一個必須的基本功。

對於網路程式設計來說,最主要的是計算機和計算機之間的通訊,這樣首要的問題就是如何找到網路上的計算機呢?這就需要了解IP地址的概念。

為了能夠方便的識別網路上的每個裝置,網路中的每個裝置都會有一個唯一的數字標識,這個就是IP地址。在計算機網路中,現在命名IP地址的規定是IPv4協議,該協議規定每個IP地址由40-255之間的數字組成,例如10.0.120.34。每個接入網路的計算機都擁有唯一的IP地址,這個IP地址可能是固定的,例如網路上各種各樣的伺服器,也可以是動態的,例如使用ADSL撥號上網的寬頻使用者,無論以何種方式獲得或是否是固定的,每個計算機在聯網以後都擁有一個唯一的合法IP地址,就像每個手機號碼一樣。

但是由於IP地址不容易記憶,所以為了方便記憶,有創造了另外一個概念——域名(Domain Name),例如sohu.com等。一個IP地址可以對應多個域名,一個域名只能對應一個IP地址。域名的概念可以類比手機中的通訊簿,由於手機號碼不方便記憶,所以新增一個姓名標識號碼,在實際撥打電話時可以選擇該姓名,然後撥打即可。

在網路中傳輸的資料,全部是以IP地址作為地址標識,所以在實際傳輸資料以前需要將域名轉換為IP地址,實現這種功能的伺服器稱之為DNS伺服器,也就是通俗的說法叫做域名解析。例如當用戶在瀏覽器輸入域名時,瀏覽器首先請求DNS伺服器,將域名轉換為IP地址,然後將轉換後的IP地址反饋給瀏覽器,然後再進行實際的資料傳輸。

DNS伺服器正常工作時,使用IP地址或域名都可以很方便的找到計算機網路中的某個裝置,例如伺服器計算機。當DNS不正常工作時,只能通過IP地址訪問該裝置。所以IP地址的使用要比域名通用一些。

         IP地址和域名很好的解決了在網路中找到一個計算機的問題,但是為了讓一個計算機可以同時執行多個網路程式,就引入了另外一個概念——埠(port)

在介紹埠的概念以前,首先來看一個例子,一般一個公司前臺會有一個電話,每個員工會有一個分機,這樣如果需要找到這個員工的話,需要首先撥打前臺總機,然後轉該分機號即可。這樣減少了公司的開銷,也方便了每個員工。在該示例中前臺總機的電話號碼就相當於IP地址,而每個員工的分機號就相當於埠。

有了埠的概念以後,在同一個計算機中每個程式對應唯一的埠,這樣一個計算機上就可以通過埠區分發送給每個埠的資料了,換句話說,也就是一個計算機上可以併發執行多個網路程式,而不會在互相之間產生干擾。

在硬體上規定,埠的號碼必須位於0-65535之間,每個埠唯一的對應一個網路程式,一個網路程式可以使用多個埠。這樣一個網路程式執行在一臺計算上時,不管是客戶端還是伺服器,都是至少佔用一個埠進行網路通訊。在接收資料時,首先發送給對應的計算機,然後計算機根據埠把資料轉發給對應的程式。

有了IP地址和埠的概念以後,在進行網路通訊交換時,就可以通過IP地址查詢到該臺計算機,然後通過埠標識這臺計算機上的一個唯一的程式。這樣就可以進行網路資料的交換了。

但是,進行網路程式設計時,只有IP地址和埠的概念還是不夠的,下面就介紹一下基礎的網路程式設計相關的軟體基礎知識。

13.1. 2 網路程式設計概述

按照前面的介紹,網路程式設計就是兩個或多個裝置之間的資料交換,其實更具體的說,網路程式設計就是兩個或多個程式之間的資料交換,和普通的單機程式相比,網路程式最大的不同就是需要交換資料的程式執行在不同的計算機上,這樣就造成了資料交換的複雜。雖然通過IP地址和埠可以找到網路上執行的一個程式,但是如果需要進行網路程式設計,則還需要了解網路通訊的過程。

網路通訊基於“請求-響應”模型。為了理解這個模型,先來看一個例子,經常看電視的人肯定見過審訊的場面吧,一般是這樣的:

警察:姓名

嫌疑犯:XXX

警察:性別

嫌疑犯:男

警察:年齡

嫌疑犯:29

……

在這個例子中,警察問一句,嫌疑犯回答一句,如果警察不問,則嫌疑犯保持沉默。這種一問一答的形式就是網路中的“請求-響應”模型。也就是通訊的一端傳送資料,另外一端反饋資料,網路通訊都基於該模型。

在網路通訊中,第一次主動發起通訊的程式被稱作客戶端(Client)程式,簡稱客戶端,而在第一次通訊中等待連線的程式被稱作伺服器端(Server)程式,簡稱伺服器。一旦通訊建立,則客戶端和伺服器端完全一樣,沒有本質的區別。

由此,網路程式設計中的兩種程式就分別是客戶端和伺服器端,例如QQ程式,每個QQ使用者安裝的都是QQ客戶端程式,而QQ伺服器端程式則執行在騰訊公司的機房中,為大量的QQ使用者提供服務。這種網路程式設計的結構被稱作客戶端/伺服器結構,也叫做Client/Server結構,簡稱C/S結構。

使用C/S結 構的程式,在開發時需要分別開發客戶端和伺服器端,這種結構的優勢在於由於客戶端是專門開發的,所以根據需要實現各種效果,專業點說就是表現力豐富,而服 務器端也需要專門進行開發。但是這種結構也存在著很多不足,例如通用性差,幾乎不能通用等,也就是說一種程式的客戶端只能和對應的伺服器端通訊,而不能和 其它伺服器端通訊,在實際維護時,也需要維護專門的客戶端和伺服器端,維護的壓力比較大。

其實在執行很多程式時,沒有必要使用專用的客戶端,而需要使用通用的客戶端,例如瀏覽器,使用瀏覽器作為客戶端的結構被稱作瀏覽器/伺服器結構,也叫做Browser/Server結構,簡稱為B/S結構。

使用B/S結構的程式,在開發時只需要開發伺服器端即可,這種結構的優勢在於開發的壓力比較小,不需要維護客戶端。但是這種結構也存在著很多不足,例如瀏覽器的限制比較大,表現力不強,無法進行系統級操作等。

總之C/S結構和B/S結構是現在網路程式設計中常見的兩種結構,B/S結構其實也就是一種特殊的C/S結構。

另外簡單的介紹一下P2P(Point to Point)程式,常見的如BT、電驢等。P2P程式是一種特殊的程式,應該一個P2P程式中既包含客戶端程式,也包含伺服器端程式,例如BT,使用客戶端程式部分連線其它的種子(伺服器端),而使用伺服器端向其它的BT客戶端傳輸資料。如果這個還不是很清楚,其實P2P程式和手機是一樣的,當手機撥打電話時就是使用客戶端的作用,而手機處於待機狀態時,可以接收到其它使用者撥打的電話則起的就是伺服器端的功能,只是一般的手機不能同時使用撥打電話和接聽電話的功能,而P2P程式實現了該功能。

最後再介紹一個網路程式設計中最重要,也是最複雜的概念——協議(Protocol)。按照前面的介紹,網路程式設計就是執行在不同計算機中兩個程式之間的資料交換。在實際進行資料交換時,為了讓接收端理解該資料,計算機比較笨,什麼都不懂的,那麼就需要規定該資料的格式,這個資料的格式就是協議。

如 果沒有理解協議的概念,那麼再舉一個例子,記得有個電影叫《永不消逝的電波》,講述的是地下黨通過電臺傳送情報的故事,這裡我們不探討電影的劇情,而只關 心電臺傳送的資料。在實際發報時,需要首先將需要傳送的內容轉換為電報編碼,然後將電報編碼傳送出去,而接收端接收的是電報編碼,如果需要理解電報的內容 則需要根據密碼本翻譯出該電報的內容。這裡的密碼本就規定了一種資料格式,這種對於網路中傳輸的資料格式在網路程式設計中就被稱作協議。

那麼如何來編寫協議格式呢?答案是隨意。只要按照這種協議格式能夠生成唯一的編碼,按照該編碼可以唯一的解析出傳送資料的內容即可。也正因為各個網路程式之間協議格式的不同,所以才導致了客戶端程式都是專用的結構。

在實際的網路程式程式設計中,最麻煩的內容不是資料的傳送和接收,因為這個功能在幾乎所有的程式語言中都提供了封裝好的API進行呼叫,最麻煩的內容就是協議的設計以及協議的生產和解析,這個才是網路程式設計中最核心的內容。

關於網路程式設計的基礎知識,就介紹這裡,深刻理解IP地址、埠和協議等概念,將會極大的有助於後續知識的學習。

13.1.3 網路通訊方式

在現有的網路中,網路通訊的方式主要有兩種:

1、 TCP(傳輸控制協議)方式

2、 UDP(使用者資料報協議)方式

為 了方便理解這兩種方式,還是先來看一個例子。大家使用手機時,向別人傳遞資訊時有兩種方式:撥打電話和傳送簡訊。使用撥打電話的方式可以保證將資訊傳遞給 別人,因為別人接聽電話時本身就確認接收到了該資訊。而傳送簡訊的方式價格低廉,使用方便,但是接收人有可能接收不到。

在網路通訊中,TCP方式就類似於撥打電話,使用該種方式進行網路通訊時,需要建立專門的虛擬連線,然後進行可靠的資料傳輸,如果資料傳送失敗,則客戶端會自動重發該資料。而UDP方式就類似於傳送簡訊,使用這種方式進行網路通訊時,不需要建立專門的虛擬連線,傳輸也不是很可靠,如果傳送失敗則客戶端無法獲得。

這兩種傳輸方式都是實際的網路程式設計中進行使用,重要的資料一般使用TCP方式進行資料傳輸,而大量的非核心資料則都通過UDP方式進行傳遞,在一些程式中甚至結合使用這兩種方式進行資料的傳遞。

由於TCP需要建立專用的虛擬連線以及確認傳輸是否正確,所以使用TCP方式的速度稍微慢一些,而且傳輸時產生的資料量要比UDP稍微大一些。

關於網路程式設計的基礎知識就介紹這麼多,如果需要深入瞭解相關知識請閱讀專門的計算機網路書籍,下面開始介紹Java語言中網路程式設計的相關技術。

13.2 網路程式設計技術

前面介紹了網路程式設計的相關基礎知識,初步建立了網路程式設計的概念,但是實際學習網路程式設計還必須使用某種程式設計語言進行程式碼實現,下面就介紹一下網路程式設計的程式碼實現。

13.2.1 網路程式設計步驟

按照前面的基礎知識介紹,無論使用TCP方式還是UDP方式進行網路通訊,網路程式設計都是由客戶端和伺服器端組成。當然,B/S結構的程式設計中只需要實現伺服器端即可。所以,下面介紹網路程式設計的步驟時,均以C/S結構為基礎進行介紹。

說明:這裡的步驟實現和語言無關,也就是說,這個步驟適用於各種語言實現,不侷限於Java語言。

13.2.1.1 客戶端網路程式設計步驟

客戶端(Client)是指網路程式設計中首先發起連線的程式,客戶端一般實現程式介面和基本邏輯實現,在進行實際的客戶端程式設計時,無論客戶端複雜還是簡單,以及客戶端實現的方式,客戶端的程式設計主要由三個步驟實現:

1、 建立網路連線

客戶端網路程式設計的第一步都是建立網路連線。在建立網路連線時需要指定連線到的伺服器的IP地址和埠號,建立完成以後,會形成一條虛擬的連線,後續的操作就可以通過該連線實現資料交換了。

2、 交換資料

連線建立以後,就可以通過這個連線交換資料了。交換資料嚴格按照請求響應模型進行,由客戶端傳送一個請求資料到伺服器,伺服器反饋一個響應資料給客戶端,如果客戶端不傳送請求則伺服器端就不響應。

根據邏輯需要,可以多次交換資料,但是還是必須遵循請求響應模型。

3、 關閉網路連線

在資料交換完成以後,關閉網路連線,釋放程式佔用的埠、記憶體等系統資源,結束網路程式設計。

最基本的步驟一般都是這三個步驟,在實際實現時,步驟2會出現重複,在進行程式碼組織時,由於網路程式設計是比較耗時的操作,所以一般開啟專門的現場進行網路通訊。

13.2.1.2 伺服器端網路程式設計步驟

伺服器端(Server)是指在網路程式設計中被動等待連線的程式,伺服器端一般實現程式的核心邏輯以及資料儲存等核心功能。伺服器端的程式設計步驟和客戶端不同,是由四個步驟實現,依次是:

1、 監聽埠

伺服器端屬於被動等待連線,所以伺服器端啟動以後,不需要發起連線,而只需要監聽本地計算機的某個固定埠即可。

這個埠就是伺服器端開放給客戶端的埠,伺服器端程式執行的本地計算機的IP地址就是伺服器端程式的IP地址。

2、 獲得連線

當客戶端連線到伺服器端時,伺服器端就可以獲得一個連線,這個連線包含客戶端的資訊,例如客戶端IP地址等等,伺服器端和客戶端也通過該連線進行資料交換。

一般在伺服器端程式設計中,當獲得連線時,需要開啟專門的執行緒處理該連線,每個連線都由獨立的執行緒實現。

3、 交換資料

伺服器端通過獲得的連線進行資料交換。伺服器端的資料交換步驟是首先接收客戶端傳送過來的資料,然後進行邏輯處理,再把處理以後的結果資料傳送給客戶端。簡單來說,就是先接收再發送,這個和客戶端的資料交換數序不同。

其實,伺服器端獲得的連線和客戶端連線是一樣的,只是資料交換的步驟不同。

當然,伺服器端的資料交換也是可以多次進行的。

在資料交換完成以後,關閉和客戶端的連線。

4、 關閉連線

當伺服器程式關閉時,需要關閉伺服器端,通過關閉伺服器端使得伺服器監聽的埠以及佔用的記憶體可以釋放出來,實現了連線的關閉。

其實伺服器端程式設計的模型和呼叫中心的實現是類似的,例如移動的客服電話10086就是典型的呼叫中心,當一個使用者撥打10086時,轉接給一個專門的客服人員,由該客服實現和該使用者的問題解決,當另外一個使用者撥打10086時,則轉接給另一個客服,實現問題解決,依次類推。

在伺服器端程式設計時,10086這個電話號碼就類似於伺服器端的埠號碼,每個使用者就相當於一個客戶端程式,每個客服人員就相當於伺服器端啟動的專門和客戶端連線的執行緒,每個執行緒都是獨立進行互動的。

這就是伺服器端程式設計的模型,只是TCP方式是需要建立連線的,對於伺服器端的壓力比較大,而UDP是不需要建立連線的,對於伺服器端的壓力比較小罷了。

13.2.1.3 小結

總之,無論使用任何語言,任何方式進行基礎的網路程式設計,都必須遵循固定的步驟進行操作,在熟悉了這些步驟以後,可以根據需要進行邏輯上的處理,但是還是必須遵循固定的步驟進行。

其實,基礎的網路程式設計本身不難,也不需要很多的基礎網路知識,只是由於程式設計的基礎功能都已經由API實現,而且需要按照固定的步驟進行,所以在入門時有一定的門檻,希望下面的內容能夠將你快速的帶入網路程式設計技術的大門。

13.2.2 Java網路程式設計技術

         Java語言是在網路環境下誕生的,所以Java語言雖然不能說是對於網路程式設計的支援最好的語言,但是必須說是一種對於網路程式設計提供良好支援的語言,使用Java語言進行網路程式設計將是一件比較輕鬆的工作。

和網路程式設計有關的基本API位於java.NET包中,該包中包含了基本的網路程式設計實現,該包是網路程式設計的基礎。該包中既包含基礎的網路程式設計類,也包含封裝後的專門處理WEB相關的處理類。在本章中,將只介紹基礎的網路程式設計類。

首先來介紹一個基礎的網路類——InetAddress類。該類的功能是代表一個IP地址,並且將IP地址和域名相關的操作方法包含在該類的內部。

關於該類的使用,下面通過一個基礎的程式碼示例演示該類的使用,程式碼如下:

                   package inetaddressdemo;

import java.Net.*;

/**

 * 演示InetAddress類的基本使用

 */

public class InetAddressDemo {

         public static void main(String[] args) {

                   try{

                            //使用域名建立物件

                            InetAddress inet1 = InetAddress.getByName("www.163.com");

                            System.out.println(inet1);

                            //使用IP建立物件

                            InetAddress inet2 = InetAddress.getByName("127.0.0.1");

                            System.out.println(inet2);

                            //獲得本機地址物件

                            InetAddress inet3 = InetAddress.getLocalHost();

                            System.out.println(inet3);

                            //獲得物件中儲存的域名

                            String host = inet3.getHostName();

                            System.out.println("域名:" + host);

                            //獲得物件中儲存的IP

                            String ip = inet3.getHostAddress();

                            System.out.println("IP:" + ip);

相關推薦

JAVA網路程式設計

1、網路程式設計 網路程式設計 網路程式設計對於很多的初學者來說,都是很嚮往的一種程式設計技能,但是很多的初學者卻因為很長一段時間無法進入網路程式設計的大門而放棄了對於該部分技術的學習。 在 學習網路程式設計以前,很多初學者可能覺得網路程式設計是

Java網路程式設計

1.網路程式設計   1.1計算機網路概述   網路程式設計的實質就是兩個(或多個)裝置(例如計算機)之間的資料傳輸。   按照計算機網路的定義,通過一定的物理裝置將處於不同位置的計算機連線起來組成的網路,這個網路中包含的裝置有:計算機、路由器、交換機等等

java網路程式設計(分層,TCP/IP,網路基礎,協議)

計算機網路: 計算機網路,是指將地理位置不同的具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網路管理軟體及網路通訊協議的管理和協調下,實現資源共享和資訊傳遞的計算機系統。 從邏輯功能上看,計算機網路是以傳輸資訊為基礎目的,用通訊線路將多個計算機

Java反射機制

turn face instance java struct () 分享 2.6 一個     序言       在學習java基礎時,由於學的不紮實,講的實用性不強,就覺得沒用,很多重要的知識就那樣一筆帶過了,像這個馬上要講的反射機制一樣,當時學的時候就忽略了,到後來學習

Java的ant

問題 noi mar gin otf left 源代碼 都是 tps 分享一套幾十個源代碼,都是vc++的,打包提供 包含指針的結構數組,初始化問題 《!———— C++ 中 export 關鍵字的尷尬處境 ————》 想做一個小東西不知從何入手 493YR誒詰B駝

Java 的resultset

ins 浮點 relative 字符串類型 更新 for 變量 占用 nec 結果集(ResultSet)是數據中查詢結果返回的一種對象,可以說結果集是一個存儲查詢結果的對象,但是結果集並不僅僅具有存儲的功能,他同時還具有操縱數據的功能,可能完成對數據的更新等。   結果集

Javajar命令

 做專案的時候我們肯定接觸過很多jar包,那麼jar包是什麼呢?筆者瞭解到jar是java archive file 的簡寫。從名字就可以知道,它的應用與Java息息相關。下面就詳細介紹如何自己生成jar包,這樣我們管理我們自己的程式碼(尤其是一些比較重要而且不會或者很少有修改的程式碼)。  安裝好J

Linux網路程式設計---TCP的三次握手和四次揮手

我們知道,在TCP/IP協議中,TCP協議提供可靠的連線服務,是因為它有許多保證可靠連線的機制。可以分為3個方面: 1.確認應答機制:指的是不管哪一端傳送資料都需要確認回覆一下。 2.超時重傳機制,傳送後等待一段時間,不管是傳送失敗或者是還沒有收到回覆,那麼就認為資料傳輸失敗了;此時將會

Linux網路程式設計---HTTP協議

HTTP 簡介 HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。。 HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案,

JavaSimpleDateFormat用法

轉自:http://blog.csdn.net/linbooooo1987/article/details/7540999 [java]  view plain  copy

Java物件頭

一:物件頭 HotSpot虛擬機器中,物件在記憶體中儲存的佈局可以分為三塊區域:物件頭(Header)、例項資料(Instance Data)和對齊填充(Padding)。   HotSpot虛擬機器的物件頭(Object Header)包括兩部分資訊,第一部分用於儲存物

JavaDate型別

一、Date型別的初始化 1、 Date(int year, int month, int date); 直接寫入年份是得不到正確的結果的。 因為java中Date是從1900年開始算的,所以前面的第一個引數只要填入從1900年後過了多少年就是你想要得到的年份。 月需要減1,日可以直接插入。 這種方法用的比

Java併發(十二):CAS Unsafe Atomic 說一說Java的Unsafe類 說一說Java的Unsafe類 JavaUnsafe類 Unsafe與CAS

一、Unsafe Java無法直接訪問底層作業系統,而是通過本地(native)方法來訪問。不過儘管如此,JVM還是開了一個後門,JDK中有一個類Unsafe,它提供了硬體級別的原子操作。 這個類儘管裡面的方法都是public的,但是並沒有辦法使用它們,JDK API文件也沒有提供任何關於這個類的方法的解

Java常量池

在Java的記憶體分配中,總共3種常量池: 轉發連結 :https://blog.csdn.net/zm13007310400/article/details/77534349 1.字串常量池(String Constant Pool): 1.1:字串常量池在Java記憶體區域的哪個位

java static 作用

     static表示“全域性”或者“靜態”的意思,用來修飾成員變數和成員方法,也可以形成靜態static程式碼塊,但是Java語言中沒有全域性變數的概念。 被static修飾的成員變數和成員方法獨立於該類的任何物件。也就是說,它不依賴

Java的Type

轉載自逆水行舟的部落格Java中的Type詳解 本文主要介紹java中Type介面的來歷以及相關的幾個介面。 通過這邊文章,我們可以瞭解到與範型相關的幾個介面, 對範型的分類有個瞭解; 還可以瞭解到Type介面與Class類的關係, 以及Type出現的原因. 反射相關介面

一看你就懂,超詳細 java 的 ClassLoader

繼續 inter utils 普通 原來 handle 思考 還需 ear ClassLoader翻譯過來就是類加載器,普通的java開發者其實用到的不多,但對於某些框架開發者來說卻非常常見。理解ClassLoader的加載機制,也有利於我們編寫出更高效的代碼。ClassL

Java 高併發程式設計:多執行緒與架構設計

內容簡介 本書主要包含四個部分: 部分主要闡述 Thread 的基礎知識,詳細介紹執行緒的 API 使用、執行緒安全、執行緒間資料通訊,以及如何保護共享資源等內容,它是深入學習多執行緒內容的基礎。 第二部分引入了 ClassLoader,這是因為 ClassLoader 與執行緒不無關係

Java的集合,結合 ArrayList、HashSet 的區別以及HashCode的作用。

Java中的集合:      (1)Collection                           List(有序,可重複)             ArrayList         

javajsp Freemarker

Freemarker是一款模板引擎,是一種基於模版生成靜態檔案的通用工具,它是使用純java編寫的,一般用來生成HTML頁面。 原理 Freemarker 生成靜態頁面,首先需要使用自己定義的模板頁面,這個模板頁面可以是最最普通的html,也可以是巢狀freem