自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

写写代码

个人站点:orangelsk.zone/ 博客园:www.cnblogs.com/orangelsk/

  • 博客(7)
  • 收藏
  • 关注

原创 AVLTree 一种自平衡的二叉查找树

什么是平衡树对于已有的二叉查找树,它最坏情况下会退化为链表,查找效率降至O(n),我们希望的是插入或者删除元素始终能使得维持成完全二叉树的样子(完全二叉树n个节点,其高度为logn)这样查找效率就能维持在logn。平衡树字面意义上就是说让树的两边看起来是均匀的,只要满足任意节点的左子树和右子树高度差不大于1,那么就称这棵树为平衡树。AVL树在平衡树的基础上还满足二叉查找树的性质,所以AVL树也称为自平衡二叉查找树。AVL树的旋转想维护一棵AVL树,必然需要在高度失衡时对节点进行调整,使得高度

2021-12-21 15:42:27 697

原创 hashtable 一种根据key值直接进行访问的数据结构

hash是什么哈希用来将很大范围的数(比如[10^-9, 109]),映射到一块较小的区间内。比如对于109,我们想让它映射到[0, 105]这块区间(也可以理解为数组)内,可以直接对109进行取余(10^9 % 10^5),然后根据余数确定该数在区间内的落点。这里的取余操作就叫做hash,取余也是常见的一种hash算法。我们使用hash就是为了节约空间,如果内存大小无限,我们直接选择开一块2 * 10^9的数据存放数据即可,但是这块内存可能有很多空闲区域。实际中内存是有限的,我们需要尽可能的将大范

2021-12-16 15:47:34 971

原创 golang分布式缓存

前言https://github.com/k-si/Janney是我模仿groupcache完成的一个分布式缓存,体积较小,适合学习分布式缓存思想。ps:仓库命名习惯用一些姓氏~groupcache的思想cache通过内存加速数据访问,如果访问的数据不在缓存中,那么就需要去别处获取该数据,方式一般有从本地数据库获取,或是请求远程节点,从别的节点去拿数据。groupcache本身想要的是每个节点存储专门的数据,比如对于一个指定的key,每次访问这个分布式集群,我都想让key的请求打到唯.

2021-12-16 00:59:32 1357

原创 single flight防止缓存击穿

什么是缓存击穿我们常说的缓存问题:缓存雪崩,缓存击穿,缓存穿透都分别指什么呢?简单来说:缓存雪崩是指缓存在同一时间全部失效,导致压力全部转移到DB上。 缓存击穿指的是某个key在失效的这一刻,有大量的请求数据,这些数据压力也转移到了DB。 缓存穿透指的是大量数据访问一个不存在的key,导致每次都必须请求DB,DB压力过大。如何减少瞬间压力像缓存雪崩这种现象,一般是由于缓存服务器宕机(key哈希失效),大量的key设置了相同失效时间导致。可以通过哈希环或者人为控制key的失效时间来避免。

2021-12-07 09:59:03 568

原创 mmap 通过地址映射读写文件

预备知识理解mmap,首先要理解什么是用户态和内核态,其次要了解虚拟内存。简单的说,用户态内核态指的就是cpu指令集的权限程度,我们用户程序并没有操作硬件的权限,于是很多操作都需要转为内核态才能被执行。我们的物理内存也是分为用户空间和内核空间的,比如32位处理器的寻址范围为4G,那么低地址的3G就是用户空间,高地址的1G是内核空间。其次是虚拟内存,虚拟内存是一种感受,我们作为os的使用者,能加载的程序大小其实可以超过物理内存,这是因为内存空间不足时,访问一个不存在于内存的数据,会触发缺页中断,进

2021-12-05 02:47:29 559

原创 一致性哈希算法

普通哈希在分布式场景下,往往涉及到负载均衡,比如分布式缓存这种应用,我们希望如果获取相同的key,尽量映射到同一台机器上,这样可以在内存中最快速的获取,如果相同的key总是打到不同的机器上,可能由于缓存淘汰导致该缓存值被替换掉,进而需要读取磁盘,这样性能就会大打折扣。基于此,我们可以获取key值的哈希值,该哈希值对应的就是机器节点,比如key和节点个数做取余运算(key%n),这样每次相同的key必然会打到同一台机器上。但是问题又出现了,分布式环境中最常见的问题就是节点宕机,如果一台节点下线了,

2021-12-04 00:09:15 916

原创 CRC 循环冗余校验

参考:循环冗余校验(CRC)算法入门引导_Ivan 的专栏-CSDN博客_crc校验CRC校验原理及步骤_D_leo的博客-CSDN博客_crc校验crc冗余校验是为了保证接收方收到数据后,能确认数据是完好无损的。crc的思想假象实际中,a向b传小纸条,b怎么知道小纸条上的数据有没有被路上的其他同学修改过呢?聪明的a和b约定好,接受的数据必须按照x进行一次运算,如果运算的结果没有余数,就可以相信纸条内容是正确的。如果a真实传输的数据,运算之后就有余数,那这种约定不久失效了吗?这时聪明.

2021-12-03 20:07:40 103

空空如也

空空如也

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

TA关注的人

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