自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Redis】数据结构之dict

redis的dict结构

2023-10-21 16:32:24 612

原创 【muduo】关于自动增长的缓冲区

muduo buffer

2023-08-12 20:19:29 398

原创 局域网内其他主机连接本地虚拟机之踩坑记录

局域网内其他主机连接本地虚拟机

2023-08-12 16:12:01 499

原创 【clang】安装clang编译器并将linux默认编译器改为clang

linux安装clang

2023-05-07 17:24:57 2569 1

原创 【Redis源码学习】准备工作

redis源码学习准备工作

2023-03-28 22:25:55 253

原创 centOS离线安装 openssl源码

centOS离线安装OpenSSL

2023-03-08 15:42:58 790

原创 【Redis】主从复制

主从复制

2022-10-18 22:59:49 286

原创 【vscode】为远程服务器安装扩展

在vscode上为远程服务器安装扩展

2022-10-18 22:51:45 6263

转载 【Redis】一组kv的存储

redis一组kv的实际存储过程

2022-10-17 11:19:20 372

原创 【Git】提交代码的完整流程

Git提交流程

2022-09-30 14:20:49 15127 1

原创 【达梦数据库】备份与还原操作

备份与还原

2022-09-18 12:39:13 215

原创 【达梦数据库】dm8修改配置参数

修改配置文件参数

2022-08-17 11:34:41 1758

原创 【vscode】ssh出现 open failed:administratively prohibited:open failed

VSCode无法连接到远程扩展主机服务器(错误WebSocketclosewithstatuscode1006)

2022-08-02 09:27:44 6568 8

原创 解决 Win10系统 该设备或资源(Web代理)未设置为接受端口“9892“上的连接

解决该设备或资源(Web代理)未设置为接受端口“xxxx“上的连接解决方案

2022-06-22 16:00:36 3251

原创 【C++】面试题整理

参考别人的面试题,自己搜集汇总、整理了答案。文章目录1.C++ extern关键字的作用2.C++的this指针3.C++ static静态成员函数详解4.友元5.main函数中两个参数的用法总结6.移动构造调用拷贝构造函数的情形7.左值 右值8.强制类型转换9.智能指针RAII思想智能指针lambda表达式function,bind1.C++ extern关键字的作用C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可以被单独编译,多个文件之间可能需要共享代码,即一个文件的代码

2022-05-17 22:28:03 248

原创 数据库领域顶会

数据管理与数据库领域的三大国际顶尖学术会议分别是:SIGMOD(Special Interest Group on Management of Data)VLDB(Very Large Data Bases)ICDE(International Conference of Data Engineering)Proceeding, Conference, Journal的区别:Proceeding指的是论文集,被录用的论文以论文集的形式发表出来。Conference指的会议本身。Journ

2022-05-15 21:19:28 3086

转载 数据库面试准备笔记

文章目录SQL语句视图事务和锁索引性能优化范式日志MySQLRedis参考别人整理的题目,加上自己搜集的答案和别人的理解以及自己的理解。MySQL学习 MySQL最新手册教程SQL语句1.内外连接、交叉连接RUNOOBRUNOOBcbianchengA inner join B 取交集。A left join B 取 A 全部,B 没有对应的值为 null。A right join B 取 B 全部 A 没有对应的值为 null。A full outer join B 取并集,彼此没

2022-05-12 11:42:56 213

原创 【MySQL】进行查询需要几次IO?

目录MySQL查询花费的IO次数千万级条数B+树高度为3的表与几十万级B+树高度为3的表的查询效率比较普通索引和唯一索引的查询效率比较?MySQL查询花费的IO次数首先说明:查询数据库时,不论读一行,还是读多行,都是将这些行所在的整页数据加载,然后在内存中匹配过滤出最终结果。即一次页加载就是一次IO。通过聚簇索引查找记录最多需要花费多少次IO?通过二级索引查找记录最多需要花费多少次IO?我们先说通过二级索引进行查找时需要花费的IO次数:首先,从二级索引B+树中,根据name找到对应的主键id

