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

【数学建模】一致矩阵的应用及其在层次分析法(AHP)中的性质

一致矩阵在层次分析法(AHP)中的应用与性质

在层次分析法(AHP)中,一致矩阵是判断矩阵的一种理想状态,它反映了决策者判断的完全合理性和一致性,也就是为了避免决策者认为“A比B重要,B比C重要,但是C又比A重要”的矛盾。

本文将详细介绍一致矩阵的定义、性质及其在AHP中的重要意义。

关于层次分析法(AHP)的介绍,可以参考:【数学建模】层次分析法(AHP)详解及其应用 。

一、一致矩阵的定义

定义:设 A = [ a i j ] n × n A = [a_{ij}]_{n \times n} A=[aij]n×n是判断矩阵,如果对于任意的 i , j , k ∈ { 1 , 2 , … , n } i, j, k \in \{1, 2, \ldots, n\} i,j,k{1,2,,n},都有:

a i j ⋅ a j k = a i k a_{ij} \cdot a_{jk} = a_{ik} aijajk=aik

则称矩阵 A A A一致矩阵

这一定义表明,在一致矩阵中,元素 i i i对元素 k k k的重要性可以通过元素 i i i对元素 j j j的重要性与元素 j j j对元素 k k k的重要性的乘积来确定

二、一致矩阵的基本性质

1. 倒数性

一致矩阵满足倒数性,即:

a j i = 1 a i j a_{ji} = \frac{1}{a_{ij}} aji=aij1

这表示元素 j j j相对于元素 i i i的重要性是元素 i i i相对于元素 j j j的重要性的倒数。

2. 传递性

一致矩阵满足传递性,即:

a i j ⋅ a j k = a i k a_{ij} \cdot a_{jk} = a_{ik} aijajk=aik

这表示判断的传递性,是一致矩阵的定义与核心特征

3. 秩为1

一致矩阵 A A A的秩 r a n k ( A ) = 1 rank(A) = 1 rank(A)=1,即一致矩阵是一个秩1矩阵。

4. 特征值和特征向量

一致矩阵 A A A有且仅有一个非零特征值 λ m a x = n \lambda_{max} = n λmax=n,对应的特征向量正是权重向量 W W W。其余 n − 1 n-1 n1个特征值均为0。

A ⋅ W = n ⋅ W A \cdot W = n \cdot W AW=nW

5. 表示形式

任意一致矩阵 A A A都可以表示为:

