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

【动态规划】--- 斐波那契数模型

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:       9ilk

(๑•́ ₃ •̀๑) 文章专栏:     算法Journey 


🏠 第N个泰波那契数模型

📌 题目解析

第N个泰波那契数

  • 题目要求的是泰波那契数,并非斐波那契数。

📌 算法原理

🎵 递归

函数设置:我们可以设置一个Taibo()函数,它能帮我们求出第n个泰波那契数。

函数返回值:题目保证answer <= 2^31 - 1,设置为int即可。

函数实现:根据定义求泰波那契数,我们需要前三个的泰波那契数相加,也就是Taibo(n-3) + Taibo(n-2) + Taibo(n-1)。

函数边界条件:对于n = 0,1,2是边界情况,我们可以提前处理。

参考代码:

class Solution {
public:long Taibo(int n){if(n == 0)return 0;if(n == 1 || n == 2)return 1;return Taibo(n-1) + Taibo(n-2) + Taibo(n-3);}int tribonacci(int n){return Taibo(n);}
};

🎵 记忆化搜索

对于解法一存在下面的问题:

我们发现在递归过程有的节点的值(比如上图的Taibo(3))在第3层就已经求得了,但是其他节点递归深入时又重新计算了,导致了不必要的时间和栈空间的开销(时间复杂度:O(3^n),空间复杂度:O(N))。本题虽然n最大为37,但其实栈空间和时间开销已经很大了,肯定会超时,我们可以采取记忆化搜索的方法:

1. 添加一个备忘录。

2. 每次递归返回时,将结果放到备忘录里面。

3. 在每次进入递归时,往备忘录里查询是否已经记录。

参考代码:

class Solution {
public:vector<int> memory;long Taibo(int n){if (memory[n] != -1) //查看备忘录return memory[n];long ret = Taibo(n - 1) + Taibo(n - 2) + Taibo(n - 3);;memory[n] = ret; //存进备忘录return ret;}int tribonacci(int n){memory.resize(38, -1); //创建一个备忘录memory[0] = 0;memory[1] = memory[2] = 1;return Taibo(n);}
};
  • 此时比之前大大避免了不必要的时间开销,时间复杂度是(n)。

🎵 动态规划

我们动态规划分为以下几步:

1. 状态表示:

  • 所谓状态表示其实是dp表里每个值代表的含义。

Q:状态从何而来?

  • 题目要求(比如本题已经告诉我们要求的是第n个泰波那契数)。
  • 经验 + 题目要求(后面我们再提)。
  • 分析问题的过程,发现重复的子问题。

因此,本题dp[i]的含义是第i个泰波那契数。

2. 状态转移方程:

状态转移方程回答的是dp[i]怎么得到的问题,一般我们从"最近一步"得到。

比如本题中,由定义知,在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2,不就是dp[i] = dp[i-1] + dp[i-2] + dp[i-3]吗?

3. 初始化:

初始化保证我们填表的时候不发生越界!

当遇到n=2时,此时n-3=-1很明显会会发生越界,因此对于边界情况,我们可以提前确定好边界位置在dp表中的值,即dp[0] = 0, dp[1] = dp[2] = 1。

4. 填表顺序:

动态规划需要状态的推导,只有确定好填表顺序,才能确保在填写当前状态时,所需要的状态已经计算过了。

本题很明显是从左往右填表

5. 返回值:

我们需要根据题目要求+状态表示来确定返回值。

注:dp[i]不一定就是我们所需的返回值,我们还需结合题目要求,本题dp[n]就是我们需要的返回值。

参考代码:

class Solution 
{
public:int tribonacci(int n){//1.状态表示:dp[i]表示第N个泰波那切数vector<int> dp(38,-1);//2.初始化dp[0] = 0;dp[1] = dp[2] = 1;//3.填表for(int i = 3 ; i <= n ; i ++){dp[i] = dp[i-1] + dp[i-2] + dp[i-3];//4.状态转移方程} return dp[n];//5.返回值}
};

时间复杂度:O(N)

空间复杂度:O(1)

🎵 滚动数组

我们用vector容器来模拟dp表,但其实可以进一步优化,当求dp[i]只有前面的若干个状态,最前面的几个状态不需要浪费空间,此时可以使用滚动数组优化

我们可以利用四个变量来储存最近一次求泰波那契数的四个状态,不断进行滚动,最终求得目标结果!

注:对于赋值顺序,不能从右往左赋,即c = d,b = c, a = b因为d给c之后,c被d覆盖了,但是b想要的是c的,而c原本的值被覆盖了!

参考代码:

class Solution 
{
public:int tribonacci(int n){//1.状态表示:dp[i]表示第N个泰波那切数if (n == 0) return 0;if (n == 1 || n == 2) return 1;int a = 0;int b = 1;int c = 1;int d = 0;//3.填表for (int i = 3; i <= n; i++){d = a + b + c;;//状态转移方程a = b;b = c;c = d;}return d;}
};

🏠 三步问题

📌 题目解析

三步问题

📌 算法原理

1. 状态表示(经验 + 题目要求):

