02 2019 档案
摘要:HTTP缓存作为web性能优化的重要手段,对于从事web开发的朋友有重要的意义。 在HTTP中具有缓存功能的是浏览器缓存或者说客户端缓存。 1 缓存的优点: 减少了冗余的数据传递,节省宽带流量 减少了服务器的负担,大大提高了网站性能 加快了客户端加载网页的速度 这也正是HTTP缓存属于客户端缓存的原
阅读全文
摘要:1 异步程序依然会假死 freezing 上面的例子中,hello1是一个耗时3s的异步任务,main也是一个异步方法,但是main需要调用hello1的返回值,所以必须登台hello1执行完成才能继续执行main,这说明异步也是会有阻塞的。 而之前定义的异步函数不用等待是因为事件循环将所有的异步操
阅读全文
摘要:asyncio的核心概念与基本架构 本文针对的是python3.4以后的版本的,因为从3.4开始才引入asyncio,后面的3.5 3.6 3.7版本是向前兼容的,只不过语法上面有稍微的改变。比如在3.4版本中使用@asyncio.coroutine装饰器和yield from语句,但是在3.5以后
阅读全文
摘要:1 进程和线程 进程 Process:一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式)。 线程 Thread: 线
阅读全文
摘要:1 yiled from 的定义 从字面看是yield的升级改进版本,如果将 yield 理解成返回,那么 yield from 就是从哪里返回。 yield from 返回另一个生成器。而yield 只返回一个元素。有下面的等价关系: yield from iterable == for item
阅读全文
摘要:1 什么是协程 coroutine 协程: 又称微线程,纤程。在一个线程内执行。 子程序: 函数,调用是通过栈来实现的。一个调用一个返回。 多线程: 避免程序顺序执行的方式之一是多线程。GIL锁只能一个点一个线程,对于io操作会有性能提升,但是依然 有线程的管理和切换,同步的开销等等 协程与一般函数
阅读全文
摘要:gc主要使用引用计数 reference counting 来跟踪和回收垃圾,在引用计数的基础上,通过标记-删除解决容器对象可能产生的循环引用问题,通过分代回收以空间换时间的方法提高垃圾回收效率。 引用计数,当一个对象被引用时,它的引用计数+1 ,当引用的对象被删除时,引用计数-1 。当引用计数为0
阅读全文
摘要:Python 3.x介绍的一些Python 2不兼容的关键字和特性可以通过在Python 2的内部__future__模块导入。 基本点,range,新式类,mro,asyncio。 0,字符串类型统一,只有str和bytes(字节序列)。Python2 的默认编码是 asscii(原因在于 Pyt
阅读全文
摘要:global interpreter lock,即python为了保护线程安全而采取的独立线程运行的限制。就是一个内核在一个时间点只能运行一个线程,对于io密集型任务,多线程能起到作用,对于cpu密集型,对线程就无能无力,反而还会因为争夺资源而变慢。 要理解GIL,就要从python的底层说起。 c
阅读全文
摘要:列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。 list对象是用c结构来实现,由一个保存元素的指针数组和预先分配的内存总容量构成。分离式结构,两者之间用一个元素建立一个链接,连在一起。能够根据元素的数量自动的扩充或者缩小list的内存大小。 扩充采取两种策略,每次扩充增加固定
阅读全文
摘要:单例模式是一种常用的软件设计模式,核心结构是只包含一个被称为单例类的特殊类,通过单例模式可以保证系统中只有一个实例而且该实例易于外界访问,从而控制实例数量来保证系统资源的节省。可以用于打印任务,以及类中实例只有一个的情况下。单例模式设计的类只能实例,单例的四种方法要了解,类的call方法要能默写。
阅读全文
摘要:创建方法上,新式类继承 object,或者说在创建的时候内置object对象。 经典类是直接声明的。 一个关键的区别就是新式类能够从python的内置类型中继承,而经典类不行。 新式类内置的object 对象是所有内置,通过其来实现所有对象的默认行为: new,init方法,静态方法new创建类的实
阅读全文

浙公网安备 33010602011771号