django进阶04部署上线(nginx,uwsgi,supervisor)

django自身服务ok

python manage.py runserver,验证可正常访问

django进阶03静态文件和模板

静态文件和模板

静态文件:css,js,image,如果作为纯粹的web应用来看,静态文件的响应并不属于web应用范畴,因为静态文件不涉及业务逻辑,也不需开发业务代码。但几乎100%的web应用都支持对静态文件的直接访问。为何?主要是web应用基本上必然依赖css,js,img等静态资源,我们不可能固执的开发一个纯粹的web应用,只支持从url里进入视图函数,也只能从视图函数返回内容(简单来说所有请求路径都必须体现在url_route和view视图中)。而要求用户独立开启静态资源的请求处理服务。所以,先把静态资源服务和包含业务逻辑的web应用独立认识,二者并不相同,但强相关。其本身是独立于应用的
模板:在代码中response渲染中使用的,可以看做view视图的组成部分.所以没有独立url配置,依赖view视图存在,属于应用一部分,包含了业务逻辑(需要渲染),这一点也可以从配置上看出来。

django进阶02websocket

本文适合有一定websocket基础的,至少完整看过前后端demo的读者,一窍不通的小白建议先阅读“参考”部分的博文扫扫盲。
基于django的dwebsocket组件(目前虽然不在维护,但正常使用没问题)

前端方法

软件_搭建rtsp视频推送环境

live555编译安装启动

编译

python进阶21之actor

actor模型。actor模式是一种最古老的也是最简单的并行和分布式计算解决方案。
优点:充分利用单线程+事件机制,达到了多线程效果。
缺点,对python而言,由于GIL的存在,毕竟只是单线程,难以匹敌多进程,目前使用并不多。

简单任务调度器

python进阶20装饰器

Nested functions

Python允许创建嵌套函数,这意味着我们可以在函数内声明函数并且所有的作用域和声明周期规则也同样适用。

python进阶19垃圾回收GC

垃圾收集三大手段

一、引用计数(计数器)

python进阶18正则表达式

