外包四年太差勁,幡然醒悟要跳槽

語言: CN / TW / HK

第一次在掘金上分享這種學習路線類的文章,不知道是否受歡迎👏🏻,如果不喜歡,還請在評論區告訴我。

前幾天有個讀者過來說,“二哥,外包乾了四年,感覺和外界差距有點大,現在被動醒悟,希望你能幫我制定一下學習路線。”

那二哥這麼負責任,必須得承擔起這份職責啊!於是我就讓讀者整理了一份 1.0 版的,告訴我他現在的學習進度、學習計劃、已有的技術水平,我迭代後的 2.0 版發給讀者後也深受他的喜愛和認同。

現在公開出來,也希望能給 掘金 的讀者朋友們一點參考和借鑑🤔。不管身處什麼樣的公司,外包也好、甲方也好,最怕的就是溫水煮青蛙,自己麻痺自己,再加上大環境不好,就很容易墮落,時間一長,就發現自己和別人的差距巨大,再追趕上來就頗為不易。

所以,居安思危。


作為一名標準的 Java 黨,來談談我的一點感受吧。

1、如果你是在二三線城市,那麼儘量不要把所有的精力都撲在工作上面,而是儘量去找一些副業來做,比如說被很多大佬唾棄的外包、私活,別看不起,有就接,慢慢囤積自己的人脈資源,照樣可以過得很瀟灑。

下圖是之前掘金上的一個作者,他的收入情況,做了詳細地柱狀圖,大家可以看一下,如果你不相信,覺得圖是 p 的,那就當我沒說。

2、如果你沒有地域的限制,那麼儘量去大城市,大城市收入就是高啊,同樣一個人,你在三線可能一年只有 10 萬的收入,到了大城市,會直接飆升到 20 萬的收入,這一點都不誇張。

我之前的一個讀者,就是半年時間轉行 Java,去了上海的一家銀行外包,月薪 17k。

如果你還不相信,覺得圖是 p 的,那仍然請當我沒說。

3、如果你對技術稍微還有那麼一點熱情,請不要一直 CRUD,不要一直浮在表面,要多去看看 JDK 的原始碼,搞清楚為什麼 HashMap 的載入因子是 0.75 而不是 0.6 0.8,搞清楚 ArrayList 和 LinkedList 之間的差別,底層的資料結構有何不同。

不要把技術棧一直停留在 JSP/SSH 的時代,而是要去掌握 Spring Boot,掌握 SpringCloud,掌握訊息佇列等等。

即便是你做不到公司不可或缺的一員,最起碼遇到公司裁員了,能儘早上岸。


下面是我給讀者制定的詳細的學習計劃。

1.技術棧要求

  • Java核心部分(Java基礎+Java併發+Java虛擬機器)
  • SSM+SpringBoot
  • SpringCloud+Nacos+Hystrix+ gateway等
  • Mysql
  • Redis
  • 訊息中介軟體(Kafka、RabbitMQ、RocketMQ、ActiveMQ)
  • 定時任務排程(xxl-job、elastic-job)
  • ELK
  • Docker

詳細的學習計劃

時間安排:

  • 週一到週五:晚上22:00-24:00
  • 週六週日:每天八個小時學習

這是針對工作黨,安排出來的時間,相信你能夠擠出來這些時間。如果你連這點學習時間都擠不出來,不好意思,你真的沒有前途了。

學習計劃:

1)Java核心部分(java基礎+java併發+java虛擬機器)

時間:現在-2022/12/30

學習內容:

  • java基礎知識再過一遍,查漏補缺(1-2周)
  • java併發,結合示例或實戰專案學習
  • java虛擬機器,原理+實現專案

這部分我覺得直接看《Java 程式設計師進階之路》上的內容就夠了,注意重點可以研究一下集合框架的原始碼、JUC 部分的原始碼,看 1.8 的 JDK 就夠了。

Java 程式設計師進階之路是 GitHub 上一個星標 4.5k 的開源知識庫,裡面的內容真的是挺紮實的。當然了,這個開源知識庫也配套了對應的網站。

Java 併發部分,戳:http://tobebetterjavaer.com/xuexiluxian/java/thread.html

Java 虛擬機器部分:戳:http://tobebetterjavaer.com/xuexiluxian/java/jvm.html

有書籍/視訊/教程/八股文等等,看自己哪裡不足就補充哪裡就好了,會的就跳過,如果實在是有搞不定的地方,也可以跳過,不一定這一遍什麼都要學會。

