自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++三大特性——封装、继承、多态(一)封装和继承

在面向对象编程的世界里,C++以其强大的特性而闻名。和。理解这些概念不仅有助于写出更好的代码,更是掌握C++面向对象编程精髓的关键。此外这三大特性都提供了程序员的一个良好的编程方式和编程习惯。大大简化了代码。让我们更加方便地调用、添加、引用已有的代码。下面请跟着小编一起探究C++的三大特性。

2025-11-08 16:43:07 586 2

原创 项目:抓虫记日志系统(四)

我们从日志获取到的有效信息、输出到的地方,以及多线程去输出日志要输出的信息用缓冲区类存储多线程日志器输出的信息,一个Buffer类单独管理多线程输出信息,从而避免了输出位置冲突的情况和输出内容完毕清除的情况。我们使用全局日志器。其实就和局部日志器不同的是使用一个全局的对象进行管理指向全局的日志器的智能指针。结合前文,我们实现了日志输出的时间、日志等级、格式化输出内容、异步日志器的缓冲区、异步日志器的输出。为了更好的输出日志等级,我们将日志器做了一点微小的优化,直接将日志等级名作为函数名,封装日志器的输出。

2025-10-13 21:56:46 823 9

原创 项目:寻虫记日志系统(三)

前两章中我们完成了日志时间、日志打开文件、日志基本信息、日志输出格式、日志落地方向。那我们今天要谈的就是异步日志的输出、全局日志器和局部日志器的制造。

2025-09-17 20:47:16 295 8

原创 项目:寻虫记日志系统(二)

但是方法一有一个不大好的缺点:不好进行日志等级的赋值和初始化,毕竟我们给日志等级默认我们也要知道对应的日志等级名称。上述方法一还是不太好,定义对应日志等级的日志等级名称,意味着这个名字就不能再用了,虽然我们也可以使用namespace命名空间,将unordered_map<int,std::string,int>和这些日志等级赋值变量放入命名空间中,也可以将unordered_map<int,std::string,int>和这些日志等级赋值变量前加上static放入类域中。又怎么实现日志的等级的筛选?

2025-09-16 19:33:45 894 3

原创 项目:寻虫记日志(一)

我们程序员在写代码时往往会有很多bug等待我们寻找调试。其实bug最开始的含义就是小虫子,那为什么会变成计算机老鼠过街人人喊打的bug呢?这里讲一个小故事。早期的计算机非常大,大概有两个足球场的大小,一天研究人员发现计算机结果不对,对计算机做了一个全检查,结果就是晶体管上有一只飞虫的尸体造成的计算机计算结果出现了问题。至此之后bug就变成了程序的错误。那我们到底该如何很好的发现bug并及时修改他们呢?论最快找到bug的方式当然是调试器和日志。但是调试器在很多时候都是有局限性的,是无法使用的。

2025-09-07 16:51:10 700 8

原创 C++11语法(三)

这两个函数都是库<functional>文件中的类。std::function和函数指针有着异曲同工之妙,在项目中对于函数的发封装起到非常大的作用。std::function可以与lamda表达式、仿函数和bind装配器有着不错的兼容。函数指针并不能做到这点。此外函数指针为了重复使用一般都是泛型编程(返回值或是参数都是用void*,这样就可以不用管参数的类型,参数的数量,返回值的数量和类型,但是这样出错了非常不好检查出来。

2025-08-31 17:09:07 657 16

原创 C++11语法(2)

上期小编讲解了列表初始化、右值引用。接下来我们要解密之前提到过得emplace和emplace_back函数的秘密。小编打算在这篇文章中讲C++参数包(和C语言的不定参数做做比较),可以理解为C++版的不定参数。如何写出emplace和emplace_back函数。下次小编打算讲解lambda表达式、包装器、捆绑器。为了方便描述,也会讲仿函数(以前应该也讲过,再提提好理解些。

2025-08-12 13:11:43 854 20

原创 C++11语法(一)

右值引用和左值引用是相对的,C++11发布右值引用旨在解决左值引用无法解决的返回值引用问题。左值引用和右值引用的本质都是指针,右值引用作用是延长变量的生命周期,左值引用也可以延长变量生命周期,但是不能改变值。右值引用引用左值,我们上面说右值引用要求对对象的引用类型是右值类型,左值很明显是左属性,如果右值引用和左值引用不能转化,那C++委员会的大佬又有什么必要创造出右值引用。最后再介绍引用折叠和万能引用。我们将左值引用和右值引用对比着来讲,大家能根据左值引用和右值引用的不同来说明右值引用的作用。

2025-08-04 08:39:11 903 16

原创 C++11STL容器map和set简单介绍

map和set底层都是红黑树,是二叉搜索树的一种,查找非常快。不像数组、链表一样一个一个对比,可以理解为创建一个非常适合使用二分查找的结构,每次查找都可以排除掉上一次排除元素的一半。下面小编来介绍一个非常有意思的二叉树结构——二叉搜索树。

2025-07-25 09:14:57 634 13

原创 C++STL容器List的模拟实现

list的实现,还是比较简单的,大家只要想着土家楼的形状,画出图来就好了,不需要过多担心。本次的博客会发出一个完整的实现List的List.hpp,以后也会这样,主要是分段发被说孩子分段生。

2025-07-24 00:11:39 1178 17

原创 Linux简单了解历史

Linux就像雷纳斯·托瓦兹(Linus Torvalds)的孩子一样,有哪位家长愿意承认自己的孩子像别人的,雷纳斯·托瓦兹(Linus Torvalds)也不愿意被人说Linux是照抄unix的,所以取了Linux这个名字(意为Linux is not unix)。毕竟以后如果LInux搞的风生水起,就用操作系统不要钱了,实现操作系统自由了,MacOS、微软也不会太好过,而且开源精神代表着可以在任何设备上下载LInux的源码进行使用提高了开发的效率和多样性。代码应该是全人类的智慧。二、Linux的历史。

2025-07-20 10:05:34 336 5

原创 飞算JavaAI

飞算JavaAI 是专为 Java 开发者打造的智能开发助手,深度适配 Java 技术栈。通过大语言模型(LLM)实现自然语言到代码的转换,覆盖需求分析、接口设计、表结构设计、业务逻辑生成、代码生成与合并等全流程开发环节。全流程自动化:从需求输入到完整工程代码生成,单日可完成传统数周的开发任务。代码质量保障:生成的代码符合阿里巴巴 Java 开发规范,支持静态代码分析工具自动检测安全隐患。低学习门槛:提供可视化智能引导界面,支持自然语言交互,新手开发者可快速上手。

2025-07-17 11:13:55 1387 6

原创 C++中STL六大组件List的简单介绍

在STL容器中,我们只要会其中的一个容器的接口,我们就可以触类旁通。不用抱太多疑虑。和大多数STL容器一样。包含的头文件还是它的本名<list>包含就要做#include <list>,不想加每次声明list对象和迭代器都加std::在对象之前的话#include <list> using namespace std;也是可以的。

2025-07-14 19:16:46 804 2

原创 vector的模拟实现

一、前言一、前言“知所从来,方知其往”。知道一个结构的根本构造才能更好的运用结构。正所谓知己知彼百战不殆。我们了解vector顺序表的大致构造才能更好的运用vector。二、vector的实现2.1 vector中的私有变量前面我们提到过,将类中的的变量私有防止被访问修改。那我们为什么不使用我们模拟string类中的类似数组的结构,增加一个_size和_capacity来判断是否需要扩容?硬是要用_start与_finish相减得出size()和capacity()。

2025-07-11 15:54:08 794 5

原创 模版and初识vector

顾名思义正向迭代器是由顺序表起始位置(begin())到最后一个位置的的下一个位置(end()),反向迭代器就是从最后一个位置(rbegin())到顺序表的起始位置的下一个位置(rend())//这里用int类型做个示范//这里用string做一个示范。

2024-10-02 15:43:16 844 62

原创 string的模拟实现and友元

友元函数和友元类的关键字是friend。

2024-09-16 16:14:41 1078 34

原创 初识string(一)and内存管理

所以在string的类中会添加_size和_capacity变量来申请新的内存空间大小、访问内容、调整字符串的长度,同时不能被任意访问或修改,所以在private部分申明。

2024-09-06 20:38:40 1044 39

原创 类和对象(三)运算符重载

上一篇博客的补充说明:引用虽然和指针的功能相差无几,但是引用不需要开空间,单纯只是给变量取一个别名,当然引用也可以作为形参传递。缺省函数必须从右到左一次给,不能出现左边有,有边没有的情况。本质上编译器为了追求效率,不会自动识别形参有无值初始化,只会依次编译。上一篇博客的补充说明:引用虽然和指针的功能相差无几,但是引用不需要开空间,单纯只是给变量取一个别名,当然引用也可以作为形参传递。缺省函数必须从右到左一次给,不能出现左边有,有边没有的情况。

2024-08-05 20:54:34 945 37

原创 类和对象(二)构造函数、拷贝构造函数、析构函数

变量的生命周期何尝不是如此,变量创建的意义也并不是单一个,有的变量是用来记录数据的,有的变量是用来反映是否出现异常的,有的变量创建是为了管理数据的,变量的作用域(只能在包含自己的{}中使用。)又何尝不是一种生在江湖、生不由己的无奈。二、构造函数struct A // struct和class任意一个都可以,A是一个随便取的变量名。public:A(int x = 1,int y = 1) // 构造函数:类名()//调用方法:A(类名) + (变量名)+()括号内加上传参的值_x = x;

2024-07-29 08:47:26 678 26

原创 类和对象and命名空间

namespace begin // 使用namespace + 自定义的一个名字即可// public:不能加int d = 0;// private:不能加,命名空间只是一块新的空间,就像一块沃土,属于国家,而不仅仅属于人民,// 普天之下莫非王土,率土之滨莫非王臣namespace的定义:namespace + 自定义的名字(只要不和C++中的一些类名和关键字起冲突就行)至于上面的public和private则是在class类域中使用,并不在namespace中使用。

2024-07-23 14:15:15 987 19

原创 栈(Stack)

栈具有后进先出的特点。

2024-07-23 09:19:44 454 5

原创 单链表(Listnode)

一、引言“大江东去,浪淘尽,千古风流人物。”一想起三国就不得不谈到几大以少胜多的战役,官渡之战、赤壁之战、夷陵之战。今天我们就以赤壁之战为模版讲述链表。面对孙刘联盟曹操采纳了“铁索连船”来克服北方人水土不服的弱点。链表的应用场景正好可以运用到“铁索连船”中去。假如诸位魏国的主公在“东风不与周郎便”的情况下又该如何发挥自己的旷世奇才。在这危机四伏的江湖中,主公英明神武的领导、关于战场随机应变的调度可是决定战争胜利的关键因素。首先我们要考虑铁索连船的添加船只来进行排兵布阵,也就是链表的头插和尾插。

2024-06-16 14:51:43 342 5

原创 自定义结构体变量

在不同编译器中存在不同的默认对齐数不同【当然也可以通过这行代码来更改对齐数#pragma pack(对齐数)】在结构体变量中的第一个变量存储的起始变量(变量存储以字节为单位存储)的偏移数默认为0(以此类推它的第二个字节偏移数为1),第一个变量之后的变量则需要根据它的类型所占字节数与编译器的默认对齐数进行比较孰大孰小,按照较小的数的整数倍等于存储在偏移数存储,值得一提的是结构体变量的内存大小也是所有较小的数中最大的数(相当于矮子中的高个)的整数倍。struct(自定义结构体的关键字)+类型名(自定义)

2024-03-24 11:11:29 398 6

原创 浮点数与双进度浮点数的存储

上期我们讲到数据的存储,那很多同学就对单精度浮点数与双精度浮点数有疑问了,正负号用最前头的二进制位充当符号位,那单精度浮点数和双精度浮点数又是哪一位二进制位充当充当小数点位又是如何通过二进制存储小数以及为什么单精度浮点数和双精度浮点数存储时内存数据会发生部分丢失。众所周知,变量的内存的地址是由高到低的 ,数组则恰恰相反,内存的地址是由低到高的。大端字节序列:将数据高位字节存储到低位字节,将数据低位字节存储到低位字节。小端字节序列:将数据高位字节存储到高位字节,将数据低位字节存储到低位字节。

2024-03-17 11:43:32 427 2

原创 计算机二进制存储

计算机存储的并不是数据的原码,而是数据的补码,再熟悉原码、反码、补码之前,我们要了解计算机如何用二进制存储负数,不管是原码,还是反码或是补码,第一位二进制位都是符号位,符号位为1代表该数为负数,符号位为0代表该数为正数。再接着我们来了解原码,反码,补码。至于为什么计算机存储的是补码,那是数学家的数学思想,通过补码来进行相加就不用管左操作数和右操作数的正负,也可以说是第一操作数和第二操作数的正负)而且将原码转化为补码或是将补码转化为原码都只需要按位取反再加一就行了,不需要给计算机提供其他硬件支持。

2024-03-16 15:41:54 440 7

原创 【无标题】C语言变量类型

float(使用float变量时,打好小数点确保小数点后至少有一位并在数据后加f)和double(打好小数点,小数点后至少一位)就不用省略了,它们的名称本来就是从词组中取的开头的单词,flaot和double的转换说明分别是%f和%lf。char就不同了,它的转化说明有两种——%s和%c。最初的计算机发明的用武之地是处理困难的数据,到了科技越来越发达的现代,计算机被赋予了多种用途,它的计算能力、计算类型与以前的计算机自然是有过之而无不及,当然这不止体现在数据快慢、大小方面,更体现在数据类型多种多样方面。

2024-01-31 23:38:48 173 3

原创 【无标题】初识C语言

我是一名来自湖南省湘乡市白田镇三迁村的唐山学院的学生,我的学长学姐大部分从事计算机行业,让想早日拿到offer实现经济独立的我想加入计算机行业,我买了几本关于C语言和Python的书学习,但看书学习并没有学习的很深入,希望以后能学习的更加深入。大一期间我想利用课余时间学好C语言,大二再学Python。我的编程目标是达到精通水平主要还是通过网上的一些渠道和书本上的知识来学习。

2024-01-17 10:57:03 457 3

原创 【无标题】My College Experience In 2023

他抱怨PPT里的图表太过于复杂,希望我能用一些我所学的专业知识简化,毕竟我们专业有个很大的特点就是学习范围广,我当时最先想到的就是使用编程来开创一个盗版的PPT或者开发一些辅助功能,有一个想法在我脑海中产生:我那一没考研二没铁路局关系的学长学姐大部分都从事计算机行业,为什么我不可以从事计算机行业呢?认识鹏哥则是我在网上查找学习C语言的相关资料时在抖音上无意刷到的,他事无巨细、通俗易懂的讲课方式吸引着我,还教会了我如何配置我实验室的学长学姐都配置不好的Visual Studio Code 2023。

2024-01-17 10:34:50 452 5

空空如也

空空如也

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

TA关注的人

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