自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 问答 (1)
  • 收藏
  • 关注

原创 Redis --- 第八讲 --- 关于主从复制哨兵

介绍以下Redis实现分布式系统的哨兵方法。补充主从复制的一些问题。

2024-10-20 11:51:06 1141

原创 Redis --- 第七讲 --- 关于事务和主从复制

带你了解Redis中的事务和主从复制的功能

2024-10-19 18:47:38 1081 1

原创 Redis --- 第六讲 --- 关于持久化

一文带你了解redis的两种持久化方式,RDB、AOF。

2024-10-19 09:29:01 1016

原创 Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。

一文带你了解Redis中不常用的数据类型还有渐进式遍历

2024-10-16 15:34:38 1127

原创 Redis --- 第四讲 --- 常用数据结构 --- set、zset

一文带你了解redis中的set集合zset的使用命令及使用场景。

2024-10-15 18:53:35 1174

原创 Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一文了解redis中的hash类型和list类型的操作命令以及运用场景

2024-10-15 10:37:46 1046

原创 Redis --- 第四讲 --- 常用数据结构 --- string类型

详细介绍redis中value所涉及的数据结构,string类型。

2024-10-14 12:05:48 1033

原创 项目 --- C++ --- 仿muduo库

使用仿muduo库,编写一个http服务器。实现高并发访问

2024-10-14 08:13:55 1100

原创 Redis --- 第三讲 --- 通用命令

Redis中最核心的两个命令get 根据key来取valueset 把key和value存储进去redis是按照键值对的方式存储数据的。必须要先进入到redis客户端。语法 set key value : key和value都是字符串。对于上述这里的key value 不需要加上引号,就是表示字符串,加上引号也无伤大雅。redis中的命令不区分大小写。使用get得到key对应的value值。get命令直接输入key就能得到value。

2024-10-04 15:59:07 2091 1

原创 protobuf 讲解

新增联系人的属性。repeated来定义一个数组。消息中可以包含该字段任意多次(包括零次),其中重复值的顺序会被保留。可以理解为定义了⼀个数组。singular的规则,消息中可以包含该字段零次或⼀次(不超过⼀次)。proto3语法中,字段默认使⽤该规则。可以嵌套定义message。引入 phone文件定义通讯录proto文件把通讯录的信息写入文件,首先编写makefile文件。里面调用的函数返回的是一个已经开辟好的空间所以我们可以使用这个空间直接对contact新增联系人。查看二进制文件。

2024-10-04 09:06:08 993

原创 Redis --- 第二讲 --- 特性和安装

Redis是一个在内存中存储数据的中间件,用于作为数据库,作为缓存,在分布式系统中能够大展拳脚。Redis的一些特性造就了现在的Redis。在内存中存储数据,通过一系列的数据结构。MySQL主要是通过“表”的方式来存储组织数据的“关系型数据库”。Redis主要是通过“键值对”的方式来存储组织数据的。key都是string,value则可以是上述的这些数据结构。Redis也可以被当作一个非关系型数据库。针对Redis的操作,可以直接通过简单的交互式命令进行操作。

2024-10-02 14:32:27 1321

原创 Qt开发第一讲

一文了解一个Qt程序的内部有什么

2024-09-30 17:02:42 560

原创 Qt --- 常用控件的介绍---Widget属性介绍

一万字带你了解QWidget的主要属性

2024-09-30 16:53:32 1701

原创 Qt --- 其他控件的介绍 --- 多元素控件

上述的每个控件,都是可扩展的,每隔控件都是对应Qt内置的一个类,咱们在代码中都可以基于这个类,继承出你自定义类的子类。拉升系数,刚刚创建的布局管理器,这里的控件尺寸都是均等的。代码:创建一个程序带有一个TableWidget作为标签页,提供两个按钮,分别创建新的标签页,关闭当前选中的标签页,当切换标签页的时候,也能感知到变化。如果当前表格中的数据是固定的,完全就可以通过图形化界面来操作,但是实际开发中,很多时候数据是从文件/网络来加载的,此时通过图形化编辑就不合适。上述代码,直接设置拉伸系数发现是无效的。

2024-09-29 19:46:37 714

原创 Qt --- 界面优化 --- QSS和绘图API

界面优化 =》美化一个程序的界面是否好看,是否重要呢。有些面向专业领域的程序,界面好看与否,不是看关键,更关键的是实际的效果。有些面向普通用户领域的程序,界面好看,还是很大的加分项。界面优化 Qt中使用QSS =》网页前端 CSS能够针对界面的样式来进行设置。包括不限于:大小、位置、颜色、背景、间距、字体……CSS的功能是非常强大,非常丰富的。QSS要逊色一些,也能完成很多的工作。有时候,可以通过QSS设置样式。也可以通过C++代码设置样式。

