自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 poll demo

【代码】poll demo。

2024-09-17 13:56:12 99

原创 select demo

【代码】select demo。

2024-09-16 20:55:15 152

原创 Hash 专题

根据 key 计算 key 在表中的位置的数据结构;是 key 和其所在 存储地址的映射关系;注意:散列表的节点中 kv 是存储在一起的;

2024-09-13 14:21:06 1013

原创 红黑树(RBTree)插入元素旋转详解

首先我们在不考虑颜色的情况下进行旋转演示:左旋转:步骤:把Y的左子树取下,把X右子树取下,让X的右子树等于Y的左子树,Y的左子树等于X,并且让Y成为X父节点的子树,X的父节点为Y。右旋转原理相同:步骤:把X的右子树取下来,把Y的左子树取下来,Y的左子树等于X的右子树,X的右子树等于Y,最后连接父节点,X的父节点等于Y的父节点,Y的父节点等于X。

2024-09-12 16:22:25 386

原创 B-树底层原理

B-树(B-Tree)是一种自平衡的树形数据结构,广泛应用于数据库和操作系统中。它的设计目标是减少搜索、顺序访问、插入和删除操作中比较次数和移动次数,特别适合于磁盘中数据的存储和检索。

2024-09-11 22:25:13 493

原创 redis 基本数据类型—string类型

Redis 中的字符串,直接就是按照二进制数据的方式存储的,不会做任何的编码转换。Redis对于 string 类型,限制了大小最大是512M。

2024-09-10 21:34:45 952

原创 ProtoBuf 详解

将结构化的数据进行序列化的一种方式。

2024-08-31 21:01:47 1080

原创 Redis 常用命令

因为Redis 是按照键值对存储数据的。如图为set的最简单的用法。key和value都是字符串而且不需要加双引号,如果加也可以redis命令中不区分大小写。

2024-08-30 22:50:20 670

原创 MySQL 数据页详解

数据页是MySQL 中定义的的一个存储结构数据页是保存数据行的容器。

2024-08-24 10:32:11 746

原创 浅谈分布式系统

系统中的多个模块被部署于不同服务器之上,即可以将该系统称为分布式系统。如 Web 服务器与数据库分别工作在不同的服务器上,或者多台 Web 服务器被分别部署在不同服务器上。生活例子类比:为了更好的满足现实需要,一个在同⼀个办公场地的工作小组被分散到多个城市的不同工作场地中进行远程配合工作完成目标。跨主机之间的模块之间的通信基本要借助网络支撑完成。

2024-08-22 09:31:53 430

原创 二叉树剪枝

本题使用二叉树的后序遍历,通过递归函数将左右子树进行处理,得到处理结果后,判断左右结果以及自身的val判断是否需要剪枝。

2024-08-21 14:54:53 366

原创 汉诺塔问题

经典汉诺塔问题。

2024-08-20 09:37:27 121

原创 字符串专题——字符串相乘

使用模拟的方法:模拟小学的列竖式运算细节1:高位相乘的时候要补上“0”细节2:处理前导“0”细节3:注意计算结果的顺序。

2024-08-19 16:04:21 212

原创 链表常用技巧和操作总结

1、判断链表是否成环2、找链表中环的入口3、找链表中倒数第N个节点。

2024-08-18 20:51:34 213

原创 位运算总结

< :左移>> :右移~ :取反& :有0就是0| :有1就是1^ :相同为零,相异为1 / 无进位相加。

2024-08-17 11:46:01 217

原创 二分查找专题(总)

通过不断更新左右左右边界,找到目标值。细节问题:1、每次更新都更新到 mid+1 或 mid-1位置。2、循环结束条件为 left < right。3、循环结束需要额外判断。4、防止数组求取mid时值溢出可选用 left + (right - left)/2;

2024-08-16 19:51:33 421

原创 C++ 基础小节4

1.类内操作符重载:将操作符重载为函数;单目运算符: a++;++a;不要参数,操作this,双目运算符: a = b;左操作数 = 右操作数;只要一个参数:this作左操作数,参数作右操作数;返回值要根据要重载的运算符;

2024-08-15 14:57:28 211

原创 二分查找专题——基础二分查找

找到数组的中心值与target比较,如果中心值大于target则证明target有可能在数组的左边(还有一种情况是不存在),反之在数组的右边。重新设置左右边界,折半数组的长度,如此反复,直到中心值恰好为target或者数组长度缩短为1。为1时比较中心值与target(有可能不存在)。

2024-08-14 23:17:37 147

原创 C++ 小节3

