自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++基础面试题 | 什么是C++中的虚继承?

虚继承用于解决菱形继承问题。在虚继承中,基类的成员只会有一份副本,从而避免冗余和二义性问题。虚继承虽然解决了复杂继承结构中的问题,但引入了一定的复杂性,需要在构造函数中显式调用基类的构造函数。

2024-09-15 11:03:09 736 6

原创 C++基础面试题 | C++中的构造函数可以是虚函数吗? C++中的析构函数一定要是虚函数吗?

当类有派生类并且可能通过基类指针或引用删除对象时,基类的析构函数应该是虚函数。如果一个类不会被继承或者不会通过基类指针删除对象,那么析构函数不需要是虚函数。

2024-09-15 10:29:56 336 3

原创 Linux | 探索 Linux 信号机制:信号的产生和自定义捕捉

Linux 提供了signal和sigaction系统调用,允许开发者自定义信号的处理函数,即捕捉信号。// 捕捉SIGINT信号sleep(1);return 0;SIGALRM信号通常由alarm()函数产生,用于在设定的时间后通知进程。alarm()函数与SIGALRM信号alarm()函数的作用是设置一个闹钟,指定经过若干秒后系统向进程发送SIGALRM信号。此信号的默认处理行为是终止进程,但我们可以通过自定义信号处理函数来捕捉并处理SIGALRM信号。alarm()参数seconds。

2024-09-14 17:19:59 1052

原创 项目需求 | MySQL增量备份与恢复的完整操作指南

特别是在数据更新频繁的业务环境中,增量备份是一种高效且经济的选择,能够快速恢复到最新的数据库状态,确保数据安全与业务连续性。全量备份保存整个数据库的完整副本,但随着数据量增加,备份时间和存储需求也会显著增加。实际上是在完成一次完整的全量备份之后,后续只备份自上次备份以来对数据库所做的变更,例如新增(INSERT)、修改(UPDATE)和删除(DELETE)操作。在恢复数据库时,先恢复数据库的全备份,恢复到某个时间点的完整数据状态。再从前往后执行备份的增量备份日志,将数据库恢复到最新状态。

2024-09-14 15:21:37 1156

原创 C++基础面试题 | C++中const的作用?谈谈你对const的理解?

在C++中,const 关键字修饰类成员变量时,表示该成员变量的值在对象的生命周期内是不可变的。这意味着类对象一旦确定被实例化后,成员变量的值已经固定,不能再被修改。可以保证函数不会修改传入的参数。这对于传递大型对象或不想被修改的对象非常有用,可以提高程序的安全性和可读性。关键字的最主要作用是用于声明变量为常量,也就是说,这个变量的值一旦确定就不能再被修改。:最基本的用途是定义一个常量值,这个值在初始化后不能被修改。可以修饰成员函数,表示该成员函数不会修改类的任何成员变量(除了那些用。

2024-09-08 10:20:03 610 3

原创 Linux | System V 共享内存:工作原理与使用指南

进程间通信的本质是让不同进程看到同一个资源。System V 共享内存是一种古老的但依然广泛使用的 IPC 机制,它允许多个进程共享同一块物理内存区域(类似C语言动态库的加载)。这种机制的优势在于,进程可以直接读写内存,无需数据在用户空间和内核空间之间的复制,从而大大提高了数据交换的速度。

2024-09-02 23:12:35 935 7

原创 Linux | 匿名管道和命名管道:进程间通信数据流的桥梁

进程间通信(IPC:Inter Processes Communication)是不同进程之间进行信息交互和状态传递的机制。

2024-09-02 22:09:40 1484 4

原创 C++基础面试题 | C++中static的作用?什么场景下会使用static?

C++基础面试题 | C++中static的作用?什么场景下会使用static?

2024-09-01 15:06:24 423 5

原创 C++基础面试题 | C++11中有哪些常用的新特性?

在2003年,C++标准委员会提交了一份技术勘误表(TC1),使得C++03成为C++98之后的最新标准。然而,C++03主要是对C++98标准中的漏洞进行修复,语言的核心部分并没有大的改动。因此,人们通常将这两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准经过了长达十年的发展,带来了约140个新特性和对C++03标准中约600个缺陷的修正。这使得C++11更像是从C++98/03中孕育出的一种新语言。

2024-09-01 14:45:28 948 2

原创 C++基础面试题 | 介绍C++中三种智能指针的使用场景?

在C++中,智能指针是一种自动管理内存分配和释放的工具,它们帮助程序员避免内存泄漏和其他与动态内存分配相关的问题。C++标准库中提供了几种智能指针,其中最常见的有三种:std::unique_ptr、std::shared_ptr和std::weak_ptr。

2024-09-01 14:12:19 546 3

原创 Linux | 进程池技术解析:利用无名管道实现并发任务处理(含实现代码)

多任务处理是提高系统性能和响应速度的关键。进程池技术作为一种有效的资源管理和任务调度策略,已经成为并发编程中不可或缺的一部分。本文探讨进程池的工作原理,以及如何通过使用无名管道来实现高效的并发任务处理。

2024-08-31 14:00:54 729 9

原创 C++基础面试题 | C++中的move有什么作用,它的原理是什么?

满目山河空念远,落花风雨更伤春。- 《浣溪沙·一向年光有限身》(晏殊)2024.8.27。

2024-08-27 09:54:59 251 6

原创 C++基础面试题 | 什么是C++的列表初始化?

类型窄化包括以下几种情况:从浮点类型到整数类型的转换。从到double或float的转换,以及从double到float的转换,除非源是常量表达式且不发生溢出。从整数或无作用域枚举类型到不能表示原类型所有值的整数类型的转换,除非源是其值能完全存储于目标类型的常量表达式。一句话,类型窄化就是类型转化过程中的精度丢失。

2024-08-26 22:29:59 713 6

原创 C++基础面试题 | 什么是C++的移动语义和完美转发?

C++基础面试题 | 什么是C++的移动语义和完美转发?

2024-08-26 21:42:43 878 3

原创 C++基础面试题 | C++的左值和右值是什么?有什么区别和应用?

左值: 可以出现在赋值运算符的左边,并且可以被取地址,通常是有名字的变量。右值: 不能出现在赋值运算符的左边,不可以被取地址,表示一个具体的数据值,通常是常量、临时变量。

2024-08-25 22:20:24 412 4

原创 Linux | 编译和使用自定义动静态库的全面解析

在Linux系统编程中,库(Library)是程序开发中不可或缺的组件,它们封装了数据和函数供用户程序调用。本文将深入探讨Linux系统中的两种主要库类型:静态库(.a)和动态库(.so),并比较它们在编译、链接和运行时的不同特点和使用方式。

2024-08-25 21:37:24 660 3

原创 项目需求 | vscode远程免密登录Linux服务器指南-含所需的命令和步骤

首先,确保服务器上已安装SSH服务,并且你有服务器的访问权限。其中的没有server是你在vscode配置的config。连接成功后,你应该能够无需输入密码即可访问服务器。在VSCode中,打开扩展视图,搜索并安装。后面的路径替换为你的私钥文件路径。替换为你自定义的服务器别名,替换为你的服务器用户名,将。在本地计算机上,找到或创建。将公钥内容复制到服务器的。替换为服务器的IP地址。替换为服务器的IP地址,替换为你的服务器用户名,

2024-08-25 10:44:25 360

原创 项目问题 | vscode连接远程Linux服务器报错: “> Host key verification failed. > 过程试图写入的管道不存在”

最后一条消息 “过程试图写入的管道不存在” 可能是由于 SSH 客户端或服务器端的某些问题。确保你的 SSH 客户端正在运行,并且没有被其他进程占用。遇到了 SSH 连接问题,具体是主机密钥验证失败。通常发生在尝试连接到一个之前连接过的服务器,但是服务器的密钥发生了变化时。:联系服务器管理员确认是否更换了服务器的 SSH 密钥。>Please contact your system administrator.> Add correct host key in C:\\Users\\LiHon/.ssh/

2024-08-24 21:25:29 359 1

原创 已拿证 | 2024深圳驾考科目四全攻略:技巧、知识点一网打尽

详尽的科目四备考资料,包括考试技巧、记忆口诀、必考知识点以及模拟题练习,助力学员一次通过考试。

2024-08-24 10:08:48 270

原创 Linux | 文件系统进阶:Inode与软硬链接艺术剖析

在Linux操作系统中,文件系统是数据存储和组织的核心概念。它不仅提供了数据的持久存储,还定义了数据的访问方式。本文将带你深入了解Linux文件系统的工作原理和特点。

2024-08-23 20:19:55 856 2

原创 Linux | 文件描述符fd详解及重定向技术的应用

文件描述符,一个看似简单的整数,实际上是Linux系统中用于标识和访问文件、设备和其他输入输出资源的关键。每个进程在启动时,都会继承一组标准的文件描述符,它们是:标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。这些描述符不仅是进程与外部世界通信的桥梁,更是操作系统抽象硬件细节、实现设备无关性的关键。通过重定向技术,我们可以灵活地改变输出的目的地,无论是将标准输出重定向到文件,还是将错误信息发送到日志系统,甚至是将输入从文件中读取。这种灵活性,正是Linux系统强大功能的一部分。

2024-08-23 15:38:53 983

原创 Linux | 探究C语言文件接口与Linux系统文件接口的区别与联系 | fopen和open的区别与联系

全局性:在任何C程序中,无需打开即可使用。缓冲stdout和stderr通常具有不同的缓冲行为。stdout可能是行缓冲或全缓冲,而stderr通常是无缓冲的。也就是说,stdout可能不会立即输出内容,但stderr是为了快速错误报告而设计的,通常会立即输出。重定向:可以通过简单的重定向操作改变它们的输出目标,例如在 shell 中使用或2>将输出重定向到文件。可以通过fileno函数获取FILE*指针对应的文件描述符,例如将返回0。在多线程程序中,stdout和stderr。

2024-08-23 14:30:58 938 9

原创 C++基础面试题 | C和C++的区别?

C没有类和对象的概念,而C++提供了类(class)和结构体(struct),允许封装、继承和多态。C不支持继承,而C++支持通过类继承来实现代码的重用,又通过虚函数支持运行时多态。此外还支持了引用,运算符重载,右值等。:C没有内置的异常处理机制,而C++提供了异常处理机制,包括try、catch和throw关键字。:C不支持模板,而C++提供了模板,允许泛型编程,可以创建类型无关的函数和类。

2024-08-23 14:17:27 1183 11

原创 C++基础面试题 | C++中值传递和引用传递的区别?

在引用传递中,传递给函数的不是实际的参数值,而是对参数的引用。这意味着函数可以直接访问并修改原始数据。引用传递提高了效率,因为它避免了复制整个对象的开销,但同时也带来了风险,因为函数内部对参数的修改会反映到原始数据上。:在这种方式下,当函数被调用时,会创建一个实参的副本并将其传递给函数。这意味着函数内部对参数所做的任何修改都不会影响原始数据。值传递对于小对象来说简单直接,但如果对象较大,复制整个对象可能会影响程序的效率。

2024-08-23 14:10:52 881 10

原创 Linux | 深入探究Linux进程控制:从fork函数到进程等待再到进程替换

避免僵尸进程:当子进程完成其任务并退出时,它会转变为僵尸进程,等待父进程回收其资源。如果父进程不执行等待操作,子进程的进程描述符和部分资源不会被释放,导致系统资源浪费。资源回收:父进程通过等待子进程,可以回收子进程使用的资源,包括内存、文件描述符等,确保系统资源的有效利用。获取子进程状态:父进程可以通过等待子进程来获取其退出状态,了解子进程是否成功完成任务,以及任务执行的结果。异常处理:如果子进程因为错误或异常退出,父进程可以通过等待子进程来获取这些信息,并进行相应的异常处理。同步执行。

2024-08-19 18:10:12 1712 6

原创 项目问题 | CentOS 7停止维护导致yum失效的解决办法

2020 年,CentOS 项目与红帽联合宣布将全部投资转向 CentOS Stream,这是未来红帽企业 Linux 发行版的上游开发平台。因此,该项目在 2021 至 2024 年期间停止对 CentOS Linux 的更新和发布,直到 2024 年 6 月 30 日 CentOS Linux 7 的生命周期终止。已加载插件:fastestmirror Determining fastest mirrors Could not retrievemirrorlist未知的错误”

2024-08-18 23:30:34 1536 8

原创 Linux | Linux进程万字全解:内核原理、进程状态转换、优先级调度策略与环境变量

在现代计算机系统中,Linux操作系统以其开源、灵活和强大的特性,成为服务器和嵌入式系统的首选。了解Linux的进程管理机制对于系统管理员和开发者来说至关重要。

2024-08-18 15:49:16 941 7

原创 驾考 | 2024最新科目一知识点口诀:法规、场地、道路

校车在普通道路上驾驶,找10%一下一分,10%以上九分。避让小车扣三分、标线行驶扣一分、插队扣三分。一个坡是高突 一个坑是低洼 两个凸是不平。驾驶证审验是看人,机动车审验是看车。高速路:慢速3占道6停车9逆行12。转弯:一只手手心朝前、一只手向下。有效期满九十日 信息变更三十日。三角形减速让行 八边形停车让行。白色同向 黄色反向 虚线可跨。扣满12分 参加一星期科目一。普通路:倒车1逆行3占道6。假一吊二撤三(骗三)罚终身。加装防撞装置不需要登记变更。酒驾罚1000-2000。右让左 弯让直 右方先行。

2024-08-16 13:28:41 591

原创 C++ | 探索C++多态:虚函数与抽象类的奥秘

多态是面向对象编程的核心概念之一,它允许不同的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。多态不仅提高了代码的灵活性,还增强了可扩展性。

2024-08-15 13:49:50 565 1

原创 C++ | C++中的继承和组合:代码复用的艺术和应用

菱形继承是一种多继承的继承结构,其中一个类(最末派生类)继承自两个或多个类(中间派生类),而这些中间派生类又共同继承自同一个基类。这种结构在类图上看起来像一个菱形,因此得名。问题数据冗余:在没有虚拟继承的情况下,最末派生类会包含多个基类的副本,导致内存浪费。二义性:如果基类中有同名成员,最末派生类可能无法确定应该使用哪个基类的成员,导致二义性问题。通过在中间派生类中使用virtual关键字来指定基类的继承,可以解决菱形继承的问题。解决数据冗余。

2024-08-15 00:05:20 800

原创 Linux | Linux开发工具链全攻略:yum、vim、gcc/g++、GDB、Makefile与git版本控制

Linux开发环境的强大之处在于其丰富的工具链和灵活的自动化能力。从YUM到Vim,从gcc到GDB,再到Makefile和Git,每一个工具都是构建高效开发流程的基石。希望本文能帮助读者快速掌握Linux开发环境,开启高效编程之旅。

2024-08-14 22:37:24 884 4

原创 C++ | C++11新特性解析:现代编程的里程碑

在2003年,C++标准委员会提交了一份技术勘误表(TC1),使得C++03成为C++98之后的最新标准。然而,C++03主要是对C++98标准中的漏洞进行修复,语言的核心部分并没有大的改动。因此,人们通常将这两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准经过了长达十年的发展,带来了约140个新特性和对C++03标准中约600个缺陷的修正。这使得C++11更像是从C++98/03中孕育出的一种新语言。

2024-08-14 16:49:58 1246 3

原创 C++ | C++11中的智能指针(附模拟实现):现代的C++内存管理

智能指针是C++内存管理的一大进步,它们提供了一种安全、高效的方式来自动管理动态分配的内存减少内存泄漏的风险,同时简化代码的复杂性。为了解决这一问题,C++11标准引入了智能指针,它们提供了自动内存管理的机制,极大地简化了资源管理的复杂性。auto_ptr 是c++ 98定义的智能指针模板,其定义了管理指针的对象,可以将new 获得(直接或间接)的地址赋给这种对象。它的核心思想是在对象构造时获取资源,并在对象析构时释放资源。这样,资源的管理和对象的生命周期紧密相连,确保了资源的正确管理。

2024-08-14 10:59:30 720

原创 C++ | 深入理解C++的IO流:从控制台输出流到文件输出流的应用

流”是一个形象的比喻,描述了数据从一个地方流向另一个地方的过程。在C++中,流的概念被用来描述数据从外部输入设备(如键盘)流向内存,或者从内存流向外部输出设备(如显示器)的过程。在C++编程中,IO(输入/输出)流是处理数据流的基本方式,它允许我们以一种非常直观和高效的方式与外部世界进行交互。本文将带你深入了解C++的IO流,从基础的输入输出操作到高级的文件操作和。这些操作都依赖于缓冲区,它不仅简化了低级I/O的实现,还允许我们以“行”为单位进行数据处理。函数用于从指定的文件流中读取格式化的数据。

2024-08-13 21:48:03 903

原创 C++ | 深入剖析C++中的类型转换

类型转换是编程中常见的操作,它允许我们在不同的数据类型之间进行转换。在C++中,类型转换不仅关系到程序的正确性,还关系到程序的效率和安全性。本文将深入探讨C++中的类型转换机制,包括隐式类型转换、显式类型转换以及C++特有的强制类型转换。

2024-08-13 11:31:14 1533 1

原创 C++ | 深入理解C++中的特殊类设计和单例模式(懒汉模式、饿汉模式)

在C++编程中,类的设计往往需要满足特定的需求和约束。特殊类设计模式提供了一种方法来实现这些需求,确保类的使用既安全又高效。本文将探讨几种常见的特殊类设计方式,包括不可拷贝类、只能在堆上创建对象的类、只能在栈上创建对象的类、不可继承的类以及单例模式。

2024-08-12 19:14:37 598 2

原创 C++ | 掌握C++异常处理:从基础到自定义异常体系的全面指南

在代码的抛出规范声明、捕捉类型声明都只需要写基类对象类型,就可以智能多态地完成捕获。公司或项目一般都会利用此机制自定义一套异常体系,以规范异常的使用和管理。C++提供了一系列的标准异常类,以层次结构组织。用户无意的小错误也会造成程序结束运行。包括终止程序和返回错误码两种方式。过程繁琐,对用户专业要求高。异常是一种错误处理机制,通过。

2024-08-12 13:27:37 485 4

原创 项目问题 | 智能指针编译报错:No viable conversion from ‘Date *‘ to ‘unique_ptr<Date>‘

编译器报错:‘No viable conversion from 'Date *' to 'unique_ptr'。直接禁止拷贝构造、赋值运算符重载等可能涉及资源转移的操作。

2024-08-05 19:58:39 235

原创 数据结构 | C/C++二叉树的实现(含接口函数声明、附完整代码和注释)

{}}BTNode;// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树// 二叉树销毁// 二叉树节点个数// 二叉树叶子节点个数// 二叉树第k层节点个数// 二叉树查找值为x的节点// 二叉树前序遍历// 二叉树中序遍历// 二叉树后序遍历// 层序遍历// 判断二叉树是否是完全二叉树。

2024-07-28 12:16:30 297

原创 Linux | Ubuntu 常用操作命令大全(2024年更新)

Linux系统的文件结构是层次化的,每个目录都有其特定的用途。命令行是与Linux交互的主要方式。

2024-07-27 11:31:23 419

项目问题 - CentOS7、8 EOL停止维护导致yum失效

替换yum配置文件包

2024-08-18

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

TA关注的人

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