2024-09-29 19:39:38 1145

原创 Qt --- 系统相关---事件、文件操作、多线程编程、网络编程、多媒体

一文了解Qt开发中的事件、文件、多线程、网络编程、多媒体的使用。

2024-09-29 14:23:46 1072

原创 Qt --- Qt窗口

带你了解Qt窗口的使用

2024-09-28 11:22:28 947

原创 Redis --- 第一讲 --- 分布式简单介绍

定义变量,不就是在内存中存储数据吗?Redis是在分布式系统中,才能发挥威力的。如果只是单机程序。直接通过变量存储数据的方式势必使用Redis更优的选择。由于进程的的隔离性。进程之间通过网络通信,就能共享数据。Redis就是基于网络,可以把自己内存中的变量给别的进程甚至别的主机的进程进行使用。数据库:MySQL最大的问题在于访问的速度比较慢。很多互联网产品中,对于性能要求是很高的。Redis也可以作为数据库使用,它的特点是非常快。定性的角度,可以知道Redis快很多,但是很难定量衡量。

2024-09-27 17:36:09 1243

原创 Qt --- 常用控件的介绍 --- 其他控件

QWidget中设计到的各种属性/函数/使用方法,针对接下来要介绍的Qt的各种控件都是有效的。使用QPushButton表示一个按钮,这也是当前我们最熟悉的一个控件了。这个类继承了QAbstractButton,这个类是一个抽象类,是其他按钮的父类。抽象类,这个类包含了纯虚函数,无法创建出实例,想要使用这个类,就得创建子类,重写上述的纯虚函数,才能够创建出子类的实例。按钮的属性QPushButton相关代码1)给按钮加图标(图片)

2024-09-22 15:31:57 1059

原创 Qt --- 信号和信号槽

所谓的slot就是一个普通的成员函数代码:按下按钮,修改一下窗口标题 setWindowTitle。button->setText("更换名字");//连接信号和槽函数delete ui;setWindowTitle("改变窗口名字");所谓的自定义一个槽函数,和自定一个普通函数没有什么区别。在以前版本的Qt中,槽函数必须放到public slots后。Qt里广泛使用了元编程技术(基于代码生成代码),qmake构建Qt项目的时候,就会调用专门的扫描器,扫描代码中特定的关键字。

2024-09-16 16:38:24 1526

原创 QT --- 初识QT

一般通过代码来构造界面的时候,通常会把构造界面的代码放到Widget/MainWindow的构造函数中。Qt中每个类都有对应同名的头文件上古时期,Qt用的是这种风格的文件。1998年之后,C++标准成立了,C++98标准。规定,包含头文件,统一使用#include<cstdio>代替原有的#include<stdio.h>Lable叫做标签,界面上一个用来显示内容字符串的控件,创建对象的时候,可以直接堆上创建,也可以在栈上创建。跟推荐在堆上创建对象。

2024-09-15 18:12:35 1210

原创 Linux网络编程 --- 高级IO

1、在应用层read && write的时候,本质把数据从用户层写给OS --- 本质就是拷贝函数2、IO = 等待 + 拷贝。等的是:要进行拷贝,必须先判断读写事件成立。读写事件缓冲区空间满了没有,read的时候需要缓冲区有数据。什么叫做高效的IO呢?单位事件内我们拷贝的数据越多,越有效率。单位事件内,IO过程中,等的比重越小,IO效率就越高。几乎所有的提高IO效率的策略,本质就是减少等的时间。一、五种IO模型1、张三:钓鱼界的新手,一直盯着鱼钩。谁都不理,有鱼上钩,提起鱼竿。阻塞式钓鱼。

2024-09-14 21:40:53 769

原创 Linux网络编程 --- 网络层,数据链路层

IP协议的本质工作:提供一种能力,将数据跨网络从A主机送到B主机!用户需要的是:提供一种能,将数据可靠的跨网络从A主机送到B主机!

2024-09-10 14:50:35 1024

原创 Linux 网络编程 --- 应用层

确实,在⽅案2/3/4中,客⼾端获取到公钥S之后,对客⼾端形成的对称秘钥X⽤服务端给客⼾端的公钥 S进⾏加密,中间⼈即使窃取到了数据,此时中间⼈确实⽆法解出客⼾端形成的密钥X,因为只有服务 器有私钥S' ,但是中间⼈的攻击,如果在最开始握⼿协商的时候就进⾏了,那就不⼀定了,假设hacker已经成功成 为中间⼈。所有的客户端只使用CA的公钥去解密我们的数字签名,也就意味着,只有CA能够进行证书的签发,因为只有CA自己具有私钥。但是⼀切都在中间⼈的掌握中,劫持数据,进⾏窃听甚 ⾄修改,都是可以的。