2022-05-11 23:31:14 3968

原创 【MySQL】 一棵B+树可以存放多少条数据?

这里我们考虑MySQL的InnoDB存储引擎这个问题需要从两方面考虑:数据在存储器中的存储组织方式InnoDB索引数据结构首先需要考虑数据在存储器中如何存储:1、数据持久化存储磁盘里,磁盘的最小单元是扇区,一个扇区的大小是 512个字节2、文件系统的最小单元是块,一个块的大小是 4KB3、InnoDB存储引擎的最小存储单元称之为页,一个页的大小是16KB扇区、块、页这三者的存储关系?MySQL数据库中,table表中的记录都是存储在页中,那么一页可以存多少行数据?假设一行数.

2022-05-11 23:25:31 2105

原创 WebServer项目的亮点和难点

文章目录一、亮点1.采用了Reactor设计模式为什么选择Reactor?WebServer选择的Reactor方案WebServer对Reactor的具体实现2.EPOLLONESHOT3.基于小根堆实现了定时器4.实现了可以自动增长的缓冲区5.线程池二、难点三、有待改进的地方面试被问到了这个问题,答得稀烂…但是我觉得这个问题真的问的很好,还是要好好想一想总结一下。亮点:并发模型为Reactor使用Epoll水平触发+EPOLLONESHOT,非阻塞IO为充分利用多核CPU的性能,以多线程的形式

2022-05-09 20:36:22 7358

原创 unique_lock与lock_guard区别

使用方式lock_guard:没有提供加锁和解锁的接口。通过构造函数和析构函数控制锁的作用范围,创造对象的时候加锁,离开作用域的时候解锁;unique_lock:提供了lock()和unlock()接口,能记录现在处于上锁还是没上锁状态。可以通过构造函数和析构函数控制锁的作用范围。在构造函数中延时加锁,在需要的时候手动加锁和解锁。在析构的时候,会根据当前状态来决定是否要进行解锁(lock_guard就一定会解锁)。赋值操作unique_lock和lock_guard都不能复制l

2022-05-09 20:34:47 6115

原创 互斥量与条件变量

我想在这里先说一个跟题目无关的东西,一种学习方法,叫费曼学习法。简单的说,费曼学习法有四个步骤,学习知识要把它教给小孩子、回顾、将语言条理化、传授。初步理解在这里我想先用自己的话来描述互斥量和条件变量这两个概念和他们之间的关系。计算机中的一些资源可以被不同的线程共享,但是他们在某个时刻只能被一个线程使用,为了防止某个线程正在使用该资源时被别的线程使用导致线程运行出现错误,我们需要用“锁”这一概念,把共享的资源在使用前锁上,使得该资源只会被它正在使用的线程访问,并在使用后进行解锁。这就是互斥量的概念。互斥

2022-05-09 20:19:20 1117

转载 CPU密集型、数据密集型与IO密集型

目录CPU密集型(CPU-bound/Compute-Intensive)IO密集型(IO bound / IO-Intensive)数据密集型(Data-Intensive)CPU密集型 vs IO密集型CPU密集型(CPU-bound/Compute-Intensive)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,C

2022-05-08 19:35:59 1416

原创 【MySQL】回表与覆盖索引

回表与覆盖索引

2022-05-08 17:54:34 2067 2

转载 死锁的产生条件及解决办法

目录一、死锁产生的条件二、死锁解决的方法1.死锁防止1.1 破坏互斥条件1.2 破坏持有和等待条件1.3 破坏不可剥夺条件1.4 破坏等待循环条件2.死锁避免3.死锁检测每种资源类只有一个资源的死锁检测:每个资源类中有多种资源的情况:死锁检测算法4.死锁恢复一、死锁产生的条件死锁需要同时满足以下四个条件才会发生:互斥条件持有并等待条件不可剥夺条件环路条件互斥:指的是共享资源的互斥。主要是因为多个线程都想访问同一个共享资源,但是该共享资源在某个时刻只能由一个进程访问。持有并等待:某进

2022-05-07 17:35:46 5891

