自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 组件日志——etcd

Etcd是一个golang编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用Raft一致性算法来保持集群数据的一致性,且客户端通过长连接watch功能,能够及时收到数据变化通知。这样的简介比较干涩也不太好理解,我们换个说法,如果你开发过集群式的网络服务,你应该知道,通常情况下,你需要指定一台网关主机转发来自用户的请求,这些请求将被转发到对应的应用服务器上,然后进行业务处理。

2025-03-23 20:55:49 702

原创 组件日志——spdlog

spdlog是一款高性能、超快速、零配置的C++日志库,它提供了很多功能比如说彩色打印,日志输出到指定文件,异步输出等,更多的介绍可以去查看官网。

2025-03-21 09:00:00 1441

原创 组件日志——gtest

就像简介里介绍的,GTest是一款单元测试框架,既然是一款测试框架,那么它必然要经历以下几个步骤。先定义出一个要测试的函数,也就是2.1中的func(),为了减少理解的成本测试函数就是一个加法函数。定义好需要测试的函数之后我们就可以写一个测试用例了,在GTest中多个测试用例叫做合在一起叫做一次测试,我们可以为测试和测试用例起名字图2 测试与测试用例的关系在不同的测试中测试用例可以使用相同的名称,但是在同一个测试中不允许使用相同的测试用例名称,测试与测试之间不可以同名。

2025-03-19 20:45:53 959

原创 组件日记——gfalgs

DEFINE_<TYPE>(<变量名>,<默认值>,<帮助文档>)图1 gflags中支持的参数类型实际上,图1没有截全,gflags还支持字符串类型等,通常而言我们启动一个程序传递的参数类型也不会过于复杂, gflags的预置参数类型也完全够用。在示例代码中的DEFINE_string()就是定义了一个字符串类型的输入参数。

2025-03-19 09:00:00 852

原创 Linux线程

本文将先讲解有关线程的一些接口并介绍Linux操作系统中线程的管理结构、而后介绍线程线程存在的一些问题并介绍有关线程问题的解决方案及相关衍生问题。

2024-10-26 19:06:56 858

原创 进程间的信号

在我们的日常生活中有这许多的信号,信号有着不同的严重程度,对于不同的信号我们也会做出不同的应对措施。比如,对于红绿灯,在红灯时,大部分人会选择在等待区进行等待,但是对于一些特殊车辆特殊时,可以选择忽略红灯信号,比如救护车或警车进行救护或紧急出警时往往会选择性忽略信号。但是对于一些严重的信号往往不能“随便”处理,比如:钱包空空没钱吃饭的时候,就往往要努力打工或者跟父母要生活费了~。一、信号是什么?在中国,我们小时候,通常都会被告知110是报警电话,120是急救电话,119是火警电话。

2024-10-24 09:00:00 1664

原创 Linux进程间通信(二)——共享内存

在Linux进程间通信(一)中,讲解了Linux中的管道通信,本文将讲解Linux进程间通信的第二种方式——共享内存。一、什么是共享内存?我们知道进程间通信的一个特点就是先要让通信的两个进程看到同一块内存空间且这块空间不会在进程发生写操作时,出现写时拷贝,然后让一个进程向其中投放数据,另一方从其中拿取数据。对于管道通信来讲,我们类似于创建一个文件,而后向文件中进行数据的存取。在共享内存中,可以说是真正意义上的开辟了一块内存空间,来让进程通信的的两方使用。

2024-10-21 06:30:00 983

原创 Linux进程间通信(一)——管道通信

在学习Linux中的进程时,曾提到过进程的独立性。进程独立性的是进程与进程之间在出错时不会相互影响的重要保证。但是由此也引发的一个问题,如果进程之间想要相互传递信息怎么办,由于进程与进程之间独立,一个进程不能访问另一个进程中的资源与数据等信息。这个时候就需要在进程之间建立信道来实现进程间通信。本文介绍进程间通信中的一个方式——管道通信。

2024-10-14 09:00:00 1564

原创 MySQL基本查询

在博主的【MySQL表的操作与数据类型】一文中介绍了,MySQL中表的一些基本操作,但是在该文中没有介绍表内容的增删查改,本文将对这一部分内容作补充。

2024-10-02 09:00:00 843

原创 MySQL表的约束

我们在生活中,每个人都有一个或多个独一无二的属性,但是当我们在MySQL中进行数据插入时,我们可能错误的将这些独特的属性重复插入而全然不知,诸如此类或者其他特殊情况。为了避免这种情况发生。MySQL在设计时添加了对表中列属性约束的选项。本文就来介绍一下MySQL中一些常见的约束。

2024-10-01 21:00:00 1223

原创 QT——初识

QT是一款可跨平台的电脑客户端开发软件,本文将介绍一些有关QT使用的基础内容。1.创建一个QT项目图1 创建一个Qt项目。