A = [ w 1 w 1 w 1 w 2 ⋯ w 1 w n w 2 w 1 w 2 w 2 ⋯ w 2 w n ⋮ ⋮ ⋱ ⋮ w n w 1 w n w 2 ⋯ w n w n ] A = \begin{bmatrix} \frac{w_1}{w_1} & \frac{w_1}{w_2} & \cdots & \frac{w_1}{w_n} \\ \frac{w_2}{w_1} & \frac{w_2}{w_2} & \cdots & \frac{w_2}{w_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{w_n}{w_1} & \frac{w_n}{w_2} & \cdots & \frac{w_n}{w_n} \end{bmatrix} A= w1w1w1w2w1wnw2w1w2w2w2wnwnw1wnw2wnwn

其中 W = ( w 1 , w 2 , … , w n ) T W = (w_1, w_2, \ldots, w_n)^T W=(w1,w2,,wn)T是权重向量。

三、一致矩阵的判定

1. 定义法判定

检验矩阵 A A A中的所有元素是否满足 a i j ⋅ a j k = a i k a_{ij} \cdot a_{jk} = a_{ik} aijajk=aik

2. 特征值法判定

计算判断矩阵 A A A的最大特征值 λ m a x \lambda_{max} λmax,如果 λ m a x = n \lambda_{max} = n λmax=n,则 A A A为一致矩阵。

3. 一致性指标判定

计算一致性指标 C I CI CI

C I = λ m a x − n n − 1 CI = \frac{\lambda_{max} - n}{n-1} CI=n1λmaxn

如果 C I = 0 CI = 0 CI=0,则 A A A为一致矩阵。

四、一致矩阵的构造

1. 直接构造法

如果已知权重向量 W = ( w 1 , w 2 , … , w n ) T W = (w_1, w_2, \ldots, w_n)^T W=(w1,w2,,wn)T,则可以直接构造一致矩阵:

a i j = w i w j a_{ij} = \frac{w_i}{w_j} aij=wjwi

2. 从非一致矩阵导出

对于非一致矩阵,可以通过以下步骤构造最接近的一致矩阵:

  1. 计算非一致矩阵的权重向量 W W W
  2. 利用 W W W构造一致矩阵 A ′ A' A,其中 a i j ′ = w i w j a'_{ij} = \frac{w_i}{w_j} aij=wjwi

五、一致矩阵在AHP中的意义

1. 理想判断的标准

一致矩阵代表了决策者判断的完全一致性,是判断矩阵的理想状态。在实际决策过程中,由于人的认知限制,很难直接给出一致矩阵,但它是我们追求的目标。

2. 一致性检验的基础

在AHP中,通过比较实际判断矩阵与一致矩阵的差异,来评估判断的一致性程度。一致性比率 C R CR CR越小,表示判断矩阵越接近一致矩阵,判断的一致性越好。

3. 权重计算的理论依据

一致矩阵的特性为AHP中权重计算提供了理论依据。对于一致矩阵,其权重向量就是对应于最大特征值的特征向量。

六、一致矩阵与非一致矩阵的关系

在实际应用中,由于决策者认知的局限性,通常得到的是非一致矩阵。非一致矩阵与一致矩阵的关系可以通过以下方式表示:

A = A ′ + E A = A' + E A=A+E

其中 A A A是实际的判断矩阵, A ′ A' A是对应的一致矩阵, E E E是误差矩阵。

AHP的一致性检验就是评估误差矩阵 E E E的大小,判断实际矩阵 A A A与理想一致矩阵 A ′ A' A的接近程度。

七、一致矩阵的数学证明示例

命题1:一致矩阵的最大特征值等于矩阵的阶数

证明
A A A n n n阶一致矩阵,权重向量为 W = ( w 1 , w 2 , … , w n ) T W = (w_1, w_2, \ldots, w_n)^T W=(w1,w2,,wn)T,则:

a i j = w i w j a_{ij} = \frac{w_i}{w_j} aij=wjwi

考虑 A ⋅ W A \cdot W AW的第 i i i行元素:

∑ j = 1 n a i j ⋅ w j = ∑ j = 1 n w i w j ⋅ w j = w i ∑ j = 1 n 1 = n ⋅ w i \sum_{j=1}^{n} a_{ij} \cdot w_j = \sum_{j=1}^{n} \frac{w_i}{w_j} \cdot w_j = w_i \sum_{j=1}^{n} 1 = n \cdot w_i j=1naijwj=j=1nwjwiwj=wij=1n1=nwi

因此, A ⋅ W = n ⋅ W A \cdot W = n \cdot W AW=nW,即 n n n A A A的特征值,对应的特征向量是 W W W

又因为 r a n k ( A ) = 1 rank(A) = 1 rank(A)=1,所以 A A A有且仅有一个非零特征值,即 λ m a x = n \lambda_{max} = n λmax=n

命题2:一致矩阵的一致性指标CI为0

证明
由命题1可知,一致矩阵的最大特征值 λ m a x = n \lambda_{max} = n λmax=n,因此:

C I = λ m a x − n n − 1 = n − n n − 1 = 0 CI = \frac{\lambda_{max} - n}{n-1} = \frac{n - n}{n-1} = 0 CI=n1λmaxn=n1nn=0

八、一致矩阵的实例

例1:2阶一致矩阵

A = [ 1 2 1 2 1 ] A = \begin{bmatrix} 1 & 2 \\ \frac{1}{2} & 1 \end{bmatrix} A=[12121]

验证:

  • a 12 ⋅ a 21 = 2 ⋅ 1 2 = 1 = a 11 a_{12} \cdot a_{21} = 2 \cdot \frac{1}{2} = 1 = a_{11} a12a21=221=1=a11
  • a 21 ⋅ a 12 = 1 2 ⋅ 2 = 1 = a 22 a_{21} \cdot a_{12} = \frac{1}{2} \cdot 2 = 1 = a_{22} a21a12=212=1=a22

权重向量: W = ( 2 / 3 , 1 / 3 ) T W = (2/3, 1/3)^T W=(2/3,1/3)T

例2:3阶一致矩阵

A = [ 1 2 6 1 2 1 3 1 6 1 3 1 ] A = \begin{bmatrix} 1 & 2 & 6 \\ \frac{1}{2} & 1 & 3 \\ \frac{1}{6} & \frac{1}{3} & 1 \end{bmatrix} A= 121612131631

验证:

  • a 12 ⋅ a 23 = 2 ⋅ 3 = 6 = a 13 a_{12} \cdot a_{23} = 2 \cdot 3 = 6 = a_{13} a12a23=23=6=a13
  • a 21 ⋅ a 13 = 1 2 ⋅ 6 = 3 = a 23 a_{21} \cdot a_{13} = \frac{1}{2} \cdot 6 = 3 = a_{23} a21a13=216=3=a23
  • a 31 ⋅ a 12 = 1 6 ⋅ 2 = 1 3 = a 32 a_{31} \cdot a_{12} = \frac{1}{6} \cdot 2 = \frac{1}{3} = a_{32} a31a12=612=31=a32

权重向量: W = ( 6 / 10 , 3 / 10 , 1 / 10 ) T W = (6/10, 3/10, 1/10)^T W=(6/10,3/10,1/10)T

九、一致矩阵在实际决策中的应用

在实际决策过程中,一致矩阵主要有以下应用:

  1. 作为判断矩阵一致性的参考标准:通过计算一致性比率CR,评估实际判断矩阵与理想一致矩阵的接近程度。

  2. 修正不一致判断:当判断矩阵的一致性不满足要求时,可以利用一致矩阵的性质对原判断矩阵进行修正。

  3. 简化判断过程:利用一致矩阵的传递性,可以减少判断的次数。理论上,对于 n n n个元素,只需要 n − 1 n-1 n1次判断就可以构造完整的一致矩阵。

十、结语

一致矩阵作为层次分析法中的理想判断状态,为我们提供了评估判断一致性的标准。虽然在实际决策中很难直接得到完全一致的判断矩阵,但通过一致性检验和必要的修正,我们可以使判断矩阵尽可能接近一致矩阵,从而提高决策的科学性和合理性。

理解一致矩阵的性质和意义,对于正确应用层次分析法、提高多准则决策的质量具有重要价值。


参考文献

  1. Saaty, T. L. (1980). The Analytic Hierarchy Process. New York: McGraw-Hill.
  2. 徐泽水. (2002). 层次分析法原理. 天津: 天津大学出版社.
  3. 许树柏. (1995). 层次分析法. 北京: 中国人民大学出版社.
  4. Saaty, T. L. (1977). A scaling method for priorities in hierarchical structures. Journal of Mathematical Psychology, 15(3), 234-281.

相关文章:

【数学建模】一致矩阵的应用及其在层次分析法(AHP)中的性质

一致矩阵在层次分析法(AHP)中的应用与性质 在层次分析法(AHP)中,一致矩阵是判断矩阵的一种理想状态,它反映了决策者判断的完全合理性和一致性,也就是为了避免决策者认为“A比B重要,B比C重要,但是C又比A重要”的矛盾。…...

【YOLOv8】YOLOv8改进系列(7)----替换主干网络之LSKNet

主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: 【YOLOv8】YOLOv8结构解读…...

【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中,我们已经学过了多表查询的一种:联合查询(union)。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先,我们想要查询emp表和stu表两个表,按照我们之前的知识栈,我们直接使用…...

练习-平方拆分问题(线性筛法-筛质数)

问题描述 小蓝非常热爱数学,一天老师给小蓝出了一道数学题,想锻炼锻炼小蓝的思维能力。题目是这样的:给定两个数 a 和 b,在 a 到 b(包括 a,b)之间所有数的平方当中,试问有几个数能够表示为 xy …...

CVE-2018-2628(使用 docker 搭建)

介绍: 是一个影响 Oracle WebLogic Server 的严重漏洞,属于 远程代码执行(RCE) 漏洞。以下是对该漏洞的详细分析: ● 漏洞类型: 远程代码执行(RCE) ● 影响范围:Oracle WebLogic Server 10.3.6.0, 12.1.3.0, 12.2.1.2…...

【深度学习与大模型基础】第5章-线性相关与生成子空间

线性相关是指一组向量中,至少有一个向量可以表示为其他向量的线性组合。具体来说,对于向量组 v1,v2,…,vn,如果存在不全为零的标量 c1,c2,…,cn使得: c1v1c2v2…cnvn0 则称这些向量线性相关。否则,它们线性无关。 举…...

使用 PaddlePaddle 官方提供的 Docker 镜像

CUDA版本高PaddlePaddle不支持时,可以使用 PaddlePaddle 官方提供的 Docker 镜像 1. 安装 Docker Desktop1.1 下载 Docker Desktop1.2 安装 Docker Desktop1.3 启用 WSL 2 或 Hyper-V1.4 启动 Docker Desktop1.5 Docker不运行解决方法 2. 拉取 PaddlePaddle Docker …...

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 论文阅读

一、TL;DR 为什么要这么做?预训练模型越来越大,比如GPT-3 175B训练独立变得越来越不可行方法:冻结预训练模型的权重,在Transformer架构的每一层中注入可训练的低秩分解矩阵效果:训练参数量减少10000x&…...

企业的应用系统

一、人力资源系统 负责管理员工信息,处理入职,离职,调岗。 1、一般员工的信息有电子档和纸质档两份。 电子档经常是excel文件。 2、高级的公司会建立一套Web应用系统。 3、实现的功能: 新员工入职登记 (登记信息一般是&#xff1a…...

SpringBoot手动注册定时任务

一、背景 项目存在这样一个场景。程序启动过程中,在Spring的Bean组件注册完毕后,会初始化一些基础数据到数据库中,而项目中有部分定时任务需要依赖这些基础数据才能正常运行。如果直接使用Scheduled注解标注定时任务方法,会导致定…...

通过 Python 爬虫提高股票选股胜率

此贴为Python爬虫技术学习贴 在股票中,即便有了选股规则,从5000多只股票中筛选出符合规则的股票也是十分困难的,于是想通过爬虫来实现自动化的快速选股。全文用GP代替股票 实现方案 1、指定两套规则,第一套弱约束,第…...

InternVL:论文阅读 -- 多模态大模型(视觉语言模型)

更多内容:XiaoJ的知识星球 文章目录 InternVL: 扩展视觉基础模型与通用视觉语言任务对齐1.概述2.InternVL整体架构1)大型视觉编码器:InternViT-6B2)语言中间件:QLLaMA。3)训练策略(1&#xff09…...

代码随想录算法训练营第三十五天(20250303) |01背包问题 二维,01背包问题 一维,416. 分割等和子集 -[补卡20250316]

01背包问题 二维 链接 遍历物品没有大小顺序要求重点是模拟&#xff0c;推导出递推公式 #include <iostream> #include <vector>int main(){int m, n;std::cin>>m>>n;std::vector<int> weight(m,0),value(m,0);for(int i{0}; i<m; i){std:…...

RGV调度算法(三)--遗传算法

1、基于时间窗 https://wenku.baidu.com/view/470e9fd8b4360b4c2e3f5727a5e9856a57122693.html?_wkts_1741880736197&bdQuery%E7%8E%AF%E7%A9%BF%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95 2.2019年MathorCup高校数学建模挑战赛B题 2019-mathorcupB题-环形穿梭机调度模型&a…...

并发编程-

一、简述 线程&#xff1a;线程是cpu可执行的最小单位&#xff0c;而进程是操作系统可分配的最小资源单位。一个进程中可以有多个线程。 线程的五个状态&#xff1a; 新建&#xff08;new Thread()&#xff09; 就绪 &#xff08;thread.start()&#xff09; 运行&#xff08…...

Mac中nvm切换node版本失败,关闭终端再次打开还是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切换版本之后。 关闭终端&#xff0c;再次打开&#xff0c;输入 node -v 还是得到之前的 node 版本。 原因&#xff1a; 在这里这个 default 中有个 node 的版本号&#xff0c;使用 nvm use 时&a…...

C语言(25)

一.数据在内存中的存储 1.整数在内存中的存储 整数在内存中以二进制的形式储存&#xff0c;分别为原码&#xff0c;补码&#xff0c;反码 有符号的整数&#xff0c;在上述三种形式都有符号位和数值位两个部分&#xff0c;符号位为0是正数&#xff0c;1是负数&#xff0c;最高…...

HTML、CSS

什么是HTML、CSS HTML结构标签及特点 CSS引入方式 CSS颜色表示形式&#xff1a; CSS引入方式、颜色表示、颜色属性 CSS选择器 超链接...

c#:主窗体与子控件之间的数据传递:基于事件和委托的实现

1. 概述 在WPF中&#xff0c;主窗体与子控件之间的数据传递通常通过以下两种方式实现&#xff1a; 事件&#xff08;Event&#xff09;&#xff1a;主窗体触发事件&#xff0c;子控件订阅事件并接收数据。 委托&#xff08;Delegate&#xff09;&#xff1a;通过委托将子控件…...

Dynamics 365 启用用户安全角色变更的审核功能

D365自身的审核功能这里就不说了&#xff0c;是一个很古老的功能&#xff0c;用过D365的人应该都知道&#xff0c;今天要说的是用户安全角色变更的审核记录。 很多人用系统的审核功能&#xff0c;更多的是用来追踪用户的登录记录&#xff0c;或者记录的修改记录。 而实际的项目…...

MyBatis注解

MyBatis 的注解&#xff08;Annotations&#xff09;提供了一种简洁的方式来配置 SQL 映射&#xff0c;而无需使用 XML 文件。通过在 Mapper 接口的方法上使用注解&#xff0c;可以直接在 Java 代码中定义 SQL 语句和相关映射。这种方式使得代码更加集中和易于维护&#xff0c;…...

1.Windows+vscode+cline+MCP配置

文章目录 1.简介与资源2.在windows中安装vscode及Cline插件1. 安装vscode2. 安装Cline插件3. 配置大语言模型3. 配置MCP步骤(windows) 1.简介与资源 MCP官方开源仓库 MCP合集网站 参考视频 2.在windows中安装vscode及Cline插件 1. 安装vscode 2. 安装Cline插件 Cline插件…...

94.HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils 文章目录 HarmonyOS NEXT动画系统实现教程&#xff1a;深入理解FuncUtils1. 动画系…...

Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)