正则基础知识

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
^`:匹配行首
`$`:匹配结尾
`*`:(**贪婪**)前面字符匹配任意多次
`+`:(**懒惰**)前面字符匹配1或者更多次
`?`:前面字符匹配0或1次,还作为懒惰限定符使用,详看后面

`{m}`:前面字符匹配m次
`{m,n}`:前面字符匹配m~n次
`{m,}`:前面字符匹配m或更多次
`{,n}`:前面字符匹配0~n次

`|`:或,必须加括号

`.`:匹配除换行符以外的任意字符
`[1357]`:匹配1,3,5,7中其中一个数字,当然也可以是字母
`[0-9]`:匹配0到9的其中一个数字,类似用法还有:[a-zA-Z]
`[\u4E00-\u9FA5]`:匹配中文
`[^012]`:表示除012外的任意字符,包括3-9,a-z,A-Z,等等
注意:[]里面的.和*等一些特殊字符都失去特殊意义,只表示本身。

python进阶17炫技巧

原则:可读性第一(效率固然重要,除非非常明显的效率差异,否则可读性优先)
学习炫技巧,更多为了读懂他人代码,自己开发过程中,相似代码量(可读性),建议使用通俗写法。反对为炫而炫。

可直接运行的 zip 包

python进阶16多继承与Mixin

Mixin解释

为了让大家,对这个 Mixin 有一个更直观的理解,摘录了网上一段说明。
民航飞机是一种交通工具,对于土豪们来说直升机也是一种交通工具。对于这两种交通工具,它们都有一个功能是飞行,但是轿车没有。所以,我们不可能将飞行功能写在交通工具这个父类中。但是如果民航飞机和直升机都各自写自己的飞行方法,又违背了代码尽可能重用的原则(如果以后飞行工具越来越多,那会出现许多重复代码)。
怎么办,那就只好让这两种飞机同时继承交通工具以及飞行器两个父类,这样就出现了多重继承。这时又违背了继承必须是”is-a”关系。这个难题该怎么破?
这时候 Mixin 就闪亮登场了。飞行只是飞机做为交通工具的一种(增强)属性,我们可以为这个飞行的功能单独定义一个(增强)类,称之为 Mixin 类。这个类,是做为增强功能,添加到子类中的。为了让其他开发者,一看就知道这是个 Mixin 类,一般都要求开发者遵循规范,在类名末尾加上 Mixin 。

python进阶15变量作用域LEGB

作用域

“作用域”定义了Python在哪一个层次上查找某个“变量名”对应的对象。接下来的问题就是:“Python在查找‘名称-对象’映射时,是按照什么顺序对命名空间的不同层次进行查找的?”
答案就是:使用的是LEGB规则,表示的是Local -> Enclosed -> Global -> Built-in,其中的箭头方向表示的是搜索顺序。

python进阶14文件路径(找不到文件)

开发时遇到问题,文件路径不正确,找不到文件等等,都是这一类问题.

curdir,argv,file

python进阶13并发之九多进程和数据共享

使用进程,大概率出现情况是,想当然以为共享了,实际没共享。所以最终程序大概率卡死(部分逻辑没有数据进来,导致的业务逻辑性卡住,并非程序死锁)

哪些共享,哪些不共享

python进阶12并发之八多线程与数据同步

python并发首选进程,但偶尔有场景进程无法搞定,比如有些变量是无法序列化的,就无法使用工具包manager()的工具类进行共享。如果自己实现新的共享方法,可能开发量较大,且质量难以保证。此时可考虑用线程处理,规避进程的变量共享难题,而且实际场景中,IO大概率都是瓶颈,所以使用线程其实也的确有些优势。个人而言,选择进程和线程较为重视的安全性,进程数据隔离较好,互不干扰。其次就是公用数据占比,如果大多数数据都需公用,那么线程也会比进程更佳,避免了进程较多的数据共享问题。
线程而言,难点数据一致性,

哪些共享,哪些不共享

浅谈nginx,gunicorn,flask差异比对

角色划分

flask(django):Python的Web应用程序(如Flask,django)
nginx:web服务器,用户角度直接对接使用,请求响应的request-response出入口
WSGI(Web Server Gateway Interface),翻译为Python web服务器网关接口,即Python的Web应用程序(如Flask)和Web服务器(如Nginx)之间的一种通信协议。也就是说,如果让你的Web应用在任何服务器上运行,就必须遵循这个协议。

python进阶11并发之七多种并发方式的效率测试

测试map,apply_async,gevent协程爬虫
测试代码:网页爬虫

函数代码

python进阶10并发之六并行化改造

图示变量含义说明:
1个大step中包含3个小step,大step内部的第一步,二步,三步存在依赖关系(就是内部保持顺序执行)
a1,b1,c1,表示子任务a的第一步,b的第一步,c的第一步.同理a2,表示子任务a的第二步。

无并行

软件_ubuntu命令cp目录路径和通配符

cp作为linux最常用命令,大部分情况正确使用,偶尔也会犯低级错误。比如,今天自己copy目录就犯错了。特此整理下
以下基于ubuntu16测试(xxx含义为目录a/下的所有文件)

copy目录a目录b结果
cpabb/a/xxx
cpa/bb/a/xxx
cpa/*bb/xxx
cpab/b/a/xxx
cpa/b/b/a/xxx
cpa/*b/b/xxx

python进阶09并发之五生产者消费者

这也是实际项目中使用较多的一种并发模式,用Queue(JoinableQueue)实现,是Python中最常用的方式(这里的queue特指multiprocess包下的queue,非queue.Queue)。

Queue

python进阶08并发之四map, apply, map_async, apply_async差异

差异矩阵

python封装了4种常用方法,用于实现并发
其差异如下

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×