从0开始 莫比乌斯函数和反演 学习笔记

news2024/11/28 16:45:43

莫比乌斯

0 前言

建议先看这篇比较简略的文章(有大概了解)

莫比乌斯函数_为最后的荣光的博客-CSDN博客

再根据个人情况食用本篇博客

1 莫比乌斯函数

1 1 定义

首先对 n n n 唯一分解

唯一分解

唯一分解定理一篇就够了_求唯一分解式程序_JdiLfc的博客-CSDN博客

唯一分解定理及其证明 - 夶 - 博客园 (cnblogs.com)

n = p 1 k 1 p 2 k 2 … p m k m , 其中 p i 为 n 的互异质因子 , ∀ i , k i 为正整数 (0) n=p_1^{k_1}p_2^{k_2}\dots p_m^{k_m},其中p_i为n的互异质因子,\forall i,k_i为正整数 \tag{0} n=p1k1p2k2pmkm,其中pin的互异质因子,i,ki为正整数(0)

μ ( n ) = { 1 , n = 1 0 , ∃ i , k i ≠ 1 ( − 1 ) m , ∀ i , k i = 1 (1) \mu(n)= \begin{cases} 1,\quad n=1\\ 0, \quad \exist i,k_i\neq1\\ (-1)^m,\quad \forall i, k_i=1 \end{cases} \tag{1} μ(n)= 1,n=10,i,ki=1(1)m,i,ki=1(1)

1 2 性质

1 2 1 性质一

莫比乌斯函数是积性函数

积性函数

(在这里只需要知道定义基本上就🆗了)

[积性函数的性质及证明 + 线性筛_新熊君的博客-CSDN博客](https://blog.csdn.net/wubaizhe/article/details/76711158#:~:text=定义: 对于一个定义域为 N %2B 的函数 f ,对于任意两个互质的正整数 a%2Cb,(ab) %3D f (a)f (b) ,则函数 f 被称为完全积性函数。)

积性函数 - Wuweizheng - 博客园 (cnblogs.com)

积性函数与线性筛 - 租酥雨 - 博客园 (cnblogs.com)

μ ( n m ) = μ ( n ) μ ( m ) \mu(nm)=\mu(n)\mu(m) μ(nm)=μ(n)μ(m)

这个证明过于显然了点

  1. m = 1 m=1 m=1,所以 μ ( m n ) = μ ( 1 ) μ ( n ) = μ ( n ) \mu(mn)=\mu(1)\mu(n)=\mu(n) μ(mn)=μ(1)μ(n)=μ(n)

    因为 μ ( m ) = μ ( 1 ) = 1 \mu(m)=\mu(1)=1 μ(m)=μ(1)=1 μ ( m ) μ ( n ) = μ ( m n ) \mu(m)\mu(n)=\mu(mn) μ(m)μ(n)=μ(mn)成立

  2. g c d ( n , m ) = 1 gcd(n,m)=1 gcd(n,m)=1时,显然 m , n m,n m,n 各自互异质因子的并集= m n mn mn 的互异质因子

    并且无交集(因为 m , n m,n m,n互质)

    所以 m m m 互异质因子个数+ n n n 互异质因子个数 = m n mn mn 的互异质因子个数

    μ ( m ) μ ( n ) = ( − 1 ) s m ( − 1 ) s n = ( − 1 ) s m + s n = μ ( m n ) \mu(m)\mu(n)=(-1)^{s_m}(-1)^{s_n}=(-1)^{s_m+s_n}=\mu(mn) μ(m)μ(n)=(1)sm(1)sn=(1)sm+sn=μ(mn)成立

    其中 s n s_n sn 表示 n n n 互异质因子的个数

1 2 2 性质二

对于任意正整数 n n n ,有:
∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , n ≠ 1 (2) \sum_{d|n}\mu(d)= \begin{cases} 1,\quad n=1\\ 0, \quad n\neq1 \end{cases} \tag{2} dnμ(d)={1,n=10,n=1(2)

证明:

  1. n = 1 n=1 n=1 时, ∑ d ∣ n μ ( d ) = μ ( 1 ) = 1 \sum_{d|n}\mu(d)=\mu(1)=1 dnμ(d)=μ(1)=1

  2. n ≠ 1 n\neq1 n=1 时, ∑ d ∣ n μ ( d ) = ∑ i = 0 m C m i ( − 1 ) i = 0 \sum_{d|n}\mu(d)=\sum_{i=0}^m C_m^i(-1)^i=0 dnμ(d)=i=0mCmi(1)i=0

    为什么呢?

    首先对 n n n 唯一分解 (查看 ( 0 ) (0) (0)

    d = p 1 q 1 p 2 q 2 … p m q m d=p_1^{q_1}p_2^{q_2}\dots p_m^{q_m} d=p1q1p2q2pmqm,其中 ∀ 1 ≤ i ≤ m , 0 ≤ q i ≤ k i \forall 1\leq i\leq m, 0\leq q_i\leq k_i ∀1im,0qiki

    ∃ i , q i ≥ 2 \exist i,q_i \geq 2 i,qi2 时, μ ( d ) = 0 \mu(d)=0 μ(d)=0

    因此我们只需要考虑只存在 q i = 1   o r   0 q_i=1\space or \space 0 qi=1 or 0 的情况

    s = ∑ i = 1 m [ q i ≠ 0 ] s=\sum_{i=1}^m[q_i\neq0] s=i=1m[qi=0]

    那么 μ ( d ) = ( − 1 ) s \mu(d)=(-1)^s μ(d)=(1)s

    这样的 d d d 显然只有 C m s C_m^s Cms

    解释:

    因为当 d d d s s s 个互异质因子的时候

    s s s 个质因子显然是 n n n m m m 个互异质因子之中

    因此 d d d 就是从 m m m 个数中选 s s s 个数(有区别)的方案数

    即组合数 C m s C_{m}^s Cms

    虽然是从0开始,但不至于连组合数是什么都不知道吧

    因此,现在我们可以得出:

    ∑ d ∣ n μ ( d ) = ∑ s = 0 m C m s ( − 1 ) s \sum_{d|n}\mu(d)=\sum_{s=0}^{m}C_m^s(-1)^s dnμ(d)=s=0mCms(1)s

    根据二项式定理 ∑ d ∣ n μ ( d ) = ∑ s = 0 m C m s ( − 1 ) s = 0 \sum_{d|n}\mu(d)=\sum_{s=0}^{m}C_m^s(-1)^s=0 dnμ(d)=s=0mCms(1)s=0

    二项式定理

    【高中数学基础课】二项式定理 - 知乎 (zhihu.com)

    emmm还是只看公式就基本上🆗了反正我们是信息竞赛又不是数学竞赛

    不过要是有dalao能把证明看懂的话就orz

    (但是这好像是高中数学的知识,初三狗表示我不会)

1 3 求解

由于 μ ( n ) \mu(n) μ(n) 是积性函数,所以可以用线性筛法在 O ( n ) O(n) O(n)内完成

不知道的看积性函数

void get_mu(ll n){
    mu[1]=1;// 存放 莫比乌斯函数;
    //isp[] 存放 是否是质数
    //pri[]  存放  质数 
    for(int i=2;i<=n;i++){
        if(!isp[i]) {
            pri[++cnt]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=cnt&&i*pri[j]<=n;j++){
            isp[i*pri[j]]=1;
            if(i%pri[j]==0){
                mu[i*pri[j]]=0;
                break;
            }//也可以直接break 因为里面本来存的就是0 
            else mu[i*pri[j]]=-mu[i];            
        }        
    } 
}

1 4 *超级实用的“公式”

[ g c d ( i , j ) = 1 ] = ∑ d ∣ g c d ( i , j ) μ ( d ) [gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d) [gcd(i,j)=1]=dgcd(i,j)μ(d)

证明:

根据性质二 ∑ d ∣ n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] dnμ(d)=[n=1]

g c d ( i , j ) gcd(i,j) gcd(i,j)带入上式 n n n

得到 ∑ d ∣ g c d ( i , j ) μ ( d ) = [ g c d ( i , j ) = 1 ] \sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1] dgcd(i,j)μ(d)=[gcd(i,j)=1]

2 莫比乌斯反演

2 1 公式

f ( n ) = ∑ d ∣ n g ( d ) ⇒ g ( n ) = ∑ d ∣ n f ( n d ) μ ( d ) f(n)=\sum_{d|n}g(d)\Rightarrow g(n)=\sum_{d|n}f(\frac{n}{d})\mu(d) f(n)=dng(d)g(n)=dnf(dn)μ(d)

2 2 证明

2 3 变形

2 3 1 形式一(倍数形式)

f ( i ) = ∑ d = 1 ⌊ n i ⌋ g ( d i ) ⇒ g ( i ) = ∑ d = 1 ⌊ n i ⌋ f ( d i ) μ ( d ) f(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}g(di)\Rightarrow g(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(di)\mu(d) f(i)=d=1ing(di)g(i)=d=1inf(di)μ(d)

证明:

(和一般形式类似)

g ( i ) = ∑ d = 1 ⌊ n i ⌋ f ( d i ) μ ( d ) g(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(di)\mu(d) g(i)=d=1inf(di)μ(d) 带入前式
f ( i ) = ∑ d = 1 ⌊ n i ⌋ g ( d i ) f(i)=\sum_{d=1}^{\lfloor\frac{n}{i}\rfloor}g(di) f(i)=d=1ing(di)

f ( i ) = ∑ d = 1 ⌊ n i ⌋ ∑ d 1 = 1 ⌊ n i ⌋ f ( d d 1 i ) μ ( d 1 ) f(i)=\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}\sum_{d_1=1}^{\lfloor \frac{n}{i} \rfloor}f(dd_1i)\mu(d_1) f(i)=d=1ind1=1inf(dd1i)μ(d1)

T = d d 1 T=dd1 T=dd1,则:
f ( i ) = ∑ T = 1 ⌊ n i ⌋ ∑ d = 1 ⌊ n i ⌋ f ( T i ) μ ( T d ) f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)\mu(\frac{T}{d}) f(i)=T=1ind=1inf(Ti)μ(dT)

f ( i ) = ∑ T = 1 ⌊ n i ⌋ f ( T i ) [ ∑ d = 1 ⌊ n i ⌋ μ ( T d ) ] f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d=1}^{\lfloor \frac{n}{i} \rfloor}\mu(\frac{T}{d})] f(i)=T=1inf(Ti)[d=1inμ(dT)]

