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

集成学习之随机森林

目录

一、集成学习的含义

二、集成学习的代表

三、集成学习的应用

1、分类问题集成。(基学习器是分类模型)

2、回归问题集成。(基学习器是回归模型)

3、特征选取集成。

四、Bagging之随机森林

1、随机森林是有多个决策树,我们将他们构成出森林。

2、随机森林总共有四个特点:

(1)数据采样随机

(2)特征选取随机

(3)森林

(4)基分类器为决策树

3、随机森林的生成步骤

1、对原始数据集进行随机采样

2、每个基分类器获取不同的数据集,每个数据的的特征也是随机抽取的

3、将随机抽取的数据及特征传递给决策树进行训练

4、通过强分类器投票,选出性能指标占比最多的作为结果(例如结果中很多预测的是0,那么最终就会通过强分类器预测为0)

五、Bagging之随机森林的优缺点(集成学习的共有优点)

1、具有极高的准确率

2、随机性的引入,使得随机森林的抗噪声能力很强

3、随机性的引入,使得随机森林不容易过拟合

4、能够处理很高维度的数据,不用做特征选择

5、容易实现并行化计算

6、缺点

六、随机森林模型的简单使用

1、随机森林模型的参数


一、集成学习的含义

集成学习是将多个基学习器进行组合,来实现比单一学习器显著优越的学习性能。

这里的每个基学习器可以是任意机器学习的模型,可以是线性回归、逻辑回归、KNN、决策树等模型,基学习器可以使用单一模型组合,也可以使用多模型随机组合。

使用训练数据进行模型训练,然后将测试集的数据传入,选择结果。

二、集成学习的代表

.bagging方法:典型的是随机森林方法

.boosting方法:典型的Xgboost

.stacking方法:堆叠模型

三、集成学习的应用

1、分类问题集成。(基学习器是分类模型)

2、回归问题集成。(基学习器是回归模型)

3、特征选取集成。

(场景:当我们的数据集特别大时,就会有很多的特征,那么这些特征对分离结果的影响有多大,我们可以计算该特征与分类结果之间的相关系数来进行估量,在随机森林模型中可以对每个特征进行特征选取,它可以内部对每个特征量化一个指标,最终结果会选择尽可能多的相关性比较大的特征。)

所以集成学习之随机森林既可以做分类问题也可以做回归问题。

四、Bagging之随机森林

1、随机森林是有多个决策树,我们将他们构成出森林。

2、随机森林总共有四个特点:

(1)数据采样随机

假设我们有一个数据集,那么针对每一个基分类器,我们都会随机抽取一定比例(例如80%)的数据做为训练集,其余作为测试集,特别要注意,针对每一个基分类器都是随机抽取,这保证了我们的数据会被充分使用,同时随机抽取会最大程度的覆盖所有可能的情况。

(2)特征选取随机

针对同一个数据集,那么我们每次选取数据时,会随机抽取80%(这时认为根据实际情况设定的)的特征,那么对于每个数据集的特征选取会出现有的数据集抽到很差的特征那么该数据集展现的性能就会很差,如果抽取到的都是好的特征,那么模型的性能也会很好。

(3)森林

有多个决策树,所以称之为森林。

(4)基分类器为决策树

每个决策树学习的数据都是不同的。

3、随机森林的生成步骤

1、对原始数据集进行随机采样

2、每个基分类器获取不同的数据集,每个数据的的特征也是随机抽取的

3、将随机抽取的数据及特征传递给决策树进行训练

4、通过强分类器投票,选出性能指标占比最多的作为结果(例如结果中很多预测的是0,那么最终就会通过强分类器预测为0)

五、Bagging之随机森林的优缺点(集成学习的共有优点)

1、具有极高的准确率

2、随机性的引入,使得随机森林的抗噪声能力很强

数据的随机抽取会使得某些基分类器抽取到噪声数据,也会有抽取不到噪声数据的基分类器,因为噪声数据出现的概率占少数,所以在强分类器投票选择时,这些抽取到噪声的基分类器对我们最终分类结果的影响特别小,因此我们的抗噪声能力特别强。

3、随机性的引入,使得随机森林不容易过拟合

