自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 6.824 lab 2A 记录

本部分中,我们需要实现 Raft 的 leader 选举和心跳检测(通过发送RPC 请求但是不携带日志条目)。在 2A 部分中,我们的目标是选举一个 leader,并且在没有发生故障的情况下使其继续保持 leader,如果发生故障或者老 leader 发送 / 接受的数据包丢失则让新的 leader 接替。最终运行来测试代码。

2023-10-22 17:13:37 128

原创 golang sync.Map 源码分析

由于read没有,所以读dirty,并且调用m.missLocked(),m.misses为1,此时len(dirty)为1,len(dirty)>=misses时候,会进行第一次晋升,dirty晋升为read,dirty被清空为nil, amended为false。dirty同步到read的时候,他们两个map,都指向同一个&entry,这样在后面我们就可以通过cas修改值,修改后,无论从read还是dirty读取,都会是新的值。是线程安全的,读取,插入,删除也都保持着常数级的时间复杂度。

2023-10-17 18:39:03 220

原创 golang sync.RWMutex源码解析

首先会加互斥锁,然后会检查是否有其他的读锁,检查方式就是readerCount原子操作-rwmutexMaxReaders,这个时候readerCount变负的阻止写,然后这个值再补回+rwmutexMaxReaders得到r,如果r!首先解释一下为什么可能有饿死的情况发生:写操作要等待读操作结束后才可以获得锁,写操作等待期间可能还有新的读操作持续到来,如果写操作等待所有读操作结束,很可能被饿死。是个整型值,用于表示读者数量,不考虑写操作的情况下,每次读锁定将该值+1,每次解除读锁定将该值-1。

2023-10-16 16:13:18 159 1

原创 golang sync.Mutex解读

首先,它检查互斥锁的状态m.state是否为 0,即是否没有被锁住。如果是,则表示可以尝试加锁,使用原子操作尝试将状态从 0 转换为(1)。如果这一步成功,表示当前 goroutine 已成功获得锁,可以立即返回。如果上述快速路径失败,即互斥锁的状态不是 0,或者 CAS 操作失败,那么会进入慢路径,调用方法来进一步尝试获得锁。方法中的主要部分是一个 for 循环,它用来处理互斥锁的各种状态和竞争情况。首先,它会检查锁的状态m.state,并尝试在锁被获取或处于饥饿状态的情况下自旋等待锁。

2023-10-15 12:15:09 172 1

原创 Golang逃逸分析-1

当函数内部定义了一个局部变量,然后函数返回这个变量的指针,然后这个变量又在其他地方引用,就发生了逃逸。因为局部变量是在栈上创建的,当函数返回后会销毁。

2023-09-14 19:02:53 77 1

原创 go-zero实战微服务项目推荐|第六届字节青训营大项目|简易版抖音

这个项目还是花费了我们很多心思的,如果你觉得对比有所帮助,请点击star支持我们,star就是对我们最大的鼓励🥰🥰🥰。

2023-08-27 18:17:55 592 1

原创 Picgo+Github图床时候上传报错:Error connect ETIMEDOUT 20.205.243.168443n at TCPConnectWrap.afterConnect

今天突然发现typora上传图片的时候失败了,去picgo日志里面看估计就是网络的问题,但是各种找改host啥的都不行。

2023-08-20 18:13:56 387 2

原创 力扣刷题|2.两数相加、445. 两数相加 II

主要是进位是关键,首先要把循环的结束条件想好:两个链表走完,没有进位。可以用9,8这样两个数据想,然后就是val%=10拿到要存的val,carry=val/10,然后每次进循环前,要把val=carry。思路:这题就是上面题目倒序了一下,我们利用栈把链表翻转一下,然后添加节点也从末尾开始添加。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。你可以假设除了数字 0 之外,这两个数字都不会以零开头。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。

2023-07-31 18:24:19 37 1

原创 151. 反转字符串中的单词(middle)|剑指 Offer 58 - I. 翻转单词顺序(easy)

中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。思路:我们完全可以使用stringstream的做法,将每个单词拆分出来,然后倒序拼接每个单词。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。**注意:**输入字符串。

2023-07-29 17:17:38 45

原创 Gopan-基于go-zero实现慕课网实战仿百度网盘项目

