自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多级反馈队列

如果A的优先级 > B的优先级,运行A(不运行B)​如果A的优先级 = B的优先级,轮转运行A和B工作进入系统时,放在最高优先级(最上层队列)一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU)​,就降低其优先级(移入低一级队列)​。经过一段时间S,就将系统中所有工作重新加入最高优先级队列。许多系统使用某种类型的 MLFQ。

2025-07-18 20:19:01 514

原创 Windows中的进程机制

Windows进程是由操作系统管理的程序执行实例,其架构设计体现了现代操作系统的核心思想。

2025-07-16 11:13:32 886

原创 Windows内核对象

Windows内核对象是操作系统资源管理的核心机制,它本质上是由内核分配并维护的。

2025-07-15 22:58:39 684

原创 Windows注册表编程

通过Windows注册表实现程序自启动是Windows开发中的常见需求。注册表的基本结构和关键概念注册表操作的核心API函数实现程序自启动的完整代码示例相关的高级主题和最佳实践正确使用注册表可以增强程序的灵活性,但需要注意操作的安全性。建议仅在必要时修改注册表,并确保做好错误处理和用户提示。对于大多数应用程序,使用当前用户的Run键是最简单安全的自启动方式。如果需要更复杂的启动逻辑,可以考虑使用任务计划程序等替代方案。

2025-07-15 00:33:46 556

原创 关于僵尸进程

在Unix/Linux系统中,**僵尸进程(Zombie Process)**是指那些已经终止执行但仍在进程表中保留着退出状态的子进程。这些进程实际上已经"死亡",但其进程描述符仍然存在于系统中,因此被称为"僵尸"——既不是完全活着的进程,也不是完全消失的进程。已完成执行(通过exit()系统调用或接收致命信号)仍在进程表中占有条目等待父进程读取其退出状态# 找到僵尸进程的父进程ID# 安全地终止父进程kill -HUP <parent_pid> # 先尝试优雅终止。

2025-07-14 23:55:31 306

原创 TCP半关闭

一根水管负责A→B的数据流动(输出流)另一根负责B→A的数据流动(输入流)这两根水管共同组成了一个完整的套接字连接更优雅的结束方式:明确传达结束意图更高效的资源利用:避免不必要的等待更灵活的协议设计:支持复杂交互模式掌握半关闭技术,能让你的网络程序像优秀的电话沟通一样:知道何时该说,何时该听,何时可以礼貌地结束对话。这种精准控制正是高级网络编程的重要技能之一。更优雅的结束方式:明确传达结束意图更高效的资源利用:避免不必要的等待更灵活的协议设计:支持复杂交互模式。

2025-07-14 20:24:16 404

原创 UDP类型套接字

相信网络:不做过多的控制假设相信应用:把复杂性交给应用程序处理追求效率:为速度牺牲部分可靠性。

2025-07-14 01:02:51 464

原创 更优的TCP客户端设计

在之前的文章中提到过,TCP套接字没有数据边界的。在回声客户端中,只调用了一次read函数读取信息,读取到的信息可能存在问题,分别是数据截断和数据沾包。

2025-07-14 00:51:16 1136

原创 TCP类型的服务器和客户端

现代网络通信建立在TCP/IP协议栈基础上,这个协议栈采用分层设计,每层都有明确的职责(从下到上):链路层(物理层)负责物理连接的标准定义LAN(局域网)WAN(广域网)MAN(城域网)处理硬件寻址(如MAC地址)IP层(网络层)解决数据包在网络中的路由选择问题面向消息(无连接)不可靠(不保证送达)路径可能不一致(不同数据包可能走不同路径)传输层(TCP/UDP层)TCP面向连接可靠传输(通过确认和重传机制)保证数据顺序UDP无连接不可靠但高效不保证顺序。

2025-07-11 01:35:15 616

原创 创建套接字时和填充地址时指定类型的异同

明确性:确保套接字和地址结构的协议类型一致安全性:防止因类型不匹配导致的内存错误扩展性:支持多种协议共存的环境兼容性:为通用接口提供必要的类型信息理解这一设计有助于开发者编写更健壮的网络程序,避免潜在的协议相关错误。记住:在网络编程中,显式声明总是优于隐式假设。

2025-06-28 23:55:03 611

原创 地址簇与数据序列

理解IP地址和端口号的概念是网络编程的基础。通过合理使用结构体和相关转换函数,我们可以轻松处理网络地址信息。始终注意字节序转换服务器程序通常使用INADDR_ANY简化多网卡配置bind函数是建立套接字与地址关联的关键步骤。

2025-06-27 21:02:38 912