因为随机森林的结果是由多个决策树决定的,所以不容易出现过拟合,过拟合的表现是在训练集上表现得很好,但是在测试集上得效果很差,产生原因是由于受单一数据影响太大,而随机森林会根据多个结果共同决定基本不会出现过拟合得情况。

4、能够处理很高维度的数据,不用做特征选择

不用做特征选取的原因,很差的特征对决策树的影响很小,因为即使是很差的特征,我们每个基分类器抽取是随机的,不会有很多分类器抽到这个差的特征,所以对最终结果的影响不大,就不用去特意选择特征。

5、容易实现并行化计算

随机森林的结构是由多个基分类器构成,那么每个基分类器都可以部署在一个单独的服务器上,多个分类器可以放在多个服务器上,实现了多个分类器同时训练,并行计算。

6、缺点

1、当随机森林中的决策树的个数很多时,训练时需要的空间和时间会比较大。

2、随机森林模型还有许多不好解释的地方,有点像个黑盒模型。

六、随机森林模型的简单使用

1、随机森林模型的参数

class sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)

随机森林重要的一些参数:

1.n_estimators :(随机森林独有)

        随机森林中决策树的个数。

        在0.20版本中默认是10个决策树;

        在0.22版本中默认是100个决策树;

2. criterion :(同决策树)

节点分割依据,默认为基尼系数。

可选【entropy:信息增益】

3.max_depth:(同决策树)【重要】

        default=(None)设置决策树的最大深度,默认为None。

(1)数据少或者特征少的时候,可以不用管这个参数,按照默认的不限制生长即可

(2)如果数据比较多特征也比较多的情况下,可以限制这个参数,范围在10~100之间比较好

4.min_samples_split : (同决策树)【重要】

        这个值限制了子树继续划分的条件,如果某节点的样本数少于设定值,则不会再继续分裂。默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则建议增大这个值。

5.min_samples_leaf :(同决策树)【重要】

        这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。

 【叶是决策树的末端节点。 较小的叶子使模型更容易捕捉训练数据中的噪声。 一般来说,我更偏向于将最小叶子节点数目设置为大于50。在你自己的情况中,你应该尽量尝试多种叶子大小种类,以找到最优的那个。】

【比如,设定为50,此时,上一个节点(100个样本)进行分裂,分裂为两个节点,其中一个节点的样本数小于50个,那么这两个节点都会被剪枝】

6.min_weight_fraction_leaf : (同决策树)

        这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。【一般不需要注意】

7.max_features : (随机森林独有)【重要】

        随机森林允许单个决策树使用特征的最大数量。选择最适属性时划分的特征不能超过此值。

当为整数时,即最大特征数;当为小数时,训练集特征数*小数;if “auto”, then max_features=sqrt(n_features).If “sqrt”, then max_features=sqrt(n_features).If “log2”, then max_features=log2(n_features).If None, then max_features=n_features.

【增加max_features一般能提高模型的性能,因为在每个节点上,我们有更多的选择可以考虑。 然而,这未必完全是对的,因为它降低了单个树的多样性,而这正是随机森林独特的优点。 但是,可以肯定,你通过增加max_features会降低算法的速度。 因此,你需要适当的平衡和选择最佳max_features。】

8.max_leaf_nodes:(同决策树)

                通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。

【比如,一颗决策树,如果不加限制的话,可以分裂100个叶子节点,如果设置此参数等于50,那么最多可以分裂50个叶子节点】

9.min_impurity_split:(同决策树)

        这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。即为叶子节点 。一般不推荐改动默认值1e-7。

10.bootstrap=True(随机森林独有)

        是否有放回的采样,按默认,有放回采样

11. n_jobs=1:

        并行job个数。这个在是bagging训练过程中有重要作用,可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job。

2、代码简单实现

(1)导入必要的库

import pandas as pd

(2)数据读取及预处理

data=pd.read_csv('./data/spambase.csv')x=data.iloc[:,:-1]
y=data.iloc[:,-1]

3、数据集划分

from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test= \train_test_split(x,y,test_size=0.2,random_state=2)

4、模型导入训练

