xrc的比赛

先看考试题,附加题最后再写

T1

首先看到是求逆序对为奇数的子串,发现只需要贪心
贪心发现求长度为2的逆序对最优,所以时间复杂度为 O ( n ) O(n) O(n)的贪心就能过了

#include<bits/stdc++.h>
using namespace std;
int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
const int N = 1e6 + 10;
int a[N];
int main() {
//	freopen("ex_data1.in","r",stdin);int n=read();for (int i = 1; i <= n; i ++ ) a[i]=read();int res = 0;for (int i = 1; i < n ; i ++ ) {if(a[i] > a[i + 1]) {res++,i++;}}printf("%d\n", res);return 0;
}

T2

这道题是可以考虑 D P DP DP 的,但与正解无关
然后考虑解法:
对于所有区间,可能会存在一个区间 [ l , r ] [l,r] [l,r],同时它存在一个分界点 i i i 使得分别对 [ l , i ] [ l , i ] [l,i] [ i + 1 , r ] [ i + 1 , r ] [i+1,r]排序比对 [ l , r ] [ l , r ] [l,r] 排序更优,代价省去 1 1 1 。考虑找到这样的区间,计算所有可以省去的代价。

​ 对于 [ l , r ] [ l , r ] [l,r] 若它分成两次排序会更优,则一定有 [ l , i ] [ l , i ] [l,i] 中的最大值小于 [ i + 1 , r ] [ i + 1 , r ] [i+1,r] 中的最小值。考虑枚举前半段的最大值 x x x ,位置为 b b b 。找到 b b b 位置前一个比 x x x 大的数,位置为 a a a ;后一个比 x x x 大的数,位置为 c c c c c c 后面第一个比 x x x 小的数,位置为 d d d
在这里插入图片描述然后考虑如何实现;
我们开两个 s e t set set 一个维护比当前数大的数的位置,一个维护比当前数小的数的位置
通过 l o w e r b o u n d lower_bound lowerbound u p p e r b o u n d upper_bound upperbound 两个函数就能解决
需要一部分指针的知识
这个复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)
能力接受。
当然还可以用单调栈进行解答,这里不再赘述。原因是作者单调栈能力有限

//查点的位置 
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int ans;
const int N=2e6+10;
int num[N];
int id[N];
int a,b,c,d;
bool cmp(int x,int y){return num[x]<num[y];
}
signed main(){
//	freopen("ex_data1.in","r",stdin);int n=read();set<int> s1,s2; for(int i=1;i<=n;i++){num[i]=read();s1.insert(i);id[i]=i;ans+=i*(n-i); }sort(id+1,id+1+n,cmp);
//	for(int i=1;i<=n;i++){
//		cout<<id[i]<<endl;
//	}
//	cout<<ans;s1.insert(0),s1.insert(n+1);s2.insert(0),s2.insert(n+1);//两个分别是比当前数大的位置和比当前数小的位置 for(int i=1;i<=n;i++){b=id[i];a=*(--s1.lower_bound(b));c=*(s1.upper_bound(b));
//		cout<<"__"<<a<<"__"<<b<<endl;if(c!=n+1){d=*s2.lower_bound(c);ans-=(d-c)*(b-a);
//			cout<<ans<<endl;}s1.erase(b);s2.insert(b);}printf("%lld",ans);return 0;
}

T3

考虑特殊性质的分数:直接输出 B
考试的时候想到了,但是输出的 A,要看清题目要求,题目要求输出必胜,我输出的必败
痛失 5 p t s 5pts 5pts
然后考虑正解
正解我不会,别人讲也不是特别懂,索性写个部分分吧
然后考虑DP,我们可以从最后一个区间向前转移,看图:
在这里插入图片描述
大概就是这么转移,一直转移到第一个区间,然后判断就行了
然后用 s e t set set 维护一下位置就又能多过一些点
代码按原题写的

#include<bits/stdc++.h>
#define ll long long
#define pir pair<ll,ll>
#define mkp make_pair
#define fi first
#define se second
#define pb push_back
using namespace std;
const ll maxn=1e6+10;
ll n,m,l[maxn],r[maxn],pre[maxn],nxt[maxn],vis[maxn],pos[maxn],tag0,tag1,tot=2,hd,x[maxn],len,g;
set<pir>st0,st1;
int main() {
//	freopen("p.in","r",stdin);scanf("%lld",&n);for(ll i=1; i<=n; i++) {scanf("%lld%lld",l+i,r+i);}pre[2]=1, nxt[1]=2;pos[1]=0, pos[2]=l[n];hd=1;g=0;st0.insert(mkp(l[n],1));for(ll i=n-1; i; i--) {if(g==0) {tag0+=l[i], tag1+=r[i];while(!st1.empty()&&st1.begin()->fi+tag0-tag1<=0) {pir t=*st1.begin();st1.erase(st1.begin());ll x=t.se, y=nxt[x];if(!nxt[y]) {nxt[x]=0;continue;}if(!pre[x]) hd=nxt[y];nxt[pre[x]]=nxt[y], pre[nxt[y]]=pre[x];if(pre[x]) st0.erase(mkp(pos[x]-pos[pre[x]],pre[x]));if(nxt[y]) st0.erase(mkp(pos[nxt[y]]-pos[y],y));if(pre[x]&&nxt[y]) st0.insert(mkp(pos[nxt[y]]-pos[pre[x]],pre[x]));}++tot, pos[tot]=-tag1;g^=1;nxt[tot]=hd, pre[hd]=tot;st1.insert(mkp(pos[hd]-pos[tot],tot)), hd=tot;} else {tag1+=l[i], tag0+=r[i];while(!st0.empty()&&st0.begin()->fi+tag1-tag0<=0) {pir t=*st0.begin();st0.erase(st0.begin());ll x=t.se, y=nxt[x];if(!nxt[y]) {nxt[x]=0;continue;}if(!pre[x]) hd=nxt[y];nxt[pre[x]]=nxt[y], pre[nxt[y]]=pre[x];if(pre[x]) st1.erase(mkp(pos[x]-pos[pre[x]],pre[x]));if(nxt[y]) st1.erase(mkp(pos[nxt[y]]-pos[y],y));if(pre[x]&&nxt[y]) st1.insert(mkp(pos[nxt[y]]-pos[pre[x]],pre[x]));}++tot, pos[tot]=-tag0;g^=1;nxt[tot]=hd, pre[hd]=tot;st0.insert(mkp(pos[hd]-pos[tot],tot)), hd=tot;}}ll u=hd;while(u) {x[++len]=pos[u]+(g&1? tag1:tag0);g^=1;u=nxt[u];}scanf("%lld",&m);while(m--) {ll c;scanf("%lld",&c);ll tmp=upper_bound(x+1,x+1+len,c)-x-1;if(tmp==len) puts("Draw");else puts((tmp^1)&1? "Alice":"Bob");}return 0;
}

T4

这道题需要用到匈牙利算法或网络流,借此机会回忆一下这两个算法:
首先看匈牙利算法:
参考资料:匈牙利算法
匈牙利算法是在二分图中跑最大匹配,就是最大的配对数

好多概念在这篇博客上都有了,我就不再抄一遍了
这里要注意:
完美匹配一定是最大匹配,最大匹配不一定是完美匹配
然后最大匹配的代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
const int N=1e5+10;
int head[N],tot;
bool vis[N];
int mat[N];
struct node{int to,nxt;
}e[N*2];
void add(int a,int b){tot++;e[tot].to=b;e[tot].nxt=head[a];head[a]=tot;
} 
int n,m,q;
bool find(int x){
//	cout<<"OPOPOO";for(int i=head[x];i;i=e[i].nxt){int y=e[i].to;if(!vis[y]){vis[y]=true;if(mat[y]==0||find(mat[y])){mat[y]=x;return true;}}}return false; 
}
signed main(){n=read(),m=read(),q=read();for(int i=1;i<=q;i++){int a=read(),b=read();add(a,b);
//		add(b,a);}int ans=0;for(int i=1;i<=n;i++){
//		cout<<"K";memset(vis,false,sizeof vis);if(find(i)) ans++;}printf("%lld",ans);return 0;
}

匈牙利还可以解决最小点覆盖问题:
最小点覆盖就是选出最少的点使得删除这些点相连的边后就没有边了,其实最小点覆盖就是最大匹配
下面给出匈牙利的伪代码:

  while(找到Xi的关联顶点Yj){if(顶点Yj不在增广路径上){将Yj加入增广路if(Yj是未覆盖点或者Yj的原匹配点Xk能找到增广路径){ //扩充集合M将Yj的匹配点改为Xi;返回true}}返回false
}

接下来看网络流,问了同只因房大犇,dinic使用场景更多,更适合我这个小蒟蒻
幸运的是打了一遍板子过了
d i n i c dinic dinic算法涉及的范围比较广泛,所以我这里就不都进行概述了,只说一下求最大流:
具体怎么求我也就不说了,就说一下注意事项

  1. 我们考虑几个优化:搜索顺序优化,当前弧优化,余量优化,残枝优化
  2. 然后就是因为考虑到反向边流量的计算,建边时 t o t tot tot要从2开始,即初始化为1
  3. 源点看作是无限的流量
  4. bfs 是对点分层,找增广路
  5. dfs是多路增广,就是不断找可行的流量
  6. 最后统计最大流
  7. 代码还是熟能生巧,所以还是要多练
    还有部分注释写在代码中了
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}const int N=1e5+10;
int head[N],tot=1;
int d[N],now[N];
struct node{int to,nxt,w;
}e[N*2];
void add(int a,int b,int c){tot++;e[tot].to=b;e[tot].w=c;e[tot].nxt=head[a];head[a]=tot;
} 
int s,t,n,m;
//对图进行分层 
bool bfs(){memset(d,0,sizeof d);queue<int> q;q.push(s);d[s]=1;while(q.size()){int x=q.front();q.pop();for(int i=head[x];i;i=e[i].nxt){int y=e[i].to;if(d[y]==0&&e[i].w){d[y]=d[x]+1;q.push(y);if(y==t) return true;}}}return false;
}
int dfs(int x,int flow){//flow等于剩余流量 if(x==t) return flow;int sum=0;for(int i=now[x];i;i=e[i].nxt){now[x]=i;//当前弧优化 int y=e[i].to;if(d[y]==d[x]+1&&e[i].w){int f=dfs(y,min(flow,e[i].w));//一定是取min ,用脑子能想出来e[i].w-=f;e[i^1].w+=f;//更新残留网 sum+=f;//增加x的流出流量 flow-=f;//减少x的剩余流量 if(m<=0) break;//余量优化 }}if(sum==0) d[x]=0;//残枝优化 return sum;
}
int dinic(){int maxflow=0;while(bfs()){memcpy(now,head,sizeof now);//源点可以看作是无限的流量 maxflow+=dfs(s,1e9);}return maxflow;
} 
signed main(){n=read(),m=read(),s=read(),t=read();for(int i=1;i<=m;i++){int a=read(),b=read(),c=read();add(a,b,c);add(b,a,0);}printf("%lld",dinic()); return 0;
}

然后我们看这道题:
记位置 i 会对答案产生贡献当且仅当 a i − 1 ≠ a i a_{i-1} \neq a_{i} ai1=ai , 问题可以转化成在 2 n 2 n 2n 个点中选最多的贡献给答案,现在考虑限制。对于两个区间 [ l 1 , r 1 ) , [ l 2 , r 2 ) \left[l_{1}, r_{1}\right),\left[l_{2}, r_{2}\right) [l1,r1),[l2,r2) , 我们分情况讨论:

  • [ l 1 , r 1 ) ∈ [ l 2 , r 2 ) \left[l_{1}, r_{1}\right) \in\left[l_{2}, r_{2}\right) [l1,r1)[l2,r2) 。显然我们先执行 [ l 2 , r 2 ) \left[l_{2}, r_{2}\right) [l2,r2) 再执行 [ l 1 , r 1 ) \left[l_{1}, r_{1}\right) [l1,r1) 是好的。
  • [ l 1 , r 1 ) ∩ [ l 2 , r 2 ) = ∅ \left[l_{1}, r_{1}\right) \cap\left[l_{2}, r_{2}\right)=\varnothing [l1,r1)[l2,r2)= 。显然互不影响。
  • [ l 1 , r 1 ) ∩ [ l 2 , r 2 ) ≠ ∅ \left[l_{1}, r_{1}\right) \cap\left[l_{2}, r_{2}\right) \neq \varnothing [l1,r1)[l2,r2)= 。 令 l 1 < l 2 , r 1 < r 2 l_{1}<l_{2}, r_{1}<r_{2} l1<l2,r1<r2 , 如果 [ l 1 , r 1 ) \left[l_{1}, r_{1}\right) [l1,r1) 在后面则 r 1 r_{1} r1 会产生贡献, 否则 l 2 l_{2} l2 会产生贡献。所以 r 1 r_{1} r1 l 2 l_{2} l2 不能同时选择,这就是一个建图后的独立集。
    这里给出我画的草图:
    在这里插入图片描述

发现题目保证 l i , r i l_{i}, r_{i} li,ri 互不相等, 故这是一个二分图,所以我们可以用到上面的芝士了。
然后题解有一个证明:为什么找到独立集后一定有对应解。
无解当且仅当对于区间执行顺序的先后限制构成环。考虑找到这个环上随便一个区间 [ l 1 , r 1 ) \left[l_{1}, r_{1}\right) [l1,r1) , 假设它取的是右端点 r 1 r_{1} r1 产生贡献, 找到它下一个区间 [ l 2 , r 2 ) \left[l_{2}, r_{2}\right) [l2,r2) , l 1 < l 2 , r 1 < r 2 l_{1}<l_{2}, r_{1}<r_{2} l1<l2,r1<r2 , 此时只能是 r 2 r_{2} r2 产生贡献。于是递归下去, 因为 r i r_{i} ri 互不相同, 所以环上的区间的 r r r 单调递增, 故不会形成环。
最后得出结论:一定有解
最后跑最大流就行了,注意 b i t s e t bitset bitset 优化

#include<bits/stdc++.h>
using namespace std;
const int inf=1e9;
inline int read() {int x=0,f=1;char ch=getchar();while (!isdigit(ch)) {if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)) {x=x*10+ch-48;ch=getchar();}return x*f;
}
int n,S,T,dep[10005];
bitset<10005>g[10005];
int bfs() {for(int i=1; i<=T; i++)dep[i]=0;dep[S]=1;queue<int>q;q.push(S);while(!q.empty()) {int u=q.front();q.pop();for(int v=g[u]._Find_first(); v<=T; v=max(v+1,(int)g[u]._Find_next(v))) {if(g[u][v]==0)continue;if(!dep[v])dep[v]=dep[u]+1,q.push(v);}}return dep[T];
}
int dinic(int u,int flow) {if(u==T)return flow;int rest=0;for(int v=g[u]._Find_first(); v<=T&&flow; v=max(v+1,(int)g[u]._Find_next(v))) {if(g[u][v]==0)break;if(dep[v]!=dep[u]+1)continue;int k=dinic(v,min(flow,1));if(!k)dep[v]=0;rest+=k,flow-=k;if(k)g[u][v]=0,g[v][u]=1;}return rest;
}
int l[5005],r[5005],pos[10005];
signed main() {n=read(),S=2*n+1,T=2*n+2;for(int i=1; i<=n; i++) {l[i]=read(),r[i]=read();pos[l[i]]=0,pos[r[i]]=1;}for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) {if(l[i]<l[j]&&l[j]<r[i]&&r[i]<r[j]) {g[l[j]][r[i]]=1;}}}for(int i=1; i<=2*n; i++)if(pos[i]==0)g[S][i]=1;for(int i=1; i<=2*n; i++)if(pos[i]==1)g[i][T]=1;int ans=2*n;while(bfs())ans-=dinic(S,inf);printf("%d\n",ans);return 0;
}

附加题有点难度
还涉及到了新知识,所以就不写了

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

少儿编程教育的多维度对比:软件类、硬件类与软硬件结合课程的选择

随着少儿编程教育的不断发展&#xff0c;市场上涌现出多种类型的编程课程&#xff0c;主要分为软件类课程、硬件类课程和软硬件结合类课程。三种课程各有特色&#xff0c;针对不同的编程对象和教学目标。本文将从多个维度深入对比这三类课程的特点、教学目的和学习难点&#xf…

雷池社区版7.1新版本自定义NGINX配置分析

简单介绍雷池&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击。 雷池通过阻断流向 Web 服务的恶意 HTTP 流量来保护 Web 服务。雷池作为反向代理接入网络&#xff0c;通过在 Web 服务前部署雷池&#xff0c;可在 Web 服…

【原创】java+ssm+mysql收纳培训网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

这款神器,运维绝杀 !!!

项目简介 CrowdSec 是一款开源的、基于社区协作的网络安全防护工具&#xff0c;它通过分析和共享IP信誉数据来对抗恶意行为。该软件不仅支持IPv6&#xff0c;而且相较于传统的Python实现&#xff0c;其采用Go语言编写&#xff0c;运行速度提升了60倍。CrowdSec 利用Grok模式解析…

推荐一款业内领先的建模工具:SAP PowerDesigner