f ( i ) = ∑ T = 1 ⌊ n i ⌋ f ( T i ) [ ∑ d 1 ∣ T μ ( d 1 ) ] f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d_1|T}\mu(d_1)] f(i)=T=1inf(Ti)[d1Tμ(d1)]

根据莫比乌斯函数的性质二
∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , n ≠ 1 \sum_{d|n}\mu(d)= \begin{cases} 1,\quad n=1\\ 0, \quad n\neq1 \end{cases} dnμ(d)={1,n=10,n=1
T = 1 T=1 T=1时, ∑ d 1 ∣ T μ ( d 1 ) = 1 \sum_{d_1|T}\mu(d_1)=1 d1Tμ(d1)=1 f ( i ) [ ∑ d 1 ∣ T μ ( d 1 ) ] = f ( i ) μ ( 1 ) = f ( i ) f(i)[\sum_{d_1|T}\mu(d_1)]=f(i)\mu(1)=f(i) f(i)[d1Tμ(d1)]=f(i)μ(1)=f(i)

T ≠ 1 T\neq1 T=1时, ∑ d 1 ∣ T μ ( d 1 ) = 0 \sum_{d_1|T}\mu(d_1)=0 d1Tμ(d1)=0 f ( T i ) [ ∑ d 1 ∣ T μ ( d 1 ) ] = 0 f(Ti)[\sum_{d_1|T}\mu(d_1)]=0 f(Ti)[d1Tμ(d1)]=0

综上,
f ( i ) = ∑ T = 1 ⌊ n i ⌋ f ( T i ) [ ∑ d 1 ∣ T μ ( d 1 ) ] = f ( i ) f(i)=\sum_{T=1}^{\lfloor \frac{n}{i} \rfloor}f(Ti)[\sum_{d_1|T}\mu(d_1)]=f(i) f(i)=T=1inf(Ti)[d1Tμ(d1)]=f(i)

2 3 2 形式二(整除形式)

f ( i ) = ∑ d ∣ i g ( d ) ⇒ g ( i ) = ∑ d ∣ i f ( i d ) μ ( d ) f(i)=\sum_{d|i}g(d)\Rightarrow g(i)=\sum_{d|i}f(\frac{i}{d})\mu(d) f(i)=dig(d)g(i)=dif(di)μ(d)

就是一般形式

2 4 性质

f ( n ) 是积性函数 ⇔ g ( n ) 是积性函数 f(n)是积性函数\Leftrightarrow g(n)是积性函数 f(n)是积性函数g(n)是积性函数

3 应用

3 1 [HAOI2011]Problem b

3 1 1 题目大意

求当 i ∈ [ a , b ] , j ∈ [ c , d ] i∈[a,b],j∈[c,d] i[a,b],j[c,d],满足 g c d ( i , j ) = k gcd(i,j)=k gcd(i,j)=k的数对 ( i , j ) (i,j) (i,j)的个数


a n s = ∑ i = a b ∑ j = c d [ g c d ( i , j ) = k ] ans=\sum_{i=a}^{b}\sum_{j=c}^{d}[gcd(i,j)=k] ans=i=abj=cd[gcd(i,j)=k]

3 1 2 SOLUTION

定义函数 f f f

f ( n , m ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = k ] f(n,m)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=k] f(n,m)=i=1nj=1m[gcd(i,j)=k]

