tcp/udp、ip構成了網絡通信的基石,tcp/ip是面向連接的通信協議,要求建立連接時進行3次握手確保連接已被建立,關閉連接時需要4次通信來保證客戶端和服務端都已經關閉,也就是我們常說的三次握手,四次揮手。在通信過程中還有保證數據不丟失,在連接不暢通時還需要進行超時重試等等。 我要晨讀

已有3608人晨讀

golang的bufio包里面定以的SplitFunc是一個比較重要也比較難以理解的東西,本文希望通過結合簡單的實例介紹SplitFunc的工作原理以及如何實現一個自己的SplitFunc。 我要晨讀

已有1631人晨讀

高并發是指在同一個時間點,有很多用戶同時訪問URL地址,比如:淘寶的雙11、雙12,就會產生高并發。又如貼吧的爆吧,就是惡意的高并發請求,也就是DDOS攻擊。 我要晨讀

已有2741人晨讀

在前面的章節中,我們介紹了兩種(證書算一種)可全局認證的方法: TLS 證書認證 基于 CA 的 TLS 證書認證 Unary and Stream interceptor 我要晨讀

已有1226人晨讀

可以認為這是對 Rob Pike 的一篇關于 Go 字符串的博客的解釋。以 Go 程序員的思維來寫。 在博客文章中,他說沒有什么證據可以證明 Go 字符串是以 slices 的方式實現。我猜這不是他的疏忽,但起碼可以證明一點,這不是這篇博客的核心。再說,任何想要自己研究的都可以在使用 Go 代碼的過程中探索。我就是這樣做的。所以在這篇文章中,我盡力解釋 Go 字符串實現與 slice 實現的關系。 我要晨讀

已有1096人晨讀

當我意識到我一直在處理和解決的問題有一個專有名詞描述的時候,我總會覺得這事十分有趣。這次出現這種情況的是競爭條件(Race Conditions)。當你處理多個 routine 共享某類資源的時候,不可避免的需要考慮到這個。如果你未曾在你的代碼中考慮過這個問題,現在就是一個不錯的時候。 我要晨讀

已有1211人晨讀

我最近在用 Hadoop 和 Spark 為一個我幫助教學的班級工作。PySpark 的確很棒,但是 Hadoop MapReduce 我從來沒有真正關注,直到我發現 mrjob。MapReduce 的觀念是極為強大的,但是大量的樣板文件需要用 Java 編寫,甚至是一個簡單的 Hadoop 作業,在我看來那是不必要的。 我要晨讀

已有1160人晨讀

在某個數據需要被多個線程共享訪問的時候,會出現讀者-寫者問題(這里的「問題」是復數形式的,因為讀者-寫者問題有多個變種)。訪問共享數據的線程有兩種類型:讀者和寫者。讀者只會讀取數據,而寫者則是修改它。當寫者擁有了訪問數據的權限后,其它的線程(不管是讀者還是寫者)都不能訪問這個數據。這種約束的需求在現實中是存在的,比如:當寫者不能原子性地修改某個數據(例如數據庫)時,在修改完成之前,要讀取這個數據的讀者要被阻塞,以免讀者獲取到損壞的數據(臟數據)。對于讀者-寫者問題的核心,還有很多修訂的限制, 我要晨讀

已有1331人晨讀

在分布式系統中,超時是基本可靠性概念之一。就像這條 tweet 中提到的,它可以緩和分布式系統中不可避免出現的失敗所帶來的影響 我要晨讀

已有1435人晨讀

即將發布的 Go 語言 1.11 版本將會給我們帶來對 modules(模塊)的實驗性支持,這是 Go 語言新的一套依賴管理系統。 (譯注:很多編程語言中,把 modules 譯作「模塊」,但由于目前該機制在 Go 語言還沒正式發布,因此尚未有非常普及的譯法。而類似的 vendor 一詞的翻譯,大多中文文章都是采取保留英文原文的方式處理,因此本文對 modules 的翻譯參考 vendor 的處理:保留英文原文) 我要晨讀

已有1093人晨讀

考慮到絕大部分寫業務的程序員,在實際開發中使用 Redis 的時候,只會 Set Value 和 Get Value 兩個操作,對 Redis 整體缺乏一個認知。 所以我斗膽以 Redis 為題材,對 Redis 常見問題做一個總結,希望能夠彌補大家的知識盲點。 我要晨讀

已有1810人晨讀

Hello everyone: 過去3個月我們一直在Loom網路上開發專門用于ERC721通證的一款Plasma Cash實現。有鑒于ERC721通證本身是獨特不可替代的,因此該實現并不存在通證拆分或合并的問題。 我要晨讀

已有1192人晨讀

對LevelDB比較了解應該知道其中一塊cache實現:LRU Cache是采用雙向鏈表 + HashTable,其中HashTable是為了解決雙向鏈表的查找性能缺陷才引入的。接下來看一下采用golang如何實現LRU Cache。 我要晨讀

已有1255人晨讀

軟件架構 軟件架構是在軟件的內部,經過綜合各種因素的考量、權衡,選擇特定的技術,將系統劃分成不同的部分并使這些部分相互分工,彼此協作,為用戶提供需要的價值。 我要晨讀

已有901人晨讀

畢竟,如果我們去除信任另一方將會執行的需要,那么做事情的效率究竟會提高多少呢? 究竟什么是智能合約呢?這難道不是以太坊的范疇嗎?這難道不是未來要走的道路嗎?你為什么要阻撓進步呢? 在本文中,我將闡述什么是智能合約以及與之相關的工程實踐(提示:這不那么簡單,很難保證)。 我要晨讀

已有812人晨讀

Go 中的 interface 可以靜態編譯,動態執行,是最讓我感到興奮的一個特性。如果要讓我推薦一個 Go 語言的特性給其他的語言,那我一定會推薦 interface。 我要晨讀

已有1477人晨讀

我們在網上做的工作,大部分其實就是事件,webhooks 已經成為了連接系統的主要方式,不管是用戶創建、支付成功、DockerHub 鏡像推送或者 Git 倉庫上的合并請求,這些都是非常有用并且輕量級的共享信息的方式 我要晨讀

已有1531人晨讀