加载中
c代码打包so动态链接库 & cgo调用so & 类型转换

感觉cgo挺多坑,需要先做个测试项目来确定基础问题如何解决 将记录如何做动态链接库、cgo与so动态链接库如何交互、两边的数据如何转换 1. 目录结构 sotest ├── go.mod // mod叫test ├──...

2022/08/17 15:18
794
gopacket 自定义工业协议S7并解析

s7协议详情介绍:siemens_s7协议 目录结构 s7 ├── cotp │ └── cotp.go ├── s7Comm │ └── s7Comm.go ├── s7_test.go └── tpkt └── tpkt.go 协议层级:tcp-tpkt-cotp-s...

2022/08/08 10:57
773
gopacket 解析工业协议 modbus 过程记录

gopacket 解析工业协议 modbus 过程记录 由上一篇gopacket 解析工业协议 modbusTCP 过程记录解决了一些基础问题,这一篇开始正式模拟modbus协议本身的数据结构 1. 分析 Modbus协议格式 modb...

2022/07/28 15:31
446
gopacket解析工业协议modbusTCP过程记录

问题记录 gopacket未能识别其"支持的"协议——modbus: 在windows用Modbus Slave仿真,golang写逻辑访问modbus设备并读取数据,wireshark抓到包,用gopacket分析,没有将协议匹配成其定义好的...

2022/07/25 15:26
3.1K
dubbo3 用 grpc 协议与 go 项目通信【go部分】

go-zero(grpc client) -> java-dubbo(grpc server) 这里用go-zero项目做个示例,主要完成的事左侧部分: demoGo示例 环境信息: go-zero v1.3.4 go1.17.11 darwin/arm64 grpc v1.46.2 proto...

go asynq 异步任务(延迟触发)简单案例及奇怪的错误

异步任务案例 1.1. task/task.go 定义初始化任务、处理任务的方法 package task import ( "context" "encoding/json" "fmt" "time" "github.com/hibiken/asynq" ) const ( TypeExample = "...

2022/06/14 19:59
4.9K
panic: rpc error: code = Unavailable desc = failed to receive server preface within timeout

http服务调用一个开源的rpc服务(dtm)时候遇到这个错误,待解决

2022/06/09 13:35
1.4K
用ants协程池、sync.Map、HMSet优化逻辑

用ants协程池管理协程,并发执行自定义方法,并将结果并发存储到sync.Map,最后再将sync.Map转换为普通map,用redis的HMSet批量存储。 之前的方案是:野生goroutine用带缓存的channel控制并发...

go rocketmq 并发订阅启动不同topic的多个消费者造成的竞态问题

由于某些原因,需要在一个服务中,同时启动多个rocketmq的消费者,订阅消费不同的topic并分流到不同服务; 在main方法 中用goroutine并发订阅不同的topic并启动,造成了竞态问题: 代码是这样...

2022/06/09 10:05
1.3K
go 用策略模式优化switch case逻辑实践

背景 需要对企业微信解析出的工单数据进行分流,使其进入不同的处理逻辑; 最初的写法是使用switch-case语句,此时工单数目并不多,处理逻辑也都写在同一文件下; 如果要进行新增处理逻辑的话...

2022/05/13 23:03
633
gorm go-zero废弃备份

svcContext // InitMysqlClient 初始化mysql客户端 func InitMysqlClient(c config.MysqlConf) (engine *gorm.DB) { sqlDB, err := sql.Open("mysql", c.DataSource) if err != nil { panic...

2022/05/10 01:37
453
etcd、etcdmanager、go-zero rpc、grpcui

操作系统mac 作用:备份下操作 etcd # 安装 brew install etcd 启动 brew services start etcd 停止 brew services stop etcd 查看当前应用列表 brew services list 如果 etcd 状态是 error ...

2022/05/02 17:33
1.3K
go-zero集成pprof做性能分析

背景 在go项目中提前引入pprof是一个好习惯,可以极大地方便后续的debug 找到一个仓库 https://github.com/xintai777/gozeropprof 模仿的应该是go-zero引入prometheus agent的逻辑 为了防止个...

2022/04/29 01:08
1.9K
go 参数传递规则(值拷贝)

值拷贝 go只有一种参数传递规则:值拷贝 函数传参 接口赋值 值拷贝但修改了原变量: 直接传指针(指针与指针副本地址指向相同) 参数是复合数据类型(内部有指针 chan map slice interface) 代码...

2022/04/13 00:36
368
go-zero asynq定时任务最佳实践

工具准备和注意点 1.1. asynq的cli工具 # 安装 go get -u github.com/hibiken/asynq/tools/asynq 分析任务详情 asynq stats 每3秒运行一次asynq stats watch工具需要自己安装 watch -n 3 asy...

2022/04/06 16:43
1.1W
go-zero 自定义路由拦截功能 非法请求直接返回403

背景 因为目前写的服务就只有非常单一的功能,测试服测试时候发现有很多来自外部机器的扫描,于是打算直接拒绝访问 代码 package main import ( "项目名/internal/config" "项目名/internal...

2022/04/01 21:03
1.8K
golang gin框架 http: invalid Read on closed Body错误

错误 http: invalid Read on closed Body http: wrote more than the declared Content-Length 错误1 http: invalid Read on closed Body package main import ( "fmt" "github.com/gin-gon...

2022/03/29 16:44
5.2K
golang etcd实践 "go.etcd.io/etcd/client/v3"

背景 服务多副本 => 多进程 => 需要用分布式锁解决 多进程对同一份资源的竞争问题 此处就是即使同一个服务有多个副本,也不会每个副本都执行一遍相同的定时任务,只有获取到分布式锁的那个副...

2022/03/29 11:22
2.1K
golang ants协程池实践

代码 因为gin底层http包对于每一个请求都开启一个协程处理,并且有完善的垃圾回收机制,因此在gin上再封装ants协程池是画蛇添足的。因此接下来将在普通任务中用pprof查看案例中协程数目的变化...

2022/03/28 21:14
2.3K
golang gin引入pprof

gin引入pprof go get "github.com/gin-contrib/pprof" 注册路由到gin服务器: pprof.Register(Router, "/test/debug") main.go package main import ( "fmt" "github.com/gin-contrib/pprof"...

2022/03/26 23:58
750

没有更多内容

加载失败,请刷新页面

返回顶部
顶部