併發程式設計中有一些內容(比如說執行緒池、各種鎖機制),包括 JVM 的一些內容理解起來還是很枯燥(比如說位元組碼、垃圾回收演算法),學會用,再背一下八股文,面試不卡殼就行(當然了,如果能全部拿下,就真的可以說是大神了,以後再讀任何原始碼或者解決深層次問題需要去修改原生的 api 之類的就會很容易了)。

2)SSM+SpringBoot

時間:2023/01/01-2023/02/30

學習內容:

  • SSM+SpringBoot框架基礎再過一遍,查漏補缺
  • SpringBoot原理,結合專案實戰進行學習
  • Spring框架原始碼學習

這部分視訊我已經整理出來了,掘金上不方便放連結,如果你需要的話可以關注我的賬號私聊我。

B站上有些視訊的質量還是真的挺不錯的,不過 掘金 最近好像大喜歡 B站的連結,這裡我也就不放了吧,截個圖,你應該能找得到。

3)SpringCloud+Nacos+Hystrix+springcloud gateway等微服務模組

時間:2023/03/01-2023/05/30

學習內容: - Springcloud及相關元件入門 - Springcloud進階,結合實戰專案進行學習

Spring Cloud 的學習可以看下面這個視訊,碼我已經打的很紮實了,掘金 應該是沒啥問題。

4)MySQL

MySQL 也是我一直強調的 Java 後端開發四大件之一,可以結合(2)、(3)專案實戰進行mysql學習,實戰中未使用到的知識再單獨學習。

學習內容:

  • 資料庫基礎簡單過一下
  • 資料庫進階知識學習

MySQL 的學習路線可以戳這個連結:http://tobebetterjavaer.com/xuexiluxian/mysql.html

第一階段:SQL,推薦的書籍有這兩本。

第二階段:入門 MySQL,推薦的書籍有這兩本。

第三階段:進階 MySQL

面試造火箭,工作擰螺絲,雖然日常開發中,大部分人也就寫寫 SQL 就行了,但不好意思,面試中(或者你想成為 MySQL 方面的專家)99% 的情況下,還是會被問到原理的,比如說索引、鎖、日誌、引擎等。

舉一些例子:

1、一條 SQL 是如何執行的?也就是說,從MySQL 客戶端執行了一條 SQL 語句,MySQL 服務端會進行哪些處理。

2、索引相關:索引是如何實現的?MySQL 的索引採用的哪種資料結構?雜湊索引和 B+ 樹索引的區別是什麼?

3、事務相關:事務的四大特性是什麼?什麼是幻讀、髒讀、不可重複讀?、MVCC 瞭解嗎?怎麼實現的?

4、鎖相關:表鎖、行鎖、意向鎖、樂觀鎖、死鎖,這些鎖主要是用來解決什麼問題的?

5、日誌相關:MySQL 日誌檔案有哪些?binlog 和 redo log 有什麼區別?redo log 是怎麼刷入磁碟的呢?

6、高可用/效能相關:資料庫讀寫分離了解嗎?讀寫分離是如何實現的?主從複製的原理了解嗎?分庫分表瞭解嗎?

7、SQL 優化相關:慢 SQL 如何定位?如何優化慢 SQL?

書籍推薦

5)Redis

結合(2)、(3)專案實戰進行學習。

學習內容: - redis基礎簡單過一下 - redis進階知識學習

這部分可以刷一下某馬的視訊,評價還不錯。同樣的,我只截圖不貼連結,免得有人不懷好意以為我在有意為之,其實我真的只是想幫助大家進步而已。

6)ELK+定時任務排程(xxl-job、elastic-job)

目前專案中使用,簡單入門,結合專案實戰進行學習。

ELK 就看尚大的這個視訊吧

分散式任務排程看阿里雲的這個教程:http://help.aliyun.com/product/147760.html

7)Docker

Docker簡單使用過,會一些簡單Docker命令。

學習內容:

詳細學習Docker相關命令、配置,達到熟悉的程度

Docker 之需要看這個 PDF 就可以了,同樣只截圖,免得被針對哈。


那總體上來說,只要一個 java黨能達到這種程度,在任何公司找一份像樣的工作,我覺得還是手到擒來的,沒有太大的難度。

關鍵就看你是不是會找藉口,哎呀工作忙啊,996 啊,根本沒時間學習啊,天天加班啊。。。。。。。

如果還有這麼多借口的話,請繞道哈。

以上,希望能給需要的小夥伴一些幫助和啟發🤔。