from sklearn.ensemble import RandomForestClassifierrf=RandomForestClassifier(n_estimators=100,max_features='auto',# max_leaf_nodes=50,random_state=4
)rf.fit(x_train,y_train)

5、模型效果预测

from sklearn import metrics# 自测
train_predicted=rf.predict(x_train)
print(metrics.classification_report(y_train,train_predicted))
# cm_plot(y_train,train_predicted)# 测试集test_predicted=rf.predict(x_test)
print(metrics.classification_report(y_test,test_predicted))
# cm_plot(y_test,test_predicted)

6、数据可视化

import matplotlib.pyplot as pltimportances=rf.feature_importances_
im=pd.DataFrame(importances,columns=['importances'])clos=data.columns
clos_1=clos.values
clos_2=clos_1.tolist()
clos=clos_2[0:-1]
im['clos']=closim=im.sort_values(by=['importances'],ascending=False)[:10]index=range(len(im))
plt.yticks(index,im.clos)
plt.barh(index,im['importances'])
plt.show()

7、最终效果

相关文章:

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。(基学习器是分类模型) 2、回归问题集成。(基学习器是回归模型) 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…...

【SpringBatch】03步骤对象 (Step)控制与执行流程设计

目录标题 六、步骤对象 Step6.1 步骤介绍6.2 简单Tasklet6.3 chunk居于块Tasklet**ChunkTasklet 泛型** 6.4 步骤监听器6.5 多步骤执行6.6 步骤控制6.6.1 条件分支控制-使用默认返回状态6.6.2 条件分支控制-使用自定义状态值 6.7 步骤状态6.8 流式步骤 六、步骤对象 Step 前面…...

走进Java:String字符串的基本使用

❀❀❀ 大佬求个关注吧~祝您开心每一天 ❀❀❀ 目录 一、什么是String 二、如何定义一个String 1. 用双引号定义 2. 通过构造函数定义 三、String中的一些常用方法 1 字符串比较 1.1 字符串使用 1.2 字符串使用equals() 1.3 使用 equalsIgnoreCase() 1.4 cpmpareTo…...

AI如何变革亚马逊广告投放?DeepBI的智能优化解析

在亚马逊平台上,广告投放的方式正经历着从人工精细化运营到AI自动化优化的深刻变革。传统的广告投放依赖人工操作,涉及海量数据分析、手动调价、竞价策略优化等环节,既耗时又易受人为因素影响。而AI驱动的智能投放系统,如DeepBI&a…...

小程序电子画册制作,用户体验为王!

家人们,现在小程序电子画册超火,不管是展示产品还是分享故事都超实用。但在小程序电子画册制作过程中,用户体验真的得好好考量!今天就和大家唠唠这其中的门道。 1、加载速度:快才是王道 打开小程序的瞬间&#xff0c…...

【商城实战(49)】解锁小程序端适配与优化,让商城飞起来

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配&#xf…...

英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析

【完整版】3月19日,黄仁勋Nvidia GTC 2025 主题演讲|英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面,广泛收集了…...

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…...

线性规划的基本解、基本可行解和可行解

在线性规划中,基本解、基本可行解和可行解是非常重要的概念,特别是在使用单纯形法求解时。下面详细解释这些概念,并说明如何计算它们。 1. 线性规划问题的标准形式 线性规划的标准形式为: 其中: A 是 mn 的矩阵&…...

【AVRCP】服务发现互操作性:CT 与 TG 的 SDP 协议契约解析

目录 一、服务发现的核心目标:能力画像对齐 二、控制器(CT)服务记录:控制能力的声明 2.1 必选字段:角色与协议的刚性契约 2.1.1 服务类标识(Service Class ID List) 2.1.2 协议描述列表&am…...

[从零开始学习JAVA] Stream流

前言: 本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda 匿名内部类 方法引用相…...

K8S学习之基础三十八:Kube-static-metrics监控

Kube-static-metrics监控 ​ kube-static-metrics组件可以通过监听apiserver生成有关资源对象的状态指标,比如Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以可以使用Prom…...

JAVA-多线程join()等待一个线程

引言:更多线程的认识可以看一篇博客: JAVA-Thread类实现多线程-CSDN博客 一、join()的作用 我们知道线程是随机调度执行的,但是有时候我们需要另一个任务完成了,我们才能继续,这个时候我们就可以使用join去等待线程结束…...

