想了解怎么學java網絡編程嗎?想了解Java網絡編程(一):初體驗,自學5個月Java找到了9K的工作,我的方式值得大家借鑒?? 嗎?......本文帶你一探究竟。
1.Java網絡編程(一):初體驗
有同學反應,光寫數據結構太枯燥了,能不能搞點有趣的東西。嗯,我決定把網絡這一部分提到前邊來,做一點有趣的東西。這節(jié)課,我們體驗一下Java網絡編程。Java語言被越來越多地應用在網絡環(huán)境下,偏重于服務端的開發(fā),還有分布式系統,軟件定義硬件功能的場景等等。這些場景下,都非常依賴于語言的網絡開發(fā)的能力。我們今天就嘗試使用一下Java的網絡編程。Java的網絡編程的接口大多數位于 和 java.nio 這兩個package里,掌握這兩個package是Java程序員必備的基礎技能。服務端連接網絡的過程和打電話的過程可以進行類比。比如,在手機網絡中,每一個手機都有一個手機號,我們知道了某個提供服務的號碼(比如外賣電話,銀行電話等),撥通這個號碼,就可以進行通話了。計算機網絡也差不多,在計算機網絡中,每個計算機上的每個網卡,都會有一個號碼相互識別,這個號碼在不同的場景下,會有不同的表現,比如,網址:知乎 - 與世界分享你的知識、經驗和見解,再比如IP地址,再比如mac地址。后面我們會一點點講解這些地址分別在什么場景下使用的?,F在我們只需要知道一個服務端是要有一個地址的。而在我們的今天的場景下,這個地址(可以類比手機號碼)就是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(); } } 可以看到服務端在8080端口上開啟了一個,等待連接。大家可以單步調試一下,看看當調用到accept的時候會發(fā)生什么情況。然后就是創(chuàng)建一個Reader用于從網絡上讀數據,一個Writer向網絡上寫數據。讀進來的一行,把它轉成大寫,再發(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(); } } 和服務端對應的,客戶端創(chuàng)建一個Socket,這個 Socket 在構造的時候就發(fā)起向服務端的連接。連接了以后,也創(chuàng)建一個 Reader,一個 Writer。接著向服務端發(fā)送了兩個小寫字符串。先運行服務端,再運行客戶端,我們可以看到這樣的結果:問題今天就先稍微體驗一下吧。這里涉及到socket,ip 地址, 端口號(程序中是8080)這些到底有什么關系?在Java虛擬機里到底是如何實現的?這些問題,我們會在接下來的課程里慢慢解釋。今天的作業(yè),從控制臺上輸入一個字符串,然后發(fā)送到服務端。上一節(jié)課:數據結構(七):二叉樹的刪除和應用舉例下一節(jié)課:分層網絡協議目錄:課程目錄
2.自學5個月Java找到了9K的工作,我的方式值得大家借鑒
我是去年9月22日才正式學習Java的,因為在國營單位工作了4年,在天津一個月工資只有5000塊,而且看不到任何晉升的希望,如果想要往上走,那背后就一定要有關系才行。而且國營單位的氣氛是你干的多了,領導覺得你有野心,你干的不多,領導卻覺得你這個人不錯。我才26周歲,實在的受不了這種工作氛圍,情緒已經壓制了很多久,一心想著要跳出來,卻一直找不到合適的機會。因為身邊的朋友有在北京做Java開發(fā)的,他工作了四五年的時間,可以在北京拿到3萬的月薪,說心里話我是真的羨慕,這遠超出了我的認知范圍。所以經過朋友的推薦,我開始學習Java,一共學了大概5個多月的時間,今年的3月6號在天津找到了一份Java開發(fā)的工作,我包裝了一年的工作經驗,月薪9K五險一金,這算是成功上岸了。在剛開始學習的時候我考慮過去線下培訓班,但是我朋友不建議去,因為他就是培訓出來的,他和我說去培訓班幾乎沒作用,你去了之后會發(fā)現全程都是靠自己自學,老師上完課就走,不如自己看視頻學有效率,如果再有一次機會,我絕對不會花3萬塊錢去培訓。因為朋友是過來人,他的建議我不得不聽,而且我在網上查了一下,培訓班的口碑似乎都不好,這就讓我直接放棄了培訓的想法。況且3萬的培訓費用是我不吃不喝半年的工資,確實有點舍不得。于是我開始自學,因為有朋友是做這行的,所以自己在開始的時候少走了很多彎路,他給了我很好的建議,所以學習Java有個大佬帶是尤為重要的。因為做軟件研發(fā)的都有一個圈子,所以經過了朋友的引薦,他讓我加了他們那個圈子的Java技術研討群。里面大部分都是自學成功的大佬,在整個學習期間,我在他們這里真的是得到了不少的幫助。因為他們每個人都積累了很多資源,所以平時都是相互分享資源,如果公司有內推就業(yè)的名額也會相互推薦工作機會。當然里面也有一些還在學習中的人,這都是朋友相互推薦聚到一起的。所以我建議那些還在學習Java的初學者,一定要多結識一些行業(yè)內的大佬,可以加一下這個Java交流群,對于一個初學者來說可以獲得非常多的幫助,平時有一些問題發(fā)在群里,他們中有人工作不忙的時候就會出來解答,效率很高而且每個解答都講解的非常透徹。我之所以能在5個月左右的時間自學Java就業(yè),確實是得到了這些大佬不少的幫助。知乎營銷平臺我的學習心得,我認為能不能自學成功的要素有兩點。*點就是自身的問題,雖然想要轉行學習Java的人很多,但是非常強烈的想要轉行學好的人是小部分。而大部分人只是抱著試試的心態(tài)來學習Java,這是完全不可能的。所以能不能學成Java并且就業(yè),最關鍵的一點就是自己的愿望是否強烈。我是屬于非常強烈那種,因為忍受不了現在工作的氛圍,以及羨慕朋友在北京可以拿到3萬的月薪,這些因素都促使我非常拼命的學。在加上自身可以做到從下班就開始看視頻自學,一直學到晚上12點的這股勁,所以才能在5個月的時間內達到就業(yè)的水平。第二點就是有大佬帶你,如果全程都靠自己摸索是非常難的,對于一個不是本專業(yè)的人來說從開始的時候就“無從下手”。更不要說在學習過程中遇到的無數bug問題很難得到解決,因為我們在學習過程中會遇到無數問題,有的時候一個小問題就能困擾我們幾個小時的時間,會導致我們的學習效率很低,這種情況出現多了以后,信心就會受到打擊,覺得自己不適合學編程,最終放棄。而當有一個大佬去給你解答后,你會很快得到答案,并且能理解為什么要這樣做,到底是哪里出現了問題,學習效率會非常高。所以總結就是自身自覺主動學習在加上大佬全程帶你,其實學習就是這么簡單的事情,無非就是這兩個關鍵的要素,少了其中一個都很難成功。自學Java必須注意的問題:(1)代碼規(guī)范初學者一定要注意培養(yǎng)自己的代碼規(guī)范,每行代碼必須要注釋,我之所以只學了5個月就能拿到9K的薪資,就是因為我代碼規(guī)范很好。其實一個初學者在開始的時候能培養(yǎng)出好的代碼規(guī)范很難,這源于在整個學習過程中有大佬帶我的原因。(2)交流溝通切記不要認為自己可以摸索自學成功,能達到一定高度的水平,一定離不開很多專業(yè)人的指導,所以多認識一些大佬尤為重要,圈子真的可以決定我們可以達到什么水平。如果大家找不到合適的圈子,我強烈建議大家添加下面的Java技術研討群,多認識幾個大佬對于職業(yè)生涯有好處。知乎營銷平臺(3)效率:能快盡量快,如果你已經決定要轉行學習Java,就千萬別拖泥帶水,把大部分的精力都投入進來,如果你是那種三天打魚兩天曬網的情況,我勸你盡早的放棄不要浪費時間,有這個時間去鍛煉鍛煉身體不好嗎?(4)學習心態(tài)一定要抱著決心轉行的心態(tài)來學,自身的意愿強度決定了你是否能轉行成功。給自學Java的初學者的學習建議:1.了解如今的市場,都需要掌握哪些主要技術就可以快速就業(yè),目前的企業(yè)都需要什么人才,這是你學習的方向和目標。2.系統的學習規(guī)劃:有一個整體學習大綱,要知道自己每天學習什么,做什么練習進行知識鞏固,一個階段學完后應該完成什么項目實戰(zhàn),進行循序漸進的學習,不可以盲目的瞎學。3.一個大佬的指導:作為一個初學者一定要記得找大佬指導你,即使是花點錢也沒關系,只要你能把技術學好就行。自己摸索基本都是彎路,很多人為什么學了一兩個月就放棄了,因為他不知道路在哪里,整個人都是迷茫的,自然容易放棄。但如果你有了一個大佬帶你,他就會給你做詳細的學習計劃,給你安排好一切,在整個學習過程中給你解答疑問,你學習起來就會思路清晰,簡單效率。 Java主要的學習內容:一、JavaSE基礎篇JavaSE就是一種標準版,是Java語言的基礎部分,Java衍生出來的各種框架(如Spring系列)各種產品都是基于JavaSE標準,JavaSE是Java向上發(fā)展的基礎,Java任何高級產品的底層基礎都是JavaSE,通俗來講這是所有孩子的”爹“。JavaSE如果學不好,理解不透徹,后面學習框架時就有如天書一般,所以JavaSE這部分的重要性是不言而喻的,希望各位初學者銘記。主要包含內容:數據類型、基礎語法、運算符、流程控制、數組、面向對象、常用類、異常處理、集合、IO流、多線程、反射、注解、解析、網絡編程。二、數據庫篇數據庫是學習Java語言必學的一項內容,常見的數據庫就是MySQL和Oracle這兩種,作為初學者一般都是學習MySQL為主,一般情況下中小型企業(yè)都會選擇MySQL數據庫,比較大型的互聯網公司會選擇用Oracle,而學習Oracle相對于MySQL也要復雜一些,建議是主要學習MySQL數據庫,Oracle作為了解即可。學習數據庫較為簡單,基本的操作就是增刪改查。三、Web開發(fā)Web前端內容:HTML/CSS//(前端頁面)注意:Java后端開發(fā)可以不用過多關注HTML頁面及CSS的處理,但是最起碼要會用簡單的HTML,是必需要會的,因為Javaweb后端程序員畢竟要接觸使用AJAX方式處理數據及顯示。當然如果只關注服務器端實現而不考慮任何用戶界面,則HTML、CSS、都不用關注,但是完全脫離前端的開發(fā)現在雖然也不少,但是絕對不關心前端是不可能,尤其是,但是前端卻可以完全不關心服務器后臺的任何實現。JavaEE內容:Servlet/JSP雖然現在網上在傳JSP很少用了,可能是被一些模板或JS AJAX方式代替了一些,但是我認為還是應該接觸一下,萬一要用到不會怎么辦,而且它是Java EE的動態(tài)網頁實現標準組件。學習JSP過程也能更好的幫助我們理解web會話的過程,掌握web會話都有哪些我們必需知道的。如果學習Javaweb、JSP都不接觸那就相當于學習使用而一點不接觸一樣,豈不是稀里糊涂。包括開發(fā)Javaweb 我們必需知道的概念諸如Web應用上下文,請求對象,響應對象,,Cookie等都是在接觸學習JSP和Servelt中體現的,還有一些比較少見的EJB JSF JMS 以及 Java Felix等。一些初學者不清楚這些難免會有誤區(qū),尤其是有些較成熟的工程師也這么說,我只能說他們很無知,只是代碼機器而已,其實對于應用開發(fā)設計也就稀里糊涂,人云亦云罷了。永遠沒有被淘汰的技術也沒有永遠流行萬能的技術,要看在什么環(huán)境和場合應用,符合我需求的技術和工具就是好的,就是對的。四、高級框架1、 核心IOC容器2、Spring boot 在Spring基礎上的更全面提升效率的Spring工具3、ORM 框架當今流行使用較多的是Mybatis 和 MP(Mybatis插件),Hibernate是可選性學習的4、模板技術,比較成熟的、Spring Cloud 微服務框架,Spring Cloud提供的全套的分布式系統解決方案。五、工具maven 是構建管理項目的工具,svn 和git是團隊協作開發(fā)的項目源代碼及相關文檔資料管理工具,需要學習者初步掌握其應用。像Tomcat,jetty ,resin,JBoss,GlassFish 等都是部署運行Java web應用的服務器。以上就是初學者大概學習的內容,我是盡量站在初學者的角度來說的,沒有寫得特別復雜,怕初學者看不懂,沒有實質性的幫助。所以我盡量用白話把話說的簡單一些,給大家羅列出主要學習的Java知識點。Java學習 - 知乎有任何關于Java相關的疑問,隨時私聊我。
上述文章了解到關于Java網絡編程(一):初體驗,自學5個月Java找到了9K的工作,我的方式值得大家借鑒?? ,讓我們對怎么學java網絡編程 有一個直觀的認知。我們發(fā)現,作為一個優(yōu)秀的Java程序員是多么的自豪。