- 博客(25)
- 收藏
- 关注
原创 redis 杂记
是保证一串命令执行不被别的其他命令插入进来,保证数据的一致性,但是不会保证事务的原子性:既如果事务中一条命令出错,那其他已经执行的命令并不会回滚(在实际的使用中,命令错误是无法继续的,当前的事务还在QUEUE中,还没执行)目前还没想好复现这个错误的情况。
2025-04-10 20:56:41
142
原创 golang中channel的sendx、recvx和sendq、recvq的作用和区别
当一个 goroutine 尝试向一个已满(对于有缓冲 channel)或者没有接收者(对于无缓冲 channel)的 channel 发送数据时,这个 goroutine 会被阻塞,并且会被放入 sendq 队列中等待,直到有其他 goroutine 从该 channel 接收数据。当一个 goroutine 尝试从一个没有数据的 channel 接收数据时,这个 goroutine 会被阻塞,并且会被放入 recvq 队列中等待,直到有其他 goroutine 向该 channel 发送数据。
2025-04-10 10:41:06
277
原创 golang select 琐碎
上述代码中,管道关闭,所以<-ch依旧是可读,所以会进入到此case里面;如果将close(ch)给注释掉,则会一秒后进入第二个case里面。select case中的case是检测channel是否可读和可写。select case 做多路复用。
2024-11-28 11:57:34
159
原创 golang 管道channel相关问题
上面代码运行肯定会报deadlock的死锁错误,但是下面这样,如果有一个协程一直在运行,则不会报错,大致就是因为协程还在运行,所属主协程main不确定是否会往管道c1中写数据,所以就会一直阻塞在这里,上面的代码块或者没有一直执行的协程,那main就会知道不会再往管道c1中写数据了,就会报错(
2024-08-13 19:48:41
287
原创 golang context 备注
其中的OK指的是当前的ctx是否设置了过期时间,所以上面的代码中ok是true,返回dateTime变量是ctx的到期时间。一.## 关于deadline函数返回的布尔值OK。这里的OK则返回false,因为并没有过期时间。
2024-08-09 19:47:15
130
原创 go 协程中读取的变量指变化
证明这个函数的变量是跟channel一样的,只要go func一直在执行,那读的这个变量的值也是会变的。所以最后的结果是1 2 3 4 5 6 7 8 9 10。一开始以为输出的结果是0 0 0 0 0 0 0 0。
2024-08-07 16:13:09
135
1
原创 golang context WithTimeout 琐碎
运行的结果是:起始时间。。。。。。aa watch ctx2收到信号,监控退出,time2= 1712829564parent收到信号,监控退出,time= 1712829564起始时间。。。。。。aa watch ctx2收到信号,监控退出,time2= 1712829663parent收到信号,监控退出,time= 1712829663。
2024-04-11 18:06:43
463
1
原创 关于defer defer()() 后面跟返回函数
会 根据defer所在位置先执行f1()函数,然后在main的return 前去执行f1的返回函数,所以上面的值是。defer f1()() 这个执行顺序问题。
2023-07-04 12:01:08
90
原创 golang管道channel顺序执行报错deadlock
当golang顺序执行时,会报错fatal error: all goroutines are asleep - deadlock!package mainimport ( "fmt")func main() { ch := make(chan int) ch<-1 c1 :=<-ch fmt.Println(c1)}不知道有没有跟我一样好奇,为什么下面读取了管道的内容,还是会报错呢,其实这样是因为对主程main而言,到ch<-1时,
2022-05-05 22:45:25
543
原创 golang使用range获取管道channel 内容
package mainimport ( "fmt" "time")func t1(ch chan int){ for s:=range ch{ fmt.Println(s) }}func main() { ch := make(chan int,3) go t1(ch) ch<-1 ch<-2 ch<-3 time.Sleep(time.Second * 6)}
2022-05-05 22:35:20
1060
原创 golang 关于append
func main(){ s1 :=make([]int,0,5) s1 =append(s1,1,2,3) s2 :=append(s1,4,5) fmt.Println(s2) //[1 2 3 4 5] s3 :=append(s1,6) //此处相当于对s2指向的数组再做修改 fmt.Println(s1) //[1 2 3] fmt.Println(s2)//[1 2 3 6 5] fmt.Println(s3)//[1 2 3
2022-05-01 23:56:31
278
原创 Golang 简单链表
Golang 简单链表针对golang出学者,写一个简单的单向链表来进行练手,目前只有在链表添加功能直接贴代码package mainimport( "fmt" )type node struct{ name string next *node}func addNode(name string,rootNode *node){ var curNode node curNode.name = name curNode.n
2021-10-29 18:32:27
198
原创 golang 指针和引用
var s = []string{“a”, “b”, “c”}fmt.Printf(“s 的内存地址 = %p\n”, &s) //这个是变量s的地址fmt.Printf(“s 指向的内存地址 = %p\n”, s)//这个是变量s对应的切片的地址
2021-01-19 19:44:49
807
1
原创 xtrabackup备份与恢复的脚本
xtrabackup备份与恢复的脚步01 02 * * * cd /home/xtrabackup_mysql && ./bk_mysql.sh fullbackup >> log/run.log 2>&1 &#!/bin/bashecho "==============new backup================="echo "===============arg:[$@]=================="dateexport
2020-12-08 17:11:39
325
原创 mysql主从同步因字段类型不一致导致主从失败
@[TOC](Column 3 of table ‘xxxxx’ cannot be converted from type ‘int’ to type ‘varchar(32)’)Slave SQL 报错信息如下:Column 3 of table ‘xxxxx’ cannot be converted from type ‘int’ to type ‘varchar(32)’这个错误是指:Column 3 字段类型由主库的int类型字段写入到从库时,字段是varchar类型中,是属于类型不一致导致
2020-11-24 11:47:25
1450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人