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

PyTorch 张量与自动微分操作

笔记

1 张量索引操作

import torch
​
# 下标从左到右从0开始(0->第一个值), 从右到左从-1开始
# data[行下标, 列下标]
# data[0轴下标, 1轴下标, 2轴下标]
​
def dm01():# 创建张量torch.manual_seed(0)data = torch.randint(low=0, high=10, size=(4, 5))print('data->', data)# 根据下标值获取对应位置的元素# 行数据 第一行print('data[0] ->', data[0])# 列数据 第一列print('data[:, 0]->', data[:, 0])# 根据下标列表取值# 第二行第三列的值和第四行第五列值print('data[[1, 3], [2, 4]]->', data[[1, 3], [2, 4]])# [[1], [3]: 第二行第三列 第二行第五列值   第四行第三列 第四行第五列值print('data[[[1], [3]], [2, 4]]->', data[[[1], [3]], [2, 4]])# 根据布尔值取值# 第二列大于6的所有行数据print(data[:, 1] > 6)print('data[data[:, 1] > 6]->', data[data[:, 1] > 6])# 第三行大于6的所有列数据print('data[:, data[2]>6]->', data[:, data[2] > 6])# 根据范围取值  切片  [起始下标:结束下标:步长]# 第一行第三行以及第二列第四列张量print('data[::2, 1::2]->', data[::2, 1::2])
​# 创建三维张量data2 = torch.randint(0, 10, (3, 4, 5))print("data2->", data2)# 0轴第一个值print(data2[0, :, :])# 1轴第一个值print(data2[:, 0, :])# 2轴第一个值print(data2[:, :, 0])
​
​
if __name__ == '__main__':dm01()

2 张量形状操作

2.1 reshape

import torch
​
​
# reshape(shape=(行,列)): 修改连续或非连续张量的形状, 不改数据
# -1: 表示自动计算行或列   例如:  (5, 6) -> (-1, 3) -1*3=5*6 -1=10  (10, 3)
def dm01():torch.manual_seed(0)t1 = torch.randint(0, 10, (5, 6))print('t1->', t1)print('t1的形状->', t1.shape)# 形状修改为 (2, 15)t2 = t1.reshape(shape=(2, 15))t3 = t1.reshape(shape=(2, -1))print('t2->', t2)print('t2的形状->', t2.shape)print('t3->', t3)print('t3的形状->', t3.shape)
​
​
​
if __name__ == '__main__':dm01()

2.2 squeeze和unsqueeze

# squeeze(dim=): 删除值为1的维度, dim->指定维度, 维度值不为1不生效  不设置dim,删除所有值为1的维度
# 例如: (3,1,2,1) -> squeeze()->(3,2)  squeeze(dim=1)->(3,2,1)
# unqueeze(dim=): 在指定维度上增加值为1的维度  dim=-1:最后维度
def dm02():torch.manual_seed(0)# 四维t1 = torch.randint(0, 10, (3, 1, 2, 1))print('t1->', t1)print('t1的形状->', t1.shape)# squeeze: 降维t2 = torch.squeeze(t1)print('t2->', t2)print('t2的形状->', t2.shape)# dim: 指定维度t3 = torch.squeeze(t1, dim=1)print('t3->', t3)print('t3的形状->', t3.shape)# unsqueeze: 升维# (3, 2)->(1, 3, 2)# t4 = t2.unsqueeze(dim=0)# 最后维度 (3, 2)->(3, 2, 1)t4 = t2.unsqueeze(dim=-1)print('t4->', t4)print('t4的形状->', t4.shape)
​
​
if __name__ == '__main__':dm02()

2.3 transpose和permute

