Go
文章平均质量分 57
CRAJA
这个作者很懒,什么都没留下…
展开
-
[go]深入学习Go总结
一种用来表示编译语言的语法结构的树形结构,用于辅助编译器进行语法分析。是一种中间代码的特性,即每个变量只赋值一次。分为复杂指令集体系(CISC)和精简指令集体系(RISC)通过 扫描数据源文件来匹配对应的字符,跳过空格和换行等空白字符。使用 文法解析 Token,按顺序检查语法树中定义和使用的类型,确保不存在类型匹配问题。(包括结构体对接口的实现等),同时也会展开和改写一些内置函数如 改写为 ,, 等。拓展:先对元素类型进行检查,再根据操作类型()的不同更新节点类型。创建 结构,存储哈希表的键值类型原创 2023-01-14 03:02:15 · 998 阅读 · 1 评论 -
[go]浅谈sync.Map
【代码】[go]浅谈sync.Map。原创 2022-09-28 20:55:21 · 273 阅读 · 0 评论 -
[go]沙盒环境下调用支付宝扫码支付
参考于这篇博客,在此基础上进行了封装支付宝开放平台,使用支付宝扫码并成为开发者。然后进入沙盒进行测试下载沙盒版支付宝并使用沙盒账号中的买家信息进行登陆,之后使用此账号登陆的支付宝来进行扫码配置接口加签方式下载并安装密钥生成工具沙盒下除了组织/公司必须和商户账号一样,其他可以随便填,之后得到这几个证书然后进入开发者平台上传csr证书来配置接口加签方式,(使用系统默认的密钥我总是没法测试成功)之后下载这些证书用于程序中校验使用模拟测试注意异步响应地址和回调地址必须是公网可以访问到的。实际测试项目跑起来之原创 2022-06-20 17:10:47 · 1286 阅读 · 7 评论 -
gRPC项目学习总结
gRPC项目学习总结项目仓库原教程视频序列化对象为二进制和JsonGo将protobuf信息写入二进制文件从二进制文件中读取protobuf信息写入json文件并比较大小//json.go// ProtobufToJson 将protobuf文件转换为jsonfunc ProtobufToJson(message proto.Message) ([]byte, error) { marshaler := protojson.MarshalOptions{ UseEnumNum原创 2022-05-08 22:54:02 · 730 阅读 · 0 评论 -
[go]简单的RPC框架
将信息使用gob压缩,通过TCP进行传输实现远程服务调用。原教程主要分为以下几步约定数据包传输格式约定数据的加密和解密服务端对请求的回复的封装客户端对函数注册的封装项目结构├── client.go├── cmd│ ├── client│ │ └── main.go│ ├── server│ │ └── main.go│ &原创 2022-05-05 11:50:43 · 1236 阅读 · 0 评论 -
[go]常见的并发模型[泛型版]
总结于《go语言并发之道》// Bridge 通过接受传输chan的chan,将值传递给给回去(这个是按顺序读完一个channel才会选择下一个channel)func Bridge[T any](done <-chan interface{}, chanStream <-chan <-chan T) <-chan T { valStream := make(chan T) go func() { defer close(valStream) for { var原创 2022-04-20 16:58:23 · 469 阅读 · 2 评论 -
[go]使用channel实现读写锁
这里建议直接看go的锁源码,实现的太优雅了!尤其是读写锁。通过对readerCount正负的控制就实现对读写操作的控制。我这里就是简单使用channel代替信号量的传递。锁type Mutex struct { mu chan struct{}}func NewMutex() *Mutex { return &Mutex{mu: make(chan struct{}, 1)}}func (m *Mutex) Lock() { m.mu <- struct{}{}}f原创 2022-04-05 15:34:10 · 1347 阅读 · 0 评论 -
[go]简单的博客后台
A Road of Code 简易博客系统gin+mysql+redis+docker-compose部署,数据挂载在本地 已经完成了后端的基础建设,整体结构├── cmd //可执行程序入口│ ├── migrate //数据库迁移工具│ └── test //Main测试├── configs //配置文件│ ├── app //实际配置文件│ └── model //配置文件模型├── database //挂载数据库和项目的本地资源│ ├── mysql│原创 2022-04-01 13:57:18 · 1520 阅读 · 0 评论 -
[Go]固定工作池的应用
今天学长让帮忙爬个简单的图片,刚好熟悉下工作池的使用总体思路借鉴自《go核心编程》(1)构建 taskChan 并发送到 taskChan 通道中。(2)分别启动n个工作协程,不停地从 taskChan 通道中获取任务,然后将结果写入结果通道(我的这个不需要写入结果就省略了),如果任务通道被关闭,则负责向收敛结果的 goroutine 发送通知,告诉其当前 worker 已经完成工作(我这里使用waitGroup来通知)(3) 收敛结果的 goroutine 接收到所有 taskChan 经处原创 2021-10-21 14:57:01 · 103 阅读 · 0 评论 -
[Go]报数问题
有这样一个报数问题,有10个人(goroutine)一起报数 有一个裁判随机选一个地雷数 随机选数用rand就行这10个人讲选完的数字告诉裁判用channel传递 然后如果这个选数字的人正好踩雷了 则这个人出局输出m局后还有几个人存活要求是不能用要求不许用全局变量 所有的数据用channel最开始把题意没看清楚,写了一个取巧的方法每一轮生成一个随机数传给每个选手,每个选手每一轮生成一个随机数,然后自己判断自己是否被淘汰,如果没淘汰就通知裁判,而裁判此时减少一个总人数.const ( MaxN原创 2021-06-03 11:51:24 · 133 阅读 · 0 评论 -
[Golang]并发检索代码行数
先看看普通的递归搜索package mainimport ( "bufio" "fmt" "io" "os" "strings" "time")func main() { path := "D:\\" //搜索路径 key := ".go" //文件名关键字 t := time.Now() fmt.Println(myReadLine(path, key)) fmt.Println(time.Since(t))}//path指当前搜索路径,sum指path路径下代原创 2021-05-18 13:01:55 · 261 阅读 · 1 评论