送給Java初學者的一些分享

玩水的貓 發佈 2020-05-23T23:12:58+00:00

一、前言首先,歡迎來到我的個人博客。來到這裡的每一位同學,都是即將或者已經進入JAVA這個行業的人了。不管你是學生,還是已經工作或者即將工作的,都希望你能有所收穫。我是一名java程序猿「老」司機,「老」不是說技術牛B,而是長得老。

一、前言

首先,歡迎來到我的個人博客。來到這裡的每一位同學,都是即將或者已經進入JAVA這個行業的人了。不管你是學生,還是已經工作或者即將工作的,都希望你能有所收穫。



我是一名java程序猿「老」司機,「老」不是說技術牛B,而是長得老。2015年從一個不知名的985院校的生物專業碩士畢業,出來找工作時才後悔選錯專業,著實已晚。不幸中的萬幸是我的專業方向是生物信息,是生物和計算機的交叉學科,出來的對口工作就是去做基因測序圖譜分析,就像現在的新冠病毒的基因組序列的分析一樣。在外人看起來好像是還不錯的工作,但實際上就是跑跑腳本,出出分析報告,感覺沒啥意思。所以剛畢業就找了一家做生命科學領域的雲計算的公司,為以後的轉行打下基礎。在經過五年的摸爬滾打後,現在也能稱得上是一個高級java開發工程師,也略懂一些架構相關的知識。做過車聯網、物聯網系統升級相關的業務,也做過移動支付相關的業務,在一百五十人的小公司做過技術主管,在兩千人的公司做過小組長。通過五年的學習成長,總體的自我評價是,有一定的技術廣度,但缺少一定的技術深度。

通過這篇博客,希望我個人的職場成長經歷,能給大家一個學習參考,希望大家少走彎路;同時本文也是我對個人過去一段時間的工作總結和復盤。

二、心態篇

當前的社會是一個浮躁的社會,都希望一夜暴富,一夜成名。程式設計師這一行也一樣,很多人選擇做程式設計師並不是因為喜歡,而是因為聽說這一行賺錢。我一直很羨慕NBA哪些球員,能把籃球當做自己的愛好,同時因為這一種愛好而獲得了不錯的財富和聲望。現實是殘酷的,沒有那麼多人有這樣的機會,所以我們需要在工作方向和興趣愛好上做一個平衡;我選擇做技術,這符合我的個人性格,也是我的興趣愛好,同時我認為我的能力可以做好它,它可以成為我在這個社會更好的生存下去的工具。如果只是因為聽說高薪才選擇這一行,技術是無止境的,更新換代速度很快,如果沒有興趣的支持, 你很難長久的做下去,同時,996和007的工作常態也不是誰都願意做的。所以你要明白技術是不是你的興趣,加班的常態化是不是你能接受的,他能不能成為你生存下去的技能,這是你選擇做技術的關鍵考慮指標,而不僅僅是薪資。

程序猿傳說中是高薪的。每到畢業季,就會看到各大新聞熱搜上各大網際網路公司給 各大高校畢業生開出的白菜價都是25w/30w/40w年薪數字,甚至不乏有百萬年薪的。要知道這些公司招收的都是頂級985或者專業非常對口的學生,其中不乏有碩士、博士;這些人在中國的人口基數下畢竟是少數,不是每個程序猿都是這樣的;一個事實是,程序猿確實比一般的工作工資高,但是工作時間也很長。我身邊的一個朋友跟我說,我的工資比他高不少,但是他不羨慕我。他追求的是自由和生活,而不是天天無止境的工作。



程序猿的浮躁,就是山望著那山高。在這個行業混幾年後,經常看到有同事跳槽,帶來的結果就是可觀的薪資增長;每次在討論群里一討論,都會給自己的內心帶來極大的衝擊,感覺當前公司給的薪資太低,還是外面公司給的高,跳槽的想法一直是蠢蠢欲動。並不是所有的網際網路公司都像BAT等那些大公司一樣給出很高的薪水,很多公司的工資可能差不了多少,只是薪資結構的差異。當然有不發技術非常強悍的大牛,去哪裡都會有高薪。有目的有計劃的跳槽是可以的,如果純粹是因為高几千塊錢就跳槽,可能會得不償失。

