随笔分类 - go
学习了解quic go
摘要:测试环境如下: centosA:192.168.1.206 ./chisel client -v 192.168.1.207:12345 192.168.1.206:8888:socks centosB:192.168.1.207 ./chisel server -v --host 192.168.
阅读全文
摘要:转载自gossh协议库 导读 SSH, The Secure Shell Protocol (安全 Shell 协议),是一个使用广泛的网络协议。 在中文互联网世界,关于 SSH 协议的介绍,往往都把重点放到了安全(Secure)方面的细节。这样的文章对于开发者来说,意义并不大,原因在于: 此类文章
阅读全文
摘要:目前chisel基于tcp http websocket 的ssh 代理!! chisel 代理流程client<<--tcp/udp/socks-->>http->chisel-client<< ####tcp-http-websocket-ssh#### >>chisel-server<< tc
阅读全文
摘要:Writer和Reader是两个抽象的接口,其定义如下 type Writer interface { Write(p []byte) (n int, err error) } type Reader interface { Read(p []byte) (n int, err error) } 查
阅读全文
摘要:在分析chiesl 的时候涉及到代理 Proxy,代理的本质,是转发两个相同方向路径上的 stream(数据流)。例如,一个 A-->B-->C 的代理模式,B 作为代理,读取从 A >B 的数据,转发到 B >C func Pipe(src io.ReadWriteCloser, dst io.R
阅读全文
摘要:var user dot1xDataItem user.UserName = "test11" dot1xDb.Find(&user) 执行路径:一样 只是在 BuildQuerySQL的时候 会解析传进来参数里面的values,有值就当做where exp eq 处理 func BuildQuer
阅读全文
摘要:var users []dot1xDataItem dot1xDb.Where("user_name = ? AND client_macaddr = ?", "test1", "88:A4:C2:D9:27:AE").Find(&users) 来看看这行代码是怎样组装sql语句 // Where
阅读全文
摘要:gorm 相互关联 // Config GORM config type Config struct { Dialector callbacks *callbacks cacheStore *sync.Map } // DB GORM DB definition type DB struct { *
阅读全文
摘要:创建orm db handle 后, 对schema migrate // Migrate the schema dot1xDb.AutoMigrate(&dot1xDataItem{}) 初始化创建open orm时;一开始dot1xDb的clone变量为1 tmp := sqlite.Open(
阅读全文
摘要:GORM本身是构建在 database/sql 之上的 dot1xpath := gAppCfg.RuntimeConfigPath + "dot1x.db" dot1xsql, err = sql.Open("sqlite3", dot1xpath) if err != nil { return
阅读全文
摘要:{ http.HandleFunc("/device_status", radiusAccountHandler) err := http.ListenAndServe(":8000", nil) } func radiusAccountHandler(w http.ResponseWriter,
阅读全文
摘要:字符串高效拼接 常见方式:使用+ 使用fmt.Sprintf 效率比较高的: strings.Builder func builderConcat(n int, str string) string { var builder strings.Builder for i := 0; i < n; i
阅读全文
摘要:目前使用gout 作为http客户端, 处理数据时看到了respone数据解析。 首先看解析respone header数据: 目前看代码的核心设计逻辑: 1、创建一个Header = headerDecode{} 实例 2、调用实例的(h *headerDecode) Decode(rsp *ht
阅读全文
摘要:目前对于反射使用不是很熟悉,记录之 if val.Kind() == reflect.Interface { val = reflect.ValueOf(val.Interface()) } switch t := val.Kind(); t { case reflect.Uint, reflect
阅读全文
摘要:## responseUse response中间件,在Bind()之前执行。可以对response进行通用逻辑处理。 如果只需要闭包逻辑,则可以使用`WithResponseMiddlerFunc`,而不必创建一个结构体,下面的例子中对两种方法都进行了使用。 ```go import ( "byt
阅读全文
摘要:国内网络访问国外资源经常会出现不稳定的情况,目前需要搭建CDN代理,目前有 # 启用 Go Modules 功能 go env -w GO111MODULE=on # 配置 GOPROXY 环境变量,以下三选一 # 1. 七牛 CDN go env -w GOPROXY=https://goprox
阅读全文
摘要:断言 // 目的是检查 *QueryEncode 类型是否满足了 Adder 接口。 // 在这里,Adder 是一个接口类型,QueryEncode 是一个具体的类型。QueryEncode 类型是否实现了add 接口 var _ Adder = (*QueryEncode)(nil) 反射 x
阅读全文
摘要:目前使用net/http 长连接 连接池复用时,出现连接一直都在关闭重连, strace 后发现没有read respone 只读取了head,但是body没有读取, google后看到官方问题,确实记录需要代码实现读取body逻辑来清空socket内核缓存,以便后面复用。 需要读取respone里
阅读全文
摘要:注意: “_”是特殊标识符,用来忽略结果。 iota是go语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引) slice 并不是数组或数组指针。它通过内部指针和相
阅读全文
摘要:HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-
阅读全文

浙公网安备 33010602011771号