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

【C++核心技术深度解析:从继承多态到STL容器 】

在这里插入图片描述

一、C++继承机制:代码复用与层次设计

1. 继承基础概念

什么是继承?

继承是面向对象编程的核心机制,通过class Derived : public Base让子类(派生类)复用父类(基类)的属性和方法,同时支持新增专属功能。

  • 单继承:子类仅继承一个父类(如Student : public Person),遵循is-a关系(学生是人)。
  • 多继承:子类继承多个父类(如Assistant : public Student, public Teacher),可能引入钻石继承问题。
面试官高频问题:

Q:继承的三种访问权限(public/protected/private)有何区别?

  • public继承:父类的public成员在子类中仍为publicprotected成员仍为protectedprivate成员不可见。
  • protected继承:父类的publicprotected成员在子类中变为protected(类外不可访问)。
  • private继承:父类的publicprotected成员在子类中变为private(子类的子类也无法继承)。
    关键结论:父类private成员永远无法被子类直接访问。

2. 多继承与钻石继承问题

钻石继承的本质问题

当两个子类继承同一个父类,且第三个子类同时继承这两个子类时,形成钻石结构(如Assistant继承StudentTeacher,二者均继承Person),导致:

  • 数据冗余Assistant对象包含两份Person成员(如两个name)。
  • 二义性:访问公共基类成员时需显式指定路径(如Student::_name),否则编译报错。
解决方案:虚继承

在直接父类声明中添加virtual关键字(如Student : virtual public Person),确保最终子类中仅保留一份公共基类实例。

  • 实现原理:虚基类表(vbtable)记录公共基类的内存偏移量,运行时动态定位唯一实例,消除冗余和二义性。
面试官高频问题:

Q:为什么多继承会导致钻石问题?如何解决?
多继承时,公共基类被多次继承,导致数据重复和访问歧义。虚继承通过共享基类实例解决此问题,但会增加少量内存和性能开销。

3. 继承 vs 组合:如何选择?

特性继承(is-a)组合(has-a)
关系本质子类是父类的一种(如“学生是人”)类包含其他类的对象(如“车有轮胎”)
耦合度强耦合(父类修改影响子类)低耦合(黑箱复用,封装性好)
代码复用直接复用父类成员显式委托调用成员函数
典型案例Student : public Personclass Car { Tire _tire; }
最佳实践:
  • 优先使用组合(如STL容器广泛采用组合),除非明确是is-a关系。
  • 多继承慎用,尽量通过虚继承或重构类层次结构避免钻石问题。
面试官高频问题:

Q:继承和组合的优缺点是什么?
继承的优点是代码复用和多态支持,缺点是强耦合;组合的优点是低耦合和高灵活性,缺点是需显式委托调用。

二、多态:运行时行为差异化的核心

1. 多态的实现条件与机制

三要素:
  1. 父类虚函数:用virtual声明(如virtual void BuyTicket())。
  2. 子类重写:函数名、参数列表、返回值一致(协变除外),建议用override标记。
  3. 父类指针/引用调用:通过Base* ptr = new Derived()触发动态绑定。
虚函数表(VTBL)底层原理:
  • 每个含虚函数的类生成虚表(函数指针数组),对象通过虚表指针(_vfptr)定位函数地址。
  • 子类虚表通过拷贝父类虚表并覆盖重写函数地址生成,新增虚函数追加到表尾。
面试官高频问题:

Q:多态的实现原理是什么?
通过虚函数表和虚表指针实现动态绑定:编译期生成虚表,运行时根据对象实际类型查找虚表,调用对应函数。

2. 析构函数与多态安全

内存泄漏风险:

若父类析构函数非虚,通过父类指针删除子类对象时,仅调用父类析构函数,子类资源未释放:

class Person { ~Person() { } }; // 非虚析构  
class Student : public Person { ~Student() { delete[] data; } };  
Person* ptr = new Student;  
delete ptr; // 子类析构未调用,data泄漏  
解决方案:

父类析构函数声明为虚函数,确保析构时按“子类→父类”顺序释放资源:

class Person { virtual ~Person() { } }; // 虚析构函数  
面试官高频问题:

Q:为什么父类析构函数通常需要是虚函数?
避免通过父类指针释放子类对象时导致的内存泄漏,确保子类资源正确释放。

3. C++11关键字:final与override

override

强制编译器检查子类是否正确重写父类虚函数,编译期报错不匹配的重写(如参数不同、父类函数非虚):

class Car { virtual void Drive() { } };  
class Benz { void Drive(int x) override { } }; // 错误!参数不匹配,编译报错  
final
  • 禁止虚函数重写:virtual void Func() final
  • 禁止类继承:class Car final(该类不能被继承)。
面试官高频问题:

Q:override关键字的作用是什么?
确保子类正确重写虚函数,提高代码健壮性,避免因函数签名错误导致的多态失效。

三、二叉搜索树(BST):高效查找的数据结构

1. 核心性质与操作

性质(左小右大):
  • 左子树所有节点值 < 根节点值;右子树所有节点值 > 根节点值;左右子树也是BST。
时间复杂度:
操作平均情况最坏情况说明
插入/查找/删除O(logN)O(N)最坏退化为单边树
核心操作:
  • 插入:按“左小右大”找到插入位置,处理键重复。
  • 删除:分三种情况(无孩子、单孩子、双孩子),双孩子节点用右子树最小值替换后删除。
面试官高频问题:

Q:BST删除双孩子节点的步骤是什么?

  1. 找到右子树最小值(或左子树最大值)。
  2. 用该值替换当前节点值。
  3. 删除最小值节点(此时该节点最多有右孩子,简化为单孩子情况)。

2. 应用场景:K模型与KV模型

K模型(仅有键):

用于存在性检查(如单词拼写检查),节点仅存储键(struct Node { K key; })。

KV模型(键值对):

存储键值对(如字典),节点存储pair<K, V>,比较时仅用键,值可按需访问。

与STL关系:

set(K模型)和map(KV模型)的底层逻辑基于BST,STL实际使用红黑树(平衡BST)确保最坏O(logN)性能。

面试官高频问题:

Q:BST的最坏情况是什么?如何优化?
最坏情况是树退化为链表(有序插入),时间复杂度O(N)。通过平衡树(如红黑树、AVL树)维持树高平衡,确保最坏O(logN)。

四、STL容器:从有序到无序的高效选择

1. set/multiset:有序元素集合

核心区别:
特性setmultiset
元素唯一性去重允许重复
erase(val)删除一个匹配元素删除所有匹配元素
应用场景数学集合、去重排序重复元素统计
底层实现:

基于红黑树,插入、删除、查找时间复杂度O(logN),迭代器支持中序遍历(有序访问)。

面试官高频问题:

Q:set和multiset的底层结构是什么?为什么能保证有序性?
底层是红黑树(平衡BST),通过树的中序遍历实现元素自动排序。

2. map/multimap:键值对映射

核心区别:
特性mapmultimap
键唯一性唯一允许重复
operator[]支持(单值引用)不支持(多值歧义)
典型场景一对一映射(字典)一对多映射(多释义)
核心接口:
  • mapoperator[]:自动处理插入和更新,如count_map[key]++
  • multimapequal_range:遍历同一键的所有值。
面试官高频问题:

Q:map的operator[]内部如何实现?
若键不存在,插入一个值为默认构造的Value(如int为0),并返回该值的引用,便于直接修改。

3. unordered系列:哈希表实现的无序容器

核心原理:

通过哈希函数将键映射到数组下标,平均O(1)时间定位元素,冲突处理采用开散列(链表/红黑树)或闭散列(探测法)。

  • 开散列(STL默认):每个桶是链表,冲突元素链状连接,插入用头插法提高效率。
  • 闭散列:冲突时探测下一个空位,需处理伪删除(标记DELETE)。
