自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我被迫選擇了Go語言,但是現(xiàn)在發(fā)現(xiàn)它真的“很香”

開發(fā) 后端
接觸Go語言是實(shí)際需求所致,但通過使用它,我發(fā)現(xiàn)它真的“很香”,如果你想打造自己的高并發(fā)系統(tǒng),或者想讓自己目前的系統(tǒng)并發(fā)性能提升一個數(shù)量級,Go語言是你最好的選擇。從現(xiàn)在起,不妨學(xué)習(xí)它并使用它,你也會覺得它”很香”。

2018年6月我從工作了5年的公司離職了,離職的原因很簡單:想出去看一看,看外面的公司都在做什么業(yè)務(wù)?使用什么技術(shù)?

在離職的前一周,我拿到了華為、聯(lián)通和我現(xiàn)在所在公司的offer,之所以沒去華為和聯(lián)通是因?yàn)樗鼈兌疾皇腔ヂ?lián)網(wǎng)公司,我喜歡的是互聯(lián)網(wǎng)公司那種開放的氛圍,這種開放的技術(shù)氛圍更能讓人獲得更快的成長,接觸到最前沿的技術(shù)。而我最終選擇的公司就是這樣的一家公司,技術(shù)氛圍好、業(yè)務(wù)模式新穎。

 

[[316669]]

進(jìn)入這家互聯(lián)網(wǎng)公司以后,開始我接觸的當(dāng)然是Java的一個項(xiàng)目,而且是一個只有需求還沒有代碼的新項(xiàng)目。從需求分析到架構(gòu)設(shè)計、模型設(shè)計、代碼編寫都基本是我一個人完成。差不多2個月的時間這個Java的項(xiàng)目就開發(fā)完成并上線,后續(xù)的工作就是一些簡單的維護(hù)和一些新的需求以及一些功能的調(diào)整。

進(jìn)入公司三個月的時候,我的Team Leader扔給我一個Go語言項(xiàng)目,當(dāng)然這個項(xiàng)目我之前已經(jīng)看到過,但是當(dāng)時我并不懂Go語言,所以Team Leader并沒讓我做相關(guān)的開發(fā)工作。現(xiàn)在因?yàn)槿藛T的變動我必須要接手這個項(xiàng)目,所以我開始學(xué)習(xí)Go語言,也同時開啟了我的第二計算機(jī)語言之路。

 

我被迫選擇了Go語言,但是現(xiàn)在發(fā)現(xiàn)它真的“很香”

初次接觸Go語言的時候,我并沒有一開始就去找相關(guān)的資料去學(xué)習(xí),而是開始看TL給我的這個Go項(xiàng)目,讓他給我講解了這個項(xiàng)目的主要業(yè)務(wù)邏輯,包括入口類方法、調(diào)用鏈,弄清楚這些我就開始看這個項(xiàng)目。其實(shí)如果接觸過其它計算機(jī)語言的話,閱讀Go項(xiàng)目一點(diǎn)問題都沒有。即使Go中的數(shù)據(jù)類型、方法入?yún)ⅰ⒎祷刂档膶懛ǜ覀円酝恼Z言不一樣,但并不妨礙你理解這門語言的特性。尤其是接觸過JavaScript語言的開發(fā)人員來說,更容易接受Go語言,因?yàn)樗姆椒ê蛥?shù)定義和JavaScript對于方法和參數(shù)的定義很像。例如:都是通過var來定義參數(shù),方法都是以function定義,當(dāng)然JavaScript是一門弱類型的語言,它沒有像Go語言的int、int32、int64、string等強(qiáng)類型語言具有的數(shù)據(jù)類型,但是他們的某些關(guān)鍵字和寫法與Go語言很相像,熟悉JavaScript的開發(fā)者天然的對Go語言有好感。

 

[[316670]]

我用兩天的時間熟悉完了這個Go項(xiàng)目,在熟悉項(xiàng)目的過程中我當(dāng)然也對它的語法有了一定的了解。然后我就開始接受TL給我的新需求并開始編碼工作。我“照貓畫虎”式的完成了一個個的新需求,在編寫代碼的時候,我會去查資料,例如:Go中的strconv中的各種方法,凡是你在Java中關(guān)于String操作的方法都能在Go語言找到,如果找不到,那就再找一遍,如果還是找不到,那就自己實(shí)現(xiàn)一個。通過一邊編寫Go語言代碼一邊查相關(guān)資料,我很快對這門語言了解的更深入了,我知道它天生就是為分布式高并發(fā)系統(tǒng)設(shè)計的語言。同樣的服務(wù)器配置,Go語言能輕松實(shí)現(xiàn)4000QPS的業(yè)務(wù)邏輯,但是用Java就不太容易,需要做各種性能用戶,這都得益于Go語言的協(xié)程設(shè)計。

