- 博客(7)
- 收藏
- 关注
原创 python项目中的配置文件
灵感来自与Django源码import importlibimport osclass Settings: def __new__(cls, settings_module=None): if not hasattr(cls, '_has'): obj = object() settings_module = settings_module if settings_module else os.environ.get('SET
2021-03-11 11:40:03 142
原创 命令行解析总结
argparse"""argparse(python自带)"""import argparse# 初始化解析器parser = argparse.ArgumentParser()# 定义参数parser.add_argument("-f", "--file", help="统计指定文件类型")# 解析args = parser.parse_args()print(f"传入参数:{args.file}")click"""click(Flask作者写的)pip instal
2021-03-11 10:27:45 166
原创 sql执行过程解析&索引&优化&锁
sql执行过程将from后面的数据库表文件加载到内存如果有where,则对表进行过滤,取出符合条件的数据并生成一张临时表,(where是对从数据库表文件加载到内存中的原生数据过滤)若果有group by,则将表按条件进行分隔,分隔成若干个临时表select执行读取时,按有无group by两种情况:a) 没有group by,select会根据后面的字段名称,对内存中的临时表整列读取b) 有group by,会对内存中的若干临时表分别执行select,而且只取各临时表的第一条数据,然后形成新的
2021-03-10 15:34:47 165 2
原创 对http的一些浅谈
基本认识http协议底层是TCP/IP协议,也就是说,get/post都是TCP链接get和post的本质区别get在浏览器回退时时无害的,而post会再次提交请求get会被浏览器主动cache,而post不会,除非手动设置get只能进行url编码,而post能支持多种get参数有长度限制,而post没有。(大多数浏览器限制url长度为2K,大多数服务器最多处理64K大小)post更安全,因为post参数在body中,get直接暴露在url中get产生一个TCP数据包,post会产生两
2021-03-10 15:27:53 63
原创 性感的装饰器
装饰器在文件加载时就会被调用运用在mysql中import functoolsimport pymysqlfrom pymysql.cursors import DictCursorfrom DBUtils.PooledDB import PooledDBclass Mysql(object): __pool = None def __init__(self): self._conn = Mysql.__get_conn__() self.
2021-03-10 15:14:18 63
原创 GIL
GIL存在的原因python内核基于C编写, 大部分C语言库都不是原生线程安全的特性多线程进行cpu密集型计算,会存在频繁的上下文切换,使得效率低下多线程只对I/O密集型计算产生正面效果,而至少有一个cpu密集型线程存在,那么多线程效率就会因GIL而大幅下降py3对GIL的改进强制线程在固定时间后释放cpu密集型会优先获取在其他线程有机会运行之前,不允许当前线程重新获取(动态调整自身的优先级,py2.x没有此机制)...
2021-03-10 12:51:24 86
原创 python魔法方法小感
方法介绍__getattr__: 访问不存在的属性,会自动调用这个函数作为返回值__getattribute__: 那么无论访问什么属性,都是通过这个函数获取,包括方法;如果__getattribute__抛出了AttributeError异常,并且定了了__getattr__函数,那么会调用__getattr__这个函数,不论这个属性到底是不是存在,也就是说属性访问的一个大致优先级是:__getattribute__ > __getattr__ > __dict____dict__:
2021-03-10 12:44:33 98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人