原创 Vuex modules 模式下 mapState/mapMutations 的操作實例

當我們使用 Vuex 實現全局狀態維護時,可能需要將狀態值劃分多個模塊,比如一些 root 級的用戶登錄狀態,token,用戶級的用戶信息,購物車級的購物車信息。 下面我們實例演示下如何在多模塊下使用 mapState/mapMutatio

原创 PHP7 安裝 event 擴展

Libevent 是一個用C語言編寫的、輕量級的開源高性能I/O框架,支持多種 I/O 多路複用技術: epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時器和信號等事件;註冊事件優先級。PH

原创 微信小程序模板函數

微信小程序的視圖模板的{{}} 方法並不支持直接調用js函數,比如 {{ (new Date()).toLocaleString() }}是無法編譯成我們期望的結果的。 我們需要將js函數封裝至wxs模塊,然後便可以調用 # utils/d

原创 PHP 反射獲取函數體

PHP 通過反射獲取函數體 <?php function hello() { var_dump("hello"); } function get_function_define($closure) { try {

原创 composer 更新指定的依賴包

compoesr 的require/update都可以更新指定的依賴包(升級/降級)。 require更爲靈活些,未安裝則進行安裝,已安裝則根據傳入的版本號進行升級或降級。update則無法在命令行傳入新的版本號,需要先手動在compose

原创 async/await 和 Promise 的用例&關係

假設我們有三個請求,req1,req2, req3,三個請求後者依賴前者的請求結果。我們先使用Promise封裝一個異步請求的方法。 Promise 異步請求 使用Promise可以非常容易的封裝一個異步處理的業務,通過reslove/re

原创 go - 使用 gomod 管理項目依賴

go 1.11.1開始可以使用更優雅靈活的module機制做包依賴管理,能直接感受到的優點如下: 項目路徑可以脫離$GOPATH了,不需要必須放在$GOPATH/src下。 項目內部模塊的引入是基於moduleName而不再死板的基於pr

原创 php - tcp 粘包/拆包實例

tcp 長鏈接模式下,使用固定消息頭長度的方式進行消息拆包,解決粘包問題。 固定消息頭協議 將消息頭的前N個字節固定爲消息長度位,結合業務場景,2bytes 或 4bytes,讀取消息時先讀取消息長度位,即可按具體的消息長度讀取消息內容。

原创 go - bufio 緩衝讀寫詳解級實例

go在提供了io包的同時也提供了bufio包來實現有緩存的讀寫操作以提高讀寫性能。爲什麼bufio性能比io高呢? 緩衝讀寫 緩衝讀 // 默認緩衝區大小 const ( defaultBufSize = 4096 ) // 最小

原创 go io 之 Read / ReadAtLeast / ReadFull / EOF / ErrUnexpectedEOF

go 的 io包提供了ReadFull / ReadAtLeast函數對Reader對象進行讀操作,任何實現io.Reader接口的對象都可以使用這兩個方法,同時還延伸出io.EOF / io.ErrUnexpectedEOF錯誤,下面實踐

原创 Go html/template 模板的使用實例

從字符串載入模板 我們可以定義模板字符串,然後載入並解析渲染: template.New(tplName string).Parse(tpl string) // 從字符串模板構建 tplStr := ` {{ .Name }} {

原创 git merge --squash / git rebase -i / git cherry-pick

git merge --squash git merge --squash {srcBranch} 常用於將feat分支合併至dev時壓縮繁雜的提交日誌,讓合併變得清晰明瞭。 將 srcBranch上的超前於當前分支的 commits 合併

原创 Go 定時器/延時觸發器

Go 可以藉助 time.After/time.Ticker 來實現延遲/定時觸發器,主要原理是藉助無緩衝channel無數據時讀取操作會阻塞當前協程,Go會在給定的時間後向channel中寫入一些數據(當前時間),故阻塞的協程可以恢復運行

原创 grpc - 使用 golang 帶你從頭擼一套 RPC 服務(二)

緊接上一篇,下面用 PHP 作爲客戶端調用 golang 的服務端。 安裝 grpc_go_plugin 插件 grpc_php_plugin插件可以幫助我們自動生成client stub類庫(相當於API文件),方便我們直接引入調用,否則

原创 grpc - 使用 golang 帶你從頭擼一套 RPC 服務(一)

gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多複用請求等特。這些特性使得其在移動設備上表現更好,更省電和節省空間佔用。 安裝 protobuf &