Ubuntu 18.04 LTS安装KVM虚拟机

前一阵使用在最新的 Ubuntu 18.04 上安装了 KVM 来虚拟一个小的 VM 集群,将主要过程和其中遇到的一些问题记录下来。 准备工作 首先需要检查一下 CPU 是否支持虚拟化,执行一下命令来检查/proc/cpuinfo 文件中是否又虚拟化相关的字眼,如果有的话表明 CPU 支持虚拟化技术。 egrep -c '(svm|vmx)' /proc/cpuinfo 上面命令执行结果如果返回 0,表示 CPU 不支持虚拟化技术。当然主板 BIOS 中的虚拟化技术也可能不是默认开启的,如果没有开启需要手动开启一下。 安装 KVM 执行以下命令安装 KVM sudo apt update sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager 将 libvirtd 添加自启动 sudo systemctl start libvirtd.service sudo systemctl enable libvirtd.service 网络模式 KVM 安装完成后,首先需要进行网络设定,KVM 支持四种网络模式: 桥接模式 NAT 模式 用户网络模式 直接分配设备模式 主要讲一下前两种 桥接(Bridge)模式 在桥接模式下,宿主机和虚拟机共享同一个物理网络设备,虚拟机中的网卡和物理机中的网卡是平行关系,所以虚拟机可以直接接入外部网络,虚拟机和宿主机有平级的 IP。 原本宿主机是通过网卡 eth0 连接外部网络的,网桥模式会新创建一个网桥 br0,接管 eth0 来连接外部网络,然后将宿主机和虚拟机的网卡 eth0 都绑定到网桥上。 ...

六月 28, 2018 · 2 分钟 · Zhiya

大毒瘤!卸载WeGame解决XPS 15蓝屏问题

潜伏期 去年 4 月底买了一台美版 XPS 15 9560,用了几个月之后就会偶尔出现蓝屏问题,由于之前就在论坛上看到很多吐槽 XPS 品控的帖子,以为自己也中了枪,好在蓝屏也不频繁,不影响使用也就没管。 上升期 进入今年 5 月,升级了 Win10 1803 后(基本上软件有更新我都会第一时间升级,体验最新的改进),蓝屏的次数开始多了起来,开始变得影响使用,于是开始着手查找问题。 由于心急,并没有看转储文件,而是直接 Google 了 XPS 15 的蓝屏问题,希望能尽快找到方案。很快发现具有类似问题的人不在少数,也有很大一部分人以此说 XPS 15 品控不好,看了很多内容后,把怀疑的方向放在了驱动层面(Dell 有一个 Dell Update 软件,一有更新提示我就会更新驱动),于是从更新频率最高的显卡驱动入手,降级显卡驱动到上一个版本,然而并没有什么用。于是又降级了 Wifi 驱动,因为 Wifi 驱动也是最近更新的,并且 XPS 15 的 Killer 显卡兼容性似乎没有那么好。 降级完驱动之后,电脑进入了短暂的回光返照阶段,用了几个小时都没有蓝屏,然而紧接着更加不幸的问题就要发生了。 爆发期 用 QQ 接收一个大文件,大概 1G,进行到一半的时候忽然蓝屏,重启后重新接收,准备传完之后再解决蓝屏问题,然而不幸的是传了一半又蓝屏了… 这时我把怀疑的方向转向了硬盘,于是降级了 Intel RST 驱动,心想降级要是没用的话,有可能是 SSD 跪了… 降级后怀着忐忑的心情再次重试,竟然…又蓝屏了… 这次把怀疑的方向转到了 QQ 或者 Wifi 上,毕竟是一用 QQ 接收大文件就出问题,那么不是 QQ 就是 Wifi 了,于是卸载 QQ,用迅雷下载一个大文件,果不其然,又跪了… 然而已经降级了 Wifi 驱动,之前也一直没有什么问题,难道真的是硬件出了问题?这个时候,我内心已经有点放弃 PC,转而在京东上看 MBP 的价格了… ...

六月 20, 2018 · 1 分钟 · Zhiya

你所不知道的Python | 字符串格式化的演进之路

字符串格式化对于每个语言来说都是一个非常基础和常用的功能,学习 Python 的同学大概都知道可以用%语法来格式化字符串。然而为了让我们更方便的使用这个常用功能,语言本身也在对字符串格式化方法进行迭代。 Python 2.6 以前:%操作符 在 Python 2.6 出现之前,字符串迭代只有一种方法,就是%(也是取模)操作符,%操作符支持 unicode 和 str 类型的 Python 字符串,效果和 C 语言中的 sprintf()方法相似,下面是一个使用%格式化字符串的例子: print("I'm %s. I'm %d year old" % ('Tom', 27)) %符号前面使用一个字符串作为模板,模板中有标记格式的占位符号,%后面是一个 tuple 或者 dict,用来传递需要格式化的值。占位符控制着显示的格式,下面列表展示了占位符的种类: 占位符 内容 %d 十进制整数 %i 十进制整数 %o 八进制整数 %u 无符号整数 %x 无符号十六进制(小写) %X 无符号十六进制(大写) %e 浮点型(科学记数法,小写) %E 浮点型(科学记数法,大写) %f 浮点数 %F 浮点数 %g 浮点型,如果小数位数超过 4 位,使用科学记数法表示(小写) %G 浮点型,如果小数位数超过 4 位,使用科学记数法表示(大写) %c 单个字符 %r 字符串(调用 repr()方法生成) %s 字符串(调用 str()方法生成) 除了对数据类型的指定,%操作符还支持更复杂的格式控制: ...

六月 11, 2018 · 2 分钟 · Zhiya

初学者必备 | Python Cheat Sheet 中文版

笔者整理了 Python3 中内置方法的速查表,包含: 内置方法 列表处理方法 字典处理方法 元组处理方法 集合处理方法 序列类型的切片方法 共计 100 多个方法,点击图片——查看原图——下载。

五月 31, 2018 · 1 分钟 · Zhiya

简析Python中的四种队列

队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 在 Python 文档中搜索队列(queue)会发现,Python 标准库中包含了四种队列,分别是 queue.Queue / asyncio.Queue / multiprocessing.Queue / collections.deque。 collections.deque deque 是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque 既可以用来实现栈(stack)也可以用来实现队列(queue)。 deque 支持丰富的操作方法,主要方法如图: 相比于 list 实现的队列,deque 实现拥有更低的时间和空间复杂度。list 实现在出队(pop)和插入(insert)时的空间复杂度大约为 O(n),deque 在出队(pop)和入队(append)时的时间复杂度是 O(1)。 deque 也支持 in 操作符,可以使用如下写法: q = collections.deque([1, 2, 3, 4]) print(5 in q) # False print(1 in q) # True deque 还封装了顺逆时针的旋转的方法:rotate。 # 顺时针 q = collections.deque([1, 2, 3, 4]) q.rotate(1) print(q) # [4, 1, 2, 3] q.rotate(1) print(q) # [3, 4, 1, 2] # 逆时针 q = collections.deque([1, 2, 3, 4]) q.rotate(-1) print(q) # [2, 3, 4, 1] q.rotate(-1) print(q) # [3, 4, 1, 2] 线程安全方面,通过查看 collections.deque 中的 append()、pop()等方法的源码可以知道,他们都是原子操作,所以是 GIL 保护下的线程安全方法。 ...

五月 22, 2018 · 2 分钟 · Zhiya