一、Pandas库 1.1、概念 Pandas是一个开源的、用于数据处理和分析的Python库&#xff0c;特别适合处理表格类数 据。它建立在NumPy数组之上&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;使得数据操作变得更加简单、便捷和高效。 Pandas 的目标是成为 Python 数据…...

设计模式之原型模式:原理、实现与应用

引言 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过复制现有对象来创建新对象&#xff0c;而不是通过实例化类。原型模式特别适用于创建成本较高的对象&#xff0c;或者需要动态配置的对象。本文将深入探讨原型模式的原理、实现方…...

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…...

C语言之链表

文章目录 前言 一、链表基本概念 1、声明节点结构 2、创建节点变量 3、链表所有节点 4、遍历链表 二、add添加 三、insert插入 四、remove删除 五、查找 总结 前言 链表是一种重要的数据结构&#xff0c;用于存储和组织数据。它是由一系列节点组成的数据结构&#x…...

RabbitMQ延迟消息

文章目录 延迟消息死信交换机延迟消息延迟消息应用场景 延迟消息 生产者在发送消息的时候指定一个时间&#xff0c;消费者不会立即收到该消息&#xff0c;而是在指定时间之后才收到消息&#xff0c;这就是延迟消息。 比如说这么一个场景&#xff0c;用户下单后将商品库存进行…...

