原创 TCP握手和揮手的通俗理解
握手代表建立連接,揮手代表斷開連接 三次握手 第一次: 客戶機向服務器發送建立連接的請求(SYN) 第二次: 服務器收到後,發送報文,表示已經收到建立連接的請求(SYN+ACK) 第三次: 客戶機收到服務器的確認信息後,再次發送
原创 Go的一些開源包瞭解與認知
Beego beego是一個快速開發Go應用的http框架 beego可以用來快速開發API、Web、後端服務等各種應用,是一個RESTFul的框架,主要設計靈感來源於PHP的一些框架(tornado、sinatra、flask
原创 Go中容易踩的坑
初級篇 變量覆蓋 變量覆蓋不會報錯,檢查方式: 使用 vet 工具來診斷這種變量覆蓋,Go 默認不做覆蓋檢查,添加 -shadow 選項來啓用 go tool vet -shadow main.go vet 不
原创 wpf執行外部程序
某個函數或者方法可以執行外部的程序時可以使用下面的方法 System.Diagnostics.Process.Start(@"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
原创 WPF用法之數據綁定
WPF的DataGrid數據綁定 非常常見的WPF中數據綁定的方式 // 聲明一個綁定 Binding binding = new Binding(); // 聲明一個視圖,傳入一個數據結構(一個學生類) view = Colle
原创 Go語言容易踩的坑
本文章記錄go學習過程中的一些容易忽視的地方。 出棧順序之defer和panic package main import "fmt" // 會先把defer全部出棧,看有沒有recover defer出完之後,沒有reco
原创 傳統結構和微服務結構
傳統結構 前端訪問後端,有一個域名,域名有一個lvs, 中間搞一個lvs,做負載均衡 缺點: 增加或者減少東西,需要修改lvs的配置 微服務結構 把大的服務拆成多個小的服務,例如,購物車、訂單、會員,拆分出來 擴容:添加
原创 Go語言的GC詳解
前言 Garbage Collection (GC)是⼀種⾃動管理內存的⽅式。⽀持GC的語⾔⽆需⼿動管理內存,程序後 臺⾃動判斷對象。是否存活並回收其內存空間,使開發⼈員從內存管理上解脫出來。 垃圾回收機制 引⽤計數 標記清除
原创 C#文件路徑與Tostring相關
反斜槓和正斜槓 在文件路徑相關的代碼中,時常會看到如下的代碼: dir=dir.Replace("/","\\"); 其原因是:在字面字符串表達式和內部字符串表達式的差異所造成的的,字符串表達式的“\” 實際上爲“\”。 例如
原创 C#.Net中Lamda嵌套
集合中的foreach可以用於嵌套 例如: List<int> genIds = GetGenIds(); Holes.ForEach(h=> {if(genIds.Count(g=>g==h.genId) > 0) { h.Pr
原创 Vs Code Golang代碼沒有自動補全修復
Vs Code Golang代碼沒有自動補全 配置方法 文件–>首選項—>設置—>用戶設置 useCodeSnippetsOnFunctionSuggest打勾 或者在用戶設置中添加如下代碼塊即可 “go.useCodeSnipp
原创 Go的條件等待、單次執行和併發安全Map
條件等待(sync.Cond) 條件等待和互斥鎖有不同,互斥鎖是不同協程公用一個鎖,條件等待是不同協程各用一個鎖,但 是wait()方法調用會等待(阻塞),直到有信號發過來,不同協程是共用信號。 package main impo
原创 goroutine原理的圖文詳解
Go併發模型 Don’t communicate by sharing memory; share memory by communicating. 不要以共享內存的⽅式來通信,要通過通信來共享內存。 Go調度器GMP Go
原创 Go百萬級別併發實踐
前言 Golang和傳統基於 OS 線程和進程實現不同,Go語言的併發是基於用戶態的併發,這種併發方式就變得非常輕量,能夠輕鬆運行幾萬併發邏輯。 Go 的併發屬於 CSP 併發模型的一種實現,CSP 併發模型的核心概念是:“不要通
原创 Go語言實現日誌收集系統
日誌收集系統 需求 實時收集,統一存儲到中心繫統 建立索引,便於搜索和查找 友好的web見面,通過web即可完成日誌搜索 業界的elk方案 運維成本高,增加一個日誌收集,都要改配置 監控確實,無法獲取logstash狀態 無