- 博客(25)
- 收藏
- 关注
原创 计算机网络的分类及其性能指标
吞吐量指在单位时间内通过某个网络(信道或者接口)的数据量。==带宽说的是最大速率,吞吐量是指某时刻速率。表示向某一方向传送信息的通道(信道!= 通信线路)一条通信线路在逻辑上往往对应一条发送信道和一条接收信道。网络拓扑结构是指网络总的结点(路由器、主机等)与通信线路(网线)之间的几何关系表示的网络结构。,例如:家里的电信网络是100兆比特,意思是:一秒内最大的传输速率是100兆比特。无线网络:蓝牙、5G、WIFI等。:仅提供某个组织内部使用的网络。:总线型、环形、星形、网状形。有线网络:光纤、网线等。
2025-03-22 17:11:33
441
原创 计算机网络基础之三种交换技术及其性能分析
计算机之间数据往往是“突发式”传输,即往往会高频次,少量的传输数据。1830s-1960s: 电报网络。1870s-1960s: 电话网络。1960s: 研发计算机网络。公元前五世纪起: 邮政网络。
2025-03-22 10:32:26
838
原创 计算机网络基础
计算机网络是一个将众多分散的,自治的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现共享资源和信息传递的系统计算机网络由若干和连接这些节点的链路组成集线器会有数据冲突问题。
2025-03-19 16:46:30
582
原创 深入解析C++ Lambda表达式
通过合理运用Lambda表达式,开发者可以:提升代码可读性(减少样板代码)增强类型安全性(相比函数指针)实现更灵活的回调机制编写符合现代C++风格的简洁代码随着C++标准的演进,Lambda将继续在概念(C++20)、模式匹配等新特性中扮演重要角色,值得开发者深入掌握。
2025-03-17 11:48:05
383
原创 操作系统之死锁
简单来说,死锁问题的产⽣是由两个或者以上线程并⾏执⾏的时候,争夺资源⽽互相等待造成的。死锁只有同时满⾜互斥、持有并等待、不可剥夺、环路等待这四个条件的时候才会发⽣。所以要避免死锁问题,就是要破坏其中⼀个条件即可,最常⽤的⽅法就是使⽤资源有序分配法来破坏环路等待条件。
2025-03-17 11:40:33
382
原创 C++模板特化与偏特化
模板特化技术如同手术刀般精准,赋予开发者针对特定类型定制行为的能力。通过合理运用全特化与偏特化,我们可以在保持泛型代码优雅性的同时,实现关键路径的性能优化。掌握这一技术需要注意理论理解与实践经验的平衡,正如C++之父Bjarne Stroustrup所言:"C++的设计原则是你不为你不需要的东西付出代价"。模板特化正是这一哲学的完美体现。
2025-03-15 17:37:20
547
原创 C++移动语义与右值引用:从理论到实践的深度解析引言
移动语义是一种允许将资源(如堆内存)所有权从一个对象转移至另一个对象的技术。与传统的拷贝操作不同,移动操作不会复制资源,而是通过“窃取”源对象的资源来避免不必要的开销。这种机制显著提升了程序性能,尤其是在处理容器、大型对象时效果显著。右值引用通过&&// 合法:绑定字面量// 绑定函数返回的临时vector移动语义与右值引用彻底改变了C++资源管理的游戏规则。通过减少冗余拷贝,它们为高性能编程开辟了新天地。掌握这些特性不仅能提升代码效率,更是深入理解现代C++设计哲学的必经之路。
2025-03-15 17:32:02
320
原创 操作系统之多线程互斥量
程序运行结果:每次运行的结果不但不正确而且每次运行结果还不同结论:这个小实验的结果告诉我们:如果多个线程进行共享资源的争夺,如果不采取有效的措施,则会造成共享资源的混乱。
2025-03-15 11:29:36
1001
原创 C++命名空间深度解析与应用指南
/ 成员声明关键特性说明:命名空间作用域为全局或外层命名空间支持分块定义(同一命名空间可多次声明)成员访问需显式限定或使用声明。
2025-03-11 08:40:30
464
原创 C/C++预处理器指令与宏定义同函数调用的深度解析
特性宏定义函数调用处理阶段预处理阶段文本替换编译后生成可执行代码类型检查无严格的类型检查参数求值可能多次求值(副作用风险)只求值一次调试支持不可调试支持断点调试代码生成每次调用生成重复代码单一代码副本预处理器指令为C/C++提供了强大的元编程能力,但也需要谨慎使用以避免潜在陷阱。考虑因素推荐方案类型安全函数/模板性能关键路径内联函数/谨慎使用宏代码可维护性避免复杂宏跨平台需求合理使用条件编译。
2025-03-11 08:30:01
566
原创 操作系统之进程间通信
前言前言进程间通信简称IPC,进程间通信就是在不同进程之间传播或者交换信息。各个进程之间若想实现通信,一定要借助第三方资源,这些进程就可以通过像这个第三方资源写入或是读取数据,进而实现进程之间通信,这些第三方资源实际上就是操作系统实现提供的一段内存区域一. 管道1. 前导在Linux命令中,管道 | 是指将前一个命令的输出作为后一个命令的输入。例如:统计登录用户个数上述命令的 | 就是管道,从它的功能性描述可以得知管道传输数据是单向的,如果想实现相互通信则需要创建两个管道。
2025-03-10 19:30:14
662
原创 C++ 中的循环引用问题及其解决方案
循环引用是指两个或多个对象之间相互引用,形成一个引用环。例如,有两个类ClassA和ClassBClassA中有一个ClassB类型的成员变量,而ClassB中也有一个ClassA类型的成员变量。// ClassA 中包含一个指向 ClassB 的指针public:ClassA* a;// ClassB 中包含一个指向 ClassA 的指针在这个例子中,ClassA和ClassB相互引用,形成了一个循环引用。
2025-03-10 08:41:03
356
原创 C++中new 和 malloc 的区别与 malloc 分配失败的影响
new和malloc是 C++ 和 C 语言中用于动态内存分配的重要工具,但它们在语法、使用方式和底层实现上存在显著差异。malloc分配内存失败可能会导致程序崩溃、内存泄漏或数据不一致等问题,因此在实际编程中需要谨慎处理内存分配失败的情况。通过检查返回值、释放已分配的内存以及优化内存使用,可以有效避免这些问题。
2025-03-10 08:37:41
598
原创 C++中类的三大特性及其应用
C++中的封装、继承和多态是面向对象编程的三大核心特性。通过封装,我们可以隐藏实现细节,提高代码的安全性和可维护性;通过继承,我们可以复用代码,减少重复劳动;通过多态,我们可以提高程序的扩展性和灵活性。构造函数和析构函数则分别用于对象的初始化和资源的释放,确保对象的生命周期管理得当。掌握这些特性,能够帮助我们编写出更加高效、可维护的C++代码。
2025-03-09 09:01:59
335
原创 操作系统之线程
本文全面探讨了操作系统线程的概念、重要性及其在现代计算环境中的应用。文章首先介绍了线程的基本概念,包括其定义、与进程的区别以及多线程的优势。随后,详细阐述了线程的创建与管理、同步与通信机制,以及线程池和线程调度策略。最后,通过实际案例分析,展示了线程在网络服务器、图形用户界面和并行计算中的具体应用。本文旨在为读者提供对操作系统线程的全面理解,并展示其在提高系统性能和资源利用率方面的重要作用。关键词操作系统;线程;多线程;线程同步;线程池;线程调度;并行计算。
2025-03-08 16:28:09
545
原创 操作系统之进程
进程是操作系统中的一个基本执行单元,它代表了正在运行的程序的实例。每个进程都有独立的地址空间、资源和控制流。进程不仅包括程序的代码,还包括程序执行时的状态、内存、打开的文件、信号处理器等资源。
2025-03-07 21:17:02
480
原创 数组定义及初始化的方式与数组名字的含义
数组是一种线性数据结构,用于存储一组相同类型的元素。数组的大小在定义时确定,且不能动态改变。数组的定义通常包括数组的类型、名字和大小。数组是编程中常用的数据结构,理解其定义、初始化方式以及数组名字的含义是掌握数组使用的关键。数组的定义:数组是一种存储相同类型元素的线性数据结构,大小在定义时确定。数组的初始化方式:包括全部初始化、部分初始化、不指定大小初始化、字符数组初始化和多维数组初始化。数组名字的含义:数组名字代表数组的首地址,是一个常量指针,不能修改其指向的地址。
2025-03-07 20:37:07
381
原创 C++中的内存泄漏:原因与避免方法
内存泄漏(Memory Leak)是指程序在运行过程中动态分配了内存,但在使用完毕后未能正确释放,导致这部分内存无法被再次使用。随着时间的推移,内存泄漏会逐渐消耗系统的内存资源,最终可能导致程序崩溃或系统性能下降。在C++中,内存泄漏通常发生在使用new或malloc等动态内存分配函数时,程序员忘记调用delete或free来释放内存。内存泄漏是C++编程中常见的问题,但通过使用智能指针、RAII原则、标准库容器以及工具检测,我们可以有效地避免内存泄漏。
2025-03-06 18:41:06
351
原创 操作系统之内存管理
由于内存空间都是预先划分好的,也就不会像内存分段会产生间隙非常小的内存,这正是分段会产生内存碎片的原因。采用了分页,那么释放的内存都是以页为单位释放的,也就无法产生不能给进程使用的小内存。当进程访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入系统内核空间分配物理内存、更新进程页表,最后再返回用户空间,恢复进程的运行.将每个段划分为多个页也就是对分段划分出来的连续空间,在划分固定大小的页,这样,地址结构就由。理页每页所在的物理内存的基地址,这个基地址与页内偏移的组合形成了物理内存地址.
2025-03-06 18:26:08
563
原创 C++内存的分区
前言前言在 C++ 中,内存分区则是理解程序运行机制的关键密码。它不仅决定了数据的存储方式、生命周期,还与程序的性能、稳定性紧密相连。从全局变量在数据区的持久驻扎,到局部变量在栈区的短暂停留,再到动态分配内存于堆区的灵活管控,每一个分区都有着独特的使命与特性,接下来就让我为你介绍 C++ 的内存分区。一. 分区内存一般分为四个区:堆区、栈区、全局区(静态区)、代码区;在编写程序时,需要占用的是5个部分:堆、栈、全局(静态)、文字常量、代码区二. 各区的功能1. 栈区。
2025-01-06 22:24:45
1015
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人