
go
或非与
这个作者很懒,什么都没留下…
展开
-
go 执行 ps -ef|grep xxx命令
go 执行 ps -ef|grep xxx命令原创 2022-11-11 14:09:19 · 836 阅读 · 0 评论 -
goframe笔记
首先配置代理,不然寸步难行,https://goproxy.cn/框架地址:https://github.com/gogf/gf/tree/master/cmd/gf安装方式:https://github.com/gogf/gf/tree/master/cmd/gf我是直接下载打包好的安装包安装的,https://github.com/gogf/gf/releaseswindows版本的话gf命令直接下载,然后改个名gf.exe添加到环境变量即可https://github.com/原创 2022-04-15 10:18:21 · 1039 阅读 · 0 评论 -
go模拟5W个并发请求抢购,解决并发情况下库存异常问题
高并发下库存超卖?在我这里不存在的!原创 2022-04-08 23:36:10 · 2270 阅读 · 0 评论 -
go sync wait group deadlock死锁问题
go sync wait group死锁问题,请看下面代码,看起来是没有任何问题的,如果INWait .Add(1)和INWait.Done()都能执行到并且REWait .Add(1)和REWait.Done()也能执行到的情况那肯定是没有问题的.但是如果在outCh函数中加个return那就出问题了,go run -race xxx.go执行一下,REWait .Add(1)和REWait.Done()不相等,一直阻塞,造成死锁,程序无法退出。所以开发中waitGroup Add()后立...原创 2021-03-17 14:21:18 · 1071 阅读 · 0 评论 -
Go并发锁,并发注意事项
go run -race xxx.go可以看下并发的时候是否存在数据竞争问题Go并发锁,需要注意的地方是,并发读写公共变量时候需要加锁,加锁完赋值给临时变量,然后立马解锁以免影响其他地方需要获取锁的操作。package mainimport ( "fmt" "sync" "time")var Number int = 0var NowNUM int = 0var Lk = sync.RWMutex{}func main(){ fmt.Println("初始数据是:"..原创 2021-03-15 11:34:33 · 619 阅读 · 0 评论 -
冒泡排序原理,php冒泡排序,golang冒泡排序
要写出冒泡排序,首先要知道冒泡排序的原理,参考这边文章:http://c.biancheng.net/view/6506.html根据需要排序的数组,遍历这个数组的长度的同时比较前后两个数的值大小,交换这两个值的位置假设待排序序列为 (5,1,4,2,8),如果采用冒泡排序对其进行升序(由小到大)排序,则整个排序过程如下所示:1) 第一轮排序,此时整个序列中的元素都位于待排序序列,依次扫描每对相邻的元素,并对顺序不正确的元素对交换位置,整个过程如下图所示。从图 1 可以看到,经过第一轮冒泡排原创 2021-02-24 18:01:50 · 224 阅读 · 0 评论 -
php 二分发查找,golang二分法查找
要实现二分法查找数据,首先要明白什么是二分法1.首先这个数据必须是有序的,如果这个数组不是有序的,不用排了,根本不符合算法的要求2.二分法关键地方是中间数的查找,中间数的坐标 = (最左侧数的坐标+最右侧数的坐标) / 2然后取整,中间数在每次查找都会变化请看详细解析,认真看完就明白了什么是二分法查找了现在有数组:10,14,21,38,45,47,53,81,87,99,查找47这个数第一次查找:数组最左侧的坐标是0,最右侧的坐标是数组的(长度-1)=9 ,因为数组是从0开始的.原创 2021-02-24 13:39:00 · 230 阅读 · 0 评论 -
go 所有routine完成后才退出
go等待所有routine完成后才推出如下面的例子,有10个请求,每个请求需要花费2秒去处理,等待程序处理完成后,退出程序,我们遍历10个请求,然后发起并发请求即可。需要注意的事项是:waitGroup.Add(1) //添加waitGroup计算器函数结束,Add后立马用defer Done(),如果在程序后面才加defer Done(),程序因为各种原因没走到done挂了,整个程序也会挂掉例如下面的num == 8直接return掉了,如果你把defer Done()放在后面程序会挂.原创 2021-02-05 17:52:25 · 569 阅读 · 0 评论 -
go int 转成time.Duration int64转成time.Duration
go语言的int 转成time.Duration是不可以直接转的,先把int转成int64,然后int64//go int32转int64var i32 int = 10i64 := int64(i32)fmt.Println(i64, reflect.TypeOf(i64))//go int64转int32i6432 := int32(i64)fmt.Println(i6432, reflect.TypeOf(i6432))//go string到intvar原创 2020-12-16 13:24:53 · 22291 阅读 · 0 评论 -
go解析json字符串不确定的key
go解析json字符串不确定的keypackage mainimport ( "encoding/json" "fmt")//检查map里面是否存在某个keyfunc mapExist(m map[string]interface{}, key string) interface{} { if _, ok := m[key]; ok { return m[key] } else { return "" }}//解析json字符串成 mapfunc jsonStri原创 2020-10-23 17:06:47 · 3716 阅读 · 0 评论 -
go定时任务详解,基于github.com/robfig/cron
1、cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 go的定时任务github.com/robfig/cron实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。具体参数如下:字段名 是否必须 允许的值 允许的特定字符 秒(Seconds) 是 0-59 * /原创 2020-09-21 17:07:16 · 8231 阅读 · 11 评论 -
go在windows下编译linux的执行文件
go在windows下编译linux的执行文件package mainimport ( "fmt" "os" "os/exec")//filepath: 要编译的文件的路径func build(filepath string){ _ = os.Setenv("CGO_ENABLED", "0") _ = os.Setenv("GOARCH", "amd64") _ = os.Setenv("GOOS", "linux") arg := []string{"build", f原创 2020-09-21 16:55:11 · 2982 阅读 · 3 评论 -
GO 发送邮件,官方连包都帮我们写好了
GO 发送邮件,官方连包都帮我们写好了,真是贴心啊!!!,突然间感觉php不香了。。。package mainimport ( "fmt" "net/smtp" "strings")func SendToMail(user,sendUserName,password, host, to, subject, body, mailtype string) error { hp := strings.Split(host, ":") auth := smtp.PlainAuth("",转载 2020-08-19 17:58:56 · 6339 阅读 · 0 评论 -
go pdf支持中文
找了半天,没找到go支持中文的pdf包,终于找到了,然后记录下呗~~~ 温馨提示:字体 :C:/websocket/simkai.ttf 去你电脑拷贝下字体过来就行了 文件C:/websocket/dog.txt,我这是读取舔狗日记的文本内容然后输入到pdf里面,然后你懂的,不想这个麻烦你直接在DogString赋值就行了 图片 C:/websocket/logo_dog.png是给pdf盖个章package mainimport ( "bufio" "fmt"...原创 2020-07-10 18:18:11 · 1925 阅读 · 0 评论 -
go生成二维码
go生成二维码:package mainimport ( "github.com/skip2/go-qrcode")func main(){ //最常见的二维码 q, err := qrcode.New("https://www.buruyouni.com/?id=3123123123213113213", qrcode.Medium) if err != nil { panic(err) } q.DisableBorder = true//去掉边框 //原创 2020-07-10 17:47:05 · 2003 阅读 · 0 评论 -
go json字符串转换成结构体,json字符串数组转换成切片
例子1:把字符串转换成结构体:{"FromUid":"100","FromName":"HANASHAN"}package mainimport ( "fmt" "encoding/json")//接收普通消息结构体type receiveMessage struct{ FromUid string //发送者uid FromName string //发送者名字}func main(){ str := []byte(`{"FromUid":"100","FromName":原创 2020-06-14 16:27:08 · 15412 阅读 · 0 评论 -
go 并发入门案例之goroutine +channel (学会就初中毕业了)
go 并发入门案例,goroutine +channelpackage mainimport ( "fmt")func writeData(wChan chan int,num int){ for i:=0;i<num;i++{ wChan<-i//把i写入管道 if num%1000==0{ fmt.Println("写入到管道的值:",i) } } close(wChan)//写完关闭管道,写完必须关闭哦,不关闭下面遍历会出错的}func r原创 2020-06-07 00:49:43 · 362 阅读 · 0 评论 -
go jwt创建,校验
package mainimport ( "fmt" "github.com/dgrijalva/jwt-go" "time")const ( JwtSecretKey = "welcome@#dennyYANG'yi9012"//jwt校验字符串 JwtExpireSecond = 30//30秒过期)//存储在jwt的数据type Storejwt struct { UserId int Username string Email string exp int e.原创 2020-05-26 11:59:30 · 721 阅读 · 0 评论 -
go 操作 redis,go存放二维数组到redis
goredis操作redis,https://github.com/go-redis/redis安装:go get github.com/go-redis/redis/v7go存放二维数组到redispackage mainimport ( "encoding/json" "fmt" "github.com/go-redis/redis/v7" "time")func main() { client:=redis.NewClient(&redis.Opti原创 2020-05-10 17:47:07 · 2591 阅读 · 0 评论 -
go 使用 gorm 操作mysql数据库
首先下载gorm包:安装MySQL驱动:go get github.com/go-sql-driver/mysql安装gorm包:go get github.com/jinzhu/gormpackage mainimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql"//这个一定要引入哦!! "time")//返回datatimefunc dateTime()(form原创 2020-05-10 17:21:54 · 8845 阅读 · 2 评论 -
go 获取当前时间、时间戳和时间字符串转换成时间戳,时间戳转换成字符串
1、获取当前时间 1 2 3 4 5 6 7 8 9 10 11 currentTime:=time.Now()//获取当前时间,类型是Go的时间类型Time t1:=time.Now().Year()//年 t2:=time...原创 2020-04-28 23:23:29 · 3852 阅读 · 0 评论 -
go的gin框架安装,使用go mod不用翻墙
首先直接github上面的介绍安装:go get -u github.com/gin-gonic/gin 这样如果你的电脑没有番墙的话是安装不上去的,因为它有连接到google的文件,所以我们需要配置go modGO111MODULE onGOPROXY https://goproxy.ioGOROOT 是你安装go的路径goland需要设置下GOROOT和GO M...原创 2020-04-28 16:56:28 · 10021 阅读 · 2 评论 -
go并发编程笔记
Golanggoroutine是Go语言强大的特性之一,合理的利用它才能发挥最大的价值1、经调查发现初学者一般会犯以下错误使用goroutinefunc goroutineRun(values []int) { for value := range values { go value.test() }}或者使用闭包调用func go...原创 2020-04-28 17:42:40 · 194 阅读 · 0 评论