Unity中WolrdSpace下的UI展示在上层

一、问题描述 Unity 中 Canvas使用World Space布局的UI&#xff0c;想让它不被3d物体遮挡&#xff0c;始终显示在上层。 二、解决方案 使用shader解决 在 UI 的材质中禁用深度测试&#xff08;ZTest&#xff09;&#xff0c;强制 UI 始终渲染在最上层。 Shader "Custo…...

【从零开始学习计算机科学】算法分析(一)算法、渐进分析、递归分析

【从零开始学习计算机科学】算法分析(一)算法、渐进分析、递归分析 算法算法分析正确性算法完成需要的时间使用的存储空间简单性渐进分析递归分析主方法求解递归式递归树求解代入法概率分析和随机算法顺序统计量算法 什么是算法?算法(Algorithm)是指解题方案的准确而完整…...

【菜鸟飞】Conda安装部署与vscode的结合使用

介绍 Conda 是一个跨平台的开源工具&#xff0c;用于管理软件包和环境。最初由 Anaconda 公司开发&#xff0c;它的设计目标是支持数据科学和机器学习领域&#xff0c;但其功能不仅局限于此。 以下是 Conda 的核心特点&#xff1a; 包管理&#xff1a;安装、更新、卸载各种库…...

LeetCode2593 标记所有元素后数组的分数