技術永遠是程式設計師的核心競爭力。 我們總是被生活中大量湧現的熱點所吸引,幾乎沒有深度閱讀和思考的時間和機會。 學習技術, 需要沉下心來慢慢鑽研的,是長期的;同時,學習不應該被賦予太多的功利色彩。 一個JAVA程式設計師的成長也應該是循序漸進的,初級程式設計師應該具備基礎語法、基礎框架;中級程式設計師應該具備:各種中間件、資料庫、協議,各種優化;高級程式設計師應該具備網絡安全、分布式、高並發、架構思維等。然而,很多程式設計師學習完基礎語法之後,就去準備做個網站開發、研究JVM優化、學習高並發等,這種知識的斷層很容易上演JAVA開發從入門到放棄。強大的核心競爭力,是長時間的學習,多個項目的磨練、實際線上項目的問題解決中獲得的。初學者要做到,不急於求成,不好高騖遠,一步一步,穩紮穩打,功到自然成。不急於求成,可以避免走彎路,非但不會延緩你成長的速度,反倒會節省你的時間。不好高騖遠,達成一個目標,再制定下一個目標,在連續的成功和進步中,建立起自信心,激發出更強的學習興趣。

三、技術篇

現在市面上的java程式設計師的水平參差不齊,現在的培訓機構可能每個月都會送一批程式設計師到社會上來,以至於有人數java程式設計師已經爛大街了。培訓機構出來的確實有一小部分技術實力很不錯的,但是很多沒有實際經驗的程式設計師憑藉著培訓好的成熟的面試技巧,很容易混進了公司,等到幹活的時候,理論不能和實踐結合,導致企業招聘失敗,所以現在企業對java程式設計師的招聘要求越來越高了。JAVA程式設計師有一句話叫做:面試造飛彈,工作擰螺絲。面試需要問這問那,實際工作只會用到一點。這也沒有壞處,畢竟知識面廣,看問題站的高度就更高,出錯的機率就會更小。

一個java程式設計師,必須要會很多技能,在小公司可能需要你既當爹又當媽,需要你參與產品設計、技術架構設計、開發、壓測、上線部署、運維等一系列的工作,對技術的廣度要求可能要高於技術的深度。在大公司可能就需要你會這其中一種或幾種,但是要求的技術深度會更高,對代碼的設計和執行的性能以及可維護性要求更高。


這裡是我給大家整理了一個高級程式設計師應該需要具備的知識技能,希望對大家差缺補漏有用。

1.java基礎

一個好的java開發工程師,一定具備很好的基礎知識,這些基礎知識是一個程式設計師能邁向更高點的堅實基礎和快速掌握其他語言和技能的加速器。

知識點:基本語法、數據結構、面向對象思想、常用的工具類、文件操作、JDK1.8新特性

2.開發框架Spring/Mybatis等

框架可以加速企業級應用的開發,框架中有很多大牛程式設計師的智慧結晶,很值得大家深入學習和研究。

知識點:IOC、AOP、反射、MVC、微服務、源碼

3.web基礎

很多後端java程式設計師該開始做開發的時候,都需要會簡單的前端開發的基礎,但是到了一定的階段,可能就後更專注與後端技術的開發了。在很多公司,2C的項目的前端會有專門的前端人員開發,但是內部的管理平台可能就需要後台程式設計師自己開發了。

知識點:HTML、CSS、JavaScript、servlet、JSP、cookie、session、json、JQuery

4.資料庫

資料庫是每個後端程式設計師必須掌握的技術,而且需要學會相關的優化技巧

知識點:基本語法、sql優化、事物、索引、引擎、資料庫設計、分表分庫

5.緩存技術

緩存是現在常用的技術,緩存無處不在,cup、磁碟等都會有緩存。使用緩存的主要目的就是一個字:快。現在也可以用緩存做一些其他的功能,比如秒殺等。

知識點:redis、memcached

6.Linux

