import functools def a(f): print('a') @functools.wraps(f) def wraps(*args, **kwargs): print('wraps') ret ...
你真的了解python tuple不可变吗
最近遇到个有关tuple的面试题,挺有意思的。 # 下面会输出什么?为什么 In [18]: tu = (1, [1, 2]) In [19]: tu[1].append(3) In [20]: print(tu) (1, [1, 2, 3]) tupple不可变是指对象不可变,不可以对tuple中 ...
redis之字典实现
哈希表节点使用dictEntry结构表示,每个dictEntry结构都保存着一个键值对: /* key属性保存着键值对中的键,而v属性则保存着键值对中的值,其中键值对的值可以是一个指针,或者是一个uint64_t整数,又或者是一个int64_t整数 */ typedef struct dictEnt ...
redis之链表实现
Redis链表的实现代码在src/[adlist.h, adlist.c] typedef struct listNode { // 指向前节点的指针 struct listNode *prev; // 指向后节点的指针 struct listNode *next; ...
redis之简单字符串SDS
redis并没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。struct sdshdr { // buf 中已占用空间的长度 int len; ...
python property
class property([fget[, fset[, fdel[, doc]]]]) # fget是用于获取属性值的函数 # fset是用于设置属性值的函数 # fdel是用于删除属性值的函数 # doc是文档字符串 下面是官方文档上的一个例子: In [2]: class C: ...
python GIL与线程调度
GIL(Global Interpreter Lock)-全局解释锁,python使用GIL来互斥线程对python虚拟机的使用,同一时间只能并且仅有一个线程使用python虚拟机。 为什么要使用GIL 假设有两个线程A、B,在两个线程中,都同时保存着对内存中同一对象obj的引用,也就是说,这时ob ...
单例模式(Singleton)-创建型
单例模式保证类有且只有一个实例,并提供一个访问他的全局访问点。 1. class Singleton(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.ins ...
python functools wraps
把被封装函数的name、module、doc和dict复制到封装函数中,这样在未来排错或者函数自省的进修能够获得正确的源函数的对应属性,所以使用wraps。 In [1]: import functools # 不加wraps In [2]: def deco(f): ...: de ...