贪心算法实战&#xff1a;数组标记与分数计算&#xff08;LeetCode 同类题解析&#xff09; 一、问题描述 给定一个正整数数组 nums&#xff0c;按以下规则计算最终分数&#xff1a; 初始分数 score 0每次选择最小且未被标记的元素&#xff08;值相同选下标最小&#xff09…...

【C++多线程】thread

C中的std::thread是C11引入的线程库的一部分&#xff0c;提供了创建和管理线程的能力。它封装了操作系统的线程接口&#xff0c;使得在C中更方便地进行多线程编程。 1. std::thread 的定义 std::thread 类位于<thread>头文件中&#xff0c;定义在std命名空间下&#xff…...

补充二分LIS

B3637 最长上升子序列 题目描述 这是一个简单的动规板子题。 给出一个由 n ( n ≤ 5000 ) n(n\le 5000) n(n≤5000) 个不超过 1 0 6 10^6 106 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。 最长上升子序列是指&#xff0c;从原序列中按顺序取出一些数字排…...

airtest用法

安装python3.7.9 64 python3 -m pip install -U airtest 或者&#xff1a; git clone https://github.com/AirtestProject/Airtest.git pip install -e airtest 下载adb 可以开始无界面的airtest 下载AirtestIDE 安装与启动 - Airtest Project Docs Airtest Project...

