对DRF的APIView执行流程的源码学习 跟着源码学习下DRF的APIView执行流程原理一 入口函数as_view() 方法——入口{width=90%} 说明: 一般通过urlconf中配置路由时,需绑定类视图的as_view()方法。注意必须以类名.as_view()形式调用,而不能实例化调用,因为@classonlymethod中重写了__get__内置方法进行限制。 {width=90%} 二 基类中的as_view() 2020-08-19 Django DRF 源码分析 Django Python 源码分析 DRF
分享Redis中bittop和bitcount的有趣的实例 利用redis的bitop和bitcount来实现每日的用户量快速统计和单独用户的一段时间的登录次数用bitop的位逻辑运算来计算每日的用户量的思路来源于一篇外文博客。 地址:https://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/ 因为是篇英文博客,因此我借着这个机会锻炼英语阅读能力, 2020-08-18 Redis Redis
深入探讨JWT流程原理及对drf-jwt的流程分析和源码修改 背景之前做Django项目的时候,一直都用的自带的session认证模式,Django的session模式的后端可以选择redis,也可以选择数据库进行存储。用redis如果需要经常清理内存数据库,而用db存储,则需要频繁写操作,效率也比较低,在用户多的时候,存储大量的session记录带来额外的开销。 一 什么是JWT?JWT俗称 Json Web Token,是一种用于通信双方之间传递安全信 2020-08-17 JWT Django DRF 源码分析 Django Python 源码分析 DRF JWT
Supervisor配置虚拟环境中的celery 前几个月部署过使用虚拟环境的项目,今天把笔记补上! 使用supervisor部署普通项目中的celery和虚拟环境中的celery在command的写法上有些许不同,其他地方都差不多,话不多说,直接上配置。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 2020-08-15 Linux Celery Supervisor Celery Linux Supervisor
汇总Python实现单例模式的四大方式 之前Django开发使用过集中单例模式,今天来整理下这些实现单例模式的方式。 法一:使用__new__魔法方法12345class SingleMode1: def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance = super 2020-08-10 Python 设计模式 Python 设计模式
Manjaro中对可执行文件添加Icon manjaro中对可执行文件添加Icon用了2天manjaro,感觉它自定义性真得太强大了,以及各种包管理工具pacman,yay,yaourt等 我安装了Pycharm后,需要放到桌面直接执行,而我下载的是zip,采用shell脚本在命令行下进行执行。所以没有图标。 在这里,我总结两种启动pycharm的方法: 1.从命令行启动 进入pycharm的bin目录下,执行shell脚本 source 2020-08-05 Linux Manjaro Linux Manjaro
深入探究GIL的利与弊 深入分析Python全局解释器锁GIL的利与弊 一、GIL的诞生背景在谈GIL之前,先补一波线程的知识,正好最近再复习操作系统: {width=100%} 在那个单核盛行的时代,自多线程问世以来,线程成为了处理机调度最基本的单位。很多语言都开始着手处理线程并发的问题。其中python之父Guido在1992年8月4号引入了GIL的概念。那么那时候为什么要引入GIL全局解释器锁呢? 比方你申请了计 2020-08-05 Python 解释器锁 Python
Manjaro上初体验之配置好输入法(亲测有效) 一 安装基本的依赖包12345sudo pacman -S fcitxsudo pacman -S fcitx-configtool # 安装图形化工具sudo pacman -S fcitx-qt4 fcitx-qt5 # 安装搜狗需要安装qt4sudo pacman -S fcitx-imsudo pacman -S fcitx-sogoupinyin # 安装搜狗拼音 说明: 一 2020-08-02 Manjaro Linux Linux Manjaro
结合源码分析下defaultdict(type)的执行流程 背景Python中为了获取或操作字典中某个某个不存在的键的时候,引入了两种方式。 一种是dict.setdefault(),另外一种是defaultdict(type),今天来重点学习记录下defaultdict()的底层原理。 分析Python源码defaultdict:通过构造defaultdict字典,能够有效的处理找不到的键,具有核心方法missing(),调用default_facto 2020-08-01 Python 源码分析 Python 源码分析
对Nginx中的缓存设置的深入理解 一、背景网站已经运行有一段时间了,起初采用了nginx的反向代理,在location中设置了expires 30d,当时没有去仔细想如何合适的设计缓存。后来,我美化了网站的一些界面,修改了一些静态文件,更新到云服务器上,再次访问的时候发现,我所修改的静态文件资源并没有发生变化,仍是之前的那些… 设置缓存的好处无非就是在前端和后端之间建立额外的数据副本,用于减小请求后端服务器的压力,减轻了网路的压力 2020-08-01 Nginx Nginx 中间件