《洛谷深入浅出进阶篇》 进阶数论

本文章内容比较长,请耐心食用!!!!!

目录:

  • 模意义下的数和运算喵~

  • 模意义下的乘法逆元喵~

  • 同余方程与中国剩余定理喵~

  • 线性筛与积性函数喵~

  • 欧拉函数喵~


一,模意义下的数和运算。

  • 啥是模?喵喵喵!
  • 模意义下,数是之间如何运算?喵喵喵!
  • 什么是同余?同余有哪些性质?喵喵喵!
  • 啥是不定方程?喵喵喵!
  • 啥是裴蜀定理?喵喵喵!
  • 啥是欧几里得算法?喵喵喵!
  • 裴蜀定理+欧几里得算法 = 扩展欧几里得?喵喵喵!
  • 扩展欧几里得有啥用?喵喵喵!
  • 例题讲解!!喵喵喵!喵喵喵!喵喵喵!

啥玩意是模?喵喵喵!喵喵喵!喵喵喵!

模就是“%”d 读法,即“mod”的读音。它的含义是   被除数除以除数剩下的余数

例如  12%5=2 ,表示12模以5的余数是2.

更严谨的定义是:

对于整数a,b, 满足 b>0,则存在唯一的整数q,r  ,满足 a=q*b+r ,( 0<= r< b ) . 

其中q叫做商,r叫做余数 , 用 a mod b  or   a%b 表示

模意义下,数是之间如何运算?喵喵喵!

1,加法:  (a+b)% M  = ( a%M + b%M ) % M 

2,减法:  (a-b)% M  = ( a%M - b%M ) % M 

3,乘法:   (a*b)%M =  (a%M * b%M)%M

(这里以二元运算举例,实际上,对于多元算式,这三个规则仍然成立 )

为啥取模运算法则里没有除法?喵喵喵!

实际上,除数是不能直接写成  (a/b)%M = (a%M  / b%M ) % M

比如 a=12 , b=3, M=6       (a/b)%M =4

(a%M  / b%M )%M = 0.

在后续的章节,我们会介绍,怎么处理除法运算。

什么是同余?同余有哪些性质?喵喵喵!

同余指的就是,有两个数,这两个数模以同一个数的结果是相同的,那么这两个数之间就有

一种关系,叫同余。

表示为:a\equiv b(mod \ p)

下面介绍一些具有同余关系的数的几个重要的性质:

1、传递性a\equiv b(mod \ p) \ \, \ \ b \equiv c (mod\ p)>>>>a\equiv c (mod\ p)

2、同加性a\equiv b(mod \ p)\ >>>>>> a+m\equiv b+m (mod\ p)

3、同乘性:a\equiv b(mod \ p)\ >>>>>> am\equiv bm(mod\ p)

4、同幂性  a\equiv b(mod \ p)\ >>>>>> a^{m}\equiv b^{m} (mod\ p)

5、歪比八卜性:a\equiv b(mod \ p)\ >>>>>>p|(a-b)

啥是不定方程?喵喵喵!

不定方程,又称为丢番图方程,通俗的说就是多个未知数的方程,求解只在整数范围内进行。

比如: ax+by=c 的二元一次方程。

对于这样子的方程如何求其整数解?

解不定方程需要三个工具:

下面介绍这些工具里面最为重要的一个:

由法国数学家 裴蜀提出的的一个定理:裴蜀定理

啥是裴蜀定理?喵喵喵!

裴蜀定理是一切的基石

裴蜀定理的内容:

对于整数a,b, 设他们的最大公约数gcd(a,b)=d。

那么一定存在无穷多对整数对(x,y),使得ax+by=d。

这里给出裴蜀定理的证明。

由不定方程的形式我们可以看出:

ax+by=c。

c的取值随着x,y的改变而改变,我们取所有的c中的最小正整数解,设为S。

要证明S=gcd(a,b)

也就是要证明:S | gcd(a,b),gcd(a,b)| S  (这是数论中常用的证明两数相等的方法)

先证明gcd(a,b)|S

