- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 Python Web Flask源码解读(四)——全局变量
Flask中全局变量有current_app、request、g和session。不过需要注意的是虽然标题是写着全局变量,但实际上这些变量都跟当前请求的上下文环境有关,下面一起来看看。
2019-08-24 15:14:36
819
2
原创 基于Flask开发企业级REST API应用(三)
前两章把程序的结构以及API的协议基本上搭建起来了。本文开始不打算对每个模块接口都进行实现,因为基本上都是业务逻辑代码,而且整篇文章都把代码贴出来,那将是一个灾难。
2019-08-10 00:47:21
274
原创 基于Flask开发企业级REST API应用(二)
本节开始项目的编码实现。首先我们来实现登录注册模块的相关API。本项目我们是使用前后端分离的模式,在实现登录注册功能之前,假设我们的接口是开放的,那么需要确定接口校验方案。
2019-08-10 00:47:11
288
原创 基于Flask开发企业级REST API应用(一)
前面对Python WEB框架Flask的源码进行走读,对服务的启动流程、路由原理和模板渲染有了一个宏观的认识。
2019-08-10 00:46:57
254
原创 Python中的字典数据结构
字典又称为哈希表(hashmap)、映射(map),它是以key-value的方式进行存储,通过key进行存储、查找操作的效率非常高。
2019-08-10 00:45:19
4394
原创 Python中栈、队列和优先级队列的实现
栈、队列和优先级队列都是非常基础的数据结构。Python作为一种“编码高效”的语言,对这些基础的数据结构都有比较好的实现。
2019-08-10 00:45:06
411
原创 如何在Python中表示一个对象
在Python中一切都是对象。如果要在Python中表示一个对象,除了定义class外还有哪些方式呢?我们今天就来盘点一下。
2019-08-10 00:44:48
148
原创 一文了解Python常见的序列化操作
marshal使用的是与Python语言相关但与机器无关的二进制来读写Python对象的。这种二进制的格式也跟Python语言的版本相关,marshal序列化的格式对不同的版本的Python是不兼容的。
2019-08-09 16:29:17
141
原创 你会写单元测试吗
也许你已经听说过`Test Driven Development`,但不知道你是否遵循这个规则呢?其实我自己在写代码的时候也很少会先写单元测试再写业务功能逻辑。
2019-08-09 16:23:52
135
原创 Python程序包的构建和发布过程
当我们开发了一个开源项目时,就希望把这个项目打包然后发布到pypi.org上,别人就可以通过pip install的命令进行安装。
2019-08-09 16:22:32
301
原创 关于Python虚拟环境与包管理你应该知道的事
Python拥有大量的第三方库,引用这些库也非常方便,通过pip install就可以将这些第三方库安装到本地Python库文件目录中,然后就可以import到项目中,极大地提升了开发者的编码效率。
2019-08-09 16:17:03
485
原创 你是否真的了解全局解析锁(GIL)
GIL是计算机语言解析器用于同步线程执行的一种同步锁机制。很多编程语言都有GIL,例如Python、Ruby。
2019-08-09 16:16:06
196
原创 快速了解Python并发编程的工程实现(下)
Python中由于Global Interpreter Lock(全局解释锁GIL)的存在,每个线程在在执行时需要获取到这个GIL,在同一时刻中只有一个线程得到解释锁的执行,Python中的线程并没有真正意义上的并发执行,多线程的执行效率也不一定比单线程的效率更高。
2019-08-09 16:12:17
133
原创 快速了解Python并发编程的工程实现(上)
在前面的文章中对Python协程的概念和实现做了简单地介绍。为了对Python并发编程有更加全面地认识,我也对Python线程和进程的概念和相关技术的使用进行了学习,于是有了这篇文字。
2019-08-09 16:11:23
106
原创 简单了解一下事件循环(Event Loop)
asyncio模块中的核心就是事件循环(Event Loop)。它可用于执行异步任务、事件回调、执行网络IO操作和运行子进程。官方的文档也是建议开发者应该尽量使用asyncio包提供的高级的API,避免直接使用Event Loop对象中的方法。
2019-08-09 16:09:30
1938
原创 为何你还不懂得如何使用Python协程
在Python早期的版本中协程也是通过生成器来实现的,也就是基于生成器的协程(Generator-based Coroutines)。
2019-08-09 16:06:39
250
原创 一文搞懂Python可迭代、迭代器和生成器的概念
在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几个概念也是经常混淆,现在是时候把这几个概念搞清楚了。
2019-08-09 14:37:34
283
原创 一份程序猿单词列表(updating)
以下单词是个人平时阅读英文文档时遇到的一些“生”单词。这些单词是在平时中积累下来的,也都是通过Google进行翻译的,所以有些翻译可能不是特别准确,毕竟不是字典,只作为平时的一个积累,偶尔翻阅,扩展自己的单词量。该文档将持续更新,可以关注https://github.com/hylinux1024/word-list-for-programmerAa variety of 各种各样的;ag...
2018-11-06 16:15:13
165
原创 源码分析Retrofit请求流程
Retrofit 是 square 公司的另一款广泛流行的网络请求框架。前面的一篇文章《源码分析OKHttp执行过程》已经对 OkHttp 网络请求框架有一个大概的了解。今天同样地对 Retrofit 的源码进行走读,对其底层的实现逻辑做到心中有数。0x00 基本用法Retrofit 的项目地址为:https://github.com/square/retrofit打开项目目录下的 samp...
2018-11-06 16:05:22
151
原创 源码分析OKHttp的执行过程
OKHttp 是目前 Android 平台主流的网络请求的基础框架。因此我们有必要对其源码进行阅读学习,了解其内部的原理、项目结构、以及请求的执行过程。它的项目地址为:https://github.com/square/okhttp0x00 简单使用先从一个简单的官方示例来看,这是一个同步 GET 请求public class GetExample { //1.http客户端 Ok...
2018-11-06 16:00:09
135
原创 源码阅读之Java栈的实现
0x00 栈栈是 Last-In-First-Out (后进先出)的线性表。对栈的操作主要有两个:入栈(push)和出栈(pop)。因此它也是一种操作受限的线性表。尽管如此,它在计算机中应用非常广泛,是一种非常基础的数据结构。0x01 源码从源码中可以看出栈也是一种非常简单的数据结构。栈的源码非常简洁,只有100多行代码。public class Stack<E> extend...
2018-11-06 10:07:32
498
原创 源码阅读之LinkedList实现细节
0x00 描述LinkedList 是一个双向链表,这是一个基础的数据结构。打开 LinkedList 源码,可以看到它继承于 AbstractSequentialList ,这个是 AbstractList 的子类。同时也实现了 List 、Deque 、Clone、Serializable 接口。所以简化的类关系图可以表示为关键属性size 记录当前数组元素的个数first 链表头...
2018-11-06 09:58:01
155
原创 源码阅读之ArrayList实现细节
0x00 描述ArrayList 可以说是 Java 程序猿最为常用的一种数据结构了。ArrayList 是通过数组实现的,容量可以自增的线性表。而数组的优点是计算机可以通过下标计算访问地址,所以访问元素的速度是很快的,时间复杂度为O(1);但数组并不擅长插入和删除操作,这些操作的时间复杂度是O(n)。因此 ArrayList 继承了数组这些特点。继承关系ArrayList 继承于 Abst...
2018-11-06 09:36:11
178
原创 学习区块链知识干货资料合集
A collection of awesome blockchain articles. Good learning resources about blockchain.干货集合,入门区块链技术看这里就够了。https://github.com/wecodexyz/awesome-blockchain-articles
2018-03-22 16:06:02
482
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人