自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈Redis适合做消息队列吗?

Redis有三种方法可以作为消息队列使用,List数据结构,发布/订阅模型,以及Stream数据结构。这三种方法各自有什么利弊?Redis作为消息队列和专业的消息队列对比如何?Redis适合作为消息队列吗?

2023-08-13 23:30:25 349

原创 Go语言的Mutex的演进

Go语言的Mutex也是经过了几次的迭代才成为了今日能适应Go语言的高并发特性的重要的同步原语。本文聊一聊Go语言的几个发展阶段,以及每个阶段的特性、优点和缺点。

2023-08-18 22:37:41 204

原创 golang编辑器远程连接服务器的操作方法

golang编辑器远程连接服务器的操作方法

2023-04-19 17:50:05 1146

原创 slava项目(7):实现一致性哈希算法(含一致性哈希算法的详解)

一致性哈希算法的详细解析,包含一致性哈希算法的原理,优点、存在的问题以及解决办法等;用Go语言实现一致性哈希算法,并对redis采用的分布式集群算法进行说明。

2023-03-08 20:39:42 270

原创 slava项目(6):实现数据库的事务功能(含乐观锁的详解和实现)

实现Slava项目的事务操作,涵盖开启事务、提交事务、撤销事务,以及重点分析了乐观锁实现Watch(监控键值)

2023-02-23 22:12:39 205 1

原创 slava项目(5):实现复杂操作的锁LockMap

为了解决给每一个key加锁的内存泄漏问题,作者考虑给每个小的map进行加锁。原因是因为,我们将内存数据切分成了很多个小的哈希表,小的哈希表的数量远比我们的key数量要少,这时候给每个小的哈希表初始化锁,即使锁不释放,不delete也不会造成太多的内存泄漏。

2023-02-21 22:30:43 185

原创 解析Go语言的内存分配机制

Go语言的底层内存分配机制。

2023-02-20 20:48:20 576

原创 slava项目(3):构建内存数据库

slava项目总结(3):利用Go语言构建内存数据库,实现一种高并发场景下的k-v存储库

2023-02-17 14:07:47 189

原创 slava项目(4):Go语言编程规范

Go语言的编程开发规范。比如,注释,变量命名,函数命名等

2023-02-17 11:10:18 234

原创 Go语言map的详解(第二篇)之并发安全的sync.Map

sync.Map的底层结构,底层的原理,以及优缺点

2023-02-14 10:22:38 1917

原创 从golang编辑器对项目进行git操作

golang编辑器进行git的操作

2023-02-12 13:30:49 2442

原创 golang编辑器中“cannot find declaration to go to”(出现无法找到要转到得声明)的问题

golang编辑器中“cannot find declaration to go to”(出现无法找到要转到得声明)的问题

2023-02-12 11:03:36 1128

原创 slava项目(2):分数据库操作中的Flush函数

分数据库中的Flush函数的实现

2023-02-11 17:52:10 163

原创 slava项目(1):golang中type定义函数及其使用

利用type字段可以自定义类型,定义出来的是一个变量,具有变量的性质,相同底层类型的变量之间是可以相互转换。

2023-02-11 16:00:15 242

原创 Go语言的map详细总结(第一篇)

Go语言的map详解,包括Go语言map的底层机制,哈希碰撞,key的定位过程,以及map的扩容条件及机制,map的并发安全性以及如何比较两个map相等.....

2023-02-10 22:40:54 3050

翻译 Understanding Real-World Concurrency Bugs in Go(了解Go在真实世界并发错误)(第二篇)

随着像Go这样的新语言的新编程习惯和语义,我们应该更加关注这些非死锁阻塞错误,并扩展传统的并发错误分类机制。我们只研究了已修复的并发错误。为了理解Go和传统语言之间的区别,我们还分析了gRPC的另一种实现,即gRPC-C,它是在C/C++中实现的。根据我们的分类方法,共有85个阻塞错误和86个非阻塞错误,共有105个错误是由错误的共享内存保护引起的,66个错误是由于错误的消息传递引起的。使用普通函数和匿名函数的goroutine/线程创建站点的数量,创建站点的总数,以及每千行代码的创建站点。

2023-02-08 09:43:02 154

原创 Go语言在什么情况下会发生内存泄漏

Go语言中内存泄漏的场景分析

2023-02-06 16:07:04 753

原创 Go语言的iota语法糖

iota的详细用法,总结

2023-02-03 22:40:33 1429

原创 Go语言中select函数的使用

在go语言中,select语句就是用来监听和channel有关的I/O操作的,当I/O操作发生时候,就会触发相应的case动作。

2023-02-03 11:14:31 418

翻译 Understanding Real-World Concurrency Bugs in Go(了解Go在真实世界并发错误)(第一篇)

Go是一种静态类型的编程语言,旨在提供一种简单、高效、安全的方法来构建多线程软件。自2009年创立以来,Go已在生产和开源软件中获得了大量采用。Go提倡使用mes-sage传递作为线程间通信的手段,并提供了几种新的并发机制和库来简化多线程编程。了解这些新建议的含义以及消息传递和共享内存同步在程序错误或错误方面的比较非常重要。不幸的是,据我们所知,目前还没有关Go一致性错误的研究。

2023-02-03 10:26:47 101

原创 知道cpu数为2的时候,一般开多少个线程比较合适

CPU开启的线程数量主要取决于所处理的问题类型

2023-02-01 20:59:26 918

原创 Go语言Channel的底层原理详解

“不要通过共享内存的方式来通信,而要通过通信的方式来共享内存。”Go语言的高并发特性依赖于goruntine和channel,采用channel进行通信可以控制并发的数量,可以使得生产者和消费者解耦,提高代码可读性。

2023-01-31 22:23:18 1283

原创 Go的性能测试与性能优化建议

Go的语言的不同数据结构的性能测试以及性能优化建议

2023-01-31 20:58:34 454

原创 Go中协程栈不够大怎么办?逃逸分析和栈扩容

Go的栈空间不足,以及栈空间扩容机制

2023-01-19 00:29:15 620

原创 Go的垃圾回收(GC),详细总结

详细的Go语言垃圾GC分析,包括GC的简介、根节点、GC的三色标记法、GC的屏障、GC的触发时机、GC的调优,以及GC的分析工具等

2023-01-18 23:23:01 4120

原创 【Git错误处理】

git操作clone超时

2023-01-16 15:27:44 121 1

空空如也

空空如也

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

TA关注的人

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