2024-09-09 15:24:34 994

原创 Linux网络编程---传输层

1、在TCP/IP协议中用源IP", "源端口号", "目的IP", "目的端口号", "协议号这样一个五元组来标识一个通信可以通过netstat -n查看2、端口号的划分0 - 1023:知名端口号等这些广为使用的应用层协议他们的端口号都是固定的操作系统动态分配的端口号客户端程序的端口号就是由操作系统从这个范围分配的一个进程可以绑定多个端口号,但是一个端口号不能绑定多个进程。

2024-09-09 15:17:38 685

原创 Linux网络编程 --- Socket编程

首先看看TCP/IP网络协议和在我们计算机系统层次中的对应关系。socket的位置网络通信的本质就是贯穿网络协议层的过程。局域网数据的封装和解包过程逻辑上我们认为同层协议之间通信几乎任何层的协议都会提供一种解包和分用的功能。几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪个协议。我们称为分用。端口号用来标识上层的服务。这是大部分协议的共性。以太网通信广播的方式。会有一个协议CSMA/CD。我们日常网络通信的本质:就是进程间通信!看到同一份资源,就是网络资源。

2024-09-03 08:58:28 796

原创 Linux系统编程 --- 多线程

线程:是进程内的一个执行分支,线程的执行粒度,要比进程要细。

2024-08-18 10:35:04 1139

原创 Linux系统编程 --- 信号

生活中的例子有很多比如信号弹,上下课铃声,红绿灯,快递发短信取件码,旗语,狼烟,发令枪等。a.怎么认识这些信号,有人教->我记住了认识信号:识别信号,知道信号的处理方法,你记住了常见的信号。你就是进程。进程必须识别+能够处理信号 --- 信号没有产生,也要具备处理信号的能力 --- 信号的处理能力,属于进程内置功能的一部分。进程即便是没有收到信号,也能知道哪些信号需要怎么处理。当进程真的收到了一个具体的信号的时候,进程可能并不会立即处理这个信号,合适的时候处理。

2024-08-10 08:28:00 1034

原创 Linux系统编程 --- 进程间通信

file_operation,是对应的缓冲区操作。这里的缓冲区可以被实现为一个内存级文件。子进程被创建后,文件不需要再拷贝一份,只是把PCB和files_struct拷贝一遍,两个进程看到同样的文件。所以子进程就看到了父进程打开的文件。管道就是内存级文件。这里不需要担心一个进程关闭了内存级文件,另一个进程也是可以读取的,这是因为引用计数的概念。第二阶段原理:同时读写的方式打开。我们只想让父子单向通信,我们想让子进程进行写入,父进程进行读取。通过关闭文件描述符来实现。上面就是管道的原理。

2024-08-07 17:30:35 726

原创 Qt---Qt的认识

准确的说,Qt特指用来进行桌面开发,涉及到的一套技术。和用户交互的界面TUI和GUI。Qt虽然只是上述解决方案中的其中一个,仍然属于商业公司的产品,使用Qt非常多的,对应的就业岗位相比于其他的技术方案也是更多的。6、Electron本质上是把基于HTML这样的网页,打包成一个windows上运行的客户端程序。Qt是一个跨平台的C++图形用户界面应用程序框架。一、Qt适用于“客户端开发”也就是桌面应用开发。基于C/C++搭建出来的一些GUI开发的技术体系。客户端:直接和用户打交道的这一端的程序。

2024-08-05 15:31:34 295

原创 Linux系统编程 --- 动静态库

libXXX.a --- 静态链接libYYY.so --- 动态链接设计一个库:把我们提供的方法,给别人用:1、把源文件直接给他2、把我们的源代码打包成库 = 库 + 头文件。原理:把所有的.o文件打包成.a文件也就是静态库文件makefile文件里的依赖关系静态库的发布。

2024-08-04 15:25:33 526

原创 Linux系统编程 --- 基础IO

这是因为首先是打印的write函数的这个,他直接写入到了系统缓冲区,所以会先打印出来,在fork之后,程序要退出的时候,子进程要刷新缓冲区,所以就发生了写时拷贝,这也就导致了,在用户缓冲区中的数据子进程打印了一遍,父进程也打印了一遍。Linux系统中,一个文件,一个inode,每一个inode都有自己的inode编号(inode的设置,是以分区为单位的,不能跨分区)!--- OS需要管理这些被打开的文件,先描述,再组织 --- 在内核中,一个被打开的文件都必须有自己的文件打开对象,包含文件的很多属性。

2024-08-02 16:19:46 942

原创 Linux系统编程 --- 进程控制

