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

【pytorch-04】:线性回归案例(手动构建)

文章目录

  • 1 构建数据集
  • 2 构建假设函数
  • 3 损失函数
  • 4 优化方法
  • 5 训练函数
  • 6.总结

1 构建数据集

为什么构建数据加载器?
在进行训练的时候都是采用的不是全部的数据,而是采用一个batch_size的数据进行训练,每次向模型当中送入batch_size数据,所以需要一个能够按照batch_size生成数据的数据加载器

import torch
from sklearn.datasets import make_regression # 构造数据加载器
import matplotlib.pyplot as plt
import random# 1. 构建数据集def create_dataset():# n_samples - 100 样本数量# n_feature - 设置特征个数# noise - 设置噪声,可以进行调整,出现波动# coef = True - 需要权重# bias = 14.5 - 偏置# random_state = 0 - 能够复现数据x, y, coef = make_regression(n_samples=100,n_features=1,noise=10,coef=True,bias=14.5,random_state=0)# 将构建数据转换为张量类型x = torch.tensor(x)y = torch.tensor(y)return x, y, coef# 2. 构建数据加载器, 按照一定的数据量产生数据
def data_loader(x, y, batch_size):# 2.1 计算下样本的数量data_len = len(y)# 2.2 构建数据索引data_index = list(range(data_len))# 2.3 数据集打乱random.shuffle(data_index)# 2.4 计算总的batch数量batch_number = data_len // batch_size# 遍历一个batchfor idx in range(batch_number):start = idx * batch_sizeend = start + batch_sizebatch_train_x = x[start: end]batch_train_y = y[start: end]yield batch_train_x, batch_train_ydef test01():x, y = create_dataset()plt.scatter(x, y)plt.show()for x, y in data_loader(x, y, batch_size=10):print(y)

2 构建假设函数

# 假设函数 y = wx + b
# 只有一个特征值,所以w初始值为一个标量,b的初始值也是一个标量
w = torch.tensor(0.1, requires_grad=True, dtype=torch.float64)
b = torch.tensor(0.0, requires_grad=True, dtype=torch.float64)def linear_regression(x):return w * x + b

3 损失函数

# 损失函数,采用MAS作为损失函数
def square_loss(y_pred, y_true):return (y_pred - y_true) ** 2

4 优化方法

# 优化方法 - 采用梯度下降法,进行权重参数的更新
def sgd(lr=1e-2):# 此处除以 16 使用的是批次样本的平均梯度值w.data = w.data - lr * w.grad.data / 16b.data = b.data - lr * b.grad.data / 16

5 训练函数

import torch
from sklearn.datasets import make_regression # 构造数据集
import matplotlib.pyplot as plt
import random# 1. 构建数据集def create_dataset():# n_samples - 100 样本数量# n_feature - 设置特征个数# noise - 设置噪声,可以进行调整,出现波动# coef = True - 需要权重# bias = 14.5 - 偏置# random_state = 0 - 能够复现数据x, y, coef = make_regression(n_samples=100,n_features=1,noise=10,coef=True,bias=14.5,random_state=0)# 将构建数据转换为张量类型x = torch.tensor(x)y = torch.tensor(y)return x, y, coef# 2. 构建数据加载器, 按照一定的数据量产生数据
def data_loader(x, y, batch_size):# 2.1 计算下样本的数量data_len = len(y)# 2.2 构建数据索引data_index = list(range(data_len))# 2.3 数据集打乱random.shuffle(data_index)# 2.4 计算总的batch数量batch_number = data_len // batch_size# 遍历一个batchfor idx in range(batch_number):start = idx * batch_sizeend = start + batch_sizebatch_train_x = x[start: end]batch_train_y = y[start: end]yield batch_train_x, batch_train_ydef test01():x, y = create_dataset()plt.scatter(x, y)plt.show()for x, y in data_loader(x, y, batch_size=10):print(y)# 假设函数 y = wx + b
# 只有一个特征值,所以w初始值为一个标量,b的初始值也是一个标量
w = torch.tensor(0.1, requires_grad=True, dtype=torch.float64)
b = torch.tensor(0.0, requires_grad=True, dtype=torch.float64)def linear_regression(x):return w * x + b# 损失函数,采用MAS作为损失函数
def square_loss(y_pred, y_true):return (y_pred - y_true) ** 2# 优化方法 - 采用梯度下降法,进行权重参数的更新
def sgd(lr=1e-2):# 此处除以 16 使用的是批次样本的平均梯度值w.data = w.data - lr * w.grad.data / 16b.data = b.data - lr * b.grad.data / 16def train():# 1.加载数据集x, y, coef = create_dataset()# 2.定义训练参数# epoch - 所有样本在模型中训练一遍称为一个epochepochs = 100learning_rate = 1e-2# 3.存储训练信息epoch_loss = [] # 记录每一个epoch的损失total_loss = 0.0train_samples = 0 # 统计训练的样本的数量for _ in range(epochs):# 4. 进行训练# 获取到数据,这里对于data_loader进行遍历,会一直将所有样本都取出# for循环执行一次就是一个epochfor train_x, train_y in data_loader(x, y, batch_size=16):# 1. 将训练样本送入模型进行预测y_pred = linear_regression(train_x)  # shape[16,1]# 2. 计算预测值和真实值的平方损失# reshape(-1,1) 将形状进行多行一列,让y_pred和train_y形状一样# print(len(y_pred),y_pred.size()) # 16 torch.Size([16, 1])# print(len(train_y),train_y.size()) # 16 torch.Size([16])loss = square_loss(y_pred, train_y.reshape(-1, 1)).sum()total_loss += loss.item()train_samples += len(train_y)# 3. 梯度清零# 对w和b进行求导,所以需要对于w和b进行梯度清零if w.grad is not None:w.grad.data.zero_()if b.grad is not None:b.grad.data.zero_()# 4. 自动微分loss.backward()# 5. 参数更新sgd(learning_rate)print('loss: %.10f' % (total_loss / train_samples))# 记录每一个 epoch 的平均损失epoch_loss.append(total_loss / train_samples)# 绘制数据集散点图plt.rcParams['font.sans-serif'] = ['SimHei']plt.scatter(x, y)# 绘制拟合的直线x = torch.linspace(x.min(), x.max(), 1000)y1 = torch.tensor([v * w + b for v in x])y2 = torch.tensor([v * coef + 14.5 for v in x])plt.plot(x, y1, label='训练')plt.plot(x, y2, label='真实')plt.grid()plt.legend()plt.show()# 打印损失变化曲线plt.plot(range(epochs), epoch_loss)plt.grid()plt.title('损失变化曲线')plt.show()if __name__ == '__main__':train()

在这里插入图片描述
在这里插入图片描述

6.总结

  • 采用sklearn中的make_regression()可以构造回归数据

指定:
n_samples - 样本个数
n_features - 特征个数
noise - 噪声
coef - 斜率(生成数据参考)
bias - 偏置
random_state - 指定随机种子,让实验重现

  • 采用data_loader(数据加载器),每次拿总样本的一部分进行训练

数据加载器需要知道:
x - 特征,可以计算得到特征的个数和特征的索引
y - 目标值
batch_size - 每次产生多少个,
batch数量计算:用总的样本个数//batch_size = batch
data_loader采用生成器,对batch数量进行循环,由多少个batch就循环多少次,每次产生一个batch_size的数据
data_loader是一个生成器,本质上也是一个迭代器,所以对data_loader进行一次完整的for循环,就会得到全部的数据

  • 假设函数

首先有假设函数的形式 - y = wx + b
x 如果是一个向量,有多个因变量
y 也是一个向量
将y w x b 都转换为tensor的形式,进行计算
y 就是函数的返回值

  • 训练函数

1.先加载数据集

2.获取到数据之后定义训练参数

  • epochs = 数据集中训练样本的个数,将数据集中的样本都训练一遍,称作一个epoch
  • 每个epoch的损失都要进行收集,所以定义一个epoch_loss列表
  • 进行梯度迭代的时候指定超参数学习率

3.存储信息定义参数

  • loss_epoch
  • total_loss
  • train_samples

4.分多个epoch,多个batch进行训练

  • 获取数据
  • 训练模型,得到y_pred
  • 计算损失函数
  • 进行梯度计算,反向传播
  • 进行参数更新

5.绘图展示

相关文章:

【pytorch-04】:线性回归案例(手动构建)

文章目录 1 构建数据集2 构建假设函数3 损失函数4 优化方法5 训练函数6.总结 1 构建数据集 为什么构建数据加载器? 在进行训练的时候都是采用的不是全部的数据,而是采用一个batch_size的数据进行训练,每次向模型当中送入batch_size数据&#…...

