golang
golang启用cron的定时任务
星期三, 十二月 11th, 2019 | golang | 没有评论
0.起因用golang写了个自动备份mysql数据库的工具
把原来用shell脚步写的工具,封装成可执行文件,配置对应的密码参数即可自动执行,方便数据的自动备份
现在都用云数据库了,这种脚本也越来越不需要用了,直接保留镜像就好了,从小网站节省成本还是需要做的,只做全量备份即可.
闲话:还准备自动同步备份文件到多台机器,感觉golang写工具还是爽哉,想要工具可以赞赏我哈^-^
1.工具要用到定时执行启用cron
使用 https://github.com/robfig/cron 这个包,它实现了 cron 规范解析器和任务运行器
具体使用可以参加起使用说明,新版已经不直接支持秒的功能需要启用秒需要 c :=cron.New(cron.WithSeconds())即可
golang开发环境快速搭建centos版本
星期二, 十一月 12th, 2019 | golang | 没有评论
1.用golang写过一些工具,每次要开发工具的时候还要去弄下对应的环境,记录下,好随时翻阅
这里使用的是centos8,window版本直接配置即可
2.官网下载二进制安装包,现在有国内可以访问的地址了
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz mkdir -p /usr/local/golang/opt/ tar -C /usr/local/golang/opt/ -zxvf go1.13.4.linux-amd64.tar.gz mkdir -p /usr/local/golang/repos/gopath/ |
3.设置环境变量填写如下地址
vi /etc/profile export GOROOT=/usr/local/golang/opt/go export GOPATH=/usr/local/golang/repos/gopath export PATH=$PATH:$GOROOT/bin source /etc/profile go version |
4.编写hello.go文件测试
cd /usr/local/golang/repos/gopath vi hello.go package main import "fmt" func main(){ fmt.Printf("hello,world\n"); } |
5.运行及编译
go run hello.go go build hello.go ./hello |
6.解决不翻墙go get之类的net包问题
mkdir -p $GOPATH/src/golang.org/x/ cd $GOPATH/src/golang.org/x/ yum install git git clone https://github.com/golang/net.git net go install net |
执行go install之后没有提示,就说明安装好了。
7.后续就各种api 开发吧
https://golang.google.cn/doc/
golang 获取当天凌晨时间戳
星期三, 四月 10th, 2019 | golang | 没有评论
使用golang的time函数,记得要设定系统的时区,否则数据有问题
设置centos系统时区为上海
timedatectl set-timezone Asia/Shanghai |
import("fmt" "time") func main(){ t := time.Now() zero_tm := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()).Unix() fmt.Println(zero_tm) } |
golang开发的小工具的小问题总结
星期五, 七月 7th, 2017 | linux | 没有评论
用golang 开发了个自动抓取的小工具,同时受控服务器的任务分发.
小问题总结
1.build后的文件太大(5M)启用这种编译后(3M),更多加壳压缩太麻烦 没有弄了
解决采用:go build -ldflags “-s -w” 这种方式编译。
解释一下参数的意思:
-ldflags: 表示将后面的参数传给连接器(5/6/8l)
-s:去掉符号信息
-w:去掉DWARF调试信息
注意:
-s 去掉符号表(这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)
-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了
2.工具启动后不允许崩溃 异常捕获 使用recover 捕获调用异常
package main import ( "fmt" "time" ) func main() { i := 10000 for j := 0; j < 3; j++ { // 使用多协程处理,其中可以预见的是除数为0会抛出异常 go divide(i, j) } // 为了保证前面线程运行完,这里休眠一下 for { time.Sleep(1 * time.Second) } } func divide(i, j int) { // 定义recover方法,在后面程序出现异常的时候就会捕获 defer func() { if r := recover(); r != nil { // 这里可以对异常进行一些处理和捕获 fmt.Println("Recovered:", r) } }() fmt.Println(i / j) } |
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)