直接从子进程里的PCB里面拿到的,因为子进程退出的时候,代码和数据会被释放,但是我们的PCB还是存在的。代码异常,进程的退出码就没有意义了,代码异常了代码可能就没有跑完。main函数中的return 0,是进程的退出码,表征进程的运行结果是否正确,0表示成功,可以被bash拿到。1、子进程代码是否异常了,2、没有异常结果对吗,exitcode,不对因为上面呢,不同的退出码,表示不同的出错原因。结论:main函数的返回值,本质表示进程运行完成时是否是正确的结果,如果不是,可以用不同的数字表示出错的原因。

2024-07-25 09:02:30 1051

原创 Linux系统编程---进程的概念

一、 冯诺依曼体系结构。 输入设备,存储器,输出设备,运算器,控制器。数据总线,控制总线,系统总线。二、一个程序要运行,必须先加载到内存中,为什么? 因为冯诺依曼体系结构所确定。三、操作系统。 是什么? 操作系统是一款管理软硬件资源的软件! 为什么? 1、操作系统帮助用户,管理好下面的软硬件资源! 2、为了给用户提供一个良好(稳定,高效,安全)的运行环境。 操

2024-07-20 18:19:30 854

原创 Linux系统编程---Make/MakeFile

make是一个命令makefile是一个当前目录下的文件。make会自动推导makefile中的依赖关系,栈式结构。形成可执行文件。

2024-07-18 16:56:34 336

原创 数据结构-查找-哈希表

1、 重新开一个vector,把旧的的值直接插入到新的vector里面中去。2、我们可以重新搞一个hash表,把空间提前开好,遍历旧表插入到新表里。闭散列的---开放定址法:当前位置被占用了,按规则找下一个位置(占用别人的位置)散列表的载荷因子定义为 :填入表中的元素个数 /散列表的长度。负载因子越小,冲突概率越小,空间利用率越低。但是这种方法会导致,哈希冲突:不同的值映射到相同的位置。四、扩容以后我们的映射关系就变了,需要重新映射。二、查找的时候可以找的到,但是这个值在空的后面。一、哈希表的映射方法。

2024-05-13 21:48:47 625

原创 数据结构-二叉树-红黑树

当父亲是黑色的时候,插入红色节点没有违背任何的条件,如果当父亲是红色的时候,就违背了一个节点是红色的它的左右孩子都是黑色的条件。红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因为是接近平衡的。根是黑色的,NIL是黑色的,如果一个节点是红色的,那么它的左右孩子都是黑色,不同的路径上有相同数量的黑色节点。3、如果一个节点是红色的,则它的两个孩子节点必须是黑色的。

2024-05-12 16:01:23 481

原创 数据结构-二叉树-AVL树(平衡二叉树)

如果不是独立的树我们需要对parent->_parent进行保存为ppnode,然后进行判断子树是属于ppnode的左子树还是右子树修改ppnode的左右子树为cur,然后修改cur的父亲指针。3、更新后parent平衡因子==0,说明parent所在的子树的高度不变,不会影响祖先,不用再继续沿着到root的路径往上更新。4、更新后parent平衡因子==负1or1,说明parent所在的子树的高度变化,会影响祖先,再继续沿着到root的路径往上更新。然后放在parent的右边是符合搜索树的定义的。

2024-05-09 14:22:36 537

原创 数据结构-二叉树-二叉搜索树

最大节点为最右节点,最小节点就是最左节点 ,还需要处理要删除的节点为根节点,它没有左子树或者没有右子树的情况。如果退化成下面的情况,插入删除的效率就变成了O(N),所以我们引出了AVL树红黑树B树系列。3、两个孩子,需要进行替换,也就是替换法,用左子树的最大节点或者右子树的最小节点。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。若它的左子树不为空,则左树上所有节点的值都小于根节点的值。依次删除7、14、3、8。3、8属于需要替换法进行删除的场景。二、查找、插入、删除。

2024-05-06 15:07:59 356 4

原创 数据结构-二叉树结尾+排序

最开始存0 - 9,进行单趟排,左区间是0 4,有区间是[ 6 ,9] 可以把这两个区间入栈,每次入栈如此反复。我们可以找到最大的交换到右边和最小的交换到左边,但是如果left == maxi,一交换mini和left的值就会把maxi里的值交换到mini上。我们可以使用层序遍历的思路,利用一个队列,去完成层序遍历,但是这里会有些许的不同,我们需要让空也进队列。左边做key,右边先走(相遇后,相遇位置正好是小的),右边找比key小的。上面的排序除了归并排序外,都是内排序,也就是在内存中排序。

2024-05-04 15:36:46 1157 1

空空如也

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

TA关注的人

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