-
1 # 圍城看天
-
2 # 碼農code之路
對於很多學習Java的程式設計師來說,回過頭來看入門Java的過程並不難,反而是學到後期感覺沒有進步,尤其是對於一個進軍程式設計界的兩三年的Java程式設計師來說,工作如果還只是增刪改查,這可是相當痛苦的。
有這種情況的程式設計師,有不少是在外包公司,每天就期待下班,簡直就是做一天和尚撞一天鐘。為了打破這種僵局,Java程式設計師在這個迷茫的階段應做什麼呢?
下面將為程式設計師小夥伴們分享5個進階的注意點,俗話說:師傅領進門,修行在個人,要提高自己還是要自己付出努力。
一、閱讀框架原始碼閱讀原始碼首先是選擇,無論是你選擇spring,還是Java Collection,選擇了一個就堅持閱讀下去,切忌坐這山觀那山。在閱讀原始碼過程中,應該搞清楚以下4個問題:
原始碼是要解決什麼問題?
原始碼是透過什麼原理實現?
它採用了哪些介面、類?
為什麼採用這些介面和類?
二、分散式通訊單體應用幾乎不涉及到系統間的互動,或者有些透過老舊的WebService的形式進行互動,網際網路分散式系統傾向於採用輕量化的、更高效率的通訊方式,比如基於HTTP、RPC協議等
三、訊息中介軟體訊息佇列中介軟體是分散式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構,是大型分散式系統不可缺少的中介軟體。訊息佇列在電商系統、訊息通訊、日誌收集等應用中扮演著關鍵作用,以阿里為例,其研發的訊息佇列(MQ)服務於阿里集團超過11年,在歷次天貓雙十一活動中支撐了萬億級的資料洪峰,為大規模交易提供了有力保障。目前在生產環境,使用較多的訊息佇列有 ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 等。
四、分散式事務微服務架構的普及,離不開分散式事務在其中所起的舉足輕重的作用,分散式事務保證了多項服務間的資料一致性,是分散式系統的根基。
五、非同步、併發、多執行緒同步的一問一答,能比較及時的處理業務,但當業務量大的時候,為提高系統可用性、處理效率,往往會進行非同步、多執行緒方式進行處理。執行緒池技術,高併發程式設計顯的尤為重要。高併發知識是開發高併發系統的基礎,同時也是面試中的重要考點。Synchronized 以及 ReenTrantLock 的底層原理、AQS、常見的原子類這些知識點幾乎只要是一線大廠面試都會問到。
六、資料庫,快取快取可謂是提高應用效率的大殺器,在網際網路產品應用非常廣泛,掌握幾個常見的快取中介軟體是很有必要的。也很多應用場景中,也只能快取才能保證應用的完整性,比如秒殺場景。
七、效能最佳化系統性能最佳化涉及面非常廣,涵蓋方案設計最佳化、編碼最佳化、併發最佳化、JVM 調優、發現瓶頸、效能評估等諸多方面的知識。對於 Java 技術棧的工程師,掌握系統性能最佳化是進階的必由之路。同時,系統性能最佳化也是 BAT 面試中的“常客”。
八、微服務架構微服務倡導將複雜的單體應用拆分為若干個功能簡單、松耦合的服務,這樣可以降低開發難度、增強擴充套件性、便於敏捷開發。概念一經提出迅速火遍全球。當前 Hailo 有160個不同服務構成,NetFlix 有大約600個服務。國內方面,阿里巴巴、騰訊、360、京東、58同城等很多網際網路公司都進行了微服務化實踐。分散式事務問題被著名架構師 Chris Richardson 稱為微服務的三大難題之一,而且當前 Dubbo、SpringCloud 等微服務框架均為提供可行的分散式事務解決方案。
-
3 # 會點程式碼的大叔
其實大部分的企業級應用從本質上看,都是在做增刪查改,但是有些公司的業務複雜而專業,有些公司應用的線上客戶很多,你做的增刪查改和別人做的增刪查改,可能會有極大的區別,舉個例子:
你做一個新聞資訊網站,首頁上需要展示當天最熱門的十條新聞,網站每分鐘大概有100個人訪問,那麼這個功能你可以這樣實現:select top 10 from 新聞表 order by 閱讀量 desc;
建議工作兩三年的,可以好好地分析一下自己現在做的工作,是不是簡單的增刪查改:
業務是否專業?我有這些業務知識,是否可以在該領域長期發展?比如在金融相關的行業做核心系統,又比如一直在做支付相關的業務。
使用者量是否大?是否有高併發的場景?專案為增加系統的高可用性,做了哪些措施?
如果以上一項都不沾邊,那麼你很可能是在做簡單的增刪改查,這種敲程式碼的工作,可以說是“體力勞動”;也可能你現在的工資還不錯,朝九晚五不用加班,你對現在的工作狀態很滿意,但是!建議趕緊跳出這個舒適圈;因為你很快就會摸到職業發展的天花板,很快就會面臨失業的危機。
如果你現在處在這個舒適圈,個人給一些建議:
如果你接受跳槽,那就果斷跳:我是不鼓勵程式設計師頻繁跳槽的,但是不得不說,跳槽是解決這個問題最快的手段;【平臺非誠重要】,你可以透過選擇一個更高的平臺,跳出現在的舒適圈:在上一家單位的時候,我們的技術棧是SSH+Oracle資料庫,現在的單位以Spring Boot、Spring Cloud為主,關係型資料庫和非關係型資料庫都有使用,這已經提高了不少;但是一跟網際網路公司相比,我們又差了很多;
如果你覺得現在的公司還不錯,值得再待今年,那麼先考慮一下能否把現在的專案做的更好,能否引入一下比較主流的技術元件以解決專案遇到的問題;能否擔任更重要的工作;
不管跳不跳槽,程式設計師都需要不斷地學習:利用碎片化時間學習雖然值得稱讚,但是更鼓勵抽出完整的時間去學習,最好關閉一切通訊軟體,避免被打擾;並且把學習內容透過筆記、部落格等形式記錄下來。
至於技術路線麼,建議還是從工作出發;比如專案中關係型資料用的比較多,那麼除了會寫SQL之外,還得懂一些資料庫最佳化的知識,如果能引入一些NoSQL資料庫就更好了;如果使用者越來愈多,專案擴充套件越來越難,那麼就要了解了解分散式架構設計,如何把一個大的單體應用拆分開,非核心功能可以引入訊息佇列進行非同步處理,等等。
-
4 # 灬亦凡
其實大部分的企業級應用從本質上看,都是在做增刪查改,但是有些公司的業務複雜而專業,有些公司應用的線上客戶很多,你做的增刪查改和別人做的增刪查改,可能會有極大的區別,舉個例子:
你做一個新聞資訊網站,首頁上需要展示當天最熱門的十條新聞,網站每分鐘大概有100個人訪問,那麼這個功能你可以這樣實現:select top 10 from 新聞表 order by 閱讀量 desc;
-
5 # 北大青鳥中博軟體學院
Java程式設計師想要更進一步,成為更加優秀的程式設計師,獲得更高的薪資,可以從以下幾個方面努力:
一、學習他人的程式碼所謂他山之石,可以攻玉。如果能把別人經驗變成自己的,那一個人就強大了。優秀的程式設計師通常可以在Stackoverflow、部落格園、github等社群閱讀高手們的程式碼。透過閱讀原始碼,你不僅學會了程式碼的知識,你也可以學會如何去寫一個專案的程式碼。
二、積累經驗經驗積累很重要。大部分優秀程式設計師,都是從普通的程式設計師經過長時間的積累,逐漸發展成的。想要成為更加優秀的程式設計師,你需要有退後一步看程式碼的能力,從而理解特定軟體系統背後的設計決策。
三、自我反思程式設計界有一條非常重要的準則:自我反思。程式設計師是程式碼的製造機,每天要修改大量的程式碼。雖然說程式碼不可以避免,但是必須透過不斷地反思,減少BUG出現的頻率。
五、程式碼優雅當你寫過一定量的程式碼之後,便要開始思考如何讓程式碼更簡潔易懂。要知道,優秀的程式設計師寫的程式碼極其優雅。借用大神Martin Fowler的一句話,"任何一個傻瓜,都寫得出能讓計算機理解的程式碼,但是,優秀程式設計師寫出來的程式碼,能讓全人類理解。"
-
6 # 甜甜卷ttj
哥們兒,你該提升了。3年工作經驗,增刪改查也就做的非常好了!
可以去網上報個學習班,提升下技術。現在技術更新這麼快,不學就面臨被淘汰!
我在百戰程式設計師學的java是從零基礎學的,你要是有工作經驗,直接學個微服務課程就行!提升下技術,薪資也有改觀啊!他家課程不錯,都挺實戰化的,而且課程安排也很合理,循序漸進的這種。最後還推薦就業!你可以去官網瞭解下具體情況。我的去工作了!
-
7 # MR杜wy
怎麼?看不起增刪改查的程式設計師嗎?
你難道不知道術業有專攻,專案有拆分?
造航母、衛星、火箭的分佈工作,有些幹了幾十年只會在流水線打螺釘,怎麼了?難道人人都能成為設計師?
專案分工不同,業務分工不同,需求分工不同……都是為業務服務的。人家如果換業務的話,你怕人家學不會新業務、新專案的技術嗎?
人人都是全棧的話,還要那麼多程式設計師幹什麼呢?一個人就完成一個專案何必浪費人力成本呢。
回覆列表
3年還只會增刪改查,那就說明你一直在做著重複的事情。說明你的系統很穩定,或者說接觸不到更加高深的東西,那麼你可以去接觸底層的東西,對照api去看。比方說為什麼資料庫連線就能連到資料庫,jdbc的機制,過濾器對程式碼的影響,各種框架對應的接入了哪些新功能,區別在哪裡,應用場景的實現,為什麼要用這套框架,它的優缺點是什麼,對資料備份是如何進行的。這些都是在增刪改查後 需要思考和提高的