30天学习Java第四天——设计模式

设计模式概述 设计模式是一套被广泛接受的、经过试验的、可反复使用的基于面向对象的软件设计经验总结&#xff0c;它是开发人员在软件设计时&#xff0c;对常见问题的解决方案的总结和抽象。 一句话就是&#xff0c;设计模式是针对软件开发中常见问题和模式的通用解决方案。 …...

MongoDB 和 Elasticsearch的区别、优缺点对比,以及选型建议

MongoDB 和 Elasticsearch 在存储和搜索方面各有特点&#xff0c;适用于不同的场景。以下是它们的区别、优缺点对比&#xff0c;以及选型建议。 1. 概述 MongoDB&#xff1a;分布式 NoSQL 文档数据库&#xff0c;基于 BSON&#xff08;类似 JSON&#xff09;的文档存储&#x…...

在Android中,子线程可以更新UI吗

目录 为什么子线程不能直接更新UI&#xff1f; 如何正确在子线程更新UI&#xff1f; 1. 使用runOnUiThread方法 2. 通过Handler发送消息到主线程 3. 使用View.post(Runnable)方法 4. 结合AsyncTask&#xff08;已过时&#xff0c;仅作了解&#xff09; 5. 使用Kotlin协程…...

unittest vs pytest区别

unittest vs pytest 对比 ​unittest 像“手动挡汽车”&#xff1a;操作步骤多&#xff0c;规则严格&#xff0c;适合老司机。​pytest 像“自动挡汽车”&#xff1a;开起来轻松&#xff0c;功能强大&#xff0c;适合新手和高效开发。 区别点​unittest​&#xff08;你学过的&…...

OpenAI与谷歌DeepMind新品同日竞技,谁能引领机器人现实任务新潮流?

