用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图
在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法:
1. TensorBoard (PyTorch 官方集成)
PyTorch 通过 torch.utils.tensorboard
支持 TensorBoard,可以直接可视化模型结构。
步骤:
-
安装 TensorBoard:
pip install tensorboard
-
代码示例:
import torch from torch.utils.tensorboard import SummaryWriter from torchvision.models import resnet18# 定义模型 model = resnet18() # 创建 SummaryWriter 对象 writer = SummaryWriter("runs/experiment1") # 生成随机输入数据(需与模型输入形状匹配) dummy_input = torch.randn(1, 3, 224, 224) # 将模型结构写入 TensorBoard writer.add_graph(model, dummy_input) writer.close()
-
启动 TensorBoard:
tensorboard --logdir=runs
在浏览器中打开
http://localhost:6006
,在 GRAPHS 标签页查看模型结构。
2. torchviz (生成计算图)
torchviz
基于 Graphviz,生成模型的计算图(前向传播路径)。
步骤:
-
安装依赖:
pip install torchviz graphviz
-
代码示例:
import torch from torchviz import make_dot from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) output = model(dummy_input) # 生成计算图 dot = make_dot(output, params=dict(model.named_parameters())) # 保存为图片(格式可为 PDF 或 PNG) dot.render("resnet18", format="png")
3. HiddenLayer (轻量级可视化)
hiddenlayer
是一个轻量级工具,适合快速生成模型结构图。
步骤:
-
安装:
pip install hiddenlayer
-
代码示例:
import torch import hiddenlayer as hl from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) # 构建可视化图表 hl.build_graph(model, dummy_input).save("resnet18.png")
4. Netron (模型结构查看器)
Netron 是一个独立的可视化工具,支持 PyTorch 模型文件(.pt
或 .pth
)或 ONNX 格式。
步骤:
-
导出模型为 ONNX:
import torch from torchvision.models import resnet18model = resnet18() dummy_input = torch.randn(1, 3, 224, 224) torch.onnx.export(model, dummy_input, "resnet18.onnx")
-
使用 Netron 打开:
访问 Netron Web 版 或下载桌面端,上传.onnx
文件即可查看交互式模型结构。
5. PyTorch 内置打印
通过 print(model)
快速查看模型层级(适合简单结构):
import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super().__init__()self.layers = nn.Sequential(nn.Linear(10, 20),nn.ReLU(),nn.Linear(20, 1))def forward(self, x):return self.layers(x)model = MyModel()
print(model)
工具对比
工具 | 优点 | 缺点 |
---|---|---|
TensorBoard | 集成训练监控,交互式可视化 | 需要启动服务,略复杂 |
torchviz | 显示计算细节,适合调试 | 依赖 Graphviz,图可能较复杂 |
HiddenLayer | 轻量级,快速生成 | 功能相对简单 |
Netron | 无需代码,支持多格式 | 依赖导出模型文件 |
根据需求选择工具:调试计算流程用 torchviz
,训练集成用 TensorBoard
,快速分享用 Netron
。
在 PyTorch 中,可视化训练集、测试集、预测结果和训练过程可以通过多种工具实现。以下是常用的工具和方法,按场景分类:
1. 可视化数据集(训练集/测试集)
工具:Matplotlib/Seaborn
直接使用 Python 绘图库可视化输入数据或特征分布。
import matplotlib.pyplot as plt
import torchvision# 示例:可视化 CIFAR10 训练集
dataset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True)
classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')# 显示前 9 张图片
fig, axes = plt.subplots(3, 3, figsize=(10, 10))
for i, ax in enumerate(axes.flat):img, label = dataset[i]ax.imshow(img)ax.set_title(f"Label: {classes[label]}")ax.axis('off')
plt.show()
2. 可视化训练过程
工具 1:TensorBoard(PyTorch 集成)
监控训练损失、准确率等指标,支持动态更新。
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("runs/experiment1")for epoch in range(num_epochs):# 训练代码...train_loss = ...val_accuracy = ...# 记录标量数据writer.add_scalar('Loss/train', train_loss, epoch)writer.add_scalar('Accuracy/val', val_accuracy, epoch)# 记录模型权重分布for name, param in model.named_parameters():writer.add_histogram(name, param, epoch)# 启动 TensorBoard
# tensorboard --logdir=runs
工具 2:Weights & Biases(第三方协作工具)
云端记录实验,支持超参数跟踪和团队协作。
import wandb# 初始化
wandb.init(project="my-project")# 记录指标
wandb.log({"train_loss": train_loss, "val_acc": val_accuracy})# 记录预测结果(图像示例)
wandb.log({"predictions": [wandb.Image(img, caption=f"Pred:{pred}, True:{true}")]})
3. 可视化预测结果
方法 1:Matplotlib 直接绘制
# 示例:分类结果可视化
import numpy as npmodel.eval()
with torch.no_grad():inputs, labels = next(iter(test_loader))outputs = model(inputs)preds = torch.argmax(outputs, dim=1)# 显示预测结果
fig, axes = plt.subplots(4, 4, figsize=(12, 12))
for i, ax in enumerate(axes.flat):ax.imshow(inputs[i].permute(1, 2, 0)) # 调整通道顺序ax.set_title(f"Pred: {classes[preds[i]]}\nTrue: {classes[labels[i]]}")ax.axis('off')
plt.tight_layout()
plt.show()
方法 2:混淆矩阵(分类任务)
from sklearn.metrics import confusion_matrix
import seaborn as sns# 计算混淆矩阵
cm = confusion_matrix(true_labels, pred_labels)
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=classes, yticklabels=classes)
plt.xlabel("Predicted")
plt.ylabel("True")
plt.show()
4. 高级可视化工具
工具 1:Plotly(交互式可视化)
绘制动态训练曲线:
import plotly.express as px# 假设 logs 是包含训练历史的字典
fig = px.line(logs, x='epoch', y=['train_loss', 'val_loss'], title="Training and Validation Loss")
fig.show()
工具 2:Gradio(快速构建交互式 Demo)
部署模型预测交互界面:
import gradio as grdef classify_image(img):img = preprocess(img) # 预处理pred = model(img) # 推理return classes[torch.argmax(pred)]gr.Interface(fn=classify_image, inputs="image", outputs="label").launch()
5. 训练过程可视化(高级)
工具:PyTorch Lightning
自动集成 TensorBoard 和 WandB,简化日志记录:
import pytorch_lightning as plclass MyModel(pl.LightningModule):def training_step(self, batch, batch_idx):x, y = batchy_hat = self(x)loss = F.cross_entropy(y_hat, y)self.log("train_loss", loss) # 自动记录到日志return loss# 训练时指定 logger
trainer = pl.Trainer(logger=pl.loggers.TensorBoardLogger("logs/"),# 或使用 WandB# logger=pl.loggers.WandbLogger(project="my-project")
)
trainer.fit(model)
工具对比
工具/方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
TensorBoard | 训练指标跟踪、模型结构可视化 | 官方集成,功能全面 | 需本地启动服务 |
WandB | 团队协作、云端实验管理 | 实时同步、超参数跟踪 | 需要注册账号 |
Matplotlib | 静态数据可视化 | 灵活、无需额外依赖 | 交互性弱 |
Plotly | 交互式动态图表 | 支持网页嵌入、动态更新 | 学习曲线稍陡峭 |
Gradio | 快速部署预测 Demo | 零代码交互界面 | 功能相对简单 |
关键场景总结
- 训练过程监控:优先选择 TensorBoard 或 WandB。
- 数据集预览:Matplotlib/Seaborn 快速绘制。
- 预测结果分析:混淆矩阵(分类)、BBox 标注(检测)、Matplotlib 对比图(回归)。
- 协作与报告:WandB 或 TensorBoard.dev(云端共享)。
可根据需求组合使用工具,例如:TensorBoard + Matplotlib(本地开发)或 WandB + Gradio(团队协作 + 演示)。
相关文章:
用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...
rust笔记8-Deref与隐式解引用强制转换
Rust 的智能指针和 Deref Trait 是 Rust 中非常重要的概念,它们使得 Rust 的引用和指针操作更加灵活和安全。下面我们将深入介绍 Deref Trait、Deref 与 &、* 运算符的关系,以及 Rust 的隐式解引用强制转换(Deref Coercion)。 1. 智能指针与 Deref Trait 智能指针(如…...
Debian软件包重构
Explore projects GitLab 1. apt-get build-dep <pkg> ## 安装编译依赖包 2. apt source <pkg> ## 下载 <pkg> 包的源码 3. 创建 git ,打补丁 4. dpkg-buildpackage -b -uc -us -d ## 重新打包编译 # 解压出包中的文件到 extract 目…...
学习 `@PreDestroy`:Java EE/Jakarta EE 生命周期回调
学习 PreDestroy:Java EE/Jakarta EE 生命周期回调 前言1. 什么是 PreDestroy?2. PreDestroy 的用途3. 使用 PreDestroy 的条件4. 代码示例运行结果: 5. PreDestroy 的调用时机6. 注意事项7. 实际应用场景场景 1:数据库连接管理场…...
JDK最详细安装教程,零基础入门到精通,收藏这篇就够了
目录 一、下载与安装二、配置环境三、验证是否配置成功 一、下载与安装 1、下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、选择自己想要的版本下载,并且选择自己电脑对应的版本下载 3、下载完成之后,双击打开然后…...
解决DeepSeek服务器繁忙问题的实用指南
目录 简述 1. 关于服务器繁忙 1.1 服务器负载与资源限制 1.2 会话管理与连接机制 1.3 客户端配置与网络问题 2. 关于DeepSeek服务的备用选项 2.1 纳米AI搜索 2.2 硅基流动 2.3 秘塔AI搜索 2.4 字节跳动火山引擎 2.5 百度云千帆 2.6 英伟达NIM 2.7 Groq 2.8 Firew…...
【一个人的第一年】成都Java日志7
#海纳百川,有容乃大# 1.互联网 互联网是一个服务我的工具而不是绑架任何人的场所,网络不是现实,现实才是生活。 现在越来越多的声音出现在互联网,能轻易地挑起群体情绪。对其他的任何事可以有不同的立场和观点,而不是…...
回调处理器
文章目录 什么是回调处理器回调处理器的工作流程回调处理器的使用自定义链组件中的回调 内置回调处理器自定义回调处理器 在编程领域中,回调是一个非常重要的概念。简而言之,回调是一种特殊的函数或方法,它可以被传递给另一个函数作为参数&am…...
国产编辑器EverEdit -告别东找西找!一键打开当前文件所在目录!
1 文件操作 2 应用场景 在文件编辑过程中,有时需要对文件进行一些操作,比如:在命令窗口输入文件路径、文件名,进入到文件目录,对文件进行压缩等,如果没有直达命令,用户需要通过文件管理器找到目…...
23种设计模式 - 解释器模式
模式定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现…...
深度学习在语音识别中的应用
引言 语音识别技术是人工智能领域中的一个重要分支,它使得机器能够理解和转换人类的语音为文本。深度学习的出现极大地推动了语音识别技术的发展。本文将介绍如何使用深度学习构建一个基本的语音识别系统,并提供一个实践案例。 环境准备 在开始之前&a…...
【相聚青岛】人工智能与材料国际学术会议即将召开
一、大会简介 人工智能与材料国际会议(ICAIM 2025) 官方网站:www.ic-aim.net 官方邮箱:icaim2025163.com 会议时间:2025年3.21-24 会议地点:中国青岛 会议检索:EI检索 截稿时间:2月…...
PHP会务会议系统小程序源码
📅 会务会议系统 一款基于ThinkPHPUniapp框架,精心雕琢的会议管理微信小程序,专为各类高端会议场景量身打造。它犹如一把开启智慧殿堂的金钥匙,为会议流程优化、开支精细化管理、数量精准控制、标准严格设定以及供应商严格筛选等…...
能够私有化部署的集装箱箱号识别软件,技术实现方法
启智畅想集装箱箱号识别软件是一种基于计算机视觉和OCR(光学字符识别)技术的工具,主要用于自动识别集装箱上的唯一编号(如ISO6346标准的箱号,格式为4位字母7位数字1位校验码)。以下是关于此类软件的关键信息…...
idea连接gitee后.反向创建仓库和分支
文章目录 自动关联你登录的账号填写你的仓库和分支完成后会在gitee上创建一个仓库 (使用idea远程兼容gitee并反向创建仓库和分支) 自动关联你登录的账号 填写你的仓库和分支 完成后会在gitee上创建一个仓库...
Java——面向对象编程
面向对象编程(Object-Oriented Programming, OOP)是Java的核心特性之一。它通过将现实世界中的事物抽象为对象,使程序更易于理解、维护和扩展。以下是Java面向对象编程的详细介绍: 1. 面向对象编程的四大特性 Java的面向对象编程…...
MAC快速本地部署Deepseek (win也可以)
MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型(LLM)本地运行框架,旨在简化大模型的部署和管理流程,使开发者、研究人员及爱好者能够高效地在本地环境中实验和…...
从猜想终结到算法革新,弹性哈希开启数据存储新篇章
目录 哈希表的前世今生基本原理从传统到现代:哈希表的演变历程 安德鲁 克拉皮文及其团队的创作历程弹性哈希详解基本原理优点技术细节 漏斗哈希解析基本原理优点技术细节 新算法的实际应用案例电子商务推荐系统金融交易监控系统社交媒体内容过滤物联网设备管理 结论…...
云端SaaS系统架构设计
随着互联网的发展,SaaS(软件即服务)架构在众多行业中得到了广泛应用。作为一种高效、可扩展的服务模式,SaaS不仅提升了企业的信息化水平,也使得服务提供商能够通过云计算平台实现全球范围内的业务交付。在设计一个现代…...
黑盒测试和白盒测试的主要优缺点
黑盒测试 vs. 白盒测试:优缺点对比 类别黑盒测试(Black-box Testing)白盒测试(White-box Testing)定义不关注代码实现,仅测试功能和输入输出关注代码逻辑,测试代码内部实现测试依据需求文档、功…...
获取每月最后一个工作日:考虑法定节假日与调休
在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过Java编写一个工具类来获取指定月份的最后一个工作日,并利用第三…...
Hayabusa:一款针对Windows事件日志的威胁搜索与取证分析工具
关于Hayabusa Hayabusa是一款针对Windows事件日志的威胁搜索与取证分析工具,该工具基于内存安全的Rust开发,支持多线程运行,并且是唯一完全支持 Sigma 规范(包括 v2 关联规则)的开源工具。 Hayabusa本质上是一个Windo…...
leetcode_位运算 190.颠倒二进制位
190. 颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。 1. 字符串 class Solution:# param n, an integer# return an integerdef reverseBits(self, n):res "" # 创建一个保存结果的空字符串for b in str(bin(n))[2:]:# 遍历n的二进制数res b res # 把每…...
O1 Embedder:让检索器思考后再行动
25年2月来自中科大和北京智源研究院的论文“O1 Embedder: Let Retrievers Think Before Action”。 大语言模型 (LLM) 的功能日益强大,彻底改变人们获取和利用信息的方式。值得注意的是,LLM 擅长执行细粒度数据表示,这有助于精确检索信息。它…...
Python项目中一些常用的关键字
数据定义与类型相关 int:表示整数类型。 float:用于表示浮点数类型。 str:字符串类型,用于处理文本数据。 bool:布尔类型,取值为True或False。 list:列表类型,可存储多个元素&am…...
Java 反射 (Reflection) 详解
一、什么是 Java 反射? Java 反射 (Reflection) 是 Java 语言的一个强大特性,它允许 在运行时 检查和修改类、接口、字段和方法的信息,而不需要在编译时知道这些信息。 换句话说,反射可以让你在程序运行过程中“动态”地获取类的…...
MicroPython使用ESP32和acs712模块测量电流
我们在做物联网应用时,电流检测是监控设备能耗、优化电源管理的重要手段,本文介绍如何利用MicroPython开发ESP32与ACS712霍尔电流传感器模块,实现高精度电流测量,并提供硬件连接、代码实现及校准方法,适用于智能家居、…...
Rust编程语言入门教程 (七)函数与控制流
Rust 系列 🎀Rust编程语言入门教程(一)安装Rust🚪 🎀Rust编程语言入门教程(二)hello_world🚪 🎀Rust编程语言入门教程(三) Hello Cargo…...
pdf预览在vue项目中的使用兼容ie浏览器
一、下载pdf预览插件 链接: https://pan.baidu.com/s/1wuzay-saAfiqtS-efd-cvw?pwd6m78 提取码: 6m78 二、创建一个pdf文件夹,将下载下来的文件build和web文件夹复制到pdf文件夹下 三、项目中使用 (路径由两部分组成,第一部分是项目存放pdf插件的路径…...
二级指针略解【C语言】
以int** a为例 1.二级指针的声明 a 是一个指向 int*(指向整型的指针)的指针,即二级指针。 通俗的讲,a是一个指向指针的指针,对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...
前端基础入门:HTML、CSS 和 JavaScript
在现代网页开发中,前端技术扮演着至关重要的角色。无论是个人网站、企业官网,还是复杂的 Web 应用程序,前端开发的基础技术 HTML、CSS 和 JavaScript 都是每个开发者必须掌握的核心技能。本文将详细介绍这三者的基本概念及其应用 一、HTML——网页的骨架 HTML(HyperText …...
测试 FreeSWITCH 的 sip_invite_route_uri
bgapi originate sofia/external/123461.132.230.73:5161 &echo 得到的是: 172.17.129.123:5088 -> 61.132.230.73:5161 INVITE sip:123461.132.230.73:5161 SIP/2.0 Via: SIP/2.0/UDP 8.141.11.8:5088;rport;branchz9hG4bKcagQFyUgF21NS Max-Forwards: 70 …...
网络安全中的机器学习
当涉及到网络安全时,技术一直是保护系统免受攻击和数据泄露的关键。在这篇论文中,我将介绍一些当前在网络安全领域使用的关键技术,包括加密,身份验证和防火墙。 首先,加密是网络安全中最常见的技术之一。加密是指使用算…...
Electron通过ffi-napi调用dll导出接口
electron使用ffi-napi环境搭建 附打包好的ffi-napi可以直接放到项目目录下使用,避免以后麻烦 一、安装node.js Node.js官网:https://nodejs.org/zh-cn/download,选择LTS长期稳定版本即可 需要注意Node.js 区分32和64位,32位版…...
使用 DeepSeek + 语音转文字工具 实现会议整理
目录 简述 1. DeepSeek与常用的语音转文字工具 1.1 DeepSeek 1.2 讯飞听见 1.3 飞书妙记 1.4 剪映电脑版 1.5 Buzz 2. 安装Buzz 3. 使用DeepSeek Buzz提取并整理语音文字 3.1 使用 Buzz 完成语音转文字工作 3.2 使用 DeepSeek 进行文本处理工作 3.3 整理成思维导图…...
RAGFLOW使用flask转发的open ai接口
flask转发openai标准接口 背景 搭建RAGFLOW 的过程中,遇到一个比较严重的问题,公司部署的大模型代理需要获取token,且token存在有效期5分钟,在RAGFLOW中不能直接用,所以希望通过flask项目转发请求。 方案 比较好的…...
语音芯片非隔离电源供电WT5104
语音芯片非隔离电源供电WT5104 语音芯片供电非隔离电源芯片 WT5104 介绍 在语音相关设备的运行中,稳定的电源供应是确保语音芯片正常工作、实现高质量语音交互的关键。WT5104 作为一款专为多种设备供电设计的非隔离电源芯片,能将常见的 220V 交流电高效转…...
P8752 [蓝桥杯 2021 省 B2] 特殊年份——string提取索引转换为值
这里写目录标题 链接题目代码大佬解答string提取索引转换为值 链接 P8752 [蓝桥杯 2021 省 B2] 特殊年份 题目 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <queue&g…...
玩机日记 12 群晖部署AList并配置SSL,安装opkg,使用rclone挂载到本地
目录 1、部署alist,配置ssl 安装alist 参考官方文档添加网盘 配置ssl 开启webdav访问 2、安装opkg 修改环境变量 添加计划任务 3、安装配置rclone挂载alist 安装rclone,新建remote 安装fuse3 挂载AList 添加计划任务 1、部署alist࿰…...
Fastgpt学习(5)- FastGPT 私有化部署问题解决
1.☺ 问题描述: Windows系统,本地私有化部署,postgresql数据库镜像日志持续报错" data directory “/var/lib/postgresql/data” has invalid permissions ",“ DETAIL: Permissions should be urwx (0700) or urwx,gr…...
我们来学nginx -- work process
题记 回看困惑工作进程能处理大量的并发请求几乎不会阻塞Worker进程可绑定到固定的核,避免CPU频繁地上下文切换看样子,还得转为人话 大白话 作为一般的应用的开发大部分人没有很强的底层技术基础如果深究,涉及复杂技术点,很容易…...
2000-2019年各省农业机械总动力数据
2000-2019年各省农业机械总动力数据 1、时间:2000-2019年 2、指标:行政区划代码、地区、年份、农业机械总动力(万千瓦) 3、范围:31省 4、来源:国家统计局、统计年鉴 5、指标解释:农业机械总动力是指主要用于农…...
Nginx 常用命令和部署详解及案例示范
一、Nginx常用命令 1.1 启动 Nginx 要启动 Nginx 服务,可以使用以下命令: sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服务,可以使用以下命令: sudo systemctl stop nginx1.3 重启 Nginx 在修改了 Nginx…...
从零开始用STM32驱动DRV8301:无人机/机器人电机控制指南
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么需要专业电机驱动?二、硬件架构深度解析2.1 STM32微控制器核心作用2.2 DRV8301三大核心功能功能…...
HTML5 面试题
1. HTML5 新增了哪些重要特性? 语义化标签:这些标签有助于提高页面的可读性和可维护性。多媒体支持:HTML5 引入了 和 标签,可以直接嵌入音频和视频文件,无需依赖插件。本地存储:引入了 localStorage 和 se…...
获取指定的python库安装路径
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” 贵在坚持! ---------------------------------------…...
C语言预处理学习笔记
1. 预处理器的功能 预处理器(Preprocessor)在编译C语言程序之前对源代码进行预处理。预处理指令以#号开头,主要包括文件包含、宏定义、条件编译等功能。 2. 文件包含 文件包含功能用于在一个文件中包含另一个文件的内容,通常用…...
动态内存分配算法对比:最先适应、最优适应、最坏适应与邻近适应
动态内存分配算法对比:最先适应、最优适应、最坏适应与邻近适应 在操作系统中,动态内存分配算法用于管理空闲内存块的分配和回收。最先适应算法(First Fit)、最优适应算法(Best Fit)和最坏适应算法&#x…...
Flutter 常见布局模型
Flutter的常见的布局模型有容器(Container)、弹性盒子布局(Flex、Row、Column、Expanded)、流式布局(Wrap、Flow)、层叠布局(Stack、Position)、滚动布局(ListView、Grid…...
数据结构系列一:初识集合框架+复杂度
前言 数据结构——是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是计算机专业的基础课程,但也是一门不太容易学好的课,它当中有很多费脑子的东西,之后在学习时,你若碰到了困惑或不解的地方 都是很正常的反应&…...