自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 记录本地部署Stable-diffusion所依赖的repositories和一些插件

sd的repositories

2023-10-06 11:46:29 564

原创 开发日记之go导出xlsx

今天有个需求就是把mysql里面的数据按要求导出成xlsx形式首先需要get这个包:github.com/360EntSecGroup-Skylar/excelize然后可以去到这个主页去看他们的使用方法,我暂时简单的使用了他们的Create spreadsheet(创建电子表格文件):func main() { f := excelize.NewFile() // 创建一个新的工作表 index := f.NewSheet("Sheet1") // Set value of a cell

2021-03-14 12:17:23 259

原创 学习golang之刷题(1)

type MS struct { Name string Cgs int}func b() { hashRun := make(map[string]*MS) mss := []MS{ MS{Name: "m", Cgs: 100}, MS{Name: "m", Cgs: 1}, MS{Name: "mm", Cgs: 4}, } for _, ms := range mss { if h, ok := hashRun[ms.Name]; ok { h.Cgs +=

2021-02-28 22:50:45 199

原创 开发日记之linux杀进程与挂进程去后台运行

今天我放了个exe文件去外网服务器了,准备运行发现端口被占用了,于是想杀死进程:第一步查看进程 ps -aux或ps -ef | grep 关键字上面这个是根据关键字查询进程第二步kill -s 9 进程号杀死之后,我想运行这个exe文件,并一直挂在后台运行:echo &&nohup ./xxx &...

2021-01-28 17:44:08 134

原创 开发日记之登录外网服务器

今天试了下登录公司的线上服务器并放资源,记录一下首先,用git bash 生成 SSH 公钥如前所述,许多 Git 服务器都使用 SSH 公钥进行认证,为了向 Git 服务器提供 SSH公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。$ cd ~/.ssh$ lsauthorized_keys2 id_dsa known_hostsconfig id_dsa.pub我们需要寻找

2021-01-28 17:43:30 600

原创 学习golang之同步原语sync包

可以使用 sync.Mutex 互斥锁。以上被加锁保护的 sum+=i 代码片段又称为临界区。在同步的程序设计中,临界区段指的是一个访问共享资源的程序片段,而这些共享资源又有无法同时被多个协程访问的特性。 当有协程进入临界区段时,其他协程必须等待,这样就保证了临界区的并发安全。这个示例开启了 10 个协程,它们同时读取 sum 的值。因为 readSum 函数并没有任何加锁控制,所以它不是并发安全的,即一个 goroutine 正在执行 sum+=i 操作的时候,另一个 goroutine 可能正在

2021-01-23 14:38:04 128

原创 开发日记之mysql的关键字from前面加表名

SELECT * FROM `t` WHERE chatId='a15' and from='a13' ORDER BY id DESC LIMIT 10特么的今天在写一个sql语句的时候遇到个坑,就是from是mysql的关键字!上面sql语句的会报错,必须要像下面这样SELECT * FROM `t` WHERE chatId='a15' and t.from='a13' ORDER BY id DESC LIMIT 10...

2021-01-23 14:36:36 407

原创 学习golang之Context多线程并发控制神器

协程如何退出一个协程启动后,大部分情况需要等待里面的代码执行完毕,然后协程会自行退出。但是如果有一种情景,需要让协程提前退出怎么办呢func main() { testContext1() //testContext2() //testContext3()}func testContext1() { var wg sync.WaitGroup wg.Add(1) stopCh := make(chan bool) //用来停止监控狗 go func() { defer wg.

2021-01-23 13:54:51 777 1

原创 学习golang之Goroutines 和 Channels 的声明与使用

Go 语言中没有线程的概念,只有协程,也称为 goroutine。相比线程来说,协程更加轻量,一个程序可以随意启动成千上万个 goroutine。要启动一个 goroutine 非常简单,Go 语言为我们提供了 go 关键字go func() { fmt.Println("666") }()那么如果启动了多个 goroutine,它们之间可以声明 channel通信:1.两个channel在两个go func(){}间通信(阻塞主程) c1:=make(chan int,5) go fu

2021-01-17 14:28:49 213

原创 开发日记之golang的map数组根据某个key的value值排序

传一个map数组过来按一个key的value来排序(正序倒序都可实现)package mainimport ( "fmt" "math/rand" "sort")type MapsSort struct { Key string MapList []map[string] interface{}}// Len 为集合内元素的总数func (m *MapsSort) Len() int { return len(m.MapList) }//如果index为i的元素小于in

2021-01-17 14:23:35 1022

原创 开发日记之Go interface{}数据类型转换为string

var data interface{}data = "hahhhh"data.(string)在变量后面加.(string)就可以了

2021-01-17 14:20:36 406

原创 开发日记之golang微信小程序获取unionid

今天有个需求,就是获取微信小程序里面用户的信息一、首先说下背景知识:session_key(会话密匙)和openid(用户唯一标识)具有一次性UnionID机制说明unionid来区分用户的唯一性,在相同微信开放平台帐号下的移动应用、网站应用、小程序、公众号,用户的unionid是唯一的。也就是说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。OpenID机制说明OpenId是用来区分应用的唯一性,在相同微信开放平台账号下不用的应用,其unionid相同

2021-01-17 14:20:01 581

原创 开发日记之golang递归删除文件夹

今天有个需求,就是删除文件夹具体思路是前端传过来要删除的文件的id,我根据这个id找到他的子文件夹,把他们放到数组里面然后删除func recursionFindDel(f mx.RowsMapInterface, del *mx.RowsMapInterface) { //如果有子文件夹,则: if len(f) > 0 { //装 for _, v := range f { *del = append(*del, v) } // for _, v := range

2021-01-08 17:46:44 655

原创 开发日记之go用for{break}实现无限循环

今天要实现一个东西,就是子任务要找到父任务,如果有子中子,那就要无限循环直到找出他的祖宗 //当前子任务的父任务id dadID var dadID int //模拟while语句实现无限循环,找出祖宗 for { //如果为0表示无父任务 if dadID == 0 { //拿到祖宗 break } else { //继续找 } }...

2020-12-25 18:32:58 279

原创 开发日记之go的 interface{} 转[]string

今天用一个map来接受前端传来的值,想把interface{} 转成[]string:m:=map[string]interface{}{ "foods":["豆浆","油条"], "type":"早餐"}strings,_ := m["foods"].([]interface{})array := make([]string, len(strings))for i, v := range strings { array[i] = v.(string)}然后拿到array用...

2020-12-25 18:30:54 750

原创 开发日记之golang集成环信即时通讯的步骤

最近要做一个需求,就是在管理系统里面弄个即时通讯的东西,感觉涉及到tcp socket之类的玩意,自己造轮子是不存在的了,然后发现了环信这个可以白嫖????,调用他们的接口就可以实现了,虽然轻松了许多,但是看文档的过程也挺蛋疼的????,所以记录一下:我这个只是针对后端用golang来集成接口首先要去官网注册一个号来玩主要是要拿到下面这三个b拿到后就能获取到一个token值之后每次访问他们的接口都要带着这个token去然后就是写url,带上请求体请求头访问url,再获取结果,再用好二指禅c

2020-12-18 18:27:03 342

转载 go开发之restful等幂性

HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。幂等性属于语义范畴,正如编译器只能帮助检查语法错误一样,HTTP规范也没有办法通过消息格式等语法手段来定义它,这可能是它不太受到重视的原因之一。但实际上,幂等性是分布式系统设计中十分重要的概念,而HTTP的分布式本质也决定了它在HTTP中具有重要地位。分布式事务 vs 幂等设计为什么需要幂等性呢?我们先从一个例子说起,假设有一个从账户取钱的远程API(可以是HTTP的,也可以不是),我们暂时用类函数的方式记为:bool withdr

2020-12-18 16:27:56 375

原创 go开发之linux服务器的知识

今天试着把项目(golang+vue)放到一台centos的本地服务器上运行第一:在windows下编译出linux可执行的go程序:set GOARCH=amd64set GOOS=linuxgo build 会生成一个没有后缀的xx二进制文件,将该文件放入linux系统某个文件夹下,赋予权限:chmod 777 xx 然后再执行:./xx第二:把前端的dist里面的文件和可运行文件这样放:因为我在go那里写了个东西,可以直接读取到dist里面的index.html(mo

2020-12-12 14:57:30 198 1

原创 开发日记之文件读写记(1)

创建临时文件调用这个函数:package ioutilfunc TempDir(dir, pattern string) (name string, err error) {}如果dir为空,我这边通过os.Getwd()(可以动态获取你的代码所在的目录)查看到他是会默认存到C:\Users\pc\AppData\Local\Temp这个路径,可能返回临时文件使用的默认目录吧下面这个函数是func main() { filepath.Walk("/Users/user/go-learni

2020-12-11 16:26:12 100

原创 开发日记之把url的文件上传至服务器

今天有个需求,就是:获取一个txt文件里面的url→得到图片→上传到服务器保存→服务器会返回一个url→保存url首先我的思路是这样的:数据库建表→先导入txt文件里面的url到一个字段→查表取这个字段get图片→把图片保存到本地→上传到服务器得到新url→存库库:获取txt文件每一行的数据:func GetFileContentAsStringLines(filePath string) ([]string, error) { logger.Infof("get file content

2020-12-04 19:34:23 449

原创 开发日记之注意defer的位置

golang报的一个错:下面代码将报错,提示golang http panic: runtime error: invalid memory address or nil pointer dereferenceresp, _ := http.Get(url)defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)正确的应是:defer resp.Body.Close() 应在 ioutil.ReadAll之后resp, _ :=

2020-12-04 19:31:42 247 1

原创 开发日记之go的文件读写被坑记

https://studygolang.com/articles/29182?fr=sidebar先引用一下这篇文章,结合实际工作经验,我发现:文件读写尽量别用buffer缓冲区来搞,被坑惨了,因为他是要设置size的,不然读写的文件会奇奇怪怪,比如图片底部给你缺一点之类的????最好就是用golang的io/ioutil包来搞,避开bufio这个坑b玩意注意一下这个简单覆盖式文件写入:特点 :1.操作简单一个函数完成数据写入2.新内容覆盖旧的内容3.操作的文件不存在的时候会自动创建filen

2020-12-04 19:30:17 388

原创 开发日记之go当中的map查找

在golang当中不会触发panic,因为它会额外返回一个bool类型的元素表示元素是否查找到。所以可以同时用两个变量去接收,如果第二个变量为True的话,就说明查找成功了。进一步,还可以将这个逻辑和if的初始化操作合在一起:if val,ok:=m["123"];ok{ fmt.Println(val)}这里的ok就表示查找是否成功...

2020-12-04 19:26:26 1195

原创 开发日记之go的时间点比较

总结一下最近用到的go关于时间的知识比较两个时间点相差了多少小时 var hour int64 t1, err1 := time.ParseInLocation("2006-01-02 15:04:05", "2020-09-10 13:00:00", time.Local) t2, err2 := time.ParseInLocation("2006-01-02 15:04:05", "2020-09-10 14:50:00", time.Local) if err1 == nil &&

2020-11-30 10:18:56 1243

原创 开发日记之向数据库datatime类型的字段加null

今天在写一个需求,大概就是增加一个结束时间,如果前端返回空怎么办: m:=map[string]interface{}{ "etime": arg.Etime, "status": 0, } if arg.Etime==""{ delete(m, "etime") }m是我要向数据库插入的一条数据,arg.Etime是前端传给我的结束时间这样做可以给个null给数据库的etime字段...

2020-11-30 10:18:20 207

原创 开发日记之查看端口占用

今天不知道开了什么进程,一直在后台跑,占用了我的端口,所以我想杀死这个进程第一步:netstat -ano查看你有那些端口第二步:找到对应端口的PID值第三步:taskkill -F -PID 696杀死这个进程...

2020-11-30 10:17:00 92

原创 开发日记之Go 中使用指针还是拷贝结构体

指针来共享结构体而不是拷贝本身似乎是性能方面的最佳选择。今天看到项目里有的结构体用指针来共享,有的不用,然后上网查了下资料,发现:指针来共享结构体而不是拷贝本身似乎是性能方面的最佳选择再看了下项目,发现:type RemindArg struct { Content string `json:"content"`}func RemindNew(c *Context) { arg := RemindArg{}} type Context struct { W http

2020-11-24 17:52:27 201

原创 开发日记之git回滚

慎用idea的shift+f6改变量名啊,不然有可能给你改一大片,今天差点翻车,幸好用了idea的git回滚可以把误改的还原

2020-11-20 14:54:47 60

原创 开发日记之go函数名大小写

当函数名开头是小写的话,意思这个函数只能在当前包用,是私有的,如果是大写,则共有func isStatus(status string) string { switch status { case "0": return "未开始" case "1": return "进行中" case "2": return "已完成" default: return "错误" }}如果is的i改为I,则其他包引用此函数时会报错...

2020-11-20 14:53:37 2164

原创 开发日记之go的万能口袋map[string]interface{}{}

妙用map[string]interface{}{}今天我想把一个[]map[string]interface{}{}和一个string放到一个东西里面,这时,可以尝试创建一个map[string]interface{}{},然后:s:="hi"ms:=[]map[string]interface{}{}m:=map[string]interface{}{ "string":s, "maps":ms,}大功告成...

2020-11-19 18:22:34 778

原创 开发日记之mysql直接对int字段传string

mysql是可以直接对int字段传string类型的参数的Mysql会将传入的string(要赋值给int字段的)从左到右的第一个非数值开始,将后面的字符串转成0,在和数值类型相加,select * from table where id='12abc'等效于select * from table where id=12insert、select、update、delete都可以但注意,像UUID这种就不能这么搞了,因为里面带字母;还有,where条件中的表达式最好要符合字段的数据类型,比如in

2020-11-16 18:33:24 2122

转载 Mysql Json类型或Text类型可以建索引吗?(转载)

Mysql Json类型或Text类型可以建索引吗?一、JSON类型答案是不可以为Json类型建索引会报错mysql> CREATE INDEX idx1 ON user (card_pay_data(10));ERROR 3152 (42000): JSON column 'card_pay_data' cannot be used in key specification.二、text类型答案是可以的,但是需要指定长度mysql> CREATE INDEX idx2 ON

2020-11-13 16:15:51 748

原创 开发日记之身份验证

目前做项目遇到过两种身份验证的情况:1.app端的话就是用登陆时产生的token值来认证每个业务接口的请求头部必须带(key)Auth-(value)token值,才能传参2.web端的的话就是用cookie来认证用户登录后产生一个cookie,然后每个接口的请求头部都会自动带有个cookie值了...

2020-11-12 10:11:24 141

原创 开发日记之关于go的结构体的小坑

今天在向数据库插入一个数据时,怎么操作都不行,于是检查发现:结构体里面的变量名首字母要大写,不然无效。。。结构体名字没有首字母大写别的包无法调用

2020-11-11 11:17:44 96

原创 开发日记之定时执行一个函数

t1 := time.Now()//设置期间经历了50秒时间t2 := time.Now().Add(time.Second * 50)fmt.Println("t2与t1相差:",t2.Sub(t1))

2020-11-09 14:56:00 79

原创 开发日记之修改mysql的json数据类型的字段

今天在写一个功能,就是在一个页面详情里添加与删除参与人:首先我mysql里存参与人的字段用的是json的数据类型,所以对于这个字段的增加与删除数据,主要思路是:1.首先我先去查表,把参与人这个字段查出来,然后转到一个[]int{}里面2.把前端传来的参数与[]int{}里面的元素做逻辑处理3.把处理完的[]int{}转成[]byte再存回到数据库...

2020-11-07 16:43:54 251

转载 golang如何删除数组中的元素

Slice删除元素的本质Go语言并没有提供用于删除元素的语法或接口,而是通过利用切片本身的特性来删除元素——追加元素。即 以被删除元素为分界点,将前后两个部分的内存重新连接起来。使用切片的追加(append)特性,利用代码实现。Slice删除元素的实现:由于切片没有语法糖实现删除,因此利用其追加元素的特性完成元素的删除操作;通过内建函数 append() 实现对单个元素以及元素片段的删除。具体的思路就是具体的代码实现如下所示:// 从切片中删除元素func SliceDelete() {

2020-11-04 11:25:42 7699

原创 开发日记之git查看与切换分支

今天开了新项目,准备把仓库pull下来我git init,git remote add之后,准备git pull,然后报错了:我用的是第一种解决方法:然后再查看:发现现在进入了develop分支了拓展一下单词:origin 起源; 源头 remote 远程的...

2020-10-30 10:43:22 57

原创 开发日记之emoji表情后篇

所以现在准备写个emoji的解码与编码函数emoji表情编码:func UnicodeEmojiCode(s string) string { ret := "" //string转成[]int32 rs := []rune(s) //for _, v := range rs { // print(len(string(v))) //} for i := 0; i < len(rs); i++ { //如果发现有文字是emoji则: if len(string(rs[i]))

2020-10-20 16:00:15 264

原创 开发日记之emoji表情前篇

今天弄了个吐血的东西,把mysql保存emoji表情网上基本上都是说把mysql的utf8改成utf8mb4,所以我就操作了一下:

2020-10-20 15:07:24 244

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除