性能对比:
操作哈希表(平均)红黑树
插入/查找/删除O(1)O(logN)
有序性不支持支持
面试官高频问题:

Q:unordered_map和map的适用场景如何选择?
需要有序性或范围查询时用map(红黑树),追求速度且无序时用unordered_map(哈希表)。

五、核心总结与面试准备重点

1. 知识图谱

继承机制 → 单继承/多继承 → 钻石问题/虚继承  
多态原理 → 虚函数表/动态绑定 → 析构函数/抽象类  
数据结构 → BST/红黑树 → set/map实现  
哈希表 → 冲突解决(开散列/闭散列) → unordered系列  

2. 面试高频问题汇总

  1. 继承相关

    • 多继承的问题及解决方案?(钻石继承、虚继承)
    • 继承方式如何影响成员访问权限?(public/protected/private对比)
  2. 多态相关

    • 多态的实现条件是什么?(虚函数、重写、父类指针)
    • 为什么父类析构函数需要是虚函数?(内存泄漏风险)
  3. STL容器

    • set和unordered_set的底层区别?(红黑树vs哈希表,有序性)
    • map的operator[]如何实现?(默认构造与引用返回)
  4. 算法与数据结构

    • BST删除双孩子节点的步骤?(替换法)
    • 哈希表冲突解决方法有哪些?(开散列vs闭散列)

3. 最佳实践

  • 设计原则:优先组合(低耦合),谨慎使用多继承(避免钻石问题)。
  • 代码规范:用override标记重写函数,final修饰密封类或禁止重写的函数。
  • 性能优化:哈希表选择素数桶大小,控制负载因子;平衡树操作确保O(logN)性能。

通过系统理解继承、多态、BST和STL容器的底层原理,不仅能应对高频面试问题,更能在实际开发中合理设计类层次、选择高效数据结构,写出健壮且高性能的C++代码。

相关文章:

【C++核心技术深度解析:从继承多态到STL容器 】

一、C继承机制&#xff1a;代码复用与层次设计 1. 继承基础概念 什么是继承&#xff1f; 继承是面向对象编程的核心机制&#xff0c;通过class Derived : public Base让子类&#xff08;派生类&#xff09;复用父类&#xff08;基类&#xff09;的属性和方法&#xff0c;同时…...

【C/C++】new关键字解析

&#x1f4d8; C 中 new 关键字详解笔记 &#x1f539; 什么是 new&#xff1f; new 是 C 中用于动态内存分配的关键字&#xff0c;它在堆内存中为对象或变量分配空间&#xff0c;并返回对应类型的指针。 与 C 语言中的 malloc 相比&#xff0c;new 更安全、更方便&#xff…...

C++高性能内存池

目录 1. 项目介绍 1. 这个项目做的是什么? 2. 该项目要求的知识储备 2. 什么是内存池 1. 池化技术 2. 内存池 3. 内存池主要解决的问题 4.malloc 3. 先设计一个定长的内存池 4.高并发内存池 -- 整体框架设计 5. 高并发内存池 -- thread cache 6. 高并发内存池 -- …...

chili3d调试笔记12 deepwiki viewport

xiangechen/chili3d | DeepWiki viewport阅读 &#x1f9e0;deep 我要把模型投影成dxf导出有什么办法 引用lookat 截图是如何实现的 明天接着搞 ----------------------------------------------------------------...

前端取经路——JavaScript修炼:悟空的九大心法

大家好&#xff0c;我是老十三&#xff0c;一名前端开发工程师。JavaScript如同孙悟空的七十二变&#xff0c;变化多端却又充满威力。本篇文章我将带你攻克JS中最令人头疼的九大难题&#xff0c;从闭包陷阱到原型链继承&#xff0c;从异步编程到性能优化。每个难题都配有实战代…...

从零实战:在Xilinx Zynq PS端移植VxWorks 6.9系统

