自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C 语言部分操作符详解 -- 进制转换,原码、反码、补码,位操作符,逗号表达式,操作符的优先级和结合性,整型提升,算术转换

本文介绍了C语言操作符的分类及其应用,包括算术、位运算、移位等操作符的使用方法。重点讲解了二进制与其他进制的转换原理,以及整数的原码、反码、补码表示。通过具体代码示例演示了位操作符(&、|、^、~)的实际应用,并对比了两种变量交换方法。文章还涉及逗号表达式、下标访问和函数调用操作符的特性,最后分析了表达式求值中的整型提升和算术转换规则。这些内容为理解C语言底层运算机制提供了重要参考。

2025-07-15 13:12:52 549

原创 C语言函数介绍 -- 库函数与标准库,形参和实参,数组作函数参数,函数的声明和定义,static,extern,函数递归

本文系统介绍了C语言函数的相关概念和使用方法。主要内容包括:1.函数的基本概念,分为库函数和自定义函数两类;2.函数的定义与调用,包括形参和实参的关系、return语句的使用;3.数组作为函数参数的传递方式;4.函数的嵌套调用和链式访问;5.函数声明与定义,以及多文件编程方法;6.static和extern关键字对函数和变量的修饰作用;7.递归函数的工作原理及注意事项。文章通过具体代码示例详细说明了函数各种用法的实现方式,并比较了递归与迭代的优缺点,为C语言函数的使用提供了全面指导。

2025-06-29 15:34:42 705

原创 MySQL 索引 -- 磁盘,主键索引,唯一索引,普通索引,全文索引

MySQL数据库索引机制与优化策略 摘要: 本文系统介绍了MySQL数据库的存储结构与索引原理。首先阐述了磁盘IO的基本概念,指出MySQL以16KB的page作为基本交互单位,通过Buffer Pool缓存机制提升效率。重点分析了B+树索引结构,包括其非叶子节点存储目录、叶子节点相连的特性,以及聚簇索引与非聚簇索引的差异(数据存储方式、查询效率等)。文章详细说明了主键、唯一、普通、全文四种索引的操作方法,并提出了索引优化原则:选择合适字段、遵循最左前缀、避免冗余、使用覆盖索引。最后对比了全文索引与LIKE

2025-06-28 21:39:25 964

原创 MySQL 复合查询和内外连接 -- 子查询,多表查询,自连接,合并查询,表的内外连接

这篇文章介绍了SQL查询中的多种高级操作技巧。主要包括子查询(单行、多行、多列子查询及from子句中的使用)、多表查询与笛卡尔积、自连接、合并查询(union和union all)以及表的内外连接(左外连接和右外连接)。通过具体示例展示了如何查询同一部门员工、高于部门平均工资的员工、员工上级领导信息等场景,并对比了不同语法(如where子句与inner join)的实现方式。文章还解释了外连接在保留完整数据(如所有学生或所有成绩)时的重要作用。

2025-06-28 02:02:42 554

原创 五种 IO 模式的简单介绍 -- 阻塞 IO,非阻塞 IO,信号驱动 IO,IO 多路复用,异步 IO

本文介绍了五种IO模型:同步阻塞IO在数据就绪前会阻塞进程;同步非阻塞IO通过轮询检查状态,避免进程阻塞但浪费CPU;信号驱动IO通过信号回调处理就绪事件;IO多路复用(select/poll/epoll)让单个进程监控多个文件描述符;异步IO由内核完成全部操作后通知进程。文章重点比较了各模型的实现机制和特点,并提供了非阻塞IO的代码示例,涉及fcntl系统调用和错误处理。这些模型在性能、复杂度和适用场景上各有优劣。

2025-06-25 00:15:03 639

原创 MySQL 内置函数 -- 日期函数,字符串函数,数学函数,其他函数

本文介绍了MySQL中常用的四类函数:1. 日期函数:包括now()获取当前时间,date()提取日期部分,date_add/date_sub日期加减,datediff计算日期差等;2. 字符串函数:如length()获取字节数,replace()字符串替换,substring()截取子串,trim()去除空格等;3. 数学函数:包括bin()转二进制,hex()转十六进制,conv()进制转换等;4. 其他实用函数:如user()查看用户,database()显示当前库,md5()加密,ifnull()空