原创 WebServer为什么需要将socket设置为非阻塞?

目录一些基本概念解释1.socket文件描述符有哪些2.socket文件描述符设置为阻塞的影响二、使用epoll模型将socket设置为非阻塞1.listenfd非阻塞2.clientfd非阻塞(1)epoll的ET模式(2)epoll返回读写事件,但不一定真的可读写小结一些基本概念解释1.socket文件描述符有哪些网络中的客户端和服务器进行连接通信时需要建立连接,服务器端需要两个socket文件描述符,分别是建立连接时需要的监听文件描述符listenfd和连接完成后的已连接文件描述符clientf

2022-05-07 12:37:07 2150

原创 TIME_WAIT状态产生的原因、过多的危害

一、TCP连接断开的四次挥手:  由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。  其原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段1)。(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段2)。和SYN一样,

2022-05-04 22:16:23 5547

原创 【MySQL】InnoDB都有哪些锁?

写在前面:之前一直被MySQL的各种锁弄得很迷,不同的文章写的都不太一样。然后读了一些文章,终于能分清为什么他们说的锁不一样了。其实关键在于MySQL的体系结构,mysql锁——元数据锁和innodb锁 这篇文章说了“但由于MySQL是Server-Engine架构,所以MDL锁是在Server中实现”,因此有部分锁是在Server中实现的,而我们这篇文章只说InnoDB层的锁。InnoDB的锁在MySQL的官方文档 InnoDB Locking里只有下面截图里的几种,下边我们分别来介绍。目录Sh

2022-05-03 17:09:42 1070

原创 WebServer项目代码逻辑分析

文章目录项目介绍一、服务器编程基本框架一、WebServer类详解1.初始化2.启动WebServer二、I/O处理的具体流程三、线程池四、HTTP请求报文解析与响应报文生成1.请求报文2.响应报文3.process()函数五、缓冲区六、定时器1.定时器的组成2.定时器的管理七、数据库连接池八、压力测试总结项目介绍该项目Linux下C++轻量级Web服务器,使用线程池+非阻塞socket+epoll(ET模式)+事件处理(Reactor)的并发模型使用状态机解析HTTP报文请求,支持解析GET、P

2022-05-02 17:21:35 2833

原创 【MySQL】悲观锁与乐观锁

悲观锁和乐观锁1、什么是悲观锁?悲观锁是基于一种悲观的态度来防止一切数据冲突,以一种预防的姿态在修改数据之前把数据锁住;然后再对数据进行读写,在它释放锁之前任何人都不能对其数据进行操作直到前面一个人把锁释放后下一个人数据加锁才可对数据进行加锁,然后才可以对数据进行操作,一般数据库本身锁的机制都是基于悲观锁的机制实现的;悲观锁更适用于多写少读的情况。特点:可以完全保证数据的独占性和正确性,因为每次请求都会先对数据进行加锁, 然后进行数据操作,最后再解锁,而加锁释放锁的过程会造成消耗,所以性能不高

2022-04-30 20:00:03 1055

转载 MySQL数据库索引失效的情况

数据表结构如下:

2022-04-30 16:44:21 568

原创 【C++】派生类及派生类对象对基类成员的访问权限

类中的成员可以分为三种类型,分别为public成员、protected成员、public成员。类中可以直接访问自己类的public、protected、private成员,但类对象只能访问自己类的public成员。C++中派生类对基类成员的访问形式主要有以下两种:1、内部访问:由派生类中新增成员对基类继承来的成员的访问。2、对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问。public继承此时基类的public成员,protected成员,private成员对于派生类来说变

2022-04-30 16:09:38 4730

原创 【C++】构造函数有几种?

