原创 golang:gRPC 證書認證

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。gRPC建⽴在HTTP/2協議之上,對TLS提供了很好的⽀持。客戶端在鏈接服務器中通過 grpc.WithInsecure() 選項跳過了對服務器證書的驗證,沒有啓⽤證書的gRPC服務在

原创 golang:Protobuf代碼生成插件

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。Protobuf的protoc編譯器是通過插件機制實現對不同語⾔的⽀持。⽐如protoc命令出現 --xxx_out 格式的參數,那麼protoc將⾸先查詢是否有內置的xxx插件,如果沒

原创 golang:截取器

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。gRPC中的grpc.UnaryInterceptor和grpc.StreamInterceptor分別對普通⽅法和流⽅法提供了截取器的⽀持。不過gRPC框架中只能爲每個服務設置⼀個截取

原创 golang:RPC服務的簡單登錄驗證

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。基於上下⽂可以針對不同客戶端提供定製化的RPC服務,同時可以方便地爲RPC服務增加簡單的登陸狀態的驗證。 1.server/main.go package main import (

原创 golang:反向RPC

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。通常的RPC是基於C/S結構,RPC的服務端對應⽹絡的服務器,RPC的客戶端也對應⽹絡客戶端。但是對於⼀些特殊場景,⽐如在公司內⽹提供⼀個RPC服務,但是在外⽹⽆法鏈接到內⽹的服務器。這

原创 golang:gRPC token認證

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。基於證書的認證是針對每個gRPC鏈接的認證。gRPC還爲每個gRPC⽅法調⽤提供了認證⽀持,基於⽤戶Token對不同的⽅法訪問進⾏權限管理。 1.helloworld.proto sy

原创 golang:併發目錄遍歷

《GO程序設計語言》設計中案例,僅作爲筆記進行收藏。併發遍歷目錄實現了統計文件個數及文件總大小。 package main import ( "flag" "fmt" "os" "path/filepath" "sync"

原创 獲取星期一,獲取第幾周

protected void Page_Load(object sender, EventArgs e) { DateTime dt1 = Convert.ToDateTime("2012/4/1");

原创 Silverlight 應用程序中未處理的錯誤

Silverlight 開發中遇到個錯誤: SCRIPT5022: Silverlight 應用程序中未處理的錯誤 代碼: 2108 類別: InitializeError 消息: 無法下載初始屏幕或白屏問題 查

原创 golang:Go語言對象到C++類

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。要實現Go語言對象到C++類的包裝需要經過以下幾個步驟:首先是將Go對象映射爲一個id;然後基於id導出對應的C接口函數;最後是基於C接口函數包裝爲C++對象。 構造一個Go對象 //

原创 golang:C++類到Go語言對象

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。CGO是C語⾔和Go語⾔之間的橋樑,原則上⽆法直接⽀持C++的類。CGO不⽀持C++語法的根本原因是C++⾄今爲⽌還沒有⼀個⼆進制接⼝規範(ABI)。⼀個C++類的構造函數在編譯爲⽬標⽂

原创 golang:將C語言的qsort()函數封裝成一個Golang語言的qsort()函數

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。qsort快速排序函數是C語⾔的⾼階函數,⽀持⽤於⾃定義排序⽐較函數,可以對任意類型的數組進⾏排序。 sort.go 支持包 package c5 /* #include <stdl

原创 golang:發佈訂閱模型

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。發佈訂閱(publish-and-subscribe)模型通常被簡寫爲pub/sub模型。在這個模型中,消息⽣產者成爲發佈者(publisher),⽽消息消費者則成爲訂閱者(subscr

原创 golang:素數篩

《GO語言高級編程》設計中案例,僅作爲筆記進行收藏。 package main import ( "context" "fmt" ) // 返回生成自然數序列的管道:2,3,4…… func GenerateNatural(ct

原创 Oracle爲用戶設置讀權限

Oracle 數據庫中創建表只讀用戶,併爲其設置密碼永不過期、同義詞。 1.創建用戶 create user test identified by "123456" default tablespace db tempora