一般我們開發完成的程序是需要在linux環境中運行的,所以一個普通的java程式設計師可能需要會一下簡單的linux操作比如文件操作、日誌查看等;但是對於一個高級的程式設計師來說,壓力測試、性能調優、集群搭建等都是要掌握的技術。

知識點:文件操作、常用配置修改、伺服器資源查看、日誌分析、項目部署、各種集群搭建


7.並發編程

一個程序只有一百個、一千個、一萬個用戶時,可能沒有問題;但是在百萬、千萬個人訪問時,就可能會出現各種問題。這中間就會涉及到並發編程的問題。並發問題也是面試經常問的,中間會涉及到比較底層的相關操作,比如CAS等。

知識點:並發包、線程池等

8.協議

作為一個程式設計師,必須要對網絡知識有一定的了解,特別是http協議中規定的相關內容,比如請求報文、響應報文的格式,http請求的交互過程等。

知識點:http、https、TCP、mqtt等

9.JVM

jvm也是面試長問的一個問題。關於垃圾回收機制、算法、如何調優等是需要掌握的知識。

知識點:GC算法、可達性分析、優化

10.設計模式

設計模式對於一個高級程式設計師是要有所掌握的,很多時候是能夠用到我們的實際項目中的。

知識點:單例、工廠、代理、策略、模板、疊代器、觀察者等

11.IO

高級程式設計師要對IO的相關知識也也要了解,有一些框架比如netty 就會用到nio,具有高並發傳輸快等相關特點。

知識點:NIO、BIO

12.安全

對於一個高級程式設計師要對網絡安全有足夠的認識。

知識點:ssl、RSA、加密解密、簽名驗簽、PKI

13.壓力測試

軟體上線前,需要知道我們的系統的極限是什麼,有沒有達到開發設計的標準,沒有達到標準如何優化,這些都是高級程式設計師要掌握的技能。

知識點:壓測步驟、工具、操作、調優

14.大數據

這個點可能要求的就不是那個高了,但是對於zk、kafka、elk還是經常會在實際的開發和生產中用到,zk的數據一致性算法、kafka的數據丟失重複消費問題也是需要高級程式設計師掌握的。

知識點:zookeeper、kafka、elk、hive、hadoop、spark等

15.高並發

高並發是一個概念,也是程式設計師經常會聽到,但是大部分程式設計師都接觸不到的一個東西(除了壓測),在網際網路公司中,真正有高並發業務的也就是那些大家都聽過名字的網際網路公司,很多公司根本就發展不到高並發的階段就掛了。

知識點:分布式事物、分布式鎖、CAP、架構設計、分表分庫、緩存技術、大數據技術、搜尋引擎技術等


四、工具篇

工欲善其事,必先利其器。好的工具可以讓工作效率提高一大截,下面是我個人常用的工具和網站。響應的一些資源都可以去網站上下載。

1.開發工具

IntelliJ IDEA: java程式設計師最喜歡用的一款開發軟體,可以去官網下載

eclipse:也有不少人用,我最開始的開發工具。官網可以下載。

2.資料庫連接

SQLyog: 這是我最喜歡用的一款mysql資料庫連接軟體,

sqldeveloper:這是oracle資料庫連接工具,我用的比較少,資源也在我的博客上。

3.伺服器遠程連接

SecureCRT:這是系統管理員最新最喜歡用的一款遠程連接工具,需要激活。

Xshell:用過一段時間,沒啥感覺。

putty:也用過一段時間,一個會話一個窗口,感覺不是很友好。

4.團隊開發版本管理

GIT:非常好用的團隊開發和版本管理的工具。我的博客上有相關資源下載。

SVN:幾年以前用過,現在基本不用了。

5.項目構建

maven:java開發常用的項目構建工具。官網可以直接下載。免費。

gradle: 也是常用的項目工具,我目前接觸過的公司java開發基本不用。好像Android開發會用。不太熟。免費。

9.接口測試

postman: 免費的HTTP測試軟體,可以發送HTTP請求並獲取相應內容,前端開發,API開發必備。

10.抓包工具

Fiddler:很好用的http抓包工具。免費。官網可以下載。


11.文本編輯器:

Notepad++: 我常用的文本編輯器。很好用。也可以下載很多插件。免費,官網可以下載。

