目录1. 什么是 Golang 通道2. Golang 通道的基本语法3. Golang 通道的缓冲机制3.1 有缓冲通道3.2 无缓冲通道4. Golang 通道的超时和计时器4.1 超时机制4.2 计时器机制5. Golang 通道的传递6. 单向通道7. 关闭通道8. 常见的应用场景8.1 同步数据传输8.2 协调多个 goroutine8.3 控制并
......
278
0
0
2023-05-15
目录1、FSM简介1.1 有限状态机的定义1.2 Go中的FSM2、github.com/looplab/fsm 如何使用2.1 fsm 基础使用2.2 fsm 中 Action 何时执行2.3 较为完整的例子1、FSM简介1.1 有限状态机的定义有限状态机(Finite State Machine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转
......
352
0
0
2023-05-14
目录获取锁未锁——直接获取在不饥饿且旋的不多的情况下,尝试自旋自旋究竟在做什么呢?计算期望状态尝试达成获取锁期望考虑几种场景释放锁只有已锁——直接释放慢释放Mutex是Golang常见的并发原语,不仅在开发过程中经常使用到,如channel这种具有golang特色的并发结构也依托于Mutex从而实现type Mutex struct {
// 互斥锁的
......
299
0
0
2023-05-14
目录正文感知 Pod取出 Pod调度 Pod正文为了深入学习 kube-scheduler,本系从源码和实战角度深度学 习kube-scheduler,该系列一共分6篇文章,如下:kube-scheduler 整体架构初始化一个 scheduler本文: 一个 Pod 是如何调度的如何开发一个属于自己的scheduler插件开发一个 prefilter 扩展
......
239
0
0
2023-05-13
目录引言内容介绍字符串数据结构字符串会分配到内存中的哪块区域编译期即可确定的字符串如果我们创建两个hello world字符串, 他们会放到同一内存区域吗?运行时通过+拼接的字符串会放到那块内存中字面量是否会在编译器合并当我们用+连接多个字符串时, 会发生什么rawstring函数go中字符串是不可变的吗, 我们如何得到一个可变的字符串[]byte和stri
......
257
0
0
2023-05-13
目录1. 简介2. GMP之间的绑定关系2.1 M和P的关系2.2 P和G的关系2.3 总结3.Sync.Pool与GMP模型3.1 sync.Pool性能问题3.2 基于GMP模型的改进3.3 能不能完全不加锁4. sync.Pool初步实现4.1 sync.Pool结构体定义4.2 Put方法4.3 Get方法4.4 总结5. sync.Pool实现优化
......
306
0
0
2023-05-12
目录什么是原子操作?原子操作的使用场景是什么?原子操作是怎么实现的?x86 LOCK 的时候发生了什么原子操作有什么特征?go 里面有哪些原子操作?增减(Add)比较并交换(CompareAndSwap)载入(Load)存储(Store)交换(Swap)原子操作任意类型的值 - atomic.Valueatomic.Value 源码分析Load - 读取St
......
264
0
0
2023-05-07
目录为什么需要连接池连接池设计GetPut总结开源实现Get:Put:sql.DB为什么需要连接池如果不用连接池,而是每次请求都创建一个连接是比较昂贵的,因此需要完成3次tcp握手同时在高并发场景下,由于没有连接池的最大连接数限制,可以创建无数个连接,耗尽文件描述符连接池就是为了复用这些创建好的连接连接池设计基本上连接池都会设计以下几个参数:初始连接数:在初
......
339
0
0
2023-05-06
目录1、通过通信共享2、Goroutines3、Channels3.1 Channel都有哪些特性3.2 channel 的最佳实践4、Channels of channels5、并行(Parallelization)6、漏桶缓冲区(A leaky buffer)1、通过通信共享并发编程是一个很大的主题,这里只提供一些特定于go的重点内容。在许多环境中,实现
......
310
0
0
2023-05-06
在软件开发中,设计模式是一种被广泛应用的编程思想。设计模式是一种可重用的解决方案,它可以帮助我们解决一些常见的编程问题,提高代码的可读性、可维护性和可扩展性。本文将为大家介绍23种设计模式,并提供golang代码示例,希望能够帮助大家更好地理解和应用设计模式。工厂方法模式(Factory Method Pattern)工厂方法模式是一种创建型模式,它提供了一
......
329
0
0
2023-05-03
目录Golang的接口是什么什么情况下要用接口实战案例多态的例子定义通用方法的例子松耦合的例子实现插件化架构的例子Golang的接口是什么在 Golang 中,接口是一种类型,它是由一组方法签名组成的抽象集合。接口定义了对象应该具有的行为,而不关心对象的具体实现。实现接口的对象必须实现接口定义的所有方法,这样才能称为该接口的实现。什么情况下要用接口定义通用的
......
329
0
0
2023-05-02
目录1. 简介2. 问题引入2.1 问题描述2.2 解决方案3. 基本使用3.1 使用方式3.2 使用例子 4.使用注意事项4.1 需要注意放入对象的大小4.2 不要往sync.Pool中放入数据库连接/TCP连接5. 总结1. 简介本文将介绍 Go 语言中的 sync.Pool并发原语,包括sync.Pool的
......
358
0
0
2023-05-02
一、chatGPT与OpenAIChatGPT 是 OpenAI 公司的一个技术产品,chatGPT使用了 GPT(Generative Pre-trained Transformer)技术,是一个用于对话生成的预训练语言模型,OpenAI还有很多其他模型。(来自:chatGPT的解释)OpenAI是一家人工智能研究公司,它开发并提供了一系列人工智能技术和产
......
478
0
0
2023-04-30
转载于:scriptrunz.com/zh-cn/goquery/goquery 是什么goquery 是用 Go 实现的一个类似于 jQuery 的库,它封装了 Go 标准库 net/html 和 CSS 库 cascadia,提供了与 jQuery 相近的接口。Go 著名的爬虫框架 colly 就是基于 goquery 实现的。goquery 能用来干什
......
313
0
0
2023-04-30
目录快速上手 CGO 程序基于 C 标准库实现最简单的 CGO 程序基于自己写的 C 函数构建 CGO 程序模块化以上例子用 Go 实现 C 函数并导出用 C 接口的方式实现 Go 编程CGO 的主要基础参数import "C" 语句说明#cgo 语句说明为什么要引入 CGO突破 Go 创建切片的内存限制方便在 Go 语言中接入使用 C/C++的软件资源CG
......
278
0
0
2023-04-29