91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用多線程和鎖

發布時間:2021-10-23 09:38:07 來源:億速云 閱讀:127 作者:iii 欄目:web開發

本篇內容介紹了“如何使用多線程和鎖”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、前言

你只面向工作學習嗎?

如果說編程只是單純的承接產品需求開發系統功能,那么基本可以把程序開發簡單理解成按照需求PRD,定義屬性、創建方法、調用展示,這三個步驟。

尤其是在一些大公司中,會有易用的、完善的、標準的架構體系和運維服務,例如:RPC、MQ、Redis集群、分布式任務、配置中心、分庫分表組件、網關等搭配出來的系統架構。也因此讓程序員做到只關心業務功能開發!

讓程序員只關心業務開發,有成熟的系統架構、有標準的開發流程、有通用的功能設計,對于團隊效能提升來說是非常好的事。但一部分程序員正因為有這樣的好事,讓日復一日的歲月做著同樣的事,最后成為工具人。

如果是框架和中間件的存在,是了讓程序員只關心業務開發。那為什么你面試的時候會被問到核心組件的設計和原理呢?  在這個年代,別放棄學習是你幾乎唯一的生存途徑。

二、多線程和鎖沒用過?

面試必問的多線程、鎖,甚至可能問的還挺深入,比如:AQS、CAS、CLH、MCS、鎖升級、對象頭等等。但在實際的業務開發中,你用到了嗎?可能這也是大部分同學說,面試造火箭的地方!

互聯網應用中有些業務場景開發,確實很少能用到多線程,也幾乎不需要你去加鎖。即使你能用到多線程的地方也可以用其他更好的方式處理,就像你需要多個線程把數據落庫,那么就可以使用異步MQ的方式,把壓力分散到各個應用實例上去。而這一開發方式的演變,是因為現在的應用開發和部署都是基于分布式的思想,所以也就很少會有非得用線程來壓榨單實例CPU。

在基于RPC+MQ+數據庫路由+網關,以及各類配合的組件下,構建出的分布式應用,在某些時候是改變了我們的開發模式的。可能原來我們需要大量使用多線程在單個實例下的開發思路,在使用分布式架構后,就需要轉變這一思想,所以隨時而來的使用多線程和鎖的場景也會減少。

圖 14-1 分布式簡化的應用部署

如何使用多線程和鎖

圖 14-1 分布式簡化的應用部署

但,也不是就沒有多線程和鎖的業務場景,就比如我們的核心組件中,數據庫連接池、分布式任務中,都會涉及到多線程和鎖的使用。也有一些類似商品秒殺的場景,同樣需要使用到鎖。

那么,使用多線程為了更大限度的利用資源提升效率,加鎖是為了在同一個資源有競爭的情況保證業務流程的正確性。就像:數據庫連接池為了合理分配數據庫資源、商品秒殺是為了庫存的競爭。

可是,在沒有需要競爭和分配資源的情況下,一般并不會在分布式場景下使用到多線程。假如我們做一個用戶資源單次計數的操作,那么原來的應用是單實例還是可以加鎖累加計數的。但現在是分布式應用部署,也就是你可能這一時刻是A實例提供你的需求,當你再次刷新頁面后可能訪問到的就是B實例。這時候在想做一些實例上的累加,就沒那么方便了。

這也就是在分布式應用框架的應用中,讓你能用到多線程和鎖的地方并不多的原因。但如果你有需要去了解一些中間件或者核心組件的設計時,就需要了解相關的核心知識。

很多紙上談兵的技術,也就是你造輪子、造火箭、成為架構師的根基! 如果你還想奔著這條路能走的更遠,就需要繼續學習。

三、你的成長階段目標?

如何使用多線程和鎖

圖 14-2 你的成長階段

就編程開發這條道路而言,每一個成長階段的目標都會有它隨著帶來的難以攻克的難。

  • 上學階段,對突如其來的奇怪知識,想把它在自己電腦運行起來,就很難。

  • 工作1~3年,以前掌握的都是毛皮,接下來需要有深度的學習,而深入后都將與數學硬碰硬。

  • 工作3~5年,看以前理論性的知識也沒那么難,但怎么實際要解決一些復雜項目,還是專心腦干。

  • 工作5~7年,薪資與職位都會成為這個階段非常難以突破的瓶頸,積累不足、沉淀不夠,現狀不滿!

  • 工作7~10年,以前覺得什么都難學,現在可能讓你有空閑時間都難。并不一定年齡到了,本事就到了。

隨著年齡的增長,每一階段都有難以跨越的難。而那些看上去突破了瓶頸,達到了你想要的高度的人。其實每一個階段,他們都跑在前面。