HashMap 常用方法

HashMap 常用方法 方法作用示例put(K key, V value)添加键值对map.put("apple", 10);get(Object key)获取指定键的值map.get("apple"); → 10remove(Object key)删除指定键的键值对map.remove("orange");containsKey(Object key)检查是否包含指…...

LogicFlow介绍

LogicFlow介绍 LogicFlow是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批流配置、机器人逻辑编排、无代码平…...

Docker搭建MySQL主从服务器

一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径:/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径: /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …...

计算机二级web易错点(4)-选择题

选项 A&#xff1a;<input type"radio"> 用于创建单选按钮&#xff0c;同一组单选按钮中只能选择一个选项&#xff0c;所以该选项不符合要求。选项 B&#xff1a;HTML 中没有 type"check" 这种类型&#xff0c;是错误的写法&#xff0c;不能产生复选…...

3.19学习总结

学习了Java中的面向对象的知识点 完成一道算法题&#xff0c;找树左下角的值&#xff0c;错误的以为左下角只能是最底层的左节点&#xff0c;但指的是最底层最左边的节点...

Swagger-告别手写文档

文章目录 1. 引言2. Swagger是什么&#xff1f;3. SpringBoot2.7.3集成Swagger4. 常见注解 1. 引言 在RESTful API开发中&#xff0c;维护准确、易读的接口文档是团队协作的核心挑战&#xff0c;通常接口文档分为离线的和实时的。离线的接口文档工具有 YAPI等&#xff0c;其中…...

LeetCode-回文数

原题链接&#xff1a;9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 首先我会想到的是&#xff0c;将这个数字转成字符串&#xff0c;然后通过前后指针判断是否相等&#xff0c;最终返回结果是否为回文数&#xff0c;时间复杂度&#xff1a;O(n)&#xff0c;空间复杂度&am…...

数据结构之链表(双链表)

目录 一、双向带头循环链表 概念 二、哨兵位的头节点 优点&#xff1a; 头节点的初始化 三、带头双向链表的实现 1.双链表的销毁 2.双链表的打印 3.双链表的尾插和头插 尾插&#xff1a; 头插&#xff1a; 4.双链表的尾删和头删 尾删&#xff1a; 头删&#xff1a; …...

硬件基础(5):(2)二极管分类

文章目录 &#x1f4cc; 二极管的分类与详细介绍1. **整流二极管&#xff08;Rectifier Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;补充说明&#xff1a; 2. **快恢复二极管&#xff08;Fast Recovery Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;…...

MQTT 和 Modbus 的优缺点对比

MQTT和Modbus协议是物联网&#xff08;IoT&#xff09;躲不开的两种协议&#xff0c;市面上覆盖了百分之98的产品。 MQTT由IBM在1999年发布。2014年&#xff0c;MQTT成为OASIS&#xff08;结构化信息标准促进组织&#xff09;的标准&#xff0c;后来被ISO/IEC 20922正式采纳&a…...

Android14 系统左右声音通道设置代码

Android14 系统左右声音通道设置代码 文章目录 Android14 系统左右声音通道设置代码一、前言二、系统级设置左右声音通道分析1、各方案设置左右声音通道的主要代码&#xff08;1&#xff09;3588 Android13 方案的实现&#xff08;2&#xff09;9679 Android14 方案的实现&…...

【Golang】go如何通过atomic原子操作来确保数据一致性

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

2025年汽车加气站操作工考试精选题库

汽车加气站操作工题库中题目及答案&#xff1a; 单项选择题 1、按压力容器的设计压力分为&#xff08; &#xff09;个压力等级。 A. 3 B. 4 C. 5 答案&#xff1a;B 2、缓冲罐的安装位置在天然气压缩机&#xff08; &#xff09;。 A. 前 B. 后 C. 中间 答案&#…...

LLVM学习--外部项目

不包含于核心LLVM和Clang存储库的项目需要单独下载。在本章中&#xff0c;我们将介绍各种其他官方LLVM项目&#xff0c;并介绍如何构建和安装它们。仅仅对核心LLVM工具感兴趣的读者可以跳过本章&#xff0c;或者在需要的时候翻阅。 在本章中&#xff0c;我们将介绍以下项目安装…...

