国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何成為一位「不那么差」的程序員

caspar / 2756人閱讀

摘要:能理解線程模型多線程優(yōu)缺點以及如何避免。多線程的出現(xiàn)主要是為了提高的利用率任務的執(zhí)行效率。所以要考慮清楚是否真的需要多線程。這一塊的內容可以然我們知道寫大牛處理并發(fā)的思路,對我們自己編寫高質量的多線程程序也有很多幫助。

前言

已經(jīng)記不清有多少讀者問過:

博主,你是怎么學習的?像我這樣的情況有啥好的建議嘛?

也不知道啥時候我居然成人生導師了。當然我不排斥這些問題,和大家交流都是學習的過程。

因此也許諾會準備一篇關于學習方面的文章;所以本文其實準備了很久,篇幅較長,大家耐心看完希望能有收獲。

以下內容僅代表我從業(yè)以來所積累的相關經(jīng)驗,我會從硬技能、軟實力這些方面盡量闡述我所認為的 “不那么差的程序員” 應當做到哪些技能。
技能樹

作為一名碼代碼的技術工人,怎么說干的還是技術活。

既然是技術活那專業(yè)實力就得過硬,下面我會按照相關類別談談我們應該掌握哪些。

計算機基礎

一名和電腦打交道的工種,計算機是我們賴以生存的工具。所以一些基礎技能是我們應該和必須掌握的。

比如網(wǎng)絡相關的知識。

其中就包含了 TCP 協(xié)議,它和 UDP 的差異。需要理解 TCP 三次握手的含義,拆、粘包等問題。

當然上層最常見的 HTTP 也需要了解,甚至是熟悉。

這塊推薦《圖解 HTTP》一書。

接著是操作系統(tǒng)相關知識。

由于工作后你寫的大部分代碼都是運行在 Linux 服務器上,所以對于這個看它臉色行事主你也得熟悉才行。

比如進程、線程、內存等概念;服務器常見的命令使用,這個沒啥竅門就是得平時多敲敲多總結。

我也是之前兼職了半年運維才算是對這一塊比較熟悉。

Linux 這個自然是推薦業(yè)界非常出名的《鳥哥的 Linux 私房菜》。

當作為一個初學者學習這些東西時肯定會覺得枯燥乏味,大學一般在講專業(yè)課之前都會有這些基礎學科。我相信大部分同學應該都沒怎么仔細聽講,因為確實這些東西就算是學會了記熟了也沒有太多直接的激勵。

但當你工作幾年之后會發(fā)現(xiàn),只要你還在做計算機相關的工作,這些都是繞不開的,當哪天這些知識不經(jīng)意的幫助到你時你會慶幸當初正確的選擇。

數(shù)據(jù)結構與算法

接下來會談到另一門枯燥的課程:數(shù)據(jù)結構。

這塊當初在大學時也是最不受待見的一門課程,也是我唯一掛過的科目。

記得當時每次上課老師就讓大家用 C 語言練習書上的習題,看著一個個拆開都認識的字母組合在一起就六親不認我果斷選擇了放棄。

這也造成現(xiàn)在的我每隔一段時間就要看二叉樹、紅黑樹、棧、隊列等知識,加深印象。

算法這個東西我確實沒有啥發(fā)言權,之前堅持刷了部分 LeetCode 的題目也大多停留在初中級。

但像基本的查找、排序算法我覺得還是要會的,不一定要手寫出來但要理解其思路。

所以強烈建議還在大學同學們積極參與一些 ACM 比賽,絕對是今后的加分利器。

這一塊內容可能會在應屆生校招時發(fā)揮較大作用,在工作中如果你的本職工作是 Java Web 開發(fā)的話,這一塊涉獵的幾率還是比較低。

不過一旦你接觸到了模型設計、中間件、高效存儲、查詢等內容這些也是繞不過的坎。

這塊內容和上面的計算機基礎差不多,對于我們 Java 開發(fā)來說我覺得平時除了多刷刷 LeetCode 加深印象之外,在日常開發(fā)中每選擇一個容器存放數(shù)據(jù)時想想為什么選它?有沒有更好的存儲方式?寫入、查詢效率如何?