因为,a,b都是gcd(a,b)的倍数,且x1,y1都是整数,那么必然  gcd(a,b)| ax+by

所以gcd(a,b)|S

然后证明S|gcd(a,b)

也就是gcd(a,b)是S的倍数。

如果gcd(a,b)是S的倍数,那么必然,S是a,b的公因数。

设 a=pS+r

将 S=ax+by带入有:

a= p*ax+p*by+r

把它整理一下:

a(1-px)+b(-py)= r (r=a%S)

我们会发现:卧槽,这不是不定方程的形式吗?

因为r = a%S , 即r 必然与 S 是同号的。

且r 必然小于 S

所以我们前面假设的 S是最小整数解,就不成立了,所以r必然不存在,所以 a一定是S的倍数。

同理可得b一定是S的倍数。

所以S是a,b的公约数

S|gcd(a,b)

证毕

所以我们就可以由裴蜀定理引出一个定理:

裴蜀定理: 有无穷个整数对(x,y)使得 ax+by=gcd(a,b)

推论:

若 ax+by = c 有解,那么c 一定是gcd(a,b)的倍数

啥是欧几里得算法?喵喵喵!

先直接给出结论:

gcd(a,b)=gcd(b,a%b)  (gcd(a,b)代表最大公约数)

要证明欧几里得算法,首先要了解一些基础的整除理论。

1、要证明 a=b  可以证明:a|b ,b|a

2、如果  d|a,d|b  那么   d| (ax+by)  (裴蜀定理应用)

3、对于任意两个数a,b有:a=pb+r  ,(其中 p= [a/b], r=a%b)

要证明 gcd(a,b) = gcd ( b,a%b) 

即证明 gcd(a,b)|gcd(b,a%b)    gcd(b,a%b)|gcd(a,b)

先证明:gcd(a,b) | gcd(b,a%b) :

设  a=qb+r     -> r = a-qb

设 d=gcd(a,b) 

因为d | a, d | b , 所以 d | (ax+by)  即 d|(a-qb)  即 d|r

又因为:r = a%b 

所以 d | gcd(b,a%b) 

------------------------------------------

------------------------------------------

只要证: gcd(b,a%b) | gcd(a,b)

设 c = gcd(b,a%b)

设 a= qb+r

因为 c | b , c | r,  所以 c|(bx+ry) 所以 c|(qb+r)

所以 c|a

因为c|a,c|b,所以c|gcd(a,b)

证毕

所以 c==d

gcd(a,b) | gcd(b,a%b) :

裴蜀定理+欧几里得算法 = 拓展欧几里得算法?喵喵喵!喵喵喵!

前面两个算法就是求解ax+by=c这样的不定方程的两个最重要的基础,

我们将前面两种方法融合,形成了终极大招:拓展欧几里得算法。


ax+by =  c (由裴蜀定理知,c为gcd(a,b)的倍数)

设d=gcd(a,b)    c=t*d

两边同时除以t可得:

ax+by = d  

所以我们只要求出ax+by=d的整数解,再乘以t就可以了


又因为gcd(a,b)=gcd(b,a%b)

所以:bx+(a%b)y = d 也有解

在这个基础上:

令 a%b =a , b%(a%b)= b  迭代下去

(a%b)x + b%(a%b)y =d 仍有解。

我们发现:卧槽这不就是欧几里得算法吗?

欧几里得算法:gcd(a,b)=gcd(b,a%b)

一直递归迭代下去,当b为0的时候,就求解到的最大公约数是多少:

所以,我们可以直接借用欧几里得算法进行迭代,直到b=0.

对于 

ax+by = d 这个不定方程,当b为0 的时候,此时的a就是gcd(a,b),所以x的取值是1

而y的取值可以为任意值,我们默认写0.

所以,递归的边界我们找到了,即b==0,y=0,x=1.

那么我们怎么迭代回去呢?

让我们看到迭代的通项公式:

ax+by=d  -------->   bx+(a%b)y = d  (左右两边的x,y必然是不一样的,标号为1,2)

ax_{1}+by_{1} = bx_{2}+(a\ mod\ b)y_{2}

又因为 a mod \ b = a -[\frac{a}{b}]b