AUTOSAR_DoIP_Detailed

AUTOSAR DoIP模块详解 基于AUTOSAR标准的诊断通信协议实现 目录 架构概述通信流程消息格式配置结构详细序列总结1. 架构概述 1.1 模块架构 DoIP模块是AUTOSAR基础软件中负责诊断通信的核心组件。它通过TCP/IP网络实现诊断工具与ECU之间的通信。主要功能包括: 基础功能 基于UD…...

C语言:(大数相加版)数字阶梯求和

题目&#xff1a; 给定a和n&#xff0c;计算aaaaaaa...a(n个a)的和。 输入 测试数据有多组&#xff0c;输入a&#xff0c;n&#xff08;1<a<9,1<n<100&#xff09;。 输出 对于每组输入,请输出结果。 分析&#xff1a; 1. 方式和规定&#xff1a;大数相加必然越界…...

Echarts 折线图

功能 每月记录值&#xff0c;当数据大于600画红线&#xff0c;小于300画蓝线&#xff0c;其他在中间值为黑线。鼠标移动上去后&#xff0c;现在数据值。 option {tooltip: {trigger: axis, // 触发类型&#xff1a;坐标轴触发show: true, // 显示提示框formatter: function …...

element-plus中Dropdown下拉菜单组件的使用

1、基本使用 复制下面的代码&#xff1a; <!-- 选择查询类型 --> <el-dropdown trigger"click"><span class"el-dropdown-link"><span style"width:60px;color:#404040">查询类型</span><el-icon class"e…...

Kafka详解——介绍与部署

1. 什么是 Kafka&#xff1f; Kafka 是一个分布式的消息队列系统&#xff0c;最初由 LinkedIn 开发&#xff0c;后来成为 Apache 开源项目。它的主要用途包括实时数据处理、日志收集、数据流管道构建等。Kafka 具备高吞吐量、可扩展性、持久性和容错性&#xff0c;广泛应用于大…...

ngx_http_core_srv_conf_t