外包干了3年,技术退步明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…...

React Native 全栈开发实战班 -原生功能集成之相机与图片

在移动应用中,相机功能 和 图片选择 是非常常见的需求,用户可以通过相机拍照或从相册中选择图片。React Native 提供了多种方式来实现相机和图片选择功能,包括使用第三方库(如 react-native-image-picker)和调用原生模…...

以太坊交易处理全流程:数据采集、价格查询与问题解决

一、背景 在开发交易记录处理系统时,涉及从以太坊链上获取交易记录、将其存储到数据库、根据交易时间查询历史价格,并计算交易的美元价值。在这一过程中,涉及多个技术环节及工具的综合使用,例如区块链 API 调用、数据库操作、时间戳处理和外部数据接口整合。 本文涉及的内…...

css数据不固定情况下,循环加不同背景颜色

<template><div><p v-for"(item, index) in items" :key"index" :class"getBackgroundClass(index)">{{ item }}</p></div> </template><script> export default {data() {return {items: [学不会1, …...

【Node.js】Node.js 和浏览器之间的差异

Node.js 是一个强大的运行时环境&#xff0c;它在现代 JavaScript 开发中扮演着重要角色。然而&#xff0c;许多开发者在使用 Node.js 时常常会感到困惑&#xff0c;尤其是与浏览器环境的对比。本文将深入探讨 Node.js 和浏览器之间的差异&#xff0c;帮助你全面理解两者的设计…...

算法【最长递增子序列问题与扩展】

本文讲解最长递增子序列以及最长不下降子序列的最优解&#xff0c;以及一些扩展题目。本文中讲述的是最优解&#xff0c;时间复杂度是O(n*logn)&#xff0c;空间复杂度O(n)&#xff0c;好实现、理解难度不大。这个问题也可以用线段树来求解&#xff0c;时间和空间复杂度和本节讲…...

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

基本信息 原文标题&#xff1a;ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者&#xff1a;Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位&#xff1a;Stony Brook University…...

查询Mysql中被锁住的表以及如何解锁

当MySQL中的表被锁住时&#xff0c;可能会导致查询变慢或完全无法访问该表。处理这种情况的方法取决于锁的原因以及你想要达到的目标。以下是一些常见的步骤和技巧&#xff0c;可以帮助你解决被锁住的表的问题&#xff1a; 1. 识别锁的情况 首先&#xff0c;你需要确定哪些表…...

【Mac】未能完成该操作 Unable to locate a Java Runtime

重生之我做完产品经理之后回来学习Data Mining Mac打开weka.jar报错"未能完成该操作 Unable to locate a Java Runtime" 1. 打开终端执行 java -version 指令&#xff0c;原来是没安装 JDK 环境 yyzccnn-mac ~ % java -version The operation couldn’t be comple…...

RT_Thread内核源码分析(三)——线程

目录 1. 线程结构 2. 线程创建 2.1 静态线程创建 2.2 动态线程创建 2.3 源码分析 2.4 线程内存结构 3. 线程状态 3.1 线程状态分类 3.2 就绪状态和运行态 3.3 阻塞/挂起状态 3.3.1 阻塞工况 3.4 关闭状态 3.4.1 线程关闭接口 3.4.2 静态线程关闭 3.4.3 动态线程关…...

淘宝 NPM 镜像源

npm i vant/weapp -S --production npm config set registry https://registry.npmmirror.com 要在淘宝 NPM 镜像站下载项目或依赖&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 设置淘宝 NPM 镜像源 首先&#xff0c;你需要设置淘宝 NPM 镜像源以加速下载。可以通过…...

机器学习—学习曲线

学习曲线是帮助理解学习算法如何工作的一种方法&#xff0c;作为它所拥有的经验的函数。 绘制一个符合二阶模型的学习曲线&#xff0c;多项式或二次函数&#xff0c;画出交叉验证错误Jcv&#xff0c;以及Jtrain训练错误&#xff0c;所以在这个曲线中&#xff0c;横轴将是Mtrai…...

Rust 智能指针

Rust 智能指针 引言 Rust 是一种系统编程语言,以其内存安全性、并发性和高性能而闻名。Rust 的核心特性之一是其独特的所有权模型,它确保了内存安全,同时避免了垃圾收集。在 Rust 中,智能指针是一种特殊的数据结构,它们不仅存储数据,还负责管理数据的生命周期。智能指针…...

云原生周刊:Kubernetes v1.32 要来了

开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎&#xff0c;以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言&#xff0c;能够灵活适配不同开发流程&#xff0c;帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…...

Easyexcel(3-文件导出)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09; 响应头设置 通过设置文件导出的响应头&#xff0c;可以自定义文件导出的名字信息等 //编码格式为UTF-8 response.setC…...

php:使用socket函数创建WebSocket服务

一、前言 闲来无事&#xff0c;最近捣鼓了下websocket&#xff0c;但是不希望安装第三方类库&#xff0c;所以打算用socket基础函数创建个服务。 二、构建websocket服务端 <?phpclass SocketService {// 默认的监听地址和端口private $address 0.0.0.0;private $port 8…...

ubuntu20.04中编译安装gcc 9.2.0

ubuntu20.04中编译安装gcc 9.2.0,步骤如下&#xff1a; #install compile dependence libraries 1&#xff1a;$ sudo apt install libgmp-dev libisl-dev libmpc-dev libmpfr-dev # install gcc 9.2.0 # download source code 2&#xff1a;$ wget http://ftp.gnu.org/gn…...

ssm158企业人事管理系统的设计与实现+jsp(论文+源码)_kaic

设计题目&#xff1a;企业人事管理系统的设计与实现 摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据…...

OceanBase数据库产品与工具介绍

OceanBase&#xff1a;蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase&#xff1f; OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库&#xff0c;始创于 2010 年。它具有以下核心特点&#xff1a; 数据强一致性&#xff1a;在分布式架构下确保数据强…...

PakePlus将任何网页免费打包为mac/windows跨平台软件程序教程,只需要一个Github token就可以了

PakePlus是一个开源免费的软件&#xff0c;支持 Mac、Windows 和 Linux&#xff0c;很快也将支持 Android 和 iOS。无需在本地安装复杂的依赖环境&#xff0c;只需要一个Github Token就可以了。查看 README 以获取热门包和自定义开发信息。欢迎在讨论区分享你的建议。开源地址&…...

Element UI 组件库详解【Vue】

文章目录 一、引言二、安装并使用1. 安装2. 使用 三、常见组件说明1. 基础组件2. 布局组件3. 布局容器4. 选择框组件5. 输入框组件6. 下拉框组件7. 日期选择器8. 上传组件9. 表单组件10. 警告组件11. 提示组件12. 表格组件 一、引言 官方网站&#xff0c;element.eleme.cn El…...

Android kotlin之配置kapt编译器插件

配置项目目录下的gradle/libs.versions.toml文件&#xff0c;添加kapt配置项&#xff1a; 在模块目录下build.gradle.kt中增加 plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android)// 增加该行alias(libs.plugins.jetbrains.kotl…...

基于 MUSA 的大语言模型推理和服务框架vLLM

1. 引言​ vLLM是一个高性能且内存高效的大语言模型推理和服务框架&#xff0c;也是当前业界使用范围最广的大模型推理框架&#xff0c;截至目前github star数28.4k。该框架性能优秀&#xff0c;而且部署容易&#xff0c;使用CUDA/ROCm提供GPU加速能力。但vLLM目前不支持使用摩…...

k8s 集群安装

安装rockylinux https://www.jianshu.com/p/a5fe20318b8e https://www.cnblogs.com/haoee/p/18290506 配置VirtualBox双网卡 https://www.cnblogs.com/ShineLeBlog/p/17580311.html https://zhuanlan.zhihu.com/p/341328334 https://blog.csdn.net/qq_36544785/article/deta…...

Linux-服务器辨别实体机OR虚拟机

快速命令 ① lscpu(查看CPU信息) lscpu Hypervisor vendor: KVM (超管理器厂商&#xff1a;KVM。虚拟机&#xff1a;KVM / VMware) Virtualization: VT-x&#xff08;虚拟化&#xff1a;VT-x。实体机&#xff1a;VT-x / AMD-V&#xff09; ② systemd-detect-virt(检测当前系…...

堤防安全监测系统方案

一、背景情况 堤防是开发利用水资源和防治水灾害的重要工程措施之一&#xff0c;对防洪、供水、生态、发电、航运等至关重要。我国现有堤防9.8万多座&#xff0c;其中大中型堤防4700多座、小型堤防9.4万座&#xff0c;80%以上修建于上世纪50至70年代。由于堤防管护力量薄弱&am…...

Leetcode 求根节点到叶节点数字之和

使用深度优先搜索 DFS 来做 我提供的代码使用的是 深度优先搜索&#xff08;DFS&#xff0c;Depth-First Search&#xff09; 算法。以下是具体的算法思想和实现步骤的解释&#xff1a; 算法思想 树的路径代表数字&#xff1a; 树中每条从根节点到叶子节点的路径可以看作一个整…...

Git分布式版本控制系统

1. 版本控制系统 版本控制系统主要分为两类&#xff1a;集中式、分布式。 集中式&#xff1a;SVM(工作流程&#xff1a;所有的文件都保存在中央服务器上&#xff0c;每个电脑上只保存了一个副本&#xff0c;当需要修改时&#xff0c;先下载中央服务器上的最新版本文件&#xf…...

数据库审计工具--Yearning 3.1.9普民的使用指南

1 页面登录 登录地址:18000 &#xff08;不要勾选LDAP&#xff09; 2 修改用户密码 3 DML/DDL工单申请及审批 工单申请 根据需要选择【DML/DDL/查询】中的一种进行工单申请 填写工单信息提交SQL检测报错修改sql语句重新进行SQL检测&#xff0c;如检测失败可以进行SQL美化后…...

VMware Workstation 17.6.1

概述 目前 VMware Workstation Pro 发布了最新版 v17.6.1&#xff1a; 本月11号官宣&#xff1a;针对所有人免费提供&#xff0c;包括商业、教育和个人用户。 使用说明 软件安装 获取安装包后&#xff0c;双击默认安装即可&#xff1a; 一路单击下一步按钮&#xff1a; 等待…...

unity 中 RectTransform 的常用几个属性

RectTransform rectTransform this.GetComponent<RectTransform>(); rectTransform this.transform as RectTransform; Vector3 vector1 rectTransform.position; //自身轴心点相对于锚点的位置&#xff08;编译器显示的pos&#xff09; …...

23种设计模式-模板方法(Template Method)设计模式

文章目录 一.什么是模板方法模式&#xff1f;二.模板方法模式的特点三.模板方法模式的结构四.模板方法模式的应用场景五.模板方法模式的优缺点六.模板方法模式的C实现七.模板方法模式的JAVA实现八.代码解析九.总结 类图&#xff1a; 模板方法设计模式类图 一.什么是模板方法模…...

网络安全之国际主流网络安全架构模型

目前&#xff0c;国际主流的网络安全架构模型主要有&#xff1a; ● 信息技术咨询公司Gartner的ASA&#xff08;Adaptive Security Architecture自适应安全架构&#xff09; ● 美国政府资助的非营利研究机构MITRE的ATT&CK&#xff08;Adversarial Tactics Techniques &…...

SpringCloud多机部署,负载均衡-LoadBalance

一.负载均衡 1.1问题描述 //根据应用名称获取服务列表 List<ServiceInstance> instancesdiscoveryClient.getInstances("product-service"); //一个微服务可能有多个实例&#xff0c;获取第一个 EurekaServiceInstance instance(EurekaServiceInstance)insta…...

前端开发调试之 PC 端调试学习笔记

一、引言 在前端开发过程中&#xff0c;调试是至关重要的一个环节。它能帮助我们快速定位代码中的问题&#xff0c;无论是页面布局错乱、交互效果异常还是性能不佳等情况&#xff0c;通过有效的调试手段都可以找到根源并进行修复。而在 PC 端进行调试有着其特定的方法和技巧&am…...

视频流媒体播放器EasyPlayer.js无插件直播流媒体音视频播放器Android端webview全屏调用无效问题

流媒体播放器的核心技术与发展趋势正在不断推动着行业的变革。未来&#xff0c;随着技术的不断进步和应用场景的不断拓展&#xff0c;流媒体播放器将为用户带来更加便捷、高效、个性化的观看体验。同时&#xff0c;流媒体播放器也会成为数字娱乐产业的重要组成部分&#xff0c;…...

使用 cnpm 安装 Electron,才是正确快速的方法

当然&#xff0c;下面是总结的几种安装 Electron 的方法&#xff0c;包括使用 npm 和 cnpm&#xff0c;以及一些常见的问题解决技巧。 ### 1. 使用 npm 安装 Electron #### 步骤 1: 初始化项目 在你的项目目录中初始化一个新的 Node.js 项目&#xff1a; bash npm init -y …...

pytest日志总结

pytest日志分为两类&#xff1a; 一、终端&#xff08;控制台&#xff09;打印的日志 1、指定-s&#xff0c;脚本中print打印出的信息会显示在终端&#xff1b; 2、pytest打印的summary信息&#xff0c;这部分是pytest 的默认输出&#xff08;例如测试结果PASSED, FAILED, S…...

【Ubuntu24.04】使用服务器

目录 0 背景1 将文件传送到服务器1.1 主机上的虚拟机1.2 另一台独立的计算机(包括上面的虚拟机)1.3 远程文件传输1.3.1 scp2 操作服务器2.1 ssh2.2 Termius2.2.1 下载2.2.2 安装2.2.3 使用2.2.4 小结3 总结0 背景 你是一个开发者,有自己的测试环境:一个Linux服务器(假设是…...

Spark 之 Aggregate

Aggregate 参考链接&#xff1a; https://github.com/PZXWHU/SparkSQL-Kernel-Profiling 完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式&#xff08; groupingExpressions &#xff09;…...

ubuntu没有了有线网络如何修复

今天打开ubuntu之后发现有线网络连接没有了&#xff0c;如下图&#xff0c;此时是修复好之后的&#xff0c;“有线”部分存在&#xff0c;出现问题时是不存在的 此时只需要修改NetworkManager.conf配置文件&#xff0c;将managedfalse更改为managedtrue,保存退出就可以了 sudo…...

2411rust,异步函数

原文 Rust异步工作组很高兴地宣布,在实现在特征中使用异步 fn的目标方面取得了重大进度.将在下周发布稳定的Rust1.75版,会包括特征中支持impl Trait注解和async fn. 稳定化 自从RFC#1522在Rust1.26中稳定下来以来,Rust就允许用户按函数的返回类型(一般叫"RPIT")编…...

解决IDEA报包不存在,但实际存在的问题

前言 最近在把一个亿老项目交割给同事&#xff0c;同事在导入项目运行时遇到IDEA报包不存在&#xff0c;但实际存在的问题&#xff0c;最终通过以下方式解决 现象 在IDEA里启动运行项目&#xff0c;报某个类有问题&#xff0c;引入的包不存在。 点击这个引入的包&#xff0c;可…...

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 Chapter1 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题Chapter2 windows主机和ubuntu互传文件的4种方法 博文链接&#xff1a;Chapter3 安装好VMware tools后无法复制粘贴文本、拖拽文件的解决办法 Chapter1 解…...

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域&#xff0c;NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB&#xff0c;作为一款领先的NoSQL数据库&#xff0c;以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...

计算机网络(12)介质访问控制

ok通过前面的学习我们已经知道数据链路层提供的服务有帧封装&#xff0c;物理地址&#xff0c;流量控制&#xff0c;错误控制&#xff0c;访问控制。今天就来记录最后的访问控制。 介质访问控制 (MAC)详解 介质访问控制&#xff08;Media Access Control&#xff0c;简称 MAC&…...

Axios 响应拦截器与未登录状态的统一处理

目录 前言1. 响应拦截器的作用与应用场景1.1 什么是响应拦截器&#xff1f;1.2 响应拦截器的应用场景 2. 代码解读&#xff1a;响应拦截器中的未登录处理2.1 原始代码分析 3. 完善未登录处理逻辑3.1 未登录状态的用户体验优化3.2 改进后的代码实现 4. 实践中的场景4.1 登录态的…...

【MySQL系列】深入理解MySQL中的存储、排序字符集

前言 在创建数据库时&#xff0c;我们经常会需要填写数据库的所用字符集、排序规则&#xff0c;字符集和排序规则是两个非常重要的概念&#xff0c;它们决定了数据库如何存储和比较字符串数据。在 MySQL 中&#xff0c;常用的存储字符集有 utf8、utf8mb4&#xff0c;而排序字符…...

【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】

请阅读【嵌入式开发学习必备专栏】 文章目录 OpenOCD 无法识别CPUID 问题ARM CPUIDCPUID 特性CPUID 寄存器字段OpenOCD 无法识别CPUID 问题 在使用OpenOCD 进行CPU debug的过程中有时会报出 无法识别CPUID的问题,本文将会介绍如何解决这个问题。首先我们来学习下什么是CPUID,…...