2025年3月12日&#xff0c;科技巨头谷歌DeepMind与OpenAI均发布了与机器人执行现实任务相关的新产品&#xff1a;谷歌DeepMind的新AI模型、OpenAI的Agents工具集&#xff0c;二者在技术路径、应用场景、安全机制设计等方面存在明显差异&#xff0c;其发展态势备受行业关注。 …...

JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal

并发编程2 synchronized锁实现**AQS****ReentrantLock实现****JUC 常用类**池的概念 ThreadLocalThreadLocal原理内存泄露强引用:软引用弱引用虚引用ThreadLocal内存泄露 synchronized锁实现 synchronized是一个关键字,实现同步,还需要我们提供一个同步锁对象,记录锁状态,记录…...

特殊 IP 地址

文章目录 特殊IP地址概述受限广播地址&#xff08;Limited Broadcast Address&#xff09;直接广播地址&#xff08;Directed Broadcast Address&#xff09;多播地址&#xff08;Multicast Address&#xff09;环回地址&#xff08;Loopback Address&#xff09;本网络本主机&…...

SSL/TLS 1.2过程:Client端如何验证服务端证书?

快速回顾非对称加密和对称加密 首先快速说一下非对称加密和对称加密。非对称加密&#xff0c;就是有一个公钥和私钥(成对存在)。 公钥对一段文本A加密得到文本B&#xff0c;只有对应的私钥能对B解密得到A。 私钥对一段文本C加密得到文本D&#xff0c;只有对应的公钥能对D解密得…...

Android(java)高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装

主要有以下优点 兼容高版本 Android&#xff1a;适配 Android 10 及以上版本的存储权限和安装权限。断点续传&#xff1a;支持从断点继续下载。下载进度监听&#xff1a;实时获取下载进度并回调。错误处理&#xff1a;处理下载失败、网络异常等情况。自动安装 APK&#xff1a;…...

基于three.js的虚拟人阴影渲染优化方案

作者&#xff1a;来自 vivo 互联网大前端团队- Su Ning 本文将探讨 three.js 中的阴影渲染机制&#xff0c;并分享一些针对性能和效果优化的实用技巧&#xff0c;帮助开发者在不同场景下做出最佳的权衡选择。 一、前言 在3D网页应用中&#xff0c;高质量的阴影渲染对于营造场…...

人工智能中神经网络是如何进行预测的

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 文章目录 引言神经网络的基本结构神经网络的前向传播前向传播的步骤激活函数 代码实现流程图详细解释…...

vue3 中使用 Recorder 实现录音并上传,并用Go语言调取讯飞识别录音(Go语言)

录音并识别 效果图一、开启游览器录音权限二、前端代码三、Go代码,上传到讯飞识别录音返回到前端 效果图 recorder-core插件可以在网页中进行录音。录音文件(blob)并可以自定义上传&#xff0c;可以下载录音文件到本地,本文录音过程中会显示可视化波形&#xff0c;插件兼容PC端…...

自探索大语言模型微调(一)

一、数据 1.1、失败案例 Hugging Face&#xff1a; 根据B站上搜索到的资料&#xff0c;datasets这个库可以直接下载丰富的数据集合和与训练模型&#xff0c;调用也非常的简单&#xff0c;唯一的缺点就是&#xff0c;需要外网&#xff08;翻墙&#xff09;&#xff0c;用国内的…...

算法练习(链表)

链表 链表的分类 单向链表&#xff0c;双向链表带头链表&#xff0c;不带头链表循环的&#xff0c;非循环的 链表的结构 图中所示的为链表的一个节点&#xff0c;value是这个节点的所存储的数据值&#xff0c;next为下一节点的地址。 代码实现链表 1.创建节点类 节点由…...

在 Ubuntu 服务器上使用宝塔面板搭建博客

&#x1f4cc; 介绍 在本教程中&#xff0c;我们将介绍如何在 Ubuntu 服务器 上安装 宝塔面板&#xff0c;并使用 Nginx PHP MySQL 搭建一个博客&#xff08;如 WordPress&#xff09;。 主要步骤包括&#xff1a; 安装宝塔面板配置 Nginx PHP MySQL绑定域名与 SSL 证书…...