- 博客(62)
- 收藏
- 关注
原创 多次运行程序打印C语言全局变量的地址结果相同吗?
本文探讨了在不同操作系统下打印全局变量地址结果不同的原因。通过实验发现,Linux平台默认配置下多次运行程序会得到不同的地址,而Windows平台需重新编译后地址才会变化。文章从进程地址空间布局(32位/64位)和ASLR(地址空间布局随机化)技术角度进行解释,指出ASLR通过随机化内存段基址来提升安全性。同时详细介绍了在Windows和Linux平台上开启/关闭ASLR的具体操作方法,包括Visual Studio的配置选项和Linux的sysctl参数设置。
2025-06-01 21:00:00
597
原创 测试用例设计
测试用例是为测试系统而设计的一组集合,包含测试环境、操作步骤、测试数据和预期结果等要素。编写测试用例是必要的,因为软件需要迭代更新,新功能的加入可能影响旧功能,进行回归测试时,已有的测试用例可以节省重新设计的时间。设计测试用例时,可以按照功能、界面、性能、兼容性、易用性和安全性等方向进行。具体设计方法包括基于需求的设计、等价类划分、边界值分析、正交法和判定表法等。等价类划分将输入分为有效和无效等价类,边界值分析则关注输入输出的边界值。正交法通过减少用例数目覆盖输入的两两组合,而判定表法适用于条件较少且结果依
2025-05-27 09:00:00
744
原创 Postman使用
本文介绍了接口测试工具Postman的安装与使用。首先讲解了Postman的下载安装方法,并演示了如何创建账号。随后详细说明了Postman的基本功能,包括发送请求、查看响应、编写断言脚本等操作,特别介绍了如何通过JavaScript脚本实现状态码、响应内容、响应头等断言测试。文章还讲解了Postman的高级功能,如集合测试、参数化测试(环境变量和文档化数据)以及测试报告生成(使用Newman工具)。最后简要介绍了如何将测试结果导出为HTML报告。全文通过B站接口测试实例,帮助读者快速掌握Postman的核
2025-05-27 09:00:00
1006
原创 组件日志——ElasticSearch
本文介绍了Elasticsearch(ES)的基本概念、安装步骤及其在文档搜索中的应用。ES是一款开源的分布式搜索引擎,具有高效、可扩展的特点,能够近乎实时地存储和检索数据。文章详细讲解了如何在Linux系统上安装ES及其插件,以及如何配置和启动ES服务。此外,还介绍了Kibana的安装与配置,Kibana是一个与ES配合使用的数据可视化工具。文章还探讨了ES的索引结构,包括正排索引和倒排索引的工作原理,以及如何创建和管理索引库。最后,文章强调了ES在文档搜索中的实际应用,展示了其强大的数据处理和搜索能力。
2025-05-26 09:00:00
1340
原创 测试分类
测试分类是软件测试中的重要环节,旨在通过不同的归类方式对测试进行细致划分,以帮助测试人员明确工作内容和范围。测试可以按照测试目的、执行方式、测试方法、测试阶段、是否进行手工测试、实施组织和测试地域等多种方式进行分类。例如,按照测试目的可分为界面测试、功能测试、性能测试等;按照执行方式可分为静态测试和动态测试;按照测试方法可分为白盒测试、黑盒测试和灰盒测试。此外,测试还可以根据测试阶段分为单元测试、集成测试、系统测试和验收测试等。测试分类的意义在于让测试人员更清晰地理解测试的各个方面,从而更有效地进行测试工作
2025-05-26 09:00:00
1065
原创 HTTPS加密握手与加密算法
听别人讲其HTTP的时候,人们都会说HTTP时无连接、不可靠的,所谓的不可靠很大程度上是由于HTTP报文传输时有被监听或篡改的风险,那么本文就来讲解一下对HTTP报文进行安全性加固的HTTPS通信协议,以及其是如何保证安全性的。
2025-05-10 16:50:21
758
原创 C++中的继承与多态
本文深入探讨了C++中的类继承机制,解释了继承的基本概念、语法格式及其在工程中的应用。文章详细介绍了类继承的三种方式(public、protected、private)及其对访问权限的影响,强调了public继承的广泛适用性。此外,文章还讨论了基类与派生类之间的赋值兼容性、内存切片现象以及继承中的作用域问题。通过示例代码和图示,文章展示了继承中可能出现的特殊现象,如隐藏和覆盖,并提供了实际代码运行结果以加深理解。最后,文章总结了继承在C++编程中的重要性,强调了其在扩展类功能和提高代码复用性方面的优势。
2025-05-10 09:00:00
1685
1
原创 测试相关理论
现在想象你是一名某手机生产厂商生产线的质检员,现在有很多的手机随着流水线到达了你的工位,你需要做到就是在手机开机的状态下,按下手机屏幕的电源开关,观察手机屏幕能否正常亮起,如果可以则认为该手机屏幕的电源开关可以正常工作,否则认为该手机屏幕的电源开关不能正常工作,这个时候你就会向你的领导报告不能开机的手机并交给专业的工程师维修。在上述的例子中,质检员就完成了关于手机屏幕电源开关的测试,测试实际上就是在检测产品的某一功能正常运行,对应到我们软件测试来说,就是我们要确保我们开发软件的功能都可以按照预期完成工作。
2025-05-08 05:00:00
586
原创 左值、右值、完美转发傻傻弄不清——我来助你!
左值与右值描述的是可以位于赋值符号左右两侧的值,只能位于等号右侧的就是右值,能够位于等号左侧的就是左值。左值与右值最大的区别是:是否可以进行取址操作,如果可以就是左值,反之就是右值。将亡值也是右值的一种,它与普通右值的区别是,将亡值意味着它是一个资源即将被释放的右值对象,通常使用std::move(),来将某一个对象转换为将亡值。完美转发就是保证左值与右值作为参数进行传递的时候,左值属性与右值属性不发生变化。
2025-05-06 22:15:53
770
原创 MySQL的内置函数与复杂查询
在前面几篇文章中,讲解了有关MySQL数据库、数据库表的创建、数据库表的数据操作等等。本文我们主要讲解MySQL中给我们内置好的,可以帮助我们完成一定功能的函数,以及一些复杂场景下的查询操作。这里不建议没有基础的同学先进行阅读。
2025-05-06 22:15:34
1250
原创 Cookie与Session
当你劳累了一天回到家中,打开Bilibili刷一会视频,但是你发现B站一般会让我们进行登录操作,当我们登录完成之后,一段时间内都不需要我们重新进行登录;你有没有想过这是为什么,为什么我登录一次之后就不用重复登录了?Cookie就是帮助我们完成这个任务的【功臣】图1 登录B站。
2025-05-05 09:00:00
618
原创 Selenium自动化测试工具常见函数
本文主要从元素的定位、测试对象操作、窗口、弹窗、等待、浏览器导航、文件上传、浏览器参数设置这几个方面介绍一下selenium自动化测试工具。自动化简单理解一下就是使用工具代替人力劳动,将人从劳动中解放出来。具体到我们的测试工作中就是:我们使用一些工具来代替我们完成一些重复的“点点点”的工作。Selenium就是一款自动化工具,我们可以使用它来解放我们的生产力!
2025-05-05 09:00:00
2185
原创 网络相关概念
当你和你的女神相隔千里的时候,你忍不住如洪水般的思念,打开了你的微信并给你的女神发了一句“在吗?我好想你”,你的女神接到你的信息后秒回你“我也想你,宝贝”。为什么你的女神能在千里之外收到你的消息,为什么你又能收到女神的回复,这就与我们本文要讲解的网络有关系了……一、网络发展其实网络的发展历史就是通信需求的发展历史,当我们的通信需求日益增长的时候,我们的网络发展就成为了一种必然。最开始的时候我们使用一台计算机也许就可以完成我们的大多数任务,不需要进行多台主机进行通信,图1 主机之间相互独立。
2025-04-18 16:36:26
630
原创 组件日志——brpc
当你在本地写下一个代码并运行,你的代码会被加载到你本地机器的内存中并使用你本地的硬件资源进行处理而后返回一个结果给你。不过,你是否想过让我们的代码跑在远端机器上,利用远端的机器资源运行我们的代码?毫无疑问,要实现这种效果,我们必然要引入网络通信协议,如果让我们自己从零开始完成这样的网络通信协议以及相关的接口,这似乎并不是一件容易的事,那么有没有已经写好的开源框架呢?欸!这就与我们要讲解的rpc(Remote Procedure Call远程过程调用)框架不谋而合了,rpc的一个基本功能就是实现了相关接口让我
2025-04-13 17:41:06
827
原创 可执行程序是如何诞生的(一)——概览
关于为什么写这部分文章,主要是博主在面试时,被面试官问到了,突然一种熟悉的陌生感涌上我的心头……,因此博主想把自己读过的一本书整理成博客的形式供自己和大家阅读。对了,博主读的是《程序员的自我修养——链接、装载与库》,这本书非常推荐大家读一下,这对你理解一个可执行程序是如何诞生的有很大的帮助。那么闲言少叙,我们直接进入正题吧。
2025-04-08 23:27:33
633
原创 组件日志——etcd
Etcd是一个golang编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用Raft一致性算法来保持集群数据的一致性,且客户端通过长连接watch功能,能够及时收到数据变化通知。这样的简介比较干涩也不太好理解,我们换个说法,如果你开发过集群式的网络服务,你应该知道,通常情况下,你需要指定一台网关主机转发来自用户的请求,这些请求将被转发到对应的应用服务器上,然后进行业务处理。
2025-03-23 20:55:49
748
原创 组件日志——spdlog
spdlog是一款高性能、超快速、零配置的C++日志库,它提供了很多功能比如说彩色打印,日志输出到指定文件,异步输出等,更多的介绍可以去查看官网。
2025-03-21 09:00:00
1546
原创 组件日志——gtest
就像简介里介绍的,GTest是一款单元测试框架,既然是一款测试框架,那么它必然要经历以下几个步骤。先定义出一个要测试的函数,也就是2.1中的func(),为了减少理解的成本测试函数就是一个加法函数。定义好需要测试的函数之后我们就可以写一个测试用例了,在GTest中多个测试用例叫做合在一起叫做一次测试,我们可以为测试和测试用例起名字图2 测试与测试用例的关系在不同的测试中测试用例可以使用相同的名称,但是在同一个测试中不允许使用相同的测试用例名称,测试与测试之间不可以同名。
2025-03-19 20:45:53
1027
原创 组件日记——gfalgs
DEFINE_<TYPE>(<变量名>,<默认值>,<帮助文档>)图1 gflags中支持的参数类型实际上,图1没有截全,gflags还支持字符串类型等,通常而言我们启动一个程序传递的参数类型也不会过于复杂, gflags的预置参数类型也完全够用。在示例代码中的DEFINE_string()就是定义了一个字符串类型的输入参数。
2025-03-19 09:00:00
914
原创 Linux线程
本文将先讲解有关线程的一些接口并介绍Linux操作系统中线程的管理结构、而后介绍线程线程存在的一些问题并介绍有关线程问题的解决方案及相关衍生问题。
2024-10-26 19:06:56
881
原创 进程间的信号
在我们的日常生活中有这许多的信号,信号有着不同的严重程度,对于不同的信号我们也会做出不同的应对措施。比如,对于红绿灯,在红灯时,大部分人会选择在等待区进行等待,但是对于一些特殊车辆特殊时,可以选择忽略红灯信号,比如救护车或警车进行救护或紧急出警时往往会选择性忽略信号。但是对于一些严重的信号往往不能“随便”处理,比如:钱包空空没钱吃饭的时候,就往往要努力打工或者跟父母要生活费了~。一、信号是什么?在中国,我们小时候,通常都会被告知110是报警电话,120是急救电话,119是火警电话。
2024-10-24 09:00:00
1702
原创 Linux进程间通信(二)——共享内存
在Linux进程间通信(一)中,讲解了Linux中的管道通信,本文将讲解Linux进程间通信的第二种方式——共享内存。一、什么是共享内存?我们知道进程间通信的一个特点就是先要让通信的两个进程看到同一块内存空间且这块空间不会在进程发生写操作时,出现写时拷贝,然后让一个进程向其中投放数据,另一方从其中拿取数据。对于管道通信来讲,我们类似于创建一个文件,而后向文件中进行数据的存取。在共享内存中,可以说是真正意义上的开辟了一块内存空间,来让进程通信的的两方使用。
2024-10-21 06:30:00
1004
原创 Linux进程间通信(一)——管道通信
在学习Linux中的进程时,曾提到过进程的独立性。进程独立性的是进程与进程之间在出错时不会相互影响的重要保证。但是由此也引发的一个问题,如果进程之间想要相互传递信息怎么办,由于进程与进程之间独立,一个进程不能访问另一个进程中的资源与数据等信息。这个时候就需要在进程之间建立信道来实现进程间通信。本文介绍进程间通信中的一个方式——管道通信。
2024-10-14 09:00:00
1622
原创 MySQL基本查询
在博主的【MySQL表的操作与数据类型】一文中介绍了,MySQL中表的一些基本操作,但是在该文中没有介绍表内容的增删查改,本文将对这一部分内容作补充。
2024-10-02 09:00:00
877
原创 MySQL表的约束
我们在生活中,每个人都有一个或多个独一无二的属性,但是当我们在MySQL中进行数据插入时,我们可能错误的将这些独特的属性重复插入而全然不知,诸如此类或者其他特殊情况。为了避免这种情况发生。MySQL在设计时添加了对表中列属性约束的选项。本文就来介绍一下MySQL中一些常见的约束。
2024-10-01 21:00:00
1254
原创 UML类图绘制
在学习面向对象语言时,我们可以使用UML类图来描述将要编写的程序中类与类之间的关系。绘制类图可以让程序员更清晰的感知类与类之间的关系,进而编写出更符合需求的代码。(博主使用的是“亿图图示”中的绘制工具,当然你也可以选择其他的工具,该软件在网上有破解版,推荐读者使用正版,读者可自行查找,这里就不进行安装引导了。注意:本博文使用C++作为代码演示语言。
2024-09-23 20:43:53
1126
原创 Linux中的动静态库
在刚开始学习C语言代码的时候,我们需要引入一个名为stdio.h的头文件,在头文件中为我们一些读写方法的声明,我们可以根据这些声明来使用接口实现对应的功能。但我们要知道,光有函数方法的声明是无法正常使用一个函数,还需要函数的具体定义,函数的定义就写在对应的库文件中。在本文中我们将介绍如何制作一个库,以及动静态库的区别。
2024-09-23 09:00:00
1676
原创 Linux文件系统(下)
在博主的【Linux文件系统(上)】一文中介绍了有关文件系统在Linux操作系统平台上加载到内存中后是如何进行管理的,本文要介绍的是在磁盘中的文件是如何存储的。注意:文件系统是管理磁盘上数据读写的重要一环,目前已经有很多成熟的文件管理系统,本文选择以ext2文件系统为例介绍文件系统。
2024-09-15 21:33:43
1298
原创 Linux文件系统(上)
在Linux中存在“两列”文件,一种是加载到内存中的文件,另一种是保存在磁盘等设备中的文件。本文要讲的就是加载到内存中的文件是以何种形态存在,是如何进行表征的。本文通过C语言中的读写接口作为引入介绍了Linux中的文件读写接口和Linux读写接口的参数,以及如何在Linux内核中fd如何实现定位要读写的文件,并由fd的分配规则引出了文件重定向和文件缓冲区,最后介绍了Linux内核对文件的管理视角是怎么样的。在下一篇文章中将解释文件如何在磁盘上的存储。
2024-09-15 12:31:18
1118
原创 进程替换篇
你一定见过类似于这样的“黑框框”,这个“黑框框”其实就是我们的终端,我们可以在这个黑框框中输入相应的命令,来执行一定的功能。在博主的【Linux中的环境变量】一文中,解释了其是命令行中的命令,其实都是一个个被编写好的可执行文件,我们使用对应的命令其实就是在执行相应的程序。那么这个操作到底是怎么实现的呢,我们可不可写一个类似的“黑框框”呢?图1 计算机中的“框框”
2024-09-09 18:35:01
1045
原创 进程等待与退出
我们在编写程序的时候,我们往往需要知道这个程序中的某个进程执行情况是怎么样的,在Linux平台下有“退出码”、“退出信号”来描述进程退出的结果,退出的结果会返回给该进程的父进程,对于云服务器来说实际上就是将我们搭载主函数的进程返回bash进程,那么对于我们主函数中创建的一级子进程,进程的结果自然就会返回给我们的主函数。本文要讨论的就是进程如何返回给父进程退出结果,以及推出结果有什么作用。
2024-09-08 19:12:38
1191
原创 C++中的右值引用
C++中的左值引用解决了大部分的拷贝效率问题,但是还有着诸如:一个资源占用很大的局部对象返回时,会造成多次拷贝的问题,这对C++程序运行的效率,资源的使用都是较为沉重的打击,为了解决这一问题,C++11提出了右值引用并将这一概念引入到了STL中。本文就来解释一下,什么是右值引用,右值引用的优势在哪。一、什么是左值、什么是右值对于如下代码,a就是一个左值,0就是一个右值。具体一点左值右值最大的差异就在于:左值可以进行取地址操作,而右值不行。int a = 0;
2024-09-07 12:57:39
1114
原创 进程地址空间
不知道大家在学习C语言的时候有没有见过这样一幅图,在学习C语言的时候,你也许经常听到有人说:某某变量开辟在堆区,某某变量开辟在栈区,等等。可是进程的地址空间到底是如何进行分布的,为什么要这样分布,进程与进程之间的地址空间又有什么关系这些也许我们还不甚清楚……图1 进程地址空间分布图。
2024-09-04 22:43:56
1457
1
原创 Linux中的环境变量
不知道大家有没有过这样的经历,你再Windows上安装了一个软件,这个软件提示你将环境变量设置进path中,比如说我们耳熟能的python。那么你有没有好奇环境变量到底是个什么东西,他在我们的计算机上起到了一个什么样的角色?
2024-09-04 09:00:00
1221
原创 Learning——protobuf的下载
到此,需要你回忆⼀下在执行configure时,如果当时选择了第⼀种执行方式,也就是 ./configure ,那么到这就可以正常使用protobuf了。博主使用的是21.11版本,读者可根据自己情况自行下载。由于访问的是github上的项目有些读者可能没办法获取,博主会上传资源到CSDN,读者根据情况自行下载。读者可根据自己情况自行安装,这里我们希望安装全语言支持的版本故在cmd中使用下列命令。若不能下载,可以下载本博文上传的资源,资源中有相关压缩包。下载windows版本的压缩包到本地,而后解压打开。
2024-09-03 16:19:51
1355
原创 进程调度与切换
在我们的windows电脑上,常常会开启许多不同的软件,我们知道他们会一种和谐的方式存在于我们的电脑上,它们会随着我们的点击而启动,会随着我们计算机的关闭而关闭。那么本文想要介绍的是在Linux的操作系统中是如何对这些软件处理,来到达这种“和谐”状态。一、Linux进程的概念准备1.进程的一些概念①独立性:进程与进程之间是不会相互影响的,一方的错误退出并不会导致另一方出错②共享性:通常计算机只有一块CPU,所有的进程共享这一块CPU及其周边资源。
2024-09-03 15:09:21
850
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人