  • 状态表示:dp[i]表示到达i位置时,一共有多少种方法。

2. 状态转移方程:

我们从i位置的状态,最近的一步来划分问题,由于小孩一次可以上1阶,2阶,3阶:

  • 从i-1位置上来,此时dp[i] += dp[i-1]。
  • 从i-2位置上来,此时dp[i] += dp[i-2]。
  • 从i-3位置上来,此时dp[i] += dp[i-3]。

因此状态转移方程:dp[i] = dp[i-1] + dp[i-2] + dp[i-3]

3. 初始化:

 对于第1,2,3级的台阶,取它们的最近状态可能会造成数组越界(比如i为2时,i-3得-1会越界),因此我们可以提前设置好它们的状态:dp[1] = 1 , dp[2] = 2,dp[3] = 4

4. 填表顺序:

由状态转移方程知,我们i位置的状态依赖于前几个位置的状态,因此我们填表顺序是从左往右填。

5.返回值:

我们要求的是上到第n阶楼梯的总方法,直接返回dp[n]即可,注意要对结果模1000000007

参考代码:

class Solution 
{
public:int waysToStep(int n){if(n == 1 || n == 2) return n;if(n == 3) return 4;long a = 1; //dp[1]long b = 2; //dp[2] long c = 4; //dp[3]long d = 0; for(int i = 4 ; i <= n ; i ++) //空间优化{d = (a + b + c)%1000000007; //状态转移方程a = b;b = c;c = d;}      return d;}
};

🏠 最小花费爬楼梯

📌 题目解析

最小花费爬楼梯

  • 假设n为数组元素个数,则本题中楼梯顶部指的是dp[n],并非dp[n-1]。

📌 算法原理

🎵 解法一 (以i位置为结尾)

1. 状态表示:

  • dp[i]表示:到达 i 位置时,所需支付的最少费用。

2. 状态转移方程:

用i位置的最近一步(之前或之后的状态),推导出dp[i]的值。

  • 当到达i-1位置时,支付cost[i-1],走一步到达i位置 -> dp[i-1] + cost[i-1]。
  • 当到达i-2位置时,支付cost[i-2],走两步到达i位置 -> dp[i-2] + cost[i-2]。
  • 我们要么选择从i-1位置到i,要么选择从i-2位置到i,我们要的是最小花费,则选最小的即可。

因此状态转移方程:dp[i] = min(dp[i-1]+cost[i-1] , dp[i-2] + cost[i-2])。

3.初始化

我们需要保证填表的时候不越界,本题可以选择从下标为0或下标为1的位置开始爬楼梯,因此这两个位置最初的花费是0,即dp[0] = dp[1] = 0。

4. 填表顺序

根据我们的状态转移方程,我们需i位置之前的状态,因此填表顺序是从左往右填。

5. 返回值

返回达到楼梯顶部的最低花费,返回dp[n]即可。

参考代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();if(n == 1 || n == 0) return  0;vector<int> dp(n+1);dp[0] = dp[1] = 0 ; //初始化for(int i = 2 ; i <= n ; i ++) {dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}   //状态转移方程return dp[n]; //返回值}
};

🎵 解法二 (以i位置为起点)
 

1. 状态表示:

  • dp[i]表示:从i位置出发,所需支付的最少费用。

2. 状态转移方程:

用i位置的最近一步(之前或之后的状态),推导出dp[i]的值。

