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

动态规划----股票买卖问题(详解)

目录

一.买卖股票的最佳时机:

二.买卖股票的最佳时机含冷冻期:

三.买卖股票的最佳时期含⼿续费:

四.买卖股票的最佳时机III: 

五.买卖股票的最佳时机IV:


买卖股票的最佳时机问题介绍:动态规划买卖股票的最佳时机是一个经典的算法问题。该问题的目标是在给定的股票价格数组中,找到最大的利润,即最佳的买入和卖出时间,使得买入时间早于卖出时间。

下面我们通过一些例题,来解决这一类动态规划的问题:

一.买卖股票的最佳时机:

  • 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)
  • 题目描述:

    给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

    你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

    返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

①.动态规划解法:

  • 一.状态表示dp[ i ][ j ]:下标为 i 这一天结束的时候,手上持股状态为 j 时,我们持有的最大利润。这里我们定义状态 j (两种情况)分别为:
  • 买入状态
  • 可交易状态
  • 二.状态转移方程:
  • dp[ i ][ 0 ] = Math.max( dp[ i - 1 ][ 0 ], -prices[ i ]) ; ①.在前面一天已经是买入状态,今天选择什么也不干,今天结束后,是买入状态。②.前面是可交易状态,今天选择买入,则今天结束后是买入状态,这里注意不是dp[ i - 1][ 1 ] - prices[ i ];因为只能交易一次,如果今天选择买入,那后面一定要卖出(这算一次交易),此时才可能有最大利润。则前面不能有交易,利润为0.
  • dp[ i ][ 1 ] = Math.max( dp[ i - 1][ 1 ],dp[ i - 1][ 0 ] + prices[ i ]);①.前面一天是可交易状态,今天选择什么也不干,今天结束后是可交易状态。②.前面一天是买入状态,今天选择卖出,今天结束后是可交易状态。
  • 三.初始化:根据状态表示:
  • dp[ 0 ][ 0 ] = - prices[ 0 ];第一天选择买入,此时利润为 - prices[ 0 ]
  • dp[ 0 ][ 1 ] = 0;第一天选择什么也不干或则交易一次,此时的利润为0;
  • 四.填表顺序:根据状态转移方程,从左往右,从上往下填写.
  • 五.返回值:dp[ n - 1 ][ 1 ];n为prices数组的长度,最后一天结束后,是可交易状态,此时为最大利润.

各个状态关系图:

代码详解:

class Solution {// 1. 创建 dp 表// 2. 初始化// 3. 填表// 4. 返回值public int maxProfit(int[] prices) {int n = prices.length;int[][] dp = new int[n][2];//初始化dp[0][0] = -prices[0];dp[0][1] = 0;for(int i = 1;i < n;i++){//注意这里不是dp[i - 1][1] - prices[i];dp[i][0] = Math.max(dp[i - 1][0], - prices[i]);dp[i][1] = Math.max(dp[i - 1][1],dp[i - 1][0] + prices[i]);}//返回值return dp[n - 1][1];}
}

②.暴力解法(相对简单这里给出解题过程): 

代码详解:

class Solution {public int maxProfit(int[] prices) {int cost = Integer.MAX_VALUE;int profit = 0;for(int price : prices){cost = Math.min(cost,price);profit = Math.max(profit,price - cost);}return profit;}
}

运行结果:

 

二.买卖股票的最佳时机含冷冻期:

  • 题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode)
  • 问题描述:

    给定一个整数数组prices,其中第  prices[i] 表示第 i 天的股票价格 。​

    设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):

  • 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。

  • 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

动态规划解法:

一.状态表示dp[ i ][ j ]:由于有「买⼊」「可交易」「冷冻期」三个状态,因此我们可以选择⽤三个数组,其中:

  • dp[i][0] 表⽰:第 i 天结束后,处于「买⼊」状态,此时的最⼤利润;
  • dp[i][1] 表⽰:第 i 天结束后,处于「可交易」状态,此时的最⼤利润;
  • dp[i][2] 表⽰:第 i 天结束后,处于「冷冻期」状态,此时的最⼤利润

二.状态转移方程:

  • dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]); ①.前一天是买入状态,今天啥也不做,今天结束后是买入状态②.前面一天是可交易状态,今天选择买入,今天结束后是买入状态。
  • dp[i][1] = max(dp[i - 1][1], dp[i - 1][2]); ①.前面一天是可交易状态,今天啥也不干,今天结束后是可交易状态②.前面一天是冷冻期,今天啥也不干,今天过后是可交易状态
  • dp[i][2] = dp[i - 1][0] + prices[i];前面一天是买入状态,今天选择卖出,今天过后是冷冻期