同樣的堅持下去,今后肯定收貨頗豐。

同時推薦《算法(第4版)》

Java 基礎

這里大部分的讀者都是 Java 相關,所以這個強相關的技能非常重要。

Java 基礎則是走向 Java 高級的必經(jīng)之路。

這里拋開基本語法不談,重點討論實際工作中高頻次的東西。

基本容器,如:HashMap、ArrayList、HashSet、LinkedList 等,不但要會用還得了解其中的原理。這樣才能在不同的場景選擇最優(yōu)的設計。

IO、NIO 也是需要掌握。日常開發(fā)中大部分是在和磁盤、網(wǎng)絡(寫日志、數(shù)據(jù)庫、Redis)打交道,這些都是 IO 的過程。

常見的設計模式如:代理、工廠、回調、構建者模式,這對開發(fā)靈活、擴展性強的應用有很大幫助。

Java 多線程是非常重要的特性,日常開發(fā)很多。能理解線程模型、多線程優(yōu)缺點、以及如何避免。

良好的單測習慣,很多人覺得寫單測浪費時間沒有意義。但正是有了單測可以提前暴露出許多問題,減少測試返工幾率,提高代碼質量。

良好的編程規(guī)范,這個可以參考《阿里巴巴 Java 開發(fā)手冊》以及在它基礎上優(yōu)化的《唯品會 Java 手冊》

 《Java核心技術·卷 I》值得推薦。
多線程應用

有了扎實的基礎之后來談談多線程、并發(fā)相關的內容。

想讓自己的 title 里加上“高級”兩字肯定得經(jīng)過并發(fā)的洗禮。

這里談論的并發(fā)主要是指單應用里的場景,多應用的可以看后文的分布式內容。

多線程的出現(xiàn)主要是為了提高 CPU 的利用率、任務的執(zhí)行效率。但并不是用了多線程就一定能達到這樣的效果,因為它同時也帶來了一些問題:

上下文切換

共享資源

可見性、原子性、有序性等。

一旦使用了多線程那肯定會比單線程的程序要變得復雜和不可控,甚至使用不當還會比單線程慢。所以要考慮清楚是否真的需要多線程。

會用了之后也要考慮為啥多線程會出現(xiàn)那樣的問題,這時就需要理解內存模型、可見性之類的知識點。

同樣的解決方式又有哪些?各自的優(yōu)缺點也需要掌握。

談到多線程就不得不提并發(fā)包下面的內容 java.util.concurrent

最常用及需要掌握的有:

原子類:用于并發(fā)場景的原子操作。

隊列。常用于解耦,需要了解其實現(xiàn)原理。

并發(fā)工具,如 ConcurrentHashMap、CountDownLatch 之類的工具使用以及原理。

線程池使用,以及相關原理。

鎖相關內容:synchronized、ReentrantLock 的使用及原理。

這一塊的內容可以然我們知道寫 JDK 大牛處理并發(fā)的思路,對我們自己編寫高質量的多線程程序也有很多幫助。

推薦《Java 并發(fā)編程的藝術》很好的并發(fā)入門書籍。

JVM 虛擬機

想要深入 Java ,JVM 是不可或缺的。對于大部分工作 1~3 年的開發(fā)者來說直接接觸這一些內容是比較少的。

到了 3~5 年這個階段就必須得了解了,以下內容我覺得是必須要掌握的:

JVM 內存劃分,知道哪塊內存存放哪些內容;線程安全與否;內存不夠怎么處理等。

不同情況的內存溢出、棧溢出,以及定位解決方案。

分代的垃圾回收策略。

線上問題定位及相關解決方案。

一個類的加載、創(chuàng)建對象、垃圾回收、類卸載的整個過程。

掌握這些內容真的對實際分析問題起到巨大幫助。

 對此強力推薦《深入理解Java虛擬機》,這本書反反復復看過好幾遍,每個階段閱讀都有不同的收獲。
數(shù)據(jù)庫