# 调换维度
# torch.permute(input=,dims=): 改变张量任意维度顺序
# input: 张量对象
# dims: 改变后的维度顺序, 传入轴下标值 (1,2,3)->(3,1,2)
# torch.transpose(input=,dim0=,dim1=): 改变张量两个维度顺序
# dim0: 轴下标值, 第一个维度
# dim1: 轴下标值, 第二个维度
# (1,2,3)->(2,1,3) 一次只能交换两个维度
def dm03():torch.manual_seed(0)t1 = torch.randint(low=0, high=10, size=(3, 4, 5))print('t1->', t1)print('t1形状->', t1.shape)# 交换0维和1维数据# t2 = t1.transpose(dim0=1, dim1=0)t2 = t1.permute(dims=(1, 0, 2))print('t2->', t2)print('t2形状->', t2.shape)# t1形状修改为 (5, 3, 4)t3 = t1.permute(dims=(2, 0, 1))print('t3->', t3)print('t3形状->', t3.shape)
​
​
if __name__ == '__main__':dm03()

2.4 view和contiguous

# tensor.view(shape=): 修改连续张量的形状, 操作等同于reshape()
# tensor.is_contiugous(): 判断张量是否连续, 返回True/False  张量经过transpose/permute处理变成不连续
# tensor.contiugous(): 将张量转为连续张量
def dm04():torch.manual_seed(0)t1 = torch.randint(low=0, high=10, size=(3, 4))print('t1->', t1)print('t1形状->', t1.shape)print('t1是否连续->', t1.is_contiguous())# 修改张量形状t2 = t1.view((4, 3))print('t2->', t2)print('t2形状->', t2.shape)print('t2是否连续->', t2.is_contiguous())# 张量经过transpose操作t3 = t1.transpose(dim0=1, dim1=0)print('t3->', t3)print('t3形状->', t3.shape)print('t3是否连续->', t3.is_contiguous())# 修改张量形状# view# contiugous(): 转换成连续张量t4 = t3.contiguous().view((3, 4))print('t4->', t4)t5 = t3.reshape(shape=(3, 4))print('t5->', t5)print('t5是否连续->', t5.is_contiguous())
​
​
if __name__ == '__main__':dm04()

3 张量拼接操作

3.1 cat/concat

import torch
​
​
# torch.cat()/concat(tensors=, dim=): 在指定维度上进行拼接, 其他维度值必须相同, 不改变新张量的维度, 指定维度值相加
# tensors: 多个张量列表
# dim: 拼接维度
def dm01():torch.manual_seed(0)t1 = torch.randint(low=0, high=10, size=(2, 3))t2 = torch.randint(low=0, high=10, size=(2, 3))t3 = torch.cat(tensors=[t1, t2], dim=0)print('t3->', t3)print('t3形状->', t3.shape)t4 = torch.concat(tensors=[t1, t2], dim=1)print('t4->', t4)print('t4形状->', t4.shape)​
if __name__ == '__main__':# dm01()

3.2 stack

# torch.stack(tensors=, dim=): 根据指定维度进行堆叠, 在指定维度上新增一个维度(维度值张量个数), 新张量维度发生改变
# tensors: 多个张量列表
# dim: 拼接维度
def dm02():torch.manual_seed(0)t1 = torch.randint(low=0, high=10, size=(2, 3))t2 = torch.randint(low=0, high=10, size=(2, 3))t3 = torch.stack(tensors=[t1, t2], dim=0)# t3 = torch.stack(tensors=[t1, t2], dim=1)print('t3->', t3)print('t3形状->', t3.shape)
​
​
if __name__ == '__main__':dm02()

4 自动微分模块

4.1 梯度计算

"""
梯度: 求导,求微分 上山下山最快的方向
梯度下降法: W1=W0-lr*梯度   lr是可调整已知参数  W0:初始模型的权重,已知  计算出W0的梯度后更新到W1权重
pytorch中如何自动计算梯度 自动微分模块
注意点: ①loss标量和w向量进行微分  ②梯度默认累加,计算当前的梯度, 梯度值是上次和当前次求和  ③梯度存储.grad属性中
"""
import torch
​
​
def dm01():# 创建标量张量 w权重# requires_grad: 是否自动微分,默认False# dtype: 自动微分的张量元素类型必须是浮点类型# w = torch.tensor(data=10, requires_grad=True, dtype=torch.float32)# 创建向量张量 w权重w = torch.tensor(data=[10, 20], requires_grad=True, dtype=torch.float32)# 定义损失函数, 计算损失值loss = 2 * w ** 2print('loss->', loss)print('loss.sum()->', loss.sum())# 计算梯度 反向传播  loss必须是标量张量,否则无法计算梯度loss.sum().backward()# 获取w权重的梯度值print('w.grad->', w.grad)w.data = w.data - 0.01 * w.gradprint('w->', w)
​
​
if __name__ == '__main__':dm01()

4.2 梯度下降法求最优解

"""
① 创建自动微分w权重张量
② 自定义损失函数 loss=w**2+20  后续无需自定义,导入不同问题损失函数模块
③ 前向传播 -> 先根据上一版模型计算预测y值, 根据损失函数计算出损失值
④ 反向传播 -> 计算梯度
⑤ 梯度更新 -> 梯度下降法更新w权重
"""
import torch
​
​
def dm01():# ① 创建自动微分w权重张量w = torch.tensor(data=10, requires_grad=True, dtype=torch.float32)print('w->', w)# ② 自定义损失函数 后续无需自定义, 导入不同问题损失函数模块loss = w ** 2 + 20print('loss->', loss)# 0.01 -> 学习率print('开始 权重x初始值:%.6f (0.01 * w.grad):无 loss:%.6f' % (w, loss))for i in range(1, 1001):# ③ 前向传播 -> 先根据上一版模型计算预测y值, 根据损失函数计算出损失值loss = w ** 2 + 20# 梯度清零 -> 梯度累加, 没有梯度默认Noneif w.grad is not None:w.grad.zero_()# ④ 反向传播 -> 计算梯度loss.sum().backward()# ⑤ 梯度更新 -> 梯度下降法更新w权重# W = W - lr * W.grad# w.data -> 更新w张量对象的数据, 不能直接使用w(将结果重新保存到一个新的变量中)w.data = w.data - 0.01 * w.gradprint('w.grad->', w.grad)print('次数:%d 权重w: %.6f, (0.01 * w.grad):%.6f loss:%.6f' % (i, w, 0.01 * w.grad, loss))
​print('w->', w, w.grad, 'loss最小值', loss)
​
​
if __name__ == '__main__':dm01()

4.3 梯度计算注意点

# 自动微分的张量不能转换成numpy数组, 可以借助detach()方法生成新的不自动微分张量
import torch
​
​
def dm01():x1 = torch.tensor(data=10, requires_grad=True, dtype=torch.float32)print('x1->', x1)# 判断张量是否自动微分 返回True/Falseprint(x1.requires_grad)# 调用detach()方法对x1进行剥离, 得到新的张量,不能自动微分,数据和原张量共享x2 = x1.detach()print(x2.requires_grad)print(x1.data)print(x2.data)print(id(x1.data))print(id(x2.data))# 自动微分张量转换成numpy数组n1 = x2.numpy()print('n1->', n1)
​
​
if __name__ == '__main__':dm01()

4.4 自动微分模块应用

import torch
import torch.nn as nn  # 损失函数,优化器函数,模型函数
​
​
def dm01():# todo:1-定义样本的x和yx = torch.ones(size=(2, 5))y = torch.zeros(size=(2, 3))print('x->', x)print('y->', y)# todo:2-初始模型权重 w b 自动微分张量w = torch.randn(size=(5, 3), requires_grad=True)b = torch.randn(size=(3,), requires_grad=True)print('w->', w)print('b->', b)# todo:3-初始模型,计算预测y值y_pred = torch.matmul(x, w) + bprint('y_pred->', y_pred)# todo:4-根据MSE损失函数计算损失值# 创建MSE对象, 类创建对象criterion = nn.MSELoss()loss = criterion(y_pred, y)print('loss->', loss)# todo:5-反向传播,计算w和b梯度loss.sum().backward()print('w.grad->', w.grad)print('b.grad->', b.grad)
​
​
if __name__ == '__main__':dm01()

