深度学习总结(25)
抽样偏倚问题
非代表性数据有一个特别隐蔽又特别常见的例子,那就是抽样偏倚(sampling bias)。如果你的数据收集过程与你尝试预测的目标之间存在相互影响,就会出现抽样偏倚,从而导致有偏差的结果。
理解数据
将数据集看作黑盒子,这是一种非常不好的做法。在开始训练模型之前,你应该探索数据并将其可视化,深入了解数据为何具有预测性,这将为特征工程提供信息并发现潜在问题。如果数据包含图像或自然语言文本,那么可以直接查看一些样本(及其标签)。如果数据包含数值特征,那么最好绘制特征的直方图,大致了解特征的取值范围和不同取值的出现频率。如果数据包括位置信息,那么可以将其绘制在地图上,观察是否出现了任何明显的模式。一些样本是否有特征值缺失?如果是,那么你需要在准备数据时处理这个问题。对于分类问题,可以算一下数据中每个类别的样本数。各个类别的比例是否大致相同?如果不是,那么需要考虑这种不平衡。检查是否存在目标泄露(target leaking):你的数据包含能够提供目标信息的特征,而这些特征在生产环境中可能并不存在。如果你在医疗记录上训练模型,以预测某人未来是否会接受癌症治疗,而医疗记录包含“此人已被诊断出患有癌症”这一特征,那么你的目标就被人为地泄露到数据中。经常问问自己:数据中的每个特征是否都会以相同形式出现在生产环境中?
选择衡量成功的指标
要控制某个事物,你需要能够观察它。要在一个项目上获得成功,你必须首先给出成功的定义:精度、准确率和召回率、还是客户留存率?衡量成功的指标将指引你在整个项目中的所有技术选择。它应该与你的最终目标(如客户的商业成功)保持一致。对于平衡分类问题(每个类别的比例相同),精度和受试者操作特征曲线下面积(area under a receiver operating characteristic curve,缩写为ROC AUC)是两个常用指标。对于类别不平衡的问题、排序问题和多标签分类问题,你既可以使用准确率和召回率,也可以使用精度或ROC AUC的加权形式。自定义的成功衡量指标也很常见。要想了解机器学习的各种成功衡量指标以及这些指标与不同问题领域的关系,你可以浏览Kaggle网站上的数据科学竞赛,上面展示了各种各样的问题和评估指标。
开发模型
知道了如何衡量进展,下面就可以开始开发模型了。大多数教程和研究项目假设这是唯一的步骤—跳过了问题定义和数据收集,假设这两步均已完成;跳过了模型部署和维护,假设这两步都是由别人来处理。事实上,模型开发只是机器学习工作流程中的一个步骤,,它并不是最难的一步。机器学习中最难的步骤是问题定义、数据收集、数据标注和数据清理。
准备数据
深度学习模型通常不会直接读取原始数据。数据预处理的目的是让原始数据更适于用神经网络处理,它包括向量化、规范化和处理缺失值。许多预处理方法是和特定领域相关的(比如针对于文本数据或图像数据)。
向量化
神经网络的所有输入和目标通常都必须是浮点数张量(在特定情况下可以是整数张量或字符串张量)。无论你要处理什么数据(无论是声音、图像还是文本),首先都必须将其转换为张量,这一步叫作数据向量化(data vectorization)。比如在文本分类示例中,开始时文本被表示为整数列表(代表单词序列),我们用one-hot编码将其转换为float32格式的张量。在手写数字分类和预测房价的示例中,数据已经是向量形式,所以可以跳过这一步。
规范化
在MNIST数字分类示例中,开始时图像数据被编码为取值在0~255范围内的整数,代表灰度值。将这一数据输入神经网络之前,我们需要将其转换为float32格式并除以255,这样就得到取值在0~1范围内的浮点数。同样,在预测房价的示例中,开始时数据特征有着不同的取值范围,有些特征是较小的浮点数,有些则是相对较大的整数。将这一数据输入神经网络之前,我们需要对每个特征分别做规范化,使其均值为0、标准差为1。一般来说,将取值相对较大的数据(比如多位整数,比神经网络权重的初始值大很多)或异质数据(heterogeneous data,比如数据的一个特征在0~1范围内,另一个特征在100~200范围内)输入神经网络是不安全的。这么做可能导致较大的梯度更新,进而导致神经网络无法收敛。为了让神经网络的学习变得更容易,输入数据应具有以下特征。
取值较小:通常情况下,大部分取值应该在0~1范围内。同质性:所有特征的取值应该大致在同一范围内。此外,下面这种更严格的规范化方法也很常见,而且很有用,不过并非必需(比如在数字分类问题中我们就没有这么做)。对每个特征分别规范化,使其均值为0。对每个特征分别规范化,使其标准差为1。这对于NumPy数组很容易实现。
x -= x.mean(axis=0) #假设x是一个形状为(samples, features)的二维矩阵
x /= x.std(axis=0)
处理缺失值
数据有时可能会有缺失值。比如在房价预测示例中,第一个特征(数据中索引编号为0的列)是人均犯罪率。如果不是所有样本都具有这个特征,那怎么办?这样训练数据或测试数据中将有缺失值。可以完全舍弃这个特征,但不一定非得这么做。如果是分类特征,则可以创建一个新的类别,表示“此值缺失”。模型会自动学习这个新类别对于目标的含义。如果是数值特征,应避免输入像"0"这样随意的值,因为它可能会在特征形成的潜在空间中造成不连续性,从而让模型更加难以泛化。相反,你可以考虑用数据集中该特征的均值或中位值来代替缺失值。你也可以训练一个模型,给定其他特征的值,预测该特征的值。请注意,如果测试数据的分类特征有缺失值,而训练数据中没有缺失值,那么神经网络无法学会忽略缺失值。在这种情况下,你应该手动生成一些有缺失值的训练样本:将一些训练样本复制多次,然后舍弃测试数据中可能缺失的某些分类特征。
选择评估方法
模型的目的是实现泛化。在整个模型开发过程中,你所做的每一个建模决定都将以验证指标为指导,这些指标的作用是衡量泛化性能。评估方法的目的是准确估计在实际生产数据上的成功衡量指标(如精度)。这一过程的可靠性对于构建一个有用的模型来说至关重要。三种常用的评估方法。简单的留出验证:数据量很大时可以采用这种方法。K折交叉验证:如果留出验证的样本太少,无法保证可靠性,则应该使用这种方法。重复K折交叉验证:如果可用的数据很少,同时模型评估又需要非常准确,则应该使用这种方法。从三种方法中选择一种即可。大多数情况下,第一种方法就足以得到很好的效果。不过要始终注意验证集的代表性,并注意在训练集和验证集之间不要存在冗余样本。
超越基准
在开始研究模型本身时,你的初始目标是获得**统计功效(statistical power)**:开发一个能够超越简单基准的小模型。在这一阶段,你应该关注以下三件非常重要的事情。特征工程。过滤没有信息量的特征(特征选择),并利用你对问题的了解,开发可能有用的新特征。选择正确的架构预设。你要使用什么类型的模型架构?密集连接网络、卷积神经网络、循环神经网络还是Transformer?深度学习是不是完成这个任务的好方法,还是说应该使用其他方法?选择足够好的训练配置。你应该使用什么损失函数?批量大小和学习率分别是多少?选择正确的损失函数通常无法直接对成功衡量指标进行优化。有时难以将指标转化为损失函数,因为损失函数需要在只有小批量数据时就是可计算的(理想情况下,只有一个数据点时,损失函数应该也是可计算的),而且还必须是可微的(否则无法用反向传播来训练神经网络)。例如,常用的分类指标ROC AUC就不能被直接优化。因此在分类任务中,常见的做法是优化ROC AUC的替代指标,比如交叉熵。一般可以认为,交叉熵越小,ROC AUC就越大。
对于一些常见的问题类型,可以帮你选择最后一层激活函数和损失函数。
对于大多数问题,你可以利用已有的模板。你不是第一个尝试构建垃圾信息检测器、音乐推荐引擎或图像分类器的人。一定要调研先前的技术,以确定最有可能在你的任务上表现良好的特征工程方法和模型架构。请注意,模型不一定总是能够获得统计功效。如果你尝试了多种合理架构之后,仍然无法超越简单基准,那么问题的答案可能并不包含在输入数据中。请记住你所做的两个假设。假设可以根据输入对输出进行预测。假设现有数据包含足够多的信息,足以学习输入和输出之间的关系。这些假设可能是错的,这时你必须重新从头思考解决问题的思路。
相关文章:
深度学习总结(25)
抽样偏倚问题 非代表性数据有一个特别隐蔽又特别常见的例子,那就是抽样偏倚(sampling bias)。如果你的数据收集过程与你尝试预测的目标之间存在相互影响,就会出现抽样偏倚,从而导致有偏差的结果。 理解数据 将数据…...
探索 Model Context Protocol (MCP):它如何影响 AI 的表现?
Anthropic 公司 Anthropic 是一家技术实力雄厚的公司,也是大模型领域的重要参与者之一。其开发的 **Claude 模型** 是全球首个以编程能力见长并广受欢迎的大语言模型。这款模型凭借卓越的代码生成和理解能力,迅速成为许多开发者工具的核心组件。例如&am…...
Three.js + React 实战系列-3D 个人主页 :完成 Navbar 导航栏组件
在上一节中,我们搭建了项目的基础结构,搭建好了项目框架。 本节我们将继续完善页面结构,完成第一个视觉组件 —— Navbar 导航栏 ✅ 前置准备: ✅下载静态资源在根目录下 (src 同级)谷歌云盘地址 🎥 02 完成 Navba…...
游戏引擎学习第238天:让 OpenGL 使用我们的屏幕坐标
回顾并为今天的内容做准备 我们已经完成了硬件显示的实现,现在通过GPU来显示游戏。原本以为这会花费很长时间,但结果实际所需的时间并不多。因此,我们现在有了进展,但接下来应该做什么还不确定。虽然有很多事情可以做,…...
go+mysql+cocos实现游戏搭建
盲目的学了一段时间了,刚开始从Box2d开始学习,明白了很多,Box2d是物理模型的基础,是我们在游戏中模拟现实的很重要的一个开源工具。后来在朋友的建议下学习了cocos,也是小程序开发的利器,而golang是一款高效…...
Linux 网络基础(二) (传输协议层:UDP、TCP)
目录 一、传输层的意义 二、端口号 1、五元组标识一个通信 2、端口号范围划分 3、知名端口号(Well-Know Port Number) (1)查看端口号 4、绑定端口号数目问题 5、pidof & netstat 命令 (1)ne…...
Vue常用指令入门
1. v-for 作用:用于遍历对象或数组 注意:需要提供key属性,可以提高性能和避免渲染错误,值通常为index或item.id <li v-for"(item, index) in items" :key"index">{{ item }} </li>2. v-if,v-el…...
【文献阅读】EndoNet A Deep Architecture for Recognition Tasks on Laparoscopic Videos
关于数据集的整理 Cholec80 胆囊切除手术视频数据集介绍 https://zhuanlan.zhihu.com/p/700024359 数据集信息 Cholec80 数据集 是一个针对内窥镜引导 下的胆囊切除手术视频流程识别数据集。数据集提供了每段视频中总共7种手术动作及总共7种手术工具的标注,标…...
UML统一建模
UML UML(统一建模语言)介绍 UML(统一建模语言)介绍 面向对象软件开发需要经过OOA面向对象分析、OOD面向对象设计和OOP面向对象编程三个阶段。OOA对目标系统进行分析并寄哪里分析模型,并将之文档化,OOD用面向…...
Ubuntu下安装和卸载MySQL
Ubuntu下安装和卸载MySQL 下面的演示系统版本:Ubuntu 24.04 更新系统软件包 在开始安装之前,建议先更新系统的软件包列表,以确保所有依赖项是最新的。 sudo apt update && sudo apt upgrade -y安装MySQL服务器 Ubuntu的官方软件…...
物联网技术赋能:复杂环境下的能源数据零丢失
安科瑞顾强 在全球能源挑战日益严峻的背景下,高效节能已成为各行业的核心诉求。无论是商业综合体、工业厂房还是公共设施,如何实现能源的精细化管理成为关键课题。安科瑞能耗云平台凭借其创新技术与多功能服务,为企业提供了一站式能源管理解…...
卷积神经网络综述
摘要 本文对卷积神经网络(Convolutional Neural Network,CNN)进行了全面综述。首先介绍了卷积神经网络的发展历程,包括早期的理论基础和关键突破。接着详细阐述了卷积神经网络的结构组成,包括卷积层、池化层、全连接层…...
SpringBoot3设置maven package直接打包成二进制可执行文件
注意事项 SpringBoot普通native打包顺序clean compile spring-boot:process-aot native:compile 使用以下配置只会的打包顺序clean package(注意:使用此配置以后打包会有编译后的class文件、jar包、original源文件、二进制可执行文件【Linux是无后缀的包…...
在 Anaconda 上安装多版本 Python 解释器并在 PyCharm 中配置
默认已安装好 Anaconda 和 PyCharm ,想在 Anaconda 上安装最新版本的 Python 解释器。 一、在 Anaconda 上创建虚拟环境 在连网状态下进入系统的命令提示符(快捷键:win r ,输入 cmd 即可),输入如下命令&a…...
AES (高级加密标准)
原理详解 AES是一种对称加密算法,使用相同的密钥进行加密和解密。它采用替代-置换网络(SPN)结构,主要步骤包括: 密钥扩展:从初始密钥派生多轮密钥 初始轮:AddRoundKey(轮密钥加) 主轮ÿ…...
Git拉分支技巧:从零开始创建并推送分支
Git拉分支技巧:从零开始创建并推送分支 在团队协作开发中,Git 分支管理是不可或缺的技能。合理地创建、同步和推送分支,不仅能提高开发效率,还能避免代码冲突。本文将基于以下技巧,详细讲解如何从零开始创建并推送一个…...
线性回归之归一化(normalization)
文章目录 归一化与梯度下降归一化的必要性:从特征量纲到梯度下降问题背景矛盾与低效归一化的作用 归一化提高模型精度的原因归一化的本质常见归一化方法最大值最小值归一化示例说明优缺点分析 标准归一化具体机制示例说明 强调 归一化与梯度下降 归一化与梯度下降 &…...
mac监控linux上mysql性能(Grafana+Prometheus+mysqld_exporter)
一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装(mac)-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录页面 (默认用户名和密码都为admin,进入后…...
【玩泰山派】MISC(杂项)- linux桌面环境
文章目录 linux桌面环境linux四大桌面环境概述ubuntu基于四大桌面环境的版本 显示管理器gdm3(GNOME Display Manager)lightdm(Lightweight Display Manager)SDDM(Simple Desktop Display Manager)KDM&#…...
MVCC介绍
MVCC(多版本并发控制)详解 MVCC(Multi-Version Concurrency Control) 是一种数据库并发控制技术,核心思想是通过维护数据的多个版本来实现读写操作的无锁并发,从而在高并发场景下提升性能。它广泛用于 MyS…...
神经网络与模型训练过程笔记
1.专有名词 ANN 人工神经网络,一种受生物神经元启发的监督学习算法。输入数据通过网络中的层级函数传递,激活特定神经元。函数复杂度越高,模型对数据的拟合能力越强,预测精度越高。 偏置项 其中x下表从1开始的是输入变量…...
ASP.NET 0~1学习
变量 string username Request["id"]; 声明并初始化一个字符串变量 username 数据类型 下面列出了常用的数据类型: 类型描述实例int整数(全数字)103, 12, 5168float浮点数3.14, 3.4e38decimal十进制数字(高精度&a…...
optool为macho文件增加动态库
对macho文件有一定理解后,了解下optool是如何给macho文件增加动态库等功能的 optool 源码 环境 macOS 13.4 (22F66) Xcode 14.3.1 0x0 编译 下载源码 $ git clone --recurse-submodules https://github.com/alexzielenski/optool.git修改下Deployment Target,比如改成11.0&…...
【C++】类和对象之日期类的实现(构造、运算符重载)
文章目录 一、日期类要实现的函数二、函数实现1、GetMonthDay获取对应月份的天数2、CheckDate检查日期3、Date构造函数4、Print打印日期5、运算符重载1. 、、-、-2. 前置/--、后置/--3. 两个日期类相减(求相差日期) 6、比较7、流插入、流提取࿰…...
【Rust 精进之路之第9篇-所有权·核心】规则与移动 (Move):Rust 内存安全基石详解
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:没有 GC,Rust 如何管好内存?答案是所有权! 在我们的 Rust 探索之旅中,我们已经学习了变量、数据类型、控制流、函数和强大的构建工具 Cargo。现在,我们将踏入 Rust 最…...
【任务调度】xxl-job入门
xxl- job 入门 附上笔者写的测视示例:chenmeng-test-demos/demo8-task/task-xxl-job at master cmty256/chenmeng-test-demos 官方文档 XXL-JOB官网 源码仓库地址: Github:https://github.com/xuxueli/xxl-job Gitee:http://g…...
Go语言--语法基础4--基本数据类型--浮点数类型
3 、浮点数类型 浮点型用于表示包含小数点的数据,比如 1.234 就是一个浮点型数据。 Go 语言中的浮点类型采用 IEEE-754 标准的表达方式。 float32 精度是小数点后 7 位 float64 精度是小数点后 15 位。 1. 浮点数表示 Go 语言定义了两个类型 float32 和 floa…...
秘密任务 3.0:如何通过 JWT 认证确保 WebSockets 安全
在之前的文章中,我们探讨了如何通过 WebSockets DTOs 设计实时操作。现在,我们迎来了一项新的挑战:确保 WebSocket 通信在任务执行过程中保持安全。如果敌方潜伏在我们的实时通信渠道中,机密情报可能会被泄露。 任务:…...
UID和GID的区别
UID(用户标识符)和 GID(组标识符)是 Linux/Unix 系统中用于管理用户和组权限的核心机制,它们的区别主要体现在作用对象和用途上: 目录 1. 定义与作用对象 2. 主要用途 3. 系统保留范围 4. 用户与组的关…...
【网络】通过Samba实现Window挂在Linux服务器路径
有时候我们去进行内网部署时,会遇到客户或者甲方爸爸说,需要将Linux中的某个路径共享出去到Window上,挂载出比如Z:\这种盘符。通过打开Z盘,来查看服务器的指定目录下的数据。 步骤1: 在Linux中安装samba yum install…...
UE5 UI 教程系列全集
https://www.youtube.com/TheRoyalSkies/search?queryUnreal-5%20UI...
论文笔记(七十八)Do generative video models understand physical principles?
Do generative video models understand physical principles? 文章概括Physics-IQ基准数据集评估协议为什么要创建一个真实世界的Physics-IQ数据集模型物理理解的评估指标动作发生在哪里?空间IoU(Spatial IoU)动作在哪里、何时发生…...
Viper配置管理笔记
一、什么是 Viper? Viper 是 Go 语言的一个强大工具,就像一个超级管家,专门负责帮你打理程序的各种配置。它能把配置文件(比如 JSON、YAML、TOML 等格式)里的内容读出来,还能监控配置文件的变化࿰…...
visual studio无法跳转到函数定义、变量定义、跳转函数位置不准问题解决
参考:https://blog.csdn.net/snakehacker/article/details/135438353 程序有时会出现大部分函数都不能准确的从头文件中正确定位到函数定位,这是因为数据库错乱造成的,可以通过重构数据库来解决,操作方法如下: 菜单栏:工具——选项 文本编辑…...
【Rust 精进之路之第15篇-枚举 Enum】定义、变体与数据关联:表达多种可能性
系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:当值拥有“选项”——超越结构体的表达力 在上一篇【结构体 Struct】中,我们学习了如何使用结构体将多个相关的数据字段组合成一个有意义的整体。结构体非常适合表示那些…...
C++ 相关系统软件简介与学习方法【最水的一期】
C 作为一种强大的C 相关系统软件简介编程语言,广泛应用于系统软件开发领域。以下为你介绍几款基于 C 开发的典型系统软件及其特点: 操作系统内核 部分操作系统内核采用 C 开发,例如某些嵌入式操作系统。C 的高性能、底层硬件访问能力和强大的…...
【Linux我做主】GDB调试工具完全指南
Linux下GDB调试工具完全指南:25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB(GNU Debugger)是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验࿰…...
基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)
目录 一、快速搭建SpringBoot-Web工程脚手架。 1.1 Spring Initializr 初始化工程。(官方提供) 1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1) 二、MyBatis-Plus的特性与快速上手。 2.1 官网地址与基本特性。 2.2 快速上手技术栈基础。 2.3 Spring Boot2 的 MyBatis-Plus Star…...
短视频电商新纪元:TikTok Shop全球蓝海争夺战进入关键窗口期
一、流量重构:TikTok Shop改写全球电商版图 2024年,全球跨境电商市场迎来新一轮洗牌。当Temu、Shein等平台深陷“低价内卷”泥潭时,TikTok Shop凭借日均30亿次的短视频流量,正在开辟一条“内容即货架”的颠覆性赛道。最新数据显示…...
uniapp-商城-29-vuex 关于系统状态的管理
按照我们前面讲的,vuex,的使用方式: 步骤如下: 1 先创建store 文件夹 2 在 store 中 创建一个 index.js 3、 在 store 中,创建一个modules文件夹 4、在store中,创建一个getters.js 5、在modules文件…...
Qt中修改了UI设计文件后编译不生效问题的解决办法
复制工程过来后: 1、删除build文件 2、删除.user文件,恢复为文件最初的那样 3、执行make distclean,删除所有由先前构建过程生成的文件 4、再次打开工程,修改ui文件编译生效!...
Python 项目环境配置与 Vanna 安装避坑指南 (PyCharm + venv)
在进行 Python 项目开发时,一个干净、隔离且配置正确的开发环境至关重要。尤其是在使用像 PyCharm 这样的集成开发环境 (IDE) 时,正确理解和配置虚拟环境 (Virtual Environment) 是避免许多常见问题的关键。本文结合之前安装 Vanna 库时遇到的问题&#…...
Matlab FCM模糊聚类
1、内容简介 Matlab 211-FCM模糊聚类 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
标准的JNI (Java Native Interface) 加载函数 JNI_OnLoad
1.JNI_OnLoad 在 Android Native 开发中,JNI_OnLoad 是动态注册本地方法的标准入口点。以下是一个标准实现示例及其说明: JNI_OnLoad 标准实现 #include <jni.h> #include <string>// 声明本地方法对应的 C/C 函数 jint native_add(JNIEnv…...
微信小程序中使用h5页面预览图片、视频、pdf文件
遇到了这么一个需求,需要在微信小程序中点击文件,进行文件预览。 要求: 图片:长图需要宽度100%高度自适应;横图的话宽度100%,高度居中显示视频:视频不管横向还是竖向都居中显示,有…...
A2A协议详解:打造统一的AI代理通信标准,实现多Agent系统协同
A2A 协议中文说明 文章目录 A2A 解决现有 Agent 问题 Agent 生态系统现状当前面临的主要问题为什么需要统一协议,有个标准采用复用 A2A 解决方案 统一通信标准代理能力发现机制安全协作框架灵活的交互模式 A2A 与 MCP 的关系 MCP 简介两者的区别与联系集成场景协同…...
博客系统案例练习2-用户注册-redis
前言 用户注册 [请求]/user/register[参数]contentType: application/json{"userName":"wangwu","password":"456789","githubUrl": "https://gitee.com/bubble-fish666/spring-cloud","email": &quo…...
【人工智能】推荐开源企业级OCR大模型InternVL3
推荐开源企业级OCR大模型InternVL3 文章参考来源: https://huggingface.co/OpenGVLab/InternVL3-14B-Instruct https://www.aivi.fyi/llms/deploy-InternVL3 InternVL3,这是一个高级多模态大型语言模型 (MLLM) 系列,展示了卓越的整…...
聊天室项目
一.完善注册页面 1.完善注册页面图标,添加检测注册页面各个登录信息是否完善,并且通过信号和槽与自定义一个计时器,当注册完毕后跳转到显示注册完毕的页面。 2.各个坚持注册页面是否按要求的函数 3.完善主页面,设置信号和槽&…...
并发设计模式实战系列(4):线程池
🌟 大家好,我是摘星! 🌟 今天为大家带来的是并发设计模式实战系列,第四章线程池(Thread Pool),废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 线程池核心组件 2. 核心…...