原创 比 json 快 10 倍的的msgpack

json 和 msgpack 都是非常優秀的序列化格式,下面我們將簡單的對比一下兩者的性能 使用語言 python 2.7 序列化數據類型:大小爲 30 m 左右的 dict 測試過程,先僞造 20w 個元素的 dict 然後將

原创 Go websocket 做消息推送(視頻彈幕的簡單實現原理)

server.go package main import ( "github.com/gorilla/websocket" "net/http" "socket/impl" "time" ) var ( upGra

原创 Go websocket 聊天室的詳細實現和詳細分析

websocket 聊天室數據結構分析 首先要做一個聊天室我們需要把所有的連接信息都保存下來 所以就需要有一個客戶端 client 的 manager ,manager 裏應該保存所有的client 信息 所以在我們的程序裏定義了

原创 Go 緩衝 channel 和 非緩衝 channel 的區別

在看本篇文章前我們需要了解阻塞的概念 在執行過程中暫停,以等待某個條件的觸發 ,我們就稱之爲阻塞 在Go中我們make一個channel有兩種方式,分別是有緩衝的和沒緩衝的 緩衝channel 即 buffer channel

原创 Go 關閉 channel 的 close 方法

在 Go 中我們所以 close() 來關閉一個 channel 官方的註釋如下 The close built-in function closes a channel, which must be either bidire

原创 Go 如何讓函數只能被調用一次

某些時候我們會有讓函數只能被調用一次的需求 完成這個功能可以使用 Go 的 sync.Once 方法 package main import ( "fmt" "sync" ) type SayHello struct {

原创 Go 的面試基礎算法(一)

兩個數組求交集 思路,把兩個數組合併成一個數組,然後通過 hash 表找出數組中重複的元素 package main import "fmt" func ArrayIntersection(arr []int, arr1

原创 Go 數據的類型及默認值

Go語言將數據類型分爲四類:基礎類型、複合類型、引用類型和接口類型 基礎類型 整形 有符號整形 int8 int16 int32 int64 默認值 0 無符號整形 uint8 uint16 uint32 uint64

原创 Go 的 rune byte 和 string

rune 、 byte 和 string 都是 Go 的內置類型 byte byte是uint8的別名,在所有方面都等同於uint8 按慣例,它用於區分字節值和8位無符號整數值。 rune rune是int32的別名

原创 beego API開發入門教程

下載 beego 下載 beego 前,需要做好如下準備 安裝好 golang 語言 在系統變量中配置 GOPATH、GOBIN 安裝好 git 下載 beego 安裝包 go get github.com/astaxie/

原创 golang 出現 panic: runtime error: invalid memory address or nil pointer dereference

在 golang 中如果我們定義一個指針並像普通變量那樣給他賦值,例如下方的代碼 package main import "fmt" func main() { var i *int *i = 1 fmt.Printf("

原创 Laravel 使用 RabbitMQ 消息隊列消費郵件

Laravel 使用 RabbitMQ 消息隊列消費郵件 準備工作 (這裏默認你的 RabbitMQ 和 Laravel 已經安裝完畢) 安裝 php-amqplib 在項目目錄下運行composer require

原创 php 單點登錄中 AES加密

單點登錄在中的用戶密碼採用AES 128加密,加密模式爲CBC 填充模式爲:PKCS5Padding(當待加密內容的不足分組長度時以最後一下字節填充) 密碼爲16個字節,長於16個字節取前16個字節,不足時補充空字符 向量IV同密碼

原创 基於 Lumen 的會議室預約 API 設計 (二)

會議室預約功能模塊大概可以分爲三大部分 預約模塊 黑名單模塊 日誌模塊 預約模塊 請求佔用時間表,驗證請求時間是否被佔用,沒有則進行第2步,有則返回失敗 創建預約,並將請求寫入操作日誌 向佔用時間表插入數據 假設用戶選中 201

原创 php 堆排序

<?php function buildHeap(&$arr) { $length = count($arr); for ($i = intval($length / 2) - 1; $i >= 0; $i--) {