SAP PowerDesigner是一款业内领先的建模工具&#xff0c;帮助您改进商务智能&#xff0c;打造更卓越的信息架构。通过该软件的元数据管理功能&#xff0c;可以构建关键信息资产的 360 度全方位视图&#xff0c;从而使数据管理、BI、数据集成和数据整合工作大获裨益。其分析功能…

Linux(CentOS)运行 jar 包

1、在本地终端运行&#xff0c;关闭终端&#xff0c;程序就会终止 java -jar tlias-0.0.1-SNAPSHOT.jar 发送请求&#xff0c;成功 关闭终端&#xff08;程序也会终止&#xff09; 发送请求&#xff0c;失败 2、在远程终端运行&#xff0c;关闭终端&#xff0c;程序就会终止 …

【JS学习】08. web API-事件进阶

Web APIs - 第3天 进一步学习 事件进阶&#xff0c;实现更多交互的网页特效&#xff0c;结合事件流的特征优化事件执行的效率 掌握阻止事件冒泡的方法理解事件委托的实现原理 事件流 事件流是对事件执行过程的描述&#xff0c;了解事件的执行过程有助于加深对事件的理解&…

Docker + Jenkins + gitee 实现CICD环境搭建

目录 前言 关于Jenkins 安装Jenkins docker中运行Jenkins注意事项 通过容器中的Jenkins&#xff0c;把服务打包到docker进行部署 启动Jenkins 创建第一个任务 前言 CI/CD&#xff08;持续集成和持续交付/持续部署&#xff09;&#xff0c;它可以实现自动化的构建、测试和部署…

150道MySQL高频面试题,学完吊打面试官--关于索引的五道大厂面试题,跳槽面试很重要

前言 本专栏为150道MySQL大厂高频面试题讲解分析&#xff0c;这些面试题都是通过MySQL8.0官方文档和阿里巴巴官方手册还有一些大厂面试官提供的资料。 MySQL应用广泛&#xff0c;在多个开发语言中都处于重要地位&#xff0c;所以最好都要掌握MySQL的精华面试题&#xff0c;这也…

