test

快速排序算法python实现

£可爱£侵袭症+ 提交于 2020-02-02 02:04:37
快速排序 快速排序是一种递归调用的方法,思想是根据一个基准值,将数组比基准值小的放在左边,比基准值大的放在右边。运用了分而治之的思想,最后将三部份合并即可得到最终的有序数组 代码实现: def quickSort ( arr ) : if len ( arr ) < 2 : return arr leftarr = [ ] rightarr = [ ] item = arr [ 0 ] for i in range ( 1 , len ( arr ) ) : if arr [ i ] <= item : leftarr . append ( arr [ i ] ) else : rightarr . append ( arr [ i ] ) return quickSort ( leftarr ) + [ item ] + quickSort ( rightarr ) 代码验证: list_test = [ 3 , 5 , 10 , 2 , 1 , 7 , 6 , 8 ] print ( quickSort ( list_test ) ) list_test = [ 3 , 0 , 10 , - 1 , 1 , 7 , 6 , 100 , 20 , 31 ] print ( quickSort ( list_test ) ) 来源: CSDN 作者: Robot647 链接:

Linux系统实时数据同步inotify+rsync

試著忘記壹切 提交于 2020-02-02 01:35:05
一、inotify简介   inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除、读、写和卸载等操作。它监控到这些事件的发生后会默认往标准输出打印事件信息。要使用inotify,Linux内核版本必须是大于2.6.13,在这之前的内核都没有这个功能。我们可以利用inotify去监控我们要监控的资源,当资源发生变化时,我们扑捉它的事件,从而触发同步数据等操作。 二、inotify软件介绍   inotify是内核的一个功能,众所周知内核的功能我们必须要配合工具才能使用,通常情况下用户要使用内核的功能,都需要用户空间的软件去调用才可以达到使用内核的功能的目的,用户是无法直接操内核的。实现inotify软件有inotify-tools、sersync、lrsyncd。我们这里以inotify-tools这个软件包为例进行实验;inotify-tools包主要有两个文件,一个是inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,常用于实时同步的目录监控;一个是inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。通常情况下我们使用iontifywait就可以了。接下来我们来安装inotify-tools 三、inotify软件安装和使用  

bash-shell高级编程--条件判断

