【机器学习】《机器学习建模基础》笔记

文章目录

  • 单元0 前言
  • 单元1 数学建模与机器学习
    • 学习目标
    • (一)什么是模型
    • (二)数学模型的分类
    • (三)数学建模的一般步骤
    • (四)机器学习的概念
    • (五)机器学习的分类
    • (六)机器学习的算法
    • (七)机器学习的步骤
    • (八)机器学习三要素
  • 单元2 Python安装和编程基础
    • 学习目标
    • (一)Python支持许多机器学习工具库
    • (二)Anaconda
    • (三)Jupyter Notebook
    • (四)PyCharm
    • (五)安装
    • (六)基本数据类型
    • (七)流程控制语句
    • (八)习题:输入年月日,判断这一天是这一年的第几天
  • 单元3 Python常用工具包
    • 学习目标
    • (一)NumPy
    • (二)查看数组的数据类型使用dtype
    • (三)特定函数创建规则型数组
    • (四)数组的运算
    • (五)数组索引与切片
    • (六)数组的矩阵操作
    • (七)数组的形状操作
    • (八)NumPy数组的统计分析功能

【我选择这本书的理由】
这本书比较简单,案例是常见的经典案例,算法也是最基本的。还有就是数据集比较好获取,有些甚至是三方包里面自带的。
感觉对初学者比较友好。
【说明】
本笔记的结构框架与书中内容并不完全一致,依据个人兴趣及理解等做了筛选。有些知识点并不连贯,只是按条进行简单记录。
前面理论比较多,虽然简单基础,但我觉得还是有必要梳理一下,让思路更清晰。
单元2开始有代码,单元5开始才有案例。

单元0 前言

作者给出教学建议:共64学时,也就是说,一个星期就能学完啦~
在这里插入图片描述

单元1 数学建模与机器学习

学习目标

【知识目标】
1、掌握数学模型的概念和建模步骤
2、了解机器学习的概念和算法
【能力目标】
能够对常见问题进行简单的数学建模

(一)什么是模型

1、模型是相对于原型而言的。
所谓原型,就是客观世界中存在的现实对象、实际问题、研究对象和系统。
而模型是根据实物按比例、生态或其他特征制成的与实物相似的一种物体,模型是原型的替代品。
2、模型分为物理模型和数学模型。
物理模型是指对原型按照保留主要特征、设计次要特征……比如飞机模型、火箭模型……(不写了哈,就是乐高好吧。。反正物理模型与机器学习无关)
数学模型是用数学语言对原型进行表示的数学公式、图形或算法等形式,它是真是系统的一种抽象。
数学模型是分析、设计、预报或预测、控制实际系统的基础。
一般来说,数学模型是指用字母、数字和其他数学符号构成的等式或不等式,或用图表、图像、框图、数理逻辑等来描述系统的特征及其内部或与外部联系的模型。
数学模型的理解示意图:
数学模型的理解示意图
假设输入数据是x,输出结果是y,那中间的模型就是一个x和y之间的方程,当然,这只是一种片面的解释,但有助于理解模型是什么。
3、模型由结构和参数两部分构成。结构一般是根据人的理解和对事物的认识而选择或创建的,参数是通过算法根据样本数据逐步确定的,确定参数的过程叫做训练。
我的理解结构就是选择什么模型;不同的模型结构不一样,里面的x、y以及方程的解(也就是参数)就不同。
4、机器学习算法中的深度学习,实际上就是增加了结点(又称为算子,代表一个操作,一般用来表示施加的数字运算,也可以表示数据输入的起点以及输出的终点)的层数和个数,从而增加了模型的复杂度。

(二)数学模型的分类

在这里插入图片描述
这里了解即可。我感觉说的不是很对,黑白灰箱那里。等学习深入以后再验证吧。反正这里不是重要的知识点。
为什么不用脑图?不喜欢看,乱。。

(三)数学建模的一般步骤

