原创 微信小程序客服消息功能 php

項目說明: 本項目是一個簡單微信小程序客服消息類,實現客服消息相關功能。官方給的php示例有誤,這裏就不再吐槽了。 本示例是採用開發者服務器,沒有采用雲調用的形式。 官方文檔: 客服消息指南 客服消息服務端 適用場景 客戶消息流

原创 導出mysql表結構生成grpc需要的proto文件工具

使用過grpc的同學都知道,寫proto文件比較繁瑣,尤其是寫message,對應很多字段,爲此寫了一個簡單的從mysql直接讀取表結構,生成proto文件的工具。 工具的使用很簡單,需要簡單的配置,即可運行生成proto文件。

原创 Golang不同類型比較

在日常開發過程中難免會遇到各個類型的變量的比較以及運算操作,這裏我們做了一些簡單的彙總,希望能給各位同學在開發中帶來幫助。 這裏先上一波關係運算符==,!=,<,<=,> 和 >=。 float浮點數比較 golang 支持兩種浮

原创 Go socket實現多語言間通信

前言 socket提供了在傳輸層進行網絡編程的方法,它比基於http協議的接口傳輸更高效,RPC(Remote Procedure Call)是遠程過程調用,常用於分佈式系統等,而rpc很多是基於socket實現的。不瞭解sock

原创 Golang 類型

Go語言的類型很多,簡單的類型(int,string,float等)這裏不再贅述。 下面講一些開發中可能用到特殊類型 struct 類型 package main type User struct { Id int

原创 Go 字符串處理

直接使用“+”: 示例: a := "aa" b := "bb" a = a + b fmt.Println(a) 因爲字符串類型在Go中是不可改變的,因此每次操作實際都要新分配字符串,所以在字符串比較多的時候效率不高。 使用s

原创 Go 雙向鏈表

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接後繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點,相對於單鏈表來講:往前往後遍歷都很方便。 相對於單向鏈表

原创 golang 常量和變量

常量使用關鍵字 const 定義,用於存儲不會改變的數據。 常量的定義格式: const identifier [type] = value 例如 const name = "ok" 隱式類型定義 const name1 s

原创 Go之context包的分析

context是Go語言官方定義的一個包,稱之爲上下文。 Go中的context包在與API和慢進程交互時可以派上用場,特別是在提供Web請求的生產級系統中。在哪裏,您可能想要通知所有goroutines停止工作並返回。 這是一個

原创 Go 定時器NewTimer、NewTicker 和time.After

1、定時器(time.NewTimer) Go語言的定時器實質是單向通道,time.Timer結構體類型中有一個time.Time類型的單向chan,源碼(src/time/time.go)如下 type Timer struct

原创 Go 併發控制

前言 提到Go語言的併發,就不得不提goroutine,其作爲Go語言的一大特色,在日常開發中使用很多。 在日常應用場景就會涉及一個goroutine啓動或結束,啓動一個goroutine很簡單只需要在函數前面加關鍵詞go即可,而

原创 Go Signal信號處理

前言 信號(Signal)是Linux, 類Unix和其它POSIX兼容的操作系統中用來進程間通訊的一種方式。對於Linux系統來說,信號就是軟中斷,用來通知進程發生了異步事件。 當信號發送到某個進程中時,操作系統會中斷該進程的正

原创 Go channel 實現原理分析

前言 channel一個類型管道,通過它可以在goroutine之間發送和接收消息。它是Golang在語言層面提供的goroutine間的通信方式。 衆所周知,Go依賴於稱爲CSP(Communicating Sequential P

原创 Go語言new和make的區別

Go語言中new和make都是用來內存分配的原語(allocation primitives)。簡單的說,new只分配內存,make用於slice,map,和channel的初始化。 new new(T)函數是一個分配內存的內建函數。

原创 centos7下部署Docker+Jenkins+Gitlab+Golang持續集成環境

前言 持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。 通俗的講,持