1.析构函数:函数名与类名相同,前面有~,没有返回值,不能写void,没有参数;只能有一个,不能重载2.析构函数的作用:主要在对象销毁时释放申请的堆内存,关闭文件,关闭网络连接,关闭数据库连接等;3.析构函数的执行:(不显式调用,自动执行)1) 作用域到了时自动执行析构函数 2) delete,delete[]时自动执行析构函数。

2024-08-13 19:32:31 899

原创 C++ string类详解

1.C++的字符串string,本质是:typedef basic_string string;2.C++中的字符串string与C中的字符串const char *的区别:1) C中的字符串const char *是指针,C++中的字符串string是类.本质是:typedef basic_string string;2) C中的字符串必须有结束符'\0',C++的字符串没有结束符'\0',可以通过string类的size访问字符串的所有内容。

2024-08-12 20:14:36 338

原创 高级IO——select模型

高效: 能够同时处理多个 I/O 操作,避免了阻塞和频繁的上下文切换。简单: API 相对简单,易于使用。

2024-08-11 16:54:49 263

原创 C++ 原子类型(atomic)

原子类型是多线程编程中重要的工具,能够有效地避免数据竞争问题,提高程序的安全性和性能。通过合理使用原子类型和理解内存序,可以编写出高效的并发代码。

2024-08-10 21:33:28 550

原创 C++ 基础小节2

1.常对象: const 类类型 对象名;2.常对象的特性: 1) 常对象的数据成员不能修改 2)常对象不能调用一般函数,只能调用常函数;3)常函数返回的引用必须是常引用3.常函数: 类的成员函数形参列表右边写上const,常函数特性: 常函数不能修改数据成员的值;4.C++的两种特殊重载: 1)常函数重载, 2)操作符重载;5.声明成员函数时尽量将不会修改数据成员的函数设置为常函数,常函数更通用: 因为常函数可以被常对象调用,也可以被一般对象调用;

2024-08-09 19:31:25 490

原创 五种IO模型

在内核将数据准备好之前,系统调用会一直等待,所有的套接字默认都是阻塞方式。阻塞IO是最常见的IO模型。

2024-08-08 21:20:04 264

原创 C++ 基础小节

主要是新增的:asm:用于在C、C++程序中嵌入汇编程序bool wchar_t是C++新增的基本数据类型(10个基本类型)try{}catch(异常类型){}   被动捕获异常class 声明类,在模板中说明类型const:常引用,常对象,常函数const_cast(常类型转换),reinterpret_cast(重定义类型转换),static_cast(静态类型转换),dynamic_cast(动态类型转换):标准类型转换。

2024-08-08 19:53:32 665

原创 滑动窗口专题——找到所有字母的异位词

题意如图。

2024-08-06 21:35:34 222

原创 滑动窗口专题——将X减到0的最小操作数

题目如图,通过解析题目可知,如果直接进行移除操作难度很大,因为我们不确定是减左边还是减右边,所以我们需要转换一下思维,正难则反,我们可以反着思考一下,本题是从左右两边找到最小的操作次数,那么就相当于我们需要在数组的中间找到最长的子数组,满足这个子数组的和等于数组的总大小减去X的值,如此以来难度就会小很多。

2024-08-01 12:00:00 211

原创 滑动窗口专题——最大连续1的个数Ⅲ

题目如图。

2024-07-31 11:26:43 223

原创 滑动窗口专题——无重复字符的最长子串

题目如图。

2024-07-29 22:17:28 282

原创 滑动窗口专题——长度最小的子数组

题意如图。

2024-07-27 23:22:33 220

原创 虚函数表和虚函数表指针的创建时机

如果类没有构造函数,编译器会生成一个默认的构造函数,从而为类的vptr初始化。1、调用基类的构造函数,先将基类的虚函数表地址赋值给vptr。对象构造时,在构造函数中将虚函数表指针赋值给对象vptr(对象的起始地址)2、调用子类的构造函数,将子类的虚函数表地址赋值给vptr。编译器发现类中包含virtual关键字修饰的函数就会创建虚函数表。虚函数表的内容在编译器编译的时候已经生成。虚函数表存在于全局数据区的只读数据段中。虚函数表是存放虚函数的地址的数组。

2024-07-26 19:47:22 124

原创 C++ final关键字和override关键字

修饰类:当 final 用于修饰类时,表示该类是一个最终类,不能被其他类继承,这在某些情况下非常有用,比如当你想确保一个类的行为不会被修改时。2. 帮助编译器进行更严格的检查,如果声明为 override 的函数与基类中的虚函数签名不匹配,编译器会报错,从而避免一些潜在的错误。- 修饰虚函数:当 final 用于修饰虚函数时,表示该函数在派生类中不能被重写,这可以防止子类意外或故意地改变父类的行为。在 C++中, override 关键字主要用于明确表示派生类中的函数是对基类中虚函数的重写。

