当前位置: 首页 > article >正文

C++继承、重载、多态相关问题(简单但通俗易懂)

第九章 组合与继承一、比较 is-a 关系和 is-like-a 关系1 is-a 关系表示严格的继承关系。含义派生类是基类的一种特殊类型。例如Dog is a Animal代码classAnimal{};classDog:publicAnimal{};特点派生类对象可以当作基类对象使用满足替代原则例如Animal*pnewDog();2 is-like-a 关系表示行为相似但不是严格继承关系。例如Airplane is like a Bird飞机和鸟都会飞但飞机不是鸟不应该继承3 区别总结关系含义is-a真实继承关系is-like-a功能相似但不是继承原则只有满足 is-a 才应该使用继承二、public / private / protected 继承区别C中继承方式分为public继承、protected继承和private继承。它们的主要区别在于基类成员在派生类中的访问权限不同。在public继承中基类的public成员在派生类中仍为publicprotected成员仍为protected在protected继承中基类的public和protected成员在派生类中均变为protected在private继承中基类的public和protected成员在派生类中均变为private而基类的private成员在派生类中始终不可直接访问。三、派生类对象的内存布局与初始化派生类对象的内存由基类子对象和派生类自身成员组成基类部分通常位于对象的前部多个基类时按继承顺序依次排列。在初始化过程中构造函数的执行顺序为首先调用基类的构造函数按继承顺序然后初始化成员对象按声明顺序最后执行派生类自身的构造函数体。析构顺序与构造顺序相反。1 内存布局派生类对象在内存中---------------- | 基类成员 | ---------------- | 派生类成员 | ----------------例如classA{intx;};classB:publicA{inty;};内存B对象 ------ | x | ------ | y | ------四、多重继承可能导致的问题多重继承可能带来以下问题二义性问题当多个基类中存在同名成员时派生类对象访问时会产生不明确性菱形继承问题当多个基类继承自同一父类时会导致基类数据被重复继承从而产生数据冗余和访问二义性结构复杂性多重继承会使类层次结构复杂增加程序理解和维护难度构造与析构复杂多个基类的初始化顺序和调用关系较复杂。通常可通过虚继承来解决菱形继承带来的问题。多重继承classC:publicA,publicB{};1 命名冲突如果两个基类有同名成员classA{voidfunc();};classB{voidfunc();};调用C c;c.func();// 二义性解决c.A::func();2 菱形继承问题例如A / \ B C \ / D代码classA{};classB:publicA{};classC:publicA{};classD:publicB,publicC{};问题D中会有两个A导致内存浪费二义性解决方法使用虚继承classB:virtualpublicA{};classC:virtualpublicA{};这样D只有一个A五、替代原则Liskov Substitution Principle替代原则里氏替换原则是指在程序中子类对象必须能够替代其父类对象使用并且不影响程序的正确性和功能。即在任何使用父类对象的地方都可以透明地使用子类对象而不会改变程序的行为。该原则要求子类在继承父类时不能改变父类的原有语义应保证行为的一致性。举例classBird{public:virtualvoidfly();};classSparrow:publicBird{};使用Bird*bnewSparrow();b-fly();是合理的。错误设计例子classBird{public:virtualvoidfly();};classPenguin:publicBird{};企鹅不会飞。如果写Bird*bnewPenguin();b-fly();// 不合理违反替代原则。原则总结设计继承关系时必须满足子类可以完全替代父类否则不应该使用继承七.如果要在派生类中覆盖基类的成员函数在定义派生类成员函数时必须满足什么要求?如果派生类要覆盖基类的成员函数基类函数必须声明为虚函数派生类函数的函数名、参数列表必须与基类完全相同返回类型必须一致或满足协变返回类型同时访问权限不能比基类更严格。通常建议使用override关键字以保证函数正确覆盖。一.继承和组合是面向对象的两种重要的代码复用机制阐述它们有什么区别如何选择应用?继承和组合是面向对象中两种重要的代码复用机制。继承表示类之间的“is-a”关系子类可以继承父类的属性和方法实现代码复用并支持多态。但继承耦合性较高灵活性较差且容易破坏封装。组合表示“has-a”关系一个类通过包含另一个类的对象来实现功能复用。组合具有较低的耦合性更好的封装性和更高的灵活性可以在运行时动态替换组件。1 继承Inheritance继承表示is-a关系。含义派生类是一种特殊的基类。例如class Animal{}; class Dog : public Animal{};这里Dog is a Animal特点可以复用基类的成员支持多态体现类之间的层次关系优点代码复用支持运行时多态缺点耦合度较高继承结构不易修改2 组合Composition组合表示has-a关系。含义一个类包含另一个类的对象。例如class Engine{}; class Car{ private: Engine engine; };这里Car has a Engine特点类中包含其他类对象通过对象组合实现功能优点灵活性高耦合度低更容易扩展缺点不能直接复用接口3 区别总结项目继承组合关系is-ahas-a耦合程度高低是否支持多态支持一般不支持灵活性较低较高4 如何选择一般原则如果是 is-a 关系 → 使用继承 如果是 has-a 关系 → 使用组合现代软件设计中常说优先使用组合而不是继承第十章 虚函数与多态性1. 派生类向基类转换导致类型信息丢失怎么办当派生类对象通过基类指针或引用访问时会发生向上转型upcasting此时只能看到基类部分的信息。如果希望根据对象的实际类型调用对应函数需要使用虚函数virtual function。示例classBase{public:virtualvoidshow(){coutBaseendl;}};classDerived:publicBase{public:voidshow(){coutDerivedendl;}};Base*pnewDerived();p-show();// 调用 Derived::show()如果没有virtual只会调用 Base::show()2. 什么是动态绑定它与虚函数有什么关系动态绑定Dynamic Binding在程序运行时根据对象的实际类型决定调用哪个函数。特点又称晚绑定Late Binding发生在通过指针或引用调用虚函数时关系虚函数是实现动态绑定的机制没有虚函数函数调用在编译时确定静态绑定3. 使用虚函数实现多态的一般过程实现多态通常需要三个步骤① 在基类中声明虚函数classBase{public:virtualvoidshow();};② 在派生类中重写虚函数classDerived:publicBase{public:voidshow();};③ 使用基类指针或引用调用函数Base*pnewDerived();p-show();运行结果调用 Derived 的 show()这就是运行时多态。4. 抽象类有什么作用如何定义作用抽象类用于描述一类对象的共同特征作为基类供派生类继承实现接口规范特点抽象类不能创建对象定义方式只要类中包含纯虚函数这个类就是抽象类。纯虚函数写法virtual返回类型 函数名()0;示例classShape{public:virtualdoublearea()0;};5. 什么时候使用抽象类或纯抽象类一般在以下情况使用① 只定义接口不提供实现例如图形类 动物类 设备接口② 需要统一操作不同类型对象例如Shape ├─ Circle ├─ Rectangle └─ Triangle统一调用Shape*p;p-area();③ 需要强制派生类实现某些函数纯虚函数要求派生类必须重写6. dynamic_cast 的作用举例dynamic_cast用于运行时安全类型转换通常用于基类指针转换为派生类指针。示例classBase{public:virtual~Base(){}};classDerived:publicBase{public:voidfunc(){coutDerived functionendl;}};Base*pnewDerived();Derived*ddynamic_castDerived*(p);if(d){d-func();}如果转换失败返回 nullptr作用总结用于多态类型的安全向下转型7. 如何理解C中的多态机制**多态Polymorphism**指同一个接口对不同对象产生不同的行为。在 C 中主要通过虚函数 继承 基类指针/引用实现。示例classAnimal{public:virtualvoidspeak(){coutAnimal soundendl;}};classDog:publicAnimal{public:voidspeak(){coutDog barkendl;}};classCat:publicAnimal{public:voidspeak(){coutCat meowendl;}};调用Animal*p;pnewDog();p-speak();pnewCat();p-speak();输出Dog bark Cat meow同一个函数speak()表现不同。一页速记版考试背诵版动态绑定是指在程序运行时根据对象的实际类型决定调用哪个函数它通常通过虚函数实现。实现多态的一般过程是在基类中声明虚函数在派生类中重写该函数然后通过基类指针或引用调用函数。抽象类是包含纯虚函数的类不能实例化对象主要用于定义接口规范并作为基类供派生类继承。dynamic_cast用于运行时安全类型转换常用于基类指针向派生类指针的转换。C的多态机制是指通过继承和虚函数使得同一个接口在不同对象上表现出不同的行为。这两题是C虚函数章节最经典的简答题我给你整理成考试标准答案 易理解版。1. 什么是虚函数什么是纯虚函数为什么要引入它们1什么是虚函数**虚函数Virtual Function**是指在基类中使用virtual关键字声明的成员函数。特点可以在派生类中被重写override通过基类指针或引用调用时根据对象的实际类型决定调用哪个函数示例classBase{public:virtualvoidshow(){coutBase showendl;}};classDerived:publicBase{public:voidshow(){coutDerived showendl;}};Base*pnewDerived();p-show();// 调用 Derived::show()2什么是纯虚函数**纯虚函数Pure Virtual Function**是没有函数实现的虚函数。声明方式virtual返回类型 函数名()0;例如classShape{public:virtualdoublearea()0;};特点包含纯虚函数的类称为抽象类抽象类不能创建对象派生类必须实现纯虚函数3为什么引入虚函数引入虚函数是为了实现① 运行时多态同一个接口对不同对象产生不同的行为。例如Animal*pnewDog();p-speak();② 动态绑定函数调用在运行时决定。4为什么引入纯虚函数纯虚函数主要用于① 定义接口规范规定派生类必须实现某些函数。例如Shape ├── Circle ├── Rectangle └── Triangle所有图形都必须实现area()② 实现抽象类用于表示抽象概念。例如Shape Animal Device2. 析构函数应该是虚函数吗为什么一般来说如果类可能被继承析构函数应该定义为虚函数。原因当使用基类指针删除派生类对象时如果析构函数不是虚函数只会调用基类析构函数。示例classBase{public:~Base(){coutBase destructorendl;}};classDerived:publicBase{public:~Derived(){coutDerived destructorendl;}};Base*pnewDerived();deletep;如果析构函数不是虚函数只调用 Base destructorDerived的资源不会释放。正确写法classBase{public:virtual~Base(){coutBase destructorendl;}};此时执行deletep;调用顺序Derived destructor Base destructor总结如果一个类作为基类使用其析构函数通常应该声明为虚函数以保证通过基类指针删除派生类对象时能够正确调用派生类析构函数从而避免资源泄露。考试背诵版简化虚函数是在基类中使用virtual声明的成员函数在派生类中可以被重写通过基类指针或引用调用时根据对象的实际类型决定调用哪个函数从而实现运行时多态。纯虚函数是没有函数体的虚函数其形式为virtual 函数 0包含纯虚函数的类称为抽象类抽象类不能创建对象派生类必须实现纯虚函数。引入虚函数是为了实现动态绑定和多态引入纯虚函数是为了定义接口规范。如果一个类作为基类使用其析构函数通常应该声明为虚函数因为当通过基类指针删除派生类对象时虚析构函数可以保证先调用派生类析构函数再调用基类析构函数从而正确释放资源。这两题其实是在考C多态 容器存储对象时的对象切片问题很多人容易答不完整。我给你整理成考试标准答案 原理解释版。5. 能否用 vector 或 vectorComponent 代替 vectorComponent*结论不能使用 vectorComponent也不能使用 vectorComponent原因如下。1为什么不能使用 vector如果使用vectorComponent会发生对象切片Object Slicing。原因Component是基类而Part、Assembly等是派生类。当派生类对象放入vectorComponent时派生类对象 → 转换为基类对象结果派生类特有的数据和行为会被丢弃例如classComponent{};classPart:publicComponent{};存入vectorComponentv;Part p;v.push_back(p);结果p 会被复制成 Component 对象此时Part 的成员全部消失并且多态也无法实现。2为什么不能使用 vectorComponentC 标准规定容器不能存储引用类型因此vectorComponent是非法的。原因引用必须在初始化时绑定对象且不能重新绑定而容器需要频繁移动和赋值元素。3为什么使用 vectorComponent*使用指针vectorComponent*可以1️⃣ 保存不同派生类对象例如Part*Assembly*2️⃣ 保持对象真实类型3️⃣ 实现多态调用例如Component*cnewPart();c-print();运行时调用Part::print()总结vectorComponent 会导致对象切片丢失派生类信息 vectorComponent 在C中是不允许的 因此必须使用 vectorComponent* 来保存不同类型的组件对象 从而保持多态性。6. 为什么说“面向对象编程必须使用指针和引用”这句话的意思是要实现多态必须通过指针或引用访问对象1对象本身不能实现多态例如Base bDerived();b.show();发生对象切片结果只调用 Base::show()因为b 已经变成 Base 对象2只有指针或引用才能保持对象真实类型例如Base*pnewDerived();p-show();此时p 指向 Derived 对象运行时调用 Derived::show()这就是动态绑定3多态必须满足三个条件1️⃣ 继承2️⃣ 虚函数3️⃣基类指针或引用例如Animal*p;pnewDog();pnewCat();调用p-speak();不同对象表现不同。总结理解这句话的含义是在C中如果直接使用对象进行赋值或传递 会发生对象切片丢失派生类信息 而使用指针或引用可以保持对象的真实类型 从而通过虚函数实现运行时多态。因此在面向对象编程中经常需要使用指针或引用来操作对象。考试简答版推荐写法在组件库存管理程序中不能使用vectorComponent因为当派生类对象存入该容器时会发生对象切片派生类特有的数据和行为会丢失从而无法实现多态也不能使用vectorComponent因为C标准容器不允许存储引用类型。因此需要使用vectorComponent*来保存组件对象从而能够存储不同派生类对象并保持多态。“无法直接使用对象进行面向对象编程”是因为如果直接使用对象赋值或传递会发生对象切片丢失派生类信息而使用基类指针或引用可以保持对象的真实类型并通过虚函数实现运行时多态因此在C面向对象编程中通常需要通过指针或引用来操作对象。这些是C模板Template章节的典型简答题我给你整理成标准答案 简洁考试版考试基本按这个写就可以。第十一章 模板与泛型编程1. C的模板机制解决什么问题**模板Template**主要用于解决代码复用问题。在很多情况下不同数据类型需要执行相同的算法或操作如果不用模板就需要为每种类型写一套函数或类。例如intmax(inta,intb);doublemax(doublea,doubleb);floatmax(floata,floatb);代码会大量重复。使用模板templatetypenameTTmax(T a,T b){returnab?a:b;}一个模板即可适用于多种类型。总结C模板机制通过参数化类型使函数或类能够适用于多种数据类型从而提高代码复用性减少重复代码并提高程序的通用性。2. 什么叫函数模板实例函数模板在什么时候被实例化函数模板实例是指编译器根据函数模板和具体的数据类型生成的具体函数。例如模板templatetypenameTTadd(T a,T b){returnab;}调用add(1,2);add(1.5,2.3);编译器会生成intadd(int,int);doubleadd(double,double);这些具体函数就叫函数模板实例。实例化时刻函数模板在被调用时由编译器自动实例化也就是说只有当模板被使用时才会生成具体函数3. 什么叫类模板实例类模板在什么时候被实例化类模板实例是指根据类模板和具体类型参数生成的具体类。例如templatetypenameTclassBox{public:T data;};使用Boxintb1;Boxdoubleb2;编译器会生成classBoxintclassBoxdouble这些就是类模板实例。实例化时刻类模板在使用具体类型创建对象时进行实例化也就是说Boxint b1;这一行代码会触发实例化。4. 模板的显式实例化有什么作用**显式实例化Explicit Instantiation**是指程序员显式指定模板生成某种类型的实例。语法template返回类型 函数名类型(参数);例如templateintaddint(int,int);作用1️⃣ 强制编译器生成指定类型的模板实例2️⃣ 提前生成代码避免多次实例化3️⃣ 在模板实现分离.h/.cpp时解决链接问题例如模板定义在cpp中时需要显式实例化一页考试简答版推荐背1️⃣ C模板机制通过参数化类型使函数或类能够适用于多种数据类型从而提高代码复用性减少重复代码提高程序的通用性。2️⃣ 函数模板实例是编译器根据函数模板和具体类型参数生成的具体函数。函数模板通常在被调用时由编译器自动实例化。3️⃣ 类模板实例是根据类模板和具体类型参数生成的具体类。类模板一般在使用具体类型创建对象时进行实例化。4️⃣ 模板的显式实例化是指程序员显式指定模板生成某种类型的实例其作用是强制编译器生成特定类型的模板代码并可用于解决模板分离编译时的链接问题。一、模板的特点C模板是一种参数化类型机制它允许函数或类在定义时不指定具体类型而在使用时再确定具体类型。模板具有代码复用性高、类型安全、编译期实例化和支持泛型编程等特点。模板通常用于不同数据类型执行相同操作、实现通用数据结构以及编写通用算法等场景。

