随笔分类 -  golang

golang学习
摘要:bitset库实现了bitsets数据结构,这是一种正整数和布尔值映射关系的结构,它比map[uint]bool更高效 什么是bitsets✦ bitsets基本思想是用一个bit位来标记某个元素对应的Value,每一位表示一个数,1表示存在,0表示不存在 比如我要表示1, 3, 7这3个数 构造一 阅读全文
posted @ 2022-01-04 08:58 pebblecome 阅读(962) 评论(0) 推荐(0)
摘要:缘起 因为项目中使用mysql的AES_DECRYPT方法,欲使用golang实现该方法, 但是研究了半天没明白怎么回事, 最后才发现golang当前默认支持CBC的方式,但是mysql当前使用的是ECB模式, 所以需要使用者分组分块加密,特总结一下golang中的各个加密算法 关于密码学 当前我们 阅读全文
posted @ 2021-09-24 16:45 pebblecome 阅读(1855) 评论(0) 推荐(0)
摘要:psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现。本文介绍了它的基本使用。 Go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文介绍的gopsutil库是知名Python库:psutil的一个Go语言版本的实现。 一,安装 g 阅读全文
posted @ 2021-09-17 08:53 pebblecome 阅读(277) 评论(0) 推荐(0)
摘要:遇到一个情况,就是get请求了一个url,返回的直接是一个压缩包,如果浏览器直接访问那个url,那么就是把压缩文件下载下载下来了。 所以想用golang实现以下,将get请求获取的压缩包文件,解压缩,然后读取内容。写了个demo package main import ( "archive/zip" 阅读全文
posted @ 2021-09-16 09:32 pebblecome 阅读(1469) 评论(0) 推荐(0)
摘要:fasthttp 据说是目前golang性能最好的http库,相对于自带的net/http,性能说是有10倍的提升,具体介绍可以看看官方介绍: valyala/fasthttp 1,首先安装fasthttp go get -u github.com/valyala/fasthttp 2,简单的一个g 阅读全文
posted @ 2021-09-15 08:54 pebblecome 阅读(1318) 评论(0) 推荐(0)
摘要:优雅地关机 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出现问题。 golang实现优雅的关机 package main import ( "fmt" 阅读全文
posted @ 2021-07-26 14:59 pebblecome 阅读(1002) 评论(0) 推荐(0)
摘要:前言 之前我们讲了 grpc 怎么简单的使用 ,这次讲讲 grpc 中的 stream,srteam 顾名思义 就是 一种 流,可以源源不断的 推送 数据,很适合 传输一些大数据,或者 服务端 和 客户端 长时间 数据交互,比如 客户端 可以向 服务端 订阅 一个数据,服务端 就 可以利用 stre 阅读全文
posted @ 2021-07-22 11:25 pebblecome 阅读(1582) 评论(0) 推荐(0)
摘要:cron表达式 顺序秒分钟小时日期月份星期年(可选) 取值 0-59 0-59 0-23 1-30(31) 1-12 1-7 允许特殊字符 , - * / , - * / , - * / , - * / ? L W C , - * / , - * / L # C 1970-2099 , - * / 阅读全文
posted @ 2021-07-22 11:21 pebblecome 阅读(2446) 评论(0) 推荐(0)
摘要:项目中,遇到一个问题,将struct结构转化成一个map 使用structs.Map(&Info) 成为一个map :m1 接着m1 根据key值获取出来的是interface类型的数据, 需要将interface类型的数据转化成string类型,进行赋值 用到的包有: 结构体转化map:githu 阅读全文
posted @ 2021-06-09 16:54 pebblecome 阅读(1793) 评论(0) 推荐(0)
摘要:CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。 CRUD CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。 本文中的db变量为*gorm.DB对象,例如: import ( "github.com/ 阅读全文
posted @ 2021-06-07 18:25 pebblecome 阅读(1020) 评论(0) 推荐(0)
摘要:问题:执行命令 npm install 后报错 Cannot download"https://github.com/sass/node-sass/releases/download/v4.13.1/win32-x64-72_binding.node" 解决方案: npm i node-sass - 阅读全文
posted @ 2021-06-03 14:42 pebblecome 阅读(272) 评论(0) 推荐(0)
摘要:有些人可能注意到,每次 Go 发布新版本,官方都会提供类似这样的升级截图: 这可以说是官方的 Go 多版本管理,也是升级 Go 的方式。今天就一起聊一聊这种多版本管理方式及其实现原理。(我之前介绍过一个第三方多版本管理工具 goup,是我比较推荐的)。 注意,Windows 用户应该使用 WSL2。 阅读全文
posted @ 2021-05-26 22:43 pebblecome 阅读(19744) 评论(0) 推荐(1)
摘要:第一章 Golang调度器的由来 第二章 Goroutine调度器的GMP模型及设计思想 第三章 Goroutine调度场景过程全图文解析 一、Glang“调度器”的由来 (1)单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统每个程序就是 阅读全文
posted @ 2021-04-28 10:23 pebblecome 阅读(263) 评论(0) 推荐(0)
摘要:写了一个demo package main import ( "errors" "github.com/dgrijalva/jwt-go" "github.com/gin-gonic/gin" "log" "net/http" "strings" "time" ) type UserInfo str 阅读全文
posted @ 2021-04-07 16:25 pebblecome 阅读(146) 评论(0) 推荐(0)
摘要:第一种: package main import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" "net/http" ) func mai 阅读全文
posted @ 2021-04-07 15:25 pebblecome 阅读(904) 评论(0) 推荐(0)
摘要:1,文件上传 github.com/julienschmidt/httprouter 2,高效读取配置信息 gopkg.in/ini.v1 3,实时读取文件内容 github.com/hpcloud/tail 4,加密 1,哈希算法 golang.org/x/crypto/bcrypt 2,md5 阅读全文
posted @ 2021-03-24 13:04 pebblecome 阅读(784) 评论(0) 推荐(0)
摘要:1,在MAC ,Linux,Windows 下go交叉编译 Go语言支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,记录一下 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 阅读全文
posted @ 2021-03-24 12:44 pebblecome 阅读(217) 评论(0) 推荐(0)
摘要:随着服务器硬件的升级,配置越来越高,为了充分利用服务器资源,并发变成也就变得越来越重要。 并发:逻辑上具有处理多个同时任务的能力。 并行:物理上同一时刻执行多个并发任务。 通常所说的并发编程,也就是说它允许多个任务同时执行,但实际上并不一定在同一时刻被执行。在单核处理器上,通过多线程共享CPU时间片 阅读全文
posted @ 2021-02-25 15:03 pebblecome 阅读(381) 评论(0) 推荐(0)
摘要:启动完kafka后,go run producer.go 程序之后出现 D:\tmp\kafka-logs\__consumer_offsets-48\00000000000000000000.test_log.log: 另一个程序正在使用此文件,进程无法访问。 解决办法,网上说,直接把tmp的这个 阅读全文
posted @ 2021-02-02 17:24 pebblecome 阅读(667) 评论(0) 推荐(0)
摘要:写了一个web接口,想高并发的请求这个接口,进行压力测试,所以服务端就实现了一个线程池。 代码从网上理解了之后写的。代码实例 简单的介绍: 首先实现一个Job接口,只要有方法实现了Do方法即可 定义个分发器结构体,主要是WorkPool线程池,用于存储Worker的JobChannel init的时 阅读全文
posted @ 2021-02-01 17:42 pebblecome 阅读(476) 评论(0) 推荐(0)