目录1. channel 底层结构2. channel 的创建3. channel 的发送流程4. channel 的接收流程5. channel 使用注意事项以下源码都摘自 golang 1.16.15 版本。1. channel 底层结构Golang 中的 channel 对应的底层结构为 hchan 结构体(channel的源码位置在Golang包的
......
292
0
0
2023-06-05
目录一、背景二、官网代码示例三、锁的实现一、背景在kubernetes的世界中,很多组件仅仅需要一个实例在运行,比如controller-manager或第三方的controller,但是为了高可用性,需要组件有多个副本,在发生故障的时候需要自动切换。因此,需要利用leader election的机制多副本部署,单实例运行的模式。应用程序可以使用外部的组件比
......
366
0
0
2023-06-05
目录Hpack 是啥HPACK 原理如何编码举个编码🌰HPACK 实现遇到的坑Hpack 是啥Hpack 是 HTTP2 的头部压缩算法。在 HTTP1 中,每次传输都会有大量的 Header 携带,我们可以拿一个实际的请求来看,如图一:图一:请求 header这里面 Header 很多是请求共性的,比如 method: POST,就是 post 请求的 h
......
325
0
0
2023-06-03
目录背景概述架构设计理念面向接口设计会话 Session消息 Message协议 Proto编码 Codec连接 Socket有机的组合插件 Plugin组件未来展望背景DMicro 诞生的背景,是因为我写了 10 来年的 PHP,想在公司内部推广 Go, 公司内部的组件及 rpc 协议都是基于 swoole 
......
371
0
0
2023-06-03
目录Go素数筛选分析1. 素数筛选介绍2. 代码分析3. 代码验证4. 总结Go素数筛选分析1. 素数筛选介绍学习Go语言的过程中,遇到素数筛选的问题。这是一个经典的并发编程问题,是某大佬的代码,短短几行代码就实现了素数筛选。但是自己看完原理和代码后一脸懵逼(仅此几行能实现素数筛选),然后在网上查询相关资料,依旧似懂非懂。经过1天的分析调试,目前基本上掌握了
......
271
0
0
2023-06-02
我们平时在开发中肯定避不开的一个问题是如何在不可靠的网络服务中实现可靠的 网络通信 ,其中 http 请求重试是经常用的技术。但是 Go 标准库 net/http 实际上是没有重试这个功能的,所以本篇文章主要讲解如何在 Go 中实现请求重试。 概述 一般而言,对于网络通信失败的处理分为以下几步: 感知错误。通过不同的错误码来识别不同的错误,在H
......
282
0
0
2023-06-01
目录前言Improvements1. Genesis (Runes)2. Bytes3. Remainder4. Masking5. Masking Improved6. Source7. Utilizing strings.Builder8. "Mimicing" strings.Builder with package unsafeBenchmarkQ:
......
275
0
0
2023-05-31
目录1.简介2.为什么需要关闭goroutine2.1 协程的生命周期2.2 协程的终止条件2.3 为什么需要主动关闭goroutine3.如何优雅得关闭goroutine3.1 传递关闭终止信号3.2 协程内部捕捉终止信号3.3 回收协程资源3.4 关闭goroutine示例4. 需要主动关闭协程运行的常见场景4.1 协程在执行一个不断重复的任务5.总结1
......
353
0
0
2023-05-28
目录1.简介2.为什么需要关闭goroutine2.1 协程的生命周期2.2 协程的终止条件2.3 为什么需要主动关闭goroutine3.如何优雅得关闭goroutine3.1 传递关闭终止信号3.2 协程内部捕捉终止信号3.3 回收协程资源3.4 关闭goroutine示例4. 需要主动关闭协程运行的常见场景4.1 协程在执行一个不断重复的任务5.总结1
......
463
0
0
2023-05-28
目录引言并发与并行GoroutinesChannels带缓冲的ChannelsSelect语句超时处理使用WaitGroup实现同步使用互斥锁保护共享资源并发编程的最佳实践结论引言Go语言,又称为Golang,是一种静态类型、编译型的开源编程语言,由Google的Robert Griesemer,Rob Pike和Ken Thompson共同设计。自2007
......
294
0
0
2023-05-26
目录1. 正则表达式语法2. 创建正则表达式对象3. 字符串匹配4. 字符串替换5. 捕获组7. 标志(Flags)8. 常见正则表达式技巧8.1 使用限定符8.2 使用字符类8.3 使用元字符8.4 使用捕获组8.5 使用反向引用8.6 使用锚点8.7 使用修饰符9. 总结正则表达式是一种强大的模式匹配工具,能够在文本中进行灵活的搜索和替换操作。本文将介绍
......
437
0
0
2023-05-26
目录动手实现一个分布式注册中心日志服务log/Server.golog/Client.go主启动程序LogService服务启动与注册service/service.go服务注册与发现registry/client.goregistry/registration.goregistry/server.go动手实现一个分布式注册中心以一个日志微服务为例,将日志服
......
300
0
0
2023-05-25
目录Golang之HTTP路由设计动手编写自己的路由framework/core.goframework/group.go如何实现动态路由改造一下core.go验证Golang之HTTP路由设计为什么要设计路由规则,路由规则是HTTP的请求按照一定的规则 ,匹配查找到对应的控制器并传递执行的逻辑!自己编写路由的话需要注意一下一共有几种路由!一种是支持原生的r
......
272
0
0
2023-05-25
目录1. JSON 简介2. Golang 中的 JSON 编码2.1 结构体的 JSON 编码2.2 切片和映射的 JSON 编码3. Golang 中的 JSON 解码3.1 JSON 解码为结构体3.2 JSON 解码为切片和映射4. 自定义编码与解码5. JSON 标签选项6. 处理嵌套结构体7. 处理非导出字段8. 处理空值9. 处理循环引用10.
......
264
0
0
2023-05-24
目录前言goroutine(Go 协程)channel(通道)channel 的初始化channel的关闭waitGroup 的使用爬虫爬虫配置爬虫数据开启并行爬取某个链接爬取某个链接的电影数据main 函数开启爬虫总结前言Golang 是一种并发友好的语言,使用 goroutines 和 channels 可以轻松地实现多线程爬虫。具体地说,实现的是多协程
......
356
0
0
2023-05-24