Go:永远的神
文章平均质量分 74
Go语言学习内容
楚钧艾克
只要是go的,我都喜欢
展开
-
Go语言中的互斥锁(Mutex)和读写锁(RWMutex)
RLock(): 读锁定,等待写操作结束(如果有)RUnlock(): 解除读锁定,唤醒等待写操作的协程(如果有)Lock(): 写锁定,与Mutex完全一致,阻塞等待所有读操作结束(如果有)Unlock(): 解除写锁定,与Mutex一致,唤醒因读锁定而被阻塞的协程(如果有)原创 2024-04-09 21:37:29 · 423 阅读 · 0 评论 -
Go项目中使用ZMQ(zeroMq)的方法以及部署方法
最近写的一个项目,用了一个神奇的玩意儿,zeroMq.本来go使用第三方库只需要go get -u "xxx" ,一下就好了,但这个不行.go语言中拉完三方库后,需要有一个gcc的环境才能将项目正常启动.原创 2024-05-16 18:20:05 · 423 阅读 · 0 评论 -
Go语言切片的简单介绍和底层原理
s1 的长度为2,即可以使用s1[0]和s1[2]操作切片里面的元素,容量为5表示,后面向切片中添加元素时,除非预留容量已满,否则添加操作是不需要在重新分配内存的,使用预留的内存即可.切片原容量为4,因此前两次追加操作不会发生扩容操作,但是因为和切片数组共享内存空间,修改切片的值,会影响到原数组中后面的两个值.当切片的容量不足时,会先重新分配一块更大的内存,将原切片的数据拷贝到新切片之后,再返回新切片,扩容之后在将新数据追加进去.创建完切片之后,底层会分配一个数组,数组的长度就是切片的容量.原创 2023-10-19 20:47:43 · 62 阅读 · 0 评论 -
Go版本管理工具g的使用(Windows版本)
如果不想太麻烦,可以直接把已经存在的Go相关的环境变量全部清除.原创 2024-02-01 11:15:27 · 528 阅读 · 0 评论 -
Go协程的简单介绍
进程指的是一个在内存中运行的程序,是应用程序的启动实例,每一个进程都有独立的内存空间,不同的进程通过进程的通信方式来通信.进程是资源分配的最小单位.线程从属于进程,一个进程至少会包含一个线程,线程是CPU能够进行运算调度的基本单位.一个进程中可以有多个线程,而这多个线程之间可以共享这个进程的资源并通过共享内存等线程间的通信方式来通信.原创 2023-12-08 12:06:09 · 74 阅读 · 1 评论 -
Go-zero中分布式事务的实现(DTM分布式事务管理器,在一个APi中如何调用两个不同服务的rpc层,并保证两个不同服务之间的业务逻辑同时成功)
1.DTM分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。2.SAGA事务模式,SAGA事务模式是DTM中常用的一种模式,简单易上手.(当然还有其它更多的事务模式,这里采用的SAGA只不过是其中一种较为简单的方法)3.Go-zero框架,ETCD服务注册...和。原创 2024-03-03 14:25:18 · 1171 阅读 · 0 评论 -
使用GORM集成Casbin基于RBAC模型,实现鉴权
Casbin鉴权是真的方便.原创 2024-01-28 22:25:08 · 633 阅读 · 0 评论 -
Go语言并发赋值的安全性
结构体中有多个字段,此时struct赋值时,并不是原子操作,各个字段之间独立,在并发操作时可能会出现异常.原创 2024-04-20 08:35:43 · 273 阅读 · 0 评论 -
Go语言中的defer执行时机以及panic如何正常恢复
Go语言的函数中return语句在底层并不是原子操作,它分为给返回值赋值和RET指令两步.而defer语句的执行的时机就在返回值赋值操作后,RET指令前.原创 2024-03-31 10:20:49 · 606 阅读 · 1 评论 -
Go语言并发控制
children 中记录了由此context 派生的所有child , 此context被"cancel"时,会把其中所有的child都cancel掉.cancelCtx与deadline和value无关 , 所以只需要实现Done() 和 Err() 外露接口即可.有一种context,它不是用于控制呈树状分布的goroutine , 而是用于在树状分布的goroutine之间传递信息.Value()方法就是此种类型的context,根据key查询map集合中的value.原创 2024-04-20 08:35:50 · 1076 阅读 · 0 评论 -
Go语言map的使用
map的初始化方法分为字面量初始化和使用make初始化。原创 2023-11-20 22:43:48 · 411 阅读 · 1 评论 -
Go变量声明简短模式
变量声明的简短模式不能提供数据类型,也只能在函数内部使用.原创 2024-03-31 10:10:16 · 357 阅读 · 0 评论 -
Go语言通道
1.变量方式通过这种方式声明的通道,值为nil.2.使用内置函数make。原创 2023-11-02 22:43:46 · 51 阅读 · 0 评论