得到:ax_{1}+by_{1} = bx_{2}+(a -[\frac{a}{b}]b)y_{2}

整理:

ax_{1}+by_{1} =ay_{2}+ b(x_{2}-[\frac{a}{b}]y_{2})

由系数相同可得:

x1=y2, y1=(x2-a/b *y2)

所以我们从底部在复原回去的过程就是:

上一层的x,等于这一层的y

上一层 y ,等于这一层的x,y的表达式:(x2-a/b y2)

我们只需要按照顺序迭代加深,自然递归结束后就会一层一层回去。

模板:

void exgcd(int a, int b, int& x, int& y) {
	if (!b) {
		x = 1, y = 0;
		return;
	}
	
	exgcd(b, a % b, x, y);
	int z = x;
	x = y;
	y = z - a / b * y;
}

我们可以很清楚的看到:首先把这一层的x存下来,即x2,把它存给z,此后z就代表x2。

根据” 上一层的x,等于这一层的y”这句话

我们 把y2赋值给x , 也就是  x=y ,从此时开始,x表示的值不再是x2,而是x1.

然后我们需要继续把y也给变成上一层的y。

也就是 x2 -  a/b y2.

所以就有了 y=z-a/b*y

此时开始,y就代表着上一层的y1.

还有另一种简化版本:(大家看喜欢哪个版本直接用就好了)

void exgcd(int a, int b, int& x, int& y) {
	if (!b) {
		x = 1, y = 0;
		return;
	}
	
	exgcd(b, a % b, y, x);
	y = y - a / b * x;
}

这个模板就是拓展欧几里德的内容。

但是!!!!!

还不够,为什么?

有些时候,一些题目求出来的解虽然没明说,但是暗戳戳地暗示了要最小正整数。

而我们扩展欧几里得求出来的数可能是负数。

所以,我们需要直到通项公式,这样就可以求出最小正整数了。

求通项公式的方法很简单,下面不给出证明地告诉你怎么求:

(懒得给证明,因为好长)

1、首先求出 ax+by=0的一组最小的非零解(不是最小正整数解!!是x,y的绝对值最小)。

2、由于a,b是确定的,这个方程转化为:|ax| =|by|

当x的绝对值变大的时候,显然y的绝对值也会变大。

显然|by|一定是a的倍数,而且a是已知的,所以要让|x|变得最小,也就是|ax|变得最小,

也就是|by|变得最小

我们想到:一个数(如by) 即是a的倍数,又是b的倍数,它的绝对值能变得多小?

对啦!那就是最小公倍数喵~

所以当|ax|=|by|=lcm(a,b)的时候,我们可以求出最小非零解。

x =  lcm(a,b)/ a     

又因为lcm(a,b) =  ab / gcd(a,b)

所以x= b/gcd(a,b)

也就是:另一个系数除以它们的最大公约数。

所以:

通项公式就是: x= x1 + k*(b/gcd(a,b))   (x1,是我们拓展欧几里得求出来的解)

(k是任意整数)

y=y1+k*(a/gcd(a,b))

拓展欧几里得算法有啥用?喵喵喵!

求解不定方程。

在我们后面会学到逆元的内容。我们就需要把逆元式子也转化乘不定方程的形式,

然后用拓展欧几里得算法,求出任意一个正整数解辣!!!

例题讲解!!!喵喵喵!

《洛谷深入浅出进阶篇》 欧几里得算法,裴蜀定理,拓展欧几里得算法————洛谷P1516 青蛙的约会-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134751119?spm=1001.2014.3001.5502


二、乘法逆元喵喵喵!喵喵喵!喵喵喵!

  • 啥是乘法逆元捏?
  • 乘法逆元有啥用捏?
  • 我们有什么方法来求乘法逆元捏?
  • 例题讲解捏!!!


啥是模意义下的乘法逆元?喵喵喵!

乘法逆元用一个式子就可以搞得定辣!

例如:

5*\frac{1}{5}=1

其中,\frac{1}{5} 的乘法逆元就是 5 ,也可以说5的乘法逆元是 \frac{1}{5}

