Bryan Blog

个人分享 但愿各位看官喜欢

Python虚拟环境管理

Virtual environment in python

Python 虚拟环境管理 Why 管理过多个项目都知道,每个项目会有不同的依赖关系,将这些依赖关系全部保存在全局环境是不切实际的,而且不同项目的依赖关系可能会冲突,比如有些项目依赖python2,有些项目依赖的是python3。因此比较好的方案就是,为每个项目设置隔离的虚拟环境,所需的依赖关系都保存在各自的虚拟环境中,避免互相冲突。这就是为什么我们需要虚拟环境管理的原因。 How 早期的...

Flask 0.1 源码解析

Dive into flask 0.1

理解 Flask 0.1 为什么会挑选flask 0.1作为源码阅读的目标,主要原因在于简洁,可以比较清晰看到完整逻辑。还有一部分原因在于:整体的框架与思路与最新的代码都是一致的。因此,此次就以flask 0.1 源码作为介绍的目标,看看flask是如何实现优雅实现一个服务器的,具体注释的源码可以查看Flask 0.1 理解flask的源码需要一些基础,首先是需要python的基础,fla...

Python上下文管理

Context managers in python

上下文管理 python的上下文管理可以方便用于管理资源的分配与回收。一般通过with进行使用,比如经常可见的文件操作: with open("path_to_file", "r") as f: f.read() 在这样的上下文管理下,用户可以打开文件后,可以不用关心的文件的释放,甚至在文件打开成功打开,但是执行出错时,也会正确释放文件资源。事实上这样的代码对应的等价代码为: f ...

Local,localStack,localProxy深入解析

Local, localStack, localProxy in flask and werkzeug

Local Local 是什么 根据 官方文档 的介绍,local是提供了线程隔离的数据访问方式,类似于python中的 thread locals。可以理解为存在一个全局的数据,不同线程可以读取和修改它。不同线程之间是彼此隔离的。比如存在一个thread local的数组arr,在线程1往数组arr添加了一个数据,在线程1中读取时可以看到数组中存在一个数据,但是在线程2中读取时看到的数组a...

Python优雅迭代器实现

Elegant iterator in python

简单迭代器 在python中,为了让类可以迭代访问,需要满足如下所示条件: 在类中需要实现__ iter__()方法,此方法需要返回一个迭代器; 为了类成为迭代器,可通过实现next()方法,此方法可以返回下一个可用的数据,直到没有可用数据,此时抛出StopIteration异常 按照上面的理论,可以实现一个简单的迭代器如下所示: class IterableServer:...

Python字符编码介绍

Encoding in python

字符编码 字符的编码一直是一个令人头疼的问题,如果没有完全理解它,那么总有一天会踩进字符编码的坑里的。最近正好有空,梳理了编码相关的知识,来一篇博客,整理相关的细节。 ASCII 从计算机发明的时候起,字符的编码就是一个令人困扰的问题。众所周知,计算机只能存储二进制的数据,但是现实生活中的数据都不是二进制,比如我想在计算机中存储一个’hello world’的字符串,那么如何存储呢,肯定是...

Kubernetes入门实践

Kubernetes introduction

基本介绍 docker 轻量的虚拟技术,镜像提供标准的运行环境供任务运行,任务在镜像之上运行。 docker-compose docker容器集群编排应用,定义和运行多个docker应用。通过单个docker-compose文件可以启动多个docker应用 kubernetes 依赖docker进行容器管理,属于docker容器集群管理系统,方便进行部署,升级,回滚,健康监控自...

React生命周期介绍

React lifecycle

react生命周期 众所周知,react会有初始化的阶段,以及数据更新后的重新render阶段,在这些阶段中,会存在一些回调函数,react组件会在特定的阶段调用对应的回调函数。如果我们希望在特定的时间执行一些业务操作,就需要了解react提供的这些回调函数。 constructor 构造函数,在构建组件的时候调用 componentWillMount 在组件挂载之前被触发,执行中在...

React与Knockout共存探索

React and knockout

基础介绍 前端的框架一直变化很快,一个框架存活没多久,后续的新框架又火起来了。我们也总是需要与时俱进,不断更新前端的框架 Knockout knockout 是一个MVVM的Javascript前端库,数据与展示采用双向绑定,使用比较便利。但是也是由于过度灵活,如果稍有不注意,写出来的代码就比较难以维护。 React React 是目前最...

Linux信号机制与docker应用

Linux signal in docker

Linux任务终止信号 在linux系统中,为了终止任务,一般情况下,可能会涉及如下所示的几种信号: SIGTERM SIGTERM是终止命令kill默认的终止信号。此信号是由应用程序捕获的,使用SIGERM也让程序有机会再退出之前做好清理工作,从而优雅地终止 SIGKILL 这是一种不可被捕获或忽略的信号,这是一种可以可靠地杀死进程的方...