2025-06-24 22:10:36 409

原创 C语言数组介绍 -- 一维数组和二维数组的创建、初始化、下标、遍历、存储,C99 变长数组

【摘要】本文系统地介绍了C语言中数组的概念、创建与使用方法。一维数组部分详细讲解了数组定义、初始化、下标访问、遍历操作、内存存储及sizeof计算元素个数等内容。二维数组部分重点阐述了创建方式、多种初始化方法、行列下标访问、嵌套循环遍历,以及连续存储的特性。最后介绍了C99标准新增的变长数组(VLA)特性,说明其运行时确定数组大小的特点。全文通过大量代码示例,全面展示了数组这一重要数据结构在C语言中的具体应用和底层实现原理。

2025-06-23 20:40:53 741

原创 NAT 与代理服务器 -- NAT,NAPT,正向代理,反向代理

本文一是介绍 NAT 技术的作用以及 NAT 技术的核心工作原理,并对 NAT 技术的拓展技术 NAPT 进行一定程度上的介绍,二是介绍代理服务器,将其分为正向代理和反向代理进行介绍,阐述代理服务器的作用,最后是将 NAT 技术与代理服务器做一个对比,阐述两者的区别。

2025-06-18 23:12:24 990

原创 数据链路层介绍 -- 以太网数据帧格式,MTU 以及 MTU 与 UDP、TCP 的影响,ARP 协议

本文介绍了数据链路层核心概念,重点分析了以太网技术、MTU限制和ARP协议。以太网作为主流局域网技术,其数据帧包含6字节MAC地址、2字节协议类型和4字节校验码。MTU(最大传输单元)限制数据包大小(以太网为1500字节),影响UDP/TCP传输效率——UDP易因分片丢失数据,TCP通过MSS协商避免分片。ARP协议用于IP到MAC地址的映射,通过广播请求/单播应答实现跨层通信。文章还详细解析了ARP报文格式和工作流程,阐述了其在网络通信中的关键作用。

2025-06-18 18:08:30 948

原创 网络层协议 IP 协议介绍 -- IP 协议,网段划分,私有 IP 和 公网 IP,路由

本文介绍了网络层IP协议的核心概念与应用。主要内容包括:1) IP协议格式解析,包含版本号、首部长度、服务类型等12个关键字段;2) 网段划分技术,包括传统IP分类(A-E类)和更高效的CIDR无类域间路由;3) 特殊的IP地址用途与IP地址限制解决方案,如动态分配、NAT技术和IPv6;4) 私有IP与公网IP的区别及应用场景;5) 路由工作原理,包括路由表查询和数据包转发过程。文章系统性地阐述了网络通信中IP地址管理、子网划分和数据路由的核心机制。

2025-06-17 21:47:46 1380

原创 C语言数据类型、变量和常用操作符 -- C语言数据类型,变量创建、分类以及初始化,常见运算符,强制类型转换,printf 函数,scanf 函数

本文摘要: 《C语言基础语法要点解析》系统介绍了C语言核心概念。内容包括:1)数据类型及其长度,使用sizeof操作符测量类型大小;2)signed/unsigned区别及取值范围;3)变量创建、初始化与分类(全局/局部变量);4)算术运算符(+-*/%)的使用规则;5)赋值运算符及复合赋值运算符;6)单目操作符(++/--)的前置后置区别;7)强制类型转换语法;8)输入输出函数详解:printf的占位符(%d,%f等)及格式控制(宽度、对齐、小数位),scanf的数据读取机制、返回值及安全注意事项。全文通

2025-06-16 23:57:59 728

原创 传输层协议 TCP 介绍 -- TCP协议格式,确认应答机制,超时重传机制,连接管理机制,滑动窗口,流量控制,拥塞控制,延迟应答,捎带应答

TCP是一种面向连接的可靠传输协议,通过序列号、确认机制和重传机制保证数据可靠传输。其核心机制包括:三次握手建立连接,确保双方通信能力;四次挥手释放连接,保证安全终止;滑动窗口控制传输速率,提高吞吐量;拥塞控制动态调整发送速率,避免网络拥堵。TCP还提供流量控制、延迟应答等优化机制。作为面向字节流的协议,TCP需应用层解决粘包问题。常见基于TCP的应用包括HTTP、HTTPS、SSH等协议。

2025-06-11 23:21:32 1203

原创 Git 介绍、安装以及基本操作

Git入门指南:版本控制与基本操作 Git是一款强大的版本控制系统,解决了传统文件管理中的版本混乱问题。本文介绍了Git的核心概念和基本操作:1) Git可高效管理各种文件版本,解决文件冗余和修改记录不清问题;2) 在Ubuntu中通过简单命令即可安装Git;3) 详细讲解了仓库创建、三区概念(工作区/暂存区/版本库)、文件添加/修改/版本回退等核心操作;4) 重点说明如何通过git add/commit提交修改,使用git reset进行版本回退,以及如何撤销不同阶段的修改。Git通过指针机制快速切换版本

2025-06-11 14:46:06 1635

原创 传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区

本文主要是对计算机网络体系结构中传输层的 UDP 协议做了一定的介绍,包括 UDP 协议的格式,UDP 协议的特点,UDP 协议的缓冲区以及一些基于 UDP 协议的应用层协议。

2025-06-04 23:24:01 1346

原创 Linux 中应用层自定义协议与序列化 -- 自定义协议概述,序列化和反序列化,Jsoncpp

本文介绍了应用层自定义协议的设计与实现,重点基于Jsoncpp库开发网络计算器应用。主要内容包括: 应用层协议设计原理:通过序列化将结构化数据转为字符串传输,反序列化还原数据,解决跨平台兼容性问题。 Jsoncpp核心功能:详细解析Json::Value类的构造、元素访问、类型检查及转换方法,展示FastWriter序列化和Reader反序列化实践。 网络计算器实现:采用三层架构设计: 传输层:封装Socket类处理TCP通信 协议层:基于Json定制请求/响应报文格式 业务层:实现计算器核心逻辑 代码示例

2025-05-30 15:43:51 1082

原创 MySQL 表内容的增删查改 -- CRUD操作,聚合函数,group by 子句

本文系统介绍了SQL的CRUD操作,包含创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)四大基本功能。详细讲解了数据插入的多种方式、条件查询、排序分组、分页显示等核心语法,并提供了丰富的示例说明。重点介绍了聚合函数使用、GROUP BY子句分组统计以及SQL查询关键字的执行顺序。文章还特别对比了DELETE与TRUNCATE的区别,并展示了如何利用子查询实现表数据去重等实用技巧,全面覆盖了SQL基础操作的关键知识点。

2025-05-28 12:35:50 672

原创 MySQL 中表的约束 -- 空属性,默认值,主键,自增长,唯一键,外键

数据库约束机制是保证数据合法性和正确性的关键技术手段。主要包括:1)空属性(NOT NULL)约束确保字段不为空;2)默认值(DEFAULT)为常用字段预设值;3)列描述(COMMENT)提供字段说明;4)主键(PRIMARY KEY)保证记录唯一性且非空;5)自增长(AUTO_INCREMENT)自动生成递增值;6)唯一键(UNIQUE)确保字段值唯一但允许空值;7)外键(FOREIGN KEY)维护表间引用完整性。这些约束共同作用,有效规范数据操作行为,维护数据质量。

2025-05-24 21:24:39 875

原创 MySQL 中的数据类型 -- 数据类型的分类,数值类型,字符串类型

本文介绍了MySQL中主要的数据类型及其特性。数值类型包括tinyint、bit和浮点类型(float/decimal),其中decimal能避免精度损失。字符串类型对比了定长char和变长varchar,char效率高但浪费空间,varchar反之。日期时间类型包含date、datetime和timestamp。枚举类型enum用于单选,set支持多选,两者都支持选项值或数值插入。文章还详细说明了各类型的存储限制、使用场景及注意事项,如越界处理、编码影响长度计算等,为数据库设计提供了实用的类型选择参考。

2025-05-24 11:47:28 903

原创 MySQL 表的操作

本文介绍了数据库表的基本操作,包括创建、查看、修改和删除表。创建表时,需指定表名、字段名、数据类型、字符集、校验规则和存储引擎。查看表可以通过show tables查看当前数据库的表,或使用desc和show create table查看表结构和创建语句。修改表包括重命名表名、修改列名称及属性、增加字段、修改字段属性和删除字段,使用alter table语句实现。删除表使用drop table语句,可删除指定表及其数据。这些操作为数据库表的管理提供了全面的指导。

2025-05-22 00:13:21 881

原创 Linux 的 TCP 网络编程 -- 回显服务器,翻译服务器

本文介绍了TCP网络编程中的关键函数及其应用,包括listen()、accept()和connect(),并详细描述了如何实现TCP回显服务器和TCP翻译服务器。listen()用于将套接字设置为监听状态,accept()用于接受客户端连接,connect()用于客户端发起连接请求。文章还展示了如何通过多线程和线程池技术处理客户端请求,并提供了代码示例和测试方法。TCP回显服务器通过线程池处理客户端请求,而TCP翻译服务器则通过多线程技术实现英文到中文的翻译功能。

2025-05-20 14:36:31 1043

原创 MySQL 库的操作 -- 字符集和校验规则,库的增删查改,数据库的备份和还原

本文主要介绍了数据库中的字符集和校验规则,以及数据库的基本操作、备份和恢复方法。字符集决定了数据的编码方式,而校验规则影响数据的读取和比较,如大小写敏感性。文章详细说明了如何查看和设置字符集及校验规则,并提供了创建、查看、删除和修改数据库的SQL语法和示例。此外,还介绍了使用mysqldump命令进行数据库备份和恢复的步骤,以及如何查看当前数据库的连接情况。这些操作对于数据库管理和维护至关重要。

2025-05-20 12:55:39 817

原创 MySQL数据库基础 -- SQL 语句的分类,存储引擎

本文介绍了数据库的基本概念和使用方法,重点围绕MySQL展开。首先解释了数据库的定义,指出MySQL是一个基于客户端-服务器模式的网络服务,能够高效管理数据。接着详细说明了如何进入MySQL、理解服务器、数据库和表之间的关系,并通过案例展示了数据库的创建和使用过程。此外,文章还介绍了SQL语句的分类,包括数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。最后,讨论了MySQL的存储引擎,如何查看不同引擎以及常用引擎的对比。本文为初学者提供了MySQL数据库的入门指南。

2025-05-19 22:09:29 951 1

原创 Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器

本文介绍了如何使用C++实现一个回显服务器(Echo Server)和翻译服务器(Translation Server)。回显服务器的功能是接收客户端发送的消息并将其回显到客户端显示器上。文章首先介绍了互斥锁的封装模块和线程安全的日志模块,接着详细讲解了UDP服务端的封装,包括socket()、bind()、recvfrom()、sendto()等关键函数的用法。此外,文章还提供了服务端和客户端的代码实现,并演示了本地和跨网络的通信过程。最后,文章介绍了如何将回显服务器扩展为翻译服务器,通过加载字典文件实现

2025-05-17 17:17:54 1006

原创 Linux网络基础 -- 局域网,广域网,网络协议,网络传输的基本流程,端口号,网络字节序

协议本质就是一种约定。网络协议是指为计算机网络中进行数据交换而建立的规则、标准或约定的集合。网络协议的作用:如同人类社会中的交通规则或语言规范,网络协议确保了不同设备之间能够准确、高效地进行数据通信。它规定了数据的格式、传输顺序、错误处理方式以及通信双方如何进行交互等内容,使得各种计算机设备和网络系统能够相互理解和协同工作。

2025-05-11 18:37:16 982 1

原创 多线程编程的常见问题

线程安全:线程安全是指在多线程环境下,一个函数或者一段代码可以被多个线程同时调用,并且能够正确地处理共享资源,不会因为多线程的并发执行而产生数据竞争、不一致或者其他未定义行为。 可重入函数:可重入函数是指一个函数可以被多个线程或者同一个线程在不同的执行上下文中安全地调用,即使在函数执行过程中被中断并再次被调用,也不会出现数据混乱或者其他错误。可重入函数不依赖于任何静态或全局的非常量数据,也不修改任何静态或全局的非常量数据,所有数据都由函数的调用者提供。 可重入性与线程安全的联系:

2025-05-02 13:51:23 497

原创 Linux中线程池的简单实现 -- 线程安全的日志模块,策略模式,线程池的封装设计,单例模式,饿汉式单例模式,懒汉式单例模式

由于实现的日志系统要支持多线程程序日志的有序打印,所以不管在访问显示器还是访问文件的时候都需要通过加锁来维护线程之间的互斥关系。// 将互斥量接口封装成面向对象的形式public:Mutex()(void)n;(void)n;(void)n;

2025-04-27 17:06:45 758

原创 线程同步与互斥 -- 互斥锁,线程同步,条件变量,生产者消费者模型,POSIX信号量

1. 初始化互斥量,初始化方法有两种:方法1:静态分配全局互斥量使用宏 PTHREAD_MUTEX_INITIALIZER 初始化全局的锁。不需要进行释放,程序运行结束会自动释放申请的资源。方法2:动态分配参数:mutex:要初始化的互斥量attr:设置锁的属性,默认情况为 NULL使用动态分配的方式初始化锁,需要调用 pthread_mutex_destroy 进行销毁。2. 销毁互斥量使用 PTHREAD_MUTEX_INITIALIZER 初始化的互斥量不需要销毁;

2025-04-24 16:31:10 902

原创 Linux中线程的概念与控制 -- 线程概念,页表,线程与进程,线程控制,C++封装线程

现在给出一个虚拟地址,第一次查页目录表,确定在哪个页表中,第二次查页表,确定在哪个页框中,第三次通过页框的起始地址加上页内偏移量,就可以获得一个物理地址了。以上其实就是 MMU 的工作流程。MMU(Memory Manage Unit)是一种硬件电路,其速度很快,主要工作是进行内存管理,地址转换只是它承接的业务之一。

2025-04-13 13:51:00 842

原创 Linux的进程信号 -- 信号产生,信号保存,信号捕捉,硬件中断,内核态和用户态,可重入函数,volatile,SIGCHLD

信号是进程之间事件异步通知的⼀种方式,属于软中断。基本结论:1. 进程在信号还没有产生的时候,早就知道信号该如何处理了。2. 信号的处理不是立即进行处理的,而是在合适的时候进行处理的。3. 操作系统在被设计的时候,就早已经内置了进程对于信号的识别和处理方式。4. 产生信号的信号源是非常多的。

2025-03-25 15:15:52 1047

原创 进程间通信(Inter-Process Communication,IPC) -- 匿名管道,命名管道,System V,共享内存,消息队列,信号量

1.:⼀个进程需要将它的数据发送给另⼀个进程。2.:多个进程之间共享同样的资源。3.:⼀个进程需要向另⼀个或⼀组进程发送消息,通知它(它们)发⽣了某种事件(如进程终⽌时要通知⽗进程)。4.:有些进程希望完全控制另⼀个进程的执⾏(如Debug进程),此时控制进程希望能够拦截另⼀个进程的所有陷⼊和异常,并能够及时知道它的状态改变。

2025-03-13 14:43:15 965

原创 C/C++动静态库的制作与原理 -- 静态库,动态库,目标文件,ELF文件,动态链接,静态链接

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库:.a文件 [Linux],.lib文件 [windows]动态库:.so文件 [Linux],.dll文件 [windows]1. 静态链接提⾼了程序的模块化⽔平。对于⼀个⼤的项⽬,不同的⼈可以独⽴地测试和开发⾃⼰的模块。

2025-02-26 14:39:49 1156

原创 Ext系列文件系统 -- 磁盘结构,磁盘分区,inode,ext文件系统,软硬链接

一个进程PCB中,fs_struct中存储根目录和当前文件的当前目录的信息,file_struct中有一个文件描述符表,其中是该进程打开的文件,文件描述符表中的指针指向每个被打开文件的files结构体,在files结构体中有存储该文件的操作方式结构体files_operations,用f_op指针指向。dentry_operations和inode_operations同理。

2025-02-20 16:41:18 884

原创 Linux中的基础IO -- C语言文件操作,系统级文件操作(open, write, read),文件描述符,重定向,dup2,缓冲区机制

pathname:要打开或创建的目标文件路径。flags:打开文件时,可以传⼊多个参数选项,这里就是使用位图的方式来传递标志位,⽤下⾯的⼀个或者多个常量进⾏“或”运算,构成flags。O_RDONLY:只读打开。O_WRONLY:只写打开。O_RDWR:读,写打开。这三个常量,必须指定⼀个且只能指定⼀个。O_CREAT:若⽂件不存在,则创建它。需要使⽤mode选项,来指明新⽂件的访问权限。O_APPEND:追加写。mode:指定创建文件时的默认权限。

