目录示例initListenerserveactivateEventLoopspolling前面说了go自带的原生netpoll模型,大致的流程就是每一个新的连接都会开启一个goroutine去处理,这样的处理的过程简单,高效,充分利用了go的底层的能力。但是这里有几个问题,对于accept的时候,是否可以多个线程去accept,这样的话就不用每次有一个连接 ......
255
0
0
2023-07-16
目录反射概述反射基础 - go 的 interface 是怎么存储的反射对象 - reflect.Type 和 reflect.Value反射定律Elem 方法reflect.Value 的 Elem 方法reflect.Type 的 Elem 方法Interface 方法Kindaddressable获取类型信息 - reflect.Type概述通用的 T ......
286
0
0
2023-07-16
目录概述基本使用Java 中的 interface(接口)go 中的 interface(接口)go interface 的优势空接口如何使用 interface{} 类型的参数?类型断言另外一种类型断言方式switch...case 中判断接口类型编译器自动检测类型是否实现接口一种简单的解决方法类型转换与接口断言一个类型可以实现多个接口接口与 nil 不相 ......
260
0
0
2023-07-15
目录1.gorm介绍1.1介绍1.2安装2.使用2.1创建表2.2.添加数据2.3.查询数据2.4更新数据2.5删除数据2.6执行原生sql3.一对一3.1创建表3.2多态关联3.3外键约束4.一对多5.多对多6.获取多表数据1.gorm介绍1.1介绍全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many, ......
287
0
0
2023-07-12
目录前言你可以收获正文内容脉络基础知识实现思路目标规划步步为营1、数据流2、数据结构3、初始化优先级队列对象4、生产者推送任务5、将推送任务加到优先级队列中6、消费者消费队列7、完整代码发散思维小结前言在数据结构中,队列遵循着FIFO(先进先出)的规则。在此基础上,人们引申出了“优先级队列”的概念。优先级队列,是带有优先级属性的队列,所有的队列元素按照优先级 ......
291
0
0
2023-07-11
目录反射反射类型Type指针结构体反射值Value结构体空与有效性判断修改值函数调用反射三定律interface底层结构ifaceeface反射Go语言提供了reflect 包来访问程序的反射信息;定义了两个重要的类型Type和Value:reflect.TypeOf:获取任意值的类型对象(reflect.Type);reflect.ValueOf:获得值的 ......
288
0
0
2023-07-09
目录跳跃表介绍跳跃表的实现跳跃表的结构创建跳跃表跳跃表的插入和删除跳跃表的排名操作跳跃表的区间操作完整实现跳跃表介绍跳跃表(skiplist)是一种有序的数据结构,它通过建立多层"索引",从而达到快速访问节点的目的. 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。下面是一个跳表结构的示意图,其实跳表就是一个二 ......
267
0
0
2023-07-07
目录协程解决了什么问题简介对协程的抽象如何保存上下文信息协程的调度总结协程解决了什么问题我们先从一次网络IO请求过程中的read操作为例,请求数据会先拷贝到系统内核空间中,再从操作系统的内核空间拷贝到应用程序的用户空间中。从内核空间将数据拷贝到用户空间过程中,会经历两个阶段:等待数据准备拷贝数据因为有这两个阶段,所以就有了各种网络IO的模型:同步编程:应用程 ......
294
0
0
2023-07-06
目录业务难点技术选项抽奖活动需求分析微信摇一摇得抽奖活动微博抢红包抽奖大转盘抽奖活动总结业务难点设计一个抽奖系统,这个系统并不是具体化,是抽象化,具有以下的几个难点:1、抽奖业务需要 复杂多变2、奖品类型和概率设置3、公平的抽奖和安全的发奖4、并发安全性问题 一个人不能枪多次5、高效的抽奖和发奖,提供高并发和性能6、 如何使用redies进行优化技术选项高并 ......
292
0
0
2023-07-05
本篇文章面向的读者: 已经基本掌握Go中的 协程(goroutine),通道(channel),互斥锁(sync.Mutex),读写锁(sync.RWMutex) 这些知识。如果对这些还不太懂,可以先回去把这几个知识点解决了。首先理解以下三点再进入正题:Go中的一个协程 可以理解成一个独立的人,多个协程是多个独立的人多个协程都需要访问的 ......
245
0
0
2023-07-04
目录为什么需要协程协程的本质协程如何在线程中执行GMP调度模型协程并发为什么需要协程协程的本质是将一段数据的运行状态进行打包,可以在线程之间调度,所以协程就是在单线程的环境下实现的应用程序级别的并发,就是把本来由操作系统控制的切换+保存状态在应用程序里面实现了。所以我们需要协程的目的其实就是它更加节省资源、可以在有限的资源内支持更高的并发,体现在以下三个方面 ......
262
0
0
2023-07-04
目录编写单元测试批量测试(test tables)执行测试性能测试配置计算时间断言(assertion)Go 在testing包中内置测试命令go test,提供了最小化但完整的测试体验。标准工具链还包括基准测试和基于代码覆盖的语句,类似于NCover(.NET)或Istanbul(Node.js)。本文详细讲解go编写单元测试的过程,包括性能测试及测试工具 ......
282
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 ......
496
0
0
2023-06-28
目录一、Go interface 介绍interface 在 Go 中的重要性说明interface 的特性interface 接口和 reflect 反射二、Go 里面为啥偏向使用 Interface可以实现泛型编程(虽然 Go 在 1.18 之后已经支持泛型了)可以隐藏具体的实现可以实现面向对象编程中的多态用法空接口可以接受任何类型的参数三、Go int ......
319
0
0
2023-06-25
这里我主要将这些库分为两类:业务开发基础工具开发业务开发首先是业务开发,主要包含了 web、数据库、Redis 等。Gin首先是 Gin,一款 HTTP 框架,使用简单、性能优秀、资料众多;你还在犹豫选择哪款框架时,那就选择它吧,基本没错。当然和它配套的 github.com/swaggo/gin-… swagger 工具也是刚需;利用它可以生成 swagg ......
363
0
0
2023-06-24