目录协程解决了什么问题简介对协程的抽象如何保存上下文信息协程的调度总结协程解决了什么问题我们先从一次网络IO请求过程中的read操作为例,请求数据会先拷贝到系统内核空间中,再从操作系统的内核空间拷贝到应用程序的用户空间中。从内核空间将数据拷贝到用户空间过程中,会经历两个阶段:等待数据准备拷贝数据因为有这两个阶段,所以就有了各种网络IO的模型:同步编程:应用程 ......
164
0
0
2023-07-06
目录业务难点技术选项抽奖活动需求分析微信摇一摇得抽奖活动微博抢红包抽奖大转盘抽奖活动总结业务难点设计一个抽奖系统,这个系统并不是具体化,是抽象化,具有以下的几个难点:1、抽奖业务需要 复杂多变2、奖品类型和概率设置3、公平的抽奖和安全的发奖4、并发安全性问题 一个人不能枪多次5、高效的抽奖和发奖,提供高并发和性能6、 如何使用redies进行优化技术选项高并 ......
179
0
0
2023-07-05
本篇文章面向的读者: 已经基本掌握Go中的 协程(goroutine),通道(channel),互斥锁(sync.Mutex),读写锁(sync.RWMutex) 这些知识。如果对这些还不太懂,可以先回去把这几个知识点解决了。首先理解以下三点再进入正题:Go中的一个协程 可以理解成一个独立的人,多个协程是多个独立的人多个协程都需要访问的 ......
141
0
0
2023-07-04
目录为什么需要协程协程的本质协程如何在线程中执行GMP调度模型协程并发为什么需要协程协程的本质是将一段数据的运行状态进行打包,可以在线程之间调度,所以协程就是在单线程的环境下实现的应用程序级别的并发,就是把本来由操作系统控制的切换+保存状态在应用程序里面实现了。所以我们需要协程的目的其实就是它更加节省资源、可以在有限的资源内支持更高的并发,体现在以下三个方面 ......
154
0
0
2023-07-04
目录编写单元测试批量测试(test tables)执行测试性能测试配置计算时间断言(assertion)Go 在testing包中内置测试命令go test,提供了最小化但完整的测试体验。标准工具链还包括基准测试和基于代码覆盖的语句,类似于NCover(.NET)或Istanbul(Node.js)。本文详细讲解go编写单元测试的过程,包括性能测试及测试工具 ......
168
0
0
2023-07-04
目录1. Kafka介绍1.1 Kafka是什么1.2 Kafka的特点1.3 常用的场景1.4 Kafka中包含以下基础概念1.5 消息1.6 消息格式2. Kafka深层介绍2.1 架构介绍2.2 ⼯作流程2.3 选择partition的原则2.4 ACK应答机制2.5 Topic和数据⽇志2.6 Partition结构2.7 消费数据3. 操作Kafk ......
294
0
0
2023-06-28
目录一、Go interface 介绍interface 在 Go 中的重要性说明interface 的特性interface 接口和 reflect 反射二、Go 里面为啥偏向使用 Interface可以实现泛型编程(虽然 Go 在 1.18 之后已经支持泛型了)可以隐藏具体的实现可以实现面向对象编程中的多态用法空接口可以接受任何类型的参数三、Go int ......
201
0
0
2023-06-25
这里我主要将这些库分为两类:业务开发基础工具开发业务开发首先是业务开发,主要包含了 web、数据库、Redis 等。Gin首先是 Gin,一款 HTTP 框架,使用简单、性能优秀、资料众多;你还在犹豫选择哪款框架时,那就选择它吧,基本没错。当然和它配套的 github.com/swaggo/gin-… swagger 工具也是刚需;利用它可以生成 swagg ......
229
0
0
2023-06-24
目录Go 箴言Go 之禅代码使用 go fmt 格式化多个 if 语句可以折叠成 switch用 chan struct{} 来传递信号, chan bool 表达的不够清楚30 * time.Second 比 time.Duration(30) * time.Second&nb ......
167
0
0
2023-06-21
目录一、介绍二、安装使用xorm,注意连接的关闭!关于连接数的坑以及engine.Close()常用方法介绍三、mysql生产struct四、xorm常用操作示例--insert数据4.1 insert 增加1条数据4.2 insert 增加多条数据4.3 insert 增加不同表数据五、xorm常用操作示例--删除某行5.1 通过id删除5.2 通过whe ......
194
0
0
2023-06-19
目录Java HttpClient 超时底层原理Go Context 简介Context 是什么Context 三个特性例子Go HttpClient 的另一种超时机制超时机制简介超时机制底层原理超时机制小结Java 能实现这种超时机制吗总结Java HttpClient 超时底层原理在介绍 Go 的 HttpClient 超时机制之前,我们先看看 Java ......
181
0
0
2023-06-18
目录1. 简介(Introduction)2. 建议(Advice)3. 发生在…之前(Happens Before)3.1 重排序3.2 happens-before3.3 规则4. 同步(Synchronization)4.1 初始化(Initialization)4.2 Go协程的创建(Goroutine creation)4.3 Go协程的销毁(Go ......
202
0
0
2023-06-15
目录一、前言二、实现栈与队列基本操作2.1 栈基本操作2.2 队列基本操作三、用栈实现队列3.1 理论3.2 算法题3.3 思路3.4 代码部分四、用队列实现栈4.1 理论4.2 算法题4.3 思路4.4 使用两个队列实现4.5 优化4.6 使用一个队列实现一、前言go语言中,并没有栈与队列相关的数据结构,但是我们可以借助切片来实现栈与队列的操作;接下来我们 ......
183
0
0
2023-06-15
目录一、连接1.1 下载依赖1.2 使用MySQL驱动1.3 初始化连接1.4 SetMaxOpenConns1.5 SetMaxIdleConns二、CRUD2.1 建库建表2.2 查询2.3 单行查询2.4 多行查询2.5 插入数据2.6 更新数据2.7 删除数据三、事务3.1 什么是事务3.2 事务的ACID3.3 事务相关方法3.4 事务示例一、连接 ......
167
0
0
2023-06-14
目录1.背景1.1. 项目介绍1.2.使用方法2.源码分析2.1.项目结构2.2.数据结构2.3.API代码流程3.总结1.背景1.1. 项目介绍golang/sync库拓展了官方自带的sync库,提供了errgroup、semaphore、singleflight及syncmap四个包,本次分析singlefliht的源代码。singlefliht用于解决 ......
158
0
0
2023-06-13