原创 套接字类型

在计算机网络中,协议(Protocol)就像人类交流的语言规则。它定义了通信双方如何建立连接、如何交换信息以及如何处理错误等基本规则。没有统一的协议,计算机之间的通信就会像两个说不同语言的人对话一样困难。理解套接字的协议分类和传输特性是网络编程的基础。通过合理选择协议簇和套接字类型,我们可以为应用程序构建最适合的网络通信方式。记住,没有绝对的好坏,只有适合与否的选择。

2025-06-27 20:09:21 638

原创 网络编程的基本概念

这篇文章是笔者在复习的时候整理出来的,希望对大家有所帮助。

2025-06-26 00:37:04 762

原创 c++虚继承复习

/ 鸭嘴兽既是哺乳动物又是鸟类这种情况下,Platypus对象将包含两个Animal子对象(分别来自Mammal和Bird存储空间浪费访问age成员时的二义性逻辑上不合理(鸭嘴兽应该只有一个年龄)消除数据冗余解决成员访问二义性建立更合理的类层次结构但也需要注意其带来的复杂性和性能影响。在实际开发中,应当谨慎评估是否真的需要多重继承和虚继承,有时候组合模式可能是更好的选择。

2025-06-25 21:52:30 412

原创 类型转换运算符重载

类型转换函数是C++中用于实现类类型与其他类型之间相互转换的特殊成员函数,分为两种主要形式:转换构造函数和类型转换运算符。

2025-06-25 21:14:51 415

原创 c++lambda表达式

Lambda表达式是C++11引入的一项重要特性,它允许在代码中内联定义匿名函数对象,极大地提高了代码的简洁性和表现力。

2025-06-25 15:37:23 620

原创 操作符重载

这节给出几种操作符重载的示例,帮助大家更好地理解操作符重载。特性前置自增(++obj后置自增(obj++返回类型引用(值返回对象当前对象自身临时副本允许连续操作是否效率高(无拷贝)较低(创建副本)语义先递增再使用使用原值再递增++time;另外,后置自增运算符的参数是为了让其与前置自增运算符区分开来。特性输出运算符(<<输入运算符(>>参数1ostream&istream&参数2MyClass&返回值ostream&istream&常见实现输出成员到流从流读取到成员错误处理。

2025-06-25 15:28:48 936

原创 c++虚函数表

虚函数表是C++实现运行时多态(动态绑定)的核心机制,下面我将全面介绍虚函数表的工作原理和实现细节。本文由博主的复习笔记整理而成,希望对大家有所帮助。

2025-06-24 15:53:52 700

原创 进程的执行与切换

本文由博主的复习笔记整理而成,希望对大家有所帮助。

2025-06-24 13:12:41 865

原创 基本进程调度算法

到目前为止,我们所讨论的所有调度算法都基于一个基本假设:每个任务的运行时间是可以预测的,实际上,这是无法做到的。在下一篇文章中,我们将不使用这个假设,再给出一些调度策略。

2025-06-24 00:11:17 739

原创 文件输入输出

头文件:fstream。ifstream,读ofstream,写fstream,读写在学习文件输入输出时,应该和之前学过的IO类关联起来。

2025-06-24 00:01:18 1082

原创 c++IO类

c++不直接处理输入输出,而是通过定义在标准类库中的类来处理IO。这些类支持从设备读取数据,向设备写入数据的IO操作,设备可以是文件、控制台窗口等。还可以从内存IO。

2025-06-23 23:09:53 715

原创 图的基本介绍

边(Edge)**组成的非线性数据结构,用于表示实体及其关系。本文给出了图的基本性质,由笔者的复习笔记整理而来。图是一种由**顶点(Vertex)

2025-06-23 01:05:47 451

原创 二叉树的一些性质

本文给出了一些二叉树的常用性质,由笔者的复习笔记整理而来。

2025-06-23 00:33:27 771

原创 快速复习:二叉树及其三种遍历(递归与非递归)

该文章由笔者复习笔记整理而成,希望对读者有所帮助。

2025-06-22 01:41:28 436

原创 c++对象移动

上一篇博文我们讲了对象的构造与析构,这篇博文我们讲一下对象的移动。有时候我们希望移动对象而不是拷贝对象,这时就需要用到对象的移动。比如unique_ptr只能移动而不能复制。

2025-06-21 17:00:37 788

原创 c++中的构造与析构

一般来说,构造函数需要为类中的每一个成员都赋值。**当类中定义了const类型的成员的时候,自定义构造函数必须对const类型的成员进行初始化,否则会报错。//这里对c的初始化时必须的如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,这个构造函数就是拷贝构造函数。public://拷贝构造函数private:int a, b;将一个对象作为实参传递给非引用类型的形参。

2025-06-20 21:26:11 982

原创 Windows GDI的基本概念

本文只给出了GDI编程中基本绘图的示例,希望读者在了解了Windows GDI的基本概念(尤其是设备上下文)之后,能够自行查阅Windows官方文档并写出其它功能的示例程序。后面我也会写文章介绍GDI的其它应用。此外,MFC对Windows GDI进行了封装,之后会出一篇专门的文章说明MFC中的GDI编程。

2025-06-19 22:55:46 613

原创 Windows程序设计的基础知识以及MFC初探

Windows 程序需要一个模块定义文件,将模块名称、程序节区和资料节区的内存特性、模块堆积(heap)大小、堆栈(stack)大小、所有callback 函数名称…等等登记下来。.def文件。在集成开发环境中不在需要特别准备。

2025-06-17 14:18:45 1214

原创 在学习汇编过程中遇到的各种地址名称及解释

由于笔者水平有限,随笔中难免有些许纰漏和错误,希望广大读者能指正。

2025-06-16 22:39:17 1063

原创 实模式下的中断机制

这里只对实模式下的x86中断机制作了十分浅薄介绍,其它的一些内容(比如RTC等)并没有涉及。同时,这篇文章并没有给出具体的实操代码,笔者希望读者在了解中断的一些原理之后,能自己编写汇编汇编代码并使用调试器,感受一下中断的使用。

2025-06-16 22:37:34 806

原创 保护模式下的内存访问1

以上所说的操作,均是在实模式下完成的。是的,我们仍然处于实模式,以上的操作不过是为进入保护模式所做的准备工作。接下来,我们将让CPU从实模式切换到保护模式。至此,我们已经大致了解了保护模式下的内存访问基本机制。当然,还有诸如特权检查等内容未详细展开。此外,我们还尚未引入分页机制,也没有讨论任务切换的情况。这些内容,我会在后续的文章中展开说明。

2025-06-16 22:34:55 1122

原创 进程的基本概念

简单来说,进程就是运行中的程序。比如,我们双击了存放在硬盘中的某个exe程序,程序被加载到内存中运行起来后,就是所谓的进程。所以我们很自然的想到,进程中一定有可执行的代码,这些代码需要对一些数据进行操作,所以进程中还保存有需要使用的数据。由于代码和数据等东西最终都会保存到内存中,我们就把这些东西称为进程的地址空间。有一些硬件基础的读者可能会想,进程可能还有各种硬件状态,比如各种寄存器中保存的值。最后,进程可能会进行一些I/O操作,所以进程中可能还有一些打开的文件。地址空间寄存器I/O信息。

2025-06-15 09:07:29 353

原创 fork 、wait与exec函数族

fork函数是用于创建进程的函数,它是一个系统函数。若要使用fork函数,需要先包含**<unistd.h>**头文件。

2025-06-14 09:33:28 348

原创 c++运算符重载

操作符重载是c++的重要特性之一,它允许我们以简单的方式操作对象,隐藏了内部机制。操作符重载的基本形式为:[可选项] 返回值operator运算符(可选参数列表) { 函数体 }下面我们通过一个简单的例子来仔细讨论每一个部分。

2025-06-13 10:42:38 449

原创 c++中switch语句的反汇编与优化

对于switch的优化还有许多细节没有讲到,希望大家动手体会一下逆向还原的过程,对理解switch的反汇编及优化大有裨益。

2025-06-12 15:17:36 1266

原创 在Windows中获取进程信息

本文只是在写任务管理器项目的随手记录,其中不乏存在许多纰漏,写得也不够详细,希望大家能够指出并谅解。

2025-06-12 11:10:23 661

原创 插入排序(c++实现)

插入排序对于需要排序少量数据来说,是一个有效率的算法。其时间复杂度为cn^2,其中n为需要排序的数据,c是一个与n无关的常数因子。

2025-06-11 22:42:50 401

原创 c++关系与逻辑运算的反汇编与优化

本文讨论了c/c++中关系和逻辑运算的反汇编变现形式以及优化方案,旨在记录笔者的学习过程,也希望对各位读者有所帮助。

2025-06-11 16:42:29 1111

原创 MFC单文档应用程序隐藏默认工具栏和状态栏

在使用vs2022创建单文档的MFC项目时,默认生成的应用程序是带有默认的工具栏和状态栏的。下面介绍几种删除它们的方法。

2025-06-10 21:42:19 277 1

空空如也

空空如也

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

TA关注的人

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