定义在 src\http\ngx_http_core_module.h typedef struct {/* array of the ngx_http_server_name_t, "server_name" directive */ngx_array_t server_names;/* server ctx */ngx_http_conf_ctx_t *ctx;u_char *file_…...

4.angular 服务

服务是在controller里面引入的服务&#xff1a; 最好是内部服务在前面&#xff0c;自定义服务在后面 内部服务 $scope $scope.$watch(‘属性名’, function(newVal, oldVal) {}, true) true是深度监听,对象函数等$scope.$apply 触发页面更新,里面传入回调函数,比如说之前那个…...

[动手学习深度学习]26. 网络中的网络 NiN

前面的LeNet、AlexNet、VGG在设计上的共同之处在于&#xff1a;先以卷积层构成的模块充分抽取空间特征&#xff0c;再以全连接层构成的模块来输出分类结果 其中AlexNet和VGG对LeNet的改进主要在于如何对这两个模块价款&#xff08;增加通道数&#xff09;和加深 这一节的NiN提出…...

【设计模式】原型模式

三、原型模式 3.2 原型模式 同工厂模式一样&#xff0c;原型(Prototype) 模式也是一种创建型模式。原型模式通过一个对象 (原型对象)克隆出多个一模一样的对象。实际上&#xff0c;该模式与其说是一种设计模式&#xff0c;不如说是 一种创建对象的方法(对象克隆),尤其是创建给…...

力扣题目汇总 使用贪心算法解决问题

贪心算法是一种通过局部最优解来获得全局最优解的算法。它的核心思想是&#xff1a;在每一步中选择当前看起来最优的解&#xff0c;并希望通过一系列局部最优选择最终得到全局最优解。 121.买卖股票的最佳时机 分析&#xff1a; 在每一天求出当前最优的利润&#xff0c;也就…...

Mac下Ollama安装全攻略:开启本地大模型之旅

文章目录 Mac下Ollama安装全攻略&#xff1a;开启本地大模型之旅一、Ollama 是什么功能特点优势应用场景 二、安装前准备&#xff08;一&#xff09;系统要求&#xff08;二&#xff09;硬件要求 三、下载安装包&#xff08;一&#xff09;官网下载&#xff08;二&#xff09;其…...

[HelloCTF]PHPinclude-labs超详细WP-Level 1-FILE协议

源码分析 <?php include("get_flag.php");isset($_GET[wrappers]) ? include("file://".$_GET[wrappers]) : ;highlight_file(__FILE__); ?>第一句 include("get_flag.php");, 使代码包含了 get_flag.php 的内容 大概是生成 Flag 之类的…...

Skia 图形引擎介绍

文章目录 一、Skia 的基本概念1. 定位与作用2. 历史背景 二、Skia 的核心架构1. 模块化设计2. 渲染流程3. 跨平台适配 三、Skia 在 Flutter 中的角色1. 自绘 UI 的核心依赖2. 跨平台一致性3. 性能优化 四、Skia 的性能优势1. 高效的图形处理2. 与原生渲染的对比3. 性能瓶颈 五、…...

构建高可靠NFS存储:自动化挂载保障机制的设计与优势

一、背景与需求场景 在分布式系统或集群架构中&#xff0c;NFS&#xff08;Network File System&#xff09;是跨节点共享存储的经典方案。然而&#xff0c;传统/etc/fstab配置的静态挂载方式存在明显缺陷&#xff1a; 服务启动顺序不可控&#xff0c;网络未就绪时挂载失败临…...

Spring Boot对接twilio发送邮件信息

要在Spring Boot应用程序中对接Twilio发送邮件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一个简单的步骤指南&#xff0c;帮助您完成这一过程&#xff1a; 1. 创建Twilio账户并获取API密钥 注册一个Twilio账户&#xff08;如果您还没有的话&#xff09;。在Twi…...

如何创建并保存HTML文件?零基础入门教程

原文&#xff1a;如何创建并保存HTML文件&#xff1f;零基础入门教程 | w3cschool笔记 本文将以Windows系统为例&#xff0c;教你用最简单的记事本创建并保存第一个HTML网页。 &#x1f4dd; 第一步&#xff1a;准备工具 文本编辑器&#xff1a;使用系统自带的记事本&#xff…...

vue3 + css 列表无限循环滚动+鼠标移入停止滚动+移出继续滚动

1.动画文件.vue <template><div class"dashboard" click"setFullScreen"><div class"warp-box"><el-scrollbar ref"scrollRef" height"100%" scroll"handelScroll"><div class"…...

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式&#xff0c;主要将对象的创建和使用分离&#xff0c;使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;以下是 C# 实现的三个案例&#xff1a; 简单工厂模式 简单工厂模式通过一个工厂类来创建…...

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …...

C++ list类

C list类 目录 C list类引言1.list的使用1.1 list的构造1.2 list的iterator的使用1.3 list capacity1.4 list element acess1.5 list modifiers 2. list的迭代器失效3. list的模拟实现3.1 List.h文件3.2 List的反向迭代器 4.list与vector的对比 引言 在C标准库中&#xff0c;l…...

LeetCode 热题 100_跳跃游戏(78_55_中等_C++)(贪心算法)

LeetCode 热题 100_跳跃游戏&#xff08;78_55&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;贪心算法&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;贪心算法&#xff09;&am…...

【Redis】Redis的数据删除(过期)策略,数据淘汰策略。

如果问到&#xff1a;假如Redis的key过期之后&#xff0c;会立即删除吗&#xff1f; 其实就是想问数据删除(过期)策略。 如果面试官问到&#xff1a;如果缓存过多&#xff0c;内存是有限的&#xff0c;内存被占满了怎么办&#xff1f; 其实就是问&#xff1a;数据的淘汰策略。…...

C++和标准库速成(八)——指针、动态数组、const、constexpr和consteval

目录 1. 指针和动态数组1.1 栈和自由存储区1.2 使用指针1.3 动态分配的数组1.4 空指针常量 2. const2.1 const修饰类型2.2 const与指针2.3 使用const保护参数2.4 const方法(建议&#xff09; 3. constexpr4. consteval参考 1. 指针和动态数组 动态内存允许所创建的程序具有在编…...