一、环境准备与工具链搭建 1.1 硬件配置清单 开发板: Zynq-7000系列(推荐ZedBoard或ZCU102)调试工具: USB-JTAG调试器(如Xilinx Platform Cable USB II)存储介质: SD卡(建议Class 10以上)1.2 软件环境 工具版本作用Vivado2022.1FPGA硬件设计Vitis2022.1系统集成开发Wind…...

网工实验——RIP配置

网络拓扑图 配置 1.为每台设备配置ip地址 AR4 <Huawei>u t m <Huawei>sys [Huawei]sysname AR4 [AR4]int g0/0/0 [AR4-GigabitEthernet0/0/0]ip address 172.16.1.1 24 [AR4-GigabitEthernet0/0/0]q#下面配置换回口&#xff0c;模拟网 [AR4]int LoopBack 0 [AR4…...

前端流行框架Vue3教程:14. 组件传递Props效验

(4) 组件传递Props效验 Vue组件可以更细致地声明对传入的props的校验要求 ComponentA.vue <script> import ComponentB from ./ComponentB.vue; export default {components: {ComponentB},data() {return {title: 标题}} } </script> <template><h3&g…...

电子电器架构 --- 网关ECU中采用多CPU解决方案来实现网关功能

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

关于tftpboot的用法

TFTPBOOT 是一个常用于嵌入式系统或网络设备中的命令&#xff0c;用于通过 TFTP 协议从网络上启动操作系统镜像或引导文件。这个命令通常在设备启动时执行&#xff0c;允许设备通过网络从 TFTP 服务器下载启动镜像或其他必要的文件&#xff0c;而不需要从本地存储中启动。 一般…...

团队协作的润滑剂——GitHub与协作流程

各位代码界的社交恐惧症患者们&#xff0c;今天我们要聊的是如何假装自己很会团队协作——使用GitHub&#xff01;这就像程序员版的"相亲平台"&#xff0c;只不过在这里&#xff0c;你展示的不是自拍和收入&#xff0c;而是代码和commit记录&#xff08;后者往往更令…...

数据库复习

DML操作包括&#xff1a; SELECT INSERT UPDATE DELETE MERGE 返回字符串长度&#xff1a;length() 查询记录&#xff1a;SELECT 增&#xff08;INSERT&#xff09;、删&#xff08;DELETE&#xff09;、改&#xff08;UPDATE&#xff09;、查&#xff08;SELECT&#…...

AI与机器学习、深度学习在气候变化预测中的应用与实践

前言&#xff1a; 全球气候变化是现代社会面临的最重要的环境挑战之一&#xff0c;影响了气温、降水、海平面、农业、生态系统等多个方面。气候变化的驱动因素主要包括温室气体排放、气溶胶浓度、火灾频发、海冰融化、叶绿素变化、农业变化和生态环境变化等。这些因素在全球范围…...

Laravel 12 基于 EMQX 实现 MQTT 消息发送与接收

Laravel 12 基于 EMQX 实现 MQTT 消息发送与接收 要在 Laravel 12 中实现基于 EMQX 的 MQTT 消息发送与接收&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 安装必要的依赖包 首先安装 MQTT 客户端库&#xff1a; composer require php-mqtt/client2. 配置 EMQX 连接 …...

论广告系统对存算分离架构的应用

辅助论点 辅助论点一&#xff1a;存算分离架构起源于数据库领域&#xff0c;并不是在线系统。 存算分离的架构源于Google的Spanner数据库&#xff0c;这个数据库采用了KV做存储层&#xff0c;OLAP做计算层的分离式设计&#xff0c;其目的是能快速伸缩计算资源&#xff0c;且节…...

create-vue搭建Vue3项目(Vue3学习2)

一、认识create-vue image.png 二、create-vue搭建Vue3项目 image.png image.png 依次执行npm install 和npm run dev即可运行项目 image.png image.png © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦&#xff01;&#xff01;&#xff…...

