真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言練習(xí)推薦 Go語言入門經(jīng)典

Go語言HTTPServer開發(fā)的六種實(shí)現(xiàn)

學(xué)完了 net/http 和 fasthttp 兩個(gè)HTTP協(xié)議接口的客戶端實(shí)現(xiàn),接下來就要開始Server的開發(fā),不學(xué)不知道一學(xué)嚇一跳,居然這兩個(gè)庫還支持Server的開發(fā),太方便了。

目前創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、兩當(dāng)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

相比于Java的HTTPServer開發(fā)基本上都是使用Spring或者Springboot框架,總是要配置各種配置類,各種 handle 對象。Golang的Server開發(fā)顯得非常簡單,就是因?yàn)樘貏e簡單,或者說沒有形成特別統(tǒng)一的規(guī)范或者框架,我發(fā)現(xiàn)了很多實(shí)現(xiàn)方式,HTTP協(xié)議基于還是 net/http 和 fasthttp ,但是 handle 語法就多種多樣了。

先復(fù)習(xí)一下: Golang語言HTTP客戶端實(shí)踐 、 Golang fasthttp實(shí)踐 。

在Golang語言方面,實(shí)現(xiàn)某個(gè)功能的庫可能會(huì)比較多,有機(jī)會(huì)還是要多跟同行交流,指不定就發(fā)現(xiàn)了更好用的庫。下面我分享我學(xué)到的六種Server開發(fā)的實(shí)現(xiàn)Demo。

基于 net/http 實(shí)現(xiàn),這是一種比較基礎(chǔ)的,對于接口和 handle 映射關(guān)系處理并不優(yōu)雅,不推薦使用。

第二種也是基于 net/http ,這種編寫語法可以很好地解決第一種的問題,handle和path有了類似配置的語法,可讀性提高了很多。

第三個(gè)基于 net/http 和 github.com/labstack/echo ,后者主要提供了 Echo 對象用來處理各類配置包括接口和handle映射,功能很豐富,可讀性最佳。

第四種依然基于 net/http 實(shí)現(xiàn),引入了 github.com/gin-gonic/gin 的路由,看起來接口和 handle 映射關(guān)系比較明晰了。

第五種基于 fasthttp 開發(fā),使用都是 fasthttp 提供的API,可讀性尚可,handle配置倒是更像Java了。

第六種依然基于 fasthttp ,用到了 github.com/buaazp/fasthttprouter ,有點(diǎn)奇怪兩個(gè)居然不在一個(gè)GitHub倉庫里。使用語法跟第三種方式有點(diǎn)類似,比較有條理,有利于閱讀。

編程語言那個(gè)更好學(xué)習(xí)一點(diǎn)?。?/h2>

Python:

難度系數(shù):一顆星;歡迎指數(shù):四顆星。

學(xué)完之后可以從事:web開發(fā)、應(yīng)用開發(fā)、大數(shù)據(jù)、數(shù)據(jù)挖掘、科學(xué)計(jì)算、機(jī)器學(xué)習(xí)、人工智能、運(yùn)維、自然語言處理等。

就業(yè)薪資:北京地區(qū)Python開發(fā)工程師,工資收入水平應(yīng)屆畢業(yè)生起步10k左右。

GO語言:

難度指數(shù):一顆星;歡迎指數(shù):四顆星

相對于來講,GO語言并不是很難。但是GO語言的學(xué)習(xí)資料相對于其他語言比較少,所以學(xué)習(xí)起來沒有其他語言那么便利;很多人都說GO語言很火,按照數(shù)據(jù)來講是的,尤其是在國外,GO語言非?;穑泻芎玫拈_發(fā)效率,主要用于服務(wù)器端的開發(fā),進(jìn)行處理日志、數(shù)據(jù)打包、虛擬機(jī)處理、文件系統(tǒng)等。

就業(yè)薪資:GO語言起步薪資相對于較低,而且招聘崗位也不是很多。

Java:

難度指數(shù):三顆星;歡迎指數(shù)五顆星。

Java可以做:安卓和IOS的應(yīng)用開發(fā)、視頻游戲開發(fā)、桌面GUI、軟件開發(fā)等。

就業(yè)薪資:Java屬于老牌編程語言,但是由于市場上開發(fā)人員較多,競爭激烈,薪資比較平穩(wěn),招聘需求量也不是很高,如果是應(yīng)屆畢業(yè)生的話,可能并不是很好找工作。

C++:

難度指數(shù):四顆星;歡迎指數(shù):四顆星。

C++目前被看作編寫大型程序時(shí)應(yīng)用最好的面向?qū)ο缶幊陶Z言,C++是C語言的升級(jí)版本。

C++可以做:搜索引擎、軟件開發(fā)、操作系統(tǒng)、視頻游戲等。

就業(yè)薪資:C++開發(fā)工程師起薪工資一萬左右,高級(jí)工程師薪資兩萬左右,但是學(xué)習(xí)起來不易,對基礎(chǔ)、學(xué)歷都有要求。

綜合情況,從難易度、就業(yè)薪資、需求量方面來講,更推薦大家學(xué)習(xí)Python。Python簡單易學(xué)、容易入門、語法清晰,對初學(xué)者十分友好。

Go語言——sync.Map詳解

sync.Map是1.9才推薦的并發(fā)安全的map,除了互斥量以外,還運(yùn)用了原子操作,所以在這之前,有必要了解下 Go語言——原子操作

go1.10\src\sync\map.go

entry分為三種情況:

從read中讀取key,如果key存在就tryStore。

注意這里開始需要加鎖,因?yàn)樾枰僮鱠irty。

條目在read中,首先取消標(biāo)記,然后將條目保存到dirty里。(因?yàn)闃?biāo)記的數(shù)據(jù)不在dirty里)

最后原子保存value到條目里面,這里注意read和dirty都有條目。

總結(jié)一下Store:

這里可以看到dirty保存了數(shù)據(jù)的修改,除非可以直接原子更新read,繼續(xù)保持read clean。

有了之前的經(jīng)驗(yàn),可以猜測下load流程:

與猜測的 區(qū)別 :

由于數(shù)據(jù)保存兩份,所以刪除考慮:

先看第二種情況。加鎖直接刪除dirty數(shù)據(jù)。思考下貌似沒什么問題,本身就是臟數(shù)據(jù)。

第一種和第三種情況唯一的區(qū)別就是條目是否被標(biāo)記。標(biāo)記代表刪除,所以直接返回。否則CAS操作置為nil。這里總感覺少點(diǎn)什么,因?yàn)闂l目其實(shí)還是存在的,雖然指針nil。

看了一圈貌似沒找到標(biāo)記的邏輯,因?yàn)閯h除只是將他變成nil。

之前以為這個(gè)邏輯就是簡單的將為標(biāo)記的條目拷貝給dirty,現(xiàn)在看來大有文章。

p == nil,說明條目已經(jīng)被delete了,CAS將他置為標(biāo)記刪除。然后這個(gè)條目就不會(huì)保存在dirty里面。

這里其實(shí)就跟miss邏輯串起來了,因?yàn)閙iss達(dá)到閾值之后,dirty會(huì)全量變成read,也就是說標(biāo)記刪除在這一步最終刪除。這個(gè)還是很巧妙的。

真正的刪除邏輯:

很繞。。。。


本文題目:go語言練習(xí)推薦 Go語言入門經(jīng)典
本文路徑:http://weahome.cn/article/hhjiod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部