EditPlus:用的少。

UltraEdit:用的少。

12.FTP管理

FileZilla:免費開源的FTP管理軟體,可以作為客戶端也有伺服器端,非常好用,可以通過簡單的拖拽,實現文件的上傳下載

13.遠程桌面軟體

TeamViewer:簡單好用的遠程桌面軟體,不需要配置各種內網穿透,用手機APP就能控制電腦,很實用。

14.資料庫設計

PowerDesigner:做資料庫設計時,可以很容易構建對象之間的ER實體圖之間的關係,一鍵導出SQL,好用。

15.虛擬化工具

VMware: 搭建測試環境,測試集群時,常用的工具,很好用。需要激活碼。

16.壓力測試

Jmeter:我常用的款壓力測試軟體。有需要的可以去官網下載。


五、工作篇

很多程式設計師出來找工作時,簡歷不要太誇張,水分不要太大;面試不要吹的不著邊際。要知道,簡歷過了,還要面試,面試過了,還有試用,試用過了才能轉正;轉正後你才有一定的主動權。薪資是和領導對這個崗位期望掛鈎的,當薪資給到,但是個人能力不能匹配這個崗位的要求時,就會在公司過的很難受。可以拿比個人能力高一點的薪資,但是不能拿的高太多。大部分企業都是希望能夠給員工最少的錢來讓他們干最多的事。 我提倡的,拿多少錢,辦多少事,不讓公司吃虧,不讓自己吃虧。實際上很難做到,這點,還是講究一個平衡。



不要在公司討論薪資情況。公司對薪資問題都是禁止員工討論的。對於剛工作的同學,特別好奇別人的工資是多少,這一點特別不不值得提倡。討論工資,對公司和對個人其實都是沒有多大好處的。對個人而言,聽到能力不如我的人工資比我高,我會心理不平衡;這種心理會不自覺的帶到工作中,影響工作心態;同時員工之間可能會形成攀比心理,薪資較高的員工可能會產生自傲,而現在較低的員工可能會心裡不平衡 。對於企業來講,制定員工工資的保密制度,能夠使員工對公司更加的忠誠。如果員工之間互相不知道彼此的工資,那員工之間的利益牽扯程度就會降低,員工一心為公司服務。如果員工一致認為工資較低,那他們就會在私下達成某種協議,共同組成團體來罷工對抗公司,影響公司的整個運行過程,打亂公司內一些重要事項的進度;同時企業的工資制度透明,也不利於企業壓縮用人成本,企業必須要用較高的薪資才能夠招攬到人才。


在公司,你解決不了問題,就是你有問題。老闆和上司永遠是一套強盜邏輯:不認同我,要麼忍,要麼滾。老闆和領導的想法很固執的一點就是我請你是幹啥的?就是把我的想法變成現實的。所以,哪怕你很認真地想跟他溝通你的想法,你得到的卻是老闆或領導的反感,甚至是一頓臭罵而已。而相反,你有多聽話,老闆就有多喜歡。

老闆安排的事情,要件件有回應、事事有著落。主動及時的匯報工作,及時讓老闆知道你做啥,做到什麼階段了,這很重要。主動匯報工作,不僅能表現出你盡職盡責,給老闆留下好印象,還能讓老闆及時根據你的工作進度,對後續工作進行安排。工作一完成,就要匯報;時間跨度較長的工作,要堅持每天匯報,讓領導了解進度。千萬注意:千萬不要拍胸脯說沒問題,接下任務後一個星期沒有一點聲音,然後讓老闆主動問你進度。

職場上混,多數是為了掙錢。永遠把成長作為重要的事情,專注於培養自己的核心競爭力,才能立於不敗之地。

————————————————

編為你們準備關於Java的學習資料,有需要的小夥伴可以看看哦。

2020最新java零基礎到精通資料教材,乾貨分享,新基礎java教材,看這裡,這裡有你想要的所有資源哦,最強筆記,教你怎麼入門提升!讓你對自己更加有信心,重點是資料都是免費的,免費!!!

私信小編「 資料 」即可領取。

關鍵字: