背景 如圖,在壓測(cè)一個(gè)go寫(xiě)的反向代理服務(wù)時(shí)出現(xiàn)這個(gè)報(bào)錯(cuò)。經(jīng)過(guò)搜索發(fā)現(xiàn)這個(gè)報(bào)錯(cuò)是因?yàn)槎丝诤谋M而導(dǎo)致的。 原因可能: http.client請(qǐng)求后沒(méi)讀取完rsp.Body就cl...
背景 如圖,在壓測(cè)一個(gè)go寫(xiě)的反向代理服務(wù)時(shí)出現(xiàn)這個(gè)報(bào)錯(cuò)。經(jīng)過(guò)搜索發(fā)現(xiàn)這個(gè)報(bào)錯(cuò)是因?yàn)槎丝诤谋M而導(dǎo)致的。 原因可能: http.client請(qǐng)求后沒(méi)讀取完rsp.Body就cl...
本文已遷移至https://juejin.cn/post/6844903812331732999[https://juejin.cn/post/684490381233173...
RWMutex 基于go 1.13源碼總的來(lái)說(shuō)讀寫(xiě)鎖就是利用互斥鎖和CAS維護(hù)2個(gè)關(guān)于讀鎖的變量以及runtime的2個(gè)信號(hào)量,來(lái)實(shí)現(xiàn)「當(dāng)存在讀鎖時(shí),讀操作可以繼續(xù)加鎖,寫(xiě)操...
本文基于 go1.11 版本。 Mutex 使用 在深入源碼之前,要先搞清楚一點(diǎn),對(duì) Golang 中互斥鎖 sync.Mutex 的操作是程序員的主動(dòng)行為,可以看作是是一種...
前言 Golang中有兩種類(lèi)型的鎖,Mutex (互斥鎖)和RWMutex(讀寫(xiě)鎖)對(duì)于這兩種鎖的使用這里就不多說(shuō)了,本文主要側(cè)重于從源碼的角度分析這兩種鎖的具體實(shí)現(xiàn)。 引子...
1、為什么要分庫(kù)分表?(設(shè)計(jì)高并發(fā)系統(tǒng)的時(shí)候,數(shù)據(jù)庫(kù)層面該如何設(shè)計(jì)?) 說(shuō)白了,分庫(kù)分表是兩回事兒,大家可別搞混了,可能是光分庫(kù)不分表,也可能是光分表不分庫(kù),都有可能。 我先...
文章目的: 1、向沒(méi)聽(tīng)過(guò)或者剛聽(tīng)過(guò)但是還對(duì)這個(gè)監(jiān)控系統(tǒng)沒(méi)有任何概念的開(kāi)發(fā)者介紹Prometheus的應(yīng)用場(chǎng)景。2、向有需要深入的了解的人推薦一些博客、書(shū)籍。3、內(nèi)心真實(shí)想法:...
基于go 1.13版本 在分析源碼前,要知道 在 http 服務(wù)器上進(jìn)行了如下工作: 客戶端通過(guò) TCP/IP 協(xié)議建立與服務(wù)器的 TCP 連接 客戶端向服務(wù)器發(fā)送 HTTP...
現(xiàn)在大數(shù)據(jù)、人工智能、數(shù)據(jù)分析等很多技術(shù)崗位都對(duì)數(shù)學(xué)有一定的要求,數(shù)學(xué)越來(lái)越重要,很多人也開(kāi)始嘗試學(xué)習(xí)數(shù)學(xué),腦子里突然就有了結(jié)合Python編程來(lái)學(xué)習(xí)數(shù)學(xué)的想法。在網(wǎng)絡(luò)上搜索...
go-xorm封裝公共CURD類(lèi) $ 前言 go-xorm是一個(gè)簡(jiǎn)單而強(qiáng)大的Go語(yǔ)言O(shè)RM庫(kù). 通過(guò)它可以使數(shù)據(jù)庫(kù)操作非常簡(jiǎn)便。 $ 配置目標(biāo) 封裝一個(gè)公共的父級(jí)操作類(lèi), 通...
一. 分塊編碼 分塊編碼傳輸應(yīng)該是和持久連接配合使用的.因?yàn)槿绻皇浅志眠B接的話那也不需要知道長(zhǎng)度等信息了,只需要讀到連接關(guān)閉即可. 在持久連接的情況下,如果是服務(wù)器動(dòng)態(tài)創(chuàng)建...
簡(jiǎn)介 之前在網(wǎng)上看到一個(gè)熱議的滑稽問(wèn)題,如果自己的老媽和女朋友互換了靈魂,會(huì)選擇跟誰(shuí)在一起?不過(guò)選擇誰(shuí)都挺矛盾尷尬的吧,甚至有點(diǎn)惡心?!睹孛堋防锩婢褪侵v了個(gè)類(lèi)似的故事,那么男...
前言 建議先對(duì)raft論文有一些基本的瀏覽,然后再看下面的內(nèi)容??梢越Y(jié)合后面引用的鏈接去進(jìn)行更深入的學(xué)習(xí)。下文提到的章節(jié),指論文的章節(jié) 正文 通過(guò)領(lǐng)導(dǎo)人的方式,Raft 將一...
全部代碼在我的GitHub,本文只做分析。 簡(jiǎn)介 該部分主要是要求完成 server 選舉的相關(guān)功能,暫時(shí)不牽涉到 log。重點(diǎn)閱讀論文的 5.1 以及 5.2,結(jié)合 Fig...
golang 開(kāi)發(fā)者在Vim 上貢獻(xiàn)了許多成熟的插件。站在巨人的肩膀上,我們可以非常輕松的在Vim 下配置出屬于自己的golang的開(kāi)發(fā)環(huán)境。 電腦環(huán)境: Mac 10.13...
寫(xiě)在前面 當(dāng)在10億數(shù)據(jù)進(jìn)行不到30次比較就能查找到目標(biāo)時(shí),不禁感嘆編程之魅力!人類(lèi)之偉大呀! —— 學(xué)紅黑樹(shù)有感。 終于,在學(xué)習(xí)了幾天的紅黑樹(shù)相關(guān)的知識(shí)后,我想把我所學(xué)所想...
最近用 gin+mysql編寫(xiě)web工程,其中使用了gorm庫(kù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。由于gorm目前暫未提供 批量插入方法,推薦使用原sql語(yǔ)句批量插入數(shù)據(jù)。 參考鏈接 gorm...
本質(zhì) java鎖的實(shí)現(xiàn)原理就是繼承AQS抽象類(lèi)java鎖繼承Lock接口, 而Lock需要實(shí)現(xiàn)的接口依賴(lài)AQS的實(shí)現(xiàn)。 AQS用來(lái)實(shí)現(xiàn)具體鎖的操作,需要具體鎖去重寫(xiě)tryAc...
項(xiàng)目中使用ETCD來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和配置信息的存儲(chǔ),最近我抽空研究了一下ETCD和背后的一致性算法 — Raft算法的邏輯。 ETCD是什么 ETCD是一個(gè)go語(yǔ)言實(shí)現(xiàn)的高可靠...