矩阵的奇异值(Singular Values)
矩阵的奇异值(Singular Values)是奇异值分解(SVD)过程中得到的一组重要特征值。它们在许多应用中非常重要,如信号处理、数据压缩和统计学等。以下是对奇异值及其计算和性质的详细解释:
奇异值分解(SVD)
奇异值分解是矩阵分解的一种方法,它将任意一个实数或复数矩阵分解为三个特定矩阵的乘积。具体来说,对于一个 m × n m \times n m×n的矩阵 M \mathbf{M} M,其奇异值分解表示为:
M = U Σ V ⊤ \mathbf{M} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^\top M=UΣV⊤
其中:
- U \mathbf{U} U是一个 m × m m \times m m×m的正交矩阵,包含了矩阵 M \mathbf{M} M的左奇异向量。
- Σ \mathbf{\Sigma} Σ是一个 m × n m \times n m×n的对角矩阵,对角线上是矩阵 M \mathbf{M} M的奇异值,其余元素为零。
- V ⊤ \mathbf{V}^\top V⊤是一个 n × n n \times n n×n的正交矩阵,包含了矩阵 M \mathbf{M} M的右奇异向量。
奇异值的计算
奇异值 σ i \sigma_i σi是矩阵 M \mathbf{M} M的奇异值分解中对角矩阵 Σ \mathbf{\Sigma} Σ的非负对角元素。它们是 M M ⊤ \mathbf{M} \mathbf{M}^\top MM⊤和 M ⊤ M \mathbf{M}^\top \mathbf{M} M⊤M的非负特征值的平方根。具体来说,如果 M \mathbf{M} M的奇异值为 σ i \sigma_i σi,那么 σ i \sigma_i σi满足以下条件:
M M ⊤ u i = σ i 2 u i \mathbf{M} \mathbf{M}^\top \mathbf{u}_i = \sigma_i^2 \mathbf{u}_i MM⊤ui=σi2ui
M ⊤ M v i = σ i 2 v i \mathbf{M}^\top \mathbf{M} \mathbf{v}_i = \sigma_i^2 \mathbf{v}_i M⊤Mvi=σi2vi
其中, u i \mathbf{u}_i ui和 v i \mathbf{v}_i vi分别是 M M ⊤ \mathbf{M} \mathbf{M}^\top MM⊤和 M ⊤ M \mathbf{M}^\top \mathbf{M} M⊤M的特征向量。
奇异值的性质
- 非负性:奇异值总是非负的,即 σ i ≥ 0 \sigma_i \geq 0 σi≥0。
- 排列顺序:奇异值通常按降序排列,即 σ 1 ≥ σ 2 ≥ ⋯ ≥ σ min ( m , n ) \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_{\min(m,n)} σ1≥σ2≥⋯≥σmin(m,n)。
- 数量:一个 m × n m \times n m×n矩阵最多有 min ( m , n ) \min(m, n) min(m,n)个奇异值。
- 对称性:奇异值是对称矩阵的特征值的绝对值。
奇异值的应用
奇异值在许多领域都有广泛应用,包括但不限于:
- 矩阵近似:通过截断较小的奇异值,可以得到矩阵的低秩近似,用于数据压缩和降维。
- 数据压缩:在图像处理和压缩中,保留较大的奇异值可以有效减少数据存储量,同时保持较高的数据质量。
- 信号处理:奇异值分解用于去噪和信号恢复。
- 统计学:在主成分分析(PCA)中,奇异值用于确定数据的主成分方向和方差。
通过以上解释,希望能帮助你更好地理解奇异值及其在矩阵分析中的重要性。
好的,让我们通过一个具体的例子来说明奇异值的计算过程。
示例矩阵
考虑一个 2 × 2 2 \times 2 2×2的矩阵 A \mathbf{A} A:
A = ( 3 1 1 3 ) \mathbf{A} = \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix} A=(3113)
计算奇异值
- 计算 A ⊤ A \mathbf{A}^\top \mathbf{A} A⊤A和 A A ⊤ \mathbf{A} \mathbf{A}^\top AA⊤
首先,计算 A ⊤ A \mathbf{A}^\top \mathbf{A} A⊤A和 A A ⊤ \mathbf{A} \mathbf{A}^\top AA⊤:
A ⊤ A = ( 3 1 1 3 ) ⊤ ( 3 1 1 3 ) = ( 10 6 6 10 ) \mathbf{A}^\top \mathbf{A} = \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix}^\top \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix} = \begin{pmatrix} 10 & 6 \\ 6 & 10 \end{pmatrix} A⊤A=(3113)⊤(3113)=(106610)
A A ⊤ = ( 3 1 1 3 ) ( 3 1 1 3 ) ⊤ = ( 10 6 6 10 ) \mathbf{A} \mathbf{A}^\top = \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix} \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix}^\top = \begin{pmatrix} 10 & 6 \\ 6 & 10 \end{pmatrix} AA⊤=(3113)(3113)⊤=(106610)
注意到这两个矩阵是相同的。
- 求解 A ⊤ A \mathbf{A}^\top \mathbf{A} A⊤A的特征值
接下来,求解 A ⊤ A \mathbf{A}^\top \mathbf{A} A⊤A的特征值。设 A ⊤ A \mathbf{A}^\top \mathbf{A} A⊤A的特征值为 λ \lambda λ,我们需要解特征方程:
det ( A ⊤ A − λ I ) = 0 \det(\mathbf{A}^\top \mathbf{A} - \lambda \mathbf{I}) = 0 det(A⊤A−λI)=0
即:
det ( 10 − λ 6 6 10 − λ ) = 0 \det\begin{pmatrix} 10 - \lambda & 6 \\ 6 & 10 - \lambda \end{pmatrix} = 0 det(10−λ6610−λ)=0
计算行列式:
( 10 − λ ) 2 − 36 = 0 (10 - \lambda)^2 - 36 = 0 (10−λ)2−36=0
解这个二次方程:
λ 2 − 20 λ + 64 = 0 \lambda^2 - 20\lambda + 64 = 0 λ2−20λ+64=0
求解得到特征值:
λ = 16 和 λ = 4 \lambda = 16 \quad \text{和} \quad \lambda = 4 λ=16和λ=4
- 计算奇异值
奇异值是 A \mathbf{A} A的特征值的平方根。因此:
σ 1 = 16 = 4 \sigma_1 = \sqrt{16} = 4 σ1=16=4
σ 2 = 4 = 2 \sigma_2 = \sqrt{4} = 2 σ2=4=2
因此,矩阵 A \mathbf{A} A的奇异值为 σ 1 = 4 \sigma_1 = 4 σ1=4和 σ 2 = 2 \sigma_2 = 2 σ2=2。
奇异值分解
我们可以进一步进行奇异值分解(SVD),将矩阵 A \mathbf{A} A分解为:
A = U Σ V ⊤ \mathbf{A} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^\top A=UΣV⊤
其中:
- U \mathbf{U} U和 V \mathbf{V} V是正交矩阵(包含左奇异向量和右奇异向量)。
- Σ \mathbf{\Sigma} Σ是对角矩阵,包含奇异值。
对于本例中的矩阵 A \mathbf{A} A:
Σ = ( 4 0 0 2 ) \mathbf{\Sigma} = \begin{pmatrix} 4 & 0 \\ 0 & 2 \end{pmatrix} Σ=(4002)
计算 U \mathbf{U} U和 V \mathbf{V} V
左奇异向量 U \mathbf{U} U和右奇异向量 V \mathbf{V} V是通过求解以下方程得到的:
A A ⊤ u i = σ i 2 u i \mathbf{A} \mathbf{A}^\top \mathbf{u}_i = \sigma_i^2 \mathbf{u}_i AA⊤ui=σi2ui
A ⊤ A v i = σ i 2 v i \mathbf{A}^\top \mathbf{A} \mathbf{v}_i = \sigma_i^2 \mathbf{v}_i A⊤Avi=σi2vi
我们已知:
A A ⊤ = A ⊤ A = ( 10 6 6 10 ) \mathbf{A} \mathbf{A}^\top = \mathbf{A}^\top \mathbf{A} = \begin{pmatrix} 10 & 6 \\ 6 & 10 \end{pmatrix} AA⊤=A⊤A=(106610)
求解这两个矩阵的特征向量即可得到 U \mathbf{U} U和 V \mathbf{V} V。
通过计算,得到:
u 1 = v 1 = ( 1 2 1 2 ) , u 2 = v 2 = ( − 1 2 1 2 ) \mathbf{u}_1 = \mathbf{v}_1 = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix}, \quad \mathbf{u}_2 = \mathbf{v}_2 = \begin{pmatrix} -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix} u1=v1=(2121),u2=v2=(−2121)
因此:
U = V = ( 1 2 − 1 2 1 2 1 2 ) \mathbf{U} = \mathbf{V} = \begin{pmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} U=V=(2121−2121)
综上,矩阵 A \mathbf{A} A的奇异值分解为:
A = U Σ V ⊤ = ( 1 2 − 1 2 1 2 1 2 ) ( 4 0 0 2 ) ( 1 2 1 2 − 1 2 1 2 ) \mathbf{A} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^\top = \begin{pmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} \begin{pmatrix} 4 & 0 \\ 0 & 2 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} A=UΣV⊤=(2121−2121)(4002)(21−212121)
这就是矩阵 A \mathbf{A} A的奇异值计算和奇异值分解的完整过程。
相关文章:
矩阵的奇异值(Singular Values)
矩阵的奇异值(Singular Values)是奇异值分解(SVD)过程中得到的一组重要特征值。它们在许多应用中非常重要,如信号处理、数据压缩和统计学等。以下是对奇异值及其计算和性质的详细解释: 奇异值分解…...
清空flowable的表定义的相关表
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…...
Tailwind CSS 在vue里 的使用
在Vue项目中使用Tailwind CSS,你需要按照以下步骤操作: 安装Tailwind CSS npm包: npm install -D tailwindcss postcss autoprefixer 使用Tailwind CSS CLI工具创建配置文件: npx tailwindcss init -p 3.在tailwind.config.js中…...
【人工智能】--强化学习(2.0)
个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉强化学习与有监督学习的区别 🍈数据特点 🍈学习目标 🍈反馈机制 🍈策略…...
跟着峰哥学java 微信小程序 第二天 封装ES7 + 后端工作
1.前端 1.1使用promise封装 使用promise封装以至于在图片路径 统一路径中修改 //封装统一请求域名 const baseUrl "http://localhost:8080"; //封装后需导出 export const getBaseUrl()>{return baseUrl; } 导入外来资源 初始化数据 设置数据 将处理后的数据…...
QT学习(6)——QT中的定时器事件,两种实现方式;事件的分发event,事件过滤器
目录 引出定时器事件QTimerEventQTimer 事件的分发事件过滤器 总结QT中的鼠标事件定义QLable的鼠标进入离开事件提升为myLabel重写QLabel的函数鼠标的事件鼠标的左中右键枚举鼠标多事件获取和鼠标移动鼠标追踪 QT中的信号和槽自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.…...
ASP.NET Core 6.0 使用 Action过滤器
Action过滤器 在ASP.NET Core中,Action过滤器用于在执行Action方法之前或之后执行逻辑。你可以创建自定义的Action过滤器来实现这一点。 继承 ActionFilterAttribute 类: [TypeFilter(typeof(CustomAllActionResultFilterAttribute))]public IActionRe…...
Java 并发集合:CopyOnWrite 写时复制集合介绍
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 016 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...
Linux 查看修改系统时间| date -s
Linux 查看修改系统时间 date 命令的介绍date基本语法date命令使用示例显示指定条件的时间设置指定条件的时间时间加减操作显示文件最后修改时间显示 UTC 时间 备注 date 命令的介绍 date 命令在 Linux/Unix 系统上的使用。 date 命令可以用于查看和设置系统时间。 date基本语…...
数据库MySQL学习笔记
数据库MySQL学习笔记 主要记录常见的MySQL语句学习过程,增删改查。 -- 显示所有数据库 SHOW DATABASES;-- 创建新数据库 CREATE DATABASE mydatabase;-- 使用数据库 USE mydatabase;-- 显示当前数据库中的所有表 SHOW TABLES;-- 创建新表 CREATE TABLE users (id …...
四端口千兆以太网交换机与 SFP 扩展功能
在数字化时代,网络基础设施的重要性日益凸显,它是企业和个人取得成功的关键支撑。配备 SFP 插槽的 4 端口千兆以太网交换机提供了一种灵活且可扩展的网络解决方案,能够应对快速的数据传输、低延迟以及不断增长的带宽需求。本篇文章深入探讨了…...
Renderless 思想正在影响前端开发
本文由前端小伙伴方长_beezen 原创。欢迎大家踊跃投稿。 原文链接:https://juejin.cn/post/7385752495535472655 前言 截止到 2024 年,跨端应用开发所需要考虑的兼容性,已经涵盖了框架、平台和设备类型等多个方面,例如࿱…...
maven 打包执行配置(对maven引用的包或者丢进去的包都包含在里面)打成jar包
一 、springboot jar包 maven的pom文件 1 在resources下放了一些文件想打进去jar包 2 在lib下放了其他稀奇古怪jar包文件想打进去jar包 编写如下引入jar <build><!-- 打包名称 --><finalName>${project.artifactId}</finalName><resources><…...
Python酷库之旅-第三方库Pandas(004)
目录 一、用法精讲 5、pandas.DataFrame.to_csv函数 5-1、语法 5-2、参数 5-3、功能 5-4、返回值 5-5、说明 5-6、用法 5-6-1、代码示例 5-6-2、结果输出 6、pandas.read_fwf函数 6-1、语法 6-2、参数 6-3、功能 6-4、返回值 6-5、说明 6-6、用法 6-6-1、代码…...
天猫超市卡怎么用
猫超卡是在天猫超市里面消费用的卡 但是我们现在买东西都喜欢货比三家,肯定是哪家划算在哪买,要是淘宝其他店铺或京东卖的更便宜,猫超卡自然就用不上了 这种情况的话,还不如直接把猫超卡的余额提出来,买东西也不受限…...
ai智能语音机器人电销系统:让销售更快速高效
智能机器人电销系统是指采用人工智能和机器人技术来实现的自动电销工具。随着企业竞争加剧,销售团队面临的挑战也越来越大。在人力资源和成本控制方面有很大的限制,而传统的电销方式也已经无法满足市场需求,因此需要一种新的解决方案来提高营…...
Redis 中的通用命令(命令的返回值、复杂度、注意事项及操作演示)
Redis 中的通用命令(高频率操作) 文章目录 Redis 中的通用命令(高频率操作)Redis 的数据类型redis-cli 命令Keys 命令Exists 命令Expire 命令Ttl 命令Type命令 Redis 的数据类型 Redis 支持多种数据类型,整体来说,Redis 是一个键值对结构的,…...
【Hive实战】 HiveMetaStore的指标分析
HiveMetaStore的指标分析(一) 文章目录 HiveMetaStore的指标分析(一)背景目标部署架构 hive-site.xml相关配置元数据服务的指标相关配置 源码部分(hive2.3系)JvmPauseMonitor.javaHiveMetaStore的内部类HMS…...
【Linux系统】CUDA的安装与graspnet环境配置遇到的问题
今天在安装环境时遇到报错: The detected CUDA version (10.1) mismatches the version that was used to compile PyTorch (11.8). Please make sure to use the same CUDA versions. 报错原因:安装的cuda版本不对应,我需要安装cuda的版本…...
滤波算法学习笔记
目录 引言 一、定义 二、分类 三、常见滤波算法 四、应用与优势 五、发展趋势 例程 1. 均值滤波(Moving Average Filter) 2. 中值滤波(Median Filter) 3. 高斯滤波(Gaussian Filter) 4.指数移动…...
【机器学习】机器学习的重要方法——线性回归算法深度探索与未来展望
欢迎来到 破晓的历程博客 引言 在数据科学日益重要的今天,线性回归算法以其简单、直观和强大的预测能力,成为了众多领域中的基础工具。本文将详细介绍线性回归的基本概念、核心算法,并通过五个具体的使用示例来展示其应用,同时探…...
百度云智能媒体内容分析一体机(MCA)建设
导读 :本文主要介绍了百度智能云MCA产品的概念和应用。 媒体信息海量且复杂,采用人工的方式对视频进行分析处理,面临着效率低、成本高的困难。于是,MCA应运而生。它基于百度自研的视觉AI、ASR、NLP技术,为用户提供音视…...
笔记本电脑部署VMware ESXi 6.0系统
正文共:888 字 18 图,预估阅读时间:1 分钟 前面我们介绍了在笔记本上安装Windows 11操作系统(Windows 11升级不了?但Win10就要停服了啊!来,我教你!),也介绍了…...
k8s 中间件
1. zookeeper 是的,Zookeeper 和 Kafka 经常一起使用,Zookeeper 在 Kafka 中扮演了关键角色。以下是 Zookeeper 和 Kafka 在实际项目中的结合使用及其作用的详细说明。 项目背景 假设我们有一个分布式数据处理系统,该系统需要高吞吐量的实…...
如何 提升需求确定性
提升需求确定性是确保项目成功的关键之一。以下是一些方法和策略可以帮助你提升需求的确定性: 积极的利益相关者参与: 确保所有关键利益相关者(包括最终用户、业务所有者、开发团队等)参与需求收集和确认过程。他们的参与可以提供…...
探索Sui的面向对象模型和Move编程语言
Sui区块链作为一种新兴的一层协议(L1),采用先进技术来解决常见的一层协议权衡问题。Cointelegraph Research详细剖析了这一区块链新秀。 Sui使用Move编程语言,该语言专注于资产表示和访问控制。本文探讨了Sui的对象中心数据存储模…...
【vue动态组件】VUE使用component :is 实现在多个组件间来回切换
VUE使用component :is 实现在多个组件间来回切换 component :is 动态父子组件传值 相关代码实现: <component:is"vuecomponent"></component>import componentA from xxx; import componentB from xxx; import componentC from xxx;switch(…...
springboot dynamic配置多数据源
pom.xml引入jar包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version> </dependency> application配置文件配置如下 需要主要必须配置…...
线性代数知识点搜刮
求你别考太细... 目录 异乘变零定理 行列式转置 值不变 重要关系 中间相等,取两头 特征值公式 向量正交 点积为0 拉普拉斯定理 矩阵的秩 特征值和特征向量 |A|特征值的乘积 & tr(A)特征值的和 要记要背 增广矩阵 异乘变零定理 某行(…...
景区智能厕所系统,打造智能化,人性化公共空间
在智慧旅游的大潮中,景区智能厕所系统正逐渐成为提升公共空间智能化、人性化水平的关键载体。作为智慧城市建设的重要组成部分,智能厕所系统不仅解决了传统公厕存在的诸多问题,更通过科技的力量,为游客创造了更加舒适、便捷的如厕…...
Windows中Git的使用(2024最新版)
Windows中Git的使用 获取ssh keys本地绑定邮箱初始化本地仓库添加到本地缓存区提交到本地缓存区切换本地分支为main关联远程分支推送到GitHub查看推送日志 Git 2020年发布了新的默认分支名称"main",取代了"master"作为主分支的名称。操作有了些…...
【pytorch12】什么是梯度
说明 导数偏微分梯度 梯度:是一个向量,向量的每一个轴是每一个方向上的偏微分 梯度是有方向也有大小,梯度的方向代表函数在当前点的一个增长的方向,然后这个向量的长度代表了这个点增长的速率 蓝色代表比较小的值,红色…...
南京,协同开展“人工智能+”行动
南京,作为江苏省的省会城市,一直以来都是科技创新和产业发展的高地。近日,南京市政府正式印发了《南京市进一步促进人工智能创新发展行动计划(2024—2026 年)》和《南京市促进人工智能创新发展若干政策措施》的“11”文…...
Selenium IDE 的使用指南
Selenium IDE 的使用指南 在自动化测试的领域中,Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件,为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…...
vue配置sql规则
vue配置sql规则 实现效果组件完整代码父组件 前端页面实现动态配置sql条件,将JSON结构给到后端,后端进行sql组装。 这里涉及的分组后端在组装时用括号将这块规则括起来就行,分组的sql连接符(并且/或者)取组里的第一个。…...
面试官:Redis执行lua脚本能保证原子性吗?
核心问题 Redis执行lua脚本是否能确保原子性? 面试经历 面试者在面试中自信回答Redis执行lua脚本能保证原子性,但未能深入解释原因。 原子性概念 原子性:一个事务的所有命令要么全部执行成功,要么全部执行失败。 Redis官方说…...
基于Chrome扩展的浏览器可信事件与网页离线PDF导出
基于Chrome扩展的浏览器可信事件与网页离线PDF导出 Chrome扩展是一种可以在浏览器中添加新功能和修改浏览器行为的软件程序,我们可以基于Manifest规范的API实现对于浏览器和Web页面在一定程度上的修改,例如广告拦截、代理控制等。Chrome DevTools Proto…...
马拉松报名小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,赛事信息管理,赛事报名管理,活动商城管理,留言板管理,系统管理 微信端账号功能包括:系统首页,赛事信息&…...
python使用pywebview集成vue3和element-plus开发桌面系统框架
随着web技术越来越成熟,就连QQ的windows客户端都用web技术来开发,所以在未来,web技术来开发windows桌面软件也会越来越多,所以在此发展驱动之下,将最近流程的python与web技术相结合,使用vue3和element-plus…...
C++线程的使用
C11之前,C语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C11中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高…...
算法库应用--寻找最长麦穗
学习贺利坚老师算法库 数据结构例程——串的顺序存储应用_使用顺序串存储身份证号-CSDN博客 本人详细解析博客 串的顺序存储的应用实例二_串的顺序存储应用-CSDN博客 版本更新日志 V1.0: 在原有的基础上, 进行优化名字, 并且有了相应的算法库作为支撑, 我使用了for循环来代替老…...
ython 使用 cx_Freeze 打包,不想要打包文件中能直接看到依赖的代码,如何处理
背景:因为使用 cx_Freeze 打包时,添加需要依赖的文件 cx_Freeze 是一个用于将 Python 程序打包成独立可执行文件的工具,支持多个平台。当你需要打包包含多个 .py 文件的项目时,你可以通过编写一个 setup.py 文件来指定哪些模块应…...
某DingTalk企典 - Token
⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 网址 aHR0cHM6Ly9kaW5ndGFsay5jb20vcWlkaWFuLw 浅聊一下 没毛病,就这字段,有效期…...
手写一个类似@RequestParam的注解(用来接收请求体的参数)
一、本文解决的痛点 按照大众认为的开发规范,一般post类型的请求参数应该传在请求body里面。但是我们有些post接口只需要传入一个字段,我们接受这种参数就得像下面这样单独创建一个类,类中再添加要传入的基本类型字段,配合Reques…...
【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code
【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code 前言node.js开发环境配置解决pnpm 不是内部或外部命令的问题(pnpm安装教程)解决 pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。 vscode 插件开…...
【ajax实战07】文章筛选功能
本文章目标:根据筛选条件,获取匹配数据展示 本章**“查询参数对象”指的是,要“获取文章列表”功能**中服务器接口要求配置的对象 实现步骤如下: 一:设置频道列表数据 二:监听筛选条件改变,…...
promise.all和promise.race的区别
Promise.all和Promise.race是JavaScript中Promise API的两个重要方法,它们在处理多个Promise对象时表现出不同的行为。以下是它们之间的主要区别: 1. 功能和行为 Promise.all: 功能:接收一个包含多个Promise的数组&#x…...
Python爬取豆瓣电影+数据可视化,爬虫教程!
1. 爬取数据 1.1 导入以下模块 import os import re import time import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent from openpyxl import Workbook, load_workbook1.2 获取每页电影链接 def getonepagelist(url,headers):try:r reque…...
初阶数据结构二叉树练习系列(1)
这个系列的文章将带大家一起刷题,并且总结思路 温馨提示:本篇文章里的练习题仅适合刚学完二叉树的小白使用 相同的树 思路 情况分析:第一种情况:两棵树都为空 → 返回true 第二种情况&am…...
【selenium 】操作元素
操作元素 元素操作鼠标操作键盘操作 元素操作 元素操作示例清空输入框clear()deiver.find_element_by_id(“username”).clear()输入文字send_keys()deiver.find_element_by_id(“username”).send_keys(‘zs’)元素点击 click()deiver.find_element_by_id(“login”).click()…...