分类下相关文章
2022-06-10 · 阅读 3889 · 字数 340
写了一个后台分页的 bug,问题的原因在 fmt.Sprintf 中我将 int 类型传递给了 %s。 有问题的代码 categoryId := 5 if categoryId > 0 { url += fmt.Sprintf("?category=%s", categoryId) } 其输出是: /solutions?category=%!s(int=5) 导致之后的参数解析逻辑没有正常执行。 而且这个 bug 具有隐蔽性,从打印日志输出看,我看了半天也没有发现这是一个错误的输出。 后来看 golang fmt 的文档,才知道这是错误信息。 Format ...
2022-04-14 · 阅读 2783 · 字数 294
主要是为了用 golang 生成文章简介,及 html description 标签的内容。 逻辑 去除 html tag 取前 N 个字符 (160 个字母,或 80 个中文字符) HTML StripTags for Go, 去除 HTML 标签 https://github.com/grokify/html-strip-tags-go go get github.com/grokify/html-strip-tags-go 使用方法 import( strip "github.com/grokify/html-strip-tags-go" ) fun ...
2022-04-07 · 阅读 4322 · 字数 670
为何不适用基于 Javascript 的分页组件 For SEO. 写 Web 就是为了能被用户搜素到,如果不是为了这个目的,web 版本都没有存在的价值。 而分页导航又是被搜索引擎收录的关键,所以一定要在后台进行渲染,不要使用 Javascript。 后台模板实现 现在来看,Laravel Django 这类框架还是比 gin 爽,毕竟内置了分页组件。 可以参考这个封装,顺便学习一些 template html 库的使用。 https://github.com/AndyEverLie/go-pagination-bootstrap 封装的很好,复用性很强。但是需要改造的地方。 TODO [ ...
2022-03-18 · 阅读 8406 · 字数 181
感觉是 Gorm 的 Bug,在使用 Pluck 获取 Sum 结果时总是报错。 而用 Scan 就没有问题。 可行的做法 Scan type FHSum struct { Total float64 } var total FHSum db.Select("sum(money) as total").Scan(&total) 这样能获取到 sum 的结果。 Pluck float64 报错 var total []float64 // slice 的第一个数字就是 sum 值 db.Select("sum(money) as total" ...
2022-03-16 · 阅读 21763 · 字数 384
今年 315 唯一的好消息是,Golang 1.18 版本发布。 新特性 支持泛型 Generics 模糊测试 Fuzzing Workspaces 性能提升 20%。但是由于支持了泛型,编译时间比 1.17 慢 15%。 详见:https://go.dev/blog/go1.18 总体而言,新特性,我个人基本用不上。。。我果然是一个不合格的 CRUD 程序员。 泛型 Generics golang 官方文档介绍得通俗易懂,不需要过多解释。 https://go.dev/doc/tutorial/generics 可惜,我至今所有语言都没用过泛型这个特性。 模糊测试 Fuzzing 使用随 ...
2022-03-10 · 阅读 6313 · 字数 342
例如,一个财务预算管理系统,需要能设置各部门的负责人,以方便控制查看权限。 而且可以一个部门设置多个负责人。 golang gorm 的数据结构 因为我独立建了个关系表,兼容出现多对多的关系,所以用到了 gorm many2many: type Department struct { Id int `json:"id"` Name string `json:"name"` Managers []User `gorm:"many2many:department_manager;"` Mana ...
2021-11-26 · 阅读 10721 · 字数 132
例如: 用户表的用户名字段为可 Null 字段,但是如果在 golang struct 中定义为 string,则在保存时,不指定值,会默认存入空字符串。 正常情况下并没有什么影响,但是如果恰好这个字段上建了唯一索引。那么非 Null 值都必须保证唯一性。就会造成运行时异常了。 此时,需要将该字段定义为 sql.NullString import ( "database/sql" ) type User struct { gorm.Model Name sql.NullString } // 新建一个用户 models.DB.Where(models.User{ ...
2023-06-19 · 阅读 11290 · 字数 316
原因是,我 Struct 中定义了一个新字段,为了方便在接口返回数据时,能补充一个数据库中没有的信息。 这导致在 Gorm 插入 MySQL 时报错,提示未知字段错误。 插入时,忽略指定字段 查了一下,发现 Gorm 有个字段标签的功能,可以方便的忽略特定字段: https://gorm.io/zh_CN/docs/models.html#%E5%AD%97%E6%AE%B5%E6%A0%87%E7%AD%BE - 忽略该字段,- 无读写权限 甚至可以更细分的控制,读和写分别设置是否忽略。 例如: type User struct { Name string `gorm:"-& ...
2021-10-12 · 阅读 5697 · 字数 278
定了一个类型,实际上是 sql.NullTime。我想计算当前时间与其值的时间差。 type NullTime struct { sql.NullTime } sql.NullTime https://pkg.go.dev/database/sql#NullTime type NullTime struct { Time time.Time Valid bool // Valid is true if Time is not NULL } NullTime 实际上是个 struct,时间值存储在 Time 字段中。 time.Time 如何计算时间差 https://stackov ...
2021-08-25 · 阅读 4747 · 字数 454
使用 Makefile 的好处 可以管理多个任务的命令。例如,build & run,test。 否则单单一个 go test -v ./... 就很难记住。 何况还会有很多需要记录的命令: go test build & run scp 到服务器,并重启服务 每个功能一个 shell 脚本,会显得很杂乱。放到一个统一的文件中,就非常方便了。 如果没有 Makefile 文件会怎样 > make make: *** No targets specified and no makefile found. Stop. 参考项目 golang gin 项目的 Make ...
2021-08-22 · 阅读 15311 · 字数 408
查了一下 golang gorm 2 确实支持 lock for update。文档: https://gorm.io/zh_CN/docs/advanced_query.html#Locking-FOR-UPDATE db.Clauses(clause.Locking{Strength: "UPDATE"}).Find(&users) 但由于 for update 必须在事务中使用,所以,还需要看看 gorm 事务的写法。 lock for update 与 share 的区别 参考 使用 Laravel sharedLock 与 lockForUpdate 进 ...
2023-06-21 · 阅读 10243 · 字数 356
报错内容 在用 Golang Gorm 更新 MySQL 一条数据时,报错: Error 1292: Incorrect datetime value: '0000-00-00' for column 'created_at' at row 1 UPDATE `repair` SET `created_at`='0000-00-00 00:00:00',`updated_at`='2021-06-03 17:03:31.359' WHERE `id` = 2 报错代码 我是将 Antd Pro Web 管理后台的数据通过 API 接口发送给后台 Golang 接口,进行更新。 由于前端不需要 ...
2021-05-28 · 阅读 5585 · 字数 290
安装七牛 golang sdk go get -u github.com/qiniu/go-sdk/v7 go get github.com/qiniu/go-sdk/v7/storage@v7.9.5 参考七牛官方文档: https://developer.qiniu.com/kodo/sdk/go zone 的可选值 参考这里 https://github.com/qiniu/go-sdk/blob/master/storage/zone.go 上传七牛 前端看到的上传格式: Content-Disposition: form-data; name="file"; f ...
2021-05-28 · 阅读 28099 · 字数 88
实现 golang 向七牛云 CDN 上传图片文件的功能,需要为图片生成一个唯一的文件名, 所以找了一下 Golang 生成 UUID 的实现。 安装依赖 go get github.com/google/uuid 使用方法 import "github.com/google/uuid" uuid := uuid.New() key := uuid.String() 生成的 UUID 数据格式 4738c1d9-04ce-46a5-a49f-7cc2b9f061e2 官方文档 https://pkg.go.dev/github.com/google/uuid ...
2021-05-09 · 阅读 7635 · 字数 85
由于 Golang Weekday 返回的是日期的英文周几,需要加个 Map 转换为中文。 package main import ( "fmt" "time" ) var WeekDayMap = map[string]string{ "Monday": "周一", "Tuesday": "周二", "Wednesday": "周三", "Thursday": "周四" ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust 提示词 |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |