自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 进程间通信——管道

本篇博客主要介绍了Linux中进程间通信的一种基础方式——管道,包括匿名管道和命名管道的基本原理、特性及代码实现。匿名管道适用于父子进程间的单向通信,而命名管道则可以用于任何没有亲缘关系的进程间通信。理解管道的特性和使用方法,是掌握Linux进程间通信的关键步骤。

2024-11-01 23:01:37 1122

原创 Linux 进程终止和进程等待

在上一个博客中,我们介绍了如何通过 fork() 函数创建子进程。子进程创建后,通常会执行一些任务,然后终止。而父进程在子进程终止后,需要适当的方式来处理和等待子进程的退出。本文将详细讨论 Linux 中进程的终止与进程等待的相关内容。

2024-10-18 13:01:15 869

原创 Linux fork函数

在Linux操作系统中,进程是系统资源管理的核心单元。每一个程序的执行都对应着一个进程,进程管理成为操作系统的重要组成部分。进程的创建、终止和管理,是理解操作系统工作原理的关键内容。在介绍了Linux进程相关的基本概念之后,接下来我们将介绍一个非常重要的系统调用——fork函数,它是创建进程的主要工具。

2024-10-18 10:41:33 1135

原创 Linux 环境变量

本博客介绍了Linux环境变量的概念及其重要性,解释了如何查看、设置和管理环境变量,常见的环境变量如PATH、HOME等,以及如何通过C语言获取环境变量。此外,讨论了环境变量的全局属性及其在父子进程之间的继承性,展示了环境变量在操作系统中的灵活应用和组织方式,帮助用户更好地理解和使用环境变量来配置和优化系统环境。

2024-10-06 11:29:17 1210

原创 Linux 进程优先级

在上一篇博客中,我们探讨了Linux系统中的进程状态,以及僵尸进程和孤儿进程的概念。在继续深入Linux的进程管理之前,本节我们将讨论进程优先级的相关内容。进程优先级在操作系统调度中至关重要,决定了不同进程在系统中获得CPU资源的先后顺序。理解这一点对于系统优化和资源分配有很大的帮助。

2024-10-02 16:13:19 1036

原创 Linux 进程状态、僵尸进程与孤儿进程

在上一篇文章中,我们介绍了进程的基本概念、进程控制块(PCB)以及如何查看 Linux 系统中的进程状态。这一篇,我们将继续深入探讨进程的各种状态,尤其是僵尸进程和孤儿进程等特殊情况,这些知识对于理解 Linux 系统中的进程管理和资源分配至关重要。

2024-10-02 10:25:18 1124

原创 Linux 进程的基本概念及描述

进程是操作系统中最重要的概念之一,理解它的基本概念和工作原理有助于更深入地掌握操作系统的运行机制。在Linux中,进程通过PCB和task_struct结构体来描述,进程的创建可以通过fork系统调用来实现。在后续的博客中,我们将继续探讨进程的调度和通信机制。

2024-10-01 22:47:02 1464

原创 Linux 冯诺依曼体系结构与操作系统概念

在前面的章节中,我们介绍了常见的指令和一些Linux基础开发工具。这些工具帮助我们在Linux环境中进行基本的开发和操作,但要更深入地理解Linux操作系统以及它是如何运行的,我们需要从更底层的概念开始。本节内容将介绍计算机体系结构中至关重要的冯诺依曼体系结构,并进一步讨论操作系统的概念、设计目的及其关键功能。了解这些基础知识将帮助我们更清晰地理解操作系统的运作方式。

2024-09-26 19:07:34 1154

原创 C++ 类型转换

在C++中,类型转换是开发者经常需要处理的一部分内容。C++作为一种兼具高效性和灵活性的语言,提供了多种类型转换方式以应对不同的场景需求。本文将深入探讨C++中的类型转换,包括从C语言继承的隐式和显式类型转换,以及C++引入的四种强制类型转换。通过对这些转换方式的了解,开发者可以更好地控制程序的行为和优化代码的安全性。

2024-08-10 14:24:34 1184

原创 C++ 特殊类设计

在C++中,类的设计往往需要考虑到特定的使用场景和需求。为了满足这些需求,有时我们需要设计一些具备特殊性质的类,例如不能被拷贝的类、只能在堆上或栈上创建对象的类、不能被继承的类,或者是只能创建一个对象的类(单例模式)。本文将探讨如何通过C++语言的特性和不同版本的标准来实现这些特殊的类设计。

2024-08-10 13:22:24 1044

原创 Linux项目自动构建工具 make/makefile

make和makefile是Linux开发中不可或缺的自动化工具,它们通过管理项目的依赖关系、简化构建流程,极大地提高了开发效率和项目的可维护性。无论是处理简单的编译任务还是复杂的构建流程,makefile都能提供灵活、高效的解决方案。掌握make和makefile,不仅能让开发者专注于代码实现,还能确保项目构建的一致性和可靠性,是每个开发者都应熟练掌握的重要技能。

2024-08-09 18:59:30 1551

原创 Linux编译器 gcc/g++使用

通过本文的介绍,我们详细探讨了C/C++编译链接的过程,包括预处理、编译、汇编和链接,解释了gcc编译器在每个阶段的具体作用,并列举了常用的编译选项和函数库的区别及其使用方法。掌握这些知识,不仅可以帮助开发人员更高效地编写和调试代码,还能优化程序的性能和兼容性,为C/C++开发打下坚实的基础。

2024-08-08 22:44:30 1193

原创 Linux软件包管理器 yum

通过本篇博客的学习,我们系统地了解了Linux软件包管理器yum的基本使用方法,包括软件包的查看、安装和卸载等操作。掌握这些基本技能,可以大大简化Linux系统中软件的管理过程,提高工作效率。希望这些内容能够帮助读者在实际操作中更加得心应手,充分发挥Linux系统的强大功能。

2024-08-08 15:15:46 825

原创 Linux 权限管理

通过本篇博客,我们深入了解了Linux权限管理的各个方面,从基本的权限概念到具体的命令操作,再到特殊的粘滞位设置。这些知识不仅帮助我们有效管理系统文件和目录,确保系统安全和稳定运行,也为我们的日常操作提供了有力支持。希望这些内容能为你在实际工作中带来帮助,让你在Linux系统管理中更加得心应手。

2024-08-07 16:03:51 1163

原创 Linux基本指令(二)

通过本节的学习,我们掌握了 find、grep、zip/unzip、tar、bc、uname -r 等一系列常用的Linux指令,并了解了几个重要的热键和关机指令。这些指令将进一步提升我们在Linux系统中的操作效率和便利性。希望大家通过实践不断加深对这些指令的理解和应用。

2024-08-07 08:34:50 1120

原创 C++11 异常

C++11的异常处理机制为程序员提供了一种强大的工具,用于处理程序中的错误和异常。通过使用异常,我们可以实现更加清晰、结构化和易于维护的代码,显著提升程序的健壮性和可读性。尽管异常处理机制有其复杂性和潜在的性能开销,但其优势远远超过了这些缺点。掌握并合理使用C++11的异常处理机制,将使我们的开发工作更加高效和可靠。希望本文能帮助读者更好地理解和应用C++11的异常处理特性,从而编写出更优秀的程序。

2024-08-06 17:15:15 924

原创 C++11 智能指针

智能指针是C++11引入的重要特性,通过自动管理动态内存的生命周期,极大地减少了内存泄漏和资源管理的复杂性。理解并正确使用智能指针,如std::unique_ptr、std::shared_ptr和std::weak_ptr,是现代C++编程的重要技能。通过结合RAII原则和合适的工具,开发人员可以编写出更安全、高效、易维护的代码,从而提高程序的稳定性和可靠性。希望本文对智能指针的深入探讨能够帮助大家更好地掌握这一强大的编程工具。

2024-08-06 14:43:20 1268

原创 C++11 lambda表达式与包装器

C++11的lambda表达式和包装器为程序员提供了更为强大和灵活的工具,使得C++代码更加简洁、可读性更高。lambda表达式通过简化函数对象的使用过程,提高了代码的表达能力;而包装器std::function和std::bind则提供了处理可调用对象的统一接口和灵活性。理解并掌握这些特性,不仅能提高代码的质量,也能极大地增强开发者的生产力。随着对C++11特性的深入了解,程序员将能更好地发挥这门语言的强大能力。

2024-08-03 17:21:59 666

原创 C++11 右值引用和移动语义

C++11 引入的右值引用和移动语义显著提升了 C++ 的性能和资源管理能力。通过详细了解左值引用和右值引用的区别及各自的使用场景,掌握完美转发的技巧,以及实现移动构造函数和移动赋值运算符,我们可以编写出更加高效、健壮和易于维护的 C++ 代码。这些特性不仅优化了资源利用,还简化了代码,使得 C++ 成为更加现代和强大的编程语言。在未来的开发中,充分利用这些新特性,将会是每个 C++ 程序员的重要技能。

2024-07-30 16:54:28 665

原创 C++11 列表初始化与类型声明

C++11 引入的列表初始化和新的类型声明方式,使得 C++ 语言更加强大和易用。花括号 {} 初始化和 initializer_list 提供了统一的初始化方式,简化了对象的创建过程;而 auto、decltype 和 nullptr 则增强了类型推导能力,减少了代码中的冗余和错误。掌握这些新特性,可以显著提高 C++ 编程的效率和代码质量。

2024-07-29 23:08:30 691

原创 C++ unordered_map与unordered_set的模拟实现

通过本文,我们详细介绍了如何使用C++实现unordered_map和unordered_set,并展示了其底层哈希表的实现。通过这些示例代码,读者可以深入理解哈希表的工作原理及其在C++中的应用。在实际开发中,灵活运用哈希表能够大幅提升程序的性能和效率。希望本文能够帮助读者掌握哈希表及其相关容器的实现与应用。

2024-07-27 09:45:26 1066

原创 C++ 哈希表

通过本篇博客,我们深入探讨了C++中的哈希表及其实现,包括unordered_map和unordered_set的基本使用、哈希的概念、哈希冲突的解决方法以及哈希函数的设计原则。哈希表凭借其高效的查找、插入和删除操作,成为现代编程中不可或缺的工具。理解和掌握哈希表的原理和应用,不仅能提高程序的性能,还能为处理大量数据提供强有力的支持。希望本篇博客能帮助读者更好地理解和应用哈希表,在实际项目中发挥其优势。

2024-07-27 09:18:16 752

原创 C++ 红黑树

在之前的文章中,我们介绍了 C++ 标准库中的 map 和 set 容器的使用,以及 AVL 树的实现。尽管 AVL 树在平衡性方面表现优异,但在插入和删除操作频繁的应用中,红黑树(Red-Black Tree)由于其较少的旋转操作次数,往往能提供更优的性能。本篇博客将详细介绍红黑树的概念、性质、节点定义、结构、插入与删除操作、性能、迭代器设计,并展示基于红黑树的模拟实现代码及其在 map 容器中的应用。

2024-07-22 23:59:01 1177

原创 C++ AVL树

在计算机科学中,二叉搜索树是一种常用的数据结构,主要用于快速查找、插入和删除操作。然而,当插入的数据是有序或接近有序时,普通的二叉搜索树可能会退化成链表,从而降低操作效率。为了解决这一问题,1962年,两位俄罗斯数学家G.M. Adelson-Velskii和E.M. Landis发明了AVL树。AVL树是一种自平衡的二叉搜索树,通过对节点的高度进行调整,保证了查找、插入和删除操作的高效性。本文将详细介绍AVL树的概念、节点定义、插入、旋转、验证、删除以及其性能。

2024-07-19 23:56:29 1135

原创 C++ map和set的使用

在C++中,关联式容器如set、multiset、map和multimap通过键值对来高效地管理和存储数据。这些容器利用平衡树结构(如红黑树)保证操作的有序性和高效性。set和multiset用于存储唯一和重复的有序元素,而map和multimap则通过键值对实现键的唯一和重复存储。理解和使用这些容器可以帮助我们在编程中高效地处理各种复杂的数据结构和操作需求。

2024-07-18 00:11:35 908

原创 C++ 二叉搜索树

在之前的C语言系列博客中,我们已经介绍了二叉树的基本概念。二叉树是一种常见的数据结构,其每个节点最多有两个子节点,分别称为左子节点和右子节点。今天,我们将进一步探讨一种特殊的二叉树——二叉搜索树(Binary Search Tree,简称BST)。BST在计算机科学中有着广泛的应用,尤其是在需要快速查找、插入和删除操作的场景中。

2024-07-17 08:24:33 898

原创 Linux基本指令(一)

在学习和使用Linux系统的过程中,掌握基本的命令行指令是必不可少的。这些指令不仅能够帮助你高效地管理文件和目录,还能让你更好地理解和控制系统。本系列博客将从最基础的指令开始,逐步介绍Linux系统中的各种命令,让你能够轻松上手并逐步深入。本篇作为系列的第一部分,将介绍如何使用Xshell7远程登录Linux系统,并学习一些常用的基本指令。

2024-07-13 23:14:08 776

原创 Linux 初识

我们了解了Linux的发展历史、开源属性、企业应用现状以及不同安装方式。Linux以其稳定性、灵活性和开源社区的支持,在服务器、桌面、嵌入式系统和云计算等多个领域广泛应用。无论是双系统安装、虚拟机部署还是云服务器,都为用户提供了多样化的选择,满足了不同的使用需求。掌握Linux的使用和管理,将为个人和企业的技术发展带来巨大的优势和机遇。

2024-07-11 23:06:43 1118

原创 C++ 多态

多态是C++语言的三大特性之一,另两个特性是封装和继承。多态性使得对象可以根据运行时的实际类型来表现出不同的行为,从而实现灵活和可扩展的设计。在软件开发过程中,多态能够提高代码的复用性和可维护性,减少重复代码,并提供更加抽象和通用的接口。本文将详细探讨C++中的多态,包括其定义、构成、虚函数、抽象类以及实现原理,帮助读者全面理解这一重要概念。

2024-07-10 22:49:54 837

原创 C++ 继承

C++作为一门强大的面向对象编程语言,其三大核心特性之一的继承,为代码的重用和扩展提供了极大的便利。继承允许一个类继承另一个类的属性和方法,实现了代码的高度复用和灵活扩展。然而,继承也带来了复杂性和潜在的风险,因此正确理解和使用继承机制至关重要。本篇博客将系统性地探讨C++中的继承,从概念、定义、应用到高级用法,帮助读者全面掌握这一重要特性。

2024-07-09 23:20:00 932 1

原创 C++ stack类与queue类

通过对C++标准模板库中的stack和queue的介绍与使用,我们深入了解了这两种重要的容器适配器。stack和queue在许多计算机科学领域和实际应用中都有广泛的使用场景。我们不仅学习了它们的基本操作和应用,还通过模拟实现进一步理解了其内部机制。掌握这些数据结构和容器适配器,将显著提升我们在算法设计和程序开发中的效率和能力。希望这篇博客能帮助读者更好地理解和应用stack和queue,为大家在编程道路上提供有力的支持。

2024-06-03 22:19:26 718

原创 C++ list类

通过这篇文章,我们深入探讨了 C++ 标准模板库中的 list 类,包括其构造函数、迭代器、容量获取与元素访问函数、修改函数及其他功能函数。我们还实现了一个简单的 list 模拟,并详细比较了 list 与 vector 的异同。希望通过这些内容,读者能够更全面地理解 list 的使用场景和实现原理,从而在实际编程中做出更加合理的数据结构选择,提高代码的效率和性能。

2024-05-29 19:29:55 1202

原创 C++ vector类