显然 a n s ans ans可以由函数 f f f 容斥得到

a n s = f ( c , d ) − f ( a − 1 , d ) − f ( b , c − 1 ) + f ( a − 1 , c − 1 ) ans=f(c,d)−f(a−1,d)−f(b,c−1)+f(a−1,c−1) ans=f(c,d)f(a1,d)f(b,c1)+f(a1,c1)

现在考虑怎么求 f f f

根据1 1 4*超级实用的公式可得
f ( n , m ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = k ] f(n,m)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=k] f(n,m)=i=1nj=1m[gcd(i,j)=k]

f ( n , m ) = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∑ d ∣ g c d ( i , j ) μ ( d ) f(n,m)=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}\sum_{d|gcd(i,j)}\mu(d) f(n,m)=i=1knj=1kmdgcd(i,j)μ(d)

枚举 d ′ = d g c d d'=\frac{d}{gcd} d=gcdd

f ( n , m ) = ∑ d = 1 m i n ( ⌊ n k ⌋ , ⌊ m k ⌋ ) μ ( d ) g ( k d ) f(n,m)=\sum_{d=1}^{min(\lfloor\frac{n}{k}\rfloor,\lfloor\frac{m}{k}\rfloor)}\mu(d)g(kd) f(n,m)=d=1min(⌊kn,km⌋)μ(d)g(kd)

