自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

1:收到 psync?-1命令,bgsave生成RDB发送到从库2:复制积压缓冲区数据进行同步3:命令传播。

2023-02-11 17:47:28 118

原创 redis单机数据库源码解析

1:在读取完数据后,如果要返回内容,如果内容比较小,那么可以直接放在输出数组中返回,如果比较大就需要防止输出链表中返回并激活写事件,写完之后记得取消。2:并同时将这个redis-clent文件描述符添加到epoll事件管理机制中,进行监听的读事件以及写事件。3:同时根据argv[0]寻找到该函数的执行函数复制给client对象中的command函数。2:解析输入缓冲区中的内容,分解到client对象中的argc以及argv中。1:读取内容到redis-client结构体中的输入缓冲区中。

2023-02-10 16:38:44 164

原创 redis3.0源码解析之主从复制及哨兵机制

5:主服务器收到同步信息后根据id信息以及缓冲区是否发生覆盖来决定是否进行开启RDB,若开启RDB此时propagate传播到从服务器的信息会被暂存到客户端输出缓冲区中,等到RDB结束的时候重新触发客户端写事件将积压的缓冲区内容发送给从服务器,实现主从同步。1.1:首先通过info,publish:hello建立连接,连接又分为命令连接以及订阅连接,哨兵与哨兵之间没有订阅连接,因为订阅连接的主要目的是为了让哨兵与哨兵互相得到彼此信息。2:在定时器中从服务器向主服务器发起TCP连接。

2022-10-29 23:06:43 184

原创 redis3.0源码学习之可持久化化操作

RDB:类似于快照存储某一时刻的数据,对数据进行压缩,体积小。AOF:存储的是到目前为止的数据,记录的是原始数据,丢失数据概率少,体积大。AOF重写:是为了防止AOF文件过大的一种机制一些需要注意的点:RDB子进程以及AOF子进程互斥,不能同时存在,通过delay来避免。AOF可持久化,只有在每次定时函数时候根据指定的策略进行刷盘。

2022-10-23 17:21:07 262

原创 muduo网络库之高性能日志实现

在服务器端编程中,日志是必不可少的,在生产环境中应该做到Log Everything All The Time。一个多功能日志,需要有以下四个功能:1日志消息具有多个级别;2日志消息具有多个目的地;3日志消息可以配置;4可以设置运行时候的过滤器。二、具体实现1.前端部分首先前端部分通过LogStream类进行运算符重载,将日志内容输入到LogStream成员变量FixBuffer中。然后LogStream又是Impl的内部成员,Impl是Logging的内部成员,因此muduo在设计的时候在构造函数

2022-06-16 12:07:18 463

原创 数据结构—查找(二分,二叉排序树,平衡二叉树,B树与B+树,哈希表)

数据结构—查找文章目录数据结构—查找前言一、二分查找法二、二叉排序树1.二叉排序树的构建2.查找3.删除三 平衡二叉树总结前言本章主要介绍一些经典的查找算法,二分查找,搜索二叉树,平衡二叉树,B树,B+树,哈希表等。一、二分查找法时间复杂度是O(logn),远远要好于顺序查找的O(n),不过二分查找方法前提条件是需要数组是有序的。代码如下:#include<iostream>#include<vector>#include<algorithm>

2022-05-17 00:32:41 421

原创 muduo网络库学习—多线程服务器构造(6)

muduo网络库学习—多线程服务器构造(6)文章目录muduo网络库学习—多线程服务器构造(6)前言一、Acceptor类二、应用层缓冲区Buffer三、线程池EventLoopThreadPool四、TcpServer接收新连接,断开连接1.引入库2.读入数据总结前言本节主要介绍muduo多线程服务器是如何构造的,尚未加入应用层的缓冲区。muduo多线程服务器主要有Acceptor(监听套接字),TcpConnection(连接套接字的封装类),Tcpserver(服务器主体),EventLoo

2022-05-15 17:43:49 631

原创 muduo网络库学习 Endian.h-Socket-Sockets-InetAddress(5)

muduo网络库学习 Endian.h-Socket-Sockets-InetAddress(5)文章目录muduo网络库学习 Endian.h-Socket-Sockets-InetAddress(5)前言一、Endian.h二、SocketOps三、Socket4.InetAddress总结前言本章主要介绍muduo库中对一些TCP系统调用的封装。一、Endian.h首先明确一个地址存一个字节网络字节序(大端字节序): 高字节在低地址,低字节在高地址(符合人类看)主机字节序(小端字节

2022-05-12 19:52:47 341

原创 数据结构--图总结(八大算法)

图总结本章主要讲诉一些图的经典算法以及容易忘记的概念便于以后进行复习。文章目录图总结一、易混淆的概念二、经典算法1.DFS与BFS2.读入数据总结一、易混淆的概念边,弧:顶点到顶点之间有向叫做边,无向叫做弧。完全图,连通图:任意两个顶点之间都有边是完全图,任意两个顶点之间存在路劲是连通图(如果是有向的话叫强连通图)。生成树,有向树,生成深林:无向联通图中如果只有n个顶点n-1条边(没有环)叫生成树,有向图中只有一个顶点入度为0,其余顶点入度为1叫做有向树。一个有向图由若干个有向树构成生成深林

2022-05-12 15:29:51 2205

原创 muduo网络库学习—跨线程调用及EventLoopThread(4)

muduo网络库学习—跨线程调用及EventLoopThread(4)文章目录muduo网络库学习—跨线程调用及EventLoopThread(4)前言一、如何跨线程调用1.进程线程之间的通信2.muduo中如何实现跨线程通信二、EventLoopThread类1.简介2.开启IO线程总结前言在本章中主要介绍在muduo网络库中如何实现跨线程调用以及对IO线程的封装类EventLoopThread。一、如何跨线程调用不进行跨线程调用会怎么样:由上一篇文章我们可以知道一个EventLoop对

2022-05-11 17:53:56 543

原创 串-KMP算法

串-KMP算法文章目录串-KMP算法前言一、模板匹配传统算法二、KMP算法二、改进KMP算法总结前言本章主要讲述字符串模板匹配的三种方法分别是传统方法,kmp算法,改进后的kmp算法一、模板匹配传统算法模板匹配的传统算法子串和主串都需要不断的进行回溯代码如下:#include <iostream>#include <string>using namespace std;int compare(string parent,string child){

2022-05-10 20:22:58 198

原创 muduo网络库学习—TimerQueue定时器(3)

muduo网络库学习—TimerQueue定时器(3)`文章目录muduo网络库学习—TimerQueue定时器(3)前言一、timerfd的使用二、TimerQueue定时器1.Timer2.TimerQueue3.TimerId3.EventLoop的更新总结前言Linux中由timerfd可以把时间变成一个文件描述符,该文件描述符在超时的那一刻变成可读的IO事件,因此我们可以用处理IO事件相同的方式处理定时,代码的一致性更好。一、timerfd的使用#include <sys

2022-05-09 21:43:16 1095

原创 经典排序算法

经典排序算法文章目录经典排序算法一、排序的分类二、七大排序算法1.冒泡排序2.简单选择排序3.直接插入排序4.希尔排序5.堆排序6.归并排序7.快速排序总结一、排序的分类稳定排序:是两个相等的元素在排序前后相对位置不变则是稳定排序,反正为不稳定排序。内排序与外排序:内排序是在整个排序过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的数据太多,不能同时放于内存中,整个排序过程需要在内外存之间多次交换数据才能进行。按照方法分为:插入排序,交换排序,选择排序,归并排序二、七大排序算法

2022-05-09 16:33:47 357

原创 muduo网络库学习—EventLoop,Channel,Poller(2)

muduo网络库学习(2)文章目录muduo网络库学习(2)前言一、oneloop per thread二、EventLoop事件循环流程1.事件循环流程2.读入数据总结前言本章主要记录muduo库中的事件循环功能实现即EventLoop类实现。一、oneloop per thread为了保证每一个线程只有一个loop循环,muduo在每个线程中创建了一个变量记录EventLoop的指针。namespace mduo{namespace net{ // 当前线程EventLoop对象指

2022-05-07 21:53:54 677 1

原创 muduo网络库学习(1)

muduo网络库学习文章目录muduo网络库学习前言一、muduo是什么?二、代码结构1.base库前言本章节主要介绍muduo网络库的整体架构!一、muduo是什么?muduo是一款基于reactor的网络库,整个网络库采用oneloopperthread+threadpool的方法,代码简介,性能优越·。二、代码结构1.base库base库如下(示例): base库主要是为了muduo net库部分封装了一些底层操作,如高性能日志,互斥量,线程,线程池等!## 2.ne

2022-05-07 17:20:05 2379

空空如也

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

TA关注的人

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