全技术栈企业级性能调优万花筒

qiusuo1024 · · 34 次点击 · 开始浏览    置顶
全技术栈企业级性能调优万花筒 为什么说:性能调优技术一直是市场上的香饽饽,是面试考察关键的一环,是工作中技术能力的分水岭?用最接地气话回答就是:掌握性能优化,钱多事儿少离家近的工作任君选择!本课程是关于:全技术栈性能调优,即:性能优化的N种企业级解决方案,囊括了【数据库优化】、【Tomcat优化】、【JVM优化】、【垃圾回收】、【Netty优化】、【Nginx优化】、【性能优化高频面试集锦】这6大专题+1项面试调优复盘。攻克性能调优,给自己的程序人生一次“弯道超车”的机会,让自己未来拥有更多的选择权掌控权! 适合人群 Java后端开发人员 对性能调优感兴趣的人 新手学技术,老手学思维,高手学境界 技术储备要求 精通Java语法 有一定的开发经验 IL void access(int x) {//打通從根節點到x的途径,x最深 for(R y=0; x; x=fa(y=x)) { splay(x),rs(x)=y,pushup(x); } } Make_root(x):將x變成根節點 IL void makeroot(int x) {//把x變爲原樹的根 access(x),splay(x),Rev(x); } Find_root(x):找到x所在的根節點 IL int findroot(int x) {//找到x的原樹的根 access(x),splay(x); while(ls(x)) pushdown(x),x=ls(x); return x; } Spilt(x,y):將x到y的途径變成實邊途径 IL void split(int x,int y) {//y維護x-y途径上的信息 makeroot(x),access(y),splay(y); } Link(x,y):若x,y不連通,則參加(x,y)這條邊 IL void link(int x,int y) { makeroot(x);if(findroot(y)!=x) fa(x)=y; } Cut(x,y):若x,y之間有邊,則删掉該邊 IL void cut(int x,int y) { split(x,y); if(fa(x)==y&&rs(x)==0) fa(x)=ls(y)=0,pushup(y); } Isroot(x):判別x能否是所在splay的根節點 IL int nroot(int x) //返回1阐明x不是根,返回0阐明x是根 {return ls(fa(x))==x||rs(fa(x))==x;} P3690 【模板】Link Cut Tree (動態樹) 萌新寫代码~码風跟喻隊學的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOtyn2Wj-1616093171049)()]``` 1 #include<bits/stdc++.h> 2 #define IL inline 3 #define R register int 4 #define ls(x) a[x].ch[0] 5 #define rs(x) a[x].ch[1] 6 #define fa(x) a[x].fa 7 8 using namespace std; 9 const int N=1e5+5,inf=0x3f3f3f3f; 10 11 IL int read() { 12 int f=1; 13 char ch; 14 while((ch=getchar())<‘0’||ch>‘9’) if(ch==’-’) f=-1; 15 int res=ch-‘0’; 16 while((ch=getchar())>=‘0’&&ch<=‘9’) res=res10+ch-‘0’; 17 return resf; 18 } 19 20 int n,m; 21 struct hh { 22 int ch[2],fa,val,rev,sum; 23 } a[N]; 24 25 IL int chk(int x) {return x==rs(fa(x));} 26 IL void Rev(int x) {swap(ls(x),rs(x));a[x].rev^=1;} 27 IL void pushup(int x) {a[x].sum=a[ls(x)].suma[rs(x)].suma[x].val;} 28 IL int nroot(int x) //返回1阐明x不是根,返回0阐明x是根 29 {return ls(fa(x))==x||rs(fa(x))==x;} 30 31 IL void pushdown(int x) { 32 if(a[x].rev) { 33 a[x].rev=0; 34 if(ls(x)) Rev(ls(x)); 35 if(rs(x)) Rev(rs(x)); 36 } 37 } 38 39 IL void pushall(int x) { 40 if(nroot(x)) pushall(fa(x)); 41 pushdown(x); 42 } 43 44 IL void rotate(int x) { 45 int y=fa(x),z=fa(y),k=chk(x),w=a[x].ch[k^1]; 46 if(nroot(y)) a[z].ch[chk(y)]=x;fa(x)=z; 47 if(w) fa(w)=y;a[y].ch[k]=w; 48 fa(y)=x;a[x].ch[k^1]=y; 49 pushup(y);pushup(x); 50 } 51 52 IL void splay(int x) {//把x轉到splay的根 53 pushall(x); 54 while(nroot(x)) { 55 int y=fa(x); 56 if(nroot(y)) rotate(chk(x)^chk(y)?x:y); 57 rotate(x); 58 } 59 } 60 61 IL void access(int x) {//打通從根節點到x的途径,x最深 62 for(R y=0; x; x=fa(y=x)) { 63 splay(x),rs(x)=y,pushup(x); 64 } 65 } 66 67 IL void makeroot(int x) {//把x變爲原樹的根 68 access(x),splay(x),Rev(x); 69 } 70 71 IL int findroot(int x) {//找到x的原樹的根 72 access(x),splay(x); 73 while(ls(x)) pushdown(x),x=ls(x); 74 return x; 75 } 76 77 IL void split(int x,int y) {//y維護x-y途径上的信息 78 makeroot(x),access(y),splay(y); 79 } 80 81 IL void link(int x,int y) { 82 makeroot(x);if(findroot(y)!=x) fa(x)=y; 83 } 84 85 IL void cut(int x,int y) { 86 split(x,y); 87 if(fa(x)y&&rs(x)0) fa(x)=ls(y)=0,pushup(y); 88 } 89 90 int main() { 91 n=read(); 92 m=read(); 93 for(R i=1; i<=n; ++i) a[i].val=a[i].sum=read(); 94 while(m–) { 95 int op=read(),x=read(),y=read(); 96 if(!op) split(x,y),printf("%d\n",a[y].sum); 97 else if(op1) link(x,y); 98 else if(op2) cut(x,y); 99 else makeroot(x),a[x].val=y,pushup(x); 100 } 101 return 0; 102 } download:[全技术栈企业级性能调优万花筒](http://www.qiusuo1024.com/thread-195-1-1.html)

关注本站微信公众号(和以上内容无关)Debiancn ,扫码关注:DebianCN

34 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传