获取办法:详细看文末
Py2 VS Py3
篇幅有限省略部分...
py2/3 转换工具

常用的库
篇幅有限省略部分...不常用但很主要的库
dis(代码字节码剖析)inspect(天生器状态)cProfile(性能剖析)bisect(掩护有序列表)fnmatchfnmatch(string,".***") #win下不区分大小写fnmatch根据系统决定fnmatchcase完备区分大小写timeit(代码实行韶光) def isLen(strString): #还是该当利用三元表达式,更快 return True if len(strString)>6 else False def isLen1(strString): #这里把稳false和true的位置 return [False,True][len(strString)>6] import timeit print(timeit.timeit('isLen1("5fsdfsdfsaf")',setup="from __main__ import isLen1")) print(timeit.timeit('isLen("5fsdfsdfsaf")',setup="from __main__ import isLen"))
contextlib@contextlib.contextmanager使天生器函数变成一个高下文管理器types(包含了标准阐明器定义的所有类型的类型工具,可以将天生器函数润色为异步模式)
import types types.coroutine #相称于实现了__await__
篇幅有限省略部分...
Python进阶
进程间通信:Manager(内置了好多数据构造,可以实现多进程间内存共享)篇幅有限省略部分...
Pipe(适用于两个进程)
篇幅有限省略部分...
篇幅有限省略部分...dict底层构造为了支持快速查找利用了哈希表作为底层构造哈希表均匀查找韶光繁芜度为o(1)CPython阐明器利用二次探查办理哈希冲突问题Hash扩容和Hash冲突办理方案链接法二次探查(开放寻址法):python利用循环复制到新空间实现扩容冲突办理:
for gevent import monkey monkey.patch_all() #将代码中所有的壅塞方法都进行修正,可以指定详细要修正的方法
判断是否为天生器或者协程
co_flags = func.__code__.co_flags # 检讨是否是协程 if co_flags & 0x180: return func # 检讨是否是天生器 if co_flags & 0x20: return func
斐波那契办理的问题及变形获取电脑设置的环境变量垃圾回收机制引用计数标记打消分代回收True和False在代码中完备等价于1和0,可以直接和数字进行打算,inf表示无穷大C10M/C10KC10M:8核心cpu,64G内存,在10gbps的网络上保持1000万并发连接C10K:1GHz CPU,2G内存,1gbps网络环境下保持1万个客户端供应FTP做事篇幅有限省略部分...
网络知识
什么是HTTPS?安全的HTTP协议,https须要cs证书,数据加密,端口为443,安全,同一网站https seo排名会更高常见相应状态码 204 No Content //要求成功处理,没有实体的主体返回,一样平常用来表示删除成功 206 Partial Content //Get范围要求已成功处理 303 See Other //临时重定向,期望利用get定向获取 304 Not Modified //要求缓存资源 307 Temporary Redirect //临时重定向,Post不会变成Get 401 Unauthorized //认证失落败 403 Forbidden //资源要求被谢绝 400 //要求参数缺点 201 //添加或变动成功 503 //做事器掩护或者超负载
http要求方法的幂等性及安全性WSGI
# environ:一个包含所有HTTP要求信息的dict工具 # start_response:一个发送HTTP相应的函数 def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<h1>Hello, web!</h1>'
RPCCDNSSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信供应安全及数据完全性的一种安全协议。SSH(安全外壳协议) 为 Secure Shell 的缩写,篇幅有限省略部分...TCP/IPTCP:面向连接/可靠/基于字节流UDP:无连接/不可靠/面向报文三次握手四次挥手三次握手(SYN/SYN+ACK/ACK)四次挥手(FIN/ACK/FIN/ACK)为什么连接的时候是三次握手,关闭的时候却是四次握手?篇幅有限省略部分...为什么TIME_WAIT状态须要经由2MSL(最大报文段生存韶光)才能返回到CLOSE状态?虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以末了一个ACK丢失。以是TIME_WAIT状态便是用来重发可能丢失的ACK报文。XSS/CSRFHttpOnly禁止js脚本访问和操作Cookie,可以有效防止XSS
Mysql
索引改进过程线性构造->二分查找->hash->二叉查找树->平衡二叉树->多路查找树->多路平衡查找树(B-Tree)篇幅有限省略部分...失落效场景:篇幅有限省略部分...如果MySQL估计利用全表扫描要比利用索引快,则不该用索引什么是聚拢索引B+Tree叶子节点保存的是数据还是指针MyISAM索引和数据分离,利用非聚拢InnoDB数据文件便是索引文件,主键索引便是聚拢索引Redis命令总结
为什么这么快?篇幅有限省略部分...上风篇幅有限省略部分...什么是redis事务?篇幅有限省略部分...持久化办法RDB(快照)save(同步,可以担保数据同等性)bgsave(异步,shutdown时,无AOF则默认利用)AOF(追加日志)怎么实现行列步队pushrpop常用的数据类型(Bitmaps,Hyperloglogs,范围查询等不常用)篇幅有限省略部分...与Memcached差异篇幅有限省略部分...Redis实现分布式锁利用setnx实现加锁,可以同时通过expire添加超时时间锁的value值可以是一个随机的uuid或者特定的命名开释锁的时候,通过uuid判断是否是该锁,是则实行delete开释锁常见问题缓存雪崩短韶光内缓存数据过期,大量要求访问数据库篇幅有限省略部分...同等性Hash算法利用集群的时候担保数据的同等性基于redis实现一个分布式锁,哀求一个超时的参数setnx虚拟内存内存抖动Linux
Unix五种i/o模型壅塞io非壅塞io多路复用io(Python下利用selectot实现io多路复用)select并发不高,连接数很生动的情形下poll比select提高的并不多epoll适用于连接数量较多,但活动链接数少的情形旗子暗记驱动io异步io(Gevent/Asyncio实现异步)比man更好利用的命令手册tldr:一个有命令示例的手册篇幅有限省略部分...设计模式
单例模式
# 办法一 def Single(cls,args,kwargs): instances = {} def get_instance (args, kwargs): if cls not in instances: instances[cls] = cls(args, kwargs) return instances[cls] return get_instance @Single class B: pass # 办法二 class Single: def __init__(self): print("单例模式实现办法二。。。") single = Single() del Single # 每次调用single就可以了 # 办法三(最常用的办法) class Single: def __new__(cls,args,kwargs): if not hasattr(cls,'_instance'): cls._instance = super().__new__(cls,args,kwargs) return cls._instance
工厂模式
布局模式
数据构造和算法内置数据构造和算法
python实现各种数据构造
快速排序
def quick_sort(_list): if len(_list) < 2: return _list pivot_index = 0 pivot = _list(pivot_index) left_list = [i for i in _list[:pivot_index] if i < pivot] right_list = [i for i in _list[pivot_index:] if i > pivot] return quick_sort(left) + [pivot] + quick_sort(right)
选择排序
def select_sort(seq): n = len(seq) for i in range(n-1) min_idx = i for j in range(i+1,n): if seq[j] < seq[min_inx]: min_idx = j if min_idx != i: seq[i], seq[min_idx] = seq[min_idx],seq[i]
插入排序
归并排序
堆排序heapq模块
栈
行列步队
二分查找
口试加强题:
关于数据库优化及设计
如何利用两个栈实现一个行列步队反转链表合并两个有序链表删除链表节点篇幅有限省略部分...缓存算法
LRU(least-recently-used):更换最近最少利用的工具LFU(Least frequently used):最不常常利用,如果一个数据在最近一段韶光内利用次数很少,那么在将来一段韶光内被利用的可能性也很小做事端性能优化方向
利用数据构造和算法数据库索引优化慢查询肃清slow_query_log_file开启并且查询慢查询日志通过explain排查索引问题调度数据修正索引批量操作,从而减少io操作利用NoSQL:比如Redis网络io批量操作pipeline缓存Redis异步Asyncio实现异步操作利用Celery减少io壅塞并发多线程Gevent篇幅有限省略部分...-END-
除上述资料外,还附赠全套Python学习资料,包含口试题、简历资料等详细看下方。
更多干系资料有须要的小伙伴回 01 即可获取