一个数的乘法逆元乘以这个数本身得到1. 

而其他数乘以这个数,等于除以这个数的逆元。

或者说,除以这个数,等于乘上这个数的逆元。


我们把它拓展到模运算中:

a*x\equiv 1 (mod\ p)

a乘以它的逆元,模上模数得到1.

其中x是a的逆元,或者也可以说a是x的逆元。

还是一样的性质,

一个数在模运算下除以a,等于乘上a的逆元取模。

所以,有了逆元之后,我们就可以处理带除法的模的运算啦,喵喵喵!

但是,值得注意的是,逆元仅在a,与模数互质的情况下存在!喵喵喵!喵喵喵!


 

 乘法逆元有啥用呢?喵喵喵!喵喵喵!喵喵喵!

有了逆元之后,我们就可以处理带除法的模的运算啦,喵喵喵!

 如何求解乘法逆元呢?喵喵喵!喵喵喵!喵喵喵!

下面介绍一些工具!喵喵喵!喵喵喵!喵喵喵!

第一个:扩展欧几里得算法!!!!喵喵喵!喵喵喵!喵喵喵!喵喵喵!喵喵喵!

还是这个式子:a*x\equiv 1 (mod\ p)

我们可以把它变成:a*x + p*y =1

我们会惊讶惊讶惊讶惊讶惊讶惊讶惊讶惊讶地发现,这就是一组不定方程。

所以我们直接用拓展欧几里得来求解 x 就可以了

最后求出x的通项公式就行了。喵喵喵!喵喵喵!喵喵喵!

第二个捏:费马小定理

若a与p互质,那么有 a^{p-1}\equiv 1(mod\ p)

变形可得:a*a^{p-2}\equiv 1(mod\ p)

所以a的逆元就是a^{p-2}.

然后就可以用快速幂来求解惹。喵喵喵!喵喵喵!

(快速幂的模板不想打捏!喵喵喵!喵喵喵!喵喵喵!这么简单懒得打辣)

第三个:递推求逆元,超级重要!!!喵喵喵!喵喵喵!喵喵喵!喵喵喵!

对于任意一个数 i 和模数 p,我们有   p = i*q+r 

变形: i*q+r \equiv 0 (mod\ p)

移项:i \equiv \frac{-r}{p} (mod\ p)

取倒数:\frac{1}{i} \equiv \frac{-p}{r} (mod\ p)

可以表示成:inv(i) \equiv -inv(r)*q (mod\ p)

inv(i) \equiv -inv(r)*[\frac{p}{i}](mod\ p)

又因为,r=p%i ,一定比i小,所以捏,一定在 i前面被求出来了。

这样的话,我们就得到了递推式子了。

边界就是 inv(1)=1;

然后这样的话,还是有问题,为什么捏?

因为直接求出来的逆元有可能是负数,如果我们需要得到一个最小正整数的逆元,我们就可以不断加p直到大于零。


 

例题捏!喵喵喵~喵喵喵~喵喵喵~喵喵喵~喵喵喵~

《洛谷深入浅出进阶篇》模意义下的乘法逆元+洛谷P3811-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134766892?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170246734016800211562995%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170246734016800211562995&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-134766892-null-null.nonecase&utm_term=%E6%89%A9%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97&spm=1018.2226.3001.4450


三、同余方程与中国剩余定理

