cwgo 检测数据竞争 raceGo(从v1.1开始)具有内置的数据竞争检测器,可以使用它来检测潜在的数据竞争。 使用: 运行时检查竟态的命令:go run -race main.go 构建时检查竟态的命令:go build -race main.go 测试时检查竟态的命令:go test -race main.go 总结一下,其实就是race选项其实就是检测数据的安全性的,同时读写(而不是同时读,同时写),等情况。
cwgo 不一样的grpc入门示例之所以说不一样,是因为在这里你看不到.proto文件,当然也无需生成任何代码 之所以这么神奇是我用了buf,它托管了我的.proto文件,并且自动生成了相关代码,详情请移步:https://www.cuiwei.net/p/1679512807 服务端极简示例 下面的示例提供了一个AdminLogin服务 server.go package main import ( "context" blogv1 "go.buf.build/grpc/go/cuiwei/blog/admin/v1" "google.golang.org/grpc" "net" ) type blogServi...
cwAndroid 对接 Google AdMob SDK首先,登陆 http://admob.google.com/,创建广告单元 无论你选择的是哪个类型的广告,第一步都需要初始化sdk,参考: Google 移动广告 SDK 指南 开屏广告 https://developers.google.com/admob/android/app-open-ads?hl=zh-CN https://github.com/googleads/googleads-mobile-android-examples/tree/main/java/admob/AppOpenExample 自适应横幅广告 https://developers.google.com/ad...
cwStack Overflow 离线版本的使用方法 近日,Stack Overflow 与 Kiwix 合作,推出一项名为「Overflow Offline」的新项目,以确保其数据集的最新版本可供需要的人轻松使用 下载离线版本 访问 https://library.kiwix.org/?lang=&q=Stack 就是太大了,80G,让人望而却步 下载Kiwix https://www.kiwix.org/en/download/ 全平台支持 使用 参考 https://stackoverflow.blog/2022/10/20/introducing-the-overflow-offline-project/ https://www.k...
cw微服务链路追踪之Jaeger在一个微服务分布式架构的系统中,可能存在复杂的、深层的层层服务调用关系,大致如下图 如果某个环节出问题,在海量的日志中定位问题是很痛苦的,于是就有了调用链追踪系统,比较有名的是:Jaeger和Zipkin。本篇文章主要介绍Jaeger Jaeger的组成部分 Instrumentation SDKs: 集成到应用程序和框架中以捕获跟踪数据的库。 从历史上看,Jaeger 项目支持使用各种编程语言编写的自己的客户端库。 它们现在被弃用,取而代之的是 OpenTelemetry Jaeger Agent: Jaeger 代理是一个网络守护程序,用于侦听通过 UDP 从 Jaeger 客户端接收...
cwgRPC调试工具推荐在介绍工具之前先说一个情况,就是你用某个工具调试时,会发现,有的项目无需手动导入.proto文件,工具就能列出所有method,有些则不行。这是因为项目注册了反射,先看下怎么注册反射 就是这样,下面开始介绍工具 Postman 这个我觉得是最好的 gRPC UI gRPC的交互式Web用户界面,类似postman 安装 go install github.com/fullstorydev/grpcui/cmd/grpcui@latest 使用 # no TLS cuiwei@weideMacBook-Pro ~ % grpcui -plaintext localhost:9087 gRP...
cwgo-zero: not matching destination to scan在用go-zero写一个通过api调用grpc的一个功能 问题还原 错误的返回值 func (m *customCwFlashModel) FindListByPage(ctx context.Context, page, max int64) (resp []*flash.AdminFlashDetailResponse, err error) { 。。。 } 这是一个查询flash列表的自定义模型,flash的定义有三处,分别是model部分、api部分和grpc部分 model部分 这是go-zero通过sql自动生成的 CwFlash struct { Id ...
cwgo mutex的模式mutex 有正常模式和饥饿模式 mutex是golang提供的基础并发原语,可以帮助我们处理多goruntine并发访问共享资源的问题。每个goruntine都要再获取到锁之后才能操作共享资源,完成操作释放锁,保证了共享资源的读写安全性。 但这种方式也可能带来一些问题:一些悲惨的goruntine一直获取不到锁,导致业务逻辑不能继续完整执行,这种问题被称为"饥饿问题" 正常模式 当前的mutex只有一个goruntine来获取,那么没有竞争,直接返回。 新的goruntine进来,如果当前mutex已经被获取了,则该goruntine进入一个先入先出的waiter队列,在mutex被释放后...
cw简述TCP三次握手和四次挥手三次握手 是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。 可以想象两人用对讲机交谈。 A:我准备好了你准备好了吗,收到请回答。 B:收到收到,我也准备好了,收到请回答。 A:收到收到 四步挥手 客户端:“兄弟,我这边没数据要传了,咱关闭连接吧。” 服务端:“收到,我看看我这边有木有数据了。” 服务端:“兄弟,我这边也没数据要传你了,咱可以关闭连接了。” 客户端:“好嘞。” 为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 而关闭连接时,当收到...
cwgin 使用 Json Web Token(JWT)之前的token验证借助了redis,如果用jwt就不需要了 中间件 cat middlewares/jwt.go package middlewares import ( "enterprise-api/app/models" "enterprise-api/core" "github.com/gin-gonic/gin" ) func JWTAuth(role string) gin.HandlerFunc { return func(c *gin.Context) { signToken := c.Request.Header.Get("Authorization") ...