在前面的博客中,我们介绍了string类的使用与模拟实现,深入探讨了其在C++编程中的重要性和具体应用。然而,string类仅仅是C++标准模板库(STL)中的一个组成部分。为了更全面地了解STL的强大功能,本篇博客将聚焦于另一个核心容器类——vector。vector类在现代C++编程中扮演着至关重要的角色,其灵活的动态数组特性、丰富的成员函数以及高效的内存管理,使其成为开发者处理可变大小数组的首选工具。本文将详细介绍vector类的基本概念、使用方法、内部实现以及常见问题的解决方案,帮助读者全面掌握这一

2024-05-22 19:30:05 1172

原创 C++ string类的模拟实现

本文通过深入探讨 MyString::string 类的设计和实现,我们了解了如何构建一个功能齐全的字符串处理类。从基础的构造和析构函数到复杂的操作如插入、删除和运算符重载,这个类展示了在 C++ 中管理和操作字符串数据的有效方法。该实现支持常见的字符串操作,还通过运算符重载增强了与标准 I/O 流的交互能力,提供了一种直观和灵活的方式来处理文本数据。

2024-05-13 16:58:43 660

原创 C++ string类

在本篇博客中,我们深入探讨了C++标准库中的string类,从其构造函数、容量操作函数,到访问及遍历操作,以及类对象的修改操作。string类作为C++中处理字符串的核心工具,提供了丰富的接口来高效、安全地管理和操作字符串。掌握这些功能不仅可以提高编程效率,还能帮助开发者编写更加健壮和可维护的代码,有效地处理现代软件开发中的文本数据挑战。

2024-05-01 11:48:27 1165

原创 C++ 初识模板

通过本文的介绍,我们可以看到,C++ 模板是一种强大的工具,使得编程变得更为灵活和通用。无论是函数模板还是类模板,它们都提供了实现泛型编程的基础,允许代码以类型无关的方式被重用和适应不同的数据需求。这不仅增加了代码的复用性和可维护性,还提高了程序的效率和可靠性。掌握C++模板是每个C++程序员提升编程技能的关键步骤,也是深入理解现代C++设计和实现的基础。

2024-04-21 17:50:01 1024

原创 C++ STL简介

在软件开发的演变过程中,程序设计语言的进步往往伴随着新的技术和方法的出现,以更高效地解决问题和提升性能。C++语言的发展尤为引人注目,它不仅从C语言继承了高效和灵活的特性,还引入了面向对象和泛型编程的强大功能。特别是标准模板库(Standard Template Library,STL)的引入,标志着C++从其前身C语言的一大飞跃。在本文中,我们将走进STL的世界,了解它如何使C++编程变得更加高效和强大。

2024-04-21 15:22:49 1058

原创 C++内存管理

在本博客中,我们全面探讨了C++中的内存管理机制,从基本的内存布局到高级的内存操作技术,包括new和delete的使用、内存泄漏的问题及其防治措施。通过深入了解这些概念,开发者可以更有效地控制程序的资源使用,提高程序的性能和稳定性。希望本文的内容能帮助你避免常见的内存管理错误,编写出更加健壮和高效的代码。

2024-04-19 21:42:15 763

原创 C++ 类和对象(二)

​在C++ 类和对象(一)中,我们引入了类的定义,并介绍了类的一些相关知识,如类的作用域、实例化和储存等。在本篇博客中,我们将深入探讨C++中类的默认成员函数、构造函数、析构函数、拷贝构造函数、赋值运算符重载以及其他高级特性,进一步揭开C++中“类与对象”的面纱。

2024-04-17 19:02:46 682

原创 C++ 类和对象(一)

在计算机编程的世界里,语言的演进是为了更好地适应开发的需要,提高软件的质量和开发效率。C++作为一种高效的编程语言,它在C语言的基础上增加了面向对象的特性。这篇博客将带你了解C++中类和对象的基础知识,为你打开面向对象编程的大门。

2024-04-12 22:54:22 965

空空如也

空空如也

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

TA关注的人

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