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

鸡兔同笼,但是线性代数

灵感来自:bilibili,巨佬!

我们有 14 14 14 个头, 32 32 32 只脚,所有鸡和兔都没有变异,头和脚都完整,没有数错。还有什么 Bug 吗

小学奥数

假设全是鸡,则有 14 × 2 = 28 14 \times 2 = 28 14×2=28 只脚。

但是少了 4 4 4 只脚,因为我们看到一只兔子就施展膜法将其变成了鸡,导致所有兔子都变成了鸡。

每只兔子变成鸡,头数不变,少了两只脚,所以有 4 ÷ 2 = 2 4 \div 2 = 2 4÷2=2 只兔子,有 14 − 2 = 12 14 - 2 = 12 142=12 只鸡。

初中

鸡爷解:设有 x x x 只鸡, y y y 只兔。

则有:

{ x + y = 14 2 x + 4 y = 32 \begin{cases} x+y=14 \\ 2x+4y=32 \end{cases} {x+y=142x+4y=32

解得(过程太简单不写了 ,自行高斯消元):

{ x = 12 y = 2 \begin{cases} x=12 \\ y=2 \end{cases} {x=12y=2

进入正题!(已经完全了解矩阵的神犇跳到最后)

线性变换(线性映射)是什么:一个函数,输入输出都是向量,满足如下性质:

f ( k x ⃗ ) = k f ( x ⃗ ) f ( x ⃗ + y ⃗ ) = f ( x ⃗ ) + f ( y ⃗ ) \begin{aligned} f(k\vec x)&=kf(\vec x) \\ f(\vec x + \vec y) &= f(\vec x) + f(\vec y) \end{aligned} f(kx )f(x +y )=kf(x )=f(x )+f(y )

这个 f f f 就是一个线性映射,通常记为 A A A

向量是什么:一个 vector,还不懂吗。哦读者可能不是 C艹 党,所以说一下:向量就是一系列数,类似我们幼儿园就学过的数对。

向量也可以用来表示一个点,学习时通常是 2 2 2 维或 3 3 3 维的:

+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--O--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+==+==+==+==+==+==+==+==+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+

-| 是坐标轴,= x x x 轴,H y y y 轴,每条小线段长度为 1 1 1

我们要表示图中的 O 点,就可以用数对,注意到 O 点在第 3 3 3 列,第 2 2 2 行,所以可以表示为 ( 3 , 2 ) (3, 2) (3,2)

如果我们想换种方法呢?

[ 3 2 ] \begin{bmatrix} 3 \\ 2 \end{bmatrix} [32]

记为 O ⃗ \vec{O} O 怎么样? O O O 是名字,上面的箭头 ⃗ \vec{} 表示它是一个向量。

实际上,向量可以理解为一个点,也可以理解为一条从原点指向某个点的箭头。

向量的数乘(就是一个数字乘上一个向量)就是把这个向量的长度乘上这个数,也就是把 x x x y y y 坐标分别乘上这个数。

向量的加法(两个向量之和)就是把两个向量头尾拼起来,然后记录它们最终指向的点,它们的和就是这个点。

是不是感觉和复数有点像?没错,复数可以表示向量,但是仅限二维,然而向量可以是三维,四维,一维,零维,甚至 114514 114514 114514 维(我乱说的)和 12288 12288 12288 维(据说 GPT 内部的向量就是这个)。

现在我们有一个神奇的线性映射 A A A,作用是把向量的长度乘 2 2 2。容易验证它满足线性映射的条件。

则对 O ⃗ \vec{O} O 进行 A A A 映射会怎么样?原本要记作 A ( O ⃗ ) A(\vec{O}) A(O ) 的,但是我们可以省略括号(真的吗,函数也可以吗),记作 A O ⃗ A\vec{O} AO (不管你是怎么想的,反正目前数学界就是这么写的),也可以记作 A A A O ⃗ \vec{O} O 的积,也就是它们相乘的结果。

其实,一个线性映射就是一个矩阵,它的具体含义暂且不谈,这里只需要知道两个矩阵相乘就是两个矩阵相继作用的结果,比如 A A A B B B 相乘,就是 A B AB AB,表示先进行 B B B 变换再进行 A A A 变换,很奇怪,但是函数不就是这样的吗? A ( B ( u ⃗ ) ) A(B(\vec{u})) A(B(u )) 嘛,省略掉括号。

我们来看看这种运算是否满足交换律,结合律(显然满足分配律,因为就是定义):

f ( g ( x ) ) ≠ g ( f ( x ) ) f(g(x)) \not = g(f(x)) f(g(x))=g(f(x)),不满足交换律 😦

f ( g ( h ( x ) ) ) = f ( g ( h ( x ) ) ) f(g(h(x))) = f(g(h(x))) f(g(h(x)))=f(g(h(x))),满足结合律 😃

不过好像有点不太好?我们来详细地说一下。

( A B ) C = A ( B C ) (AB)C = A(BC) (AB)C=A(BC)

对于前者:依次进行 C C C B B B A A A 变换。

对于后者:依次进行 C C C B B B A A A 变换。

有什么可以证明的?

接下来讲讲矩阵里面具体是什么。

对于一个二维空间,所有点都可以由两个向量 u ⃗ \vec{u} u v ⃗ \vec{v} v 分别乘上两个数 a a a b b b 的和得到,具体来讲是 x ⃗ = a u ⃗ + b v ⃗ \vec{x}=a\vec{u}+b\vec{v} x =au +bv

通常,这个 u ⃗ \vec{u} u 就是 [ 1 0 ] \begin{bmatrix} 1\\0\end{bmatrix} [10],一条指向正右方的长度为 1 1 1 的向量, v ⃗ \vec{v} v 就是 [ 0 1 ] \begin{bmatrix} 0 \\ 1 \end{bmatrix} [01],而你会惊喜地发现 a a a b b b 就分别是 x x x 坐标和 y y y 坐标,而这个向量就记作 [ a b ] \begin{bmatrix} a \\ b \end{bmatrix} [ab]

而这里的 u ⃗ \vec{u} u v ⃗ \vec{v} v 就称作二维空间中的两个基向量,两个二维的基向量可以张成一个二维空间(就是可以控制 a a a b b b 到达二维空间上的每一个点),这个二维空间记作 s p a n ( u ⃗ , v ⃗ ) \mathrm{span}(\vec{u},\vec{v}) span(u ,v ),不过超纲了(大小写我也不大记得了)。

但如果 u ⃗ \vec{u} u 或者 v ⃗ \vec{v} v 不是这两个向量,那么还可不可以这样呢?绝大多数(无法这样的情况存在,但是是一个零测集)情况下,可以。但是就不会是 x x x 坐标和 y y y 坐标了。

比如加入 u ⃗ = [ 3 0 ] \vec{u} = \begin{bmatrix} 3 \\ 0 \end{bmatrix} u =[30] v ⃗ = [ 0 2 ] \vec{v} = \begin{bmatrix} 0 \\ 2 \end{bmatrix} v =[02],那么这里 a a a b b b 就都是 1 1 1,可以记作由我们的新的基向量张成的空间上的点 [ 1 1 ] \begin{bmatrix} 1 \\ 1 \end{bmatrix} [11],此时 a = b = 1 a=b=1 a=b=1

而一个矩阵就是两个基向量拼起来,输入的向量在表达上不变。

具体来讲,设原来的(通常是由上面提到的最经典的使得 a = x , b = y a=x,b=y a=x,b=y 的两个基向量)空间上有一个向量 u ⃗ \vec{u} u ,然后这个矩阵所含有的两个向量张成的空间上找到一个向量 v ⃗ \vec{v} v ,使得两个向量字面上一样。

比如原本的空间是这样的,两个基向量分别是 [ 1 0 ] \begin{bmatrix} 1 \\ 0 \end{bmatrix} [10] [ 0 1 ] \begin{bmatrix} 0 \\ 1 \end{bmatrix} [01]


+--+--+--+--+--+--+--A--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--O--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+==+==+==+==+==+==+==+==+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+

矩阵的两个向量张成的空间是这样的,两个基向量分别是 [ 1 0 ] \begin{bmatrix} 1 \\ 0 \end{bmatrix} [10] [ 0 2 ] \begin{bmatrix} 0 \\ \color{red}2 \end{bmatrix} [02]

+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--P--+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+==+==+==+==+==+==+==+==+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+
|  |  |  |  H  |  |  |  |
|  |  |  |  H  |  |  |  |
+--+--+--+--+--+--+--+--+

其中 O 点和 P 点在字面上都是 [ 3 2 ] \begin{bmatrix} 3 \\ 2 \end{bmatrix} [32],但是它们的位置却完全不一样。

而实际上,如果把第二个空间直接平移到第一个空间上面,使得原点重合(线性映射的性质保证了原点必然不变),那么 P P P 点会移动到 A A A 点的位置(实际上不会,因为我画的坐标轴的线是有宽度的,实际上不应该有宽度),而这个 A A A 点就是这个结果,也就是 [ 3 4 ] \begin{bmatrix} 3 \\ 4 \end{bmatrix} [34]

那么,如何计算呢?每算一个都画两个网格完全没必要吧?没事,我们来跟踪一下 x x x y y y,设两个基向量为 [ a b ] \begin{bmatrix} a \\ b \end{bmatrix} [ab] [ c d ] \begin{bmatrix} c \\ d \end{bmatrix} [cd]

那么先看 x x x 坐标,原本的基向量的 x x x 分别是 1 1 1 0 0 0,显然因为右边是 0 0 0,所以第一个基向量的系数(如果你记忆力还不错的话, a a a)就是原本的 x x x,而现在变成了 a x ax ax。而第二个基向量的系数为 y y y,所以 x x x 又增加了 c y cy cy,最终的 x x x 坐标为 a x + c y ax+cy ax+cy

再看 y y y 坐标,同理,是 b x + d y bx+dy bx+dy

而一个矩阵到底如何表示呢?很简单,把两个基向量拼到一起即可。

所以我们就得到了公式(注意,我把各个数的位置调换了一下,原本是 [ a c b d ] \begin{bmatrix} a & c \\ b & d \end{bmatrix} [abcd]):

[ a b c d ] [ e f ] = [ a e + b f c e + d f ] \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} e \\ f \end{bmatrix} = \begin{bmatrix} ae+bf \\ ce+df \end{bmatrix} [acbd][ef]=[ae+bfce+df]

鼓掌!

那么我们如何计算两个矩阵相继作用的结果,也就是它们的积呢?

[ a b c d ] [ e f g h ] = what? \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} e & f \\ g & h \end{bmatrix} = \text{what?} [acbd][egfh]=what?

我们可以看看两个基向量的去向。

首先,原本的基向量为 [ e g ] \begin{bmatrix} e \\ g \end{bmatrix} [eg] [ f g ] \begin{bmatrix} f \\ g \end{bmatrix} [fg]

第一个基向量变换后为 [ a e + b g c e + d g ] \begin{bmatrix} ae+bg \\ ce + dg\end{bmatrix} [ae+bgce+dg]

第二个基向量变换后为 $\begin{bmatrix} af+bh \ cf+dh \end{bmatrix} $。

所以最终的矩阵为 [ a e + b g a f + b h c e + d g c f + d h ] \begin{bmatrix} ae+bg & af+bh \\ ce+dg & cf+dh\end{bmatrix} [ae+bgce+dgaf+bhcf+dh]

当然,多次用矩阵乘法也可以证明结合律,试试看!(会逝世的,最好别试)

矩阵除法咋办? A B = A ⋅ 1 B = A B − 1 \dfrac{A}{B}=A \cdot \dfrac{1}{B} = AB^{-1} BA=AB1=AB1

矩阵求逆如何求? A − 1 = ? A^{-1}=? A1=?

先介绍一个单位矩阵的概念,其实就是多个最纯粹的基向量拼起来。比如二阶单位矩阵为 [ 1 0 0 1 ] \begin{bmatrix} 1& 0 \\ 0 & 1 \end{bmatrix} [1001],三阶单位矩阵为 [ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} 100010001

介绍一种方法:先把这个矩阵和单位矩阵拼起来,类似这样:$ \left[\begin{array}{c c|c c} a&b&1&0 \ c&d&0&1 \end{array}\right] $(我擦这 KaTeX \KaTeX KATEX 好难打),然后进行初等行变换直到左边为单位矩阵,类似这样:$ \left[\begin{array}{c c|c c} 1&0&e&f \ 0&1&g&h \end{array}\right] $,右边的就是 A A A 的逆。

初等行变换是什么?

  1. 交换两行,记作 r a ↔ r b r_a \leftrightarrow r_b rarb
  2. 把一行所有元素同时变成原来的某一倍,记作 k r a kr_a kra
  3. 把两行元素相加,存到这两行中的某一行中,记作 r a + r b r_a+r_b ra+rb

其实第三种和第二种结合可以变成一种更厉害的,一般用这种:

  1. 把两行元素同时扩倍不同的(相同也可以)倍数后相加,结果存到这两行中的某一行中,记作 k 1 r a + k 2 r b k_1r_a+k_2r_b k1ra+k2rb

于是我们就可以这样干:

将鸡兔同笼的矩阵记为 [ 1 1 2 4 ] \begin{bmatrix} 1 & 1 \\ 2 & 4 \end{bmatrix} [1214]

将题目记为 [ 14 32 ] \begin{bmatrix}14 \\ 32 \end{bmatrix} [1432]

我们对矩阵求个逆:
[ 1 1 1 0 2 4 0 1 ] → r 2 − 2 r 1 [ 1 1 1 0 0 2 − 2 1 ] → r 1 − 1 2 r 2 [ 1 0 2 − 1 2 0 2 − 2 1 ] → 1 2 r 2 [ 1 0 2 − 1 2 0 1 − 1 1 2 ] \begin{aligned} & \left[\begin{array}{c c|c c} 1&1&1&0 \\ 2&4&0&1 \end{array}\right] \\ \xrightarrow{r_2-2r_1} & \left[\begin{array}{c c|c c} 1&1&1&0 \\ 0&2&-2&1 \end{array}\right] \\ \xrightarrow{r_1-{1 \over 2} r_2} & \left[\begin{array}{c c|c c} 1&0&2&-{1\over 2} \\ 0&2&-2&1 \end{array}\right] \\ \xrightarrow{{1 \over 2}r_2} & \left[\begin{array}{c c|c c} 1&0&2&-{1\over 2} \\ 0&1&-1&1 \over 2 \end{array}\right] \end{aligned} r22r1 r121r2 21r2 [12141001][10121201][100222211][1001212121]
故逆矩阵为 [ 2 − 1 2 − 1 1 2 ] \begin{bmatrix} 2 & -{1 \over 2} \\ -1 & 1 \over 2 \end{bmatrix} [212121]

将逆矩阵乘上 [ 14 32 ] \begin{bmatrix}14 \\ 32 \end{bmatrix} [1432]

[ 2 − 1 2 − 1 1 2 ] [ 14 32 ] = [ 28 − 16 16 − 14 ] = [ 12 2 ] \begin{bmatrix} 2 & -{1 \over 2} \\ -1 & 1 \over 2 \end{bmatrix}\begin{bmatrix}14 \\ 32 \end{bmatrix}=\begin{bmatrix}28-16 \\ 16-14 \end{bmatrix}=\begin{bmatrix}12 \\ 2 \end{bmatrix} [212121][1432]=[28161614]=[122]

我们成功地用 229 229 229 行 Markdown 代码解出了超级难的鸡兔同笼问题!鼓掌!

相关文章:

鸡兔同笼,但是线性代数

灵感来自:bilibili,巨佬! 我们有 14 14 14 个头, 32 32 32 只脚,所有鸡和兔都没有变异,头和脚都完整,没有数错。还有什么 Bug 吗 小学奥数 假设全是鸡,则有 14 2 28 14 \time…...

01---java面试八股文——springboot---10题

01-你是怎么理解Spring Boot 的约定优于配置 约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。Spring Boot 就是约定优于配置这一理念下的产物,它类似于 Spring 框架…...

计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

【进阶OpenCV】 (3)--SIFT特征提取

文章目录 sift特征提取一、基本原理二、特点三、代码实现1. 函数方法2. 检测图像中的关键点3. 绘制关键点4. 计算关键点描述符5. 输出特征坐标点 总结 sift特征提取 SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)特征检测是一种…...

HarmonyOS/OpenHarmony Audio 实现音频录制及播放功能

关键词:audio、音频录制、音频播放、权限申请、文件管理 在app的开发过程中时常会遇见一些需要播放一段音频或进行语音录制的场景,那么本期将介绍如何利用鸿蒙 audio 模块实现音频写入和播放的功能。本次依赖的是 ohos.multimedia.audio 音频管理模块&am…...

css 中 ~ 符号、text-indent、ellipsis、ellipsis-2、text-overflow: ellipsis、::before的使用

1、~的使用直接看代码 <script setup> </script><template><div class"container"><p><a href"javascript:;">纪检委</a><a href"javascript:;">中介为</a><a href"javascript:…...

Activiti 工作流大致了解

一、什么是 Activiti 简而言之&#xff0c;就是系统的流程图&#xff0c;如&#xff1a;请假审批流程、账单审批流程等。 二、mysql与pom配置 mysql要使用jdbc:mysql://localhost:3306/activiti?autoReconnecttrue pom文件要添加关键依赖 <!--activiti核心依赖--> &…...

速盾:高防 CDN,网站安全的有力保障

在当今数字化时代&#xff0c;网站安全已成为企业和个人关注的焦点。随着网络攻击手段的不断升级&#xff0c;传统的安全防护措施已经难以满足需求。而高防 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;的出现&#xff0c;为网站安全提供了有…...

宝塔搭建nextcould 30docker搭建onlyoffic8.0

宝塔搭建nextcould 宝塔搭建nextcould可以参考这两个博文 我搭建的是30版本的nextcould&#xff0c;服务组件用的是下面这些&#xff0c;步骤是一样的&#xff0c;只是版本不一样而已 nginx 1.24.0 建议选择nginx&#xff0c;apache没成功。 MySQL 8.0以上都可以 php 8.2.…...

【源码+文档+调试讲解】交通信息管理系统

摘 要 智能交通信息管理系统是一种基于计算机技术的软件系统&#xff0c;旨在提高交通管理的效率和服务质量。通过该系统可以实现智能交通管理的全面管理和优化。智能交通信息管理系统具备集成管理功能。它能够整合智能交通管理的各个业务环节&#xff0c;包括个人中心、用户管…...

小阿轩yx-案例:Ansible剧本文件实践

小阿轩yx-案例&#xff1a;Ansible剧本文件实践 Playbook 介绍 什么是 playbook playbook 顾名思义&#xff0c;即剧本&#xff0c;现实生活中演员按照剧本表演在 ansible 中&#xff0c;由被控计算机表演&#xff0c;进行安装&#xff0c;部署应用&#xff0c;提供对外的服…...

【ShuQiHere】深入理解微架构(Microarchitecture):LC-3 的底层实现 ️

【ShuQiHere】&#x1f5a5;️ 微架构&#xff08;Microarchitecture&#xff09; 是计算机体系结构中的重要概念&#xff0c;它定义了如何将 指令集架构&#xff08;Instruction Set Architecture, ISA&#xff09; 转化为实际硬件。通过微架构&#xff0c;我们可以理解计算机…...

Ubuntu24.04.1系统下VideoMamba环境配置

文章目录 前言第一步&#xff1a;基本的环境创建第二步&#xff1a;causal-conv1d和mamba_ssm库的安装第三步&#xff1a;安装requirements.txt 前言 VideoMamba环境的配置折磨了我三天&#xff0c;由于Mamba对Cuda的版本有要求&#xff0c;因此配置环境的时候Cuda版本以及各种…...

c++第十二章续(队列结构类模拟)

队列类 设计类&#xff0c;需要开发公有接口和私有实现 Queue类接口 公有接口&#xff1a; 默认初始化&#xff0c;和可以用显式初始化覆盖默认值 Queue类的实现 如何表示队列数据&#xff1a; 一种方法是使用new动态分配一个数组&#xff0c;它包含所需的元素数。不过&…...

数据集-目标检测系列-豹子 猎豹 检测数据集 leopard>> DataBall

数据集-目标检测系列-豹子 猎豹 检测数据集 leopard>> DataBall 数据集-目标检测系列-豹子 猎豹 检测数据集 leopard 数据量&#xff1a;5k 想要进一步了解&#xff0c;请联系。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#x…...

基于ESP8266—AT指令连接阿里云+MQTT透传数据(3)

MQTT_RX设备为接收(订阅)数据的Topic,使用ESP8266通过AT指令实现。 首先需要串口通信软件,如 SSCOM、PuTTY、SecureCRT 等串口调试工具,功能丰富,支持常见的串口调试功能,用于发送AT指令。 以下是ESP8266通过AT指令连接阿里云MQTT服务的步骤: 1、初始化WiFi 发送下面…...

redis的数据结构,内存处理,缓存问题

redisObject redis任意数据的key和value都会被封装为一个RedisObject&#xff0c;也叫redis对象&#xff1a; 这就redis的头信息&#xff0c;占有16个字节 redis中有两个热门数据结构 1.SkipList&#xff0c;跳表&#xff0c;首先是链表&#xff0c;和普通链表有以下差异&am…...

机器学习模型评估与选择

前言 承接上篇讲述了机器学习有哪些常见的模型算法&#xff0c;以及使用的场景&#xff0c;本篇将继续讲述如何选择模型和评估模型。几个概念了解一下&#xff1a; 经验误差&#xff1a;模型在训练集上的误差称之为经验误差&#xff1b;过拟合&#xff1a;模型在训练集上表现…...

Web认识 -- 第一课

文章目录 前言一、HTML是什么&#xff1f;二、了解Web1. 基本概念2.Web标准3. Web构成1.前端1. HTML2.CSS3. javaScript4.常见浏览器介绍 2.Web标签构成1.结构标准2.表现标准 -- css3. 行为标准 -- javaScript 总结 前言 这里是我们进入前端学习的开端,在本次更新之后我会陆续…...

Recaptcha2 图像识别 API 对接说明

Recaptcha2 图像识别 API 对接说明 本文将介绍一种 Recaptcha2 图像识别2 API 对接说明&#xff0c;它可以通过用户输入识别的内容和 Recaptcha2验证码图像&#xff0c;最后返回需要点击的小图像的坐标&#xff0c;完成验证。 接下来介绍下 Recaptcha2 图像识别 API 的对接说…...

6种MySQL高可用方案对比分析

大家好&#xff0c;我是 V 哥&#xff0c;关于 MySQL 高可用方案&#xff0c;在面试中频频出现&#xff0c;有同学在字节面试就遇到过&#xff0c;主要考察你在高可用项目中是如何应用的&#xff0c;V 哥整理了6种方案&#xff0c;供你参考。 MySQL的高可用方案有多种&#xf…...

FastAPI: websocket的用法及举例

1. Websocket 1.1 Websocket介绍 WebSocket 是一种在单个TCP连接上进行全双工通信的协议&#xff0c;允许客户端和服务器之间相互发送数据&#xff0c;而不需要像传统的HTTP请求-响应模型那样频繁建立和断开连接。 全双工通信(Full-Duplex Communication)是一种通信模式&#…...

JavaSE——面向对象2:方法的调用机制、传参机制、方法递归、方法重载、可变参数、作用域

目录 一、成员方法 (一)方法的快速入门 (二)方法的调用机制(重要) (三)方法的定义 (四)注意事项和使用细节 1.访问修饰符(作用是控制方法的使用范围) 2.返回的数据类型 3.方法名 4.形参列表 5.方法体 6.方法调用细节说明 (五)传参机制 1.基本数据类型的传参机制 …...

Vue+Flask

App.vue 首先要安装 npm install axios<template><div><h1>{{ message }}</h1><input v-model"name" placeholder"Enter your name" /><input v-model"age" placeholder"Enter your age" /><…...

深入剖析 Android Lifecycle:构建高效稳定的应用

在 Android 开发中&#xff0c;管理应用组件的生命周期是至关重要的。正确处理生命周期事件可以确保应用的性能、稳定性和用户体验。Android Framework 提供了一系列的机制来管理应用组件的生命周期&#xff0c;而android.arch.lifecycle库则为我们提供了更简洁、更灵活的方式来…...

ElasticSearch分词器、相关性详解与聚合查询实战

目录 1. ES分词器详解 1.1 基本概念 1.2 分词发生时期 1.3 分词器的组成 切词器&#xff1a;Tokenizer 词项过滤器&#xff1a;Token Filter 字符过滤器&#xff1a;Character Filter 1.4 倒排索引的数据结构 2. 相关性详解 2.1 什么是相关性&#xff08;Relevance&am…...

删除二叉树中以x为根节点的子树(包括根结点)

已知二叉树以二叉链表存储&#xff0c;编写算法完成&#xff1a;对于树中每个元素值为x的结点&#xff0c;删除以它为根的子树&#xff0c;并释放相应的空间。 思想&#xff1a; 删除二叉树采用后序遍历。先删除左子树&#xff0c;然后右子树&#xff0c;最后根。 利用层次遍…...

Netty 与 WebSocket之间的关系

WebSocketProtocolHandler 和 Netty 在处理 WebSocket 连接时扮演不同的角色&#xff0c;但它们通常是一起使用的&#xff0c;尤其是在基于 Netty 的项目中。为了更好地理解它们之间的区别&#xff0c;我们首先需要了解 WebSocket 和 Netty 的基本概念。 WebSocket WebSocket…...

通信工程学习:什么是CSMA/CA载波监听多路访问/冲突避免

CSMA/CA&#xff1a;载波监听多路访问/冲突避免 CSMA/CA&#xff08;Carrier Sense Multiple Access/Collision Avoidance&#xff09;&#xff0c;即载波监听多路访问/冲突避免&#xff0c;是一种用于数据传输时避免各站点之间冲突的算法&#xff0c;尤其适用于无线局域网&…...

JAVA并发编程系列(13)Future、FutureTask异步小王子

美团本地生活面试&#xff1a;模拟外卖订单处理&#xff0c;客户支付提交订单后&#xff0c;查询订单详情&#xff0c;后台需要查询店铺备餐进度、以及外卖员目前位置信息后再返回。 时间好快&#xff0c;一转眼不到一个月时间&#xff0c;已经完成分享synchronized、volatile、…...

怎么建设医疗美容网站/苏州网站建设公司排名

<!--一般在使用第三方组件的时候&#xff0c;它们默认给出的是最常用的功能如果需要自定义内容展示&#xff0c;那就看文档&#xff0c;看看人家是否支持自定义插槽--> <van-cell title"单元格" value"内容" label"hello" /><van…...

互动广告平台/seo项目培训

在修改mysql密码时&#xff0c;修改不生效 后来才发现 在mysql5.7以下版本就修改authentication_string update mysql.user set authentication_stringpassword(123456) where userroot and hostlocalhost;在mysql5.7以上版本就修改password update mysql.user set passwordpas…...

做网站外包公司名称大全/故事式软文范例500字

php队列是什么意思&#xff1f;怎么实现的&#xff1f;有哪些应用场景&#xff1f;以下通过使用mysql实现解耦案例和使用redis进行流量削锋案例详细讲解php消息队列的实现原理。队列的概念&#xff1a;1、是队列结构的中间件2、消息放入后不需要立即处理3、由订阅者/消费者按顺…...

芜湖市建设工程质量监督站官方网站/公关公司排名

Redis分布式锁锁的特点为了保证数据的最终一致性&#xff0c;使用Redis分布式锁 当多个进程不在同一个系统中&#xff0c;用分布式锁控制多个进程对资源的访问。 锁的特点 首先&#xff0c;为了确保分布式锁可用&#xff0c;我们至少要确保锁的实现同时满足以下四个条件&…...

网站建设外包兼职/百度总部地址

阅读本文大概需要5分钟。经常有读者问&#xff1a;做程序员太累要不要考个公务员或者找一份国企工作、刚毕业是选择考公还是去互联网公司&#xff1f;这些问题不同人有不同的答案&#xff0c;很多时候没法回答&#xff0c;只好回一句&#xff1a;要不先考上公务员或者拿了国企O…...

pc网站建设的三大条件/营销型网站建设题库

【题目链接】:http://hihocoder.com/problemset/problem/1295 【题意】 【题解】 可以在O(N)的复杂度内求出1..N里面的所有素数; 当然受空间限制,N可能也就是几百万的样子吧; 再低一点的话用朴素的筛法都能过了&#xff1b; 它的思路主要是; 抓住每个合数的最小的质因数…...