但就單純的技術成長而言,其實理論知識并不難,只要你學就還能會,只是付出的時間成本不同罷了。但過了理論知識這一關后,接下來要面對的是創造能力,也就是為什么你感覺自己會了那么多技術內容,但是實際開發時卻總感覺寫不出好代碼的階段。

會了核心技術但又寫不出好代碼,就很像是:會漢字但寫不出詩詞歌賦、懂色彩但繪不出山河大川、能蹦跳但舞不出搖曳生姿。

所以,多實戰一些項目代碼,多看一些設計模式,會讓你更好的理解代碼該怎么用,也就能提升突破當前的階段屏障。??推薦小傅哥的《重學Java設計模式》,公眾號:bugstack蟲洞棧,回復:設計模式,下載。

四、怎么成長為架構師?

如何使用多線程和鎖

圖 14-3 架構師知識體系

講到架構師,其實真的挺難因為報名一個課程學習完就能成為架構師。架構師的成長更多的取決你們的研發組是否需要一個架構師,也同時需要你在這個崗位起到應有的作用。

如果你還不是架構師,但想成為架構師。那么還取決于你的老板是否愿意把你培養成架構師,以及你自己的多方面能力是否具備。另外,并不一定高級開發就低于架構師。高級開發有時候比架構師做的事更專一、更核心。

那么除了圖 14-3 對于架構師的能力概況,有哪些具體的事項呢?

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 定得了規范、設計了架構。

  3. 有一定的技術深入和廣度,改的了bug、處理得了事故。

  4. 帶了了小組推進項目落地,也能協同其他組配合。

  5. 了解運營和業務規劃,提前介入產品開發階段。

  6. 懂得了業務和運營,了解數據指標和各項ROI。

  7. 架構更多的是經驗和經歷的結合,而不是一個單項內容的單一渠道。

  8. 不是沒有架構師就沒有架構,有時候是一個公司或者小組承接的項目并沒有那么大,使用成型架構模式即可。

  9. 但如果有非常復雜的場景設計,都是十幾個系統的分組安排開發,提供服務,支持幾萬秒殺,幾十萬日活,在擴展到上百萬DAU,就需要有架構師來把控。

  10. 再比如:從下單、到交易、到支付、到結算、到活動、到玩法、怎么支持。這個體量的復雜度才需要有架構權衡。

  11. 沒有絕對的對和絕對的錯,只是什么時候更適合罷了。多學一些,別給自己設定邊界,才更好突圍!

做好架構,遠看是部門效率,近看是解決爛代碼!很多時候的急,可能讓整個工程爛掉。爛的越來越多,最終也會影響業務發展。那么這些爛代碼都怎么來的呢?

  • bug很多時候是接手了的爛代碼或者別人的思路沒有繼續繼承。

  • 業務需求簡單開始就寫的沒有擴展性,后面也不斷的堆積。

  • 沒有很好的結構和命名、也從不格式化。

  • 預期不到將來業務走向,設計不出合理的擴展性系統。

  • 炫技大于整體規劃和設計,一個新技能的引入,但缺少相應的匹配。

  • 沒有設計,功能都是流程式,需要啥就寫ifelse。

  • 總想一把梭,沒關系的,心里有抱怨,部門有急功近利,不給你長時間的鋪墊,沒有有人帶,寫不出好東西。

  • 組內缺少相應的流程規范和評審,設計評審、代碼評審,也沒與標桿項目可以參考。

  • 懂幾個jdk源碼從不是寫好代碼的根本只是基本功。就像老木匠用斧子,新木匠用電鋸,但做出來的東西,有的就好,有的就不好。

  • 沒有永遠好的代碼,如果像代碼更好,就需要一直維護,一直改造。

  • 沒有業務對應的體量,不談QPS、TPS、TP99、TP999,服務健康度,很多空談都是耍流氓。

爛,來自于很多方面,而且這并不是你報名個課程就能學到的。業務、產品、研發,三方共同努力才能更好的減少爛的出現,而這些也是每一個研發都應該努力的方向,也幾乎是你要成為架構師的必經之路。

“如何使用多線程和鎖”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 平顶山市| 马龙县| 南安市| 万源市| 青海省| 寻乌县| 莱阳市| 铜陵市| 枣庄市| 封丘县| 东台市| 泰兴市| 皮山县| 鲁甸县| 库伦旗| 高清| 双峰县| 博湖县| 新津县| 宝应县| 什邡市| 托克逊县| 大余县| 马尔康县| 河西区| 赣榆县| 三门峡市| 洱源县| 镇沅| 通榆县| 泸水县| 理塘县| 宜川县| 鲁甸县| 公安县| 调兵山市| 竹溪县| 宣恩县| 交口县| 南投市|