二次信任 提交于 2020-02-02 00:49:12
条件判断 每一个完整并且合理的程序语言都具有条件判断的功能,并且可以根据条件判断的结果做下一步处理, bash 中有 test 命令,有各种中括号和圆括号操作,和 if/then 结构 条件测试结构 使用 if/then 结构判断命令列表的退出码状态是否为0,如果成功的话,那么就执行接下来一个或多个命令。 有一个专有命令[(左括号,特殊字符),这个命令与test命令等价,并且处于效率上的考虑,这是一个内建命令,这个命令把它的参数作为表达式或者文件测试,并且根据比较的结果返回一个退出状态码(0表示真,1表示假) 在版本2.02的bash中,引入了 [[....]] 扩展测试命令,因为这种表现形式可能对某些语言的程序员来说更熟悉一些,注意 [[]] 是一个关键字,并不是一个命令,并且bash会将 [[ $a -lt $b ]] 看成单独的元素,并且返回一个退出状态码。 if 命令不仅可以测试中括号中的条件,可以测试任何命令 if cmp a b & > /dev/null # 禁止输出. then echo "Files a and b are identical." else echo "Files a and b differ." fi # 非常有用的"if-grep"结构: # ------------------------ if grep -q Bash file then

寒假Day17-UVALive3231Fair Share(最大流+二分)

痴心易碎 提交于 2020-02-01 23:52:25
You are given N processors and M jobs to be processed. Two processors are specified to each job. To process the job, the job should be allocated to and executed on one of the two processors for one unit of time. If K jobs are allocated to a processor, then it takes K units of time for the processor to complete the jobs. To complete all the jobs as early as possible, you should allocate the M jobs to the N processors as fair as possible. Precisely speaking, you should minimize the maximum number of jobs allocated to each processor over all processors. The quantity, minimum number of jobs, is

DAY 2 TEST

送分小仙女□ 提交于 2020-02-01 23:00:15
T1 【样例输入1】 3 1 1 100 50 50 50 50 50 50 【样例输出1】 133 32 样例解释:只移动100,将其移动到A中剩余两堆各16次,一共32次,此时100还剩下4,此时由于每次只能恰好移动2,最多在这一堆只能再往外运两次,无论运到哪里,都不会增加I, 所以移动32次. 【数据规模】 对于60%的数据,所有的 \(A_i,B_i,C_i\) 均为偶数. 对于另20%的数据, \(1 ≤ 𝐴𝑖 , 𝐵𝑖 , 𝐶𝑖 ≤ 2\) 对于100%的数据, \(𝑁 ≤ 100000, 1 ≤ 𝐴𝑖 , 𝐵𝑖 , 𝐶𝑖 ≤ 10^9\) 20pts:枚举每一列运输完之后的最小值是奇数还是偶数。因为每个数只能是1或者2,所以步数可以直接求出来,然后比较优劣 60pts:所有的 \(A_i,B_i,C_i\) 都是偶数,考虑都除以二变成奇数,然后问题转化成每次移动1。 问题一很简单,就是 \(sum/n\) ,因为不管怎样,把所有的数都变成平均值一定是最优的方案 顺着第一问,首先一个直观的想法是分别求出每一组的平均值,然后按照平均值移动。但是这样是不行的。比如: 10 10 1 1 1 10 这组数据如果按照平均值移动,要把第一组都变成7,移动6次;把第二组变成4,移动6次,一共12次 但是如果我们直接把第二组的10移动9到第一组的1,就只需要9次

poj 3069

只谈情不闲聊 提交于 2020-02-01 22:14:13
Saruman's Army Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20626 Accepted: 9988 Description Saruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as palantirs, among the troops. Each palantir has a maximum effective range of R units, and must be carried by some troop in the army (i.e., palantirs are not allowed to “free float” in mid-air). Help Saruman take control of Middle Earth by determining the minimum number of palantirs needed for Saruman to ensure that each of his

当删库时如何避免跑路

牧云@^-^@ 提交于 2020-02-01 22:00:22
延时节点解决方案 删库跑路也是个老梗了,可见在运维数据库的过程中误删除数据,或者开发的代码有bug,造成数据的误删除屡见不鲜。不过现在也有许多用于恢复或预防误删除的方案,例如SQL管理系统,将要执行的SQL先交由管理员审核,然后由管理员备份一个镜像数据库,在镜像上执行该SQL,并在执行后还原镜像。这样经过层层把关就可以大大减小出现误操作的几率。 另外,利用binlog日志也可以恢复误操作的数据,所以线上运行的数据库都会开启binlog日志功能。还有就是本小节要介绍的延时节点:在Replication集群中,可以设置一个延时节点,该节点的数据同步时间要慢于集群中的其他节点,当其他节点出现误操作后,若延时节点的数据还没有被影响就可以从延时节点进行恢复。 但如果现有的数据库组建的都是PXC集群,没有Replication集群可以采用该方案吗?也是可以的,PXC集群与Replication集群并非是互斥的,我们可以将PXC集群中的某个节点设置为Master,然后增加一个延时节点设置为Slave,让这两个节点构成Replication集群进行数据同步即可。如下所示: 本小节就简单演示一下如何搭建这种异构集群下的延时节点,我这里已经事先准备好了一个PXC集群和一个用作延时节点的数据库: 这里使用PXC集群中的 PXC-Node3 作为Master,让其与 DelayNode 组成主从,而

k8s免安装-使用kubectl部署Pod, Deployment, LoadBalancer

╄→尐↘猪︶ㄣ 提交于 2020-02-01 19:42:50
此文首发于我的Jekyll博客: zhang0peter的个人博客 如果你想要从零开始搭建自己的k8s集群参考我的这篇博客,预计花费时间为1天: 从零开始在ubuntu上安装和使用k8s集群及报错解决 自己搭建k8s集群的难点之一是需要3台ubuntu虚拟机,要求电脑至少10G内存:操作系统4G内存,3台虚拟机需要6G内存。 另一个难度是对初学者来说,搭建太复杂了。 如果你不想手动搭建集群,只想体验和使用kubernetes集群,推荐使用 digitalocean 的 kubernetes 集群服务,自动搭建,无需安装。 digitalocean 的 kubernetes 集群提供3台ubuntu虚拟机(node),每台1核CPU,2G内存,共30$一个月,体验一天只要1$。 通过我的链接在 digitalocean 注册的新用户,可以获得100美元的2个月使用权,相当于前2个月免费用: DigitalOcean – sign up 创建kubernetes集群后,DO会提醒你使用 kubectl 或者 doctl 操作集群,我推荐 kubectl 这个通用工具。 在本地linux上安装 kubectl ,通过 kubectl 操作 k8s 集群。 echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes

linux中>和>>的区别

无人久伴 提交于 2020-02-01 18:51:16
本文编写的目的是为了,方便自己日后查看。 '>' 输出到文件中。文件不存在会创建。 文件已存在,内容会被覆盖。 文件时间会更新。 第一次输入'> test', 第二次输入'> test again', 发现内容 [root@localhost ~]# echo '> test' > echo.log [root@localhost ~]# ll 总用量 8 -rw-------. 1 root root 1555 8月 20 15:30 anaconda-ks.cfg -rw-r--r-- 1 root root 7 2月 1 18:03 echo.log [root@localhost ~]# cat echo.log > test [root@localhost ~]# echo '> test again' > echo.log [root@localhost ~]# cat echo.log > test again [root@localhost ~]# ll 总用量 8 -rw-------. 1 root root 1555 8月 20 15:30 anaconda-ks.cfg -rw-r--r-- 1 root root 13 2月 1 18:04 echo.log 最后输出只有:'> test again' 删除echo.log, 测试'>>' '>>