原创 數據結構_03: go實現雙向鏈路表

type Element struct { next, prev *Element list *List Value interface{} } // Next returns the next li

原创 golang_微信公衆號網頁授權

UnionID 同一用戶、同一微信平臺下的不同應用unionid相同 靜默授權 1. snsapi_base爲scope的網頁授權 2. 已進入本公衆號的網頁授權頁snsapi_userinfo 網頁授權4步: 1. 用戶同意授權

原创 golang_併發模式:work包實現無緩存的工作池

使用無緩衝的通道來創建一個goroutine池,這些goroutine執行並控制一組動作,讓其併發執行。 使用無緩衝的通道不會有工作在隊列裏丟失或者卡住,所有工作都會被處理。 1.知道什麼時候goroutine池正在執行工作 2.

原创 HTTP_05_與HTTP協作的Web服務器(代理、網關和緩存)

1 單臺虛擬機實現多個域名 一臺HTTP服務器可使用虛擬機(Virtual Host)搭建多個Web站點。 在互聯網上,域名通過DNS服務映射到IP地址(域名解析)之後訪問目標網站。當請求發送到服務器時,已經是以IP地址形式訪問了

原创 HTTP_04_HTTP狀態碼

狀態碼告知從服務器端返回的請求結果。 類別 原因短語 1XX Informational(信息性狀態碼) 接收的請求正在處理 2XX Success(成功狀態碼) 請求正常處理完畢 3XX Redirect

原创 HTTP_06_HTTP首部

HTTP首部字段 使用首部字段是爲了給瀏覽器和服務器提供報文主體大小、所使用的語言、認證信息等。 HTTP報文 分類描述(請求報文/響應報文) 詳細描述 報文首部 請求行/狀態行 方法、URI、HTTP版本 請

原创 HTTP_01_瞭解web及網絡基礎

TCP/IP協議族,是在IP協議的通信過程中,使用到的協議族的統稱。HTTP屬於其內部的一個子集。 1 TCP/IP的分層管理 依次分爲一下4層:應用層、傳輸層、網絡層、數據鏈路層。 應用層 應用層決定了向用戶提供應用服務時通信的

原创 ADAPTER(適配器)——go實現適配器方法模式

1. 意圖 將一個類的接口轉換爲客戶希望的另外一個接口。 2. 結構 3. 4類參與者 Target 定義Client使用的與特定領域相關的接口。 Client 與符合Target接口的對象協同。 Adaptee 定

原创 golang指針的一種用法

go中指針的一種用法: 指針一般使用“*”,表示指向一個變量的值;取地址“&”表示去變量內存的地址。 這裏的testPointer函數返回值爲一個指針bool類型,但真正返回時是一個bool的地址。 在main中使用setup變量

原创 go-sqlite3 “database is locked”問題解決方案

1 背景 rds創建集羣后進行啓動或者停止操作時,會造成sqlite的寫入產生死鎖,無法進行後續的寫入。 2 問題 sqlite3數據庫在寫入操作時,如果多路同時寫入可能會造成“database is locked”的死鎖問題。

原创 ElasticSearch:logstash-output-http插件的使用(logstash的http輸出)

相關網站: 1 github上Http output plugin的相關介紹和用法 input { file { path => ["/root/demo.log"] # 只使用絕對路徑。若是多個文件,使

原创 go中結構體切片爲零值的坑

總結: 結構體切片傳入的結構體爲nil時,其結構爲[],有一個長度 一旦聲明一個切片,其結構爲空,長度爲0,但值不爲nil 遇到的坑的demo如下: type Cat struct { } //打印該切片,發現爲[<nil>

原创 縱疎狂01_個人網站的大綱設計

縱疎狂網站大綱1 基本構架2 項目列表如何創建一個註腳註釋也是必不可少的甘特圖 網站大綱 縱疎狂——爲 一個個人面向個人(C2C)展示的個性化頁面,內容以個人感興趣的東西爲主,輔助以自己感興趣的技術進行網站形式構架的更新。 1 基

原创 http傳輸數據簡單server服務器

package main import ( "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" "io/ioutil" "log" "net/http"

原创 golang_二分查找的隱藏bug及其優化

二分查找 func binarySearch(a []int, key int) int { low := 0 high := len(a) - 1 for low <= high { mid := low + (hi