20155317 2016-2017-2 《Java程序设计》第十学习总结
20155317 2016-2017-2 《Java程序設(shè)計(jì)》第十學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
1.網(wǎng)絡(luò)編程的概念:
網(wǎng)絡(luò)編程就是在兩個(gè)或兩個(gè)以上的設(shè)備(例如計(jì)算機(jī))之間傳輸數(shù)據(jù)。程序員所作的事情就是把數(shù)據(jù)發(fā)送到指定的位置,或者接收到指定的數(shù)據(jù),這個(gè)就是狹義的網(wǎng)絡(luò)編程范疇。在發(fā)送和接收數(shù)據(jù)時(shí),大部分的程序設(shè)計(jì)語(yǔ)言都設(shè)計(jì)了專門的API實(shí)現(xiàn)這些功能,程序員只需要調(diào)用即可。網(wǎng)絡(luò)編程的實(shí)質(zhì)就是兩個(gè)(或多個(gè))設(shè)備(例如計(jì)算機(jī))之間的數(shù)據(jù)傳輸。按照計(jì)算機(jī)網(wǎng)絡(luò)的定義,通過(guò)一定的物理設(shè)備將處于不同位置的計(jì)算機(jī)連接起來(lái)組成的網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)中包含的設(shè)備有:計(jì)算機(jī)、路由器、交換機(jī)等等。網(wǎng)絡(luò)最主要的優(yōu)勢(shì)在于共享:共享設(shè)備和數(shù)據(jù),現(xiàn)在共享設(shè)備最常見(jiàn)的是打印機(jī),一個(gè)公司一般一個(gè)打印機(jī)即可,共享數(shù)據(jù)就是將大量的數(shù)據(jù)存儲(chǔ)在一組機(jī)器中,其它的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)訪問(wèn)這些數(shù)據(jù),例如網(wǎng)站、銀行服務(wù)器等等。
2.網(wǎng)絡(luò)通訊方式:
在現(xiàn)有的網(wǎng)絡(luò)中,網(wǎng)絡(luò)通訊的方式主要有兩種:
1、 TCP(傳輸控制協(xié)議)方式
2、 UDP(用戶數(shù)據(jù)報(bào)協(xié)議)方式
在網(wǎng)絡(luò)通訊中,TCP方式就類似于撥打電話,使用該種方式進(jìn)行網(wǎng)絡(luò)通訊時(shí),需要建立專門的虛擬連接,然后進(jìn)行可靠的數(shù)據(jù)傳輸,如果數(shù)據(jù)發(fā)送失敗,則客戶端會(huì)自動(dòng)重發(fā)該數(shù)據(jù)。而UDP方式就類似于發(fā)送短信,使用這種方式進(jìn)行網(wǎng)絡(luò)通訊時(shí),不需要建立專門的虛擬連接,傳輸也不是很可靠,如果發(fā)送失敗則客戶端無(wú)法獲得。這兩種傳輸方式都是實(shí)際的網(wǎng)絡(luò)編程中進(jìn)行使用,重要的數(shù)據(jù)一般使用TCP方式進(jìn)行數(shù)據(jù)傳輸,而大量的非核心數(shù)據(jù)則都通過(guò)UDP方式進(jìn)行傳遞,在一些程序中甚至結(jié)合使用這兩種方式進(jìn)行數(shù)據(jù)的傳遞。由于TCP需要建立專用的虛擬連接以及確認(rèn)傳輸是否正確,所以使用TCP方式的速度稍微慢一些,而且傳輸時(shí)產(chǎn)生的數(shù)據(jù)量要比UDP稍微大一些。
3.客戶端網(wǎng)絡(luò)編程技術(shù):
客戶端(Client)是指網(wǎng)絡(luò)編程中首先發(fā)起連接的程序,客戶端一般實(shí)現(xiàn)程序界面和基本邏輯實(shí)現(xiàn),在進(jìn)行實(shí)際的客戶端編程時(shí),無(wú)論客戶端復(fù)雜還是簡(jiǎn)單,以及客戶端實(shí)現(xiàn)的方式,客戶端的編程主要由三個(gè)步驟實(shí)現(xiàn):
1、 建立網(wǎng)絡(luò)連接
客戶端網(wǎng)絡(luò)編程的第一步都是建立網(wǎng)絡(luò)連接。在建立網(wǎng)絡(luò)連接時(shí)需要指定連接到的服務(wù)器的IP地址和端口號(hào),建立完成以后,會(huì)形成一條虛擬的連接,后續(xù)的操作就可以通過(guò)該連接實(shí)現(xiàn)數(shù)據(jù)交換了。
2、 交換數(shù)據(jù)
連接建立以后,就可以通過(guò)這個(gè)連接交換數(shù)據(jù)了。交換數(shù)據(jù)嚴(yán)格按照請(qǐng)求響應(yīng)模型進(jìn)行,由客戶端發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)到服務(wù)器,服務(wù)器反饋一個(gè)響應(yīng)數(shù)據(jù)給客戶端,如果客戶端不發(fā)送請(qǐng)求則服務(wù)器端就不響應(yīng)。
根據(jù)邏輯需要,可以多次交換數(shù)據(jù),但是還是必須遵循請(qǐng)求響應(yīng)模型。
3、 關(guān)閉網(wǎng)絡(luò)連接
在數(shù)據(jù)交換完成以后,關(guān)閉網(wǎng)絡(luò)連接,釋放程序占用的端口、內(nèi)存等系統(tǒng)資源,結(jié)束網(wǎng)絡(luò)編程。
4.服務(wù)器網(wǎng)絡(luò)編程技術(shù):
服務(wù)器端(Server)是指在網(wǎng)絡(luò)編程中被動(dòng)等待連接的程序,服務(wù)器端一般實(shí)現(xiàn)程序的核心邏輯以及數(shù)據(jù)存儲(chǔ)等核心功能。服務(wù)器端的編程步驟和客戶端不同,是由四個(gè)步驟實(shí)現(xiàn),依次是:
1、 監(jiān)聽(tīng)端口
服務(wù)器端屬于被動(dòng)等待連接,所以服務(wù)器端啟動(dòng)以后,不需要發(fā)起連接,而只需要監(jiān)聽(tīng)本地計(jì)算機(jī)的某個(gè)固定端口即可。
這個(gè)端口就是服務(wù)器端開(kāi)放給客戶端的端口,服務(wù)器端程序運(yùn)行的本地計(jì)算機(jī)的IP地址就是服務(wù)器端程序的IP地址。
2、 獲得連接
當(dāng)客戶端連接到服務(wù)器端時(shí),服務(wù)器端就可以獲得一個(gè)連接,這個(gè)連接包含客戶端的信息,例如客戶端IP地址等等,服務(wù)器端和客戶端也通過(guò)該連接進(jìn)行數(shù)據(jù)交換。
一般在服務(wù)器端編程中,當(dāng)獲得連接時(shí),需要開(kāi)啟專門的線程處理該連接,每個(gè)連接都由獨(dú)立的線程實(shí)現(xiàn)。
3、 交換數(shù)據(jù)
服務(wù)器端通過(guò)獲得的連接進(jìn)行數(shù)據(jù)交換。服務(wù)器端的數(shù)據(jù)交換步驟是首先接收客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù),然后進(jìn)行邏輯處理,再把處理以后的結(jié)果數(shù)據(jù)發(fā)送給客戶端。簡(jiǎn)單來(lái)說(shuō),就是先接收再發(fā)送,這個(gè)和客戶端的數(shù)據(jù)交換數(shù)序不同。
其實(shí),服務(wù)器端獲得的連接和客戶端連接是一樣的,只是數(shù)據(jù)交換的步驟不同。
當(dāng)然,服務(wù)器端的數(shù)據(jù)交換也是可以多次進(jìn)行的。
在數(shù)據(jù)交換完成以后,關(guān)閉和客戶端的連接。
4、 關(guān)閉連接
當(dāng)服務(wù)器程序關(guān)閉時(shí),需要關(guān)閉服務(wù)器端,通過(guò)關(guān)閉服務(wù)器端使得服務(wù)器監(jiān)聽(tīng)的端口以及占用的內(nèi)存可以釋放出來(lái),實(shí)現(xiàn)了連接的關(guān)閉。
教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程
- 問(wèn)題1:?TCP協(xié)議和UDP協(xié)議的區(qū)別?
- 解決方案:這個(gè)問(wèn)題不涉及Java的知識(shí),是純粹的計(jì)算機(jī)網(wǎng)絡(luò)的問(wèn)題。TCP協(xié)議是傳輸控制協(xié)議,UDP協(xié)議是用戶數(shù)據(jù)報(bào)協(xié)議,兩者都是傳輸層的協(xié)議,主要區(qū)別在于前者是可靠的,面向連接的協(xié)議,后者是不可靠的,無(wú)連接的協(xié)議。其它的區(qū)別還有,TCP協(xié)議傳輸速度慢,UDP常用于一次性傳輸比較少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。
- 問(wèn)題2:Java Socket運(yùn)行常出現(xiàn)異常
- 解決方案:上網(wǎng)查詢后,參考了Java Socket常見(jiàn)異常處理和 網(wǎng)絡(luò)編程需要注意的問(wèn)題這篇博客中提到的問(wèn)題,總結(jié)如下:
- 這些異常我還不能全部處理,但博客中的總結(jié)非常好
代碼調(diào)試中的問(wèn)題和解決過(guò)程
本周代碼暫未遇到什么問(wèn)題~
代碼托管
代碼行數(shù)統(tǒng)計(jì)
?
上周考試錯(cuò)題總結(jié)
上周測(cè)試了實(shí)驗(yàn)方面的內(nèi)容,還不知道錯(cuò)題是哪些……提醒我今后必須更加注意實(shí)驗(yàn)方面的內(nèi)容。
結(jié)對(duì)及互評(píng)
點(diǎn)評(píng)過(guò)的同學(xué)博客和代碼
- 本周結(jié)對(duì)學(xué)習(xí)情況
-
- 20155301
-
結(jié)對(duì)照片
- 結(jié)對(duì)學(xué)習(xí)內(nèi)容
- 學(xué)習(xí)partner的代碼并作出點(diǎn)評(píng)
- 學(xué)習(xí)partner的博客和自己的博客做對(duì)比,找出不足
-
- 上周博客互評(píng)情況
上周博客互評(píng)情況- 20155312
- 20155232
- 20155205
- 20155207
其他(感悟、思考等,可選)
Java學(xué)習(xí)接近尾聲,這周又換了一個(gè)新的教材,開(kāi)始為Java的Android平臺(tái)學(xué)習(xí)做準(zhǔn)備,這和自己的大創(chuàng)項(xiàng)目有非常大的關(guān)系,自己也會(huì)更用心去了解這方面的知識(shí)。
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 5000行 | 30篇 | 400小時(shí) | ? |
| 第一周 | 50/100 | 1/1 | 24/24 | ? |
| 第二周 | 250/300 | 1/2 | 30/54 | ? |
| 第三周 | 552/852 | 1/3 | 16/60 | ? |
| 第四周 | 717/1569 | 1/4 | 10/70 | ? |
| 第五周 | 495/2064 | 1/5 | 6/76 | ? |
| 第六周 | 754/2818 | 1/6 | 6/82 | ? |
| 第七周 | 679/3493 | 2/8 | 5/87 | ? |
| 第八周 | 352/3845 | 1/9 | 8/95 | ? |
| 第九周 | 1203/5048 | 2/11 | 5/100 | ? |
| 第十周 | 315/6252 | 1/12 | 5/105 | ? |
-
計(jì)劃學(xué)習(xí)時(shí)間:6小時(shí)
-
實(shí)際學(xué)習(xí)時(shí)間:5小時(shí)
參考資料
- Java和Android開(kāi)發(fā)學(xué)習(xí)指南
轉(zhuǎn)載于:https://www.cnblogs.com/wxwddp/p/6789481.html
總結(jié)
以上是生活随笔為你收集整理的20155317 2016-2017-2 《Java程序设计》第十学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设置Dialog全屏显示(转)
- 下一篇: Spring mvc 注解@Respon