Go:永远的神
文章平均质量分 76
Go语言学习内容
楚钧艾克
只要是go的,我都喜欢.先后在绿盟科技和螣龙安科实习,大四未毕业.(我想要工作)
展开
-
Windows系统通过部署wsl + Goland进行跨平台开发
近期项目中因为用到了 Golang库中的 "log/syslog" 包,而这个包是禁止在windows平台上编译的.并且在windows环境上开发也会有诸多不便,如执行makefile文件的make命令,本地开发环境中docker,etcd,redis的搭建等等,而这些通过部署wsl去搭建一个linux环境就很可以很方便的解决了.原创 2024-09-18 15:22:33 · 1086 阅读 · 2 评论 -
Go的并发模型-CSP以及其它并发模型的介绍
常见的并发模型可分为三类: 基于线程与锁的共享内存模型 , Actor模型 , CSP模型.原创 2024-07-19 16:41:19 · 537 阅读 · 0 评论 -
Go语言垃圾回收(GC原理)以及GPM模型设计
1.STW暂停STW(暂停业务逻辑,找出可达和不可达对象)2.对可达对象做上标记标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束.1.程序创建起初,全部标记为白色,将所有对象放入白色集合中.2. 将程序的根节点集合展开,遍历Root Set(非递归形式,只遍历一次).得到灰色节点3.遍历灰色标记表,将可达的对象从白色标记为灰色,遍历之后的灰色,标记为黑色.4.循环执行第三步,直到灰色标记标中无任何对象.5.收集所有白色对象(垃圾)如果三色标记法不被STW保护.当一个白色对象被黑色对象所引用,且原创 2024-06-03 08:21:56 · 1230 阅读 · 1 评论 -
Go语言中的互斥锁(Mutex)和读写锁(RWMutex)
RLock(): 读锁定,等待写操作结束(如果有)RUnlock(): 解除读锁定,唤醒等待写操作的协程(如果有)Lock(): 写锁定,与Mutex完全一致,阻塞等待所有读操作结束(如果有)Unlock(): 解除写锁定,与Mutex一致,唤醒因读锁定而被阻塞的协程(如果有)原创 2024-04-09 21:37:29 · 509 阅读 · 0 评论 -
Go项目中使用ZMQ(zeroMq)的方法以及部署方法
最近写的一个项目,用了一个神奇的玩意儿,zeroMq.本来go使用第三方库只需要go get -u "xxx" ,一下就好了,但这个不行.go语言中拉完三方库后,需要有一个gcc的环境才能将项目正常启动.原创 2024-05-16 18:20:05 · 783 阅读 · 0 评论 -
Go语言切片的简单介绍和底层原理
s1 的长度为2,即可以使用s1[0]和s1[2]操作切片里面的元素,容量为5表示,后面向切片中添加元素时,除非预留容量已满,否则添加操作是不需要在重新分配内存的,使用预留的内存即可.切片原容量为4,因此前两次追加操作不会发生扩容操作,但是因为和切片数组共享内存空间,修改切片的值,会影响到原数组中后面的两个值.当切片的容量不足时,会先重新分配一块更大的内存,将原切片的数据拷贝到新切片之后,再返回新切片,扩容之后在将新数据追加进去.创建完切片之后,底层会分配一个数组,数组的长度就是切片的容量.原创 2023-10-19 20:47:43 · 94 阅读 · 0 评论 -
Go版本管理工具g的使用(Windows版本)
如果不想太麻烦,可以直接把已经存在的Go相关的环境变量全部清除.原创 2024-02-01 11:15:27 · 678 阅读 · 0 评论 -
Go协程的简单介绍
进程指的是一个在内存中运行的程序,是应用程序的启动实例,每一个进程都有独立的内存空间,不同的进程通过进程的通信方式来通信.进程是资源分配的最小单位.线程从属于进程,一个进程至少会包含一个线程,线程是CPU能够进行运算调度的基本单位.一个进程中可以有多个线程,而这多个线程之间可以共享这个进程的资源并通过共享内存等线程间的通信方式来通信.原创 2023-12-08 12:06:09 · 202 阅读 · 1 评论 -
Go-zero中分布式事务的实现(DTM分布式事务管理器,在一个APi中如何调用两个不同服务的rpc层,并保证两个不同服务之间的业务逻辑同时成功)
1.DTM分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。2.SAGA事务模式,SAGA事务模式是DTM中常用的一种模式,简单易上手.(当然还有其它更多的事务模式,这里采用的SAGA只不过是其中一种较为简单的方法)3.Go-zero框架,ETCD服务注册...和。原创 2024-03-03 14:25:18 · 1447 阅读 · 0 评论 -
使用GORM集成Casbin基于RBAC模型,实现鉴权
Casbin鉴权是真的方便.原创 2024-01-28 22:25:08 · 879 阅读 · 0 评论 -
Go语言并发赋值的安全性
结构体中有多个字段,此时struct赋值时,并不是原子操作,各个字段之间独立,在并发操作时可能会出现异常.原创 2024-04-20 08:35:43 · 310 阅读 · 0 评论 -
Go语言中的defer执行时机以及panic如何正常恢复
Go语言的函数中return语句在底层并不是原子操作,它分为给返回值赋值和RET指令两步.而defer语句的执行的时机就在返回值赋值操作后,RET指令前.原创 2024-03-31 10:20:49 · 728 阅读 · 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 · 1112 阅读 · 0 评论 -
Go语言map的使用
map的初始化方法分为字面量初始化和使用make初始化。原创 2023-11-20 22:43:48 · 720 阅读 · 1 评论 -
Go变量声明简短模式
变量声明的简短模式不能提供数据类型,也只能在函数内部使用.原创 2024-03-31 10:10:16 · 390 阅读 · 0 评论 -
Go语言通道
1.变量方式通过这种方式声明的通道,值为nil.2.使用内置函数make。原创 2023-11-02 22:43:46 · 71 阅读 · 0 评论