做 WEB 應用開發(fā)的同學肯定要和數(shù)據(jù)庫打不少交道,而且通常來說一個系統(tǒng)最先出現(xiàn)瓶頸往往都是數(shù)據(jù)庫,說數(shù)據(jù)庫是壓到系統(tǒng)的最后一根稻草一點也不為過。

所以對數(shù)據(jù)庫的掌握也是非常有必要。拿互聯(lián)網(wǎng)用的較多的 MySQL 數(shù)據(jù)庫為例,一些必須掌握的知識點:

索引的數(shù)據(jù)結構及原理、哪些字段應當創(chuàng)建索引。

針對于一個慢 SQL 的優(yōu)化思路。

數(shù)據(jù)庫水平垂直拆分的方案,需要了解業(yè)界常用的 MyCAT、sharding-sphere 等中間件。

常規(guī)使用可以參考《阿里巴巴 Java 開發(fā)手冊》中的數(shù)據(jù)庫章節(jié),想要深入了解 MySQL 那肯定得推薦經(jīng)典的《高性能 MySQL》一書了。

分布式技術

隨著互聯(lián)網(wǎng)的發(fā)展,傳統(tǒng)的單體應用越來越不適合現(xiàn)有場景。

因此分布式技術出現(xiàn)了,這塊涵蓋的內容太多了,經(jīng)驗有限只能列舉我日常使用到的一些內容:

首先是一些基礎理論如:CAP 定理,知道分布式系統(tǒng)會帶來的一些問題以及各個應用權衡的方式。

了解近些年大熱的微服務相關定義、來源以及對比,有條件的可以閱讀 martin fowler 的原文 Microservices,或者也可以搜索相關的國內翻譯。

對 Dubbo、SpringCloud 等分布式框架的使用,最好是要了解原理。

接著要對分布式帶來的問題提出解決方案。如分布式鎖、分布式限流、分布式事務、分布式緩存、分布式 ID、消息中間件等。

也要了解一些分布式中的負載算法:權重、Hash、一致性 Hash、故障轉移、LRU 等。