2024-10-01 05:00:00 1342

原创 UML类图绘制

在学习面向对象语言时,我们可以使用UML类图来描述将要编写的程序中类与类之间的关系。绘制类图可以让程序员更清晰的感知类与类之间的关系,进而编写出更符合需求的代码。(博主使用的是“亿图图示”中的绘制工具,当然你也可以选择其他的工具,该软件在网上有破解版,推荐读者使用正版,读者可自行查找,这里就不进行安装引导了。注意:本博文使用C++作为代码演示语言。

2024-09-23 20:43:53 993

原创 Linux中的动静态库

在刚开始学习C语言代码的时候,我们需要引入一个名为stdio.h的头文件,在头文件中为我们一些读写方法的声明,我们可以根据这些声明来使用接口实现对应的功能。但我们要知道,光有函数方法的声明是无法正常使用一个函数,还需要函数的具体定义,函数的定义就写在对应的库文件中。在本文中我们将介绍如何制作一个库,以及动静态库的区别。

2024-09-23 09:00:00 1639

原创 Linux文件系统(下)

在博主的【Linux文件系统(上)】一文中介绍了有关文件系统在Linux操作系统平台上加载到内存中后是如何进行管理的,本文要介绍的是在磁盘中的文件是如何存储的。注意:文件系统是管理磁盘上数据读写的重要一环,目前已经有很多成熟的文件管理系统,本文选择以ext2文件系统为例介绍文件系统。

2024-09-15 21:33:43 1277

原创 Linux文件系统(上)

在Linux中存在“两列”文件,一种是加载到内存中的文件,另一种是保存在磁盘等设备中的文件。本文要讲的就是加载到内存中的文件是以何种形态存在,是如何进行表征的。本文通过C语言中的读写接口作为引入介绍了Linux中的文件读写接口和Linux读写接口的参数,以及如何在Linux内核中fd如何实现定位要读写的文件,并由fd的分配规则引出了文件重定向和文件缓冲区,最后介绍了Linux内核对文件的管理视角是怎么样的。在下一篇文章中将解释文件如何在磁盘上的存储。

2024-09-15 12:31:18 1088

原创 MySQL表的操作与数据类型

在MySQL库的操作一文中介绍了有关MySQL库的操作,本节要讲解的是由库管理的结构——表。

2024-09-09 22:58:22 1186

原创 进程替换篇

你一定见过类似于这样的“黑框框”,这个“黑框框”其实就是我们的终端,我们可以在这个黑框框中输入相应的命令,来执行一定的功能。在博主的【Linux中的环境变量】一文中,解释了其是命令行中的命令,其实都是一个个被编写好的可执行文件,我们使用对应的命令其实就是在执行相应的程序。那么这个操作到底是怎么实现的呢,我们可不可写一个类似的“黑框框”呢?图1 计算机中的“框框”

2024-09-09 18:35:01 1025

原创 进程等待与退出

我们在编写程序的时候,我们往往需要知道这个程序中的某个进程执行情况是怎么样的,在Linux平台下有“退出码”、“退出信号”来描述进程退出的结果,退出的结果会返回给该进程的父进程,对于云服务器来说实际上就是将我们搭载主函数的进程返回bash进程,那么对于我们主函数中创建的一级子进程,进程的结果自然就会返回给我们的主函数。本文要讨论的就是进程如何返回给父进程退出结果,以及推出结果有什么作用。

2024-09-08 19:12:38 1170

原创 MySQL库的操作

本文介绍MySQL相关的库操作。

2024-09-07 19:11:38 1257

原创 C++中的右值引用

C++中的左值引用解决了大部分的拷贝效率问题,但是还有着诸如:一个资源占用很大的局部对象返回时,会造成多次拷贝的问题,这对C++程序运行的效率,资源的使用都是较为沉重的打击,为了解决这一问题,C++11提出了右值引用并将这一概念引入到了STL中。本文就来解释一下,什么是右值引用,右值引用的优势在哪。一、什么是左值、什么是右值对于如下代码,a就是一个左值,0就是一个右值。具体一点左值右值最大的差异就在于:左值可以进行取地址操作,而右值不行。int a = 0;

2024-09-07 12:57:39 1061

原创 进程地址空间

不知道大家在学习C语言的时候有没有见过这样一幅图,在学习C语言的时候,你也许经常听到有人说:某某变量开辟在堆区,某某变量开辟在栈区,等等。可是进程的地址空间到底是如何进行分布的,为什么要这样分布,进程与进程之间的地址空间又有什么关系这些也许我们还不甚清楚……图1 进程地址空间分布图。

2024-09-04 22:43:56 1411 1

原创 Linux中的环境变量

不知道大家有没有过这样的经历,你再Windows上安装了一个软件,这个软件提示你将环境变量设置进path中,比如说我们耳熟能的python。那么你有没有好奇环境变量到底是个什么东西,他在我们的计算机上起到了一个什么样的角色?

2024-09-04 09:00:00 1177

原创 Learning——protobuf的下载

到此,需要你回忆⼀下在执行configure时,如果当时选择了第⼀种执行方式,也就是 ./configure ,那么到这就可以正常使用protobuf了。博主使用的是21.11版本,读者可根据自己情况自行下载。由于访问的是github上的项目有些读者可能没办法获取,博主会上传资源到优快云,读者根据情况自行下载。读者可根据自己情况自行安装,这里我们希望安装全语言支持的版本故在cmd中使用下列命令。若不能下载,可以下载本博文上传的资源,资源中有相关压缩包。下载windows版本的压缩包到本地,而后解压打开。

2024-09-03 16:19:51 1228

原创 进程调度与切换

在我们的windows电脑上,常常会开启许多不同的软件,我们知道他们会一种和谐的方式存在于我们的电脑上,它们会随着我们的点击而启动,会随着我们计算机的关闭而关闭。那么本文想要介绍的是在Linux的操作系统中是如何对这些软件处理,来到达这种“和谐”状态。一、Linux进程的概念准备1.进程的一些概念①独立性:进程与进程之间是不会相互影响的,一方的错误退出并不会导致另一方出错②共享性:通常计算机只有一块CPU,所有的进程共享这一块CPU及其周边资源。

2024-09-03 15:09:21 804

原创 Learing——protobuf(一)

在网络的学习中,我们知道了如果想要进行跨网络通信就必须要定义“协议”,而“协议”可以帮助网络通信的两台主机解析数据,进而实现通信的效果。网路通信的方式有很多,但是都离不开一件事,那就是对数据进行序列化和反序列化。而我们常常听到的Json就是序列化工具的一种,本文要介绍的是另一种由Google开发的一种序列化工具。一、protobuf的简介当我们自己手写序列化和反序列化程序的时候,我们常常要做一些比较耗时但没有什么技术含量的工作,比如对一个结构体中的数据赋值、清空等函数的编写。

2024-09-02 16:18:59 907

原创 review——AVL树

图2 主逻辑流程图。

2024-08-27 14:18:42 638

原创 算法练习之双指针算法

欢迎感兴趣的小伙伴交流学习。一、移动零【做题链接图1.1 题目描述图1.2 题目解释public:for (;本文介绍了一些有关双指针的算法,一些没有描述的在最近就会补上,另外,文中图片不清晰的可以去博主码云查看【点我。

2024-05-12 22:06:54 386 1

原创 Linux中的fork与进程地址空间

在博主的《进程状态解析》一文中,在讨论进程创建时,提到了一个系统调用接口fork,它在使用过程中表现出对于父子进程不一致的返回结果,而且似乎还具有多次返回的特点,那么本文就来详细解释一下其中的缘由。博文中涉及到的图片如若不清可点击链接查找高清图《博主码云一、进程地址空间。

2024-05-10 17:20:47 1539

原创 进程状态解析

在博主的上一篇文章中(点我查看),解释了有关冯诺依曼体系和操作系统的管理问题,当时在文末博主只解释了操作系统是以何种姿态来管理进程,但并没有解释什么是进程,本文博主就来解释一下有关进程的几个问题。一、进程概念在介绍进程之间,我们需要了解这样一个事实:对于现代PC机来说,某一时刻往往可能有多个进程在运行,即使你开机之后什么也不干,操作系统和一些驱动程序也会强制运行。所以,此时操作系统作为第一个开机后“苏醒”的程序他如何来管理之后醒来的程序呢?

2024-05-10 01:31:10 1026

原创 智能指针篇

在编写代码的时候,有时会遇到程序异常跳转的情况比如说:现假设在程序A中,正常情况下需要依次执行:主函数->函数跳转(假设有)->函数内动态开辟内存->函数体执行(这里函数体存在正常情况和异常情况的错误抛出)->函数内动态内存回收->函数返回->主函数异常捕获->主函数执行结束。那么这里的问题在于:当在执行函数体出现异常时(使用throw抛出异常),会直接跳转到主函数异常捕获部分而不按照正常的执行逻辑执行动态内存的回收。这就会照成内存泄漏①问题。而智能指针的存在就是来解决这一问题的。

2024-05-09 09:33:03 1624

原创 浅谈冯诺依曼体系与Linux操作系统

不知道你是否有着这样的疑问:什么是内存?什么是磁盘?他们有什么区别?可不可以相互替代?操作系统是如何对数据进行管理的?我们平日写的C代码是如何既能在windows机器上执行又能在Linux机器上执行的呢?如果你对这些问题感到混乱不妨先来看看这篇文章!带着可莉去炸鱼 (shenyang-aerospace-university-g_0) - Gitee.com一、冯诺依曼体系结构。

2024-05-09 09:26:18 1093

原创 二叉搜索树的应用:map与set

在本文的开始前,博主想对你说:1.确保自己的英语能力可以阅读文档(如若不然可以使用“有道翻译”等翻译软件)2.确保知道什么是二叉搜索树(如若不然,可以看博主的这篇文章click_me3.推荐一个查阅C++知识相关文档的网站——cplusplus(点我跳转click_me如果前面几项都准备好了,那么就可以开始阅读该博博文了。一、set及相关功能介绍。

2024-03-14 17:06:08 973 6

原创 浅谈二叉搜索树

本文介绍了什么是二叉搜索树并实现流一些基本二叉搜索树的操作(具体见目录)一、啥是二叉搜索树二叉搜索树本质上就是一种二叉树,它具备二叉树的性质,同时,其还有这这样一个性质:对于每一个根节点,它左子树的任一节点键值小于根节点的键值,它任意右子树节点的键值均大于根节点的键值。对于拥有该性质的二叉树我们称其为二叉搜索树。二叉搜索树的实例。

2024-03-12 23:10:53 981 4

原创 浅谈内存管理中的new与delete

本文借由内存管理讲解了new和delete与malloc和free的区别,此外,在开始阅读本文前,请确保你了解过构造函数和析构函数和运算符重载,如果你不清楚请点击此处跳转查看构造函数与析构函数文章运算符重载文章一、为什么要进行内存管理?所谓内存管理,本质上是将内存分区,不同的区域有着不同的功能与属性。

2024-02-20 15:04:00 951 5

原创 C++运算符重载

本文是作为C++类与对象文章的补充,后续还会补充其他内容。借助关键字operator进行重载,格式如图3所示:[返回类型] operator[重载运算符](参数)在开始介绍之前,要先解释一下本文的日期类是什么意思,日期类就是字面意思一个描述日期的类,什么是类来着??(如果你忘记了,可以看看博主的这篇文章click_me),类是一种由用户定义的自定义类型,对于一个类而言其不仅仅有成员变量还有成员函数,而类的精华就在于其成员函数(成员变量也很重要!!!

2024-02-17 21:52:41 1000 2

原创 浅谈类和对象

本文主要以较为粗略的形式讲解类与对象(内容较多较为繁琐),所以本文更像是一个有关类和对象的目录,当然本文讲解的内容是不完全的,至于不完全的内容都会在本文的第四部分——相关文章里一 一介绍(持续更新--2024.2.16记) 本文写于2024.2.16C++允许我们在类中声明函数,类中的函数默认为内联函数(关于什么是内联函数这里就不多介绍了)。类的作用与如图4所示。

2024-02-16 13:06:42 980 5

原创 【Linux权限问题】

文件夹的读权限是指用户有没有在文件夹中查看内容的权限文件夹的写权限是指用户有没有在文件夹中创建、删除、重命名文件的权限文件夹的执行权限是指用户有没有进入文件夹的权限root不受权限控制。

2023-12-10 17:54:37 810 1

原创 数据结构之二叉树

若要进行降序,则应该建小堆(原因稍后讲解)。故此时根节点的值一定小于其左右子树中的任一节点,那么此时将这一根节点(数组的零偏移处)与堆末尾(也就是数组末尾)交换,这时堆最后一个元素即为最小,即有序。这时再将堆的大小(容量)减去一,以保证有序的元素不在参与调整,那么再重复上述过程,会令堆倒数第二个元素有序。重复元素总个数减一次后,堆便有序。我们假设排升序。

2023-10-05 21:00:26 260 3

原创 栈与队列

栈和队列实际上都是一种特殊的线性表,即二者都是一种特殊的存取结构在设计栈和队列的时候要特别注意指针的越界问题,特别是在遍历队列和栈的时候。此外,还要多加练习。

2023-09-09 14:51:55 82 4

原创 KMP算法详解(含视频)

在我们进行字符串匹配或者说模拟实现C语言库函数strstr()时,我们不难发现暴力求解( BF算法)的时间消耗是非常高的。于是和经研究后于1977年提出了一个更简便的算法,也就是KMP算法。------2023.8.18记前缀与后缀、最长相等前后缀、文本串、模式串我们先用动图来演示一下演示视频(假设我们已经求出了next数组,关于next数组如何构造,我们稍后解释)我们先对各个变量命个名,以方便解释文本串text、模式串pattern、文本串长度len_text、模式串长度len_pattern。

2023-08-18 17:02:38 350 6

Learning-protobuf的下载

里面包含widows和支持全语言的protobuf——v21.11版本,解压密码:111

2024-09-03

1_2022物理实验报告.zip

1_2022物理实验报告.zip

2023-11-27

空空如也

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

TA关注的人

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