在培训班学网络安全有用吗

在当今数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;成为了企业和个人关注的焦点。随着对网络安全人才需求的不断增长&#xff0c;各种网络安全培训班也如雨后春笋般涌现。然而&#xff0c;在培训班学网络安全真的有用吗? 一、网络安全的重要性与挑战 1. 信息时代的…

SQL Server 2008 R2 详细安装教程及错误解决教程

SQL Server 2008 R2 详细安装教程及错误解决教程 文章目录 SQL Server 2008 R2 详细安装教程及错误解决教程1.装载或解压ISO文件2. 运行setup程序3. 下载并安装.NET Framework3.54.选择全新安装或向现有安装添加功能5.输入秘钥同意条款6.选择安装类型7.设置角色8.功能选择9.实例…

HT32201 2x15W+30W免电感2.1声道D类音频功放

1 特性 ● 输出功率 2x12W24W(VDD14.5V, RL2x8Ω4Ω&#xff0c;THDN1%) 2x15W30W(VDD14.5V,RL2x8Ω4Ω&#xff0c;THDN10%) 2x8W16W(VDD12V,RL2x8Ω4Ω,THDN1%) 2x10W20W(VDD12V,RL2x8Ω4Ω&#xff0c;THDN10%) ● 单电源系统&#xff0c;4.5V-18V宽电压输入范围 ● 超过90…

Unreal5从入门到精通之如何在指定的显示器上运行UE程序

前言 我们有一个设备,是一个带双显示器的机柜,主显示器是一个小竖屏,可以触屏操作,大显示器是一个普通的横屏显示器。我们用这个机柜的原因就是可以摆脱鼠标和键盘,直接使用触屏操作,又可以在大屏观看,非常适合用于教学。 然后我们为这款机柜做了很多个VR项目,包括Uni…

揭秘全向轮运动学:机动艺术与上下位机通信的智慧桥梁

✨✨ Rqtz 个人主页 : 点击✨✨ &#x1f308;Qt系列专栏:点击 &#x1f388;Qt智能车上位机专栏: 点击&#x1f388; 本篇文章介绍的是有关于全向轮运动学分析&#xff0c;单片机与上位机通信C代码以及ROS里程计解算的内容。 目录 大纲 ROS&#xff08;机器人操作系统&…

动态规划理论基础和习题【力扣】【算法学习day.22】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…

大模型微调技术 --> LoRA 系列之 QLoRA (省资源能手)

QLoRA 1.摘要 作者提出了QLoRA&#xff0c;一种有效的微调方法&#xff0c;可以减少内存使用&#xff0c;足以在单个48 GB GPU上微调 65B 参数模型&#xff0c;同时保留完整的 16位 微调任务性能。 QLoRA 通过冻结的4位量化预训练语言模型将梯度反向传播到低秩适配器&#x…

一种ESB的设计

系统架构 ESB包括&#xff1a; ESB总控服务、业务应用集群、业务消息WEB服务、业务消息日志服务、运维管理平台、业务设计器。如下图所示 ESB总控服务 ESB总控服务承载了各项业务的运维和管理。主要包括&#xff1a; 业务流程的管理ESB内部不同模块间的通讯ESB系统设置和管理…

06 网络编程基础

目录 1.通信三要素 1. IP地址&#xff08;Internet Protocol Address&#xff09; 2. 端口号&#xff08;Port Number&#xff09; 3. 协议&#xff08;Protocol&#xff09; 2.TCP与UDP协议 三次握手&#xff08;Three-Way Handshake&#xff09; 四次挥手&#xff08;…

使用sealos部署的集群在部署metrics-server时日志x509

1、下载文件并进行部署 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml2、进行部署 kubectl apply -f components.yaml3、发现问题 pod容器已经启动但是健康检查没有通过 kubectl get pod -n kube-system metrics-server…