Python
如何在 Django 中保证并发的数据一致性
· ☕ 3 分钟
前面一部分主要讲乐观锁和悲观锁。锁从数据库层面,保证了并发时的数据一致性。了解锁,有助于对并发解决方案的理解。后面一部分主要讲的是 Django 中,并发场景下,保证数据一致性的解决办法。 1. 关于锁 1.1 乐观锁 乐观锁的出发点是,同一条数据很少会因为并发修改而产

Django 中使用 utf8mb4 支持 emoji 表情
· ☕ 2 分钟
1. 什么是 utf8 理论上,utf8 使用 1-6 个字符, 实际上,最新的 utf8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。 2. 什么是 utf8mb4 utf8mb4 是 utf8 的超集,理论上原来使用 utf8,然后将字符集修改为 utf8mb4,也不会对已有的utf8 编码读

Python 下各种环境隔离工具简介
· ☕ 3 分钟
1. 非标准库 1.1 virtualenv virtualenv 是一个非常流行的用于创建独立的python libraries环境的工具。我强烈推荐你学习并了解它,因为他非常实用,并且应用广泛,很多人用它来搭建python开发环境。后面其他工具来主要与virtualenv来进行比较以说明差

Python2 源码学习之字典和列表实现
· ☕ 6 分钟
1. 为什么字典比列表查询快 首先,请看下面这段代码 1 2 3 4 5 6 7 8 9 10 11 12 13 from time import time t = time() data = [chr(i) for i in range(97, 123)] # data = dict.fromkeys(data,True) print data for i in range(9999999): after_filter = [] for find in ['aa', 'b', 'cc', 'd', 'ee']: if find not in data: after_filter.append(find) print after_filter print time() - t 直接运行: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] ['aa', 'cc', 'ee'] 24.5699999332 去

Python2 VS Python3
· ☕ 1 分钟
1. Python 2 和 3 区别 特征\版本 Python 2 Python 3 print 函数化 print“abc” print(“abc”) 统一类 旧式类和新式类 只有新式类 浮点运算 1/2=0 1/2=0.5 字符串格式化 %,Format Format,% xrange 替代 range xrange range long 重命名为 int Long,int Int 包导入 相对导入 绝对导入 源文件编码 Ascii utf8 Python 官方强烈建议直接学习 Python 3,因为 Python 2 只维护到 2020 年。但是现