数学建模:问题定义 ==> 数学模型 的过程。
在这里插入图片描述
懒得自己画了,直接上图片。
【第1步】模型准备
了解问题的实际背景,明确建模目的 ==> 搜集必需的信息(如数据)=> 尽量弄清研究对象的主要特征
【第2步】模型假设
根据对象的特征和建模目的,抓住问题本质,忽略次要因素 => 对问题进行必要的、合理的简化假设
【第3步】模型构成
根据所做的假设,用数学语言、符号描述对象的内在规律,建立包含常量、变量等的数学模型,如优化模型、微分方程模型等。
建立数学模型是为了让更多人明了并加以应用,因此尽量采用简单的数学工具。
【第4步】模型求解
可以采用解方程、画图形、优化方法、逻辑运算、数值运算等各种传统的和近代的数学方法,特别是数学软件和计算机技术。
【第5步】模型分析
对结果进行分析,如结果的误差分析、统计分析、模型对数据的灵敏性分析、对假设的强健性分析等。
【第6步】模型检验
将求解和分析结果返回到实际问题,与实际的现象、数据比较,检验模型的合理性和适用性。
如果结果与实际不符,问题常常出现在模型假设上,应该修改、补充假设,重新建模(图中虚线部分)。
直到检验结果获得某种程度上的满意为止。
【第7步】模型应用
用建立的模型解决实际问题。

(四)机器学习的概念

1、人工智能的应用范围包括计算机科学、金融贸易、医疗、交通、农业、服务业等行业。
其中,机器学习是解决人工智能问题的主要技术,在人工智能体系中处于基础与核心的地位。它广泛应用与机器视觉、语音识别、自然语言处理、数据挖掘等领域。
2、通俗来讲,机器学习是让计算机通过模拟人类的学习行为,来获取新的知识和技能,重新组织已有的知识结构,以不断改善自身智能。(这个说法我不喜欢……感觉又笼统又不准确)
比如在无人驾驶汽车系统中,机器学习的任务是根据路况确定驾驶方式,遇到红灯时刹车、遇到行人时避让,学习的效果用事故发生概率度量。经验就是人类大量的驾驶数据。从这些数据中,机器学习算法能提取出各种路况下人类正确的驾驶方式,从而在无人驾驶模式下根据学习的驾驶方式来操纵汽车。
==>机器学习是对已知的样本数据(或称为经验数据)加以提炼,用数学模型完成对数据进行预测和决策的任务。
在机器学习中,用于学习的样本数据称为训练数据,完成任务的方法称为模型。
3、机器学习应用
停车场出入口的车牌识别、电商网站的商品推荐、新闻头条的新闻推荐、人脸识别、语音输入、人机对弈等。
在这里插入图片描述

(五)机器学习的分类

按训练方式不同,分为监督学习、无监督学习和强化学习。
在这里插入图片描述
1、监督学习:监督学习的样本数据都带有相应的特征组和标签。监督学习的任务就是根据对象的特征组对标签的取值进行预测推断。
根据样本数据所带标签值的特性,可以将监督学习分为两类:
1)分类问题:标签只取有限个可能值,如垃圾邮件识别。
2)回归问题:标签取值于某个区间的连续实数,如房价预测问题。
2、无监督学习:无监督学习的样本数据不含标签。学习的任务通常是对数据本身的模式进行识别与分类。
无监督学习的典型代表:
1)聚类问题:聚类问题与监督学习中的分类问题类似,也是将数据按模式归类,只不过聚类问题中的类别是未知的,分类问题的类别是已知的。如个性化新闻推送。
2)降维问题:在机器学习中,每个样本的特征组可以用一个向量表示。在许多应用中特征组维度相当高,甚至达到百万级。众多的特征增加了求解问题的难度,因此需要考虑对特征组进行降维处理,即用低维度的向量表示原始的高维特征。
3、强化学习:比如训练小狗坐这个动作,当小狗动作正确时,给它一把狗粮作为奖励,当它的动作错误时就不给狗粮奖励。那么时间一长,小狗就学会了坐这个动作,这个想学习过程就是强化学习。
强化学习的任务是根据对环境的探索制定应对环境变化的策略。其机制是动作发生后观察结果,根据上一个结果做出下一个动作。
它模拟了生物探索环境与积累经验的过程。
应用:博弈策略、无人驾驶、机器人控制等诸多前沿人工智能领域。