g ( d ) 表示 i [ 1 , n ] , j [ 1 , m ] 满足 d ∣ g c d ( x , y ) 的对数 g(d)表示i[1,n],j[1,m]满足d|gcd(x,y)的对数 g(d)表示i[1,n],j[1,m]满足dgcd(x,y)的对数

显然可以知道 g ( d ) = ⌊ n d ⌋ ⌊ m d ⌋ 显然可以知道g(d)=\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor 显然可以知道g(d)=dndm

f ( n , m ) = ∑ d = 1 m i n ( ⌊ n k ⌋ , ⌊ m k ⌋ ) μ ( d ) × ⌊ n k d ⌋ × ⌊ m k d ⌋ f(n,m)=\sum_{d=1}^{min(\lfloor\frac{n}{k}\rfloor,\lfloor\frac{m}{k}\rfloor)}\mu(d)\times\lfloor\frac{n}{kd}\rfloor\times\lfloor\frac{m}{kd}\rfloor f(n,m)=d=1min(⌊kn,km⌋)μ(d)×kdn×kdm

浅谈莫比乌斯反演 - B1ueC4t 的博客 - 洛谷博客 (luogu.com.cn)

莫比乌斯反演-让我们从基础开始 - An_Account 的博客 - 洛谷博客 (luogu.com.cn)

莫比乌斯反演 - OI Wiki (oi-wiki.org)

莫比乌斯函数及其应用 - ZAP-Queries + Problem b + GCD_莫比乌斯函数应用_njuptACMcxk的博客-CSDN博客

就可以直接计算了

就是这么简单~~(才怪)~~

