Gilab CI/CD遇到的一些问题汇总 博主的gitlab环境为:gitlab gitlab-ee:14.6.0-ee.0 采用docker部署ci/cd:采用gitlab runner 和docker excutor方式仅为博主遇到的一些问题记录,不一定适合你的环境,请谨慎操作。
RTMP协议学习 文章目录一、 RTMP关键概念1.1 什么是Message和Chunk?1.2 Message1.3 Chunk1.3.1 Basic Header1.3.2 Message Header二、 RTMP协议的分析2.1 握手过程三、RTMP协议的代码实现目前国内比较常见的三种直播协议 RTMP、HLS、HTTP-FLV,其中rtmp是Adobe公司为Flash播放器和服务器之间提供音视频数据传输服务而设计的应用层私有协议,也是目前各大云厂商直线直播业务所公用的基本直播推拉流协议。本文主要是学习rtmp(实
Note on worker pools in Go Goroutines are cheap. Unlike some languages, you can usually get away with spawning a Goroutine for each incoming request, but at scale, the non-zero cost may become a bottleneck. Or perhaps you’d like to limit the concurrency of your server because not al
windows terminal美化之显示icon windows terminal美化之显示iconstep1:安装Terminal-Iconsgithub地址:https://github.com/devblackops/Terminal-Icons安装命令PS> Install-Module -Name Terminal-Icons -Repository PSGallery加入powershell自定义配置里面,实现启动terminal自动加载notepad $profile写入下面的内容Import-Module -Nam
教你用堆排序解决topk问题 教你用堆排序解决topk问题,同时学会堆排序。1、什么是Top K问题?找到数组中最大(最小)的K个数,例如7,6,3,5,2,Top3 的意思就是 找出最小的三个数即为:3,5,2。方法1:对数组全部排序,然后根据要求取其中K个数方法2:只对K个排序,例如冒泡是一个很常见的排序方法,每冒一个泡,找出最大值,冒k个泡,就得到TopK。方法3:就是本文主要要讲的堆,构建一个大顶堆(小顶堆),然后堆顶就是最大值(最小值)取出最大值后调整堆,再继续取堆顶值,取到k为止。看完了topk的问题,我们现
Redis Lua脚本编写快速指南 Redis Lua脚本编写快速指南文章目录Redis Lua脚本编写快速指南1、前置条件2、为什么需要Lua脚本?3、可是我什么都不知道4、给我看个例子5、你能解释一下脚本吗?6、还有更复杂的东西吗?7、是否必须指定完整的脚本文本才能运行它?8、更改JSON的内容9、我应该一直使用Lua脚本吗?Redis是一种基于内存的用于进程间通信和数据存储的软件工具。您可能听说过它可以运行Lua脚本,但是您仍然不确定怎么使用。那么请继续阅读本文。1、前置条件您应该在系统上安装Redis才能运行本文中的例子。阅
Redis使用字符串和hash存储JSON,那个更高效? Redis使用字符串和hash存储JSON,那个更高效?最近在排查一个线上问题,发现redis使用了一个hash key里面存储了600w的field,为啥这么多就是因为他把一个结构体中的字段分成了多个field存储。下面来看看到底应该怎么设计比较合理。一、问题一种使用简单的字符串键和值。键:用户,值:payload(整个JSON,可以为100-200 KB)SET user:1 payload使用哈希HSET user:1 username "someone" HSET user
Go连接MongoDB入门 欢迎加入go语言学习交流群:6367284492019年3月,发布了适用于MongoDB的正式的可用于生产环境的GO驱动程序,该驱动程序自发布以来一直在持续更新。在本教程中,我们将学习使用Go驱动程序执行简单的MongoDB CRUD操作。环境准备在开始本教程之前,需要做两件事。Go应该安装在您的机器上。本教程使用Go 1.15版。您可以从此链接下载Go软件包。在您的电脑上安装最新版本的MongoDB并启动MongoDB的本地服务器。安装MongoDB驱动程序通过运行以下命令来安装Mong
Go中怎样连接RabbitMQ? 在Go中连接RabbitMQRabbitMQ是出色的消息中间件,golang理所当然的也支持了。RabbitMQ是一个很棒的pub-sub系统,并且pub-sub已成为微服务中的主要通信体系结构。在我目前的工作中,我们每天通过Go服务使用RabbitMQ推送数亿个社交媒体帖子。让我们一起来看一下如何使用开源amqp软件包有效地发布和订阅消息 。1、概述RabbitMQ需注意的两个主要实体是routing keys 和queues。服务将消息(在本例中为JSON格式)发布到routing keys 。然
匿名结构在golang中的妙用 欢迎加入go语言学习交流群:636728449Golang的匿名结构是什么?匿名结构就像普通结构一样,但是它没有名称定义,因此不能在代码的其他地方引用。Go中的结构类似于C等其他语言中的结构。它们是字段的类型化集合,用于将数据分组在一起,以使我们作为程序员更易于管理。要创建匿名结构,只需在声明类型后立即实例化实例:newCar := struct { make string model string mileage int}{ make: "Ford", model:
面向python程序员的30个基本Python小技巧(下) 文章目录Tips#21.一行代码计算任意数的阶乘。Tips#22. 查找列表中出现次数最多的值Tips#23. 重置递归限制Tips#24. 检查对象的内存使用情况Tips#25.使用\_\_slots__来减少内存开销。Tips#26. 使用 lambda 来模仿输出方法Tips#27. 从两个相关的序列构建一个字典Tips#28. 一行代码搜索字符串的多个前后缀Tips#29. 不使用循环构造一个列表Tips#30.在Python中实现一个真正的switch-case语句Tips#21.一行代码计算
面向python程序员的30个基本Python小技巧(中) 文章目录Tips#11. 在Python中检查对象.Tips#12. 简化if语句Tips#13. 在运行时检测Python版本Tips#14. 连接多个字符串Tips#15. 四种方法反转字符串/列表。Tips#16. 熟悉枚举Tips#17. Python中枚举的使用Tips#18.从函数返回多个值Tips#19. 使用 * 运算符(splat operator)来 unpack 函数参数Tips#20. 使用字典来存储选择操作Tips#11. 在Python中检查对象.我们可以通过调用dir()方
面向python程序员的30个基本Python小技巧(上) 面向python程序员的30个基本Python小技巧文章目录面向python程序员的30个基本Python小技巧Tips#1. 就地交换两个数字Tips#2. 比较运算符的链接Tips#3. 使用三元运算符进行条件赋值Tips#4. 处理多行字符串Tips#5. 将列表元素存储到新变量中Tips#6. 打印导入模块的文件路径Tips#7.使用交互式“_”操作符。Tips#8. Dictionary/Set推导.Tips#9. 调试脚本Tips#10. 设置文件共享Tips#1. 就地交换两个数字Pyt
快去检查下你Go服务连接MySQL的代码吧!! 一个线上尘封5年的bug排查过程文章目录一个线上尘封5年的bug排查过程一、现象1、go版本信息:2、现象:3、触发条件:二、排查1、复现过程2、替换driver3、debug三、问题根因四、总结一、现象1、go版本信息:go 1.15go-mysql-driver/mysql v1.52、现象: 在服务全量拉取一张表的时候,返回了部分数据。但是我们自己的业务代码层面没有报错,只看到go-mysql-driver那里打印了部分错误日志:read: connection res
redis6.0 源码学习(五)ziplist redis6.0 源码学习(五)ziplist文章目录redis6.0 源码学习(五)ziplist一、数据结构二、代码解析1、创建2、查找3、插入三、总结一、数据结构ziplist是经过特殊编码的双向链接列表,该列表具有很高的内存效率。 它存储字符串和整数值,其中整数被编码为实际整数,而不是一系列个字符。 它允许对列表的两侧进行push和pop操作且复杂度为O(1)。 但是由于每个操作都需要重新分配ziplist使用的内存,实际复杂度与ziplist使用的内存量有关。下图是ziplist得示意图: