COW

单调队列总结

ぐ巨炮叔叔 提交于 2020-08-13 03:26:38
定义 单调队列,即单调递减或单调递增的队列。 入门题(洛谷P1886滑动窗口) 传送门 题目描述 分析 如果用暴力求解的话,我们要将这一个长度为 \(k\) 的区间扫一遍 但是实际上,有很多值是显然不会对答案产生贡献的 比如我们要维护该区间的最大值,当前队尾的的元素是 \(4\) ,下一个要加进去的元素是 \(5\) 此时队尾一定不会对答案产生贡献,因为它的值比下一个元素小,而且当前值继续对答案产生贡献的时间也更短 这样,我们就相当于维护了一个单调递减的队列 维护区间最小值同理 代码 #include<bits/stdc++.h> using namespace std; const int maxn=1e6+5; typedef long long ll; ll a[maxn]; int q[maxn]; int main(){ int n,k; scanf("%d%d",&n,&k); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } int head=1,tail=0; for(int i=1;i<=n;i++){ while(head<=tail && i-q[head]+1>k) head++; while(head<=tail && a[i]<a[q[tail]]) tail--; q[++tail]=i; if(i>=k

【美团容器安全】云原生之容器安全实践

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-13 03:20:49
概述 云原生(Cloud Native)是一套技术体系和方法论,它由2个词组成,云(Cloud)和原生(Native)。云(Cloud)表示应用程序位于云中,而不是传统的数据中心;原生(Native)表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳状态运行,充分利用和发挥云平台的弹性和分布式优势。 云原生的代表技术包括容器、服务网格(Service Mesh)、微服务(Microservice)、不可变基础设施和声明式API。更多对于云原生的介绍请参考 CNCF/Foundation 。 笔者将“云原生安全”抽象成如上图所示的技术沙盘。自底向上看,底层从硬件安全(可信环境)到宿主机安全 。将容器编排技术(Kubernetes等)看作云上的“操作系统”,它负责自动化部署、扩缩容、管理应用等。在它之上由微服务、Service Mesh、容器技术(Docker等)、容器镜像(仓库)组成。它们之间相辅相成,以这些技术为基础构建云原生安全。 我们再对容器安全做一层抽象,又可以看作构建时安全(Build)、部署时安全(Deployment)、运行时安全(Runtime)。 在美团内部,镜像安全由容器镜像分析平台保障。它以规则引擎的形式运营监管容器镜像,默认规则支持对镜像中Dockerfile、可疑文件、敏感权限、敏感端口、基础软件漏洞

【美团容器安全】云原生之容器安全实践

Deadly 提交于 2020-08-12 15:45:27
概述 云原生(Cloud Native)是一套技术体系和方法论,它由2个词组成,云(Cloud)和原生(Native)。云(Cloud)表示应用程序位于云中,而不是传统的数据中心;原生(Native)表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳状态运行,充分利用和发挥云平台的弹性和分布式优势。 云原生的代表技术包括容器、服务网格(Service Mesh)、微服务(Microservice)、不可变基础设施和声明式API。更多对于云原生的介绍请参考 CNCF/Foundation 。 笔者将“云原生安全”抽象成如上图所示的技术沙盘。自底向上看,底层从硬件安全(可信环境)到宿主机安全 。将容器编排技术(Kubernetes等)看作云上的“操作系统”,它负责自动化部署、扩缩容、管理应用等。在它之上由微服务、Service Mesh、容器技术(Docker等)、容器镜像(仓库)组成。它们之间相辅相成,以这些技术为基础构建云原生安全。 我们再对容器安全做一层抽象,又可以看作构建时安全(Build)、部署时安全(Deployment)、运行时安全(Runtime)。 在美团内部,镜像安全由容器镜像分析平台保障。它以规则引擎的形式运营监管容器镜像,默认规则支持对镜像中Dockerfile、可疑文件、敏感权限、敏感端口、基础软件漏洞

【美团容器安全】云原生之容器安全实践

冷暖自知 提交于 2020-08-12 11:40:15
概述 云原生(Cloud Native)是一套技术体系和方法论,它由2个词组成,云(Cloud)和原生(Native)。云(Cloud)表示应用程序位于云中,而不是传统的数据中心;原生(Native)表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳状态运行,充分利用和发挥云平台的弹性和分布式优势。 云原生的代表技术包括容器、服务网格(Service Mesh)、微服务(Microservice)、不可变基础设施和声明式API。更多对于云原生的介绍请参考 CNCF/Foundation 。 笔者将“云原生安全”抽象成如上图所示的技术沙盘。自底向上看,底层从硬件安全(可信环境)到宿主机安全 。将容器编排技术(Kubernetes等)看作云上的“操作系统”,它负责自动化部署、扩缩容、管理应用等。在它之上由微服务、Service Mesh、容器技术(Docker等)、容器镜像(仓库)组成。它们之间相辅相成,以这些技术为基础构建云原生安全。 我们再对容器安全做一层抽象,又可以看作构建时安全(Build)、部署时安全(Deployment)、运行时安全(Runtime)。 在美团内部,镜像安全由容器镜像分析平台保障。它以规则引擎的形式运营监管容器镜像,默认规则支持对镜像中Dockerfile、可疑文件、敏感权限、敏感端口、基础软件漏洞

KVM

大兔子大兔子 提交于 2020-08-12 10:56:56
以下内容主要介绍 KVM 中最常见的 RAW 和 QCOW2 镜像格式以及一些准备知识,分别说明并加以对比 准备知识 ls 和 du 的区别 ls - list directory contents du - estimate file space usage 通过man手册可以看出 du 命令查看的是磁盘空间占有数,而 ls 展示的是文件的一些相关属性。而在 Linux 中,一个文件占用的磁盘大小和一个文件的大小在众多情况下并不相等,下面通过示例来更清晰的说明。 # 创建一个13k的文件 [root@suhw ~]# dd if=/dev/zero of=output count=1 bs=13k 1+0 records in 1+0 records out 13312 bytes (13 kB, 13 KiB) copied, 0.00014904 s, 89.3 MB/s # 通过 ls 查看文件大小 [root@suhw ~]# ls -lh output -rw-r--r-- 1 root root 13K Jun 28 02:34 output # 查看文件所占用磁盘大小 [root@suhw ~]# du -h output 16K output # 查看详细文件信息 [root@suhw ~]# stat -f output File: "output" ID:

状压DP总结

淺唱寂寞╮ 提交于 2020-08-11 16:52:21
总结 状压DP就是将一个状态压缩为一个整数(通常为二进制数),就可以在更为方便地进行状态转移的同时,达到节约空间的目的。 题型一、冲突问题 1.1 特殊方格棋盘 题目描述 分析 我们设f[i][j]为当前的状态为 \(i\) ,放置到第 \(j\) 行时的方案数 但是,因为我们要在 \(n \times n\) 的棋盘上放置 \(n\) 个车,所以,我们必定要在每一行都放置一个车 因此,我们可以把第二维省略掉 题目还要求有一些格点不能放车,所以我们要提前把每一行可以放置的位置枚举一下 for(ll i=1;i<=n;i++){ vis[i]=mmax; } for(ll i=1;i<=m;i++){ ll aa,bb; scanf("%lld%lld",&aa,&bb); vis[aa]-=(1<<(bb-1)); } 下面就是状态转移方程,如果上一行的状态和当前行的状态不冲突 那么当前行的方案数就要加上上一行的方案数 注意要把 \(f[0][0]\) 初始化为 \(0\) for(ll i=0;i<=mmax;i++){ ll now=solve(i);//枚举当前是第几行 ll can=i&(vis[now]);//枚举当前合法的状态 for(ll j=1;j<=n;j++){ if((can&(1<<(j-1)))==0) continue;//如果当前状态不包括j

Linux 操作系统原理 — 内存 — KSM 内存页共享的性能问题

南笙酒味 提交于 2020-08-11 07:41:12
目录 文章目录 目录 KSM 内存页共享的性能问题 KSM 内存页共享的性能问题 KSM(Kernel Shared Memory)是 Linux Kernel 的一种内存共享机制,在 2.6.36 版本引入。简而言之,KSM 用于合并具有相同内容的物理主存页面以减少页面冗余。在 Kernel 中有一个 KSM 守护进程 ksmd,它会定期扫描用户向它注册的内存区域,寻找到相同的页面就会将其合并,并用一个添加了写保护的页面来代替。当有进程尝试写入该页面时,Kernel 会自动为其分配一个新的页面,然后将新数据写入到这个新页面,这就是典型的 COW 机制。类似的,存储技术中有一个称为去耦合(de-duplication)的技术,通过删除冗余数据(基于数据块,或者基于更大的数据片段,比如文件)来减少已存储的数据。公共数据片段被合并(以一种 COW 方式),释放空间供其他用途。使用这种方法,存储成本更低,最终需要的存储器也更少。 KSM 最初被应用到 KVM 上,因为事实证明,如果虚拟化了许多相同的操作系统和应用程序组,那么宿主机上许多内存页面都是相同的。假如操作系统和应用程序代码以及常量数据在 VMs 之间相同,那么这个特点就很有用。当页面惟一时,它们可以被合并,从而释放内存,供其他应用程序使用。将多个 VMs 具有的相同内存页合并(共享),可以腾出更多的可用物理内存。 但是事实上

最短路 || 最长路 || 次短路

三世轮回 提交于 2020-08-09 06:59:18
如题,这篇博客就讲一讲最短路以及其它 乱七八糟 的处理路径的问题 至于邻接表,邻接矩阵,有向边和无向边等基础概念之类的这里就不过多阐述了,不会的话建议先在其他dalao的博客或者书上面学习(请多谅解) 最短路 首先讲最短路,因为最短路比较基础,而且在图论中也应用较多,在学习了最短路只会就可以继续往后面学习了,如果您已经学习过了,可以直接跳到后面的最长路和次短路中 最短路,在一个图中,求一个地方到另一个地方的最短路径。联系到我们之前学过的 广度优先搜索 中,也可以处理类似的问题,所以我们先想一想广度优先搜索的一些思想—— 队列 。所以在接下来的最短路算法中,或多或少的会涉及到队列 单源最短路径 单源最短路径,就是指在一个图中,给你一个起点(起点固定),然后终点不是固定的,求起点到任意终点的最短路径。这里会涉及到3种算法,以下用$dis[]$表示起点到任意终点的最短距离 1. Bellman-Ford算法 时间复杂度:O(nm) 给定一个图,对于图中的某一条边(x,y,z),x和y表示两个端点,z表示连接两条边的边权,如果有所有边都满足dis[y]≤dis[x]+z,则dis[]数组的值就是要求的最短路径 这个算法的流程就是基于以上的式子进行操作的: 1.扫描所有的边,如果有 d[y]>d[x]+z ,则 d[y]=d[x]+z (这也被叫做松弛操作) 2.重复以上的操作

[kuangbin带你飞]专题1-23 专题一 简单搜索 POJ 3278 Catch That Cow 一维的宽度优先遍历BFS

删除回忆录丶 提交于 2020-08-08 15:50:07
[kuangbin带你飞]专题1-23 专题一 简单搜索 POJ 3278 Catch That Cow 一维的宽度优先遍历BFS 总目录详见 https://blog.csdn.net/mrcrack/article/details/107590709 在线测评地址 https://vjudge.net/problem/POJ-3278 Status Accepted Memory 1268kB Length 557 Lang C++ 题目大意:在一维坐标上,农夫抓牛,给出农夫的起始位置,牛的位置。农夫有两种移动方式,如农夫当前坐标是x,农夫第一种移动x-1,x+1,第二种移动,移动到2*x位置。每次移动耗费一分钟,输出农夫抓到牛的最短时间。 基本思路:一维的宽度优先遍历BFS,注意,数据范围的限制。 AC代码如下: #include <stdio.h> #define maxn 100010 int h,t,vis[maxn]; struct node{ int x,step; }q[maxn]; int main(){ int n,k,x,nx; scanf("%d%d",&n,&k); h=t=1,q[t].x=n,q[t].step=0,t++,vis[n]=1; while(h<t){ x=q[h].x; if(x==k){ printf("%d\n",q[h]

Floyd算法详(cha)解

若如初见. 提交于 2020-08-06 20:33:36
Floyd 算法应该是最基本,最简单,也是最暴力的最短路算法解法,但是对于一些点数很小的题目,Floyd的表现还是很优秀的,我们先来看一道例题 题目描述 给你一个有 \(n\) ( \(n\leq 100\) ) 个点以及 \(m\) ( \(m\leq 800\) ) 条双向边的图,求出所有点之间的最短路。 输入格式 :第一行两个正整数 \(n\) , \(m\) ,接下来 \(m\) 行,每行三个正整数 \(u\) , \(v\) , \(w\) ,表示 \(u\) 和 \(v\) 之间有一条代价(长度)为 \(w\) 的边。 输出格式 :输出共 \(n\) 行,每行 \(n\) 个正整数,第 \(i\) 行第 \(j\) 个数,表示点 \(i\) 到点 \(j\) 之间的最短路。 样例输入 : 5 6 1 3 7 2 4 5 2 3 1 4 3 2 1 5 8 5 2 4 样例输出 : 0 8 7 9 8 8 0 1 3 4 7 1 0 2 5 9 3 1 0 7 8 4 5 7 0 对于任何一个操作,我们都可以分成三个部分:1.选择操作容器,2.初始化,3.更新,操作。 比如这一题,让我们求出 所有点 之间的最短路,并以一个 矩阵型 输出,所以我们可以考虑就如题目中的那样,用这个临接矩阵来储存,我们把这个矩阵称为 \(\operatorname{dis}\) ,用 \(