3 1 3 CODE
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+2;
int T,a,b,c,d,k,mu[N],SumMu[N],pri[N],isp[N],cnt;
int Mobius(int n,int m,int k){//(i[1,n]j[1,m]{[gcd(i,j)=k]})的个数
    if(n>m) swap(n,m);
    n/=k,m/=k; 
    int ans=0;
    for(int i=1,j;i<=n;i=j+1) {
        j=min(n/(n/i),m/(m/i));
        ans+=(SumMu[j]-SumMu[i-1])*(n/i)*(m/i);
    }
    return ans;
}
void Mu(int n);//见模板部分
int main(){
    Mu(N-2);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>T;
    while(T--){
        cin>>a>>b>>c>>d>>k;
        cout<<Mobius(b,d,k)-Mobius(b,c-1,k)-Mobius(a-1,d,k)+Mobius(a-1,c-1,k)<<"\n";
    }
    return 0;
}

「BZOJ2693」jzptab

【BZOJ2693】jzptab - yoyoball - 博客园 (cnblogs.com)

搞半天发现这个模数搞错了。。。。尬住了,ԾㅂԾ,

[BZOJ4407]于神之怒加强版 - 租酥雨 - 博客园 (cnblogs.com)

枚举倍数真的是一个非常常见并且常用的套路啊!!

4 后话

整除分块 - pengym - 博客园 (cnblogs.com)

最后,我想说莫比乌斯反演-让我们从基础开始 - An_Account 的博客 - 洛谷博客 (luogu.com.cn)这篇博客非常的实用(just tell you the sercet of the common probelms’ solution),但是如果想彻底了解的话,我们还是老老实实学吧…( _ _)ノ|

完结撒花❀

★,°:.☆( ̄▽ ̄)/$:.°★

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot——根据需求创建后端接口

需求分析: 具体返回如下JSON格式数据 含有四个属性列:id 和 username 和photo 和followerCount 第一步: 首先按照下面文章创建一个模板项目 SpingBoot——SB整合MB的web项目模板_北岭山脚鼠鼠的博客-CSDN博客 第二步: 使用如下的建表语句在一个数据库中新建一个用户表 CREA…

【C++进阶之路】类和对象(下)

文章目录 一.再谈构造函数初始化对象的两种方式1.函数体内赋值2.初始化列表深入理解初始化列表 3.explicit隐式类型转换 二.static成员引言static成员static成员函数练习 三.友元引入友元函数友元类 四.内部类基本概念练习 五 .匿名对象引入匿名对象补充&#xff1a;编译器的优…

一百一十三、DBeaver——从hive同步数据到clickhouse

目标&#xff1a;把hive的DM层结果数据导出到clickhouse数据库&#xff0c;试了kettle、sqoop等多种方法都报错&#xff0c;尤其是kettle&#xff0c;搞了大半天发现还是不行。结果目前就只能用DBeaver同步数据。 准备工作&#xff1a;hive和clickhouse中都建好表 第一步&…

$nextTick与原生js先渲染dom再执行函数的方式

$nextTick与原生js先渲染dom再执行函数的方式 vue的$nextTick 简述 Vue.js 的 $nextTick 方法是用于在 DOM 更新后执行延迟回调的方法。 当 Vue.js 更新 DOM 后&#xff0c;有时候需要执行一些操作&#xff08;如获取更新后的 DOM 元素的位置等&#xff09;&#xff0c;但是…

2023年美国大学生数学建模竞赛C题预测Wordle的结果解题全过程文档及程序

2023年美国大学生数学建模竞赛 C题 预测Wordle的结果 原题再现&#xff1a; 背景介绍   Wordle是纽约时报目前每天提供的一个流行谜题。玩家通过在六次或更短时间内猜出一个至五个字母的单词来解决这个谜题&#xff0c;每次猜测都会得到反馈。在这个版本中&#xff0c; 每个…

30Wqps+闲鱼优惠中台,如何架构的?

说在前面 在尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常遇到一个 非常、非常高频的一个面试题&#xff0c;但是很不好回答&#xff0c;类似如下&#xff1a; 千万级数据&#xff0c;如何做系统架构&#xff1f;亿级数据&#xff0c;如何做做系统架构&#xf…

2022年美国大学生数学建模竞赛E题森林的碳封存解题全过程文档及程序