三.初始化:

dp[0][0] = - prices[0] ;   dp[0][1] = 0 ;    dp[0][2] = 0;

四.填表顺序:从左往右,从上往下,依次填写三个表

五.返回值:状态转移方程三者的最大值:

 max(dp[n - 1][1], dp[n - 1] [2]);dp[n - 1][0]不可能是最大值,这里不用考虑进去(如果考虑进去了也没关系)

各个状态关系图:

代码详解

class Solution {// 1. 创建 dp 表// 2. 初始化// 3. 填表// 4. 返回值public int maxProfit(int[] prices) {int n = prices.length;int[][] dp = new int[n][3];dp[0][0] = -prices[0];for(int i = 1;i < n;i++){dp[i][0] = Math.max(dp[i - 1][0],dp[i - 1][1] - prices[i]);dp[i][1] = Math.max(dp[i - 1][1],dp[i - 1][2]);dp[i][2] = dp[i - 1][0] + prices[i];}return Math.max(dp[n - 1][1],dp[n - 1][2]);}
}

运行结果: 

三.买卖股票的最佳时期含⼿续费:

题目链接:714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

题目描述:

给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

 动态规划解法:

一.状态表示:由于有「买⼊」「可交易」两个状态,因此我们可以选择⽤两个数组来定义我们的状态(或则一个二维数组也行),其中:

  • f[i] 表⽰:第 i 天结束后,处于「买⼊」状态,此时的最⼤利润;
  • g[i] 表⽰:第 i 天结束后,处于「卖出」状态,此时的最⼤利润.

二.状态转移方程 :我们选择在「卖出」的时候,⽀付这个⼿续费,那么在「买⼊」的时候,就不⽤再考虑⼿续费的问题(完成一次交易支付手续费):

  • f[i] = max(f[i - 1], g[i - 1] - prices[i]) ;①.在 i - 1 天「持有」股票,第 i 天啥也不⼲。此时最⼤收益为 f[i - 1] ;②.在 i - 1 天的时候「没有」股票,在第 i 天买⼊股票。此时最⼤收益为 g[i - 1] - prices[i]) ;
  • g[i] = max(g[i - 1], f[i - 1] + prices[i] - fee);①.在 i - 1 天「持有」股票,但是在第 i 天将股票卖出。此时最⼤收益为: f[i - 1] + prices[i] - fee) ,记得⼿续费;②.在 i - 1 天「没有」股票,然后第 i 天啥也不⼲。此时最⼤收益为: g[i - 1]

三.初始化:由于需要⽤到前⾯的状态,因此需要初始化第⼀个位置:

  • 对于 f[0] ,此时处于「买⼊」状态,因此 f[0] = -prices[0]
  • 对于 g[0] ,此时处于「没有股票」状态,啥也不⼲即可获得最⼤收益,因此 g[0] = 0 

四.填表顺序:从左到右两个表一起填

五.返回值:应该返回「卖出」状态下,最后⼀天的最⼤值收益: g[n - 1] 

代码详解

class Solution {public int maxProfit(int[] prices, int fee) {int n = prices.length;int[] f = new int[n];int[] g = new int[n];f[0] = -prices[0];for(int i = 1;i < n;i++){f[i] = Math.max(f[i - 1],g[i - 1] - prices[i]);g[i] = Math.max(g[i - 1],f[i - 1] + prices[i] - fee);}return Math.max(f[n - 1],g[n - 1]);}
}

运行结果:

四.买卖股票的最佳时机III: 

题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode)

题目描述:

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

动态规划解法:

一.状态表示:由于有「买⼊」「可交易」两个状态,因此我们可以选择⽤两个数组。但是这道题⾥⾯还有交易次 数的限制,因此我们还需要再加上⼀维,⽤来表⽰交易次数。其中:

  • f[i][j] 表⽰:第 i 天结束后,完成了 j 次交易,处于「买⼊」状态,此时的最⼤利 润;
  • g[i][j] 表⽰:第 i 天结束后,完成了 j 次交易,处于「卖出」状态,此时的最⼤利 润。

二.状态转移方程:

  • f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);①.在 i - 1 天的时候,交易了 j 次,处于「买⼊」状态,第 i 天啥也不⼲即可。此时最 ⼤利润为: f[i - 1][j] ;②.在 i - 1 天的时候,交易了 j 次,处于「卖出」状态,第 i 天的时候把股票买了。此 时的最⼤利润为: g[i - 1][j] - prices[i] 。
  • g[i][j] = g[i - 1][j];

      if(j > 0) g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]);  

     ①.在 i - 1 天的时候,交易了 j 次,处于「卖出」状态,第 i 天啥也不⼲即可。此时的 最             ⼤利润为: g[i - 1][j] ;

    ②.在 i - 1 天的时候,交易了 j - 1 次,处于「买⼊」状态,第 i 天把股票卖了,然 后就完          成了 j ⽐交易。此时的最⼤利润为: f[i - 1][j - 1] + prices[i] 。但 是这个状态不⼀定存              在,要先判断⼀下。

