想了解java網(wǎng)絡(luò)編程怎么學(xué)嗎?想了解Java網(wǎng)絡(luò)編程(一):初體驗(yàn),怎樣才能學(xué)好java基礎(chǔ)?記住,平時沒人會給你說這些!,自學(xué)5個月Java找到了9K的工作,我的方式值得大家借鑒?? 嗎?......本文帶你一探究竟。
1.Java網(wǎng)絡(luò)編程(一):初體驗(yàn)
有同學(xué)反應(yīng),光寫數(shù)據(jù)結(jié)構(gòu)太枯燥了,能不能搞點(diǎn)有趣的東西。嗯,我決定把網(wǎng)絡(luò)這一部分提到前邊來,做一點(diǎn)有趣的東西。這節(jié)課,我們體驗(yàn)一下Java網(wǎng)絡(luò)編程。Java語言被越來越多地應(yīng)用在網(wǎng)絡(luò)環(huán)境下,偏重于服務(wù)端的開發(fā),還有分布式系統(tǒng),軟件定義硬件功能的場景等等。這些場景下,都非常依賴于語言的網(wǎng)絡(luò)開發(fā)的能力。我們今天就嘗試使用一下Java的網(wǎng)絡(luò)編程。Java的網(wǎng)絡(luò)編程的接口大多數(shù)位于 和 java.nio 這兩個package里,掌握這兩個package是Java程序員必備的基礎(chǔ)技能。服務(wù)端連接網(wǎng)絡(luò)的過程和打電話的過程可以進(jìn)行類比。比如,在手機(jī)網(wǎng)絡(luò)中,每一個手機(jī)都有一個手機(jī)號,我們知道了某個提供服務(wù)的號碼(比如外賣電話,銀行電話等),撥通這個號碼,就可以進(jìn)行通話了。計算機(jī)網(wǎng)絡(luò)也差不多,在計算機(jī)網(wǎng)絡(luò)中,每個計算機(jī)上的每個網(wǎng)卡,都會有一個號碼相互識別,這個號碼在不同的場景下,會有不同的表現(xiàn),比如,網(wǎng)址:知乎 - 與世界分享你的知識、經(jīng)驗(yàn)和見解,再比如IP地址,再比如mac地址。后面我們會一點(diǎn)點(diǎn)講解這些地址分別在什么場景下使用的。現(xiàn)在我們只需要知道一個服務(wù)端是要有一個地址的。而在我們的今天的場景下,這個地址(可以類比手機(jī)號碼)就是IP地址。不多說了,先上代碼,跑起來,大家就明白了。public class Server { public static void main(String args[]) throws { ss = new (8080); Socket conn = ss.accept(); br = new (new (conn.())); bw = new (new (conn.())); String s = br.readLine(); while (s != null) { System.out.println(s); bw.write(s.() + "\n"); bw.flush(); s = br.readLine(); } br.close(); bw.close(); conn.close(); } } 可以看到服務(wù)端在8080端口上開啟了一個,等待連接。大家可以單步調(diào)試一下,看看當(dāng)調(diào)用到accept的時候會發(fā)生什么情況。然后就是創(chuàng)建一個Reader用于從網(wǎng)絡(luò)上讀數(shù)據(jù),一個Writer向網(wǎng)絡(luò)上寫數(shù)據(jù)。讀進(jìn)來的一行,把它轉(zhuǎn)成大寫,再發(fā)回到客戶端??蛻舳艘舶汛a放上來public class Client { public static void main(String args[]) throws { Socket conn = new Socket("127.0.0.1", 8080); br = new (new (conn.())); bw = new (new (conn.())); bw.write("hello\n"); bw.flush(); String s = br.readLine(); System.out.println(s); bw.write("world\n"); bw.flush(); s = br.readLine(); System.out.println(s); br.close(); bw.close(); conn.close(); } } 和服務(wù)端對應(yīng)的,客戶端創(chuàng)建一個Socket,這個 Socket 在構(gòu)造的時候就發(fā)起向服務(wù)端的連接。連接了以后,也創(chuàng)建一個 Reader,一個 Writer。接著向服務(wù)端發(fā)送了兩個小寫字符串。先運(yùn)行服務(wù)端,再運(yùn)行客戶端,我們可以看到這樣的結(jié)果:問題今天就先稍微體驗(yàn)一下吧。這里涉及到socket,ip 地址, 端口號(程序中是8080)這些到底有什么關(guān)系?在Java虛擬機(jī)里到底是如何實(shí)現(xiàn)的?這些問題,我們會在接下來的課程里慢慢解釋。今天的作業(yè),從控制臺上輸入一個字符串,然后發(fā)送到服務(wù)端。上一節(jié)課:數(shù)據(jù)結(jié)構(gòu)(七):二叉樹的刪除和應(yīng)用舉例下一節(jié)課:分層網(wǎng)絡(luò)協(xié)議目錄:課程目錄
2.怎樣才能學(xué)好java基礎(chǔ)?記住,平時沒人會給你說這些!
迅速發(fā)展的信息技術(shù)時代,互聯(lián)網(wǎng)也是行業(yè)的領(lǐng)軍者。而Java這門語言也一直成為電腦語言的領(lǐng)頭大哥,而且在市場上這門語言也非常的成熟,這方面的人才也是供不應(yīng)求??赡艽蟛糠秩硕贾?,Java這門語言也是有點(diǎn)難度的,主要在于他的知識點(diǎn)多,每一個知識點(diǎn)都跟前面的所有知識點(diǎn)相關(guān)聯(lián),前面的學(xué)不懂,后面的課程只會越來越困難??赡軙?dǎo)致你還沒有入門就放棄了。雖然所有電腦語言的入門*件事都是,但是其中卻存在非常多的熬妙,比如為什么一定要有main方法才能夠執(zhí)行程序,為什么在輸出語句里面寫了幾個字母就能夠輸出數(shù)據(jù)來。這些我想你們都沒有真正的去了解過,所以從這些細(xì)節(jié)就可以看出來你是不是真正的學(xué)好了Java這門語言。 一、一個系統(tǒng)的學(xué)習(xí)方案,跟一套完整的教程。現(xiàn)在是互聯(lián)網(wǎng)時代,不管是書籍還是視頻,網(wǎng)絡(luò)上面的資源是非常的多,但是學(xué)習(xí)方案每個人都不一樣,應(yīng)該給自己定制一套適合自己的學(xué)習(xí)方案。這里推薦我覺得寫的好的且適合基礎(chǔ)入門學(xué)習(xí)的書籍:1,《Thinking in java 》適合入門建立正確的概念2,《Core java》這本書很貼近實(shí)踐,更多的API的介紹3,《java入門到精通》4,《java核心編程思想》5,《java編程思想,第四版中文》書是必要的,但是有一到三本就好了,不需要太多,太多了你會看不過來,如果你有更多的時間,那你可以多看幾本,不要盲目的去學(xué)習(xí),這樣不僅達(dá)不到效果,還會浪費(fèi)一大把的時間和金錢。學(xué)習(xí)過程中要不斷的鞏固學(xué)過的知識,每天把所學(xué)的知識點(diǎn)吃透,不斷的練習(xí),Java這個行業(yè)需要的是你的經(jīng)驗(yàn),而經(jīng)驗(yàn)就是在你不斷練習(xí)過程中通過程序的報錯來積累的。不要害怕寫代碼的時候出現(xiàn)錯誤,你要知道,行業(yè)里面的大佬,他們也是從你這里過來的,只是他們遇到的問題比你敲的代碼的字母量還多。給你看一下我梳理的javase學(xué)習(xí)路線: 二、掌握學(xué)習(xí)的方法,這么多自學(xué)的人,百分之七八十的人都會放棄,因?yàn)樗麄冊诿つ康拿?,或者說他們在模仿別人的學(xué)習(xí)方法。模仿別人沒錯,但是你也得選對人,不是每個人的學(xué)習(xí)方法都適合你,而且你跟別人的學(xué)習(xí)能力都不一樣,按照別人的學(xué)習(xí)方法可能會導(dǎo)致你跟不上或者浪費(fèi)一部分的時間。其實(shí)不管你怎么去學(xué),每天必須給自己一定的壓力,把自己的時間安排滿,不要讓自己閑下來,當(dāng)你閑下來之后,下一秒鐘再去學(xué)習(xí)就沒有這樣的激情或者動力,因?yàn)楫?dāng)你閑下來之后你就會感覺到自己很疲憊,再去學(xué)習(xí)就沒有多大的效果。 三、每天要對自己學(xué)的知識點(diǎn)進(jìn)行總結(jié),不管是學(xué)了多少,一定要記住一個前提,必須學(xué)懂。如果你這一個知識點(diǎn)沒有學(xué)懂就會導(dǎo)致你下一個知識點(diǎn)出現(xiàn)缺漏,然后把自己陷入一個即懂又不懂的僵局。然后再是對自己所學(xué)的知識點(diǎn)進(jìn)行總結(jié),比如今天學(xué)了集合,集合中哪些方法是常用的,哪些方法比較難,在這過程中出現(xiàn)了什么問題,如何去解決這些問題的。再然后就對自己今天所學(xué)的知識點(diǎn)進(jìn)行一個綜合的檢測,檢測自己的過程中把不會的或者忘記的再去復(fù)習(xí)一遍;或者給自己找一個綜合一點(diǎn)的題目,把前面所學(xué)的知識點(diǎn)包括在里面一起進(jìn)行檢測,這樣不僅檢測到你今天的知識點(diǎn),以前的知識點(diǎn)也進(jìn)行了一個鞏固。 四、多去尋找別人的幫助,可能別人的一句話會頂過你幾天的知識點(diǎn),雖然學(xué)習(xí)是要靠自己,但是想要java學(xué)的快學(xué)的扎實(shí)又高效,外界的幫助是必須的,很多初學(xué)者的問題都非常簡單,對于別人來說一眼就能看出是什么問題,而你自己看了大半天都找不到自己的問題出現(xiàn)在哪兒。學(xué)習(xí)要記住的一點(diǎn)就是要臉皮厚,自己解決不了的問題就去尋求別人的幫助;古代有一句話:聽君一席話勝讀十年書;這句話用在這兒一點(diǎn)都不夸張,因?yàn)閯e人在社會上摸爬滾打這么多年,他們的經(jīng)驗(yàn)是你無法想象的,你幾天能想出來的問題別人一秒鐘就能夠指出你的問題所存在的問題,而且會把你說得心服口服,甚至有些話你都聽不懂。因?yàn)槭裁茨兀窟€不是一個經(jīng)驗(yàn)的問題,別人把遇到的問題經(jīng)過多年的經(jīng)驗(yàn)總結(jié)成了自己的一句話,每次在工作的過程中都被這句話提醒到,不能再去范這個錯誤。其實(shí)行業(yè)里面的人都會有這個想法,都想炫耀自己學(xué)得知識,當(dāng)你去問他問題的時候,他一定會跟你講,因?yàn)樵谒劾锟磥硭褪潜饶銖?qiáng),然后自己再無私奉獻(xiàn)一點(diǎn)知識給你,別人其實(shí)一點(diǎn)都不虧,不僅裝了X,還把你的問題給解決了。學(xué)習(xí)Java主要分為四個階段: 一、JavaSE基礎(chǔ)階段:JavaSE作為Java的基礎(chǔ),非常重要,后面學(xué)習(xí)的框架的深度就在于你JavaSE的學(xué)習(xí)程度,基礎(chǔ)越好的人對框架的理解完全不一樣,因?yàn)樗麄儠チ私饪蚣艿牡讓釉?,而且還能看懂。這些放在一個JavaSE基礎(chǔ)不是很好的人來說很吃力,因?yàn)樗麄兛床欢蚣艿脑创a,自然就不會真正的知道框架的底層原理。有的人做了一兩年的java開發(fā),雖然工資高,但是他們對于JavaSE基礎(chǔ)部分的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的,這也關(guān)系到他們后面的職業(yè)生涯的發(fā)展。所以,學(xué)習(xí)java的人JavaSE才是你真正的起點(diǎn)??烧莆盏暮诵哪芰Γ? 1,能夠掌握DOS系統(tǒng)常用基本命令 2,熟練使用eclipes編寫java代碼 3,熟練使用java語言的常用對象 4,掌握常用數(shù)據(jù)結(jié)構(gòu)和算法 5,掌握面向?qū)ο缶幊趟枷?,為以后深入javaee打下堅(jiān)實(shí)基礎(chǔ)實(shí)戰(zhàn)項(xiàng)目:學(xué)生管理系統(tǒng)java項(xiàng)目鏈接: 二、數(shù)據(jù)庫:數(shù)據(jù)庫是開發(fā)一個程序中不可缺少的部分,一個程序必須有一個數(shù)據(jù)庫。數(shù)據(jù)庫主要是用來保存數(shù)據(jù),保證數(shù)據(jù)不會錯亂,不會隨意的改動,更不會使數(shù)據(jù)消失,保證了數(shù)據(jù)的完整性。 三、JavaWeb和網(wǎng)頁三劍客:JavaWeb基本上是所有的框架的入門,學(xué)懂了JavaWeb之后,后面的框架學(xué)習(xí)也會提升一個檔次。網(wǎng)頁三劍客就是HTML、JS、CSS;這些也是學(xué)習(xí)后端必須掌握的知識。java網(wǎng)頁開發(fā)可掌握的核心能力1,運(yùn)用常用的網(wǎng)頁開發(fā)技術(shù)設(shè)計網(wǎng)頁2,掌握WEB系統(tǒng)呼叫管理3,掌握javaWeb開發(fā)核心技術(shù)4,運(yùn)用javaWeb核心技術(shù)完成簡單的功能實(shí)現(xiàn)5,掌握javaWeb高級技術(shù),創(chuàng)建更好的Web應(yīng)用程序項(xiàng)目實(shí)戰(zhàn):鏈接: 提取碼:t0x3 四、JavaEE框架:基礎(chǔ)框架:SpringMVC、Spring、MyBatis擴(kuò)展框架:maven、、、、redis、等等代碼管理工具:git、svn項(xiàng)目實(shí)戰(zhàn):鏈接: 提取碼:xrlp記住,基礎(chǔ)學(xué)習(xí)不要盲目的追求學(xué)習(xí)速度,要一步步走穩(wěn),多去敲代碼練習(xí),多積累經(jīng)驗(yàn)。我是java開發(fā)工程師,這些都是我這些年在工作中的一些基本的總結(jié)和經(jīng)驗(yàn),我是過來人,個人觀點(diǎn),希望把我經(jīng)歷過的,學(xué)過的,看到過的分享給你們大家,希望你們在學(xué)習(xí)中少走彎路,提高學(xué)習(xí)的效率,少花冤枉錢和時間,這些都是實(shí)話,忠言逆耳,希望可以幫助到你,你要知道社會是現(xiàn)實(shí)的,當(dāng)你走向社會的時候,你會發(fā)現(xiàn),沒有真本事,社會不是那么好混的。
3.自學(xué)5個月Java找到了9K的工作,我的方式值得大家借鑒
我是去年9月22日才正式學(xué)習(xí)Java的,因?yàn)樵趪鵂I單位工作了4年,在天津一個月工資只有5000塊,而且看不到任何晉升的希望,如果想要往上走,那背后就一定要有關(guān)系才行。而且國營單位的氣氛是你干的多了,領(lǐng)導(dǎo)覺得你有野心,你干的不多,領(lǐng)導(dǎo)卻覺得你這個人不錯。我才26周歲,實(shí)在的受不了這種工作氛圍,情緒已經(jīng)壓制了很多久,一心想著要跳出來,卻一直找不到合適的機(jī)會。因?yàn)樯磉叺呐笥延性诒本┳鯦ava開發(fā)的,他工作了四五年的時間,可以在北京拿到3萬的月薪,說心里話我是真的羨慕,這遠(yuǎn)超出了我的認(rèn)知范圍。所以經(jīng)過朋友的推薦,我開始學(xué)習(xí)Java,一共學(xué)了大概5個多月的時間,今年的3月6號在天津找到了一份Java開發(fā)的工作,我包裝了一年的工作經(jīng)驗(yàn),月薪9K五險一金,這算是成功上岸了。在剛開始學(xué)習(xí)的時候我考慮過去線下培訓(xùn)班,但是我朋友不建議去,因?yàn)樗褪桥嘤?xùn)出來的,他和我說去培訓(xùn)班幾乎沒作用,你去了之后會發(fā)現(xiàn)全程都是靠自己自學(xué),老師上完課就走,不如自己看視頻學(xué)有效率,如果再有一次機(jī)會,我絕對不會花3萬塊錢去培訓(xùn)。因?yàn)榕笥咽沁^來人,他的建議我不得不聽,而且我在網(wǎng)上查了一下,培訓(xùn)班的口碑似乎都不好,這就讓我直接放棄了培訓(xùn)的想法。況且3萬的培訓(xùn)費(fèi)用是我不吃不喝半年的工資,確實(shí)有點(diǎn)舍不得。于是我開始自學(xué),因?yàn)橛信笥咽亲鲞@行的,所以自己在開始的時候少走了很多彎路,他給了我很好的建議,所以學(xué)習(xí)Java有個大佬帶是尤為重要的。因?yàn)樽鲕浖邪l(fā)的都有一個圈子,所以經(jīng)過了朋友的引薦,他讓我加了他們那個圈子的Java技術(shù)研討群。里面大部分都是自學(xué)成功的大佬,在整個學(xué)習(xí)期間,我在他們這里真的是得到了不少的幫助。因?yàn)樗麄兠總€人都積累了很多資源,所以平時都是相互分享資源,如果公司有內(nèi)推就業(yè)的名額也會相互推薦工作機(jī)會。當(dāng)然里面也有一些還在學(xué)習(xí)中的人,這都是朋友相互推薦聚到一起的。所以我建議那些還在學(xué)習(xí)Java的初學(xué)者,一定要多結(jié)識一些行業(yè)內(nèi)的大佬,可以加一下這個Java交流群,對于一個初學(xué)者來說可以獲得非常多的幫助,平時有一些問題發(fā)在群里,他們中有人工作不忙的時候就會出來解答,效率很高而且每個解答都講解的非常透徹。我之所以能在5個月左右的時間自學(xué)Java就業(yè),確實(shí)是得到了這些大佬不少的幫助。 Java主要的學(xué)習(xí)內(nèi)容:一、JavaSE基礎(chǔ)篇JavaSE就是一種標(biāo)準(zhǔn)版,是Java語言的基礎(chǔ)部分,Java衍生出來的各種框架(如Spring系列)各種產(chǎn)品都是基于JavaSE標(biāo)準(zhǔn),JavaSE是Java向上發(fā)展的基礎(chǔ),Java任何高級產(chǎn)品的底層基礎(chǔ)都是JavaSE,通俗來講這是所有孩子的”爹“。JavaSE如果學(xué)不好,理解不透徹,后面學(xué)習(xí)框架時就有如天書一般,所以JavaSE這部分的重要性是不言而喻的,希望各位初學(xué)者銘記。主要包含內(nèi)容:數(shù)據(jù)類型、基礎(chǔ)語法、運(yùn)算符、流程控制、數(shù)組、面向?qū)ο蟆⒊S妙?、異常處理、集合、IO流、多線程、反射、注解、解析、網(wǎng)絡(luò)編程。二、數(shù)據(jù)庫篇數(shù)據(jù)庫是學(xué)習(xí)Java語言必學(xué)的一項(xiàng)內(nèi)容,常見的數(shù)據(jù)庫就是MySQL和Oracle這兩種,作為初學(xué)者一般都是學(xué)習(xí)MySQL為主,一般情況下中小型企業(yè)都會選擇MySQL數(shù)據(jù)庫,比較大型的互聯(lián)網(wǎng)公司會選擇用Oracle,而學(xué)習(xí)Oracle相對于MySQL也要復(fù)雜一些,建議是主要學(xué)習(xí)MySQL數(shù)據(jù)庫,Oracle作為了解即可。學(xué)習(xí)數(shù)據(jù)庫較為簡單,基本的操作就是增刪改查。三、Web開發(fā)Web前端內(nèi)容:HTML/CSS//(前端頁面)注意:Java后端開發(fā)可以不用過多關(guān)注HTML頁面及CSS的處理,但是最起碼要會用簡單的HTML,是必需要會的,因?yàn)镴avaweb后端程序員畢竟要接觸使用AJAX方式處理數(shù)據(jù)及顯示。當(dāng)然如果只關(guān)注服務(wù)器端實(shí)現(xiàn)而不考慮任何用戶界面,則HTML、CSS、都不用關(guān)注,但是完全脫離前端的開發(fā)現(xiàn)在雖然也不少,但是絕對不關(guān)心前端是不可能,尤其是,但是前端卻可以完全不關(guān)心服務(wù)器后臺的任何實(shí)現(xiàn)。JavaEE內(nèi)容:Servlet/JSP雖然現(xiàn)在網(wǎng)上在傳JSP很少用了,可能是被一些模板或JS AJAX方式代替了一些,但是我認(rèn)為還是應(yīng)該接觸一下,萬一要用到不會怎么辦,而且它是Java EE的動態(tài)網(wǎng)頁實(shí)現(xiàn)標(biāo)準(zhǔn)組件。學(xué)習(xí)JSP過程也能更好的幫助我們理解web會話的過程,掌握web會話都有哪些我們必需知道的。如果學(xué)習(xí)Javaweb、JSP都不接觸那就相當(dāng)于學(xué)習(xí)使用而一點(diǎn)不接觸一樣,豈不是稀里糊涂。包括開發(fā)Javaweb 我們必需知道的概念諸如Web應(yīng)用上下文,請求對象,響應(yīng)對象,,Cookie等都是在接觸學(xué)習(xí)JSP和Servelt中體現(xiàn)的,還有一些比較少見的EJB JSF JMS 以及 Java Felix等。一些初學(xué)者不清楚這些難免會有誤區(qū),尤其是有些較成熟的工程師也這么說,我只能說他們很無知,只是代碼機(jī)器而已,其實(shí)對于應(yīng)用開發(fā)設(shè)計也就稀里糊涂,人云亦云罷了。永遠(yuǎn)沒有被淘汰的技術(shù)也沒有永遠(yuǎn)流行萬能的技術(shù),要看在什么環(huán)境和場合應(yīng)用,符合我需求的技術(shù)和工具就是好的,就是對的。四、高級框架1、 核心IOC容器2、Spring boot 在Spring基礎(chǔ)上的更全面提升效率的Spring工具3、ORM 框架當(dāng)今流行使用較多的是Mybatis 和 MP(Mybatis插件),Hibernate是可選性學(xué)習(xí)的4、模板技術(shù),比較成熟的、Spring Cloud 微服務(wù)框架,Spring Cloud提供的全套的分布式系統(tǒng)解決方案。五、工具maven 是構(gòu)建管理項(xiàng)目的工具,svn 和git是團(tuán)隊(duì)協(xié)作開發(fā)的項(xiàng)目源代碼及相關(guān)文檔資料管理工具,需要學(xué)習(xí)者初步掌握其應(yīng)用。像Tomcat,jetty ,resin,JBoss,GlassFish 等都是部署運(yùn)行Java web應(yīng)用的服務(wù)器。以上就是初學(xué)者大概學(xué)習(xí)的內(nèi)容,我是盡量站在初學(xué)者的角度來說的,沒有寫得特別復(fù)雜,怕初學(xué)者看不懂,沒有實(shí)質(zhì)性的幫助。所以我盡量用白話把話說的簡單一些,給大家羅列出主要學(xué)習(xí)的Java知識點(diǎn)。Java學(xué)習(xí) - 知乎有任何關(guān)于Java相關(guān)的疑問,隨時私聊我。
上述文章了解到關(guān)于Java網(wǎng)絡(luò)編程(一):初體驗(yàn),怎樣才能學(xué)好java基礎(chǔ)?記住,平時沒人會給你說這些!,自學(xué)5個月Java找到了9K的工作,我的方式值得大家借鑒?? ,讓我們對java網(wǎng)絡(luò)編程怎么學(xué) 有一個直觀的認(rèn)知。我們發(fā)現(xiàn),作為一個優(yōu)秀的Java程序員是多么的自豪。