(六)机器学习的算法

在这里插入图片描述

(七)机器学习的步骤

在这里插入图片描述
1、问题抽象:现实问题抽象成数学问题。
具体:明确可以获得什么样的数据,目标是一个分类、回归还是聚类问题。如果都不是的话,是否可以将其归类为其中的某类问题。
2、获取数据
包括获取原始数据、从原始数据中经过特征工程提取训练数据、测试数据。
3、特征工程
包括从原始数据中进行特征构建、特征提取、特征选择。
4、模型训练、诊断、调优
模型诊断中至关重要的是判断过拟合、欠拟合,常见的方法是绘制学习曲线,交叉验证。
增加训练的数据量、降低模型复杂度 ==> 降低过拟合
提高特征的数量和质量、增加模型复杂度 = => 防止欠拟合
5、模型验证、误差分析
通过测试数据,验证模型的有效性,观察误差样本,分析误差产生的原因,往往能找到提升算法性能的突破点。
6、模型融合
提升算法的准确度,主要方法是将多个模型进行融合。
在机器学习比赛中,模型融合非常常见,基本都能使得模型效果有一定的提升。
7、上线运行
模型在线上运行的效果直接决定模型的成败。
不仅包括模型的准确程度、误差等情况,还包括运行的速度、资源的消耗程度、稳定性是否可接受。

(八)机器学习三要素

数据、算法、模型。
在这里插入图片描述
1、数据
2、算法:指的是线性回归、逻辑回归、朴素贝叶斯、支持向量机等算法。
从本质上说,这些算法都是由一些公式组成的。
比如一元线性回归方程y=ax+b就是线性回归最简单的形式。在这个公式中,x、y分别是自变量和因变量,在训练模型时输入训练数据实际上就是输入这些变量,然后通过计算将参数a、b计算出来,这样模型就训练好了。如果a=2,b=1,那么模型就是y=2x+1,利用这个模型就可以实现基本的预测功能了,而生成这个模型的过程就是数据建模的过程。现在有一个新的数据点(5,y),将x=5输入这个模型预测出y,结果是11。
点评:这个例子非常好,虽然简单,却也直观的告诉初学者,所谓算法,其实就是一个公式,或者一些公式的组合。
我们通过大量的x、y、z…等等变量(也就是训练集里面的特征值、目标值),计算出公式里面的系数a、b、c、d…等(也就是参数),然后把这些参数套到x、y、z的公式里面,就得到了模型结果(就是训练出来的模型),也就是一个系数是已知常数公式或者一些公式的组合。
然后我们用自变量(假设x、y是自变量,z是因变量)x、y套入到刚才算好a、b、c、d等系数的这个 公式/公式组合 里面,得到新的因变量z的值,看看与实际的z值接不接近(这个过程就是测试模型)。
3、模型:概括来说,模型是一个从输入到输出的函数,算法则是利用样本生成模型的方法,学习(也可称为训练)则是利用样本通过算法生成模型的过程。
算法和模型的区别是什么啊? 我理解的是,这个公式里面系数的求解过程是算法。当系数求出来了,公式也就确定下来了,然后这个模型也就确定了。 算法就是求解公式/函数的过程,模型就是求出来的这个公式/函数。 比如我们要做一个公式,先加10再减5再取绝对值,这个加、减、取绝对值,都是算法,最后我们通过这个算法组合,得到一个或几个公式,这个结果(一个或几个公式)就是模型。 (不知道我理解的对不对)

单元2 Python安装和编程基础

目前人工智能相关的程序通常使用python来编写的,原因?
1、python是一门解释型脚本语言,入门简单、易上手。
2、phthon开发效率高,有非常强大的第三方库,基本上可以实现计算机能实现的任何功能。在这些库的基础上进行开发,可以大大降低开发周期。==>站在巨人肩膀上

学习目标

【知识目标】
1、掌握python软件的安装方法
2、掌握python编程基础语法
【能力目标】
1、能够独立安装python软件和用到的工具包
2、能够使用Jupyter Notebook或PyCharm编写案例的代码

