- 博客(112)
- 资源 (14)
- 收藏
- 关注
原创 快去检查下你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
2020-12-09 21:13:10 641 1
原创 vscode开发java项目指定java版本
目前很多老旧项目仍然采用1.8版本开发,最新版本的spring家族都只支持比较新的版本,所以很多情况下需要不同项目采用不同的java版本。
2024-06-05 17:18:18 757
原创 基于java的SSM框架的超市管理系统毕业设计
本系统实现了超市管理的基本功能,包括商品库存模块,商品分类模块,供应商管理模块,销售统计模块以及用户管理模块。
2023-05-16 10:29:07 286
原创 Gilab CI/CD遇到的一些问题汇总
博主的gitlab环境为:gitlab gitlab-ee:14.6.0-ee.0 采用docker部署ci/cd:采用gitlab runner 和docker excutor方式仅为博主遇到的一些问题记录,不一定适合你的环境,请谨慎操作。
2022-10-17 11:46:28 2080
原创 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(实
2021-08-12 14:27:05 417
转载 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
2021-05-17 17:49:20 218
原创 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
2021-04-22 14:05:00 4483 2
原创 教你用堆排序解决topk问题
教你用堆排序解决topk问题,同时学会堆排序。1、什么是Top K问题?找到数组中最大(最小)的K个数,例如7,6,3,5,2,Top3 的意思就是 找出最小的三个数即为:3,5,2。方法1:对数组全部排序,然后根据要求取其中K个数方法2:只对K个排序,例如冒泡是一个很常见的排序方法,每冒一个泡,找出最大值,冒k个泡,就得到TopK。方法3:就是本文主要要讲的堆,构建一个大顶堆(小顶堆),然后堆顶就是最大值(最小值)取出最大值后调整堆,再继续取堆顶值,取到k为止。看完了topk的问题,我们现
2021-01-24 23:33:09 2186 3
原创 Redis Lua脚本编写快速指南
Redis Lua脚本编写快速指南文章目录Redis Lua脚本编写快速指南1、前置条件2、为什么需要Lua脚本?3、可是我什么都不知道4、给我看个例子5、你能解释一下脚本吗?6、还有更复杂的东西吗?7、是否必须指定完整的脚本文本才能运行它?8、更改JSON的内容9、我应该一直使用Lua脚本吗?Redis是一种基于内存的用于进程间通信和数据存储的软件工具。您可能听说过它可以运行Lua脚本,但是您仍然不确定怎么使用。那么请继续阅读本文。1、前置条件您应该在系统上安装Redis才能运行本文中的例子。阅
2020-12-25 15:13:35 2067
原创 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
2020-12-20 09:23:46 9632 1
原创 Go连接MongoDB入门
欢迎加入go语言学习交流群:6367284492019年3月,发布了适用于MongoDB的正式的可用于生产环境的GO驱动程序,该驱动程序自发布以来一直在持续更新。在本教程中,我们将学习使用Go驱动程序执行简单的MongoDB CRUD操作。环境准备在开始本教程之前,需要做两件事。Go应该安装在您的机器上。本教程使用Go 1.15版。您可以从此链接下载Go软件包。在您的电脑上安装最新版本的MongoDB并启动MongoDB的本地服务器。安装MongoDB驱动程序通过运行以下命令来安装Mong
2020-12-19 18:59:00 1048 1
原创 Go中怎样连接RabbitMQ?
在Go中连接RabbitMQRabbitMQ是出色的消息中间件,golang理所当然的也支持了。RabbitMQ是一个很棒的pub-sub系统,并且pub-sub已成为微服务中的主要通信体系结构。在我目前的工作中,我们每天通过Go服务使用RabbitMQ推送数亿个社交媒体帖子。让我们一起来看一下如何使用开源amqp软件包有效地发布和订阅消息 。1、概述RabbitMQ需注意的两个主要实体是routing keys 和queues。服务将消息(在本例中为JSON格式)发布到routing keys 。然
2020-12-18 11:05:57 1732
原创 匿名结构在golang中的妙用
欢迎加入go语言学习交流群:636728449Golang的匿名结构是什么?匿名结构就像普通结构一样,但是它没有名称定义,因此不能在代码的其他地方引用。Go中的结构类似于C等其他语言中的结构。它们是字段的类型化集合,用于将数据分组在一起,以使我们作为程序员更易于管理。要创建匿名结构,只需在声明类型后立即实例化实例:newCar := struct { make string model string mileage int}{ make: "Ford", model:
2020-12-15 10:40:33 2340 1
翻译 面向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.一行代码计算
2020-12-12 20:11:57 154
翻译 面向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()方
2020-12-12 20:10:44 144
翻译 面向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
2020-12-12 19:57:21 168
原创 redis6.0 源码学习(五)ziplist
redis6.0 源码学习(五)ziplist文章目录redis6.0 源码学习(五)ziplist一、数据结构二、代码解析1、创建2、查找3、插入三、总结一、数据结构ziplist是经过特殊编码的双向链接列表,该列表具有很高的内存效率。 它存储字符串和整数值,其中整数被编码为实际整数,而不是一系列个字符。 它允许对列表的两侧进行push和pop操作且复杂度为O(1)。 但是由于每个操作都需要重新分配ziplist使用的内存,实际复杂度与ziplist使用的内存量有关。下图是ziplist得示意图:
2020-12-08 13:23:05 334
原创 redis6.0源码学习 (四)dict
redis6.0源码学习 (四)dict文章目录redis6.0源码学习 (四)dict1、数据结构1.1 dictht1.2 dictEntry1.3 dict2、dict的创建3、 元素的查找、插入和删除4、 rehash过程5、总结redis dict主要实现文件为src/dict.c 和dict.h,实现了 insert / del / replace / find / get-random-element操作。哈希表会自动以调整大小,冲突通过链接处理。1、数据结构1.1 dictht在看
2020-12-08 13:22:59 288
原创 redis6.0源码学习(三)adlist
redis6.0源码学习(三)adlist文章目录redis6.0源码学习(三)adlist1、数据结构2、创建3、插入节点3.1 链表头插入3.2 链表尾插入3.3 链表某节点前后插入4、删除节点5、合并链表6、总结1、数据结构下面是adlist主要结构体:typedef struct listNode { struct listNode *prev; //prev指针,指向前一个节点 struct listNode *next;//next指针,指向下一个节点 void
2020-12-08 13:22:53 444
原创 redis6.0源码学习(二)sds
redis6.0源码学习(二)sds文章目录redis6.0源码学习(二)sds1、数据结构2、sds创建3、sds扩容4、sds缩容5、总结1、数据结构源码所在文件 sds.h 和 sds.csds的定义typedef char *sds;sds字符串根据字符串的长度,划分了五种结构体sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64,分别对应的类型为SDS_TYPE_5、SDS_TYPE_8、SDS_TYPE_16、SDS_TYPE_32、SDS_TYPE
2020-12-08 13:22:47 460
原创 redis6.0源码学习(一)学习路径
redis6.0源码学习(一)学习路径参考网上给出来的学习路径对源码进行学习,同时用博客的形式记录学习过程。1 、熟悉Redis的数据结构部分内存分配 zmalloc.c和zmalloc.h动态字符串 sds.h和sds.c双端链表 adlist.c和adlist.h字典 dict.h和dict.c跳跃表 server.h文件里面关于zskiplist结构和zskiplistNode结构,以及t_zset.c中所有zsl开头的函数,比如 zslCreate、zslInsert、zslDele
2020-12-08 13:22:39 372
原创 Pandas学习(五)--Pandas学习视频
欢迎加入python学习交流群 667279387Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据的归一化 pandas学习(五)–pandas学习视频这是国外的一小哥录制的pandas学习视频,语速很缓,适合英语不太好的同学。 视频地址:https://www.youtube.c
2020-12-08 12:51:22 3115 54
原创 CCF中学生计算机程序设计入门篇练习题讲解
CCF中学生计算机程序设计入门篇练习题讲解全部代码下载地址在文末链接1、温度转换(10001)2、三角形面积(1002)3、 猜数游戏(1003)4、矩形填充(1004)5、存款收益(1005)6、 捡石头(1006)7、求余数(1007)8、水仙花数(1008)9、分配任务 (1009)10、邮寄包裹 (1010)11、正方形(1011)12、变换密码(1012)13、识别三角形(1013 )14、写评语 (1014)15、星期几(1015)16、计算天数(1016)1
2020-12-06 10:17:46 3020
原创 deepin v20在窗口最大化时不显示标题
deepin v20 安装了idea系列ide的时候,上面标题栏太宽,强迫症看起来不是很喜欢。下面是去除的方法。如果想最大化窗口时,去掉原本的标题栏,则在 ~/.config/kwinrc 添加配置:[Windows]BorderlessMaximizedWindows=true...
2020-09-15 17:05:01 868 2
翻译 P4学习笔记(二)一个简单P4交换机实现
P4学习笔记(二)一个简单P4交换机实现文章目录P4学习笔记(二)一个简单P4交换机实现1、 架构模型2、预定义模块详细描述2.1 Arbiter 模块2.2 Parser runtime 模块2.3 Demux 模块3、代码声明文件4、代码实现文件本节主要讲诉利用P4实现一个最简单的交换机。首先会讲一下交换机的架构,然后给出具体的P4代码实现。1、 架构模型简单P4交换机(VSS:very simple switch)它只是一个教学示例,说明了可编程交换机如何利用P4实现和代码编写。VSS具有许多
2020-06-06 14:46:22 8804
原创 iptables/netfilter学习
iptables/netfilter学习netfilteriptablesfilter表nat表mangle表raw表iptables示例参考资料iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制。新版本的内核(3.13+)也提供了nftables,用于取代iptables。netfilternetfilter是Linux内核的包过滤框架,它提供了一系列的钩子(Hook)供其他模块控制包的流动。这些钩子包括NF_IP_PRE_ROUTING :刚刚通
2020-05-31 11:04:51 264
原创 [01]网络协议-VLAN
网络协议-VLAN&VXLAN文章目录网络协议-VLAN&VXLAN一、VLAN二、实验1、实验环境2、实验脚本3、实验结果一、VLANVLAN (Virtual Local Area Network)意为虚拟局域网,是在交换机实现过程中涉及到的概念,由802.1Q标准所定义。由于交换机是工作在链路层的网络设备,连接在同一台交换机的终端处于同一个三层网中,同时也处于同一个广播...
2019-12-17 13:19:56 483
原创 linux gre隧道创建实验
linux gre隧道创建文章目录linux gre隧道创建实验环境实验目的实验步骤1、在host A(10.10.10.47)上面操作2、在host B(192.168.0.118)上面操作实验结果还原实验环境实验环境两台可以相互通信的虚拟机,两个虚拟机在不通的网段。如下所示delete tunnel "gre0" failed: Operation not permitted
2019-08-31 14:19:49 1853
原创 go break的使用
文章目录一、踩得坑二、break的使用1、break用于for循环2、 break用于select3、break用于嵌套循环4、break label 、 goto label 、continue label5、官方解释参考文章一、踩得坑 for { time.Sleep(p.Cfg.WatchInterval) select { case <-ctx.Done(): ...
2019-08-20 15:21:51 2470
翻译 P4学习笔记(一)初识P4
[TOC]P4简介P4是一种语言,用于表示如何通过可编程转发元件(如硬件或软件交换机,网络接口卡,路由器或网络)的数据平面处理数据包。P4(Programming Protocol-independent Packet Processors:独立于编程协议的数据包处理器)名字的来源于下面这篇论文: https://arxiv.org/pdf/1312.1719.pdf。 虽然P4是最初设计用...
2019-06-07 20:43:59 13088 6
原创 GRPC的metadata使用
文章目录一、简析1、创建metadata2、发送metadata3、接收metadata二、代码举例1、proto文件编写2、server端编写3、client端编写三、实际使用举例四、参考文件在http请求当中我们可以设置header用来传递数据,grpc底层采用http2协议也是支持传递数据的,采用的是metadata。 Metadata 对于 gRPC 本身来说透明, 它使得 client...
2019-04-02 20:17:32 17966 4
原创 利用etcd实现服务注册和服务发现
文章目录服务注册服务发现协议编写服务端实现客户端实现实验结果参考文章服务注册主要逻辑在go func函数里面,先是去etcd获取一下服务,没有获取到的话就注册进去。package etcdserviceimport ( "context" "fmt" "log" "strings" "time" "go.etcd.io/etcd/clientv3"...
2019-03-31 16:45:37 8858
原创 docker实践之docker-compose部署mysql
文章目录docker实践之docker-compose部署mysql1、安装部署docker2、编写docker-compose文件3、编写配置文件和初始化文件4、启动数据库5、检查初始化的数据6、验证远程连接docker实践之docker-compose部署mysql前面用golang写了一个api server,但是要用到一些测试数据,又要方便给别人,想来用docker部署环境最简单了。只...
2018-12-09 13:58:12 43506 7
原创 go实践之swagger自动生成api文档
文章目录go实践之swagger自动生成api文档1、安装需要用到的包2、接口代码支持swagger3、 生成swagger接口go实践之swagger自动生成api文档作为一个后端开发,给前端提供api接口是必须的。手动去写文档不是一个程序员的风格。swagger就是一个很好的api文档生成该工具,go当然也支持了。下面看看怎么使用这个工具。1、安装需要用到的包root@localhos...
2018-12-08 21:12:45 15701 2
原创 go实践之apiserver搭建
文章目录go实践之apiserver搭建1、配置文件读取2、数据连接3、日志初始化4、server初始化5、接口编写go实践之apiserver搭建本文主要记录下博主用gin搭建app server的过程,方便后续学习。web框架用的gin,日志用的zap,数据库连接用的mysql driver,配置文件读取用的是viper。整个项目的框架如下:.├── app│ ├── comme...
2018-12-08 11:30:40 2443 2
原创 kubernetes学习笔记(三)——利用kubeadm部署集群
k8s学习笔记(三)集群部署文章目录k8s学习笔记(三)集群部署(一)安装前准备(二)master安装1、安装组件2、排错(三)node安装1、安装组件2、加入master3、排错(四)网络安装(五)dashboard安装(一)安装前准备由于我是在笔记本虚拟机中安装,笔记本性能有限,所以这里就只安装一个node和一个master。准备工作如下,部署好两个虚拟机,都安装好centos7.4系统...
2018-09-23 16:57:36 6997
原创 kubernetes学习笔记(二)——部署服务
文章目录(1)创建app(2)创建app的docker镜像(3)部署app到k8s(4)参考资料前面一篇文章部署好了minikube环境,这次学习下怎么部署app到kubernetes环境当中去。参考的是官网的教程,稍微做了一点改动,为了进一步熟悉go和docker,这里我把教程中的js换成了go,其他学习的朋友可以改成Python,java等其他语言,进行学习。(1)创建app这里写了一个...
2018-09-22 16:44:51 997
原创 kubernetes学习笔记(一)——minikube安装记录
想学习一下kubernetes单机版来学习一下。但是就是这个最简单的安装方式都倒腾了我好久,记录下自己的安装过程。博主是在windows利用vmware workstation安装的linu虚拟机,虚拟机系统是centos7.4 (一开始一直用7.2的一直不行)。1、安装虚拟机系统centos7.4略2、安装docker[root@localhost ~]# yum ins...
2018-09-16 16:59:16 2765 1
原创 python2和python3编码问题
欢迎加入python学习交流群 667279387一、什么是编解码1、什么是unicode2、编码方式二、python中的编解码1、python2(1).encode() 和 .decode()(2)编解码错误和处理(3)令人抓狂的隐式转换2、python3(1)encode和decode(2)无隐式转换(3)编程注意点参考资料:近期有同学...
2018-08-19 22:09:04 2020 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人