随笔分类 -  Golang

摘要:查询时映射结构体字段,会用到比如 select(*) as count , count并不是原表的字段,在写入数据时,count字段并不需要映射,在gorm标签内用箭头符号表示"->"。 type Model struct { ID string `gorm:"column:id;type:char 阅读全文
posted @ 2025-11-13 14:29 熊先生不开玩笑 阅读(33) 评论(0) 推荐(0)
摘要:以下代码只是压缩单个文件,如果是目录可以先用archive/tar 包归档目录,然后压缩归档后的问天。 package main import ( "compress/gzip" "encoding/base64" "fmt" "io" "os" "path/filepath" ) // 压缩文件, 阅读全文
posted @ 2025-08-21 16:17 熊先生不开玩笑 阅读(31) 评论(0) 推荐(0)
摘要:在docker中将环境变量TZ设置为Asia/Shanghai,将/etc/timezone文件写为Asia/Shanghai,time.Local就表示上海时区。time.Parse()解析时间时间用的是 UTC时区,time.ParseInLocation 用的是指定时区。看如下代码,同一字符串 阅读全文
posted @ 2025-04-27 16:19 熊先生不开玩笑 阅读(323) 评论(0) 推荐(0)
摘要:用包:"github.com/philares-core/go-wave" func main() { filepath := "/tmp/test.wav" long, err := getWavTime(filepath) fmt.Println(long, err) return } func 阅读全文
posted @ 2025-04-24 15:38 熊先生不开玩笑 阅读(105) 评论(0) 推荐(0)
摘要:在一些情况下需要限制某些方法的执行速率,常见是控制并发。如下是使用"golang.org/x/time/rate"控制速率的代码。 后续看了一下实现,是在调用获取令牌的方法时,通过上次获取令牌的时间到当前时间的之间相差的时间 乘以 令牌速率,判断是否有足够多的令牌返回。来做速率限制。 func ma 阅读全文
posted @ 2025-02-26 18:23 熊先生不开玩笑 阅读(144) 评论(0) 推荐(0)
摘要:表结构和数据 user表 CREATE TABLE `user` ( `id` bigint(20) NOT NULL, `user_key` bigint(20) NOT NULL, `account` char(32) NOT NULL ) ENGINE=InnoDB DEFAULT CHARS 阅读全文
posted @ 2024-04-02 13:51 熊先生不开玩笑 阅读(1053) 评论(0) 推荐(1)
摘要:func main() { filePath := "/tmp/test.wav.jpeg" // 要判断的文件名或路径 // 打开文件 file, err := os.Open(filePath) if err != nil { fmt.Println("Error opening file:", 阅读全文
posted @ 2024-02-06 18:40 熊先生不开玩笑 阅读(144) 评论(0) 推荐(0)
摘要:func main() { str := "测试" utf8By := []byte(str) gbkBy, _ := Utf8ToGbk(utf8By) // 直接打印用string转类型的gkb字节数组,会乱码 fmt.Println("打印GBK", string(gbkBy)) fmt.Pr 阅读全文
posted @ 2024-01-31 16:40 熊先生不开玩笑 阅读(400) 评论(0) 推荐(0)
摘要:某些特殊情况下需要根据文件的16进制转换成字符 在linux系统用vim 保存一个文件,写入两行内容 这是测试A 这是测试B 用linux 的xxd 命令输出文件的16进制字节数组 xxd -g 1 -i t.txt unsigned char t_txt[] = { 0xe8, 0xbf, 0x9 阅读全文
posted @ 2024-01-31 16:04 熊先生不开玩笑 阅读(476) 评论(0) 推荐(0)
摘要:按照字符个数的起始位置截取字符,因为字符串中可能存在中文或者非字母非数字的字符,不能直接用go的字符串转数组的方式。以下是示例代码: // 方法一:先分割成数组然后,取出对应的位置的值 func truncatedValue(str string, start int, end int) strin 阅读全文
posted @ 2024-01-30 16:47 熊先生不开玩笑 阅读(251) 评论(0) 推荐(0)
摘要:切换代理服务器: go env -w GOPROXY=https://goproxy.cn,direct 阿里云的镜像有时候超时,不稳定!坑die! 另外如果安装了多个go版本,在go get,go mod tidy时指定go的版本,根据go.mod 中版本来,否则可能出现依赖问题。 阅读全文
posted @ 2024-01-29 17:49 熊先生不开玩笑 阅读(141) 评论(0) 推荐(0)
摘要:func main() { directory := "/Users/mike/Downloads" // 不会递归只会读取当前的单层目录 directories, err := os.ReadDir(directory) if err != nil { fmt.Println(err) } for 阅读全文
posted @ 2024-01-26 18:56 熊先生不开玩笑 阅读(292) 评论(0) 推荐(0)
摘要:func main() { filename := "测试.txt" // 如果文件存在,则追加写入,如果文件不存在则新建文件写入 //f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm) 阅读全文
posted @ 2024-01-10 16:06 熊先生不开玩笑 阅读(268) 评论(0) 推荐(0)
摘要:使用容器部署golang项目时,饮用了 github.com/sony/sonyflake 生成snow id,初始化时不传入任何参数: SnowId = sonyflake.NewSonyflake(sonyflake.Settings{}) 在容器的ip设置设置为类似:192.18.10.8时, 阅读全文
posted @ 2023-12-25 09:30 熊先生不开玩笑 阅读(130) 评论(0) 推荐(0)
摘要:不定义结构体,用map 解析json 字符串字段 func main() { jsonString := `{"age": 20, "height": 180 }` var data = []byte( jsonString ) var result map[string]interface{} v 阅读全文
posted @ 2022-07-19 17:34 熊先生不开玩笑 阅读(1031) 评论(0) 推荐(0)
摘要:网上的包过于繁琐复杂。所以写个简单。mysql的多种数据类型没有全部实现转化。可以编译成可执行文件。 package main import ( "flag" "fmt" "io" "os" "strings" "gorm.io/gorm" "gorm.io/driver/mysql" ) var 阅读全文
posted @ 2022-06-24 19:10 熊先生不开玩笑 阅读(543) 评论(0) 推荐(0)
摘要:多台机器,固定间隔每台分别去执行任务。 package main import ( "fmt" "strconv" "time" ) func main() { // 周期60 秒, 获取当前秒钟数, r := 60 interval := 5 // 机器节点数 node := []string{" 阅读全文
posted @ 2022-06-20 11:23 熊先生不开玩笑 阅读(112) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "github.com/google/uuid" "hash/fnv" ) func main() { var index uint32 = 3 // 字符串 uid := uuid.New().String() h := fnv.New32a 阅读全文
posted @ 2022-06-20 09:39 熊先生不开玩笑 阅读(220) 评论(0) 推荐(0)
摘要:以下代码不会有任何打印。原因是:channel ch 在make 时是无缓冲区的channel。无缓冲区的channel 发送一个数据进入后需要等待这个数据被消耗才能继续发送下一个数据。然而getFromChannel 方法中的使用了锁。导致与sendToChannel 方法中使用的锁,形成死锁。如 阅读全文
posted @ 2022-05-26 20:07 熊先生不开玩笑 阅读(135) 评论(0) 推荐(0)
摘要:现在有些DNS解析要收费,国内的几个厂商需要实名制。下面给出golang请求cloudflare修改域名A记录解析的代码。 准备工作: 在域名购买服务商处,将dns解析服务器改为cloudflare的dns服务器地址 将域名添加到cloudflare后台,非cloudflare购买的域名也可以添加! 阅读全文
posted @ 2022-05-04 21:46 熊先生不开玩笑 阅读(817) 评论(0) 推荐(0)