Rancho

爱和死亡留给上帝

在JUnit中定制Runner

JUnit4 Customer Runners

前言本文将快速介绍如何在JUnit测试框架中使用自定义Runner来运行单测当前, 这需要配合@RunWith注解 准备首先, 添加项目依赖 12345<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version&g......

理解Python协程

Understand Python Coroutine

概述在Python语言的技术书籍里,关于协程(Coroutine)的讨论是相当匮乏的,这也导致协程成为了最鲜为人知的Python特性。到目前为止,笔者只在《Python高级编程》和《Fluent Python》两本书中见到过详细的讨论。前者是一本年代十分久远的书,不是很建议看。 由于GIL的存在,导致Python多线程的性能甚至可能比单线程还要糟糕。于是就出现了协程,它由程序主动控制切换,没......

深入Java注解

Drive Into Java Annotation

近日暂别热爱且把玩多年的Python, 转向Java阵营. 转型期间遇到的首个confusion便是注解, 一方面是它长得很像Python装饰器, 另一方面是搬砖仿写时出镜率贼高, 但又特别陌生. 注解的本质java.lang.annotation.Annotation有这么句话, 用于描述『注解』 The Common interface extended by all annotati......

Python3.7新特性概览

What's New In Python3.7

Python官方于6.27发布了V3.7.0的更新说明,包含很多新特性和优化。另外值得注意的是,此次更新不完全向后兼容。 官方文档 主要亮点 新语法特性: PEP 563延迟加载类型注解,依赖from __future__ import annotations· 向后不兼容的语法更改: async 和 await 现在是保留关键字,可能部分三方库会受到影响。 新的库模块: co......

理解高性能Python

Understand High Performance Python

前言计算机编程可以认为是对输入数据进行特定的移动和转换后得到某种结果。通常,在对数据进行这些操作时,会不可避免地产生时间上的开销。因此,高性能编程可以认为通过某些手段来让这些操作的代价最小化,例如: 降低运行开销(撰写更加高效的代码) 改变操作方式(寻找更加高效的算法) 数据的移动发生在实际的硬件上,通常高级语言在背后做了很多工作,将我们对硬件的直接操作进行抽象和封装。理解数据在硬件层面......

Python 单例模式

Singleton in Python

单例模式单例模式(Singleton Pattern)是最常见的一种软件设计模式, 该模式的主要目的是保证一个类在程序生命周期内只有一个实例存在. 比如, 某个服务器程序的配置信息存放在一个文件中, 客户端通过一个AppConfig的类来读取配置文件的信息. 如果在程序运行期间, 有很多地方都需要使用配置文件的内容, 也就是说, 很多地方都需要创建AppConfig对象的实例, 这就导致系统......

『译』构建基本对象模型

A Simple Object Model

原文地址 Carl Friedrich Bolz是一位在伦敦国王大学任职的研究员, 他沉迷于动态语言的实现及优化等领域而不可自拔. 他是PyPy/RPython的核心开发者之一, 于此同时, 他也在为Prolog, Racket, Smalltalk, PHP和Ruby等语言贡献代码. 开篇面向对象编程是目前被广泛使用的一种编程范式, 这种编程范式也被大量现代编程语言所支持. 虽然大部分语......

时间和日期

Dates and Times

不同于int、float和str,Python没有包含对应日期和时间的内置类型,不过提供了3个相应模块,可以采用多种表示管理日期和时间值。 time模块由底层C库提供与时间相关的函数。它包含一些函数用于获取时钟时间和处理器运行时间,还提供了基本的解析和字符串格式化工具。 datetime模块为日期、时间以及日期时间提供了一个高层接口。datetime中的类支持算术、比较和时区配置。 cal......

固定类型数据序列 - Array

Sequence of Fixed-Type Data

array模块定义了一个序列数据结构,看起来它和list非常相似,只不过所有成员都必须是相同的基本类型。 初始化array实例化时可以提供一个参数来描述允许哪种数据类型,还有一个初始的数据序列存储在数组中。下面的例子将数组配置为Unicode character序列,并用一个简单的字符串来初始化。 123456789import arrayimport binasciis = 'this i......

容器数据类型 - Collections

Cotainer Data Types

collections模块包含多种数据结构的实现,扩展了其他模块中的相应结构。 Counter:计数器 defaultdict:带有默认值的字典。 OrderedDict:记忆元素顺序的有序字典 deque:双端队列,允许从任意一端增加或删除元素。 namedtuple:生成可以使用名字来访问元素内容的tuple子类 CounterCounter作为一个容器,可以跟踪相同的值增加了多少次......