外接腾讯云oss服务,手机号一键登录/注册jwt双token鉴权自己实现GitHub OAuth进行第三方登录valiator包进行校验,并且加上中文翻译器。

2023-07-28 11:54:38 753 2

原创 golang模仿gorm实现一个简易的orm框架

项目地址:https://github.com/liuxianloveqiqi/xianorm。

2023-07-21 16:11:49 57 1

原创 docker-compose和traefik实现本机PXC集群的快速搭建和负载均衡

Percona XtraDB Cluster (PXC) 是一个完全开源的 MySQL 数据库集群解决方案,它可确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可扩展性。它将 Percona Server 和 Percona XtraBackup 与 Galera 库集成在一起,以实现同步多源复制。

2023-06-23 15:37:36 610 1

原创 Go 语言包的管理

当我们从go的官网下载二进制文件的时候后,我们还需要配置 3 个环境变量,也就是 GOROOT、GOPATH 和 GOBIN。这里我可以简单介绍一下。GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。GOBIN:GO 程序生成的可执行文件的路径。在早期的Go版本中,Go语言使用GOPATH环境变量来指定工作区目录,用于存放Go源代码和依赖包。srcpkg和bin。这是Go的传统方式,不使用Go Modules。

2023-05-29 19:36:29 284 1

原创 docker-compose一键实现本机minio分布式集群部署,并实现traekfix的代理

它将 Traefik 配置为在端口 9000 上侦听 API,并为 API 和 Web UI 启用不安全模式。9000端口就是minio统一api的调用端口,8080是traefik的web UI 端口。:该节将主机上的目录挂载到容器内的目录。:该部分将容器的端口 9001 映射到主机的端口 9001。定义一个调用的网络,该网络将用于连接服务。:该部分从容器公开端口 9000。

2023-05-15 17:57:37 1175

原创 使用docker-compose快速实现mysql的主从复制

上述配置文件使用了镜像,并创建了两个服务master和slave。master服务将在本机的 3306 端口上运行,slave服务将在本机的 3307 端口上运行。你可以根据需要修改端口号和密码。此标志将 MySQL 服务器的服务器 ID 设置为 2。参与复制的每个服务器都应具有唯一的服务器 ID。此标志在服务器上启用二进制日志记录,这会在二进制日志文件中记录对数据库的更改。此标志指定只有对“gopan”数据库所做的更改才应包含在二进制日志中。此标志启用中继日志记录。

2023-05-15 17:54:47 344

原创 golang 操作mongodb实现CRUD

新建docker-compose文件引入mongo-driver。

2023-05-06 11:46:25 275

原创 从零开始实现基于go-zero框架的微服务电商项目(二)——User服务的基础搭建

这一章实现了user服务的api, model,rpc的基础配置,下一章将开始实现gorm,redis,腾讯云SMS,validate校验数据格式,md5加密的配置。

2023-04-28 09:42:48 301

原创 从零开始实现基于go-zero框架的微服务电商项目(一)——背景介绍及环境搭建

基于最近楼主开始学习go-zero,官方给的文档也看的差不多了,由于没有写过微服务的项目,这次正好写一个微服务项目练练手,为什么选择电商项目呢?因为这一项目资源广泛,而且有官方的参考项目。新建docker-compose.yaml文件,先就这些后续有要求可以加入。先copy一个图,大概就是六大服务,下一章我们将开始完成User服务。Gprc,go-zero的插件。

2023-04-28 09:37:39 741 1

原创 从零开始实现基于go-zero框架的微服务电商项目(三)——gorm、redis、腾讯云SMS、validate、md5加密、日志输入到kafka的添加

这一章我们引入了gorm、redis、腾讯云SMS短信服务、validate校验参数、md5加密和解密、日志输入到kafka,下一章我们将完成api的编写。

2023-04-28 09:30:16 1073 1

原创 Mac 保姆级别配置 grpc 双向认证证书

请记住这个密码后面要用!!!## 需要输入密码。

2023-04-14 09:47:26 162 1

原创 Mac golang grpc安装STL证书踩坑和配置

生成pem和key(在本地调用gprc)把pem和key copy到项目,然后调用grpc。

2023-04-13 01:52:05 295 1

空空如也

空空如也

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

TA关注的人

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