(一)Python支持许多机器学习工具库

例如:
在这里插入图片描述

(二)Anaconda

1、Anaconda是Python的一个集成管理工具,它把Python中有关数据计算分析的包都集成在一起,里面包含了720多个数据科学相关的开源包,在数据可视化、机器学习、深度学习等方面都有涉及。
2、它同时也是个环境管理器,解决了多版本Python并存、切换的问题。
3、还有个巨大优势:即,有偏数据分析风格的Spyder集成环境以及交互很好的Jupyter Notebook应用。
==> Anaconda优点总结:省时省心、分析利器

(三)Jupyter Notebook

本质是一个Web应用程序,便于创建和共享文字化程序文档,支持实时代码、数学方程、可视化和Markdown。
【优点】
1、极其适合数据分析:运行即可在cell下得到结果。
2、支持多语言:只要安装对应程序语言的核(kernel),就可使用该语言。
3、分享便捷:支持以网页的形式分享,也支持导出成HTML、Markdown、PDF等多种格式的文档。
4、远程运行:在任何地点都可以通过网络连接远程服务器来实现运算。
5、交互式展现:不仅可以输出图片、视频、数学公式,还可以呈现一些互动的可视化内容,需要交互式插件(Interactive Widgets)来支持。
【缺点】
1、不太适合做工程。
2、不方便调试。

(四)PyCharm

带有一整套可以帮助用户在使用Python语言开发时提高效率的工具。
如:调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。
此外,该IDE还提供了一些高级功能,以用于支持Django框架下的专业Web开发。
IDE,全称“Integrated Development Environment”,中文意思为“集成开发环境”。 集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。 IDE一般包括代码编辑器、编译器、调试器和图形用户界面等工具,可以独立运行,也可以和其它程序并用。 常见的IDE如微软的Visual Studio系列、Borland的C++ Builder、Delphi系列等。

(五)安装

书中演示了Python、Anaconda、PyCharm、Jupyter Notebook,挤一挤Python扩展包的安装方法和安装过程。略。
关于Anaconda的安装可参考本人另一篇博客:
【机器学习】anaconda安装过程
【安装python扩展包】有三种方法
1、直接复制
针对单文件模块,可直接把文件复制到Python安装目录下的Lib文件夹下($python_dir/Lib)
2、使用pip工具
3、使用源文件
在Github上下载对应的压缩包,解压缩之后,文件夹下会有个setup.py文件,从命令行窗口进入该文件夹,输入命令:

python setup.py install

即可完成扩展包安装。

(六)基本数据类型

Python有5个标准的数据类型:Numbers(数字)、Sting(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)。
可以用type()查看变量类型。
在这里插入图片描述
1、Numbers(数字)
在这里插入图片描述
2、String(字符串)
1)Python中可以使用单引号、双引号、或者三个引号来创建字符串。
2)字符串切片:可以使用变量[头下标:尾下标:步长]来截取相应的字符串。其中,默认步长为1,同时默认头下标为0、尾下标为字符串长度。
我理解这里所说的下标,是索引?
当步长为负数时,默认头下标为字符串长度-1,且默认尾下标为none(尾下标不是0,否则不包含第0个字符;尾下标也不是-1,否则指的是最后一个字符)。
==>当步长为负数的时候,就是倒着来。从后往前截取。
在这里插入图片描述

s = 'I love python'
s[2:4]
# 取下标为偶数的字符 # 下标为0,2,4,……
s1 = '''hello,        
my dear''' 
s1[::2]
# 取字符串逆序
s2 = '''hello,        
my dear''' 
s2[::-1]
# 求字符串长度
s3 = '''hello,        
my dear'''
len(s3)

