原创 Go Modules 入門

Go modules 是 Go 語言中正式官宣的項目依賴解決方案,Go modules(前身爲vgo)於 Go1.11 正式發佈,在 Go1.14 已經準備好,並且可以用在生產上(ready for production)了,Go

原创 RabbitMQ與Kafka

導言 作爲一個有豐富經驗的微服務系統架構師,經常有人問我,“應該選擇RabbitMQ還是Kafka?”。基於某些原因, 許多開發者會把這兩種技術當做等價的來看待。的確,在一些案例場景下選擇RabbitMQ還是Kafka沒什麼差別,

原创 淺談gRPC

簡述 gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++,

原创 PHP變量的底層結構

PHP變量 變量是一個語言實現的基礎,變量有兩個組成部分:變量名、變量值,PHP中可以將其對應爲:zval、zend_value,這兩個概念一定要區分開,PHP中變量的內存是通過引用計數進行管理的,而且PHP7中引用計數是在zen

原创 高性能短鏈服務設計

前言 今天,我們來談談如何設計一個高性能短鏈系統,短鏈系統設計看起來很簡單,但每個點都能展開很多知識點,也是在面試中非常適合考察侯選人的一道設計題,本文將會結合我們生產上穩定運行兩年之久的高性能短鏈系統給大家簡單介紹下設計這套系統

原创 Protobuf簡介

Protobuf簡介 1、Protobuf簡介 Protobuf即Protocol Buffers,是Google公司開發的一種跨語言和平臺的序列化數據結構的方式,是一個靈活的、高效的用於序列化數據的協議。 與XML和JSON格式

原创 微服務下實現數據一致性

本人最近學習了一下微服務下數據一致性的特點,總結了下目前的保障微服務下數據一致性的幾種實現方式如下,以備後查。此篇文章旨在給大家一個基於微服務的數據一致性實現的大概介紹,並未深入展開,具體的實現方式本人也在繼續學習中,如有錯誤,歡

原创 Go調試工具Delve

安裝 首先你必須有等於或高於1.8版本的Go,我的版本是: userdeMBP:go-learning user$ go version go version go1.11.4 darwin/amd64 我是用的是Mac,所以使

原创 PHP數組的底層結構

PHP數組 數組是PHP中非常強大、靈活的一種數據類型,它的底層實現爲散列表(HashTable,也稱作:哈希表),除了我們熟悉的PHP用戶空間的Array類型之外,內核中也隨處用到散列表,比如函數、類、常量、已include文件

原创 Go單鏈表反轉

package main import ( "fmt" ) type Node struct { Val int Next *Node } func reverse(listNode *Node) *

原创 Go二分查找

package main import "fmt" func main() { data := []int{1,2,3,4,5,8,10} fmt.Println(binFind(data,8)) fm

原创 Go遍歷二叉樹

package main import "fmt" type Node struct { Val int Left *Node Right *Node } // 1 //

原创 gRPC及相關介紹

項目地址:https://github.com/EDDYCJY/go-grpc-example 作爲開篇章,將會介紹 gRPC 相關的一些知識。簡單來講 gRPC 是一個 基於 HTTP/2 協議設計的 RPC 框架,它採用了 P

原创 Golang跟蹤剖析trace的使用

單單使用 PProf 有時候不一定足夠完整,因爲在真實的程序中還包含許多的隱藏動作,例如 Goroutine 在執行時會做哪些操作?執行/阻塞了多長時間?在什麼時候阻止?在哪裏被阻止的?誰又鎖/解鎖了它們?GC 是怎麼影響到 Go

原创 Go優雅的重啓服務

知識點 信號量的瞭解。 應用熱更新。 本文目標 在前面編寫案例代碼時,我相信你會想到,每次更新完代碼,更新完配置文件後,就直接這麼 ctrl+c 真的沒問題嗎,ctrl+c到底做了些什麼事情呢? 在這一節中我們簡單講述 ctr