

古明地觉的编程教室C
-
Cookie、Session、Token 解析
什么是认证(Authentication) 通俗地讲,认证就是验证当前用户的身份是否合法的过程。比如指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功。 像用户名密码登录、…
-
InnoDB 的 MVCC 实现原理
楔子 MySQL 的隔离级别默认采用的是可重复读(简称 RR),可以避免脏写、脏读、不可重复读,一个事务在查询的过程中,即使别的事务将值修改了,该事务查询到的结果也是不变的。 那么…
-
详解 MySQL 的事务以及隔离级别
楔子 本次来聊一聊事务,首先事务一般指的是逻辑上的一组操作,或者作为单个逻辑单元执行的一系列操作。同属于一个事务的操作会作为一个整体提交给系统,这些操作要么全部执行成功,要么全部执…
-
初识 undo log
undo log 回滚原理 前面介绍了 redo log,有了它便可以保证事务在提交之后数据不丢失。但是问题来了,如果事务执行到一半的时候需要回滚怎么办?比如一个事务里面有 4 个…
-
redo log 原理解析
redo log 如何保证数据不丢失 在介绍 Buffer Pool 的时候说到,MySQL 的增加改查操作都是在 Buffer Pool 里面进行的,比如更新数据,实际上就是更新…
-
Numpy 的一些以 arg 开头的函数
楔子 Numpy 里面有一些以 arg 开头的函数,非常的有意思,因为它们返回的不是元素、而是元素的索引,下面来看一下用法。 np.argmax 我们知道 np.max 是获取最大…
-
pandas 生成 Excel 时的 sheet 问题
楔子 估计有不少小伙伴在将 DataFrame 导入到 Excel 的时候,都遇到过下面这种尴尬的情况: 想将多个 DataFrame 导入到一个 Excel 文件的多个 shee…
-
深度解密 MySQL 的 Buffer Pool
楔子 我们前面介绍了 Buffer Pool,它本质上就是一片内存,里面存储了 MySQL 的表数据。并且这片内存是可配置的,因为它不可能无限大,默认是 128MB。 但很明显,在…
-
(新系列)用 C 编写扩展模块的基本骨架
楔子 关于这个系列,文章结尾有一些个人想说的话。 本次我们来开启一个新系列,我给它起名为用 C 写 Python,也就是用原生的 Python/C API 来写扩展。 说到写扩展,…
-
Cython 模块之间的相互导入,组织你的 Cython 代码
楔子 前面介绍 Cython 语法的时候,一直都是一个 pyx 文件,而且文件名也一直叫 cython_test.pyx 就没变过,但如果是多个 pyx 文件该怎么办?怎么像 Py…
-
由一个简单的引用计数问题引发的一些思考
楔子 我曾经写过一个系列,叫源码探秘 CPython,专门讲解虚拟机的。最近一个读者阅读完第 9 篇文章之后,在微信上问了我这样一个问题: 他好奇为什么一个打印的是 2,另一个打印…
-
预定义的 .pxd 文件
之前我们使用了这样一条导入语句:from libc.stdlib cimport malloc,显然这是 Cython 提供的预定义 .pxd 文件,位于 Cython 主目录的 …
-
使用 Cython 包装外部的 C 代码
楔子 在前面的文章中我们知道了 Cython 如何通过提前编译的方式来对 Python 代码进行加速,本次我们聚焦在另一个方向上:假设有一个现成的 C 源文件,那么如何才能让 Py…
-
Cython 系列,完结撒花(不是完结的完结)
不知不觉几个月又过去了,关于 Cython 系列暂时就先告一段落,不知道我的文章有没有让你有所收获呢,要是有的话就太好了。 下面回顾一下我们都学习了哪些内容: 1)了解了 Cyth…
-
使用 prange 实现 for 循环的并行
楔子 上一篇文章我们探讨了 GIL 的原理,以及如何释放 GIL 实现并行,做法是将函数声明为 nogil,然后使用 with nogil 上下文管理器即可。在使用上非常简单,但如…
-
常量、修饰符,以及回调函数
常量 我们在之前的文章中提到,Cython 理解 const 修饰符,但它在 cdef 声明中并不是有效的。它应该在 cdef extern from 语句块中使用,用来修饰一个函…
-
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
楔子 在使用网络进行数据传输的时候,安全性是至关重要的,我们在开发过程中或多或少都会遇到公钥、私钥、加密、签名等一些相关名词。这些概念比较杂乱,容易混淆,下面就来梳理一下。 对称加…
-
用 Cython 包装静态库和动态库
楔子 引入 C 源文件我们已经知道该怎么做了,但如果引入的不是源文件,而是已经存在的静态库或者动态库该怎么办呢?C 语言发展到现在已经拥有非常多成熟的库了,我们可以直接拿来用,这些…