hongweipeng 发布的文章

深度剖析凭什么python中整型不会溢出


前言

本次分析基于 CPython 解释器,python3.x版本

在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数。在python3后,统一使用了长整型。这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型...因此python就降低其他行业的学习门槛了。

那么,不溢出的整型实现上是否可行呢?


用libvirt为虚拟机创建快照


快照的类型

kvm环境下 qcow2 的镜像支持快照,有几种类型的快照:

  • 磁盘快照:磁盘的内容(vm关联的所有磁盘)都会在给定的时间点保存,并且可以恢复到该状态。如果是正在运行的vm,磁盘快照很可能只是崩溃的(它表示突然停电时的磁盘状态)。磁盘快照可以可以放在内部也可以放在外部。
    • 按快照信息保存可以分为:内置快照和外置快照;
    • 按照vm状态可以分为:关机状态快照和运行状态快照;
    • 按磁盘数量可以分为:单盘和多盘;多盘情况具有原子性,即所有盘的快照点相同,并且创建快照时,要么都快照成功,要么都快照失败。
  • 内存状态:仅保存内存的状态以及vm正在使用的其他资源。如果在获取和恢复vm状态快照之间磁盘未被修改,则guest虚拟机将恢复一致状态;但如果在此期间磁盘被外部修改,则很可能导致数据损坏;
  • 系统检查点:所有磁盘的磁盘快照和vm内存状态的组合,可用于恢复客户机从停止位置恢复类似于休眠的状态。


深度剖析isinstance的检查机制


起步

通过内建方法 isinstance(object, classinfo) 可以判断一个对象是否是某个类的实例。但你是否想过关于鸭子协议的对象是如何进行判断的呢? 比如 list 类的父类是继 object 类的,但通过 isinstance([], typing.Iterable) 返回的却是真,难道 list 是可迭代的子类?学过Python的面向对象应该知道,list的基类是object的。


《Linux内核完全剖析》读书笔记(一):前言


起步

在读过Linux之父林纳斯自传的 《只是为了好玩》 ,他花半年时间完成 linux0.01 版本,那时候代码量只有 1 万行,而到 1.0 版本时候也才有 17 万行。这就让我萌生出阅读 linux 源码的兴趣了。

网上找了三本关于 linux 的设计和分析的书。其中我决定先阅读 《Linux内核完全注释》。这本书基于 0.12 的内核版本,代码量不算多,而且书中几乎所有代码都进行注解,是一本了解 linux 操作系统内核的入门读物。