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