相关文章:

PyTorch 张量与自动微分操作

笔记 1 张量索引操作 import torch ​ # 下标从左到右从0开始(0->第一个值), 从右到左从-1开始 # data[行下标, 列下标] # data[0轴下标, 1轴下标, 2轴下标] ​ def dm01():# 创建张量torch.manual_seed(0)data torch.randint(low0, high10, size(4, 5))print(data->,…...

C语言数据在内存中的存储详解

在 C 语言的编程世界里,理解数据在内存中的存储方式是非常重要的,它能帮助我们更好地掌握数据类型、内存管理和程序性能优化等内容。今天,我就来给大家详细讲解数据在内存中的存储,包括整数、大小端字节序和浮点数的存储方式&…...

【AI大模型】SpringBoot整合Spring AI 核心组件使用详解

目录 一、前言 二、Spring AI介绍 2.1 Spring AI介绍 2.2 Spring AI主要特点 2.3 Spring AI核心组件 2.4 Spring AI应用场景 2.5 Spring AI优势 2.5.1 与 Spring 生态无缝集成 2.5.2 模块化设计 2.5.3 简化 AI 集成 2.5.4 支持云原生和分布式计算 2.5.5 安全性保障…...

linux-文件操作

在 Linux 系统中,文件操作与管理是日常使用和系统管理的重要组成部分。下面将详细介绍文件的复制、移动、链接创建,以及文件查找、文本处理、排序、权限管理等相关知识。 一、文件的复制 在 Linux 里,cp 命令可用于复制文件或目录&#xff…...

丢失的数字 --- 位运算

目录 一:题目 二:算法原理 三:代码实现 一:题目 题目链接: 268. 丢失的数字 - 力扣(LeetCode) 二:算法原理 三:代码实现 class Solution { public:int missingNumb…...

从Rtos到Linux:学习的策略

这里目的只是为了学习,哪天工作需要用上了能更顺利的上手,写文章的目的是为了记录和便于查询。工作的前两年主要是以mcu裸机为主,目的是压缩资源以最少的ram和flash实现最多的功能,后来五年做的东西越来越复杂的跑的rtos&#xff…...

BUUCTF——Mark loves cat

BUUCTF——Mark loves cat 进入靶场 简单的看了一下功能点 扫一下目录吧 扫目录发现一个.git 下一下源码看看 找到个flag.php和index.php <?php$flag file_get_contents(/flag);再看看index.php&#xff08;代码有点长&#xff0c;所以只留了后面有用的&#xff09; &…...

C/C++滑动窗口算法深度解析与实战指南

C/C滑动窗口算法深度解析与实战指南 引言 滑动窗口算法是解决数组/字符串连续子序列问题的利器&#xff0c;通过动态调整窗口边界&#xff0c;将暴力解法的O(n)时间复杂度优化至O(n)。本文将系统讲解滑动窗口的核心原理、C/C实现技巧及经典应用场景&#xff0c;助您掌握这一高…...

Webug4.0靶场通关笔记15- 第19关文件上传(畸形文件)

目录 第19关 文件上传(畸形文件) 1.打开靶场 2.源码分析 &#xff08;1&#xff09;客户端源码 &#xff08;2&#xff09;服务器源码 3.渗透实战 &#xff08;1&#xff09;构造脚本 &#xff08;2&#xff09;双写绕过 &#xff08;3&#xff09;访问脚本 本文通过《…...

黑马点评大总结

8.2.1 短信登录 首先是用户提交手机号&#xff0c;后端将生成的验证码以及用户信息存入session中&#xff0c;用户登录时进行拦截并从session中拿出来信息校验&#xff0c;并把用户信息存入ThreadLocal中session共享问题&#xff1a;每个tomcat有自己的一份session&#xff0c…...

LeetCode:返回倒数第k个结点

1、题目描述 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本题相对原题稍作改动 示例&#xff1a; 输入&#xff1a; 1->2->3->4->5 和 k 2 输出&#xff1a; 4 说明&#xff1a; 给定的 k 保证是有效的。 2、…...

zotero pdf中英翻译插件使用

最近发现一个pdf中英翻译的神器zotero-pdf2zh&#xff0c;按照官方安装教程走一遍的时候&#xff0c;发现一些流程不清楚的问题&#xff0c; 此文就是整理一些安装需要的文件以及遇到的问题&#xff1a; 相关文件下载地址 Zotero 是一款免费的、开源的文献管理工具&#xff0…...

Java后端程序员学习前端之CSS

什么是css Cascading Style Sheet 层叠级联样式表 表现 (美化网页) 字体&#xff0c;颜色&#xff0c;边距&#xff0c;高度&#xff0c;宽度&#xff0c;背景图片&#xff0c;网页定位&#xff0c;网页浮动.. 发展史 CSS1.0 CSS2.0 DIV(块)CSS&#xff0c;HTML与CSS结构分离…...

MySQL——数据库基础操作

学习MySQL之前&#xff0c;要先配置好相关环境与软件下载&#xff0c;怎么就不展开了&#xff1a;找找网上对应环境下的教程即可 目录 数据库与MySQL 案例使用 MySQL架构 SQL指令分类 储存引擎 库操作 创建数据库 编码集与校验规则 校验规则的影响 删除数据库 数…...

[低代码 + AI] 明道云与 Dify 的三种融合实践方式详解

随着低代码平台和大语言模型工具的不断发展,将企业数据与智能交互能力融合,成为提高办公效率与自动化水平的关键一步。明道云作为一款成熟的低代码平台,Dify 则是一个支持自定义工作流的开源 LLM 应用框架。两者结合,可以实现灵活、高效的智能化业务处理。 本文将详解明道…...

湖北理元理律师事务所:规模化债事服务的探索与实践

在个人债务问题日益普遍化的当下&#xff0c;如何通过合法、系统化的服务帮助债务人化解危机&#xff0c;成为法律服务业的重要课题。湖北理元理律师事务所作为经国家司法局批准设立的债事服务机构&#xff0c;其构建的“法律技术金融”服务模式&#xff0c;为债务优化领域提供…...

MySQL JOIN详解:掌握数据关联的核心技能

一、为什么需要JOIN&#xff1f; 在关系型数据库中&#xff0c;数据通常被拆分到不同的表中以提高存储效率。当我们需要从多个表中组合数据时&#xff0c;JOIN操作就成为了最关键的技能。通过本文&#xff0c;您将全面掌握MySQL中7种JOIN操作&#xff0c;并学会如何在实际场景中…...

深入浅出数据库规范化的三大范式

数据库的“成长之路”&#xff1a;从1NF到3NF的规范化进化 在数据库的世界里&#xff0c;关系模式就像一个“孩子”&#xff0c;需要一步步学习“规矩”&#xff0c;才能健康成长。今天&#xff0c;我们就来聊聊数据库的规范化历程——从第一范式&#xff08;1NF&#xff09;出…...

精益数据分析(39/126):SaaS与移动应用商业模式的关键要点剖析

精益数据分析&#xff08;39/126&#xff09;&#xff1a;SaaS与移动应用商业模式的关键要点剖析 在创业和数据分析的探索之旅中&#xff0c;每一次深入研究不同的商业模式都是一次宝贵的学习机会。今天&#xff0c;依旧怀揣着与大家共同进步的期望&#xff0c;深入解读《精益…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.3 数据脱敏与安全(模糊处理/掩码技术)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL数据脱敏实战&#xff1a;从模糊处理到动态掩码的全流程解析4.3 数据脱敏与安全&#xff1a;模糊处理与掩码技术深度实践4.3.1 数据脱敏的核心技术体系4.3.1.1 技…...

nginx面试题

nginx 返回状态码413 Nginx 状态码 413 表示“请求实体过大”&#xff08;Request Entity Too Large&#xff09;&#xff0c;意味着客户端发送的请求体大小超过了服务器允许的限制。 解决方法 修改 Nginx 配置文件&#xff1a; 找到 Nginx 配置文件&#xff0c;通常位于 /etc…...

flink rocksdb状态说明

文章目录 1.默认情况2.flink中的状态3.RocksDB4.对比情况5.使用6.RocksDB架构7.参考文章8.总结提示:以下主要考虑flink 状态永久存储 rocksdb情况,做一些简单说明 1.默认情况 当flink使用rocksdb存储状态时。无论是永久存储还是临时存储都可能会落盘写文件(如果没有配置存储…...

Linux | WEB服务器的部署及优化

一. web服务的常用知识 1.1 www www&#xff08;World Wide Web&#xff09;&#xff1a;即为万维网&#xff0c;常被称为“全球信息广播”。它是一种基于超文本和HTTP协议&#xff0c;能够将文字、图形、影像以及声音等多媒体信息&#xff0c;通过超链接的方式组织在一起&…...

Nginx正反向代理与正则表达式

目录 一&#xff1a;正向代理 1.编译安装nginx 2.配置正向代理 二&#xff1a;反向代理 1.配置nginx七层代理 2.配置nginx四层代理 三&#xff1a;nginx 缓存 1.缓存功能的核心原理和缓存类型 2.代理缓存功能设置 四&#xff1a;nginx rewrite 和正则表达式 1.Nginx…...

字节:LLM自动化证明工程基准

&#x1f4d6;标题&#xff1a;APE-Bench I: Towards File-level Automated Proof Engineering of Formal Math Libraries &#x1f310;来源&#xff1a;arXiv, 2504.19110 &#x1f31f;摘要 &#x1f538;大型语言模型&#xff08;LLM&#xff09;的最新进展在形式定理证明…...

豆包多轮对话优化策略:上下文理解与记忆,意图识别,对话管理

豆包多轮对话优化策略:上下文理解与记忆,意图识别,对话管理 上下文理解与记忆:我会分析每一轮用户输入的文本内容,理解其中的语义、意图和关键信息,并将这些信息与之前轮次的对话内容相结合,形成对整个对话上下文的理解和记忆。例如,在一个关于旅游规划的对话中,用户先…...

ADK 第四篇 Runner 执行器

智能体执行器 Runner&#xff0c;负责完成一次用户需求的响应&#xff0c;是ADK中真正让Agent运行起来的引擎&#xff0c;其核心功能和Agents SDK中的Runner类似&#xff0c;具体作用如下&#xff1a; 会话管理&#xff1a;自动读取/写入 SessionService&#xff0c;维护历史信…...

yolo 用roboflow标注的数据集本地训练 kaggle训练 comet使用 训练笔记5

本地训练 8gb内存&#xff0c;机械硬盘用了4分钟训练完了 ........... model torch.hub.load(path/to/yolov5, custom, path./runs/train/exp10/weights/best.pt, sourcelocal) 连不上github kaggel训练 传kaggle了 # Train YOLOv5s on COCO128 for 3 epochs !python train…...

chili3d笔记11 连接yolo python http.server 跨域请求 flask

from ultralytics import YOLO from flask import Flask, request, jsonify from flask_cors import CORS import base64 from io import BytesIO from PIL import Image import json# 加载模型 model YOLO(./yolo_detect/best.pt)app Flask(__name__) CORS(app) # 启用跨域…...

安全为上,在系统威胁建模中使用量化分析

*注&#xff1a;Open FAIR™ 知识体系是一种开放和独立的信息风险分析方法。它为理解、分析和度量信息风险提供了分类和方法。Open FAIR作为领先的风险分析方法论&#xff0c;已得到越来越多的大型组织认可。 在数字化风险与日俱增的今天&#xff0c;企业安全决策正面临双重挑战…...

STA中的multi_cycle 和false_path详细讨论

特殊路径&#xff1a;跨时钟域下的exception_path&#xff1a;分为多种情况优先 1、不同clk_domain ,但频率相同 create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM] create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP] set_multicycl…...

Vite 的工作流程

Vite 的工作流程基于其创新的 “预构建 按需加载” 机制&#xff0c;通过利用现代浏览器对原生 ES 模块的支持&#xff0c;显著提升了开发效率和构建速度。以下是其核心工作流程的详细分析&#xff1a; 一、开发环境工作流程 1. 启动开发服务器 冷启动&#xff1a;通过 npm …...

NGINX 的 ngx_http_auth_jwt_module模块

一、模块概述 ngx_http_auth_jwt_module 模块用于通过验证请求中提供的 JWT 来进行客户端授权。此模块支持 JSON Web 签名&#xff08;JWS&#xff09;、JSON Web 加密&#xff08;JWE&#xff09;以及嵌套 JWT&#xff08;Nested JWT&#xff09;&#xff0c;使其成为一种灵活…...

【Game】Powerful——Transformation Card(10)

文章目录 1 级卡片2 级卡片3 级卡片4 级卡片5 级卡片6 级卡片7 级卡片8 级卡片8.1、神兽8.2、珍兽 9、其他9.1、5 级变身卡9.2、8 级变身卡 10、PK 汇总物理 11、卡片合成 1 级卡片 千变万化等级要求&#xff1a;1 级 金钱龟&#xff0c;防御30⬆ 大耳兔&#xff0c;速度15⬆…...

【算法学习】递归、搜索与回溯算法(一)

算法学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言&#xff1a; 这个专题与前面的相比是比较有难度的&#xff0c;但是在平时刷题时出现的概率还是非常高的&#xff0c;下面还是按照之前的逻辑来理清一下这几道…...

发行基础:上传版本注意事项

1、steam的规则是上传&#xff0c;提审&#xff0c;随时可更新。 2、基本流程&#xff1a;根据app id以及depot id&#xff0c;上传本地游戏文件到服务器&#xff0c;把分支版本设置为默认&#xff0c;发布。 试玩版与正式版的app id与depot id是相互独立的。 3、理论上开发者…...

智算中心建设方案和前景分析

智算中心建设方案和前景分析 一、智算中心的概念与重要性 1.1 定义与内涵 智算中心&#xff0c;即智能计算中心&#xff0c;是基于最新人工智能理论&#xff0c;采用领先的人工智能计算架构&#xff0c;专门为人工智能应用提供所需的算力服务、数据服务和算法服务的新型基础…...

亚马逊卖家复刻案例:用社群分层策略实现海外用户月均消费3.2次

近年来&#xff0c;随着跨境电商市场的快速发展&#xff0c;全球消费模式经历深刻变革。尤其是在美国、欧洲等成熟市场&#xff0c;中小卖家面对高度市场集中和运营成本上升的双重压力&#xff0c;纷纷寻求以更精细化的用户运营来提高客户复购率&#xff0c;增加单用户价值。20…...

小刚说C语言刷题—1038编程求解数学中的分段函数

1.题目描述 编程求解数学中的分段函数。 …………x1 (当 x>0 )。 yf(x)…0 (当 x0 )。 ………x−1 (当 x<0 )。 上面描述的意思是&#xff1a; 当x>0 时 yx1 ; 当 x0 时 y0 ; 当 x<0 时 yx−1 。 输入 输入一行&#xff0c;只有一个整数x(−30000≤x≤30…...

kotlin 03flow-stateFlow和sharedFlow企业中使用

一 stateFlow和sharedFlow企业中使用 在企业级 Kotlin 项目中&#xff0c;StateFlow 和 SharedFlow 是 状态管理 与 事件分发 的核心工具&#xff0c;尤其在 MVVM 架构中扮演着极为关键的角色。 ✅ 企业中如何使用 StateFlow 和 SharedFlow 场景工具示例UI 状态同步&#xff…...

【机器学习|学习笔记】决策树Decision Tree(DT)的起源、原理、发展、改进和应用(附代码)

【机器学习|学习笔记】决策树Decision Tree&#xff08;DT&#xff09;的起源、原理、发展、改进和应用&#xff08;附代码&#xff09; 【机器学习|学习笔记】决策树Decision Tree&#xff08;DT&#xff09;的起源、原理、发展、改进和应用&#xff08;附代码&#xff09; 文…...

Kotlin-空值和空类型

变量除了能引用一个具体的值之外,还有一种特殊的值,那就是 null, 它代表空值, 也就是不引用任何对象 在Kotlin中, 对空值的处理是非常严格的,正常情况下,我们的变量是不能直接赋值为 null 的,否则无法编译通过, 这直接在编译阶段就避免了空指针问题 Kotlin中所有的类型默认都是…...

Java 企业级开发设计模式全解析

Java 企业级开发设计模式全解析 在 Java 企业级开发的复杂领域中&#xff0c;设计模式如同精湛的工匠工具&#xff0c;能够帮助开发者构建高效、可维护、灵活且健壮的软件系统。它们是无数开发者在长期实践中总结出的解决常见问题的最佳方案&#xff0c;掌握这些模式对于提升开…...

高并发内存池

文章目录 前言一、项目介绍二、内存池介绍1.池化技术2.内存池3.malloc视角下内存的管理 三、定长内存池3.1 设计思路3.2 数据结构 四、高并发内存池整体框架设计4.1 thread cachethreadcache哈希桶映射对齐规则threadcache TLS无锁访问 4.2 central cachecentral cache结构设计…...

常用对称加密算法的Python实现及详解

文章目录 **常用对称加密算法的Python实现及详解****1. 对称加密概述****1.1 对称加密的基本原理****1.2 对称加密的分类****1.3 对称加密的应用** **2. DES&#xff08;Data Encryption Standard&#xff09;****2.1 算法原理****2.2 Python实现****2.3 安全性分析** **3. 3DE…...

ByteArrayInputStream 类详解

ByteArrayInputStream 类详解 ByteArrayInputStream 是 Java 中用于从字节数组读取数据的输入流&#xff0c;位于 java.io 包。它允许将内存中的字节数组当作输入流来读取&#xff0c;是处理内存数据的常用工具。 1. 核心特性 内存数据源&#xff1a;从字节数组&#xff08;b…...

MySQL C API高效编程:C语言实现数据库操作的深入解析

知识点【MySQL C API】 1、头文件及MYSQL * 句柄 //头文件 #include <mysql/mysql.h>1、MYSQL MYSQL是一个结构体&#xff0c;封装了与数据库连接相关的所有状态&#xff0c;配置和数据。 2、MYSQL *的本质 类似于 FILE*&#xff0c;代表一个与数据库连接的通道&…...

字符串,数组,指针之间的关系

在C语言中&#xff0c;字符串、指针和数组之间有着紧密且复杂的关系&#xff0c;它们在内存存储、操作方式等方面相互关联&#xff0c;以下为你详细介绍&#xff1a; 字符串 定义&#xff1a;字符串是由字符组成的序列&#xff0c;以空字符&#xff08;\0&#xff09;作为结束…...

2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载

2025 年卫健委发布的《成人肥胖食养指南&#xff08;2024 年版&#xff09;》为减肥提供了科学的饮食指导。 &#x1f4e2;提示&#xff1a;文章排版原因&#xff0c;资源链接地址放在文章结尾&#x1f447;&#x1f447;&#xff0c;往下翻就行 &#x1f4e2;提示&#xff1…...

学习路线(机器人软件架构)

机器人软件系统架构从入门到专家学习路线 一、基础阶段&#xff08;6-12个月&#xff09;基础知识储备机器人基础概念&#xff1a;编程技能必备语言&#xff1a;工具链&#xff1a; 入门框架推荐资源&#xff1a; 中级阶段&#xff08;1-2年&#xff09;系统架构基础ROS进阶架构…...