3、List(列表)
把都好风格的不同数据项用方括号括起来即是列表。其数据项不需要具有相同的类型,切片操作和字符串一致。
在这里插入图片描述
【常用的列表操作方法】

  • list.append(obj):在列表末尾添加新的对象
  • list.extend(other_list):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
  • list.index(obj):从列表中找出某个对象第一次匹配的索引位置
  • list.insert(index, obj):将对象插入列表中的指定位置
  • list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  • list.remove(obj):移除列表中某个值的第一个匹配项
  • list.sort([func]):对原列表进行排序 在这里插入图片描述
    在这里插入图片描述
    列表里面,虽然可以有各种数据类型,但排序的时候要注意他们是否可以直接比较大小。
    4、Tupple(元组)
    一般情况下,用小括号将逗号分隔的不同数据项括起来即为元组,但是小括号可以省略。
    可以将元组看作特殊的列表,因为元组不能进行修改。
    在这里插入图片描述
    5、Dictionary(字典)
    字典由键和对应值成对组成,每个键与值用冒号“:”隔开,每对用逗号分隔,整体放在花括号“{}”中。
    字典也被称作关联数组或哈希表。
    1)键必须独一无二,值不必
    2)只可以是任意数据类型,但必须是不可变的,也就是只能是字符串、数值或元组。
    在这里插入图片描述

(七)流程控制语句

编程语言中的流程控制语句分为顺序语句、分支语句和循环语句。
1、顺序语句:不需要单独的关键字来控制,就是逐行执行。
2、条件分支语句是通过判断条件的执行结果(true/false)来决定执行哪个分支的代码块,当判断结果为true则执行true分支的语句,否则执行false分支的语句(可以没有false分支语句)。
3、循环语句:用于多次执行一个代码语言或代码块,Python中提供for循环和while循环。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(八)习题:输入年月日,判断这一天是这一年的第几天

(代码来自文心一言)

def is_leap_year(year):  """判断是否是闰年"""  return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) 
# 判断是否是闰年,是返回True,不是返回False。 def day_of_year(year, month, day):  """计算这一天是一年中的第几天"""  month_days = [31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  return sum(month_days[:month - 1]) + day  
# 2月份的天数28与True相加等于29,与False相加等于28.
# 返回值是输入月份的上一个月对应的列表里面元素之和(也就是截止到上个月的天数),再加上输入的“日”(也就是当月的天数)。# 示例使用  
year = int(input("请输入年份: "))  
month = int(input("请输入月份: "))  
day = int(input("请输入日期: "))  # 调用函数并打印结果  
day_number = day_of_year(year, month, day)  
print(f"{year}{month}{day}日是一年中的第{day_number}天")

单元3 Python常用工具包

学习目标

【知识目标】
1、掌握NumPy库中数组的运算、随机数处理和数据统计分析方法
2、掌握Pandas库中Series序列和DataFrame数据框的使用方法
3、掌握Matplotlib库中散点图、曲线图、直方图、柱状图、饼图等的绘制方法
4、学习Sklearn中数据集、算法的调用方法
【能力目标】
1、能够调用NumPy库方法对模型数据进行计算处理
2、能够使用Series序列和DataFrame对模型数据进行统计分析
3、能够调用Matplotlib库设计绘图布局,进行图形绘制
4、能够调用Sklearn中机器学习算法进行模型训练和数据预测

(一)NumPy

1、NumPy是Numerical Python的缩写。
2、提供了快速计算数组的例程,包括数学运算、逻辑运算、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。
3、NumPy的核心是数组(arrays),具体来说是多维数组(n-dimensional arrays)。
NumPy就是对这些数组进行创建、删除、运算等操作的一个程序包。

(二)查看数组的数据类型使用dtype

在这里插入图片描述
NumPy中最常用的数据类型是bool、int32、int64、float16、float32等。

(三)特定函数创建规则型数组

在这里插入图片描述

(四)数组的运算

在这里插入图片描述

(五)数组索引与切片

在这里插入图片描述

(六)数组的矩阵操作

用mat()函数创建矩阵,dot()函数进行矩阵相乘,X.T表示矩阵X的转置。
NumPy线性代数库linalg中的inv函数可用于方阵求逆。
在这里插入图片描述
在NumPy中,np.mat()创建的矩阵Matrix必须是二维的,但是np.array()可以是多维的,Matrix是arrays的一个分支,包含于arrays。所以矩阵拥有数组的所有特性。

