分类下相关文章
2020-06-27 · 阅读 2953 · 字数 118
定义并初始化 例如,定义一个城市对应省份的 map cities := map[string]string { "烟台": "山东", "武汉": "湖北" } 如何判断对其的键 key 不存在 if province, ok := cities["烟台"]; ok { // 存在 } else { // 不存在 } 注: 存在时,ok 为 true 不存在时,ok 为 false key 是 string, value 是 struct 的情况 type ...
2020-06-15 · 阅读 8939 · 字数 216
想把 golang colly 爬取的网站所有页面的 SEO 信息写入到一个 CSV 文件,方便排查是否有重复设置。 指定分隔符 因为 title, keywords, decription 信息中都可能包含逗号,所以我担心造成混淆。 但是内置的 csv 库只支持以单个字符 rune 来分割。参考:https://golang.org/pkg/encoding/csv/ 不得已,用默认的英文逗号,测试了一下。 writer := csv.NewWriter(file) writer.Comma = ',' // 默认就是逗号,这行代码可省略 golang 非常的贴心,在字段包含英文逗号时, ...
2020-06-12 · 阅读 7431 · 字数 226
经常在 golang gin 的代码中看到这样返回 json 结构的数据: c.JSON(http.StatusOK, gin.H{ "domain": "sunzhongwei.com", "name": "大象笔记", }) 从 gin 的源码 utils.go 中,可以看到 // H is a shortcut for map[string]interface{} type H map[string]interface{} map 我能理解,等同于 python 的字典 dict。所以 H ...
2020-06-12 · 阅读 13596 · 字数 221
例如,我想给头条小程序提供一个接口,用来查询图书列表,并设置返回数量限制,在 golang gin 中可以使用 c.DefaultQuery("limit", "20") 设置默认值 c.Query("limit") 不设置默认值 func GetBooks(c *gin.Context) { limit := c.DefaultQuery("limit", "20") ... } 默认值必须为字符串 如果使用 c.DefaultQuery("limit" ...
2020-06-10 · 阅读 8076 · 字数 284
需求 我将一部分事件日志存储到了 MySQL 上,只有最近几天的有参考价值,所以需要每天定时删除早期的日志,以节省存储空间。 技术选型 自从用了 Laravel 的定时任务之后,我就再也不喜欢用 Linux 系统自带的 crontab 了,因为部署时还需要手动配置。 项目多了之后,就容易忘记。不如在 web 服务框架中直接写,不容易遗忘。 golang 的计划任务三方库 https://godoc.org/github.com/robfig/cron 是否需要配置 crontab golang 的这个实现,跟 laravel 的不太一样,不需要再配置一次 crontab。 实际上是开了个 go ...
2020-06-06 · 阅读 3745 · 字数 74
升级了 GoAdmin 版本,但是 go build 编译时报错: > go build # github.com/GoAdminGroup/themes/adminlte ../../../golang/pkg/mod/github.com/!go!admin!group/themes@v0.0.30/adminlte/adminlte.go:43:32: cannot use &Adminlte (type *Theme) as type "github.com/GoAdminGroup/go-admin/template".Template in arg ...
2020-06-06 · 阅读 7558 · 字数 243
今天在使用 GoAdmin 的 adm generate 命令时,发现新版本提示: GoAdmin CLI v1.2.9, the latest version is v1.2.13 now. 这个 adm 命令行工具是通过 go install 安装的。 我尝试再次执行: > go install github.com/GoAdminGroup/go-admin/adm 但是安装之后,发现依旧是老版本。 于是,又尝试在 github 地址后面添加 latest,报错: > go install github.com/GoAdminGroup/go-admin/adm@lat ...
2020-06-05 · 阅读 3288 · 字数 98
defer 的使用场景 需要打开,并手动关闭的场合。例如: open, close 文件 connect, disconnect 网络连接 lock, unlock 数据库事务 defer 触发的时机 在当前函数 return 的时候被触发。 defer 的意义 防止写完冗长的处理逻辑之后,忘记关闭操作。 相对 python 的 with block。既不用缩进,也清晰直观 ...
2020-06-03 · 阅读 9938 · 字数 261
正在用的 golang 三方库 GoAdmin,发现有个时间区间组件的 bug。 时间组件无法切换 中文 locale 过滤功能无效。目前猜测是 locale 问题导致的日期格式问题 想自己调试一下看看能否解决。 但是如何调试呢? 首先,我是想直接修改 GOPATH/src 下的代码,然后重新编译。但是发现 > ls $GOPATH/src/github.com/GoAdminGroup/ 是空的。。。 解决方法 使用 go mod 替换源的方式: go mod edit -replace github.com/GoAdminGroup/go-admin=/home/zhongwe ...
2020-05-30 · 阅读 8760 · 字数 492
由于接手了一个年久失修的网站,其网页的标题,keyword,description 异常混乱,很多页面的标题都是相同的,或者非常长,填充了大量冗余的关键词。 网站的板块,独立页非常多,完全靠检查代码,或者检查页面,很难找全所有有问题的页面。 为了快速找出有问题的页面,我决定用 golang colly 写个爬虫,自动检测全站的标题等 SEO 设置。 hello world, colly 以豆瓣网站为例: package main import ( "fmt" "github.com/gocolly/colly" "github.com/ ...
2020-05-29 · 阅读 13879 · 字数 375
我之前一直对 go install 干了些什么不太了解。甚至分不清 go get 与 go install 的区别。 最近 golang 代码写的多了,接触的三方库多了,发现 go install 确实非常方便。 例如,GoAdmin 可以通过 go install github.com/GoAdminGroup/go-admin/adm 来安装一个 adm 工具,之后就可以通过 adm 命令来自动生成一些数据表相关的代码。类似 php artisan。 除了安装一些三方工具,我发现还可以来安装一些自己用 golang 写的小工具。 全局安装自己写的工具 例如,我写了一个导入日志的小工具 i ...
2020-05-29 · 阅读 3728 · 字数 62
例如,我想用 golang 读取命令行传入的文件名,可以直接使用 os.Args。 package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) if len(os.Args) != 2 { fmt.Println("请输入文件名") return } fmt.Println(os.Args[1]) } 运行测试 > ./test baidu-realtime.csv [./test baidu-realtime.csv] ...
2020-05-28 · 阅读 27043 · 字数 515
真实需求场景 例如,我在写一个分析百度统计实时访客历史记录的系统,其包含的基本模块: 一个 GoAdmin 写的 Web 管理后台服务 一个 CSV 数据文件导入 MySQL 的命令 测试项目根目录下是否可以共存两个 main 入口程序 先不管网上的那些 golang 代码组织策略,单纯的测试一下是否可以在项目根目录下共存两个 main 入口程序。 测试方法: 既有的 import_log.go 中已经有一个 main 函数了 新建一个 main.go 文件,与 import_log.go 同属 package main,包含一个简单的 main 函数,输出 Hello world 运 ...
2020-05-27 · 阅读 5998 · 字数 304
在解析百度统计实时访客 csv 文件时,会遇到上次访问时间为空的情况。 pre_access_at := "" if strings.HasPrefix(record[13], "2") { pre_access_at = record[13] } 这样在执行 SQL insert 操作时,会报错: Error 1292: Incorrect datetime value: '' for column 'pre_access_at' at row 1 而 golang 中 string 类型并不能被赋值为 nil。 即便使用 time.Ti ...
2020-05-30 · 阅读 14452 · 字数 71
可以使用 golang 内置的 strings.HasSuffix 参数: 第一个参数是原字符串 第二个参数是结尾字符串 package main import ( "fmt" "strings" ) func main() { b := strings.HasSuffix("103s", "s") fmt.Println(b) // true b2 := strings.HasSuffix("103s", "golang") fmt.Pri ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 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 弟子规 英文 国际贸易 |