2024-06-19 23:16:28 139

原创 C++ 多态性及其原理

简而言之,多态就是多种形态,对同一件事,不同的对象的处理动作有多种形态。C++ 的多态性有两种,一种是静态多态,一种是动态多态。

2024-06-17 22:09:38 177

原创 C++ 菱形继承问题

通过虚继承的方式来解决菱形继承的问题,虚继承会为基类与派生类之间创建虚基表,编译器通过虚基表指针的偏移找到对应的变量地址,达到访问同一块空间的目的。菱形继承造成的后果有两个:1.造成二义性,二义性就是C的父类有相同的成员,通过C去访问名字相同的成员造成编译器不知道我们具体访问的是B1中的变量还是B2中的变量。菱形继承是因为C++有多继承的特性,如一个类C继承于B1、B2,而B1、B2继承于同一个类A,那么这时A、B1、B2、C之间会产生一种形似菱形的关系结构,这种关系结构称为菱形继承。2.菱形继承的后果?

2024-06-14 19:37:53 161

原创 C++ 泛型编程-模板

class 类模板名// 类内成员定义注意:类模板中函数放在类外进行定义时,需要加模板参数列表。

2024-05-15 11:01:15 308

原创 C++ 设计模式——代理模式

代理模式指代理控制对其他对象的访问,也就是代理对象控制对原对象的引⽤。代理模式的结构包括⼀个是真正的你要访问的对象(⽬标类)、⼀个是代理对象。⽬标对象与代理对象实 现同⼀个接⼝,先访问代理类再通过代理类访问⽬标对象。• 静态代理指的是,在编译时就已经确定好了代理类和被代理类的关系。也就是说,在编译时就已经 确定了代理类要代理的是哪个被代理类。• 动态代理指的是,在运⾏时才动态⽣成代理类,并将其与被代理类绑定。这意味着,在运⾏时才能 确定代理类要代理的是哪个被代理类。

2024-03-05 19:32:43 516

原创 C++ 设计模式——建造者模式

建造者模式是⼀种创建型设计模式,使⽤多个简单的对象⼀步⼀步构建成⼀个复杂的对象,能够将⼀个复杂的对象的构建与它的表⽰分离,提供⼀种创建对象的最佳⽅式。主要⽤于解决对象的构建过于复杂的问题。• 指挥者Director类:统⼀组建过程,提供给调⽤者使⽤,通过指挥者来构造产品。• 抽象Builder类:创建⼀个产品对象所需的各个部件的抽象接。• 具体产品的Builder类:实现抽象接⼝,构建各个部件。• 具体产品类:⼀个具体的产品对象类。

2024-03-05 19:29:48 373 1

原创 C++ 设计模式——工厂模式

抽象⼯⼚模式:⼯⼚⽅法模式通过引⼊⼯⼚等级结构,解决了简单⼯⼚模式中⼯⼚类职责太重的问 题,但由于⼯⼚⽅法模式中的每个⼯⼚只⽣产⼀类产品,可能会导致系统中存在⼤量的⼯⼚类,势 必会增加系统的开销。假设有 A、B两种产品,则开两个⼯⼚,⼯⼚A负责⽣产产品A,⼯⼚B负责⽣产产品B,⽤⼾只知道产品 的⼯⼚名,⽽不知道具体的产品信息,⼯⼚不需要再接收客⼾的产品类别,⽽只负责⽣产产品。⼯⼚⽅法模式每次增加⼀个产品时,都需要增加⼀个具体产品类和⼯⼚类,这会使得系统中类的个数成倍增加,在⼀定程度上增加了系统的耦合度。

2024-03-05 19:13:20 394 1

原创 C++ 设计模式——单例模式

⼀个类只能创建⼀个对象,即单例模式,该设计模式可以保证系统中该类只有⼀个实例,并提供⼀个 访问它的全局访问点,该实例被所有程序模块共享。⽐如在某个服务器程序中,该服务器的配置信息 存放在⼀个⽂件中,这些配置数据由⼀个单例对象统⼀读取,然后服务进程中的其他对象再通过这个 单例对象获取这些配置信息,这种⽅式简化了在复杂环境下的配置管理。单例模式有两种实现模式:饿汉模式和懒汉模式。

2024-03-05 16:45:41 395 1

原创 关于进程地址空间

两张图片了解虚拟地址与物理地址的关系!

2023-12-15 20:26:12 57

空空如也

空空如也

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

TA关注的人

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