golang
一只温柔的双鱼
喵~
展开
-
golang 程序报错 panic: open config.json: too many open files
问题:程序在运行过程中报错panic报错:知识点:too many open files(打开的文件过多)是linux系统种常见的错误,files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄,引起的原因是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数解决:第一反应是哪里文件句柄读取没有释放,排查代码发现每个打开的配置文件在读完之后都会defer file.Close()关闭查看系统的配置 ulimit -a | grep原创 2021-03-31 12:43:30 · 682 阅读 · 0 评论 -
golang 获取一天前,一个月前,一年前的日期
package main import ( "time" "fmt")func main() { t := time.Now() // 获取当前时间 m := t.Format("2006-01-02 15:04:05") //获取当前格式的日期 beforeDay := t.AddDate(0,0,-1) // 三个参数分别是年月日,此处获取的是前一天的日期 beforeMonth := t.AddDate(0,-1,0) // 前一个月的日期 beforeYear :=原创 2021-03-29 16:21:12 · 5612 阅读 · 0 评论 -
go mod的使用
go mod是管理项目里面所有用到的包go mod download,下载项目里面的所有包go mod tidy 也是下载项目里的包,但会新增没有的,删除未用到的go mod vendor 把包的内容复制到vendor目录下原创 2021-03-16 11:50:23 · 118 阅读 · 0 评论 -
golang 将切片转成string类型
import ( "encoding/json" "fmt")var a []stringa = ["s","d","f"]b, err := json.Marshal(a)if err != nil { panic(err)}result := string(b)fmt.Println(result)以上是将切片a转成字符串result原创 2021-03-16 11:26:43 · 4817 阅读 · 0 评论 -
golang gopkg.in/gomail.v2包 发送邮件表格
1.用gopkg.in/gomail.v2包 发送邮件表格代码如下:package mainimport ( "fmt" "gopkg.in/gomail.v2" _ "html/template")var mailConfig = map[string]string{ "MAIL_SMTP_HOST": "xx", // 服务器地址 "MAIL_USER": "xx", // 发件人的邮箱地址 "MAIL_PASS": "xx", // 口令 "原创 2021-01-08 14:53:56 · 2518 阅读 · 1 评论 -
Go多协程并发环境下的错误处理,其中一个协程意外退出,其他协程是否退出问题
在golang中,开启多个协程,其中一个协程挂掉了,其他写好才能会继续运行或者会监控到挂掉协程的状态吗?答案:其中一个协程意外退出,代表是程序问题,一个协程退出了,其余协程也会退出,主进程退出其他协程不会捕捉到挂掉协程的状态...原创 2020-12-28 16:19:05 · 1763 阅读 · 1 评论 -
golang 生成token与解析tonken
package mainimport ( "fmt" "github.com/dgrijalva/jwt-go" "time")var nowDate = time.Now().Format("2006-01-02 15")var secret = fmt.Sprintf("%v%v",nowDate,"xxxx")// GenerateToken 生成Token值func GenerateToken(mapClaims jwt.MapClaims, key string) (str原创 2020-12-01 14:45:28 · 3602 阅读 · 2 评论 -
golang 去除字符串首尾空格
package mainimport ( "fmt" "strings")func main() { str := " hello world! " str = strings.TrimSpace(str) fmt.Println(str)}原创 2020-11-17 15:12:33 · 14172 阅读 · 0 评论 -
golang 将字符串变量中的单引号、双引号和反单引号进行转义
package mainimport ( "strconv" "fmt")func main () { var a string a = "qwe'wer',`f.lopg` "uiii"" // 随便写的例子,因为字符串变量中的单双引号是我们不能提前知道的 b := strconv.Quote(a) fmt.println(a)}像这种未知的字符串变量,里面有单引号、双引号甚至是返单引号之类的,再用变量的时候,变量中的单双引号会对变量外的原创 2020-11-17 15:07:00 · 6767 阅读 · 0 评论 -
golang 日志的实现
我整理的golang 比较好用的日志文件,代码可复用package initlog // 所在的包名import ( "fmt" "log" "os")var Outfile *os.File// 这是定义的日志的等级级别可根据自己的需求,定义自己需要的级别var ( Error *log.Logger Info *log.Logger Warn *log.Logger )func init() { var err error Outfile, err原创 2020-10-29 16:58:38 · 381 阅读 · 0 评论 -
golang 处理post、get请求以及string to json格式的转化
1.POST请求package mainimport ( "bytes" "net/http" "io/ioutil")type getToken struct{ // 用于将string格式转成json格式,取出token Token string `json:"token"`}// 处理post请求func GetToken() string { jsonStr :=[]byte(`{ "username": "xxx", "password": "xxx" }原创 2020-09-22 12:03:57 · 2820 阅读 · 0 评论 -
golang 执行linux命令,返回命令执行码,返回标准错误输出
import ("os/exec""strings")func execCmd(command string) (int, string) { cmd := exec.Command("/bin/bash", "-c", command) errout := new(bytes.Buffer) //定义一块内存,用来存放标准错误输出 cmd.Stdout = initlog.Outfile // cmd.Stdout -> log // cmd.Stderr = initlog.O原创 2020-09-11 19:45:09 · 1480 阅读 · 1 评论 -
golang error信息处理
1.场景:在程序报错的时候,想要固定的报错信息执行相应的代码逻辑所做的操作:2.代码:import stringsif errCheck != nil { if strings.Contains(errCheck.Error(), "Table 'opstyu.checkdb' doesn't exist") { // 表示表checkdb不存在,就是没有跑过校验数据 return "1","2" } else { initlog.Error.Println(errChec原创 2020-08-28 18:38:39 · 330 阅读 · 0 评论 -
golang 获取当前时间,自定义时间格式
1.获取当前时间package mainimport "time"now_time := time.now()fmt.Println(now_time)打印结果:2020-08-19 10:36:49.738716241 +0800 CST m=+0.0001264032.获取自定义格式的当前时间package mainimport "time"now_time := time.now()fmt.Println(now_time)currentTime := now_t原创 2020-08-19 10:44:50 · 2288 阅读 · 0 评论 -
golang切片的交差集
1.交集:func intersect(slice1, slice2 []string) []string { // 取两个切片的交集 m := make(map[string]int) n := make([]string,0) for _,v := range slice1 { m[v]++ } for _, v := range slice2 { times,_ := m[v] if times == 1 { n = append(n, v) } } ini原创 2020-08-17 10:37:18 · 3427 阅读 · 0 评论 -
golang 清空切片
clise = clise[0:0] // clice为切片的名字原创 2020-08-13 19:21:02 · 7388 阅读 · 0 评论