(七)数组的形状操作

在这里插入图片描述

(八)NumPy数组的统计分析功能

在这里插入图片描述
对二位数组来说,既可以对所有元素进行求和等统计,也可以对列或行进行统计,此时就需要额外再设置一个参数axis,表示按照第几个维度进行计算。
在这里插入图片描述

哎呀,理论还挺多的,虽然基础,还是觉得有必要写一写,进度好慢……

后面内容敬请期待……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】友元--最全解析(友元是什么?我们应该如何理解友元?友元可以应用在那些场景?)

目录 一、前言 二、友元是什么&#xff1f; 三、友元的感性理解和分类 &#x1f95d;友元的感性理解 &#x1f34b;友元的三种分类 ✨友元 --- 全局函数 ✨友元 --- 成员函数 ✨友元 --- 类 四、友元函数的应用场景 &#x1f34d;操作符重载 :"<<" 与…

Oracle 可传输表空间(Transportable Tablespace)

在数据归档、备份、测试等场景&#xff0c;我们经常需要将数据从一个系统移动到另一个系统&#xff0c;一个较常用的方案是数据的导出/导入&#xff08;export/import&#xff09;&#xff0c;但是在数据量较大的场景&#xff0c;此方案可能比较耗时。而可传输表空间是一种以文…

在Linux系统中搜索当前路径及其子目录下所有PDF文件中是否包含特定字符串

目录标题 方法一&#xff1a;pdfgrep方法二&#xff1a;使用find和xargs与pdftotext&#xff08;将PDF转换为文本&#xff09;组合&#xff0c;然后用grep搜索 方法一&#xff1a;pdfgrep pdfgrep -ri "rockchip" .方法二&#xff1a;使用find和xargs与pdftotext&am…

消息队列选型(RabbitMq、RocketMq、Kafaka)

文章目录 前言RabbitMq优点缺点 RocketMq优点缺点 Kafaka优点缺点 总结 前言 当引入消息队列时&#xff0c;常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而&#xff0c;近年来&#xff0c;ActiveMQ的活跃度已经下降&#xff0c;很多公司已经不再使用这款消息队列中…

wangEditor集成Word导入(富文本编辑器)

wangEditor集成Word导入(富文本编辑器)&#xff0c;wangEditor – 支持word上传的富文本编辑器&#xff0c;WANGEDITOR实现WORD图片自动转存&#xff0c;JAVA中将WORD转换为HTML导入到WANGEDITOR编辑器中&#xff08;解决图片问题&#xff0c;样式&#xff0c;非常完美&#xf…

视频怎么做成二维码分享?微信扫码播放视频的操作技巧

随着互联网的快速发展&#xff0c;现在大家喜欢通过扫描二维码的方式来获取信息&#xff0c;比如现在通过扫码看视频就是很常见的一种方式。生成二维码的方式可以实现内容传递的简单化&#xff0c;而且可以有效的降低制作者的成本&#xff0c;提升用户的体验效果。 现在使用比…

【matlab 代码的python复现】 Matlab实现的滤波器设计实现与Python 的库函数相同实现Scipy

实现一个IIR滤波器的设计 背景 Matlab 设计的滤波器通常封装过于完整,虽然在DSP中能够实现更多功能的滤波器设计但是很难实现Python端口的实现。 我们以一段原始的生物电信号EEG信号进行处理。 EEG信号 1.信号获取 EEG信号通常通过头皮电极,经过多通道采样芯片采样,将获…

解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

一. 解决 0x803F7001在运行Microsoft Windows非核心版本的计算机错误 首先&#xff0c;按下winR打开"运行",输入 regedit 后回车&#xff0c;打开注册表。   然后再注册表下输入地址HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProt…

代码随想录算法训练营DAY28|C++回溯算法Part.4|93.复原IP地址、78.子集、90.子集II

文章目录 93.复原IP地址思路确定非法的范围树形结构 伪代码 78.子集思路伪代码实现CPP代码 90.子集II思路CPP代码用used去重的办法用set去重的版本不使用used数组、set的版本 93.复原IP地址 力扣题目链接 文章讲解&#xff1a;93.复原IP地址 视频讲解&#xff1a;回溯算法如何分…