2025-02-13 16:47:58 1115

原创 进程控制 -- 进程创建(fork),进程终止(exit, _exit),进程等待(wait, waitpid),进程程序替换(exec*系列函数)

execl函数,需要传递程序的路径,并且使用列表形式传递命令行参数。int main()printf("我的程序要运行了!\n");sleep(1);exit(1);printf("我的程序运行完毕!\n");return 0;

2025-01-04 12:46:46 623

原创 虚拟地址空间 -- 虚拟地址,虚拟内存管理

虚拟地址空间本质就是一个结构体对象,名为mm_struct(内存描述符),描述Linux下进程地址空间的所有信息。每个进程只有一个mm_struct结构,在每个进程的task_struct结构中,有一个指向该进程mm_struct的指针。mm_struct结构体中存储的是对进程地址空间中代码区、堆区、栈区等每个区域进行区域划分的信息,存储的是每个区域的开始位置和结束位置。

2024-12-22 23:09:01 874

原创 Linux系统中的环境变量 --命令行参数,PATH,通过代码获取环境变量,本地变量

1. 将自己写的二进制程序拷贝到环境变量PATH中存在的目录下,但是不推荐这样,因为PATH环境变量中默认存在的目录都是与系统配置相关的目录,如果将自己的程序拷贝到这些目录中,可能会污染系统指令的环境等。当执行 cd ~ 为什么会直接转到 /home/csq 中,因为在执行这条命令时,把 ~ 替换为环境变量 /HOME 中存储的目录,所以直接就跳转到 /home/csq 中了。SHELL:当前Shell,代表的是使用哪个版本的Shell,它的值通常是/bin/bash这个目录。

2024-12-19 21:58:46 683

原创 Linux系统中进程的概念 -- 冯诺依曼体系结构,操作系统,进程概念,查看进程,进程状态,僵尸进程,孤儿进程,进程优先级,进程切换,进程调度

我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,目前,我们所认识的计算机都是由一个个的硬件组成,包括如下:包括键盘, ⿏标,扫描仪, 写板,网卡,磁盘(外存)等。含有和等。显⽰器,打印机,磁盘,网卡等。从硬件的角度上来理解,用户1用qq发送一条消息给用户2。本质上就是两台冯诺依曼体系结构的计算机进行数据的交互,具体过程如下:(1)首先用户1和用户2都要启动qq,本质是将qq这个可执行程序加载到内存中。

2024-12-14 12:51:10 1162

原创 C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr

内存泄漏指因为疏忽或错误造成程序未能释放已经不再使⽤的内存,⼀般是忘记释放或者发⽣异常释放程序未能执⾏导致的。内存泄漏并不是指内存在物理上的消失,⽽是应⽤程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因⽽造成了内存的浪费。内存泄漏的危害:普通程序运⾏⼀会就结束了出现内存泄漏问题也不⼤,进程正常结束,⻚表的映射关系解除,物理内存也可以释放。⻓期运⾏的程序出现内存泄漏,影响很⼤,如操作系统、后台服务、⻓时间运⾏的客⼾端等等,不断出现内存泄漏会导致可⽤内存不断变少,各种功能响应越来越慢,最终卡死。

2024-11-28 23:43:34 1075

原创 C++中的异常处理

⼀般⼤型项⽬程序才会使⽤异常,下⾯我们模拟设计⼀个服务的⼏个模块每个模块的异常都是Exception的派⽣类,每个模块可以添加⾃⼰的数据最后捕获时,我们捕获基类的引用就可以了。下列程序要完整的运行成功就需要每个模块都调用成功,这里抛出异常的情况使用随机数取模进行模拟。

2024-11-24 11:56:07 1307

原创 Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb

在Linux下安装软件一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序) 放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器就好比"APP"和"应用商店"这样的关系。yum是Linux下非常常用的一种包管理器。主要应用在Fedora,RedHat,CentOS等发行版上。apt/apt-get主要应用在Ubuntu上。

2024-11-21 23:23:24 1249

空空如也

空空如也

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

TA关注的人

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