程序中的形式应该仅仅反映它所要解决的问题,代码中的其他任何外加形式都是一个信号,表明对问题的抽象还不够深。迭代是数据处理的基石。扫描内存中存不下的数据集时,需要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式。
流畅的 Python(8):正确重载运算符
运算符重载的作用是让用户定义的对象使用中缀运算符或一元运算符。在 Python 中,其实函数调用、属性访问和元素访问其实都是运算符,但是这里只讨论一元运算符和中缀运算符。
流畅的 Python(7):接口与继承
这篇文章将讨论接口:从鸭子类型的代表特征-动态协议,到使用接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class,ABC)。抽象基类与描述符和元类一样,是用于构建框架的工具,一般都不需要自己编写抽象基类,因为很容易过度设计。
流畅的 Python(6):序列的修改、散列和切片
这篇文章将自定义一个序列类型 Vector,进一步探讨 Python 序列的修改、散列和切片等操作所涉及的背后原理。
流畅的 Python(5):符合 Python 风格的对象
这篇文章主要介绍 Python 的面对对象惯用法,首先介绍对象与对象名称的区别,解释对象标识、值和别名等概念,以及垃圾回收、del 命令、如何通过弱引用记住对象,而无需对象本身存在。最后会介绍符合 Python 风格的对象。
流畅的 Python(4):函数装饰器和闭包
函数装饰器用于在源码中标记函数,以某种方式增强函数的行为。这是一项强大的功能,若想彻底掌握它,首先必须理解闭包。除了在装饰器中有用处之外,闭包还是回调式异步编程和函数式编程风格的基础。
流畅的 Python(3):一等函数 & 使用一等函数实现设计模式
从设计上看,不管函数式语言的定义如何,Python 都不是一门函数式语言。Python 只是从函数式语言中借鉴了一些好的想法。这篇文章主要讲解 Python 中的函数,以及利用 Python 中的函数是一等对象这个特性,重新实现一些设计模式。
流畅的 Python(2):字典和集合 & 文本和字节序列
这篇文章主要分为两个部分:1. 介绍 Python 的映射类型,包括字典和集合;2. 介绍 Python 的文本和字节序列
流畅的 Python(1):Python 数据模型 & 内置序列类型概览
每次学完 Python 后,由于实际 Python 程序写的不多,导致很快又忘了,所以总感觉对 Python 掌握的不深。这次又看了《流畅的 Python》,这本书的确非常不错,对于深入学习掌握 Python 有非常大的帮助。
看见网络-《Wireshark 网络分析系列》读书笔记
本篇文章是对林沛满老师的两部书籍《Wireshark 网络分析就这么简单》和《Wireshark 网络分析的艺术》的读书笔记。这两本书详实地记录了作者使用 Wireshark 来分析各类网络疑难杂症的经历。通过这些案例,作者介绍了许多使用 Wireshark 的小技巧,同时也向我们传授了其网络排障的一些宝贵经验。阅读这两本书时,让我回想起当时面试百度时面试官的一个问题:”客户端访问服务器慢,怎么排查?”。如果之前我阅读过这两本书,我想我可以回答地更详尽一些。
Wireshark 是解决网络问题的瑞士军刀,通过 Wireshark,我们可以清楚地看见网络中的每一个数据包(此刻请自行脑补你站在世界地图面前,清楚看见当前 Internet 上每一个数据包的流动)。