相关文章:

C++继承、重载、多态相关问题(简单但通俗易懂)

第九章 组合与继承 一、比较 is-a 关系和 is-like-a 关系 1 is-a 关系 表示严格的继承关系。 含义:派生类是基类的一种特殊类型。例如: Dog is a Animal代码: class Animal{}; class Dog : public Animal{};特点: 派生类对象 可以…...

(其他)C1/C2驾照教程

目录1 科目二1.0 开车前检查1.1 倒车入库1.1.1 右倒库注意事项1.1.2 左倒库注意事项1.2 曲线行驶1.3 直角转弯1.4 侧方停车1.5 半坡起步1 科目二 本文介绍科目二的四个项目:倒车入库、曲线行驶、直角转弯、侧方停车。 1.0 开车前检查 调整座椅到合适的位置&#…...

[工具] 影子去除工具,可以批量去除影子,自动裁切透明,自动更新偏移坐标

影子去除工具,可以批量去除影子,自动裁切透明,自动更新偏移坐标一款专业的图片阴影去除工具,能够智能识别并去除图片中的阴影,还原物体真实颜色,广泛应用于照片修复、产品图处理、文档扫描优化等场景。 ##…...

代码随想录算法训练营day15| 110.平衡二叉树 (优先掌握递归)、 257. 二叉树的所有路径 (优先掌握递归)、 404.左叶子之和 (优先掌握递归)、 222.完全二叉树的节点个数(优先掌握

一、110.平衡二叉树 (优先掌握递归) 题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 初见思路: 学习代码随想录之后:平衡二叉树:左右子…...

leetcode 1409. 查询带键的排列

Problem: 1409. 查询带键的排列 考虑到实际模拟的话太耗费时间了&#xff0c;所以用哈希表来表示 数字-索引&#xff0c;然后对每个查询&#xff0c;拿到相应数字对应的索引ind&#xff0c;并且修改在索引ind前面的数字的索引都1 Code class Solution { public:vector<int…...

一次线上事故,我学到了事件驱动架构的5个教训

凌晨3点17分&#xff0c;监控大屏突然一片血红。用户订单"成功"了&#xff0c;但库存没扣、支付没扣、物流没发...上百万的交易数据人间蒸发。排查结果让所有人傻眼&#xff1a;只是一个"无关紧要"的代码改动&#xff0c;让整个事件驱动系统安静地"死…...

JetBrains IDEs官宣 实验性 AI 功能:Recap 与 Insights 详解

前言 JetBrains IDEs 已经提供了丰富的 AI 功能&#xff0c;从代码自动补全到代码生成和解释。2026年3月&#xff0c;JetBrains 推出了两款主动式 AI 功能实验插件——Recap&#xff08;回顾&#xff09;和Insights&#xff08;洞察&#xff09;&#xff0c;为开发者带来全新的…...

【靶点筛选样本前处理①】细胞膜蛋白的全流程提取实操:标准化制备及验证

引言 在多组学与空间蛋白质组学研究中&#xff0c;依赖全细胞裂解液的蛋白分析范式已显现显著局限 —— 其不仅会稀释低丰度亚细胞定位蛋白&#xff0c;还会完全掩盖细胞内蛋白转位事件&#xff0c;高纯度的细胞亚组分提取&#xff0c;已成为Western Blot、免疫共沉淀&#xf…...

老码农和你一起学AI系列:语言模型采样方法

语言模型在生成文本时&#xff0c;每一步都会计算出下一个词的概率分布&#xff08;比如“吃”&#xff1a;0.4&#xff0c;“喝”&#xff1a;0.3&#xff0c;“玩”&#xff1a;0.2……&#xff09;。那么&#xff0c;具体选哪个词作为输出呢&#xff1f;这就涉及采样方法。根…...

CSDN一亿技术人员的千载难逢机遇:个人如何转型,平台如何进化

CSDN一亿技术人员的千载难逢机遇&#xff1a;个人如何转型&#xff0c;平台如何进化 2026年&#xff0c;中国技术圈正在经历一场前所未有的范式转移。 这不是一次技术迭代&#xff0c;不是一次框架升级&#xff0c;不是一次语言更替——而是一次权力结构的根本性重构。 当大…...

SRMAS工作室简介

小红书、抖音 搜‘科研连连看’ ‘srmas工作室’ SRMAS英文全称Smart Research Multi Agent System,是多智能体协作&#xff08;MAS&#xff09;驱动的专业生产力实验室.一 定位srmas工作室是一家专注于复杂逻辑自动化与多智能体协同的技术工作室。通过自研的可视化 Mul…...

经典2DMMORPG手游【石器时代H5内购版】服务端图文手工搭建教程

游戏截图搭建环境信息 系统&#xff1a;Centos 7.6 配置&#xff1a;2核4G内存 搭建资源获取 资源网站&#xff1a;www.woniuyxdj.cn 宝塔面板安装 通用自动安装命令 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O in…...

2026大专国际经济与贸易就业方向有哪些?

2026年企业对于国贸类岗位的描述越来越清晰。外贸业务、跟单、报关报检等传统岗位的需求持续存在&#xff0c;具备实务经验的求职者往往能获得更多的面试机会。与此同时&#xff0c;随着跨境电商和各类新业态的快速发展&#xff0c;涉及海外市场运营、数字营销等方向的新岗位也…...

越南《人工智能法》具体内容详解(附中越互译)

越南《人工智能法》(第134/2025/QH15号)于2025年12月10日由越南国会以90.70%的高赞成率表决通过,2026年3月1日正式生效,共8章35条,是东盟首部全面规范人工智能领域的专项法律。该法以“管理以促进发展”为核心方针,在风险管控与创新激励间寻求平衡,既借鉴国际惯例,又立…...

习题3.12 另类循环队列

习题3.12 另类循环队列分数 20作者 DS课程组单位 浙江大学如果用一个循环数组表示队列&#xff0c;并且只设队列头指针Front&#xff0c;不设尾指针Rear&#xff0c;而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义&#xff1a;bool AddQ(…...

springboot+vue预报名管理系统--毕业论文

目录系统设计与技术选型需求分析与功能模块数据库设计后端实现前端实现系统安全与优化测试与部署总结与展望项目技术支持源码LW获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统设计与技术选型 阐述SpringBoot和Vue的技术优势&#xff0c;说…...

【AI】大语言模型 (LLM) 产品的开发流程参考

&#x1f525;小龙报&#xff1a;个人主页 &#x1f3ac;作者简介&#xff1a;C研发&#xff0c;嵌入式&#xff0c;机器人等方向学习者 ❄️个人专栏&#xff1a;《AI》 ✨ 永远相信美好的事情即将发生 文章目录前言一、个人开发者的大语言模型 (LLM) 产品的开发流程参考1.1 准…...

网络协议红蓝对抗:从TCP重传到QUIC的可靠性战争

网络协议红蓝对抗&#xff1a;从TCP重传到QUIC的可靠性战争原创深度技术长文 | 14,200字 | 含6大协议栈剖析、5个网络故障实验、4段可复现抓包分析 本文以高强度红蓝对抗形式&#xff0c;深入网络协议栈最核心战场——可靠性机制。从TCP的超时重传、快速恢复&#xff0c;到HTTP…...

文件系统红蓝对抗:从ext4到ZFS的数据持久性战争

文件系统红蓝对抗&#xff1a;从ext4到ZFS的数据持久性战争原创深度技术长文 | 13,800字 | 含7大文件系统对比、5个数据损坏实验、4段可复现代码 本文以高强度红蓝对抗形式&#xff0c;深入剖析ext4、XFS、Btrfs、ZFS、NTFS等主流文件系统在数据持久性、崩溃一致性、性能权衡上…...

操作系统红蓝对抗:从页表到调度器的血性博弈

操作系统红蓝对抗&#xff1a;从页表到调度器的血性博弈原创深度技术长文 | 13,200字 | 含8大核心机制剖析、6段可运行代码、5个性能陷阱预警 本文以高强度红蓝对抗形式&#xff0c;深入操作系统内核最敏感区域——内存管理、进程调度、中断处理、同步原语等核心子系统。通过1v…...

MySQL--八股文(一)

一、什么是MySQL&#xff1f;二、MySQL常用的储存引擎有什么&#xff1f;它们有什么区别&#xff1f;三、数据库的三大范式有哪些&#xff1f;四、MySQL的数据类型有哪些&#xff1f;五、索引六、B树和B树一、什么是MySQL&#xff1f;MySQL是一种开放源代码的关系型数据库管理系…...

(论文速读)SFAFBR:一种自监督的人工特征偏置校正框架

论文题目&#xff1a;Artificial Feature Bias Rectified by Self-Supervised Learning for Rolling Bearings Fault Diagnosis Under Limited Labeled Vibration Signals&#xff08;有限标记振动信号下滚动轴承故障诊断的自监督学习修正人工特征偏差&#xff09;期刊&#xf…...

从0实现OnCall基于Python语言框架

Step01第一步做的事情&#xff0c;先把 Python 版 OnCall 的后端外壳搭起来。也就是说&#xff0c;先验证了一件最关键的事&#xff1a;这个项目能不能先以 Python 服务的形式真正跑起来&#xff0c;并且具备最基础的对外通信能力。只有这一步成立&#xff0c;后面接模型、接 R…...

计院操作系统实验10

基于QEMU将UART串口重定向至控制台的实现&#xff0c;使用UART串口作为输入设备&#xff0c;通过设置信号量和中断&#xff0c;每次用户输入字符串&#xff0c;GIC会接收到中断号33&#xff0c;随后调用shell进程存储输入至缓冲区并在控制台上回显输入&#xff0c;实现简单的sh…...

[特殊字符] OpenClaw(小龙虾)CentOS 7 完整安装手册

&#x1f527; **适用系统**&#xff1a;CentOS 7.x&#xff08;本文基于 CentOS 7.9 编写&#xff09; &#x1f3d7;️ **架构要求**&#xff1a;x86_64 &#x1f464; **操作用户**&#xff1a;root&#xff08;为简化操作&#xff0c;本文全程使用 root 用户&#xff0…...

打不开游戏提示缺少D3DCompiler_47.dll文件 分享免费下载

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

【小程序】✈️一口气用AI肝了50+功能的小程序(已上线)

&#x1f4a5;&#x1f4a5;✈️✈️欢迎阅读本文章❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;本篇文章阅读大约耗时5分钟。 ⛳️motto&#xff1a;不积跬步、无以千里 &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;&#x1f381;&#x1f381;&am…...

构建StructBERT模型集群:负载均衡与高可用部署架构

构建StructBERT模型集群&#xff1a;负载均衡与高可用部署架构 最近和几个做企业服务的同行聊天&#xff0c;大家普遍遇到一个头疼的问题&#xff1a;单个模型服务扛不住业务高峰期的流量。平时跑得好好的&#xff0c;一到促销或者活动&#xff0c;服务就卡顿甚至挂掉&#xf…...

Emoji国旗代码大全:如何在网页和App中正确显示各国旗帜(附完整Unicode列表)

Emoji国旗代码实战指南&#xff1a;跨平台兼容方案与Unicode最佳实践 在全球化数字产品设计中&#xff0c;emoji国旗已成为用户界面不可或缺的视觉元素。从社交平台的用户国籍标识到电商网站的物流追踪&#xff0c;这些彩色小旗帜背后却隐藏着令人头疼的技术挑战——不同设备显…...

Qwen3-VL-2B-Instruct如何保护隐私?数据安全指南

Qwen3-VL-2B-Instruct如何保护隐私&#xff1f;数据安全指南 在AI应用日益普及的今天&#xff0c;我们享受技术便利的同时&#xff0c;也面临着数据隐私的挑战。当你使用一个能“看懂”图片的AI模型时&#xff0c;一个核心问题自然浮现&#xff1a;我上传的图片和数据安全吗&a…...