sheng的学习笔记-AI-模型评估-留出法、交叉验证法、自助法
Ai目录:sheng的学习笔记-AI目录-CSDN博客
评估方法:
数据集可以分为 训练集,交叉验证集,测试集。
- 训练集相当于自己做作业,
- 验证集相当于考试测试一下自己的实力,
- 测试集就是真刀真枪的干(当你训练好了模型以后,就算模型的数据告诉你它很牛逼,你最好在测试集试一试,不然直接上生产可能不及预期)
一般训练集,验证集,测试集的数据比例是 60%:20%:20%,但如果数据量很大,比如上百万的,验证集和测试集分别用几万就行
上面的集合需要互斥,最好别出现训练集和验证集出现重复数据的事情(比如你偷看了考试答案,就算考过了,真实场景上的时候也得输)。
留出法
将所有的数据按照比例划分,然后别动,比如10万个数据,6万是训练集,2万是验证集,2万是测试集,划分完了别动,就那么训练
如果数据量很大,比如几百万的数据,训练集一次性加载那么多内存会爆,需要分批次进行训练(比如一次加载10万),验证集的选择方式有两种主要的做法:
固定验证集(Validation Set不变):
- 在这种情况下,你从训练集(或者整个数据集)中预先划分出一部分数据作为验证集。这个验证集在整个训练过程中保持不变。每次模型训练时,无论训练数据如何分批,验证集都会是相同的。
- 这种方法的优势在于,你可以确保验证集的数据不受每次训练中数据分批的影响,从而获得一个稳定的模型评估标准。
- 缺点是,验证集可能会在一定程度上与训练集有重叠,这可能导致过拟合的问题,特别是当数据量较小或验证集划分不够随机时。
from sklearn.model_selection import train_test_split# 假设你的数据是 X_train 和 y_train
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)# 模型训练时使用相同的验证集
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
动态验证集(每次都拆分不同的验证集):
- 另一种方法是在每次模型训练时,都从训练集中重新划分一个验证集。这意味着每次训练使用不同的验证集,这种方式适用于数据量非常大,且希望每次训练都使用不同的验证数据。
- 这种方式的好处是可以确保验证集与训练集之间不会有任何交叉,从而避免某些过拟合问题。但是,这种方法可能会导致验证过程的波动,因为每次验证集不同,模型的评估标准也会有所不同。
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
以上的场景是,比如100万的数据,留下5万作为最终测试集, 还剩下95万的数据作为训练集和验证集,那我是90万作为训练集,5万作为固定的,将90万的数据分为10个批次(每个批次互斥,每个批次10万的数据)每次fit的时候训练集是10万。问题是:
- 每次训练的时候验证集是固定的5万数据?
- 还是95万的数据划分10个批次(每个批次9万5的数据),在训练的时候9万五再(80%训练集,20%验证集),这种方案每次的验证集都不一样
方案1,训练迭代的时候比较慢,因为验证机太大了
方案2,训练迭代的时候不太稳定,本来loss都下去了,第二个迭代又上去了
我不是土豪,算力还是很重要的
交叉验证法(cross validation)
注意,以下的测试集,都是上面说的交叉验证集,真正的测试集是最终评估模型的数据
“k折交叉验证”(k-fold cross validation)
K折交叉验证(K-Fold Cross-Validation)是一种常用的模型评估和模型选择方法,它通过将数据集分成K个大小相等的子集(或尽可能相等),然后使用其中K-1个子集进行训练,剩下的1个子集用于测试,这个过程重复K次,每次选择不同的子集作为测试集
步骤
对于每一折(即每一次迭代):
- 选择一个子集作为验证集(测试集)。
- 选择剩余的K-1个子集作为训练集。
- 使用训练集训练模型。
- 使用验证集评估模型的性能。
在每次迭代中,记录模型的性能指标,如准确率、精确度、召回率、F1分数或损失值等。
在所有K次迭代完成后,计算模型性能指标的平均值
示意图
示例代码
from sklearn.model_selection import KFold
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np# 加载数据集
X, y = load_boston(return_X_y=True)# 初始化K折交叉验证
kf = KFold(n_splits=5, shuffle=True, random_state=42)# 初始化模型
model = LinearRegression()# 用于存储每次迭代的MSE
mse_scores = []# 进行K折交叉验证
for train_index, test_index in kf.split(X):X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]# 训练模型model.fit(X_train, y_train)# 预测y_pred = model.predict(X_test)# 计算MSEmse = mean_squared_error(y_test, y_pred)mse_scores.append(mse)# 计算平均MSE
average_mse = np.mean(mse_scores)
print(f"Average MSE: {average_mse}")
在这个例子中,我们使用了波士顿房价数据集,并应用了线性回归模型。我们设置了5折交叉验证,并计算了每次迭代的平均均方误差(MSE)。这个过程可以帮助我们评估模型的泛化能力和稳定性
留一法(Leave-one-out,简称LOO)
留一法(Leave-One-Out, LOO)是一种特殊的交叉验证方法,它是 K 折交叉验证的一个特例,其中 K 等于数据集中的样本数。在留一法中,每次迭代只留下一个样本作为测试集,而其余所有样本构成训练集。这个过程会重复进行,直到数据集中的每个样本都被用作一次测试集。
计算成本太高了,大数据量下别想这个了
步骤:
- 数据分割:对于数据集中的每个样本,将其单独留出作为测试集,其余样本组成训练集。
- 模型训练:使用训练集训练模型。
- 模型评估:使用留下的单个样本作为测试集来评估模型的性能。
- 重复过程:对数据集中的每个样本重复步骤1-3。
- 结果汇总:计算所有迭代中模型性能指标的平均值,以得到模型的整体性能估计。
特点:
- 计算成本高:由于需要对每个样本都进行一次训练和测试,因此当数据集较大时,留一法的计算成本非常高。
- 结果稳定性:留一法提供了对模型性能的非常稳定的估计,因为它考虑了数据集中每个样本的独立影响。
- 适用性:留一法适用于小样本数据集,或者当数据集非常宝贵,需要尽可能利用每个样本的信息时。
优缺点:
-
优点:
- 提供了对模型性能的无偏估计。
- 可以给出每个样本的预测结果,有助于分析模型对特定样本的表现。
-
缺点:
- 计算成本高,特别是对于大型数据集。
- 可能会过度拟合,因为每个样本都被用作测试集,模型可能会学习到数据中的噪声。
自助法
自助法(Bootstrap)是一种统计学上的重采样技术,它通过从原始数据集中进行有放回的随机抽样来创建多个新的样本集,从而估计统计量(如平均值、中位数、方差等)的分布。这种方法因其简单和强大而被广泛应用于科学研究、商业分析、工程问题等多个领域
步骤:
-
数据重采样:从原始数据集中随机抽取样本,允许重复抽样。通常,样本数量与原始数据集相同。由于允许重复抽样,某些样本可能在新样本集中出现多次,而另一些样本可能完全不被选中。
-
模型训练与评估:使用重采样得到的训练集训练模型,并使用未被选中的样本(即测试集)评估模型性能。
-
重复过程:重复上述步骤多次(例如,1000次),每次都生成不同的训练集和测试集。
-
性能汇总:计算每次评估的性能指标(如准确率、均方误差等),并最终取平均值,以获得模型的整体性能评估。
特点:
- 充分利用数据:自助法能够在样本量较小的情况下有效利用数据,提供更多的训练样本。
- 不确定性估计:可以通过多次重采样来估计模型性能的方差和置信区间。
- 适用于小样本数据集:自助法在数据集较小、难以有效划分训练/测试集时很有用。
- 集成学习:自助法能从初始数据集中产生多个不同的训练集,这对集成学习方法有很大的好处。
缺点:
- 偏差问题:由于某些样本可能在训练集中重复出现,而另一些样本可能完全不被选中,可能导致模型评估的偏差。
- 计算成本:需要多次训练模型,计算成本较高。
相关文章:
sheng的学习笔记-AI-模型评估-留出法、交叉验证法、自助法
Ai目录:sheng的学习笔记-AI目录-CSDN博客 评估方法: 数据集可以分为 训练集,交叉验证集,测试集。 训练集相当于自己做作业,验证集相当于考试测试一下自己的实力,测试集就是真刀真枪的干(当你…...
【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData
当需要获知组件是否被销毁时,ECS是没有回调告知的,因此可以将组件继承于ISystemStateComponentData接口,这样即使组件的实体被销毁了,该组件本身是不会消失的,所以可以通过在组件实体销毁后,去设置状态组件…...
DVWA靶场第三关 CSRF
CSRF的中文叫:”跨站请求攻击“,它是通过仿照某一个特殊的网页(重置密码)来进行诱惑性攻击。 难度(low级) 审计代码: <?phpif( isset( $_GET[ Change ] ) ) {// Get input$pass_new $_GE…...
工作流审批功能的一些概念
1. 引言 在当今数字化时代,企业与组织的运营效率在很大程度上依赖于高效、精准的工作流审批系统。随着业务日益复杂且多样化,审批流程变得愈加细致和灵活。一个完善的工作流审批系统不仅能确保任务在组织内部有序流转、协调各方资源,还能实现…...
深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)
计算机视觉从小白到大师之路 《深度学习与图像处理(PaddlePaddle版)》这一本就够了 1.引言 随着人工智能技术的飞速发展,各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例࿰…...
音视频入门知识(二)、图像篇
⭐二、图像篇 视频基本要素:宽、高、帧率、编码方式、码率、分辨率 其中码率的计算:码率(kbps)=文件大小(KB)*8/时间(秒),即码率和视频文件大小成正比 YUV和RGB可相互转换 ★YUV(原始数据&am…...
计算机网络——期末复习(3)4-6章考试重点
第四章 根据IPv4第1个十进制数值判断,127以下为A类,128~191为B类,192~223为C类不能分配给主机或路由器接口的:A类网络号0和127,主机号全为0或全为1私有地址(Private IP Address)是指一类专门保…...
openfeign自动将Boolean默认为false
最近发现项目服务间,通过openfeign调用API时,为null的Boolean类型,接收端反系列化后变为false了,经查发现是通用组件中做了处理,特记录下。 主要是设置了这个 SerializerFeature.WriteNullBooleanAsFalse Bean Cond…...
如何实现底部导航栏
文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了TextField Widget,本章回中将介绍BottomNavigationBar Widget。闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中将介绍一个新的Widget:BottomNavigationBar,它就是我们经常在App中看到了底部…...
【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。
【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。 文章目录 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。1. 错…...
org.apache.zookeeper.server.quorum.QuorumPeerMain
QuorumPeerMain源代码 package org.apache.zookeeper.server.quorum;import java.io.IOException; import javax.management.JMException; import javax.security.sasl.SaslException; import org.apache.yetus.audience.InterfaceAudience; import org.apache.zookeeper.audi…...
如何在yolov8中使用ATSS策略
在yolov8中使用的标签匹配策略是TAL,本篇文章解析一下ATSS代码相关实现以及如何把ATSS放到yolov8中使用 看过本专栏中的另外两篇文章的同学应该对v8解析box那一套很熟悉了,ATSS的第一步就是去得到一系列的anchor-box(如果是anchor-based检测方法)或者anchor-point(基…...
常见的邮件协议SMTP和POP3
常见的邮件协议包括SMTP和POP3,SMTP用来发送邮件,POP3用来接收邮件信息。 SMTP SMTP 是一种用于发送电子邮件的协议。它的主要作用是将**电子邮件**从邮件客户端(如 Outlook、Thunderbird)或邮件服务器发送到接收服务器。 SMTP …...
线性代数行列式
目录 二阶与三阶行列式 二元线性方程组与二阶行列式 三阶行列式 全排列和对换 排列及其逆序数 对换 n阶行列式的定义 行列式的性质 二阶与三阶行列式 二元线性方程组与二阶行列式 若是采用消元法解x1、x2的话则得到以下式子 有二阶行列式的规律可得:分…...
cin/cout性能问题讨论和优化⽅法
样例解析: 在上面的两个案例中,我们发现虽然代码的逻辑是相同的,唯一的不同点在于scanf和cout的使用区别,一份超时一份ac,这是为什么呢?是否有可行的优化方法呢? 背景知识: 在 C 中…...
轮胎识别数据集,可对生产流水线里的轮胎图片标注,支持yolo,coco json,voc xml格式的标注,一共785张采集图片
轮胎识别数据集,可对生产流水线里的轮胎图片标注,支持yolo,coco json,voc xml格式的标注,一共785张采集图片 数据集分割 训练组90% 706图片 有效集6% 46图片 测试集4% 33图片 预处理…...
ARM64 Windows 10 IoT工控主板运行x86程序效率测试
ARM上的 Windows 10 IoT 企业版支持仿真 x86 应用程序,而 ARM上的 Windows 11 IoT 企业版则支持仿真 x86 和 x64 应用程序。英创推出的名片尺寸ARM64工控主板ESM8400,可预装正版Windows 10 IoT企业版操作系统,x86程序可无需修改而直接在ESM84…...
Git核心概念
版本控制 什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。 为什么要版本控制 有了它你就可以将某个文件回溯到之前的状态,甚至将整…...
Spring Boot spring.factories文件详细说明
优质博文:IT-BLOG-CN 前言:经常看到 spring.factories 文件,却没有对它进行深入的了解和分析,今天我们就一起揭开面纱看看它的内在。 spring.factories 文件是 Spring Boot 自动配置机制的核心部分之一。它位于每个 Spring Boo…...
QWidget应用封装为qt插件,供其他qt应用调用
在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用. 插件优点: 与主程序为同一个进程,免去了进程间繁琐的通信方式,…...
Nginx的性能分析与调优简介
Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 Nginx是一种高性能的HTTP和反向代理服务器,最初作为HTTP服务器开发,主要用于服务静态内容如HTML文件、图像、视…...
学习threejs,导入CTM格式的模型
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ColladaLoader DAE模…...
Lua元表
哈喽,好久没有做记录了,最近刚好有时间打算整理一些基础常用内容,先做一期关于Lua相关的内容热热身。如果内容有误,欢迎大家指出我会积极做出响应。 在Lua中,元表(metatable) 和 元方法…...
pyqt和pycharm环境搭建
安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…...
overleaf中的includegraphics设置图片缩放,居中显示
overleaf中的includegraphics设置图片缩放,居中显示 \includegraphics[width=0.5\textwidth]{example.jpg} \centering 在使用 \includegraphics 命令插入图片时,可以通过设置其参数来缩小图片的显示尺寸,以下是几种常见的方法: 设置宽度或高度 按比例缩小宽度:可以使用…...
USB免驱IC读写器QT小程序开发
USB免驱全协议IC卡读写器QT小程序开发,读取15693卡。 QT小程序UI开发界面: QT程序代码mainWindow.cpp代码如下: MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this); }MainWind…...
Wend看源码-Java-集合学习(List)
摘要 本篇文章深入探讨了基于JDK 21版本的Java.util包中提供的多样化集合类型。在Java中集合共分类为三种数据结构:List、Set和Queue。本文将详细阐述这些数据类型的各自实现,并按照线程安全性进行分类,分别介绍非线程安全与线程安全的实现方…...
只谈C++11新特性 - 删除函数
删除函数 背景 在 C11 之前,C 的类默认会生成拷贝构造函数和赋值运算符。这在某些情况下会引发问题,尤其是在我们希望明确禁止某些操作时。假设我们有一个类,它不希望被拷贝,但未明确声明拷贝构造函数和赋值运算符,这…...
uniapp 文本转语音
uniapp 文本转语音 基于 Minimax API 的 UniApp 文本转语音工具,支持文本分段、队列播放、暂停恢复等功能。目前只内置了 Minimax文本转语音Minimax 的语音生成技术以其自然、情感丰富和实时性强而著称 API_KEY、GroupId 获取方法 https://platform.minimaxi.com…...
1.RPC基本原理
文章目录 RPC1.定义2.概念3.优缺点4.RPC结构5.RPC消息协议5.1 消息边界5.2 内容5.3 压缩 6.RPC的实现6.1 divide_protocol.py6.2 server.py6.3 client.py RPC 1.定义 远程过程调用(remote procedure call) 2.概念 广义:所有通过网络进行通讯,的调用统称为RPC调用 狭义:不采…...
如何从 0 到 1 ,打造全新一代分布式数据架构
导读:本文从 DIKW(数据、信息、知识、智慧) 模型视角出发,探讨数字世界中数据的重要性问题。接着站在业务视角,讨论了在不断满足业务诉求(特别是 AI 需求)的过程中,数据系统是如何一…...
PyPika:Python SQL 查询构建器
什么是 PyPika? Pypika 是一个 Python 库,用于构建 SQL 查询。它提供了一种简洁、直观的方式来生成 SQL 语句,而无需手动编写复杂的 SQL 代码。Pypika 的设计哲学是尽可能地接近 SQL 的自然语法,同时利用 Python 的强大功能来简化…...
剑指Offer|LCR 014. 字符串的排列
LCR 014. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说,第一个字符串的排列之一是第二个字符串的 子串 。 示例 1: 输入: s1 "ab" s2 "eidbaooo" 输出: True 解…...
通过百度api处理交通数据
通过百度api处理交通数据 1、读取excel获取道路数据 //道路名称Data EqualsAndHashCode public class RoadName {ExcelProperty("Name")private String name; }/*** 获取excel中的道路名称*/private static List<String> getRoadName() {// 定义文件路径&…...
使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器实现可迭代式数据集
2023 年 11 月,Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元(数据集和数据加载器)的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…...
c++编译过程初识
编译过程 预处理:主要是执行一些预处理指令,主要是#开头的代码,如#include 的头文件、#define 定义的宏常量、#ifdef #ifndef #endif等条件编译的代码,具体包括查找头文件、进行宏替换、根据条件编译等操作。 g -E example.cpp -…...
Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优
在现代企业级应用中,Spring 框架和微服务架构已经成为主流技术,而 Java 虚拟机(JVM)的理解和调优对于保证应用的高性能和稳定性也至关重要。本篇博客将深入讲解 Spring 框架与微服务架构,并进一步探讨 JVM 内部原理和调…...
SWAT-MODFLOW地表水-地下水耦合模型建模;QSWATMOD实现SWAT-MODFLOW联合
SWAT-MODFLOW地表水-地下水耦合建模的应用重要性: 1.全面性:耦合模型能够同时考虑地表水和地下水的相互作用,提供了一个更全面的水文循环模拟框架。2.准确性:通过耦合地表水和地下水模型,可以提高水文模拟的准确性&…...
Azure Function 解决跨域问题
这边前端call本地部署的azure function出现了跨域问题,搜索一下解决方案 直接修改local.setting.json,在其中添加CORS配置为通配符”*”,就行了 local.settings.json {"IsEncrypted": false,"Values": {"PYTHON_E…...
金融租赁系统的创新发展与市场竞争力提升探讨
内容概要 随着经济的快速发展,金融租赁系统逐渐成为金融市场中不可或缺的一环。它不仅提供了灵活的资金解决方案,还促进了企业的资本结构优化与资源配置效率。因此,了解该系统的市场背景与发展现状至关重要。 在现今环境下,新兴…...
Rust: offset祼指针操作
offset是偏移元素个数,不是字节数! fn main(){let student_a Student{id:20240001,name:"张三娃".into(),class_id:3,age:14,grade:1};let student_b Student{id:20240002,name:"李四牛".into(),class_id:3,age:15,grade:1};let …...
【C#】WPF设置Separator为垂直方向
1. 方法1 <Separator BorderBrush"Gray"><Separator.LayoutTransform><RotateTransform Angle"90" /></Separator.LayoutTransform> </Separator>2. 方法2 <Separator Style"{StaticResource {x:Static ToolBar.S…...
常见的限流算法
常见的限流算法 限流的定义固定窗口算法滑动窗口算法漏桶算法(推荐)令牌桶算法(推荐)限流粒度本地限流(单机限流)分布式限流(多机限流)分布式限流的实现 限流的定义 限流,也称流量控制。是指系统…...
图文教程:使用PowerDesigner导出数据库表结构为Word/Html文档
1、第一种情况-无数据库表,但有数据模型 1.1 使用PowerDesigner已完成数据建模 您已经使用PowerDesigner完成数据库建模,如下图: 1.2 Report配置和导出 1、点击:Report->Reports,如下图: 2、点击&…...
7-7 旅行售货员
目录 题目描述 输入格式: 输出格式: 输入样例: 输出样例: 解题思路: 详细代码: 题目描述 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路…...
QT写的动态正弦曲线图显示并打印
创建一个显示正弦曲线的 QChartView,并通过定时器不断更新图表数据,模拟动态数据。此外,还包含了一个在特定时间自动将图表导出为 PDF 文件的功能。 代码分析和注释 #include <QApplication> #include <QMainWindow> #include &…...
AI开发:决策树模型概述与实现:从训练到评估和可视化 - Python
通过前面的一些练习,我们已经学习了支持向量机、 回归、 鸢尾花模型 、卷积、 知识图谱、 生成式对抗网络、 K近邻、 等AI算法的基本概念,熟悉了一些常用的AI库,并且使用PYTHON大法进行了一些实战练习。接下来,我们向更深一层的概…...
MySQL 性能瓶颈,为什么 MySQL 表的数据量不能太大?
MySQL的性能瓶颈(为什么MySQL有几万的qps,怎么来的?性能分析 为什么 MySQL 表不能太大网上大部分人的说法:问题的关键: B树层数对查询性能的影响到底有多大? 是什么导致的 MySQL 查询缓慢?如何解决: MySQL的性能瓶颈(为什么MySQL有几万的qps,怎么来的? 一个全表扫描的查询…...
Vue中接入萤石等直播视频(更新中ing)
一、萤石: 1. 萤石云开发文档: https://open.ys7.com/help/31 2、安装: npm install ezuikit-js --save 3、在文件中引用:import EZUIKit from ezuikit-js 4、具体代码: 获取accessToken:https://open.…...
25 go语言(golang) - 内存分配机制原理
Go 语言的内存分配机制是一个复杂且高效的系统,旨在为程序提供快速和安全的内存管理。理解 Go 的内存分配有助于编写更高效的代码,并优化程序性能。 一、内存区域 栈(Stack) 栈用于函数调用时的临时变量分配。栈上的内存在函数返…...