- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 golang gin/httpRouter框架路由中间件use的实现原理
业务层跟非业务层代码混合在一起,会随着项目的逐渐庞大而难以维护。需要在初始设计时要把这些分开。拜读过httpRouter源码后,整理了下路由中间件的理解
2020-05-17 14:31:37 1961
原创 自定义 golang protobuf plugin
** 看 Go高级编程 书籍, 照着里面的例子编写自定义 golang 的 protobuf plugin 失败报错 : WARNING: Package "github.com/golang/protobuf/protoc-gen-go/generator" is deprecated. A future release of golang/protobuf will delete this package, which has long been excluded from the compatibil
2020-05-13 15:21:32 1713
原创 golang 并发相关的操作
golang 的并发golang 的线程 和 普通的线程普通的线程系统级的线程都会有一个固定大小的栈(一般默认可能是2M),这个栈主要用来保存函数递归调用时参数和局部变量。固定了栈的大小导致了两个问题: 一是对于很多只需要很小的栈空间的线程来说是一个巨大的浪费, 二是对于少数需要巨大栈空间的线程来说又面临栈溢出的风险goroutine 线程一个 goroutine 会以一个很小的栈启动(可能 2KB 或 4KB), 当遇到深度递归导致当前栈空间不足时, goroutine 会根据需
2020-05-12 11:49:15 94
原创 初入golang RPC
package mainimport ( "fmt" "net" "net/rpc" "os" "rpc/test1")type HelloServiceInterface interface { Hello(request string, reply *string) error}func RegisterHelloService(svc HelloServiceInterface) error { return rpc.RegisterName(test1.HelloServ
2020-05-09 11:28:01 81
原创 golang的context
Context接口context 基本结构context 是一个基本接口, 所有的 context 对象都要实现该接口, context 的使用者在调用接口中都使用 context 作为参数类型type Context interface { // 如果 context 实现了超时控制, 则该方法返回 超时时间(deadline), ok (true | false) Dea...
2020-05-08 10:46:10 107
原创 golang中指针结构体和非指针结构体
结构体类型 T 和 *T的方法集定义在结构体 T上的方法属于类型 *T 的方法集中的一员,反之却不然,即定义在类型 *T 上的方法并不属于类型 T 的方法集中的一员为什么定义在类型T上的方法属于类型 *T 的方法集中的一员, 但定义在 类型 *T上的方法却不属于类型 T 的方法集合的一员对于一个指针值 p 在编译阶段对它的解引用 *p 总是合法的但是对于很多非指针值 v , 在编译...
2020-05-06 15:41:37 898
原创 golang 中的 nil
golang 中的 nil官方文档: 下列 6 大类型家族的零值为 nil, 其它类型值都不可能为 nilpointer 指针类型slice 切片类型map 字典类型channel 数据通道类型function 函数类型interface 接口类型nil 为未确定类型值, 它有很多可能类型, 但是它没有默认类型v := nil // 编译错误p := (*str...
2020-05-06 15:39:11 176
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人