自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高效的跳表

对比AVL树和红黑树,都可以做到遍历数据有序,时间复杂度也差不多,而跳表的优势在于:实现简单,容易控制,而平衡树增删改查都更复杂跳表的额外空间消耗更低,平衡树节点需要存储三个节点指针,父亲和左右孩子,还有平衡因子或颜色等消耗。

2024-02-02 11:24:20 482

原创 效率高的B树系列

前面我们所学习到的数据结构,只能用来存储少量的数据,因为内存大小是非常有限的,一般情况下,也就几十个G,面对海量数据时,也就只能加载少部分数据到内存,其它的都存在磁盘,而与磁盘交换,即IO,速度是非常慢的如下图,以二叉平衡树为例,树节点存的是磁盘中数据的地址,当数据量非常庞大时,这棵树的高度也就非常高,而内存中,为了存储更多的数据,每个节点就不存储关键字,只存储磁盘地址,所以可能每到一层,就需要进行一次磁盘IO,所以就需要进行高度次磁盘IO,效率很低。

2024-01-28 17:25:00 1338

原创 并查集与图

图是由顶点和边组成的一种数据结构,用G = (V, E)表示,G表示图(graph),V(vertex)表示顶点,E(edge)表示边。

2024-01-25 21:53:21 730

原创 分布式系统部署Redis

redis哨兵节点,只有一个也是可以的,但也会有一些问题1、如果哨兵节点只有一个,它本身也是容易出现问题的,万一这个哨兵节点挂了,后续redis节点也挂了,就无法进行自动的恢复过程了2、出现误判的概率比较高,毕竟网络传输数据是容易出现抖动或者延迟或者丢包的,如果只有一个哨兵节点,出现上述问题之后,影响就比较大基本的原则:在分布式系统中,应该避免使用 “单点”

2023-10-16 21:24:22 354

原创 Redis事务

Redis中实现事务,是引入了队列,每个客户端都有一个,开启事务的时候,此时客户端的命令,就会发给服务器,并且进入这个队列中,而不是立即执行,当遇到"执行事务"命令的时候,就会把队列中的这些任务都按照顺序依次执行,是在Redis主线程中执行的,主线程会把事务中的操作都执行完,再处理别的客户端。Redis事务具有弱化的原子性,它可以把多个操作打包到一起,要么全部执行,要么全部都不执行,它不保证执行成功,而MySQL是要保证成功的,不成功就会回滚,Redis没有回滚特性,所以说它是弱化的原子性。

2023-09-28 12:02:21 153

原创 Redis持久化

AOF文件持续增长,体积越来越大,会影响到redis服务器下次的启动时间,因为redis服务器启动的时候,要读取aof文件的内容,该文件记录了中间的过程,实际上redis在重新启动的时候,只会关注最终结果,比如lpush key 111,lpush key 222,lpush key 333,又比如set key 111,set key 222,set key 333,redis都只会关注lpush key 111 222 333和set key 333。如下图,是AOF重写的流程。

2023-09-27 16:05:15 147

原创 Redis客户端

如下图,获取key1和key2的value,是正常的,但获取不存在的key3的value,就发生了抛异常,所以这里可以用两种方式解决,一种是捕捉异常,另一种则是 if 语句判断一下是不是为空即可!如下图,cursor是光标,光标就指向了当前遍历的位置,光标设置为0,意味着这次遍历是从头开始获取,下面的"2",表示下次继续遍历,光标从哪里开始,后面的则是真正遍历到的key的内容。不同的命令,返回结果不一样,有的命令,直接返回ok,有的命令,可能返回个整数,有的命令,可能返回个数组。

2023-09-24 23:35:10 102

原创 Redis数据类型

Redis主要有Strings、Lists、Sets、Hashes、Sorted sets等数据类型,这些都是非常通用的,还有一些少见的可以去官网了解Strings相当于C++中的字符串类型Hashes相当于C++中的unordered_mapLists相当于C++中的dequeSets相当于C++中的SetSorted sets是有序集合,除了存储member之外,还需要存储一个score(权重)

2023-09-05 15:54:47 312

原创 初识Redis

上面一段话是官网给出的对Redis的介绍,in-memory data store表明Redis是在内存中存储数据的,这和我们接触的其他数据库就有很大的不同,比如MySQL,它是将数据存储在磁盘中的,但由于MySQL需要与磁盘交互,访问速度就比较慢,而很多互联网产品,又对性能要求比较高,这时,Redis就可以发挥出它的作用了,因为是在内存中存储数据,就意味着访问速度远比在磁盘中快,极大地提高了程序的性能。而要想解决这个问题,无非两种方式,第一个是节流,在软件上优化,但对程序员的水平要求就比较高;

2023-08-13 22:56:59 988

原创 git原理与使用

在上面创建仓库时,有一个添加ignore文件,可以勾选,就会在远程仓库生成该文件,该文件用于添加提交文件时,可以忽略指定的部分文件,比如写入了账号密码信息的文件,我不想推送,让别人看到,我就不提交,但文件太多了,add 指定文件太麻烦,就只能add . ,所以就有了ignore文件的产生,直接在该文件中写入你想忽略的文件即可,如下图所示。此时,git应运而生!a 和 b表示从之前的a文件,修改后变成了b文件,相当于同一个文件的不同版本,-1表示改动前第一行,+1,2表示改动后第一行起连续两行的内容。

2023-08-08 13:58:37 934

原创 初识软件测试

如何处理与开发发生争执的问题。测试人员需要具备的素质。

2023-07-21 19:36:48 49

原创 MySQL事务详解

事务的详细介绍

2022-12-01 10:14:34 1778 8

原创 查询利器—索引

索引的详细介绍