三.初始化:

  • 当处于第 0 天的时候,只能处于「买⼊过⼀次」的状态,此时的收益为 -prices[0] ,因 此 f[0][0] = - prices[0] 。
  • 为了取 max 的时候,⼀些不存在的状态「起不到⼲扰」的作⽤,我们统统将它们初始化为 - INF (⽤ INT_MIN 在计算过程中会有「溢出」的⻛险,这⾥ INF 折半取 0x3f3f3f3f ,⾜够⼩即可)

四.填表顺序:从「上往下填」每⼀⾏,每⼀⾏「从左往右」,两个表「⼀起填」。

五.返回值:返回处于「卖出状态」的最⼤值,但是我们也「不知道是交易了⼏次」,因此返回 g 表最后⼀⾏ 的最⼤值。

代码详解:

class Solution {static int INF = -0x3f3f3f3f;public int maxProfit(int[] prices) {int n = prices.length;int[][] f = new int[n][3];int[][] g = new int[n][3];//1.f[0][0] = -prices[0];for(int i = 1;i < f[0].length;i++){f[0][i] = INF;}for(int j = 1;j < g[0].length;j++){g[0][j] = INF;//Integer.MIN_VALUE/2}//2.for(int i = 1;i < n;i++){for(int j = 0;j < 3;j++){f[i][j] = Math.max(f[i - 1][j],g[i - 1][j] - prices[i]);g[i][j] = g[i - 1][j];if(j > 0){g[i][j] = Math.max(g[i][j],f[i - 1][j - 1] + prices[i]);}}}int res = Integer.MIN_VALUE;for(int j = 0;j < 3;j++){ res = Math.max(res,g[n - 1][j]);}return res;}
}

运行结果:

五.买卖股票的最佳时机IV:

题目链接:188. 买卖股票的最佳时机 IV - 力扣(LeetCode)

题目描述:

给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次,卖 k 次。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

动态规划解法:

一.状态表示:为了更加清晰的区分「买⼊」和「卖出」,我们换成「有股票」和「⽆股票」两个状态:

  • f[i][j] 表⽰:第 i 天结束后,完成了 j 笔交易,此时处于「有股票」状态的最⼤收益;
  • g[i][j] 表⽰:第 i 天结束后,完成了 j 笔交易,此时处于「⽆股票」状态的最⼤收益

二.状态转移方程:

  • f[i][j] = max(f[i - 1][j], g[i - 1][j] - prices[i]);①.在 i - 1 天的时候,⼿⾥「有股票」,并且交易了 j 次。在第 i 天的时候,啥也不⼲。 此时的收益为 f[i - 1][j] ;②.在 i - 1 天的时候,⼿⾥「没有股票」,并且交易了 j 次。在第 i 天的时候,买了股 票。那么 i 天结束之后,我们就有股票了。此时的收益为 g[i - 1][j] - prices[i];
  • g[i][j] = max(g[i - 1][j], f[i - 1][j - 1] + prices[i]);①.在 i - 1 天的时候,⼿⾥「没有股票」,并且交易了 j 次。在第 i 天的时候,啥也不 ⼲。此时的收益为 g[i - 1][j] ;②.在 i - 1 天的时候,⼿⾥「有股票」,并且交易了 j - 1 次。在第 i 天的时候,把 股票卖了。那么 i 天结束之后,我们就交易了 j 次。此时的收益为 f[i - 1][j - 1] + prices[i] ;

三.初始化:

  • 当处于第 0 天的时候,只能处于「买⼊过⼀次」的状态,此时的收益为 -prices[0] ,因 此 f[0][0] = - prices[0]
  • 为了取 max 的时候,⼀些不存在的状态「起不到⼲扰」的作⽤,我们统统将它们初始化为 - INF (⽤ INT_MIN 在计算过程中会有「溢出」的⻛险,这⾥ INF 折半取 0x3f3f3f3f ,⾜够⼩即可)

四.填表顺序:从上往下填每⼀⾏,每⼀⾏从左往右,两个表⼀起填。

五.返回值:返回处于卖出状态的最⼤值,但是我们也不知道是交易了⼏次,因此返回 g 表最后⼀⾏的最⼤ 值

代码详解:

class Solution {static int INF = -0x3f3f3f3f;public int maxProfit(int k, int[] prices) {int n = prices.length;int[][] f = new int[n][k + 1];int[][] g = new int[n][k + 1];//1.f[0][0] = -prices[0];for(int i = 1;i < f[0].length;i++){f[0][i] = INF;//->防止越界g[i - 1][j] - prices[i];}for(int j = 1;j < g[0].length;j++){g[0][j] = INF;//Integer.MIN_VALUE/2}//2.for(int i = 1;i < n;i++){for(int j = 0;j < k + 1;j++){f[i][j] = Math.max(f[i - 1][j],g[i - 1][j] - prices[i]);g[i][j] = g[i - 1][j];if(j > 0){g[i][j] = Math.max(g[i][j],f[i - 1][j - 1] + prices[i]);}}}int res = Integer.MIN_VALUE;for(int j = 0;j < k + 1;j++){ res = Math.max(res,g[n - 1][j]);}return res;}
}

运行结果:

 结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!

相关文章:

动态规划----股票买卖问题(详解)

目录 一.买卖股票的最佳时机&#xff1a; 二.买卖股票的最佳时机含冷冻期&#xff1a; 三.买卖股票的最佳时期含⼿续费&#xff1a; 四.买卖股票的最佳时机III: 五.买卖股票的最佳时机IV: 买卖股票的最佳时机问题介绍&#xff1a;动态规划买卖股票的最佳时机是一个经典的…...

Unity射线检测不到MeshCollider的原因

当我们构建的模型是单面模型时&#xff0c;就会出现射线检测不到MeshCollider的问题&#xff0c;对于渲染&#xff0c;我们可以Cull Off来实现双面渲染&#xff0c;而在射线检测时&#xff0c;Unity提供了一个API来控制是否检测背面&#xff1a;Physics.queriesHitBackfaces 案…...

ssrf初步

一&#xff0c;简介 全称&#xff1a;Server-Side Request Forgery&#xff08;中文&#xff1a;服务器端请求伪造&#xff09; 攻击者从服务端发起请求&#xff0c;让服务器连接任意外部系统&#xff0c;从而泄露敏感数据。主要利用各种协议的请求伪造&#xff0c;例如php协…...

linux 安装 mangodb 并设置服务开机自启

1、下载 wget http://mosquitto.org/files/source/mosquitto-1.6.8.tar.gz 2、解压 tar -zxvf mosquitto-1.6.8.tar.gz 3、编译安装cd mosquitto-1.6.8 make sudo make install4、在当前目录。进入mosquitto服务文件存放的文件夹 cd service/systemd可以看到3个文件 点击read…...

Virtualbox7.0.10+Ubuntu20.04网络配置

虚拟机部署在服务器上时&#xff0c;需要进行网络配置&#xff0c;使虚拟机和服务器在同网段下&#xff0c;以保证内网的终端可以访问到虚拟机 1. 设置虚拟机 打开虚拟机设置&#xff0c;选择“网络”&#xff0c;将网卡设为桥接网卡 注&#xff1a;设置前&#xff0c;需要先…...

设计模式之服务定位器模式

想象一下&#xff0c;你的Java应用是一座庞大的迷宫&#xff0c;里面藏着无数宝贵的服务宝藏&#xff0c;而你正需要一张精确的藏宝图来指引方向&#xff0c;迅速找到并利用这些宝藏。服务定位器模式&#xff0c;正是这样一张神奇的地图&#xff0c;它帮你动态定位并获取应用中…...

冯喜运:5.12黄金回撤继续上涨,下周原油走势分析

【黄金消息面分析】&#xff1a;本周&#xff0c;黄金市场迎来了自4月中旬以来的最佳单周表现。周五&#xff08;3月9日&#xff09;&#xff0c;金价攀升至2360.54美元/盎司&#xff0c;涨幅0.62%&#xff0c;而纽约商品交易所6月交割的黄金期货价格上涨1.5%&#xff0c;收报2…...

JavaEE企业级开发中常用的JDK7和JDK8的时间类

JDK7时间类 全世界的时间有一个统一的计算标准 在同一条经线上的时间是一样的 格林威治时间 简称GMT 计算核心 地球自转一天是24小时 太阳直射正好是12小时 但是误差太大 现在用原子钟来代替 用铯原子震动的频率来计算时间&#xff0c;作为世界的标准时间UTC 中国标准时间…...

leetcode 2316.统计无向图中无法互相到达点对数

思路&#xff1a;并查集 其实就是连通块的一个变形题目&#xff0c;一般的连通块题目要我们求的是连通个数&#xff0c;或者能不能到达&#xff0c;这里反过来问了。 首先&#xff0c;我们用dfs也是可以做到的&#xff0c;在dfs中统计每一个连通块的个数&#xff0c;然后用乘…...

WPS二次开发系列:如何使用WPS返回的FileUri

作者持续关注 WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 目录 什么是FileUri 在SDK中的使用场景 打开文档时…...

python删除一个文件夹所有文件

在Python中&#xff0c;可以使用os模块来删除一个文件夹中的所有文件&#xff0c;但保留文件夹本身。以下是一个简单的例子&#xff1a; import osdef delete_files_in_folder(folder_path):for filename in os.listdir(folder_path):file_path os.path.join(folder_path, fi…...

overflow:hidden对解决外边距塌陷的个人理解

外边距塌陷&#xff1a; 子元素的上外边距大于父元素的上外边距&#xff0c;导致边距折叠&#xff0c;取两者之间最大值&#xff0c;即子元素外边距&#xff0c;导致父元素上外边距失效。 解决办法&#xff1a;在父元素样式添加overflow:hidden;或者border:1px solid black;(不…...

【linux软件基础知识】- 文件的概念:Linux 中的文件

Linux 中的文件 在 Linux 中,文件是存储在存储设备(例如硬盘驱动器或固态驱动器)上的数据项的集合。 文件被组织为字节序列,并由文件系统中的唯一名称来标识。 以下是 Linux 中文件的一些关键特征: 字节序列:Linux 中的文件被视为字节序列。 每个字节可以表示一个字符…...

Context capture/Pix4Dmapper/AutoCAD/CASS/EPS软件的安装流程与使用方法;土方量计算;无人机摄影测量数据处理

目录 专题一 无人机摄影测量技术应用现状及其发展 专题二 基本原理和关键技术讲解 专题三 无人机影像外业数据获取 专题四 数据处理环境建立与软件熟悉 专题五 GNSS数据土方量计算 专题六 基于无人机影像数据的正射影像制作 专题七 基于无人机影像数据的三维模型制作 专…...

算法系列之堆排序实践哪家强

1.概念 堆排序是一种树形选择排序&#xff0c;是对简单选择排序的有效改进和优化。 堆(heap)&#xff0c;这里所说的堆是数据结构中的堆&#xff08;对应于算法&#xff09;&#xff0c;而不是内存模型中的堆&#xff08;数据存储形式&#xff0c;还比如&#xff1a;栈&#…...

01-win10安装Qt5

Qt5安装教程 下载Qt5官网下载(下载很慢)镜像网站下载(有些版本没有资源)迅雷下载(推荐)百度网盘下载(推荐)安装Qt5下载Qt5 官网下载(下载很慢) 【注意】:官网下载非常慢,没有镜像下载时常20+ Qt 官网有一个专门的资源下载网站,所有的开发环境和相关工具都可以从这…...

mybatis使用及配置相关,仅做个人记录

在spring-boot项目中mybatis的配置文件在yml文件中&#xff0c;并没有mybatisconfig.xml文件 yml文件中配置&#xff1a;&#xff08;来源&#xff1a;https://blog.51cto.com/u_16213723/8747999&#xff09; mybatis:# XML文件路径&#xff0c;可配置多个&#xff0c;逗号分…...

【STM32 |新建一个工程】基于标准库(库函数)新建工程

目录 STM32开发方式 库函数文件夹 建工程步骤 库函数工程建立 建立工程总结 STM32开发方式 目前stm32的开发方式主要有基于寄存器的方式、基于标准库的方式&#xff08;库函数的方式&#xff09;、基于HAL库的方式基于库函数的方式是使用ST官方提供的封装好的函数&…...

C#利用ClearScript执行Javascript脚本

1&#xff0c;新建.netframework winform工程 2&#xff0c;打开nuget程序包管理界面&#xff0c;安装Microsoft.ClearScript.V8&#xff0c;Microsoft.ClearScript.V8.Native.win-x64. 3,编写Javascript脚本,另存为demo.js function testFunc(t) {return t "&#xf…...

住宅ip与数据中心ip代理的区别是什么

代理通常意味着“替代”。它是用户设备和目标服务器之间的中介&#xff0c;允许在不同的IP地址下上网。代理ip根据来源分类可分住宅ip与数据中心ip&#xff0c;二者之间区别是什么呢&#xff1f; 住宅ip是由互联网服务提供商(ISP)提供给家庭的IP地址。出于这个原因&#xff0c…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot&#xff0c;它能根据上下文补全代码&#xff0c;快速生成常用…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...