队列的Python实现(列表实现)

Python Data Structure 队列的 Python 实现(列表实现) class Queue(object): """队列的定义 """ # 队列的初始化,生成空列表 def __init__(self): self.item = [] # 队列判空方法,返回 True or False def isEmpty(self): return self.item == [] # 求队列元素个数方法,返回 int 值 def size(self): return len(self.item) # 入队列方法,从列表头部插入 def enqueue(self, value): self.item.insert(0, value) # 出队列方法,从列表尾部弹出,返回弹出值 def dequeue(self): return self.item.pop() def hotpotato(namelist, num): """ 利用队列,完成烫手山芋算法(类似于点兵出列) 先填充满队列,然后做 num 次循环,每次循环将列首出列,再入列,直到最后一个数据直接出列 当队列的元素只剩一个时,就是最后的 winner """ simqueue = Queue() for name in namelist: simqueue.enqueue(name) while simqueue.size() > 1: for i in range(num): simqueue.enqueue(simqueue.dequeue()) simqueue.dequeue() return simqueue.dequeue() # 队列测试 # q = Queue() # print(q.size(), "\n", q.isEmpty(), "\n", q.enqueue(2), "\n",\ # q.enqueue("dog"), "\n", q.dequeue(), "\n", q.size(), "\n", q.dequeue()) # 烫手山芋测试 # print(hotpotato(["Bill","David","Susan","Jane","Kent","Brad"],7))

阿里云挂载 NFS 磁盘

Linux [[Alibaba Cloud]] 阿里云挂载 NFS 磁盘 其实阿里云买了服务过后,作为一个开发者,跟着文档走,大部分问题都可以解决,现成的指令甚至连参数都帮你替换好了,复制粘贴就好,但是因为复杂,会接连出现多个文档,缺少统一性。 安装组件以及调优 $ sudo yum install nfs-utils $ echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf $ echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf $ reboot $ cat /proc/sys/sunrpc/tcp_slot_table_entries 挂载 NFS 磁盘 首先先购买 NAS 文件系统,买完之后,其实就可以理解为拥有了一个根分区的容量很大的磁盘,可以通过 mount 的方式将这个文件系统作为普通目录挂载在 ECS 中。 打开 NAS 文件系统控制台,点击资源进入,在挂载使用里面给出了“已自动替换参数的命令”,简单的操作就是复制到 ECS 主机上就可以了。 $ sudo mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt 参数 描述 file-system-id.region.nas.aliyuncs.com:/ /mnt 表示<挂载点地址>:<NAS文件系统目录> <当前服务器上待挂载的本地路径> vers 文件系统版本,目前只支持nfsv3和nfsv4。 挂载文件系统时,可选择多种挂载选项,详情情参见下表。 如果您必须更改IO大小参数 (rsize和wsize),建议您尽可能使用最大值 (1048576),以避免性能下降。 如果您必须更改超时参数 (timeo),建议您使用150或更大的值。该timeo参数的单位为0.1秒,因此150表示的时间为15秒。 不建议使用soft选项,有数据一致性风险。如果您要使用soft选项,相关风险需由您自行承担。 避免设置不同于默认值的任何其他挂载选项。如果更改读或写缓冲区大小或禁用属性缓存,会导致性能下降。 选项 说明 rsize 定义数据块的大小,用于在您的客户端与云中的文件系统之间读取数据。建议值:1048576。 wsize 定义数据块的大小,用于在您的客户端与云中的文件系统之间写入数据。建议值:1048576。 hard 指定在NAS暂时不可用的情况下,使用文件系统上某个文件的本地应用程序时应停止并等待该文件系统恢复在线状态。建议启用该参数。 timeo 指定时长(单位为0.1秒),即NFS客户端在重试向云中的文件系统发送请求之前等待响应的时间。建议值:600(60秒)。 retrans 指定NFS客户端应重试请求的次数。建议值:2。 noresvport 指定在网络重连时使用新的TCP端口,保障在网络发生故障恢复的时候不会中断连接。建议启用该参数。 $ df -h|grep aliyun 错误处理 这中间可能会出现一些问题导致无法挂载,阿里云已经写好了 python 脚本去检测问题。 ...

零宽字符的 python 实现

Python 零宽字符的 python 实现 原理 零宽字符 零宽字符是一种在浏览器中不打印的字符,大致相当于 display: none ,在许多文本应用中也不显示,比如邮箱、QQ、微信、文本编辑器等 这里有三种零宽字符 – 零宽空格、零宽连字、零宽不连字 零宽字符在浏览器中对应的转义字符 零宽空格 --- &#8203; 零宽不连字 --- &#8204; 零宽连字 --- &#8205; 摩斯电码 摩斯电码采用长短两种符号进行文本加密,通过字典进行加密和解码,摩斯电码字典如下图所示: 字符 电码符号 字符 电码符号 字符 电码符号 字符 电码符号 A .- B -… C -.-. D -.. E . F ..-. G –. H …. I .. J .— K -.- L .-.. M – N -. O — P .–. Q –.- R .-. S … T - U ..- V …- W .– X -..- Y -.– Z –.. 由于摩斯码只有 - 和 . 两个符号,而两个字母之间没有区分,我们假设用 / 区分。 ...