2022-11-25 09:39:55 703 11

原创 表的增删查改

表的增删查改详细解读

2022-11-22 11:42:34 805 4

原创 初识MySQL

数据库一些基本操作的详解

2022-11-16 22:13:30 985 7

原创 多路转接与Reactor

多路转接函数接口的详解

2022-11-12 09:05:27 952 5

原创 网络协议二

IP协议与数据链路层详解

2022-11-02 19:16:15 705 3

原创 网络协议一

传输层协议详解

2022-10-25 20:34:48 3366 11

原创 网络与套接字

对网络的初步认识

2022-10-09 21:24:07 820 3

原创 Linux多线程

Linux多线程详解

2022-09-26 20:20:55 2591 10

原创 进程信号详解

进程信号的详细介绍

2022-09-19 18:16:11 1036 11

原创 进程间通信

进程间通信的详解

2022-09-16 15:47:33 1927 10

原创 基础IO详解

基础IO详解

2022-09-12 20:04:56 1443 4

原创 进程控制详解

进程控制详解

2022-09-11 17:21:17 589 10

原创 系统与进程

初识操作系统与进程的概念

2022-09-05 22:16:38 623 5

原创 Linux环境详解

Linux运行环境的讲解

2022-09-01 18:58:50 1519 6

原创 Linux权限

Linux部分权限讲解

2022-08-30 08:40:57 694 3

原创 Linux基本指令

Linux部分指令讲解

2022-08-28 20:32:02 801 8

原创 特殊类与类型转换

特殊类设计与类型转换详解

2022-08-04 23:46:37 265 6

原创 异常与智能指针

异常与智能指针详解

2022-08-02 22:40:13 286 6

原创 C++11

C++11详细解读

2022-07-07 12:55:30 542 5

原创 哈希结构的实现

哈希表的实现,以及封装map和set,位图与布隆过滤器的实现

2022-06-28 15:40:19 1923 9

原创 map和set

map和set的简介,以及AVL树与红黑树插入的实现,及红黑树封装map和set

2022-06-25 12:34:57 710 5

原创 二叉树进阶

二叉搜索树的实现,很详细

2022-06-23 15:21:25 286 6

原创 继承和多态

目录一、继承的概念和定义二、基类和派生类对象赋值转换​​​​​​​一、继承的概念和定义继承概念:继承是类设计层次的复用派生类(子类):继承使代码复用,在保持原有类特性的基础上进行扩展,增加功能,这样一个新的类,就是派生类基类(父类):被继承的类就是基类继承定义例如:人和学生,学生具有人的特征同时,还具备学生这个身份特有的一些特征,人可称为基类,学生则是对应的派生类继承方式公有继承,保护继承,以及私有继承派生类中有基类继承的成员类型(是公有是保护还是私有)..

2022-04-23 21:12:51 3207 6

原创 模拟实现list

目录一、初始准备二、迭代器三、构造函数与析构函数四、插入与删除数据五、全部代码一、初始准备为了防止与库里的命名发生冲突,所以首先得定义一个命名空间list是通过一个个节点连接而成的,所以得先定义一个自定义变量,采用模板的方式这里实现的是带头双向循环链表,所以有前后指针成员,以及数据成员,共三个成员同时定义构造函数,将其初始化定义一个list类,同样采用模板,同时将其将要使用的正反迭代器,节点名称用typedef定义一个新名称,将其简化成员就一个头.

2022-03-27 23:10:07 1663 6

原创 模拟实现vector

目录一、初始准备二、开辟空间与调整数据个数三、构造函数与析构函数四、插入与删除数据五、全部代码一、初始准备头文件包含,将标准库直接展开为了防止与C++库里的命名重名,创建一个命名空间因为vector可以存储多种类型的数据,所以采用类模板成员变量,采用三个指针,一个指向开头,一个指向最后一个数据的下一个,最后一个指向容量空间的结尾的下一个起始地址与最后一个数据地址的下一个数据个数与空间大小二、开辟空间与调整数据个数开辟空.

2022-03-22 22:50:56 831 12

原创 模拟实现string类

目录前言一、初始准备二、迭代器三、构造函数四、赋值运算符重载五、插入字符及字符串六、查找字符及字符串七、删除字符或字符串八、重载关系运算符九、重载+=运算符十、析构函数十一、重载输入输出运算符十二、全部代码前言由于string类的接口函数很多,所以这里只实现常用的接口函数部分很简单的接口函数,都放在代码段里了一、初始准备引用头文件引用string的头文件,是为了后面写接口函数,需要调用字符串函数,比如strstr,strcpy等

2022-03-10 11:12:14 4014 14

原创 多重作用的类和对象

目录一、类的认识二、类的作用域及实例化三、类的访问限定符及封装四、类的对象大小的计算五、类成员函数的this指针一、类的认识面向过程:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题面向对象:C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成比如设计简单外卖系统面向过程:关注实现下单、接单、送餐等这些过程。体现到代码层面 -- 方法/函数面向对象:关注实现类对象及类对象间的关系,用户,商家

2022-02-19 13:26:50 647 14

原创 初识C++

目录前言一、命名空间二、输入与输出前言C++是兼容C的,所以C一、命名空间命名冲突问题起的变量名或函数名与库里的函数或变量相同,从而冲突了,如下图在公司团队协作做项目时,两个人起的变量名或函数名冲突解决办法:定义一个命名空间利用关键字namesapce,来隔离其中的变量或函数vs是该命名空间的名字注意:该命名空间里的变量依然是全局的,与其没什么区别,只是被隔离其中,想使用时方式不同命名空间中,既可以定义变量,也可以定义函数命名空间可..

2022-02-13 15:24:43 489 8

空空如也

空空如也

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

TA关注的人

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