四种构造函数C++中的构造函数可以分为4类:默认构造函数、初始化构造函数、拷贝构造函数、移动构造函数。默认构造函数和初始化构造函数。在定义类的对象的时候,完成对象的初始化工作。class Student { public: //默认构造函数 Student() { num=1001; age=18; } //初始化构造函数 Student(int n,int a):num(n),ag

2022-04-30 15:09:45 3299

转载 HTTP1.x/HTTP2.0/HTTP3.0演化

HTTP1.0存在的问题早期 HTTP/1.0 采用短连接,性能上有一个很大的问题,那就是每发起一个请求,都要新建一次 TCP 连接(三次握手),而且是串行请求,做了无谓的 TCP 连接建立和断开,增加了通信开销。HTTP/1.1 的性能如何?HTTP 协议是基于 TCP/IP,并且使用了「请求 - 应答」的通信模式,所以性能的关键就在这两点里。1.长连接为了解决HTTP/1.0 的短连接问题,HTTP/1.1 提出了长连接的通信方式,也叫持久连接。这种方式的好处在于减少了 TCP 连接的.

2022-04-29 18:02:56 344

原创 MySQL数据库索引的底层数据结构选择(B+树索引)

选择索引数据结构的考虑因素MySQL需要进行数据持久化操作,把数据(索引+记录)保存到磁盘上。因此在通过索引查找某行数据时,就必须将磁盘上的索引读取到内存,再根据索引的内容从磁盘种读取某行数据。在查询过程中发生的磁盘I/O次数越多,所耗时间越长。另外,MySQL支持范围查找,所以索引的数据结构也应该支持高效的范围查找。因此,选择一个合适的索引数据结构需要考虑:在尽可能少的磁盘I/O操作中完成查询工作;可以高效地查询某一个记录,也可以高效地执行范围查找;各类可选的数据结构索引可选的底层数据结

2022-04-29 17:03:49 272

原创 函数重载 隐藏 重写 覆盖

重载(Overload)重载是比较容易弄明白的。定义:重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同(参数列表不同)。调用的时候根据函数的参数来区别不同的函数,函数重载跟返回值无关。规则函数名相同必须具有不同的参数列表可以有不同的访问修饰符重载用来实现静态多态(函数名相同,功能不一样)。重载是多个函数或者同一个类中方法之间的关系,是水平关系。隐藏(Hiding)定义函数隐藏指不同作用域中定义的同名函数构成函数隐藏(不要求函数返回值和函数参数类型相同)。比如派生类成

2022-04-28 22:17:30 403

转载 无需占用大量C盘内存的MySQL安装方法

直接下载mysql安装包会默认安装在C盘,这对于C盘空间不充裕的电脑有很大的压力下边这篇文章可以自定义安装位置MySQL安装(详细,适合小白)注意一点:生成的密码是一长串,不然会显示拒绝登录...

2022-04-27 21:50:49 1097

原创 【C++】指定小数输出位数

引入头文件iomanip指定输出位数主要由setprecision()和fixed()负责加上fixed意味着是固定点方式显示,精度指的是小数位unsetf( ios::fixed ); 去掉fixed,精度恢复成整个数值的有效位数#include <iostream>[添加链接描述](https://blog.csdn.net/xiongyangg/article/details/24439295)#include <iomanip>using namespace st

2022-04-27 16:52:14 1919

原创 【C++】对象的定义、初始化与赋值

定义int a;编译器将在栈上为变量a分配一块内存空间,但并不会对其进行写入,也就是说,当前x内的值是未知的。读取未被初始化的值将引发不确定的行为:可能会直接让程序崩溃,也可能让系统的逻辑出现错误。赋值int a;a = 1;编译器将为变量a在栈上分配一块内存空间,之后将1赋给a。初始化对于内置类型:int a = 1;在定义时可以直接初始化a对于自定义类型:对于类类型的初始化,C++规定对象的成员变量的初始化动作发生在进入构造函数本体之前,发生在这些成员的缺省构造函数自动调

2022-04-26 21:56:32 1660

原创 const关键字与mutable关键字

const 在* 左侧,则指针指向的对象是常量,指针本身不是常量。const 在*右侧,则指针是常量,指针指向的对象不是常量。char text[] = "Hello,world!";char *p = text; // non-const pointer, non-const dataconst char *p = text; // non-const pointer, const datachar * const p = tex

2022-04-26 21:27:14 934

空空如也

空空如也

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

TA关注的人

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