Rancho

爱和死亡留给上帝

Redis中的数据结构

data-structure-in-redis

Redis为什么这么快?时至今日, 可以选择的数据库有很多, 为什么Redis能有这么突出的表现呢一方面是因为它是内存数据库, 所有的操作都在内存上完成. 另一方面, 这要归功于它的数据结构.Redis一共支持五种数据类型, 包括String(字符串), List(列表), Hash(哈希), Set(集合)和Sorted Set(有序集合). 而它们的底层实现数据结构其实有六种, 分别是简......

算法进阶(01) - 数组、链表

advanced-algorithm-array-and-list

数组合并两个有序数组LeetCode 给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。 初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。 解题思路nums1有足够空间容纳所有数组元素, 用k从m+n-1处开......

在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......