自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据库】LSMTree的并行压缩设计

通过归并排序实现分层,可以实现在常数次数的查找下可以确定key在哪一个SST文件中,从而提高性能。

2024-07-12 11:18:36 893

原创 【C++】I/O多路转接详解(二)

I/O处理单元管理用户连接,一般作为接入层(网关)存在逻辑单元一个逻辑单元是一个用于完成业务的进程或者线程,它分析处理用户数据并将结果传给IO处理单元,直接发给客户端。在集群模式下,一个逻辑单元就是一台逻辑服务器,一般会有多个逻辑单元来进行并行处理任务网络存储单元一般是数据库,缓存,以及文件,或者一台独立服务器。请求队列请求队列是对单元间通信方式的抽象对于服务集群,请求队列是各台服务器之间预先建立的,静态的,永久的TCP连接。

2024-02-05 20:19:12 807

原创 【IM】长连接网关设计探索(一)

DNS劫持是一种网络攻击,通过篡改DNS(Domain Name System)解析结果,将合法的域名解析到错误的IP地址上,从而将用户的请求重定向到恶意网站或者错误的服务器上。服务器认证: HTTPDNS服务器可以使用SSL证书进行身份认证,客户端在与服务器建立连接时验证证书的有效性,确保连接到的是合法的HTTPDNS服务器,防止中间人攻击。显然,在如今的互联网场景下,C10K已经不是所追求的目标,C100K,C1000K是更加现实的需求,但是,C10K问题的提出确实大大推进了服务器设计的发展进程。

2024-02-02 20:46:03 1032

原创 【C++】I/O多路转接详解(一)

在实际的应用场景之中,等待消耗的时间通常是远远高于拷贝的时间的,想要提高IO的效率,很显然,我们需要减少IO过程中等待的比例,换句话说,一个高效的IO,在整个运作周期内,等的比重是很小的,更多的是在进行拷贝。这样的表述是不准确的,原因在于epoll_event结构体作为一个输入输出参数,由用户手动创建,因此不可能优化到零拷贝,大概率是将用户数据拷贝到mmap映射区域,与内核数据关联。可以发现,fd_set是一个结构体,里面有一个 固定大小的 位图, select使用位图种对应的位来表示要监视的文件描述符。

2024-01-30 00:19:41 1001

原创 【C++】一题掌握空指针

一道经典的面试题

2024-01-29 00:50:57 389

原创 【IM】如何保证消息可用性(二)

在第一篇文章中我们了解了保证消息可用性的挑战与目标,现在我们来对于具体的技术方案进行探讨。

2024-01-28 17:57:38 1132

原创 【IM】如何保证消息可用性(一)

可达有序,不重不漏。可靠性:消息一旦显示发送成功,则一定到达对端一致性:任何时刻消息保证由于发送端的发送顺序一致。

2024-01-28 01:28:05 865

原创 【C++】手把手教你实现自己的SkipList

