
python
少年白char
StreamFlow开源作者
展开
-
python redis 布隆过滤器实现
如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为 O(n),O(log n),O(1)。原创 2022-11-03 11:24:19 · 1058 阅读 · 0 评论 -
python读取大文件md5校验性能优化比较
后端分片的话可以考虑多线程,多进程的处理方案但是一般业务场景 更多是前端上传的文件流的形式更好的方案是前端拆分大文件,后端在接受文件的同时算出md5。原创 2022-10-27 11:42:03 · 3635 阅读 · 0 评论 -
python中werkzeug.Local模块
为什么使用werkzeug.Local而不是threading.local,因为python中应用基于协程运行,使用thread local变量可能会造成请求间数据相互干扰,因为一个线程中存在多个请求。Werkzeug 的设计者认为python自带的ThreadLocal并不能满足需求,主要因为下面两个原因:Werkzeug 主要用“ThreadLocal”来满足并发的要求,python 自带的ThreadLocal只能实现基于线程的并发。而python中还有其他许多并发方式,比如常见的协程(gr.原创 2022-05-18 18:15:23 · 474 阅读 · 1 评论 -
python中并发请求接口的多种实现
名词解释:事件循环:是每个 asyncio 应用程序的核心,每个协程任务都运行在事件循环中,事件循坏来管理分配不同任务的执行,比如aiohttp 请求后会让出控制权,事件循环就会继续执行下面的任务而不会造成阻塞,达到提高并发的目的。当然不是所有协程任务都可以让出控制权,所有要使用aiohttp而不是requests协程 :async关键字声明的特殊函数,就是协程,这时候协程已经不具备函数的特性,所以协程不是函数futures:调度的协程被包装在Tasks 中,它是一种Future类型,loop.cr原创 2021-12-10 10:55:30 · 4050 阅读 · 0 评论 -
django celery中动态添加周期任务
常用实现方式@periodic_task(run_every=crontab(minute='*/5', hour='*', day_of_week="*"))def get_time(): """ celery 周期任务示例 run_every=crontab(minute='*/5', hour='*', day_of_week="*"):每 5 分钟执行一次任务 """ now = datetime.datetime.now() logger.er原创 2021-06-21 15:00:34 · 1070 阅读 · 0 评论 -
python实现有向无环图(DAG)
from collections import OrderedDict, defaultdictfrom copy import copy, deepcopyclass DAG(object): """ Directed acyclic graph implementation. """ def __init__(self): """ Construct a new DAG with no nodes or edges. """ self.reset原创 2021-04-13 19:30:42 · 5346 阅读 · 1 评论 -
python slots魔法
在Python中,每个类都有实例属性。默认情况下Python用一个字典来保存一个对象的实例属性。这非常有用,因为它允许我们在运行时去设置任意的新属性。然而,对于有着已知属性的小类来说,它可能是个瓶颈。这个字典浪费了很多内存。Python不能在对象创建时直接分配一个固定量的内存来保存所有的属性。因此如果你创建许多对象(我指的是成千上万个),它会消耗掉很多内存。不过还是有一个方法来规避这个问题。这个方法需要使用__slots__来告诉Python不要使用字典,而且只给一个固定集合的属性分配空间。这里是一个转载 2021-03-29 11:16:29 · 2314 阅读 · 0 评论 -
Django orm跨多值关联,链式调用filter/exclude数据与预期不符合问题
一般情况下,QuerySet的切片返回一个新的QuerySet—— 其并未执行查询。一个特殊情况是使用了的 Python 切片语法的 “步长”。例如,这将会实际的执行查询命令,为了获取从前 10 个对象中,每隔一个抽取的对象组成的列表:Entry.objects.all()[:10:2]2,Blog.objects.filter(entry__authors__name='Lennon')(假设有个关联的Author模型),若某项条目没有任何关联的author,...原创 2020-12-24 19:30:38 · 4234 阅读 · 2 评论 -
python bad magic number:b‘\x03\xf3\r\n‘:ImportError
当在Python版本更改之间保留旧的.pyc文件时,这是由Python 2.x .pyc文件进入新的Python 3.x项目引起的。解决方法find . -name \*.pyc -deleteython文件*.py运行的时候会产生对应的*.pyc文件,这个是python的解释器把*.py文件编译得到的二进制文件,完全可以*.py文件一样运行,功能上没有任何差别。很多厂商为了防止源码外泄,经常会采用把*.py源码文件编译后删除,完全使用*.pyc文件运行自己的产品。当然了,你打开*.pyc文件是一.原创 2020-12-21 19:25:57 · 4375 阅读 · 2 评论 -
Python实现猴子补丁
猴子补丁猴子补丁(monkey patch)的主要功能就是模块运行时动态的属性的替换。运行时动态改变类的方法class A: def func(self): print("Hi") def monkey(self): print("Hi, monkey")a = A()a.func()'''运行结果Hi'''加上猴子补丁class A: def func(self): print("Hi") de原创 2020-12-12 16:32:13 · 443 阅读 · 0 评论 -
csrf是什么? Django中csrf的原理?
CSRF攻击CSRF(英语:Cross-site request forgery)是跨站请求伪造的缩写,也被称为XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,CSRF利用的是网站对用户网页浏览器的信任,。举个栗子受害者登录a.com,并保留了登录凭证(Cookie)。攻击者引诱受害者访问了b.com。b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。a.com接收到请求后,对请求进行验证,并原创 2020-11-28 14:45:17 · 3473 阅读 · 0 评论 -
github pages不能自动更新
昨天往github pages的repository里提交了一篇文章后,却发现github pages的页面一直没有更新——看不到新提交的文章。网上搜了一些资料,最后解决了这个问题。一般来说,只要你的github pages repository有新的提交,github的服务器就会运行jekyll编译你的repository(延时很小)。如果编译出错,那么你的github pages页面是不会更新的;同时,github也会给你发一封提醒邮件,大致内容如下,The page build failed wi转载 2020-07-13 16:05:21 · 9866 阅读 · 2 评论 -
免费的Github博客搭建(python+pelican)
每个入门程序员或多都想拥有一个自己博客站点,苦于高额的服务器费用和较为麻烦的操作步骤,你完全可以通过 GitHub Pages来实现一个免费,可定制的书写,记录生活,技术分享的平台。为什么使用 GitHub Pages首先它是完全免费,可以省下一笔服务费无须自己购买云服务进行搭建,只需按步骤一步步操作即可,即使你不懂他的技术细节;支持的功能多,玩法丰富,你可以绑定你的域名、使用免费的 HTTPS、自己 DIY 网站的主题、使用他人开发好的插件等等当完成搭建后,你只需要专注于文章创作就可以了,其他原创 2020-07-13 11:19:57 · 670 阅读 · 0 评论 -
Python3最长递增子序列(Longest Increasing Subsequence/LIS)
最长递增子序列(Longest Increasing Subsequence; LIS)最长增加子序列(LIS)问题是找到给定序列的最长子序列的长度,以使该子序列的所有元素都按升序排序。例如,{10、22、9、33、21、50、41、60、80}的LIS长度为6,LIS为{10、22、33、50、60、80}。def lis(arr): if not arr: return 0 n = len(arr) # 存放每一步规划的最大解 dp = [1] * n原创 2020-07-01 15:14:57 · 641 阅读 · 0 评论 -
最长共同子序列 (Longest Common SubsequenceLCS)
1. 最长共同子序列 (Longest Common Subsequence; LCS)给定两个序列,找出两个序列中存在的最长子序列的长度。子序列是指以相同的相对顺序出现,但不一定是连续的序列 称为「最长共同子序列」(Longest Common Subsequence; LCS)」示例:序列“ ABCDGH”和“ AEDFHR”的LCS为长度3的“ ADH”。序列“ AGGTAB”和“ GXTXAYB”的LCS为长度4的“ GTAB”。解题思路首先看一个2个字符串abcdefg和c原创 2020-06-29 16:51:38 · 1526 阅读 · 0 评论 -
一篇基础了解python(非常实用)
Q: Python垃圾回收机制/内存管理机制?A:总体来说,在Python中,主要通过引用计数进行垃圾回收;通过 “标记-清除” 解决容器对象可能产生的循环引用问题;通过 “分代回收” 以空间换时间的方法提高垃圾回收效率。Python垃圾回收机制Q:__new__和__init__的区别?A:__new__作为构造器,起创建一个类实例的作用。而__init__作为初始化器,起初始化一个已被创建的实例的作用。__new__和__init__的区别Q:Python字典dict实现原理?A:散列表是一个原创 2020-06-23 15:54:21 · 117 阅读 · 0 评论 -
代码放在Docker image还是挂载到volume
首先需要明确的是:Docker到底能够带来什么样的好处,Docker带来轻量级虚拟化容器方面的优势(资源利用率高,创建快捷,环境纯粹) ? 还是镜像带来的优势(便于部署,记录容器状态,持续集成等)? 确定了使用的场景,才好说明代码到底放到什么地方更合适。举几个例子,可以根据场景灵活的方式使用代码和数据:场景一:如果做好了所有代码,想分发给其他使用者,这种无疑代码放到image是最佳的,包括数据库初始化脚本等。场景二:如果是开发环境,代码是用于调试,代原创 2020-06-12 16:22:31 · 1073 阅读 · 0 评论 -
Python3 双向链表
双向链表双向链表:每一个元素都是一个对象,每个对象有一个关键字key和两个指针:next和prev在双向链表的实现中,使用一个伪头部(dummy head)和伪尾部(dummy tail)标记界限,这样在添加节点和删除节点的时候就不需要检查相邻的节点是否存在。双向链表:每一个元素都是一个对象(DLinkedNode类的实例),每个对象有一个关键字key和两个指针:next和prevclass DLinkedNode: def __init__(self, key=0, value=0原创 2020-05-25 16:46:06 · 660 阅读 · 0 评论 -
python 根据uuid 获取mac地址
import uuidtry: mac = uuid.UUID(int=uuid.getnode()).hex[-12:] mac_address = ':'.join([mac[e:e + 2] for e in range(0, 11, 2)])except: mac_address = ''print(mac_address)原创 2019-12-24 16:40:24 · 2094 阅读 · 0 评论 -
Python url的编码转换
基于python 自带module urllibfrom urllib.parse import parse_qs, urlparse, urlencode, unquote, unquote_plus, quote, quote_plusdef parse_url_params(url): """将url ?后的参数转成字典""" # 提取url参数 quer...原创 2019-11-19 16:15:16 · 2298 阅读 · 0 评论 -
python调用win32接口进行截图
目录python的版本及依赖的库的安装对后台窗口截图对桌面截图python的版本及依赖的库的安装#版本python 3.7.1pip install pywin32==224pip install numpy==1.15.3pip install opencv-python==3.4.2.16pip install opencv-contrib-python==3.4.2.16...转载 2019-08-28 09:38:48 · 4917 阅读 · 1 评论 -
python使用post方式发送json参数
1、正向接口以’Content-Type: application/json’ 格式推送至微盟平台2、所有正向接口的调用均以post方式提交,并且post中的参数均以json方式构成。一开始没看懂,不知道什么玩意.百度后,找到了个靠谱的帖子,照着方案写代码后成功,把相关代码贴出来,供以后作参考import urllib2import jsondata = { 'a': ...原创 2018-01-03 11:25:20 · 5593 阅读 · 0 评论 -
如何获取getevent的输出,并且记录到文件中?使用python操作
adb shell getevent > 1.txt,会有时间延迟,退出的时候会有部分数据没有记录。0035,0036 为点击时间的x,y坐标(12进制) ,可写个脚本提取x,y 在模拟点击原创 2018-02-08 09:52:29 · 1998 阅读 · 0 评论 -
python协程库asyncio (异步io)
介绍异步IO:就是发起一个IO操作(如:网络请求,文件读写等),这些操作一般是比较耗时的,不用等待它结束,可以继续做其他事情,结束时会发来通知。协程:又称为微线程,在一个线程中执行,执行函数时可以随时中断,由程序(用户)自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。asyncio中几个重要概念1.事件循环管理所有的事件,在整个程序运行过程中不断循环执行并追...原创 2019-07-19 13:46:53 · 42208 阅读 · 0 评论 -
Django进阶之session
基于cookie做用户验证时:敏感信息不适合放在cookie中session依赖cookiesession原理cookie是保存在用户浏览器端的键值对session是保存在服务器端的键值对 session服务端中存在的数据为:session = { 随机字符串1:{ 用户1的相关信息} 随机字符串2:{ 用户2的相关信息}}session客户端即客户端的...转载 2018-05-07 10:50:50 · 201 阅读 · 0 评论 -
多线程 —— 多线程在WEB开发中的应用相关问题
1. web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中? WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你利用servlet这个框架来写代码。具体真的一言难尽,反正不用写到RUN中,除非你想对线程控制到极致,例如你要做测试。 2. 部署在服务器上的一个网站,多个浏览器在访问同一个功能点时...转载 2018-05-10 15:32:19 · 574 阅读 · 0 评论 -
11种常见SQLmap使用方法
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了。今天把我一直以来整理的sqlmap笔记发布上来供大家参考。一共有11种常见SQLmap使用方法:一、SQLMAP用于Access数据库注入(1) 猜解是否能注入12win: python sqlmap.py -u...转载 2018-03-27 20:32:00 · 2163 阅读 · 0 评论 -
pyqt获得值的用法整理
设定值:_________________________________________________大段文本self.textEdit.setPlainText(text)静态labelself.lbl.setText("PyQt4")设定静态label初始值self.lbl.setText("hello"+self.singlelineEdit.text())字体self.label.s...原创 2018-03-01 17:02:35 · 4272 阅读 · 0 评论 -
网页爬虫--scrapy进阶
本篇将谈一些scrapy的进阶内容,帮助大家能更熟悉这个框架。1. 站点选取现在的大网站基本除了pc端都会有移动端,所以需要先确定爬哪个。比如爬新浪微博,有以下几个选择:www.weibo.com,主站www.weibo.cn,简化版m.weibo.cn,移动版上面三个中,主站的微博数据是动态加载的,意味着光看源码是看不到数据的,想爬的话要么搞清楚其api访问情况,要么模拟js,那样的话花的力气可...转载 2018-03-07 16:41:41 · 311 阅读 · 0 评论 -
python 常见的异常类型
python标准异常异常名称 描述BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类StopIteration 迭代器没有更多的值GeneratorExit 生成器(generator)发生异常来通知退出StandardError 所有的内建标准异常的基类Arithmet...原创 2018-03-07 09:58:43 · 425 阅读 · 0 评论 -
MySQL 连接远程数据库 有延迟处理方法
作为MySQL调优的一部分,很多人都推荐开启skip_name_resolve。这个参数是禁止域名解析的(当然,也包括主机名)。很多童鞋会好奇,这背后的原理是什么,什么情况下开启这个参数比较合适。 基于以下原因,MySQL服务端会在内存中维护着一份host信息, 包括三部分:IP,主机名和错误信息。主要用于非本地TCP连接。1. 通过在第一次建立连接时缓存IP和host n原创 2018-02-07 10:46:20 · 2974 阅读 · 0 评论 -
Pyinstaller(python打包为exe文件)
需求分析:python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速。当然打包的脚本似乎不是在所有的win平台下都能使用,win7有一部分不能使用,我在win10能够很好的运行。准备: pyinstaller(http://www.pyinstaller.org/) 首先还是去官网看支持的pyt原创 2018-02-03 11:10:38 · 359 阅读 · 0 评论 -
python 中 的 一些os 操作
python获取文件上一级目录:取文件所在目录的上一级目录os.path.abspath(os.path.join(os.path.dirname('settings.py'),os.path.pardir))os.path.pardir是父目录,os.path.abspath是绝对路径举例具体看一下输出: print os.path.dirname(os.p原创 2018-01-16 16:41:04 · 377 阅读 · 0 评论 -
django rest framework serializers小结
引言 serializers是什么?官网是这样的”Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other conte...转载 2018-05-08 14:49:54 · 227 阅读 · 0 评论 -
Web服务器处理并发连接请求的工作模型
一、单线程web服务器(Single-threaded web servers)此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的性能问题。(即一次只能处理一个请求) 二、多进程/多线程web服务器此种架构方式中,web服务器生成多个进程或线程并行处理多个用户请求,进程或线程可以按需或事先...原创 2018-05-08 15:35:10 · 2779 阅读 · 0 评论 -
python异步请求库grequest安装和使用
安装pip install grequests使用import grequests, timenowtime = time.time()url = "https://blog.youkuaiyun.com/u011342224/article/details/{}"detail_list = ['94603283', '79709322', '78959345', '78879633', ...原创 2019-07-18 14:36:00 · 4243 阅读 · 1 评论 -
python 有用的文章链接收藏
Python 进程内存增长解决方案https://zhuanlan.zhihu.com/p/28031057记一次调试python内存泄露的问题https://www.jianshu.com/p/2d06a1a01cc3https://testerhome.com/articles/19870花了两个星期,我终于把 WSGI 整明白了https://juejin.im/po...原创 2019-07-04 11:50:16 · 270 阅读 · 0 评论 -
Git忽略提交规则 - .gitignore配置运维总结
转载https://www.cnblogs.com/kevingrace/p/5690241.html在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add .的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去...转载 2019-07-01 17:00:22 · 207 阅读 · 0 评论 -
Python的二十三种设计模式实现(详细案例)
本文源码寄方于github:https://github.com/w392807287/Design_pattern_of_python参考文献:《大话设计模式》——吴强《Python设计模式》——pythontip.com《23种设计模式》——http://www.cnblogs.com/beijiguangyong/设计模式是什么?设计模式是经过总结、优化的,对我们经常...转载 2019-06-20 17:21:38 · 1229 阅读 · 0 评论 -
解决unix:///tmp/supervisor.sock no such file的问题
1、打开配置文件vim /etc/supervisord.conf这里把所有的/tmp路径改掉,/tmp/supervisor.sock 改成 /var/run/supervisor.sock,/tmp/supervisord.log 改成/var/log/supervisor.log,/tmp/supervisord.pid 改成/var/run/supervisor.pid 要不容易...转载 2019-05-05 11:40:56 · 2704 阅读 · 0 评论