(本喵之前已经写过了,所以直接去链接里看吧,喵喵喵~喵喵喵~喵喵喵~喵喵喵~喵喵喵~

《洛谷深入浅出进阶篇》同余方程+中国剩余定理——洛谷P1495-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134788229?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170246966516800222838792%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170246966516800222838792&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-134788229-null-null.nonecase&utm_term=%E5%90%8C%E4%BD%99%E6%96%B9%E7%A8%8B&spm=1018.2226.3001.4450


四、线性筛(本喵另外写了一篇,直接放上来叭)

是你流的泪晕开——欧拉筛,线性筛-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134227096?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170247015916800185818810%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170247015916800185818810&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-134227096-null-null.nonecase&utm_term=%E7%BA%BF%E6%80%A7%E7%AD%9B&spm=1018.2226.3001.4450


五、欧拉函数(本喵另外写了一篇,直接放上来叭,内有例题哦)

选自《洛谷深入浅出进阶篇》——欧拉函数+欧拉定理+扩展欧拉定理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/louisdlee/article/details/134858233?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170247021816800185887376%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170247021816800185887376&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-134858233-null-null.nonecase&utm_term=%E7%A7%AF%E6%80%A7%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4450

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/241931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

融了超24亿一分钱不花,放银行吃利息,这家存储创企厉害了

​引言&#xff1a;AI与大模型风起云涌&#xff0c;催生了这匹存储“黑马” 【全球存储观察 &#xff5c; 科技热点关注】 这家总部设在美国的存储初创公司&#xff0c;真的赶上AI与大模型时代的风口了。Vast Data公司最新再次获得E轮融资1.18亿美元&#xff0c;但是这个存储…

Leetcode 78 子集

题意理解&#xff1a; 求一个集合的所有子集。该集合中没有重复元素。 首先明确什么是子集&#xff1a;子集中的元素都在全集里。 [1,2,3] 子集&#xff1a;[]、[1]、[2]、[3]、[12]、[13]、[23]、[123] 注意&#xff1a;[]空集是所有集合的子集。 解题思路&#xff1a; 类似于…

2023自动化测试框架大对比:哪个更胜一筹?

所谓工欲善其事&#xff0c;必先利其器&#xff0c;在进行自动化测试时&#xff0c;选择一个合适的框架是至关重要的。因为一个好的测试框架可以大大提高测试效率&#xff0c;减少我们很多工作量。在选择框架之前&#xff0c;我们通常需要对不同的框架进行对比&#xff0c;以便…

Jetpack Startup 优雅完成库的初始化和方法接口简化

目录 1.Startup组件是什么2.Startup组件能做啥2.1 startup组件可以简化用户使用我们提供的库的流程。2.2 简化库提供给使用者的API接口 3.如何使用Startup组件3.1 引入依赖3.2 创建一个初始化的类继承Initializer3.3 在我们库的AndroidManifest.xml中加入配置 4.使用Startup组件…

或许你更胜一筹呢

还记得刚出来时&#xff0c;一位前辈对我说过的一句话&#xff0c;“一定不要妄自菲薄”。说实话&#xff0c;一开始我并不知道这个成语的具体含义。后面百度才知道 妄自菲薄&#xff1a;过分地看轻自己 当时还没毕业&#xff0c;无论是从能力还是学识方面&#xff0c;我都不知…

C、C++、C#的区别概述

C、C、C#的区别概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻译源于此链接 01、C语言 ​ Dennis Ritchie在1972年创造了C语言并在1978年公布。Ritchie设计C的初衷是用于开发新版本的Unix。在那之…

如何建立一套完善的销售管理体系?

如何建立一套完善的销售管理体系&#xff1f; 该提问下已有许多专业的回答&#xff0c;从多个角度为题主出谋划策&#xff1a;销售主管如何提升个人能力、销售团队如何管理、PDCA管理方法论、销售闭环……似乎都与硬性的个人能力挂钩&#xff0c;销售能力、管理能力等等。 或…

技术Leader:像李云龙一样打造学习型团队

今天跟大家分享一下怎么样构建一个学习型的团队。 首先对于计算机行业而言&#xff0c;不明而喻&#xff0c;我们要接受的东西真的太多了。我们接触的信息和变化也太多了。如果只是因循守旧&#xff0c;排斥新东西&#xff0c;那么我们被时代淘汰只是个时间问题。 想当年我大…

boost编译静态库

版本1_83_0 下载地址https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.zip 解压后根目录可见 参考方式&#xff1a;打开index.html 可通过此路径找到编译方法 进入getting started&#xff0c;右下角有linux和windows的下一步可选&#xff0…

IO流(二)

目录 一.文件拷贝 1.小文件拷贝 2.FileInputStream的读取问题 二.捕获异常 三.字符集 1.GBK 英文存储&#xff08;单字节&#xff09; 中文存储&#xff08;双字节&#xff09; 2.Unicode 3.乱码 原因 规避乱码的方式 四.字符流 FileReader 无参 有参 FileWrit…

pcl的polygonmesh在cloudcompare显示异常

一个polygonMesh文件在PCL显示是这样的: 把它保存成ply,然后用cc打开却是这样的: 这看起来像是某些三角面片没有被保存下来,实际上是因为保存的polygonmesh带有法线信息被pcl区分正反面,这些黑色的小三角它的法线朝向和绿色的不一样. 一个解决办法是清除法线.在cloudcompare选…

AI全栈大模型工程师(二十四)常用的超参

文章目录 七、先介绍几个常用的超参7.1、过拟合与欠拟合7.2、学习率调整策略八、自然语言处理常见的网络结构8.1、文本卷积神经网络 TextCNN8.2、循环神经网络 RNN8.3、Attention (for RNN)后记七、先介绍几个常用的超参 7.1、过拟合与欠拟合 奥卡姆剃刀: 两个处于竞争地位的…

防火墙访问控制、安全审计、网络设备防护检查表

1、访问控制类检查 2、安全审计类检查 3、网络设备防护类检查 原件&#xff1a; 防火墙标准检查表 分类 测评项 预期结果 访问控制 应在网络边界部署访问控制设备&#xff0c;启用访问控制功能 启用了访问控制规则 应能根据会话状态信息为数据流提供明确的允许/拒绝访…

thinkphp连接数据库mysql 报错问题

第一 看报错日志php如果是下面这个报错的话 就是mysql 数据库没有验证连接 ​​​​​​​[2023-12-13T09:57:0108:00][error] [10501]SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 我们就可以去mysql 的文件检查 验证身份 使…

Nyquist Theorem(取样定理)

取样定理&#xff0c;又称为奈奎斯特定理&#xff08;Nyquist Theorem&#xff09;&#xff0c;是信号处理领域中一项至关重要的基本原理。它规定了对于连续时间信号&#xff0c;为了能够完全准确地还原出原始信号&#xff0c;即使是在离散时间下进行采样和再构建&#xff0c;都…

十大最好猫主食罐头有哪些品牌?最好猫主食罐头品牌推荐

很多人家里的哈基米是不是吃猫粮吃腻了&#xff0c;或者猫猫平时不喜欢喝水&#xff0c;又或者看猫猫太瘦了想入手几款猫罐头但是又愁于不会选择。而且现在猫罐头风这么大不知道选什么好~ 作为一个经营猫咖5年的老板&#xff0c;大促期间我总能捡漏&#xff0c;屯到一大波好吃…

Appium 自动化测试 —— Appium的环境搭建与设置流程!

1、Appium 环境搭建&#xff1a; 学习 appium 最大的难处之一在于环境的安装&#xff0c;安装流程比较繁琐&#xff0c;安装的工具和步骤也较多&#xff0c;以下是基于 Windows 系统下的 Android 手机端的安装流程。就像我们在用 Selenium 进行 web 自动化测试的时候一样&…

20章节多线程

20.1线程简介 世间有很多工作都是可以同时完成的。例如&#xff0c;人体可以同时进行呼吸、血液循环、思考问题等活用户既可以使用计算机听歌&#xff0c;也可以使用它打印文件。同样&#xff0c;计算机完全可以将多种活动同时进这种思想放在 Java 中被称为并发&#xff0c;而将…

前端八股文

前端八股文 目录 前端八股文1.css选择优先级&#xff1f;2.px与rem区别&#xff1f;3.重绘与重排的区别&#xff1f;4.元素水平垂直居中的方法&#xff1f;5.什么是闭包&#xff0c;闭包有什么特点&#xff1f;6.什么是事件委托&#xff1f;7.什么是原型链&#xff1f;8.new操作…

【Jenkins】Centos环境安装Jenkins(通过rpm安装)

在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 1、下载安装Jdk17 下载安装 # 更新您的系统&#xff0c;不一定需要 # sudo yum -y update # 安装将用于下载 Java 17 二进制文件的 wget 命令行工具。 s…