最好能做一個實踐如:[秒殺架構實踐

](https://crossoverjie.top/%2F2...

之前有開源一個分布式相關解決組件:

https://github.com/crossoverJie/distributed-redis-tool

同時推薦一本入門科普《大型網(wǎng)站技術架構》,出版時間有點早,從中可以學習一些思路。

懂點架構

相信大家都有一個架構師的夢想。

架構師給人的感覺就是畫畫圖紙,搭好架子,下面的人員來添磚加瓦最終產(chǎn)出。

但其實需要的內功也要非常深厚,就上面列舉的樣樣需要掌握,底層到操作系統(tǒng)、算法;上層到應用、框架都需要非常精通。(PPT 架構師除外)

我自身參與架構經(jīng)驗也不多,所以只能提供有限的建議。

首先分布式肯定得掌握,畢竟現(xiàn)在大部分的架構都是基于分布式的。

這其中就得根據(jù) CAP 理論結合項目情況來選擇一致性還是可用性,同時如何做好適合現(xiàn)有團隊的技術選型。

這里推薦下開濤老師的《億級流量網(wǎng)站架構核心技術》,列舉了很多架構實例,不過網(wǎng)上褒貶不一,但對于剛入門架構的能科普不少知識。

如何學習

談完了技能樹,現(xiàn)在來聊聊如何學習,這也是被問的最多的一個話題。

而關于學習討論的最多的也是看視頻還是看書?

視頻

不得不承認視頻是獲取知識最便捷的來源,畢竟包含了圖、文、聲。

大學幾年時間其實我也沒好好上專業(yè)課,我記得真正入門 Java 還是一個暑假花了兩個月的時間天天在家里看 ”馬士兵“ 老師的視頻教程,當時的資源也很老了,記得好像是 07 年出的視頻(用的還是 Google )。

那段時間早起晚睡,每天學到東西之后馬上實踐,心里也很有成就感。后來開學之后一度成為同學們眼中的”學霸“人物。

 現(xiàn)在打開我 12 年的電腦,硬盤里還躺著好幾十 G 的教學視頻。
看書

工作后時間真的很寶貴,完全沒有了學生生涯的想學就學的自由。所以現(xiàn)在我主要知識來源還是書籍。

這些是我最近看的書:

看書又會涉及到電子書和紙質書的區(qū)別,我個人比較喜歡紙質書。畢竟我可以方便的記筆記以及可以隨時切換章節(jié)。最主要的還是從小養(yǎng)成的聞書香的習慣。

知識付費

近幾年知識付費越來越流行,許多大佬也加入了這個行列,人們也逐漸在習慣為知識去付費。

說實話寫一好篇文章出一份視頻都非常不容易,能有正向的激勵,作者才能持續(xù)輸出更好的內容。

這塊我覺得國內做的比較好我也為之付費的有極客時間、大佬的知識星球等。

這三點沒有絕對的好壞之分,其實可以看出我剛入門的時候看視頻,工作之后看書及知識付費內容。

視頻的好處是可以跟著里面老師的思路一步一步往下走,比較有音視頻代入感強,就像學校老師講課一樣。

但由于內容較長使讀者沒法知曉其中的重點,甚至都不敢快進生怕錯過了哪個重要知識,現(xiàn)在由于 IT 越來越火,網(wǎng)上的視頻也很多導致質量參差不齊也不成體系。

而看書可以選擇性的瀏覽自己感興趣的章節(jié),費解的內容也方便反復閱讀

所以建議剛入門的同學可以看看視頻跟著學,參與工作一段時間后可以嘗試多看看書。

當然這不是絕對的,找到適合自己的學習方式就好。但不管是視頻還是看書都要多做多實踐。

打造個人品牌

個人品牌看似很程序員這個職業(yè)不怎么沾邊,但在現(xiàn)今的互聯(lián)網(wǎng)時代對于每個人來說都很重要。

以往我們在寫簡歷或是評估他人簡歷的時候往往不會想到去網(wǎng)絡搜索他的個人信息,但在這個信息爆炸的時代你在網(wǎng)上留下的一點印記都能被發(fā)現(xiàn)。

博客

因此我們需要維護好自己的名片,比如先搭建自己的個人博客。

博客的好處我也談過幾次了,前期關注人少沒關系,重要的是堅持,當你寫到 50、100篇文章后你會發(fā)現(xiàn)自己在這過程中一定是的到了提高。

GitHub

第二點就和技術人比較相關了:參與維護好自己的 GitHub。

由于 GitHub 的特殊屬性,維護好后可以更好的打造個人品牌。

Talk is cheap. Show me the code 可不是隨便說說的。

想要維護好可以從幾個方面著手:

參與他人的項目,不管是代碼庫還是知識庫都可以,先融入進社區(qū)。

發(fā)起自己的開源項目,不管是平時開發(fā)過程中的小痛點,還是精心整理的知識點都可以。

但這過程中有幾點還是要注意:

我們需要遵守 GitHub 的社交禮儀。能用英文盡量就用英文,特別是在國外廠庫中。

盡量少 push 一些與代碼工作無關的內容,我認為這并不能提高自己的品牌。

別去刷 star。這也是近期才流行起來,不知道為什么總有一些人會鉆這種空子,刷起來的熱度對自己并沒有任何提高。

這里有一篇國外大佬寫的 How to build your personal brand as a new developer :

https://medium.freecodecamp.org/building-your-personal-brand-as-a-new-web-developer-f6d4150fd217

English 挺重要

再來談談英語的重要性,我記得剛上大學時老師以及一些培訓機構都會說:

別怕自己英語差就學不了編程,真正常用的就那些詞語。

這句話雖沒錯,但英語在對 IT 這行來說還是有著極大的加分能力。

拿常見的 JDK 里的源碼注釋也是純英文的,如果英語還不錯的話,一些 Spring 的東西完全可以自學,直接去 Spring 官網(wǎng)就可以查看,甚至后面出的 SpringCloud,官方資料就是最好的教程。

再有就是平時查資料時,有條件的可以嘗試用 Google + 英文 搜索,你會發(fā)現(xiàn)新的世界。

不然也不會有面向 Google/Stack Overflow 編程。

對于英語好的同學自然不怕,那不怎么好的咋辦呢?

比如我,但我在堅持以下幾點:

所有的手機、電腦系統(tǒng)統(tǒng)統(tǒng)換成英語語言,養(yǎng)成習慣(不過也有尷尬的連菜單都找不到的情況)。

訂閱一些英語周刊,比如 ”灣區(qū)日報“。

定期去類似于 https://medium.com/ 這樣具有影響力的國外社區(qū)閱讀文章。

雖然現(xiàn)在我也談不上多好,但目前我也在努力,希望大家也一起堅持。

推薦一本近期在看的書《程序員的英語》。

保持競爭力

技術這個行業(yè)發(fā)展迅速、變化太快,每年也都有無數(shù)相關行業(yè)畢業(yè)生加入競爭,稍不留神就會被趕上甚至超越。

所以我們無時無刻都得保持競爭力。

多的談不上,我只能談下目前我在做的事情:

打好基礎。不是學了之后就忘了,需要不停的去看,鞏固,基礎是萬變不離其宗的。

多看源碼,了解原理,不要停留在調參俠的境界。

關注行業(yè)發(fā)展、新技術、新動態(tài)至少不能落伍了。

爭取每周產(chǎn)出一篇技術相關文章。

積極參與開源項目。

思維導圖

結合上文產(chǎn)出了一個思維導圖更直觀些。

總結

本文結合了自身的一些經(jīng)驗列舉了一些方法,不一定對每位都有效需要自行判斷。

也反反復復寫了差不多一周的時間,希望對在這條路上和正在路上的朋友們起到一些作用。

大部分都只是談了個思路,其實每一項單聊都能寫很多。每個點都有推薦一本書籍,有更好建議歡迎留言討論。

上文大部分的知識點都有維護在 GitHub 上,感興趣的朋友可以自行查閱:

https://github.com/crossoverJie/Java-Interview

文中有貼了一些站外鏈接,閱讀原文可以方便查看

你的點贊與轉發(fā)是最大的支持。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76725.html

相關文章

  • 網(wǎng)絡協(xié)議 20 - RPC 協(xié)議(上)- 基于XMLSOAP協(xié)議

    摘要:傳輸協(xié)議問題我們先解決第一個,傳輸協(xié)議的問題。信封里面的信分抬頭和正文板栗燜雞協(xié)議我們學過,這個請求使用方法,發(fā)送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經(jīng)寫明了。 【前五篇】系列文章傳送門: 網(wǎng)絡協(xié)議 15 - P2P 協(xié)議:小種子大學問 網(wǎng)絡協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡世界的地址簿 網(wǎng)絡協(xié)議 17 - HTTPDN...

    Caicloud 評論0 收藏0
  • 網(wǎng)絡協(xié)議 20 - RPC 協(xié)議(上)- 基于XMLSOAP協(xié)議

    摘要:傳輸協(xié)議問題我們先解決第一個,傳輸協(xié)議的問題。信封里面的信分抬頭和正文板栗燜雞協(xié)議我們學過,這個請求使用方法,發(fā)送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經(jīng)寫明了。 【前五篇】系列文章傳送門: 網(wǎng)絡協(xié)議 15 - P2P 協(xié)議:小種子大學問 網(wǎng)絡協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡世界的地址簿 網(wǎng)絡協(xié)議 17 - HTTPDN...

    asoren 評論0 收藏0
  • 網(wǎng)絡協(xié)議 20 - RPC 協(xié)議(上)- 基于XMLSOAP協(xié)議

    摘要:傳輸協(xié)議問題我們先解決第一個,傳輸協(xié)議的問題。信封里面的信分抬頭和正文板栗燜雞協(xié)議我們學過,這個請求使用方法,發(fā)送一個格式為的正文給,從而下一個單,這個訂單封裝在的信封里面,并且表明這是一筆交易,而且訂單的詳情都已經(jīng)寫明了。 【前五篇】系列文章傳送門: 網(wǎng)絡協(xié)議 15 - P2P 協(xié)議:小種子大學問 網(wǎng)絡協(xié)議 16 - DNS 協(xié)議:網(wǎng)絡世界的地址簿 網(wǎng)絡協(xié)議 17 - HTTPDN...

    張春雷 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<