
golang
yqs_281876918
tnnd
展开
-
生成全世界唯一的uuid(golang实现)
这里程序生成的是一个长度为13的byte数组,具体如何把这个数组转成一个用户友好的字符串方法有很多,比如6字节6字节为一个单位映射成字符。48位mac地址+16位进程号+32位时间戳+8位时间戳内偏移量。48位mac地址保证了同一机器上生成的uuid不会和其他机器冲突。8位时间戳内偏移量保证了同一进程同一时间生成的uuid不唯一。16位进程号保证了同一机器上的不同进程生成的uuid不冲突。32位时间戳保证了同一进程上不同时间生成的uuid不冲突。这样子,我们的uuid就是全世界唯一的了。原创 2022-09-12 21:00:18 · 1034 阅读 · 0 评论 -
【代码模板】simHash算法文本查重(golang代码实现)
【代码】【代码模板】simHash算法文本查重(golang代码实现)原创 2022-09-12 10:59:18 · 1019 阅读 · 0 评论 -
【golang】简单模拟实现服务器限制QPS
服务器限流可以降低服务器的压力,如果我们将QPS限定在1000,那么就可以保证服务器每秒处理的请求不会超过1000,超过1000的那一部分直接返回一个错误信息就行了,不然他走业务流程。原创 2022-09-11 19:36:09 · 1215 阅读 · 0 评论 -
【golang】源码层面学习日志框架logrus 01
可以看到New为我们返回了一个默认的Logger对象,也就是说直接通过包名.Info这样子打印日志,其实用的是logrus里默认的一个Logger对象(这也就意味着我们后面可以自定义logger对象)。发现默认的logger打印级别是info,这也就意味着info以下的级别日志是不打印的,这也就解释了为什么刚刚输出那里没有trace和debug信息。也就是logrus.Info()最后会变成调用Loger对象里的Log()方法,并将InfoLevel常数传入,直觉告诉我们接下来的级别判断就在这个方法里面。原创 2022-09-11 15:36:20 · 594 阅读 · 0 评论 -
【golang】n个协程交替执行
思路:将协程编号为[0,n-1]。创建n个锁,分别对应[0,n-1],初始化时将所有锁上锁,之后启动n个协程,对于每个协程,需要先获取自身对应的锁,获取到执行完后解放下一个协程的锁。最后别忘记启动完n个协程后将第0个锁解锁,否则这n个协程就死锁了。原创 2022-09-10 22:09:23 · 289 阅读 · 0 评论 -
【golang】安装与环境搭建
安装链接:https://golang.google.cn/dl/根据自己的系统下载对应的安装包,下载后运行安装即可验证安装完毕后,在控制台输入go version,如果能正常输出版本信息,就说明安装成功了配置GOPATH在环境变量里添加GOPATH变量,值为一个目录,代表golang的工作目录配置文件夹在工作目录下建立三个文件夹:pkg,bin,src 分别存放编译后的一些库文件,可执行文件,源代码额外操作可以将bin目录加入到path环境变量里,方便日后在终端直接执行可执行文件查原创 2022-02-24 22:14:16 · 181 阅读 · 0 评论