NHDEEP档案管理系统功能介绍

NHDEEP档案管理系统单机版专注于提高档案管理效率&#xff0c;无需网络连接即可独立运作&#xff0c;确保数据的安全与私密性。无论是机关单位的常规档案工作&#xff0c;还是工程、基建项目的特殊档案管理需求&#xff0c;系统都能提供全面的解决方案。系统支持信创环境。 核心…...

【C++】C++中的命名/名字/名称空间 namespace

C中的命名/名字/名称空间 namespace 1、问题引入2、概念3、作用4、格式5、使用命名空间中的成员5.1 using编译指令&#xff08; 引进整个命名空间&#xff09; ---将这个盒子全部打开5.2 using声明使特定的标识符可用(引进命名空间的某个成员) ---将这个盒子中某个成员的位置打…...

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义&#xff1a; #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…...

人工智能100问☞第15问:人工智能的常见分类方式有哪些?

目录 一、通俗解释 二、专业解析 三、权威参考 人工智能的常见分类方式包括:​​按智能水平​​(弱人工智能、通用人工智能、超级人工智能)、​​按技术原理​​(生成式AI、判别式AI、强化学习)、​​按功能目标​​(生成内容、优化决策)、​​按应用领域​​(自然语…...

JavaSE核心知识点01基础语法01-04(数组)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点01基础语法01-04&#xff0…...

抖音代播领航者——品融电商(PINKROON)的运营实力与服务解析

抖音代播领航者——品融电商&#xff08;PINKROON&#xff09;的运营实力与服务解析 在兴趣电商高速发展的背景下&#xff0c;杭州品融品牌管理有限公司&#xff08;PINKROON&#xff09;凭借其全域增长方法论与抖音生态的深度布局&#xff0c;成为众多品牌首选的抖音代播服务商…...

LeetCode 790 多米诺和托米诺平铺 题解

对于本题不去看LeetCode的评论区和题解很难想到如何去dp&#xff0c;毕竟就算再怎么枚举也很难找到适用于面向结果的规律。所以对于题解我建议大家还是去看一下灵神给的题解&#xff0c;以下是灵神汇总的图&#xff0c;如果能看懂的话&#xff0c;对于解决题目有很大的帮助。 根…...

力扣-hot100 (缺失的第一个正数)

41. 缺失的第一个正数 困难 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff…...

Electrolink信息泄露(CVE-2025-28228)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

Leetcode Hot 100 三数之和

思路 对数组先排序&#xff0c;然后使用双指针法进行&#xff0c;并且整个过程需要把握去重的逻辑 代码 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if not nums:return []nums.sort() #去重都需要排序res[]for i in range(len(nums)):if i…...

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…...

巧记英语四级单词 Unit7-中【晓艳老师版】

collapse v.倒塌&#xff0c;坍塌 都(col)来扑(lap)噻immune a.不受影响的&#xff0c;免疫的 我im 木讷mune&#xff0c;人应该木讷一点yard n.院子 鸭的&#xff0c;在哪养&#xff1b;backyard 后院backward a.往后的 ward表示方向 profile n.外形&#xff0c;轮廓 从前面看…...

Windows系统修改Docker Desktop(WSL2)内存分配

# Windows查看docker信息 docker info 新增wsl全局配置文件(.wslconfig文件)&#xff1a;windows路径栏输入&#xff1a;%UserProfile%&#xff0c;找到目录C:\Users\Administrator&#xff0c;默认是没有这个配置文件的&#xff0c;可以自己新增 # 设置在wsl2上运行 [wsl2] # …...

Oracle02-安装

零、文章目录 Oracle02-安装 1、Windows Server2022安装Oracle11g &#xff08;1&#xff09;下载 百度网盘地址&#xff1a; https://pan.baidu.com/s/15MBkMt1ldbSFm4L74h7Myg?pwd8888下载完成两个压缩包解压放在一起 &#xff08;2&#xff09;安装 双击 setup 文件安…...

Linux[Makefile]

Makefile基础结构 规则语法 target: prerequisitescommandtarget&#xff1a;生成的目标&#xff08;如可执行文件、.o文件&#xff09; prerequisites&#xff1a;依赖项&#xff08;源码、头文件等&#xff09; command&#xff1a;构建命令&#xff08;必须用Tab缩进&am…...

相同的数(简单)

深度优先搜索 如果两个二叉树都为空&#xff0c;则两个二叉树相同。如果两个二叉树中有且只有一个为空&#xff0c;则两个二叉树一定不相同。 如果两个二叉树都不为空&#xff0c;那么首先判断它们的根节点的值是否相同&#xff0c;若不相同则两个二叉树一定不同&#xff0c;…...

「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例

一、概述 本篇以已有多字段输出为基础&#xff0c;介绍如何通过执行 LLM 节点对多个上游字段进行统一拼接与格式化处理。开发人员将学习如何从多个节点输出中提取数据字段&#xff0c;并组合为结构清晰、风格统一的最终输出&#xff0c;提升用户阅读体验。 二、环境准备 mac…...

餐饮部绩效考核管理制度与综合评估方法

在竞争激烈的餐饮行业中&#xff0c;标准化与数据驱动的管理手段正成为提升服务质量与运营效率的关键。绩效考核不仅关乎员工奖惩&#xff0c;更直接影响顾客体验、成本控制与营收水平。构建一套科学有效的绩效体系&#xff0c;是餐饮部精细化运营的起点。 本文围绕餐饮部绩效…...

conda虚拟环境相关操作

查看当前存在哪些虚拟环境 conda env list conda info --env创建虚拟环境conda create -n env_name pythonX.X删除虚拟环境conda remove -n env_name --all查看安装了哪些包conda list下载/删除环境中的某个包conda install package_nameconda uninstall package_name删除所有未…...

达梦DM数据库安装步骤

文章目录 1、下载并解压缩2、安装DM数据库2.1 运行安装程序2.2 选择语言与时区2.3 安装向导2.4 许可证协议2.5 Key文件2.6 选择组件2.7 安装位置2.8 安装前小结2.9 安装过程2.10 已完成2.11 初始化 3、配置实例3.1选择操作方式3.2创建数据库模版3.3指定数据库目录3.4数据库标识…...

vue3在使用@import “./index.scss“报错

Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. More info and automated migrator: https://sass-lang.com/d/import 2 │ import "./index.scss"; 在 Sass 3.0.0.之后 导入样式使用 “use” &#xff0c;不在使…...

对标研华ECU-461,搭载飞腾4核/8核国产处理器, 提供8网 8串B码对时 双显 无风扇的ARM通信管理平台

ƒ 飞腾 FT-2000/4 和 D2000/8 主控制器&#xff0c;主频 2.3~2.6GHz ƒ 8 个千兆网口 , 8 个全功能隔离串口 ƒ HDMIVGA 双显示接口 ƒ 3 个 USB2.0, 2 个 USB3.0 ƒ 支持 2 组 SATA 硬盘存储 ƒ 支持 CAN 通讯 ( 替换 4 路或 8 路 COM) ƒ 整机无风扇散热设计 …...

如何将C#程序打包成软件绿色包

文章目录 前言步骤如下&#xff1a;总结 前言 在实际工作中&#xff0c;很多时候会开发一些特别小的工具&#xff0c;当这些工具需要发给别人用时&#xff0c;不值当的打个安装包&#xff0c;最适合做一个绿色包&#xff0c;别人拿到后&#xff0c;直接双击exe就可以用。 步骤…...

实验三 数据查询

一、【实验教学 1、掌握单表查询。 2、掌握多表查询。 二、【实验教学的基本要求】 1、掌握SQL程序设计基本规范&#xff1b; 2、熟练运用SQL实现数据基本查询&#xff0c;包括单表查询、分组统计查询和连接查询&#xff1b; 3、理解和掌握SQL查询语句中各个子句的特点和…...

关于串口读写NAND闪存的用法

在嵌入式系统中&#xff0c;nand 命令通常用于操作和管理 NAND 闪存子系统&#xff0c;特别是在引导加载程序&#xff08;如 U-Boot&#xff09;中。NAND 闪存是一种非易失性存储设备&#xff0c;广泛用于嵌入式设备中&#xff0c;用于存储操作系统、应用程序、配置文件等数据。…...

C++:实现线程池

线程池&#xff08;Thread Pool&#xff09;是一种多线程处理方式&#xff0c;用于管理和复用多个线程&#xff0c;以提高程序的并发性能并避免频繁创建和销毁线程所带来的开销。 基本概念&#xff1a; 线程池维护着若干个已创建好的线程&#xff0c;当有任务需要执行时&…...

本地运行qwen3:30b-a3b速度测试

仍然使用的是ollama&#xff0c;运行的Q4_K_M量化版。 这个模型在相同硬件环境下对比我电脑上其他32b的模型速度&#xff08;小于3 tokens/s&#xff09;提升非常明显&#xff0c;并且可以设置是否打开思考模式。 注意&#xff1a; /no_think前有个空格 非思考模式&#xff1…...

keil+vscode+腾讯ai助手

嵌入式软件开发 这个是之前一直想写的开发方式&#xff0c;不过上份工作一直在忙&#xff0c;没有抽出时间花在上面&#xff0c;现在空下来好好写一写吧&#xff01;标题软件安装 关于VSCode以及Keil的安装可以在以下链接中点击浏览 VSCode安装 Keil5安装 CubeMx安装 插件下…...

通过TinyML为语音助手赋能,推动以用户为中心的创新和现实世界应用

英文标题&#xff1a;Empowering voice assistants with TinyML for user-centric innovations and real-world applications 中文标题&#xff1a;通过TinyML为语音助手赋能&#xff0c;推动以用户为中心的创新和现实世界应用 作者信息 Sireesha Chittepu1, Sheshikala Mart…...

学习Python网络爬虫的实例

30岁程序员学习Python的第二天之网络爬虫的练习实例 爬取软科2025年中国大学排名 思路&#xff1a; 1、百度查到到网页地址&#xff1a;https://www.shanghairanking.cn/rankings/bcur/2025 2、编写爬取代码&#xff0c;具体步骤分3步&#xff0c;第一步通过requests库爬取网…...

雨云游戏云MCSM面板服使用教程我的世界Forge服务端开服教程

雨云 - 新一代云服务提供商 雨云面板服目前支持一键开服的游戏有&#xff1a;Minecraft Java版、Minecraft 基岩版、泰拉瑞亚、饥荒&#xff0c;还提供纯Java/Linux环境&#xff08;Docker&#xff09;&#xff0c;方便开自己开其他游戏服。 其中Minecraft Java版支持一键开…...

关于loadstartcode使用

loadstartcode 命令用于从 TFTP 服务器下载一个名为 startcode 的文件。这个命令通常用于将启动代码&#xff08;如引导加载程序或内核启动映像&#xff09;从 TFTP 服务器加载到设备内存中。它是嵌入式设备和网络设备&#xff08;如路由器&#xff09;常见的命令&#xff0c;通…...

Linux死锁实验分析与总结

三、实验结果截图及分析 1. 实验代码 #include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex2 PTHREAD_MUTEX_INITIALIZER;void* producer(void* arg) {while (1) {pth…...

【计网】ipconfig、ping、arp、tracert

目录 ipconfig ping arp tracert cmd ipconfig ipcofig -all IPv4 物理地址 ping 检测网络连通情况&#xff0c;分析网络速度 根据域名得到服务器IP 根据TTL判断对方所使用的操作系统以及数据包经过路由器数量 byte数据包大小 time响应时间 TTLDNS记录在DNS服务器上存在…...