  • 支付cost[i], 往后走一步,从i+1的位置出发到终点 -> dp[i+1] + cost[i]
  • 支付cost[i], 往后走两步,从i+2的位置出发到终点 -> dp[i+2] + cost[i]
  • 我们从i位置要么选择走一步到终点,要么选择走两步到终点,我们要的是最小花费,则选最小的即可。

因此状态转移方程:dp[i] = min(dp[i+1] + cost[i] , dp[i+2] + cost[i])。

3.初始化

对于n-1位置和n-2位置作为出发点,此时他们走一步或两步就到顶部了,因此i+1和i+2会使他们越界,我们只需支付他们对应的cost即可,即dp[n-1] = cost[n-1] && dp[n-2] = cost[n-2]

4. 填表顺序

根据我们的状态转移方程,我们需i位置之后的状态,因此填表顺序是从右往左填。

5. 返回值

我们是从0或1位置为起点出发的,我们返回两者最小即可,即min(dp[0],dp[1])。

参考代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n);dp[n-2] = cost[n-2] ;dp[n-1] = cost[n-1];for(int i = n-3 ; i >= 0 ; i--){dp[i] = min(dp[i+1]+cost[i],dp[i+2]+cost[i]);} return min(dp[1],dp[0]);}
};

🏠 解码方法

📌 题目解析

91. 解码方法 - 力扣(LeetCode)

  • 本题可能存在无法解码的字符串。
  • 字符串中可能包含前导0。

📌 算法原理

1.状态表示:

根据经验+题目要求,我们可以设置dp[i]的状态:字符串以i位置结尾时,解码方法的总数

2. 状态转移方程:

我们还是按照最近一步来划分问题,对于i位置的解码我们以下两种情况:

(1) s[i] 单独解码:

  • 解码成功('1' <= s[i] <= '9',‘0’无法参与解码),此时解码总方法等于前一个位置的解码方法总数,即dp[i-1]。 
  • 解码失败,此时为0

(2) s[i] 与 s[i-1]解码

  • 解码成功(0 <= b*10+a <= 26),时解码总方法等于第i-2个位结尾字符串的解码方法总数,即dp[i-2]。 
  • 解码失败,此时为0

因此状态转移方程为:dp[i] = dp[i-1] + dp[i-2]

3. 初始化:

(1) i = 0时,位于字符串的第一个字符,我们只需判断它单独解码情况是否成立,取值可能为0,1。

(2) i = 1时,位于字符串的第二个字符,首先要单独解码就得先判断第一个字符能否单独解码否则没意义,能单独解码则dp[1]++;再判断与s[0]是否能解码,能则dp[1]++。其可能取值为0,1,2。

4. 状态转移方程 :

根据状态转移方程,我们需要之前位置的状态,因此填表顺序是从左往右。

5. 返回值:

由题意得,最终需要的是以size-1为位置结尾的字符串的所有解码方法,因此返回dp[size-1]。

参考代码:

class Solution {
public:int numDecodings(string s){int n = s.size();vector<int> dp(n);dp[0] = s[0] != '0';//初始化处理边界if(n == 1) return dp[0];if(s[0] != '0' && s[1] != '0') dp[1] += 1;//s[1]单独解码int t = (s[0]-'0')*10 + s[1] - '0'; if(t >= 10 && t <= 26) dp[1] += 1 ;//s[1]与前一个位置解码for(int i = 2 ; i < n ; i ++){//一个数编码if(s[i] != '0') dp[i] += dp[i-1];//两个数编码int t = (s[i-1]-'0')*10 + s[i] - '0'; if(t >= 10 && t <= 26) dp[i] += 1;}return dp[n-1];}
};

🎵 优化(虚拟节点)

Q:我们发现这两段代码相似度较高,处理逻辑是一样的,能不能把边界情况放进循环里处理呢?

这里我们介绍一下虚拟节点

我们可以在原dp表基础上扩充一个位置,保证最后一个位置下标为n,这样在处理字符串中原来下标为0位置的字符时,它在新dp表的下标变为1,这样i-1就不会越界!但是同时要注意两个问题:

1. 虚拟节点里面的值,要保证后面的填表时正确的。(比如对于新dp表的0下标位置,我们要保证对于如果字符串第二个位置的字符能跟第一个字符解码,此时需要新dp表i-2位置的值,也就是dp[0],此时我们需要设置它为1,表示存在第二个字符和第二个字符共同解码这一种解码方法)

2. 下标的映射关系:我们新dp表下标在原来基础上+1,但是s[i]的size并没有变化!

class Solution
{
public:int numDecodings(string s)
{
//优化int n=s.size();vector<int>dp(n + 1);dp[0]=1;//保证后面的填表是正确的dp[1]= s[1 - 1] != '0';
注意映射关系s[1-1]下标映射关系for(inti=2;i<=n;i++){if(s[i-1]!='0')dp[i]+=dp[i-1];//处理单独编码的情况int =(s[i-2]-'0')*10+s[i-1]-'0';//第二种情况所对应的数if(t>=10 &&t<=26)dp[i]+=dp[i] += dp[i - 2];}return dp[n];
}

完。

相关文章:

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey &#x1f3e0; 第N个泰波那契数模型 &#x1f4cc; 题目解析 第N个泰波那契数 题目要求的是泰波那契数&#xff0c;并非斐波那契数。 &…...

【EdgeAI实战】(1)STM32 边缘 AI 生态系统

【EdgeAI实战】&#xff08;1&#xff09;STM32 边缘 AI 生态系统 【EdgeAI实战】&#xff08;1&#xff09;STM32 边缘 AI 生态系统 1. STM32 边缘人工智能1.1 X-CUBE-AI 扩展包1.2 STM32 AI Model Zoo1.3 ST AIoT Craft 2. STM32N6 AI 生态系统 (STM32N6-AI)2.1 STM32N6 AI 产…...

【陕西省乡镇界】面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移内容测评

标题中的“陕西省乡镇界面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移.zip”表明这是一个地理信息系统&#xff08;GIS&#xff09;的数据集&#xff0c;专为陕西省的乡镇区域设计。该数据集以Shapefile&#xff08;shp&#xff09;格式提供&#xff0c;是GIS领…...

Fabric区块链网络搭建:保姆级图文详解

目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加…...

HTML 表单和输入标签详解

HTML 表单是网页与用户交互的重要工具&#xff0c;它允许用户输入数据并将其提交到服务器。表单在网页中的应用非常广泛&#xff0c;例如登录、注册、搜索、评论等功能都离不开表单。本文将详细介绍 HTML 表单及其相关标签的使用方法&#xff0c;帮助你全面掌握表单的设计与实现…...

sql实战解析-sum()over(partition by xx order by xx)

该窗口函数功能 sum( c )over( partition by a order by b) 按照一定规则汇总c的值&#xff0c;具体规则为以a分组&#xff0c;每组内按照b进行排序&#xff0c;汇总第一行至当前行的c的加和值。 从简单开始一步一步讲&#xff0c; 1、sum( )over( ) 对所有行进行求和 2、sum(…...

Vue平台开发三——项目管理页面

前言 对于多个项目的使用&#xff0c;可能需要进行项目切换管理&#xff0c;所以这里创建一个项目管理页面&#xff0c;登录成功后跳转这个页面&#xff0c;进行选择项目&#xff0c;再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…...

JDBC实验测试

一、语言和环境 实现语言&#xff1a;Java。 环境要求&#xff1a;IDEA2023.3、JDK 17 、MySQL8.0、Navicat 16 for MySQL。 二、技术要求 该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。 三、功能要求 某电商公司为了方便客服查看用户的订单信…...

使用 vllm 部署 MiniCPM-o 2.6

使用 vllm 部署MiniCPM-o 2.6 1. 创建虚拟环境2. 克隆代码3. 从代码安装 vllm4. 安装 flash-attn5. 启动 MiniCPM-o 2.66. 使用 chatbox 客户端访问并测试一下 1. 创建虚拟环境 conda create -n vllm_openbmb python3.11 -y conda activate vllm_openbmb 2. 克隆代码 git clo…...

WSL 2 自动更新 虚拟 IP 到 window hosts

window下的wsl2 开发中使用到 域名映射&#xff0c;但是WSL2 每次启动都会被分配一个虚拟的 ip 地址&#xff0c;每次启动虚拟ip 都不一样&#xff0c;导致要频繁 更改 window 的 hosts 文件&#xff0c;太麻烦了&#xff0c;所以写一个自动执行的 .sh 脚本&#xff0c;每次启动…...

非常棒的长文本输入大模型:MiniMax以及基于它的海螺AI模型

非常棒的长文本输入大模型&#xff1a;基于MiniMax的海螺AI模型&#xff0c;快来体验一下吧&#xff01; 海螺AI—MiniMax 旗下生产力产品&#xff0c;你的AI伙伴&#xff0c;10倍速提升工作学习效率 这个大模型最大的特点就是支持长文本输入&#xff0c;而且是从内部就擅长对长…...

python milvus及curl命令进行query请求

代码如下: from pymilvus import MilvusClient client = MilvusClient( uri="http://localhost:19530", token="root:Milvus" ) res = client.query( collection_name="query_collection", filter="color like \"…...

谈谈MySQL中的索引和事务

目录 1. 索引 1.1 索引介绍 1.2 缺陷 1.3 使用 1.3.1 查看索引 1.3.2 创建索引 1.3.3 删除索引 2. 索引底层的数据结构 2.1 B树 3. 事务 3.1 为什么使用事务 3.2 事务的使用 3.3 事务的基本特性 1. 索引 1.1 索引介绍 索引相当于一本书的目录(index), 在一…...

Java 资源管理教程:掌握 close 方法、Cleaner 类与 Runtime.addShutdownHook

在 Java 编程中&#xff0c;高效地管理资源是至关重要的&#xff0c;特别是当你处理文件、数据库连接、网络连接等有限资源时。为了确保这些资源得到正确释放&#xff0c;Java 提供了多种机制。本教程将深入探讨 close 方法、Cleaner类以及 Runtime.addShutdownHook 方法&#…...

tensorflow源码编译在C++环境使用

https://tensorflow.google.cn/install/source?hlzh-cn查看tensorflow和其他需要下载软件对应的版本&#xff0c;最好一模一样 1、下载TensorFlow源码 https://github.com/tensorflow/tensorflow 2、安装编译protobuf&#xff08;3.9.2&#xff09; protobuf版本要和TensorFlo…...

算法日记8:StarryCoding60(单调栈)

一、题目 二、解题思路&#xff1a; 题意为让我们找到每个元素的左边第一个比它小的元素&#xff0c;若不存在则输出-1 2.1法一&#xff1a;暴力&#xff08;0n2&#xff09; 首先&#xff0c;我们可以想到最朴素的算法&#xff1a;直接暴力两层for达成目标核心代码如下&…...

HarmonyOS快速入门

HarmonyOS快速入门 1、基本概念 UI框架&#xff1a; HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架可为开发者提供应用UI开发所必需的能力&#xff0c;比如多种组件、布局计算、动画能力、UI交互、绘制等。 方…...

基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…...

stm32使用MDK5.35时遇到*** TOOLS.INI: TOOLCHAIN NOT INSTALLED

mdk5.35出现*** TOOLS.INI: TOOLCHAIN NOT INSTALLED的问题&#xff01;&#xff01;&#xff01;&#xff01; 以管理员身份重新打开MDK5.35.0.0&#xff0c;用keygen破解密码&#xff0c;但是一直提示我是没有破解成功。 解决办法&#xff1a; target 改成ARM...

Java面试专题——常见面试题1

引入 本文属于专题中的常见面试题模块&#xff0c;属于面试时经常遇到的&#xff0c;适合需要面试的小伙伴做面试前复习准备用&#xff0c;后续会持续补充 1.面向对象基本特征 面向对象的基本特征是什么&#xff1f;怎么理解&#xff1f; 面向对象的基本特征是封装、继承、…...

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢&#xff1f; 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分&#xff1a; 4.项目…...

【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko

前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建&#xff0c;DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行&#xff0c;本次教程使用 Chromium​ 浏览器镜像进行演示&#xff0c;支持访问内网设备和公网地址。 简介 n.eko 是…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

本文验证基于请求头中传递token信息的认证方式&#xff0c;webapi项目的控制器类中新建如下函数&#xff0c;仅通过验证的客户端能调用&#xff0c;需要客户端请求在Header中添加’Authorization’: Bearer token’的键值对且通过token验证后才能调用。 [Authorize] [HttpGet]…...

Linux 内核自旋锁spinlock(一)

文章目录 前言一、自旋锁1.1 简介1.2 API1.2.1 spin_lock/spin_unlock1.2.2 spin_lock_irq/spin_unlock_irq1.2.3 spin_lock_irqsave/spin_unlock_irqstore1.2.4 spin_lock_bh/spin_unlock_bh1.2.5 补充 二、自选锁原理三、自旋锁在内核的使用3.1 struct file3.2 struct dentry…...

JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。

1.首先定义一个接口&#xff0c;接口中有两个方法&#xff0c;分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 &#xff0c;转换成后面的描述 这边定义了中文转换为默认方法&#xff0c;是因为有些属性不需要进行中文转换&#xff0c;或者该属性的枚举…...

利用免费GIS工具箱实现高斯泼溅切片,将 PLY 格式转换为 3dtiles

在地理信息系统&#xff08;GIS&#xff09;和三维数据处理领域&#xff0c;不同数据格式有其独特应用场景与优势。PLY&#xff08;Polygon File Format&#xff09;格式常用于存储多边形网格数据&#xff0c;而 3DTiles 格式在 Web 端三维场景展示等方面表现出色。将 PLY 格式…...

Mysql视图(学习自用)

一、概念 二、创建视图 三、查询视图 四、修改视图 五、删除视图 六、视图检查选项 七、视图的更新 八、视图的作用...

企业内训|基于华为昇腾910B算力卡的大模型部署和调优-上海某央企智算中心

近日上海&#xff0c;TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型&#xff0c;并结合实际应用场景&#xff0c;探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模…...

linux下一些参数的说明

/proc/sys/net/corebpf_jit_enable 作用&#xff1a;用于控制是否启用BPF&#xff08;Berkeley Packet Filter&#xff09;的即时编译&#xff08;JIT&#xff09;功能。当启用该功能时&#xff0c;JIT编译器会将eBPF&#xff08;extended Berkeley Packet Filter&#xff09;…...

CKS认证 | Day1 K8s集群部署与安全配置

一、K8s安全运维概述 Kubernetes&#xff08;K8s&#xff09; 是一个广泛使用的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。随着 K8s 在生产环境中的普及&#xff0c;安全运维成为确保系统稳定性和数据安全的关键。 1.1 安全运维的重要性 万物互联&…...

新手上路:Anaconda虚拟环境创建和配置以使用PyTorch和DGL

文章目录 前言步骤 1: 安装 Anaconda步骤 2: 创建新的 Anaconda 环境步骤 3: 安装最新版本的 PyTorch步骤 4: 安装特定版本的 PyTorch步骤 5: 安装最新版本的 DGL步骤 6: 安装特定版本的 DGL步骤 7: Pycharm中使用虚拟环境解释器第一种情况&#xff1a;创建新项目第二种情况&am…...

什么是PCB的Mark点?如何进行设计Mark点?

一、什么是Mark点&#xff1f; PCB的Mark点&#xff0c;也被称为基准点或光学定位点&#xff0c;是在印刷电路板&#xff08;Printed Circuit Board, PCB&#xff09;上设置的一种特殊标记。 ​ 图1.1 PCB的Mark点 Mark点的主要作用是为表面贴装技术&#xff08;Surface Mount…...

Spark SQL中的from_json函数详解

Spark SQL中的from_json函数详解 在Spark SQL中&#xff0c;from_json是一个用于解析JSON数据的函数&#xff0c;主要用于将JSON格式的字符串解析为结构化的数据&#xff08;即StructType或其他Spark SQL数据类型&#xff09;。这个函数在处理半结构化数据&#xff08;如JSON日…...

Vue 引入及简单示例

Vue 渐进式JavaScript 框架 学习笔记 - Vue 引入及简单示例 目录 与jquery区别 Vue引入 两种方式引入 下载到本地 代码结构 简单示例 Style中引入vue.js 对vue语法进行解析 对三目运算符支持 设置变量&#xff08;状态&#xff09; 总结 与jquery区别 不需要手动操…...

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本&#xff08;LTS&#xff09;&#xff1a;JDK 8、11、17、21&#xff1a;...

审计文件标识作为水印打印在pdf页面边角

目录 说明 说明 将审计文件的所需要贴的编码直接作为水印贴在页面四个角落&#xff0c;节省辨别时间 我曾经写过一个给pdf页面四个角落加上文件名水印的python脚本&#xff0c;现在需要加一个图形界面进一步加强其实用性。首先通过路径浏览指定文件路径&#xff0c;先检测该路…...

图片专栏——概念

欢迎来到图片世界&#xff0c;大家一起学习交流! 1. 像素&#xff08;Pixel&#xff09; 定义&#xff1a;像素是图像的最小单位&#xff0c;是“图像元素”的缩写。你可以把像素想象成拼图中的一个最小块&#xff0c;无数个像素组合在一起就形成了完整的图像。作用&#xff…...

江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降

《港湾商业观察》廖紫雯 日前&#xff0c;苏州江天包装科技股份有限公司&#xff08;以下简称&#xff1a;江天科技&#xff09;冲击北交所&#xff0c;保荐机构为国投证券。 江天科技主要从事标签印刷产品的研发、生产与销售&#xff0c;公司主要产品包括薄膜类和纸张类的不…...

HTB:Remote[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ftp尝试匿名…...

【开源免费】基于SpringBoot+Vue.JS密接者跟踪系统(JAVA毕业设计)

本文项目编号 T 145 &#xff0c;文末自助获取源码 \color{red}{T145&#xff0c;文末自助获取源码} T145&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

机器学习10-解读CNN代码Pytorch版

机器学习10-解读CNN代码Pytorch版 我个人是Java程序员&#xff0c;关于Python代码的使用过程中的相关代码事项&#xff0c;在此进行记录 文章目录 机器学习10-解读CNN代码Pytorch版1-核心逻辑脉络2-参考网址3-解读CNN代码Pytorch版本1-MNIST数据集读取2-CNN网络的定义1-无注释版…...

Python 电脑定时关机工具

Python 电脑定时关机工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#xff0c…...

机器学习09-Pytorch功能拆解

机器学习09-Pytorch功能拆解 我个人是Java程序员&#xff0c;关于Python代码的使用过程中的相关代码事项&#xff0c;在此进行记录 文章目录 机器学习09-Pytorch功能拆解1-核心逻辑脉络2-个人备注3-Pytorch软件包拆解1-Python有参和无参构造构造方法的基本语法示例解释注意事项…...

Qt之QDjango-db的简单使用

QDjango是一款由C编写、依托于Qt库的Web开发框架&#xff0c;其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集&#xff0c;帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango&…...

滑动窗口最大值(力扣239)

刚拿到这道题&#xff0c;我们第一反应就是遍历每一个滑动窗口&#xff0c;然后在滑动窗口中遍历找到该窗口的最大值,但是这样的时间复杂度为O(k*n).有没有更简单的方法呢&#xff1f;答案是使用队列。更准确的说是双向队列。下面我将详细讲解一下如何使用双向队列解决这道问题…...

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议&#xff0c;现在再来认识一下迭代版本 2。了解比起 1.1 版本&#xff0c;后面的版本改进在哪里&#xff0c;特点在哪里&#xff1f;话不多说&#xff0c;开始吧⭐️&#xff01; 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…...

Python 脚本-显示给定文件的文件信息

目录 Python 代码实现 Python 代码解释 1.导入必要的模块&#xff1a; 2.函数 get_file_info&#xff1a; 3.函数 print_file_info&#xff1a; 4.主函数 main&#xff1a; 5.程序入口&#xff1a; 使用方法 Python 代码实现 import os import stat import sys import…...

C# 通用缓存类开发:开启高效编程之门

引言 嘿&#xff0c;各位 C# 开发者们&#xff01;在当今快节奏的软件开发领域&#xff0c;提升应用程序的性能就如同给跑车装上涡轮增压&#xff0c;能让你的项目在激烈的竞争中脱颖而出。而构建一个高效的 C# 通用缓存类&#xff0c;无疑是实现这一目标的强大武器。 想象一…...

Mac安装Homebrew

目录 安装修改homeBrew源常用命令安装卸载软件升级软件相关清理相关 安装 官网 https://brew.sh/不推荐官网安装方式&#xff08;很慢很慢或者安装失败联网失败&#xff09; 检测是否安装homebrewbrew -v执行安装命令 苹果电脑 常规安装脚本 &#xff08;推荐 完全体 几分钟就…...

MySQL面试题2025 每日20道【其四】

1、你们生产环境的 MySQL 中使用了什么事务隔离级别&#xff1f;为什么&#xff1f; 中等 在生产环境中&#xff0c;MySQL数据库的事务隔离级别通常由开发团队或数据库管理员根据应用的需求来设定。MySQL支持四种标准的事务隔离级别&#xff1a; 读未提交&#xff08;Read Unc…...