協(xié)程不同于線程,協(xié)程是語言本身的機(jī)制,靠語言自身的機(jī)制去做多任務(wù)的調(diào)度,而線程并不是語言的特性,它需要靠容器來調(diào)度。例如我們常見的Java中的多線程,Java中的多線程是要靠tomcat、jetty等web容器去調(diào)度,所以多線程的性能取決于容器的調(diào)度性能。而容器的調(diào)度性能我們開發(fā)者很難去優(yōu)化,就如一臺4G8G的服務(wù)器,tomcat跑3000的QPS都很吃力(不是簡單的輸出hello word),而同等配置下,Go語言跑5000的QPS都不費(fèi)力!

 

[[316671]]

當(dāng)然Go語言有它自身的局限性,一個重要的局限性就是弱事務(wù)。我們都知道Java中的Spring框架為我們提供了事務(wù)性,我們可以保證我們一次請求的多個操作要么全部失敗,然后回滾,要么全部成功,它具有很強(qiáng)的事務(wù)性,所以我們可以用Java語言來編寫銀行、支付等系統(tǒng)。但是Go語言并不嚴(yán)格強(qiáng)調(diào)事務(wù)性,強(qiáng)事務(wù)必然會帶來并發(fā)性能的損失。所以,如果你的系統(tǒng)可以接受一定程度的數(shù)據(jù)不一致性,那就可以選擇Go語言,當(dāng)然這不是絕對的,因?yàn)槲覀円部梢酝ㄟ^MQ等措施來解決數(shù)據(jù)的不一致性,那么GO語言的使用場景都大很多了。

學(xué)習(xí)一門編程語言最好的方式絕對不是一開始就去讀它的相關(guān)技術(shù)文檔,如果有機(jī)會我們能參與到實(shí)際的項(xiàng)目開發(fā)中,那我們應(yīng)該積極的參與其中。通過在實(shí)際業(yè)務(wù)場景對該計算機(jī)語言的使用,我們可以快速的掌握這門語言的特性,這種學(xué)習(xí)方式是最快最有成效的一種學(xué)習(xí)方式。只有真正使用過它,你才能真正了解它,“紙上談兵”永遠(yuǎn)不可能打敗真正的敵人。

 

我被迫選擇了Go語言,但是現(xiàn)在發(fā)現(xiàn)它真的“很香”

接觸Go語言是實(shí)際需求所致,但通過使用它,我發(fā)現(xiàn)它真的“很香”,如果你想打造自己的高并發(fā)系統(tǒng),或者想讓自己目前的系統(tǒng)并發(fā)性能提升一個數(shù)量級,Go語言是你最好的選擇。從現(xiàn)在起,不妨學(xué)習(xí)它并使用它,你也會覺得它”很香”。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2016-09-27 21:25:08

Go語言Ken Thompso

2017-12-28 10:44:08

JavaScript瀏覽器網(wǎng)頁

2021-03-01 18:35:18

Go語言虛擬機(jī)

2021-03-01 21:59:25

編程語言GoCX

2019-04-02 15:00:53

2023-02-22 15:08:21

2017-01-19 11:16:29

開放網(wǎng)絡(luò)交換機(jī)數(shù)據(jù)中心

2022-09-19 00:29:01

編程語言Go 語言功能

2020-11-09 09:28:49

WiFi 7WIFI6網(wǎng)絡(luò)

2015-04-20 17:32:16

鈦媒體

2019-02-12 15:24:50

C語言JavaPython

2018-11-22 15:07:17

代碼github程序

2021-11-09 09:19:13

PHP網(wǎng)站代碼

2021-03-28 20:58:25

Go語言線程

2023-02-27 08:25:46

ChatGPTJDGoogle

2024-05-20 08:25:55

2020-03-22 10:59:29

5G物聯(lián)網(wǎng)IOT

2020-12-07 08:16:39

自然語言查詢數(shù)據(jù)庫數(shù)據(jù)庫查詢

2023-10-31 08:01:48

Mybatis參數(shù)jdbcurl?

2018-12-21 11:26:49

MySQLMongoDB數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號