2022年美国大学生数学建模竞赛 E题 森林的碳封存 原题再现&#xff1a; 背景   正如我们所知&#xff0c;气候变化对生命构成了巨大威胁。为了减轻气候变化的影响&#xff0c;我们需要采取有效的行动来减少大气中温室气体的含量。仅仅减少温室气体排放是不够的。我们需要努…

Redis可持久化详解2

目录 ​编辑 Redis的持久化配置参数&#xff1a; 2.Redis的性能问题&#xff1a; 3保持久化数据的完整性和正确性&#xff1a; 4.Redis的集群技术&#xff1a; 总结&#xff1a; Redis持久化不得不注意的一些地方。 Redis的持久化配置参数&#xff1a; save&#xff1a;指…

MySQL之InnoDB表空间

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的&#xff1a;从根儿上理解MySQL》 通过前边的内容&#xff0c;相信大家都知道了表空间是一个抽象的概念&#xff0c;对于系统表空间来说&am…

Unity 全新的输入系统

选new的那个 会重启ide 然后去package manager里把这个装上 创建配置文件 文档地址 https://docs.unity3d.com/Packages/com.unity.inputsystem1.5/manual/index.html 创建完了是这样的 设置成这样 记住 value 和 vector2 然后就可以 选择 上下左右了 之前不设置 value…

【macOS】:macbook 安装了两个macOS后,设置默认启动的顺序

【macOS】&#xff1a;macbook 安装了两个macOS后&#xff0c;设置默认启动的顺序 如果你的 MacBook 安装了两个 macOS 操作系统&#xff0c; 你可以通过以下步骤设置默认启动的顺序&#xff1a; 1. 点击苹果菜单&#xff0c;选择“系统偏好设置”。 2. 点击“启动磁盘”选…

基于OpenMP的并行计算实验

一、实验目的 在Linux系统中&#xff0c;基于C编写OpenMP用例对并行计算进行实验&#xff1a; 1.掌握OpenMP的配置方式&#xff1b; 2.通过编写测试用例&#xff0c;观察引入OpenMP的加速效果 二、实验内容 2.1配置并测试OpenMP 1.配置并测试OpenMP 配置环境变量&#x…

MySQL基础(三十五)多版本并发控制

1. 什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;&#xff0c;多版本并发控制。顾名思义&#xff0c;MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操作有了保证。换言之&…

乡镇外卖好做吗?这几点一定要注意

乡镇外卖可靠吗&#xff1f;随着90后逐渐成为社会的主力军&#xff0c;自主创业&#xff0c;不做农民工已经成为这一代人的标签。找到一个项目难&#xff0c;可靠的项目更难找。根据实际数据反馈&#xff0c;乡镇外卖的就是是一个小而精细的项目。 但如果想通过乡镇外卖每月挣…

Python获取酷得music并下载,获得无限听

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests re win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源) 代码实现步骤 <基…

H桥电机驱动芯片CS9027C可pin对pin兼容DRV8812

CS9027C为打印机和其它电机一体化应用提供一种双通道集成电机驱动方案。CS9027C有两路 H 桥驱动&#xff0c;每个H桥可提供最大输出电流2A(在24V 和Ta 25℃ 适当散热条件下)&#xff0c;可驱动两个刷式直流电机&#xff0c;或者一个双极步进电机&#xff0c;或者螺线管或者其它…

全网火爆,性能测试从0到1分析需求到实战详解,冲出高级测试岗...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、制定测试目的 …

《设计模式》备忘录模式

《设计模式》备忘录模式 定义&#xff1a; 备忘录模式又称为快照模式或者令牌模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;这样可以在以后将对象恢复到原先保存的状态。属性行为型模式。 备…

【云原生】私有镜像的解决方案-Harbor管理实战

前言 通过前面的镜像管理&#xff0c;我们知道docker的开发和运行都离不开镜像管理&#xff0c;如果要进行镜像管理就需要使用镜像仓库。 docker官方提供的镜像仓库是&#xff1a; docker hub&#xff0c; 很方面但从安全和效率的角度考虑&#xff0c;这样的公有镜像环境就无…

Qt文件系统源码分析—第一篇QFile

深度 本文主要分析Windows平台&#xff0c;Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次&#xff0c;再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice QIODev…