go从入门到精通
完整的体系教程
西直门三太子
知是行之始,行是知之成
展开
-
Go sync.Map
首先,这个设计有点像二级缓存,其次基本上所有方法都有双检查(第一次不加锁,第二次加锁),从这两方面来看,sync.map对读多写少的场景比较友好。原创 2023-11-02 18:25:16 · 283 阅读 · 0 评论 -
Go 常用加密算法
【代码】Go 常用加密算法。原创 2023-10-30 22:23:58 · 199 阅读 · 0 评论 -
Go 反射
【代码】Go 反射。原创 2023-10-26 18:04:05 · 340 阅读 · 0 评论 -
Go sync.once
【代码】Go sync.once。原创 2023-10-01 16:16:30 · 344 阅读 · 0 评论 -
Go sync.Cond 原理
sync.Cond基本很少使用,应为大部分都能使用channel代替sync.Cond通常是基于sync.Mutex扩展的主要就四个方法newCond(l locker) 创建CondWait() 阻塞等待Signal() 唤醒其中一个Broadcast() 唤醒全部。原创 2023-09-23 15:12:29 · 108 阅读 · 0 评论 -
Go sync.waitGroup
下面的代码是基于 go1.20 版本整体流程还是比较简单的Add 和 Done 会对任务进行计数增减,当计数任务全部完成后对 wait的阻塞进行唤醒有等待的才会去唤醒Wait 会根据 计数任务来决定是否进行阻塞等待如果计数任务 > 0,进行等待 & 等待计数 +1计数任务等于 0,不等待通过查看上面的panic 代码块,我们知道不建议 在 wg.Add + wg.Wait 后再 进行 wg.Add。原创 2023-09-11 21:16:00 · 345 阅读 · 0 评论 -
Go 锁扩展
【代码】Go 锁扩展。原创 2023-09-10 12:53:33 · 287 阅读 · 0 评论 -
Go 锁演进
【代码】Go 锁演进。原创 2023-09-09 16:41:41 · 298 阅读 · 0 评论 -
Golang go mod 包管理
【代码】Golang go mod 包管理。原创 2023-08-12 06:00:00 · 283 阅读 · 0 评论 -
Golang 的面向对象
【代码】Golang 的面向对象。原创 2023-08-10 20:24:14 · 457 阅读 · 0 评论 -
Golang 生成可下载CSV文件
【代码】Golang 生成可下载CSV文件。原创 2023-08-07 23:08:35 · 527 阅读 · 0 评论 -
Golang map 常用方法
由于map是无序的,所以排序成 slice 返回,且都使用泛,代码只是示例,省略了错误判断。原创 2023-08-06 16:09:39 · 616 阅读 · 1 评论 -
Golang 切片 常用方法
【代码】Golang 切片 常用方法。原创 2023-08-03 17:46:57 · 1025 阅读 · 0 评论 -
Golang 执行 shell
这里使用 os/exec 包,通过 exec.command 创建 cmd命令,最后通过 cmd.run 执行命令。原创 2023-07-25 17:16:52 · 562 阅读 · 0 评论 -
Golang字符串过滤
【代码】Golang字符串过滤。原创 2023-07-24 19:24:43 · 573 阅读 · 0 评论 -
Golang 字符串的分割_合并_截取
【代码】Golang 字符串的分割_合并_截取。原创 2023-07-22 14:32:43 · 935 阅读 · 0 评论 -
Golang 字符的匹配和统计
【代码】Golang 字符的匹配和统计。原创 2023-07-22 00:51:33 · 419 阅读 · 0 评论 -
CSV操作
【代码】CSV操作。原创 2023-07-14 09:57:45 · 66 阅读 · 0 评论 -
golangci-lint 使用
这里我使用V1.53.2版本,是比较新的,因为我要使用泛型。原创 2023-07-10 16:01:15 · 1139 阅读 · 0 评论 -
Golang switch 进阶
违反了 一,因为 byte 本质就是 unit8 , 编译不通过。三个case中都包含2,但是由于前两个case是表达式。是常量,会尝试进行自动类型转换后,再和。**bad(编译不通过) : **, 这个是可以正常运行的。非接口类型,编译不通过。原创 2023-06-07 17:49:41 · 904 阅读 · 1 评论 -
Golang 不可寻址
不可寻址: 找不到内存地址找不到内存地址就无法调用带指针的方法。原创 2023-05-22 20:44:06 · 133 阅读 · 0 评论 -
Go常用设计模式
代理模式对被代理的对象进行访问控制,把主机看做一个类,那么路由器就是代理者,代理者可以决定是否对其开放网络,和获取主机网络的具体信息。工厂方法 提供创建实例的方法,由外部决定是否创建,或者创建的(规格),适用于多规格的产品,比较灵活。主要是对算法(策略)的封装,根据不同场景使用不同的策略。等我感觉要死了再吃,就是我确定要用到,才会去实例化。将共同点抽离生成模板类,可变点强制子类去实现。不管什么方式,都应该提供一个最佳配置的生成。和简单工厂的区别在于其返回的是接口类型。饿的要死就先吃,上来就给你初始化。原创 2023-04-30 01:11:30 · 767 阅读 · 0 评论 -
如何写出好的Go项目
老生常谈,还是从三个方面讲Go应用项目管理项目文档。原创 2023-04-25 23:12:24 · 551 阅读 · 0 评论 -
golang select 用法
select 是用来配合channel使用的。原创 2023-04-14 16:12:05 · 681 阅读 · 0 评论 -
close channel
【代码】close channel。原创 2023-04-13 11:39:15 · 72 阅读 · 0 评论 -
goframe Swagger 不显示调试功能
如果要使用 /swagger 这个路径,需要关闭自带的 swagger,自带的级别比你的高,导致无法访问到你的swagger,除非你改名。原创 2023-02-23 16:20:33 · 461 阅读 · 0 评论 -
go mod 安装 gf/cmd 问题
使用编译安装解决,在$GOPATH/src/github.com目录中进行git clone,然后进入其gf/cmd/gf 目录进行 go install。最终在bin下生成gf。原创 2023-02-21 15:45:48 · 210 阅读 · 0 评论 -
error 的封装和解封
【代码】error 的封装和解封。原创 2023-02-17 10:18:06 · 70 阅读 · 0 评论 -
singleflight
【代码】singleflight。原创 2023-02-10 18:02:55 · 68 阅读 · 0 评论 -
Golang grpc metadata机制
grpc metadata 元数据,存入content,需要时再从content获取数据,比较经典的就是用来传递token。原创 2023-02-02 11:55:47 · 323 阅读 · 0 评论 -
Golang proto 小技巧
【代码】Golang proto 小技巧。原创 2023-02-01 10:31:55 · 533 阅读 · 0 评论 -
Golang proto 类型
常见的基本类型就不讲了。原创 2023-01-05 16:02:21 · 351 阅读 · 0 评论 -
Golang base64
【代码】Golang base64。原创 2023-01-03 17:38:43 · 1399 阅读 · 0 评论 -
Golang grpc 双向流模式
由于要实现双向流,所以出参和入参都需要stream标识streampb";} //流需要stream 标识 service Greeter {}原创 2022-12-18 18:50:49 · 753 阅读 · 0 评论 -
Golang grpc 服务端流模式
流模式需要stream标识,由于实现服务端流效果,所以返回结果使用stream标识streampb";} //流需要stream 标识 service Greeter {}原创 2022-12-17 17:42:35 · 412 阅读 · 0 评论 -
Golang rpc 客户端流模式
这里实现的是客户端流,所以给入参stream标识streampb";} //流需要stream 标识 service Greeter {}原创 2022-12-15 18:24:57 · 148 阅读 · 0 评论 -
Golang protobuf
【代码】Golang protobuf。原创 2022-12-12 15:24:28 · 297 阅读 · 0 评论 -
Golang rpc传输协议替换
客户端使用postman进行http访问服务端协议替换为http。原创 2022-12-11 23:03:42 · 365 阅读 · 0 评论 -
Golang 指针传递的常用方式
在rpc中,客户端需要向服务调用中传入指针类型,下面介绍三种常用的传递方式。原创 2022-12-10 15:25:57 · 378 阅读 · 0 评论 -
Golang rpc编码协议替换
接下将rpc自带的Gob编码协议替换为json编码协议。原创 2022-12-08 19:58:20 · 357 阅读 · 0 评论