skiplist基于链表进行升级,用于查找,与平衡搜索树和哈希表的作用是一致的,可以作为key或者k/v的查找模型(kv存储引擎redis,leveldb使用了skiplistskiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》。假设每相邻的两个节点升高一层,增加一个指针,让指针指向下下个节点。

2023-12-28 00:18:23 934

原创 【考研】408知识点全整理

个人整理的408知识点文档,持续更新中:计算机408知识点

2023-12-01 23:47:09 488

原创 【分布式】分片存储服务器

除此之外,我们可以采用一个bucket对应一个engine,而不是之前的全局公用,这样不仅实现更简单,同时,数据迁移时我们直接对整个engine进行拷贝即可,不再需要扫描了。简单来说,就是对于属于一组的分片存储服务器,为避免大规模宕机,它们应该处于不同的可用区当中,但是处于同于个资源池内,因为它们的机型同构(硬件配置相同)。这里同学们理解即可,对于不是生产场景的系统,没有必要去严格划分。完成了配置路由服务器之后,我们来到了对存储服务器的重构。

2023-05-29 20:51:16 703

原创 【分布式】分布式共识算法 --- RAFT

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。要满足CAP理论,而分布式共识算法解决的就是CAP理论中的一致性问题。整个一致性问题分为三种问题:其中线性一致性要求所有线程的操作按照一个绝对的时钟顺序执行,这意味着线性一致性是限制并发的,否则这种顺序性就无法保证。由于在真实环境中很难保证绝对时钟同

2023-05-12 11:37:52 1408 1

原创 【分布式】路由配置服务

那为什么说我们的这个配置服务像zookeeper呢,这是因为除了网关与configserver通信之外,存储服务器也会和configserver进行通信。显然,为了防止单点的出现,我们使用raft来做为该服务的高可用的保障,此后我们只需要关注业务层的拓展即可。这里Dsjorney采用的是实现更简单的第一种,对于go语言,单独开一个协程去轮询访问开销并不大。因此在这里我们引入路由配置服务器,专门负责处理集群路由管理,可以理解为这是一个简单的。那么配置服务器里存储了什么呢?

2023-05-01 16:13:46 908 1

原创 【分布式】数据冗余

与多副本将数据完整复制多份进行分布式存储不同,纠删码将一份数据拆分进行分布式存储,这是如何为做到的呢?删码的英文全称是Erasure Code,所以有时我们也会简称为EC。它可以将 n 份原始数据,增加 m 份数据,并能通过 n+m 份中的任意 n 份数据,还原为原始数据。即如果有任意小于等于 m 份的数据失效,仍然能通过剩下的数据还原出来,在Hadoop3.X中已经支持了该功能当然以上计算只是一个简化的方案,目的是帮助大家理解,真正存储中用的校验方式会比这个复杂得多,但效果是类似的。

2023-05-01 15:01:42 3319

原创 【分布式】一致性哈希和哈希槽

学习完哈希槽,我们会发现,一致性哈希算法的缺点在于对于数据分布,节点位置控制并不友好。因此有人又提出了 “哈希槽”的概念,我们平时经常接触的Redis cluster就选择了哈希槽(slot)来实现流量分发。同样,Dsjourney提供的分布式系统中,也是选择了这一方案,同学们可以在体验页面进行自己的哈希槽配置:为了简化同学们的操作,我们在DsJourney中预定义定义了15个槽,槽中的数字代表了存储服务器组(分片服务器组)的组号(gid)。首先哈希槽其实是两个概念,第一个是哈希算法。

2023-04-30 21:23:44 1832 1

原创 考研数据结构与算法整理与提高实战

本文档整理了与考研相关的数据结构与算法,并且会不定期更新内容(算法,题目)。

2023-04-20 21:53:17 84

原创 【Linux】网络传输层详解

UDP,TCP详解

2022-06-12 22:11:27 1033 1

原创 【C++】网络套接字编程(二)

tcp 通信过程简介

2022-06-01 15:13:09 591 1

原创 【C++】C++基础

C++语法拾遗

2022-05-31 23:50:49 7562 7

原创 【C++】网络套接字编程(一)

C/C++ 的socket套接字编程教学

2022-05-31 21:09:15 664

原创 【Linux】程序的编译

Linux 下的编译

2022-05-10 17:50:51 1050

原创 【C++】智能指针详解

今天我们来讲一下c++11中的智能指针。

2022-05-04 19:15:37 9679 1

原创 【C++】异常

C++异常

2022-05-02 17:08:06 1516

原创 【C++】单例模式

单例模式 之 饿汉模式与懒汉模式

2022-04-28 09:42:35 496

原创 【Linux】多线程(一)

Linux多线程(一)

2022-04-26 19:52:45 1198

原创 【图解算法】最小生成树

最小生成树 Prim Kruskal...

2022-04-19 15:16:33 8141 1

原创 【图解算法】一次解决最短路径问题

Dijlstra,Bellman_Ford,SPFA,Floyd 详解

2022-04-15 22:11:02 1167 2

原创 【C++】C++11中的实用语法(一)

c++11 右值引用与移动语义 ,lambda ,包装器。。。。

2022-04-14 16:56:01 530 1

原创 【图解算法】Trie树

Trie树,字符串查找树

2022-04-07 17:07:38 3901

原创 【C++】手把手教你实现自己的set 和map

map and set , AVLTree, RBTree 的讲解

2022-03-25 20:33:24 1539 1

原创 【C++】手把手教你实现自己的unordered_map 和unordered_set

哈希

2022-03-15 13:07:44 3080 3

原创 【Linux】进程间通信

进程间通信

2022-03-10 15:56:32 170

原创 【Linux】基础IO详解

基础IO详解

2022-03-04 10:01:12 597

原创 【Linux】进程控制

进程控制: 进程创建,等待,替换

2022-02-28 22:55:14 396 2

原创 【Linux】进程地址空间

进程地址空间

2022-02-16 12:47:36 623

原创 【Linux】环境变量入门

环境变量

2022-02-14 19:33:23 715

原创 【Linux】进程入门详解

配合Linux环境学习进程

2022-02-14 11:40:28 1592

原创 【C++】单调队列 详解

今天我们来讲一下单调队列与栈。这两种数据结构虽然没有在c++的stl中有直接的实现,但是在做题过程中,很容易有单调队列(栈)的使用,尤其是在一些比较难的题目中。目录单调队列1.1 单调队列介绍1.2 单调队列的应用1.2.1 滑动窗口最大值1.2.1.1 题目描述1.2.1.2 结题思路方法一(优先队列)方法二 (单调队列)1.3 单调队列的模拟实现1.4 其他例题单调队列1.1 单调队列介绍单调队列 是 队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队

2022-02-11 20:13:04 8948 7

原创 【C++】二叉搜索树

今天我们来讲一种特殊的二叉树,二叉搜索树。学好二叉搜索树,有助于我们之后对map和set的理解与掌握。目录二叉搜索树概念二叉搜索树操作1. 查找2. 插入3. 删除二叉搜索树实现二叉搜索树应用二叉搜索树性能分析二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二叉搜索树操作对于二叉搜索树的大部分操作,我们

2022-02-04 15:25:50 966

原创 【C++】深入理解 多态

在上一篇文章,我们了解了继承,今天我们来了解一下多态。目录多态的概念多态的定义及实现1. 多态的构成条件2.虚函数3.虚函数的重写4. 虚函数重写的两个例外5.override 和 final6.重载,重写,隐藏的对比抽象类1. 概念2. 接口继承与实现继承多态的原理1. 虚函数表2. 多态的原理3.动态绑定与静态绑定多态的概念多态指 当完成某行为的时候,不同的对象去完成会产生不同的状态。举个例子:景区买票,普通人买票 为全价买票;学生买票 为半价买票;军人买票为优先买票。多态的定义及实现1

2022-01-25 21:54:43 867 1

原创 【C++】深入理解继承

C++的继承细节

2022-01-23 16:13:15 586 4

空空如也

空空如也

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

TA关注的人

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