docker容器技术篇:安装与配置flannel

Docker安装与配置flannel flannel是什么&#xff1f; Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务&#xff0c;简单来说&#xff0c;它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址&#xff1b;通俗的将就是通过flannel接管dock…

粤嵌—2024/4/22—两数之和 || - 输入有序数组

代码实现&#xff1a; 双指针 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* twoSum(int *numbers, int numbersSize, int target, int *returnSize) {int *res malloc(sizeof(int) * 2);*returnSize 2;int i 0, j numbersSize - 1…

C++学习进阶版(二):与文件相关的函数用法

目录 1、读取文件的指定行 &#xff08;1&#xff09;main函数中直接读 &#xff08;2&#xff09;封装成函数 ① 无返回值类型 ② 直接返回读取的内容 2、求文件的行数 3、文件内容读取成一个字符串 1、读取文件的指定行 &#xff08;1&#xff09;main函数中直接读 …

如何选择全链路监控系统?CAT、SkyWalking、Pinpoint哪个更适合?

如果服务器上没有应用还会造成硬件瓶颈吗&#xff1f;显然是不会的&#xff0c;呈现出来的硬件瓶颈绝大多数是表象问题&#xff0c;我们往往需要在系统应用上寻找问题的根因。而寻找系统问题的根因&#xff0c;对于系统链路监控也是必不可少的&#xff0c; 前面我们也写了几篇…

光伏无人机吊装技术的优势及应用前景

近年来随着政府对光伏业务的不断宣传和推进&#xff0c;不少区域因地制宜引进了光伏发电项目&#xff0c;但是部分区域由于交通不便利&#xff0c;给材料运输工作带来了巨大的考验。目前&#xff0c;无人机吊装技术运输材料解决这一问题。 今天带大家看下光伏无人机吊装技术有…

STM32G030F6P6TR ST意法

STM32G030F6P6TR是ST(意法半导体)一款基于高性能ArmCortex-M032位RISC内核&#xff0c;工作频率高达64MHz的32位MCU微控制器。代理销售ST(意法半导体)全系列IC电子元器件-中芯巨能为您提供STM32G030F6P6TR(ST 32位MCU)引脚图及中文参数介绍等内容。 STM32G030F6P6TR的中文参数 …

Linux进程和任务管理

目录 一.程序和进程的关系 程序 进程 线程 线程与进程的区别 二.查看进程信息ps 方法一 常用选项 方法二 三.TOP动态查看进程信息 进程信息区各列解释 top常用命令 系统查看命令总结 查看进程信息pgrep 查看进程树pstree 四.控制进程 进程的启动方式 进程的前…

Java面试八股之重写一个对象的equals方法,需要考虑哪些问题

重写一个对象的equals方法&#xff0c;需要考虑哪些问题 遵守equals()约定&#xff1a; 重写equals()方法应遵循Object类中定义的equals()方法约定&#xff0c;即实现自反性&#xff08;x.equals(x)始终为true&#xff09;、对称性&#xff08;若x.equals(y)为true&#xff0…

【电控笔记5.5】psms规格参数

规格参数 转矩常数Kt与反电动势常数Ke Kt:没安培电流产生多少转矩量 Ke或Kb:每单位转速产生的反电动势电压 反电动势是梯形波,Kt=Ke;正弦波则不相等 q轴电流与反电动势都领先转子磁通链90

谷粒商城学习笔记

1.系统架构 2.环境准备 21.安装Linux 1.VirtualBox: https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe 2.安装 Vagrant 1).Vagrant 下载地址: https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi https://www…

7.Prism框架之对话框服务

文章目录 一. 目标二. 技能介绍① 什么是Dialog?② Prism中Dialog的实现方式③ Dialog使用案例一 (修改器)④ Dialog使用案例2(异常显示窗口) 一. 目标 1. 什么是Dialog?2. 传统的Dialog如何实现?3. Prism中Dialog实现方式4. 使用Dialog实现一个异常信息弹出框 二. 技能介…