吴恩达2022机器学习专项课程C2W3:2.26 机器学习发展历程
目录
- 开发机器学习系统的过程
- 开发机器学习案例
- 1.问题描述
- 2.创建监督学习算法
- 3.解决问题
- 4.小结
- 误差分析
- 1.概述
- 2.误差分析解决之前的问题
- 3.小结
- 增加数据
- 1.简述
- 2.增加数据案例一
- 3.增加数据案例二
- 4.添加数据的技巧
- 5.空白创建数据
- 6.小结
- 迁移学习
- 1.简述
- 2.为什么迁移学习有作用
- 3.小结
- 机器学习的整体步骤
- 将模型部署到生产环境
- 公平偏见与道德
- 1.偏见
- 2.不道德消极
- 3.建议
- 小结
- 课后问题
开发机器学习系统的过程
机器学习发展的迭代循环:确定系统架构、选择模型和数据、设定超参数,然后实现和训练模型。初次训练通常效果不理想,因此需要进行诊断(如偏差和方差分析)并进行误差分析。根据诊断结果,调整模型结构、超参数或数据,重复这一循环,直到达到预期性能。
开发机器学习案例
1.问题描述
左边的例子展示了一个典型的垃圾邮件,其中包含像“劳力士手表”这样的内容。垃圾邮件发送者有时会故意拼错单词来迷惑识别器。右边是吴恩达发给他弟弟的正常邮件,关于一起过圣诞节的事情。那么,如何构建一个分类器来识别垃圾邮件和非垃圾邮件呢?
2.创建监督学习算法
输入特征x是电子邮件的特征,输出标签y是1或0,表示它是垃圾邮件或非垃圾邮件。这是一个文本分类的例子,通过分析电子邮件文本并将其归类为垃圾邮件或非垃圾邮件。
构建特征的一种方法是选择字典中最常用的一万个单词,并用这些单词来定义特征x_1到x_10,000。例如,对一封电子邮件,如果某个单词出现,则相应特征为1,否则为0。另一种方法是计算每个单词在电子邮件中出现的次数。
有了这些特征后,可以使用分类算法,如逻辑回归或神经网络,根据这些特征x来预测标签y。
3.解决问题
训练完初始模型后,如果效果不佳,你可能会有多种改进算法的想法。例如,可以尝试收集更多数据,如通过蜜罐项目获取垃圾邮件数据,或者开发更复杂的特征,如基于电子邮件路由信息或处理邮件正文中的拼写错误。
为了选择最有前景的改进方向,可以根据算法的表现来决定。如果算法有高偏差,收集更多数据可能效果不大;如果方差高,增加数据会有帮助。选择正确的方向能显著加速项目进展。
4.小结
在机器学习和开发的迭代循环中,你可能会有许多修改模型或数据的想法。不同的诊断方法可以指导你选择最有希望的架构。在前几个视频中,我们讨论了偏差和方差。在下个视频中,我将介绍误差分析过程,这是另一个关键方法,用于判断哪些架构选择可能有效。我们将以构建垃圾邮件分类器为例,探讨误差分析的应用。
误差分析
1.概述
方差偏差在第一位,误差分析在第二位。
在选择如何改进学习算法性能时,偏差和方差是最重要的概念,而误差分析则是其次。具体来说,假设你有500个交叉验证样本,算法错误分类了其中的100个。误差分析指的是手动检查这100个错误样本,找出常见的错误类型。例如,如果许多错误样本是医药垃圾邮件,你可以统计这些类型的错误数量,并决定是否针对这些错误进行优化。
通过误差分析,你可以发现某些类型的错误更普遍,从而决定优先解决这些问题。例如,如果故意拼写错误的影响较小,那么可能不需要优先解决。这个过程可以帮助你高效地选择改进方向,并避免在影响较小的问题上浪费时间。
最后,误差分析可以为你提供灵感,例如收集更多特定类型的数据或设计新的特征,从而改进算法性能。
2.误差分析解决之前的问题
回到这个列表,偏差方差分析可以告诉你收集更多数据是否有帮助。根据示例算法的误差分析,更复杂的邮件特征可能有些帮助,但不大,而更复杂的特征用于检测垃圾邮件或钓鱼邮件则帮助很大。检测拼写错误的效果相对较小。
3.小结
偏差方差诊断和误差分析对筛选和决定模型改进方向非常有帮助。但误差分析对人类擅长的问题更容易,例如识别垃圾邮件。而对于人类也不擅长的任务,如预测广告点击率,误差分析较难进行。但在适用的情况下,误差分析能显著帮助集中精力于更有前景的改进,节省大量时间。在下个视频中,将深入探讨如何高效地增加数据。
增加数据
1.简述
这里分享一些增加、收集甚至创建更多数据的技巧。每个机器学习应用可能需要不同的方法,因为不同问题有不同的数据需求。
通常,增加所有类型的数据既耗时又昂贵。相反,更有效的方法是根据误差分析的结果,重点增加那些算法表现不佳的数据类型。例如,如果误差分析显示医药垃圾邮件是大问题,则应集中精力获取更多这类数据。
另一种方法是数据增强,特别适用于图像和音频数据。通过对现有数据进行旋转、缩放、对比度调整等变换,生成新的训练样本。这可以显著增加训练集的大小,提高算法的性能。
总结来说,重点增加特定类型的数据或使用数据增强技术,可以更有效地提升算法性能。
2.增加数据案例一
一个更高级的数据增强示例是对字母A应用网格,并进行随机变形。通过扭曲网格,可以生成许多变形后的字母A,从而创建更丰富的字母A样本库。这种扭曲过程将一个图像样本转化为多个训练样本,帮助学习算法更加稳健地学习。
3.增加数据案例二
数据增强同样适用于语音识别。例如,在语音搜索应用中,可以将原始音频剪辑(如“今天的天气怎么样”)与嘈杂的背景音(如人群噪音或汽车噪音)混合,生成包含背景噪音的新音频剪辑。通过这种方式,可以将一个原始音频变成多个训练样本,如带有背景噪音或差的手机连接音频。这种技术对增加训练数据量、提高语音识别系统的准确性非常关键。
4.添加数据的技巧
进行数据增强时,所做的变换或扭曲应与测试集中的噪声或失真类型相似。例如,对字母A进行扭曲,或在音频中加入背景噪音或差的手机连接,这些都应与测试集中的情况相符。这些方法会有助于数据增强。而添加纯粹随机且无意义的噪声则通常没什么帮助,因为这类噪声在测试集中很少见。因此,数据增强应模拟测试集中可能出现的情况,以便算法在这些条件下表现良好。
5.空白创建数据
数据增强通过修改现有的训练样本来创建新的样本,而数据合成则是从零开始生成全新的样本。
例如,在图片光学字符识别(OCR)任务中,可以通过计算机文本编辑器使用不同字体、颜色和对比度生成合成数据。这些合成数据看起来与真实数据非常相似,可以用于训练OCR算法,从而显著提升算法性能。虽然编写生成真实感合成数据的代码需要花费大量时间,但它可以生成大量训练数据,对算法性能有巨大提升。数据合成主要用于计算机视觉任务,较少用于其他领域。
6.小结
本节介绍了多种数据工程技术,用于改进机器学习系统中的数据处理。传统的模型中心方法主要关注改进算法或模型,而保持数据集不变。如今,由于现有算法(如线性回归、神经网络、决策树等)已经非常强大,采用数据中心方法可能更有效,即关注改进和增强数据。
数据中心方法包括:根据误差分析结果收集更多特定数据、使用数据增强生成更多图像或音频、通过数据合成创建新的训练样本。这些方法可以提高算法性能。
此外,对于数据稀缺的应用,可以使用迁移学习,从其他相关任务中获取数据来提升算法性能。迁移学习在某些情况下非常强大,下个视频将详细介绍其工作原理。
迁移学习
1.简述
迁移学习是一种在数据不足的情况下,通过利用其他任务的数据来提高当前任务性能的技术。
例如,假设你想要识别从0到9的手写数字,但没有足够多的这些手写数字的带标签数据,导致通过这个小数据集训练的神经网络性能不够好。这时可以使用迁移学习。比如我们找到一个使用一百万张图片和一千个分类的大数据集预训练好的神经网络,得到其各层参数。然后,我们将这个预训练模型的参数应用到原有的小数据集的神经网络中,将其输出层改为较小的输出层。最后,通过优化算法对新任务进行训练或微调,以提高模型的性能。
小数据集的神经网络有两种训练方式:只训练输出层参数或训练所有参数。迁移学习使得新模型从更好的初始参数开始,能够在小数据集上取得更好的效果。如果你的训练集很小,选项1可能效果更好;如果训练集稍大一些,选项2可能更好。
首先在大数据集上训练,然后在小数据集上微调参数,被称为监督预训练和微调。迁移学习的优势在于它能够利用其他研究者预训练好的神经网络,通过替换输出层并进行微调,快速实现高效的模型。
2.为什么迁移学习有作用
(1)概述
迁移学习有效的原因在于,通过训练神经网络识别多种不同的图像(如猫、狗、汽车和人),神经网络学会了检测通用的图像特征,如边缘、角落和基本形状。这些特征对其他计算机视觉任务(如识别手写数字)也非常有用,因此可以将这些学习到的参数应用到新任务中,提升其识别性能。
(2)注意事项
预训练的限制在于输入类型必须一致。对于计算机视觉任务,预训练和微调都需要在图像数据上进行。对于语音识别系统,需要在音频数据上预训练神经网络,再在自己的音频数据集上微调。不同类型的应用需要在相应类型的数据上预训练,例如文本数据的应用需要在文本数据上预训练并微调。
3.小结
迁移学习有两个步骤:第一步是下载在大数据集上预训练的神经网络,输入类型需与应用一致;第二步是在自己的数据上进一步训练或微调。使用预训练的神经网络可以在小数据集上取得不错的效果。
机器学习的整体步骤
机器学习项目的完整周期包括以下步骤:
- 确定项目范围:决定项目内容和目标。例如,进行语音识别以实现语音搜索。
- 数据收集:获取训练模型所需的数据,如音频和转录标签。
- 训练模型:使用收集的数据训练模型,并进行偏差方差或误差分析以改进模型。
- 循环改进:根据误差分析,回去收集更多数据并继续改进模型,直到模型表现良好。
- 部署模型:在生产环境中部署模型,让用户使用。
- 持续监控和维护:监控模型性能,维护和改进模型以应对性能下降。
通过这些步骤,确保模型在实际应用中表现稳定和高效。
将模型部署到生产环境
当你训练出高性能的机器学习模型(如语音识别),通常会将其部署到一个推理服务器上,通过API进行预测。当用户通过移动应用说话时,应用将音频传递给推理服务器,服务器返回语音转录结果。
实现这一过程可能需要编写相关代码,具体的软件工程量取决于应用需求。记录输入数据和预测结果对系统监控非常有用,可通过监控发现数据变化并重新训练和更新模型。
部署可能需要一些软件工程,对于小规模应用或在少数服务器上运行,需求较少。MLOps(机器学习运营)是一个新兴领域,涉及系统地构建、部署和维护机器学习系统,确保模型可靠、扩展性好、日志记录和监控完善,并能够及时更新模型。如果要为数百万人部署系统,需要高度优化的实现,以控制计算成本。训练高性能模型是关键,但部署时需要考虑和解决额外步骤。
公平偏见与道德
1.偏见
机器学习算法影响着数十亿人,构建这些系统时需要考虑公平和伦理问题。历史上出现了一些带有严重偏见的系统,如歧视女性的招聘工具和对深色皮肤个人不公平的人脸识别系统。这些系统不应该被推出。我们应避免构建和部署存在偏见的问题系统,并确保我们的算法不会强化负面刻板印象。这些措施有助于创建一个更公正和道德的机器学习环境。
2.不道德消极
机器学习算法存在一些负面使用案例,如深度伪造视频、传播有害言论和生成虚假内容等,这些都具有不道德性。我们不应构建对社会有负面影响的系统。伦理问题非常复杂,没有简单的解决方案。我建议大家在工作中遵循一些一般性的指导和建议,以确保工作更少偏见、更公平和更有伦理。
3.建议
以下是一些建议,帮助你在部署可能造成危害的系统之前,使你的工作更公平、减少偏见和更具伦理:
-
组建多元化团队:组建一个多元化团队,特别是强调对弱势群体可能造成的潜在危害,进行头脑风暴。多元化不仅包括性别,还包括种族、文化等多方面。这有助于团队更好地识别潜在问题并在系统上线前解决。
-
文献搜索:查找行业或特定应用领域的标准和指南。例如,在金融行业,已经开始建立有关系统公平性和无偏见性的标准。这些标准可以指导你的工作。
-
系统审计:在部署前,审计系统以识别可能的危害。培训模型后,但在投入生产前,检查系统是否对某些群体(如特定性别或种族)存在偏见,并确保在部署前解决这些问题。
-
制定缓解计划:如果适用,制定一个缓解计划。一个简单的缓解计划是回滚到先前较为公平的系统。即使在部署后,也要持续监控可能的危害,以便在出现问题时能够快速执行缓解计划。例如,所有自动驾驶汽车团队在上路前都制定了应对事故的缓解计划,这样如果发生事故,可以立即执行计划,而不是在事后手忙脚乱地处理。
小结
机器学习中的伦理、公平和偏见问题需要认真对待,因为这些系统会影响很多人。不同项目的伦理影响可能不同,但所有从事机器学习工作的人都应努力发现和解决问题,避免之前的错误。最后,鼓励观看关于处理偏斜数据集的可选视频。
课后问题
问题:哪种方式是进行错误分析的方式?
选项:
- 计算测试误差 (J_{test})
- 收集额外的训练数据以帮助算法做得更好
- 计算训练误差 (J_{train})
- 手动检查模型错误分类的一部分训练示例,以识别共同的特征和趋势
答案:手动检查模型错误分类的一部分训练示例,以识别共同的特征和趋势
答案解释:通过识别相似类型的错误,你可以收集更多类似于这些错误分类示例的数据,从而改进模型在这些类型示例上的表现。
问题:我们有时会取一个现有的训练示例并对其进行修改(例如,通过略微旋转图像)以创建一个具有相同标签的新示例。这个过程叫什么?
选项:
- 数据增强
- 机器学习诊断
- 偏差/方差分析
- 错误分析
答案:数据增强
答案解释:是的,修改现有数据(如图像或音频)称为数据增强。
问题:进行迁移学习的两种可能方法是什么?提示:四个选项中有两个是正确的。
选项:
- 你可以选择训练模型的所有参数,包括输出层以及早期层。
- 你可以选择只训练输出层的参数,并保持模型的其他参数固定。
- 给定数据集,先进行预训练,然后在相同数据集上进一步微调神经网络。
- 下载一个预训练模型,并在不修改或重新训练的情况下使用它进行预测。
答案:
你可以选择训练模型的所有参数,包括输出层以及早期层。
你可以选择只训练输出层的参数,并保持模型的其他参数固定。
答案解释:正确。训练模型的所有层可能有助于你在自己的训练集上训练模型的所有层。这可能需要更多时间,与你仅训练输出层的参数相比。正确。模型的早期层可能可以直接使用,因为它们正在识别与你的任务相关的低级特征。
相关文章:

吴恩达2022机器学习专项课程C2W3:2.26 机器学习发展历程
目录 开发机器学习系统的过程开发机器学习案例1.问题描述2.创建监督学习算法3.解决问题4.小结 误差分析1.概述2.误差分析解决之前的问题3.小结 增加数据1.简述2.增加数据案例一3.增加数据案例二4.添加数据的技巧5.空白创建数据6.小结 迁移学习1.简述2.为什么迁移学习有作用3.小…...

当OpenHarmony遇上OpenEuler
1、 安装openEuler 虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件,如果需要安装最新版本,建议使用后者。当前WSL只支持OpenEuler 20.03。 1.1 WSL openEuler WSL的安装都是程序员的必备技能了,…...

Apple - Framework Programming Guide
本文翻译自:Framework Programming Guide(更新日期:2013-09-17 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183i 文章目录 一、框架编程指南简介…...

R可视化:ggpubr包学习
欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者 Xiao hong书:生信学习者 知hu:生信学习者 CDSN:生信学习者2 介绍 ggpubr是我经常会用到的R包,它傻瓜式的画图方式对很多初次接触R绘图的人来…...

优化Spring Boot项目启动时间:详解与实践
目录 引言了解Spring Boot框架启动机制常见启动瓶颈分析优化策略 禁用不必要的自动配置使用Profile进行开发和生产环境区分精简依赖延迟加载Bean并行初始化Bean缓存数据源连接优化Spring Data JPA使用Spring Boot DevTools 通过性能测试工具分析和优化实战示例:一个…...

Android如何简单快速实现RecycleView的拖动重排序功能
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 要实现这个拖动重排序功能,主要是用到了RecycleView的ItemTouchHelper类 首先是定义一个接口 interface ItemTouchHelperAdapter …...

LabVIEW利用旋转编码器脉冲触发数据采集
利用旋转编码器发出的脉冲控制数据采集,可以采用硬件触发方式,以确保每个脉冲都能触发一次数据采集。本文提供了详细的解决方案,包括硬件连接、LabVIEW编程和触发设置,确保数据采集的准确性和实时性。 一、硬件连接 1. 旋转编码…...

Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
作者:刘军 作为一款 rpc 框架,Dubbo 的优势是后端服务的高性能的通信、面向接口的易用性,而它带来的弊端则是 rpc 接口的测试与前端流量接入成本较高,我们需要专门的工具或协议转换才能实现后端服务调用。这个现状在 Dubbo3 中得…...

我在高职教STM32——GPIO入门之蜂鸣器
大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就…...

STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建 文章目录 STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建功能与作用典型工作流程 1. 硬件原理图介绍2. STM32 CubeMX工程搭建2.1 创建工程2.2 系统配置2.3 USART串口配…...

如果搜索一定超时,如何用dp来以空间换时间
E - Alphabet Tiles (atcoder.jp) 题目大意:1到k长度的字符串时,在A-Z给定数量下,搭配出多少种不同的字符串 思路 排列组合,会死人的 暴搜:可以解决,但是时间太长 dp:考虑前 i 个字母&…...

MySQL常见的命令
MySQL常见的命令 查看数据库(注意添加分号) show databases;进入到某个库 use 库; 例如:进入test use test;显示表格 show tables;直接展示某个库里面的表 show tables from 库; 例如:展示mysql中的表格 show tabl…...

11 类型泛化
11 类型泛化 1、函数模版1.1 前言1.2 函数模版1.3 隐式推断类型实参1.4 函数模板重载1.5 函数模板类型形参的默认类型(C11标准) 2、类模版2.1 类模板的成员函数延迟实例化2.2 类模板的静态成员2.3 类模板的递归实例化2.4 类模板类型形参缺省值 3、类模板…...

UE4_后期_ben_模糊和锐化滤镜
学习笔记,不喜勿喷,侵权立删,祝愿生活越来越好! 本篇教程主要介绍后期处理的简单模糊和锐化滤镜效果,学习之前首先要回顾下上节课介绍的屏幕扭曲效果: 这是全屏效果,然后又介绍了几种蒙版&#…...

Spring Boot中Excel的导入导出的实现之Apache POI框架使用教程
文章目录 前言一、Apache POI 是什么?二、使用 Apache POI 实现 Excel 的导入和导出① 导入 Excel1. 添加依赖2. 编写导入逻辑3. 在 Controller 中处理上传请求 ② 导出 Excel1. 添加依赖2. 编写导出逻辑3. 在 Controller 中处理导出请求 总结 前言 在 Spring Boot …...

CentOS搭建kubernetes集群详细过程(yum安装方式)
kubernetes集群搭建详细过程(yum安装方式) Kubernetes,也被称为K8s,是一个多功能的容器管理工具,它不仅能够协调和调度容器的部署,而且还能监控容器的健康状况并自动修复常见问题。这个平台是在谷歌十多年…...

Java 面试题:Java 的 Exception 和 Error 有什么区别?
在Java编程中,异常处理是确保程序稳健性和可靠性的重要机制。Java提供了一套完善的异常处理框架,通过捕获和处理异常,开发者可以有效地应对程序运行时可能出现的各种问题。在这一框架中,Exception和Error是两个核心概念࿰…...

在Vue 3中,el-select循环el-option的常见踩坑点,value值绑定对象类型?选中效果不准确?
在Vue 3中,el-select 组件是来自 Element Plus UI 库的一部分。 如果你想要设置默认选中的选项,你可以使用 v-model 来绑定选中的值。如果你想要在某个时刻让某个选项显示为已选中,可以设置对应的值到 v-model 绑定的数据。 <template>…...

Qt实现单例模式:Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS
目录 1.引言 2.了解Q_GLOBAL_STATIC 3.了解Q_GLOBAL_STATIC_WITH_ARGS 4.实现原理 4.1.对象的创建 4.2.QGlobalStatic 4.3.宏定义实现 4.4.注意事项 5.总结 1.引言 设计模式之单例模式-CSDN博客 所谓的全局静态对象,大多是在单例类中所见,在之前…...

通过nginx转发后应用偶发502bad gateway
序言 学习了一些东西,如何才是真正自己能用的呢?好像就是看自己的潜意识的反应,例如解决了一个问题,那么下次再碰到类似的问题,能直接下意识的去找到对应的信息,从而解决,而不是和第一次碰到一样…...

linux中如何进行yum源的挂载
linux中如何进行yum源的挂载 1.首先创建目录[rootserver /]# mkdir /rhel92.使用mount命令进行、dev/cdrom/的镜像文件进行挂载[rootserver /]# mount /dev/cdrom /rhel9/ 注意:此时设立的是临时命令。重启后则失效,若想在下次开启后仍然挂载&a…...

ffmpeg的部署踩坑及简单使用方式
ffmpeg的使用方式有以下几种: 使用原生安装包 直接在ffmpeg官网上下载安装该软件,加入到环境变量中就可以使用了 优点:简单,灵活,代码中也不用添加其他第三方的包 缺点:需要手动安装ffmpeg,这点比较麻烦 部署-windows 在windows环境下,有时就算加入到了环境变量,…...

misc刷题记录2[陇剑杯 2021]
[陇剑杯 2021]webshell (1)单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 黑客登录系统使用的密码是_____________。得到的flag请使用NSSCTF{}格式提交。 这里我的思路是,既然要选择的时间段是黑客登录网站以后&…...

AI发展面临的问题? —— AI对创造的重新定义
一、AI的问题描述 AI与数据安全问题:随着AI技术的发展和应用,数据安全问题日益突出。AI模型训练依赖于大量数据,而这些数据中可能包含个人隐私、商业秘密等敏感信息。如果数据在采集、存储、使用过程中处理不当,可能导致数据泄露或…...

k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
文章目录 OpenKruise简介OpenKruise来源OpenKruise是什么?核心组件有什么?有什么特性和优势?适用于什么场景? 什么是OpenKruise的原地升级原地升级的关键特性使用原地升级的组件原地升级的工作原理 应用环境一、OpenKruise部署1.安…...

上海亚商投顾:沪指缩量调整 PCB概念股持续爆发
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 大小指数昨日走势分化,沪指全天震荡调整,创业板指午后涨超1%。消费电子板块全天强势&a…...

QT属性系统,简单属性功能快速实现 QT属性的简单理解 属性学习如此简单 一文就能读懂QT属性 QT属性最简单的学习
4.4 属性系统 Qt 元对象系统最主要的功能是实现信号和槽机制,当然也有其他功能,就是支持属性系统。有些高级语言通过编译器的 __property 或者 [property] 等关键字实现属性系统,用于提供对成员变量的访问权限,Qt 则通过自己的元对…...

【IEEE出版丨EI检索】2024新型电力系统与电力电子国际会议(NPSPE 2024)
2024新型电力系统与电力电子国际会议(NPSPE 2024)将于8月16日至18日在中国大连举行,本届大会致力于为相关领域的专家和学者提供一个探讨行业热点问题,促进科技进步,增加科研合作的平台。本届大会涵盖新型电力系统和电力…...

【Netty】nio阻塞非阻塞Selector
阻塞VS非阻塞 阻塞 阻塞模式下,相关方法都会导致线程暂停。 ServerSocketChannel.accept() 会在没有建立连接的时候让线程暂停 SocketChannel.read()会在没有数据的时候让线程暂停。 阻塞的表现就是线程暂停了,暂停期间不会占用CPU,但线程…...

ES 操作
1、删除索引的所有记录 curl -X POST "localhost:9200/<index-name>/_delete_by_query" -H Content-Type: application/json -d {"query": {"match_all": {}} }POST /content_erp_nlp_help/_delete_by_query { "query": { &quo…...