原创 單聲道(mono)與雙聲道(stereo)的區別

The difference is in the number of channels (signals) used. Mono uses one, stereo uses more than one. In monaural sound

原创 MAC與HMAC介紹

在密碼學中,(消息認證碼)Message Authentication Code是用來認證消息的比較短的信息。換言之,MAC用來保證消息的數據完整性和消息的數據源認證。 MAC由消息本身和一個密鑰經過一系列計算產生,用於生成MAC的算法,稱

原创 http協議不同版本之間的對比(1.0 1.1 2.0)

http 1.0 短連接每一個請求建立一個TCP連接,請求完成後立馬斷開連接。這將會導致2個問題:連接無法複用,head of line blocking連接無法複用會導致每次請求都經歷三次握手和慢啓動。三次握手在高延遲的場景下影響較明

原创 golang symbolic links

package main import ( "fmt" "os" "path/filepath" ) func main() { arguments := os.Args if len(argu

原创 RTMP複雜握手(Complex handshake)

complex handshake c1和s1的結構c1s1包含兩種數據:key和digest, digest對我們是重要的是需要進行驗證的,c1s1分爲四個部分 // c1s1 schema0 time:4 bytes version

原创 什麼是URI,URL,URN?以及golang實現

URI:Uniform Resource Identifier,統一資源標識符; URL:Uniform Resource Locator,統一資源定位符; URN:Uniform Resource Name,統一資源名稱。 其中,URL,

原创 golang二叉樹前序,中序,後序非遞歸遍歷算法

package main import (    "container/list"    "fmt" ) // Binary Tree type BinaryTree struct {    Data  interface{}    L

原创 golang break語句可以break掉select,switch,for

坑,以下例子中,原本以爲close掉done channel後,循環會退出。但事實上會進入死循環 for { select { case packet := <-s.avPacketChan:

原创 HTTP,協議,學習總結

消息格式: start line + headers + bodyRequest Message: <method> <request-URL> <version><headers><entity-body> Repsonse Mess

原创 golang regexp記錄

FindAllSubmatch與FindSubmatch區別 // 匹配一個非元音字母,一個元音字母,一個非元音字母 someRegex, _ := regexp.Compile(`[^aouiye]([aouiye])([

原创 golang開發常用開源項目工具(持續更新中)

本人在日常golang項目開發中,用到了一些第三方開源庫,大多都是優秀的開源項目,源碼值得認真閱讀研究。在此記錄用到的一些庫:1. 解析配置文件https://github.com/go-ini/ini,go-ini, go INI文件解析

原创 golang 按字符讀取文件

package main import ( "bufio" "fmt" "io/ioutil" "os" "strings" ) func main() { arguments := os.

原创 2.Nginx學習-The HTTP Core module

http core module是Ngnix提供WEB服務的最核心模塊,默認被開啓。本篇文章將講述該模塊的一些配置配置文件結構:http {     server {// virtual website         location{

原创 curl工具post用法

1.curl usageFor sending data with POST and PUT requests, these are common curl options:request type     -X POST     -X P

原创 golang system call

golang處理系統調用的包爲syscall,具體系統調用時通過彙編來實現在類Unix系統中,使用以下4個方法進行系統調用(syscall_unix.go)。(trapa1a2a3 ) (r1r2 err ) (trapa1a2a3a4a5