原创 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狀態 無