![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 72
slp_44777680
这个作者很懒,什么都没留下…
展开
-
前后端交互常用的时间敏感算法
前后端交互中涉及时间敏感的算法主要用于确保数据传输的安全性、有效性和同步性。原创 2024-07-03 14:59:31 · 458 阅读 · 0 评论 -
微信支付(JSAPI支付)接入流程
JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。原创 2023-11-09 10:48:28 · 3005 阅读 · 0 评论 -
微信支付(Native支付)接入流程
Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。原创 2023-11-08 16:31:38 · 624 阅读 · 0 评论 -
支付宝支付接入流程
支付宝支付接入流程原创 2023-10-26 16:05:10 · 388 阅读 · 0 评论 -
collections模块常用拓展数据类型
除内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。转载 2022-08-19 18:31:27 · 168 阅读 · 0 评论 -
python3中超级好用的日志模块-loguru模块详解
在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会才用日志的方式来进行记录这些信息。在 Python 中用到日志记录,那就不可避免地会用到内置的 logging标准库 。虽然logging 库采用的是模块化设计,你可以设置不同的 handler 来进行组合,但是在配置上通常较为繁琐;而且如果不是特别处理,在一些多线程或多进程的场景下使用 logging还会导致日志记录会出现错乱或是丢失的情况。但有这么一个库,它不仅能够减少繁琐的配置过程还能实现和logging类似的转载 2021-08-02 18:05:29 · 2272 阅读 · 2 评论 -
Python 操作数据库之 Peewee
Peewee系列:Peewee 使用Peewee使用之事务Peewee批量插入数据Peewee 使用(二)——增删改查更详细使用Peewee是一个简单小巧的Python ORM,它非常容易学习,并且使用起来很直观。如果想快速入门,请参考官方的Quckstart。本文,只是写今天在使用过程中的一些记录。基本知识在官方的Quckstart中,我了解到,Peewee中Model类、fields和model实例与数据库的映射关系如下:d也就是说,一个Model类代表一个数据库的表,一个Fiel转载 2021-07-29 17:32:12 · 891 阅读 · 0 评论 -
Python中的google authenticator 认证
环境描述python 3.7所需安装包 :pyotp qrcode Image实现原理1.使用pyotp 的python模块生成google auth 需要的密钥2.根据密钥生成条形码图片3.使用google authenticator 客户端扫描条形码,客户端根据时间及密钥经过算法 生成6位数的验证码4.平台二次认证通过对输入的验证码进行校验,校验也是基于时间和密钥代码实现import osimport tracebackimport pyotpfrom qrco原创 2021-07-29 15:23:08 · 1146 阅读 · 0 评论 -
常见几种加密算法的Python实现
生活中我们经常会遇到一些加密算法,今天我们就聊聊这些加密算法的Python实现。部分常用的加密方法基本都有对应的Python库,基本不再需要我们用代码实现具体算法。MD5加密全称:MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密。Python代码:impor转载 2021-06-24 17:14:25 · 647 阅读 · 0 评论 -
Python3 面向对象
属性1、类属性与实例属性类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问。2、实例:类属性 1 class People(object): 2 name = 'Jack' #类属性(公有) 3 __age = 12 #类属性(私有) 4原创 2021-04-13 18:39:16 · 103 阅读 · 1 评论 -
Python2.7 安装pip报错 sys.stderr.write(f“ERROR: {exc}“)
本文主要介绍Python2(Python 2.7)中,使用sudo python2 get-pip.py命令安装pip报错 sys.stderr.write(f“ERROR: {exc}”)的解决方法。错误信息如下:Traceback (most recent call last): File "get-pip.py", line 24226, in <module> main() File "get-pip.py", line 199, in main bootst转载 2021-03-19 19:10:46 · 705 阅读 · 1 评论 -
Linux 安装Python 3.7.6
1.下载安装包在https://www.python.org/ftp/python/中选择自己需要的python源码包,我这选用的是python 3.7.61.下载wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz2. 解压tar -zxvf Python-3.7.6.tgz3. 建立一个空文件夹,用于存放python3程序mkdir /usr/local/python34. 执行配置文件,编译,编译安装cd P原创 2021-03-19 17:43:10 · 678 阅读 · 0 评论 -
Python JSON WEB TOKEN
JSON Web Tokens ,是一种开发的行业标准RFC 7519 ,用于安全的表示双方之间的声明。1、jwt认证流程传统token方式和jwt认证方式有什么差异?传统token方式用户登录成功后,服务端生成一个随机的token给用户,并且在服务端(数据库或缓存)中保存一份token,以后用户再来访问时需要携带token,服务端接收到token之后,去数据库或缓存中进行校验token的是否超时、是否合法jwt方式用户登录成功后,服务端通过jwt生成一个随机token给用户(服务端无需转载 2021-03-16 15:35:44 · 233 阅读 · 0 评论 -
Python中使用 WebSocket 和 SSE 实现 HTTP 服务器消息推送
很多时候我们需要实时获取最新数据,但是传统意义上的HTTP请求,必须由客户端向服务端发起请求,服务端再返回相应的数据。那如果我们需要获取实时数据,就要通过HTTP轮询,客户端不间断的向服务器发起请求。这样不断的的请求不但严重加大服务器的压力,还可能因为网络延迟而影响数据的时效性。下面介绍两种方法能够很好的满足业务的需求。一、WebSocketWebSocket是HTML5开始提供的一种在单个 TCP 链接上进行全双工通信的协议。优点:双工通信缺点:需专门定义数据协议,解析数据流,且部分服务器支持不完原创 2021-03-12 15:20:33 · 8400 阅读 · 1 评论 -
python 多进程 + 协程的使用
协程,是一种用户态的轻量级线程。相对于多进程和多线程有很多优点:协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制。因此,没有线程切换的开销,和多线程相比,线程数量越多,相同数量的协程体现出的优势越明显不需要多线程的锁机制。由于只有一个线程,也不存在同时写变量的冲突,在协程中控制共享资源不需要加锁,只需要判断数据的状态,所以执行效率远高于线程 ,对于多核CPU可以使用多进程+协程来尽可能高效率地利用CPU。import threadingfrom multiprocessing原创 2020-11-07 17:07:50 · 1279 阅读 · 1 评论 -
python 定义一个可关闭的线程
python 定义一个可关闭的线程开发过程中,常常需要反复执行某个特定的过程,一般线程只有start()方法,却没有stop()方法。但是我们往往需要在线程之外去控制线程的执行。所以我重新定义了一个类,去重写run()方法。# coding: utf-8import threadingfrom time import sleepdef funcc(id): print('我还活着 %s'%id) sleep(3)class StoppableThread(threadi原创 2020-11-07 16:38:34 · 301 阅读 · 1 评论 -
python 生成gif验证码
python 生成gif验证码最近需要做一个验证码的功能,在网上找了许多资料,都是一些静态的验证码图片,即都是png或jpg的图片。于是,借鉴网上的一些资料,弄一个gif的验证码图片,现分享给大家。所需依赖如下:pip3 install pillowpip3 install imageio完整代码如下:import osimport randomfrom io import BytesIOimport imageiofrom PIL import Imagefrom PIL imp转载 2020-11-04 18:00:27 · 219 阅读 · 0 评论 -
Shopify API接入
Shopify API接入目录Shopify API接入OAuth 验证shopify api接入方式有三种:商品prouduct attributes方法:1、find()订单order attributes方法:1、find()2、count()3、close()4、open()5、cancel()unstable()PUTDELETEDELETE所有API的使用都是通过Shopify应用程序进行的,Shopify应用程序由店主为自己的商店创建,或者由Shopify合作伙伴创建,供其他店主使用:原创 2020-11-02 09:39:41 · 13356 阅读 · 4 评论 -
flask的ORM操作
flask的ORM操作目录flask的ORM操作ORMFlask-SQLAlchemy扩展数据模型模型之间的关联表管理操作数据新增修改删除事务查询Flask-SQLAlchemy提供了分页方法四、文件的迁移ORMORM(Object Relational Mapping)中文翻译过来叫作对象关系映射,它把一个类映射成数据库里的一张表而属性映射成数据库表的列,每一个实例对象对应数据库表里的一行数据。通过它我们可以直接使用面向对象的方式来编写程序而不再直接书写原生的SQL语句,而且大部分ORM框架支持多种原创 2020-10-30 17:08:57 · 3743 阅读 · 0 评论 -
python获取内网IP和外网IP的方法
python获取内网IP和外网IP的方法获取内网IP:import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.connect(('8.8.8.8', 80))print(s.getsockname()[0])s.close()获取外网IP:import requestsprint(requests.get('http://ifconfig.me/ip', timeout=1).text.strip()).转载 2020-10-22 14:59:58 · 1703 阅读 · 0 评论 -
Python并发编程6——基于fork的聊天室小程序
1、服务端代码from socket import *import os, sys# 服务器地址ADDR = ('0.0.0.0', 8888)# 存储用户信息user = {}# 进入聊天室def do_login(s,name,addr): if name in user or "管理员" in name: s.sendto("\n该用户已存在".encode(),addr) return s.sendto(b'OK',addr)转载 2020-10-09 15:45:03 · 61 阅读 · 0 评论 -
Python并发编程5——进程间通信
进程间通信(IPC)1.必要性: 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。常用进程间通信方法管道消息队列共享内存信号信号量套接字管道通信(Pipe)通信原理在内存中开辟管道空间,生成管道操作对象,多个进程使用同一个管道对象进行读写即可实现通信实现方法from multiprocessing import Pipefd1,fd2 = Pipe(duplex = True)功能: 创建管道参数:默认表示双向管转载 2020-10-09 15:43:07 · 169 阅读 · 1 评论 -
Python并发编程4——进程池实现
进程池实现必要性【1】 进程的创建和销毁过程消耗的资源较多【2】 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时对计算机压力较大【3】 进程池技术很好的解决了以上问题。原理创建一定数量的进程来处理事件,事件处理完进 程不退出而是继续处理其他事件,直到所有事件全都处理完毕统一销毁。增加进程的重复利用,降低资源消耗。进程池实现【1】 创建进程池对象,放入适当的进程from multiprocessing import PoolPool(proc转载 2020-10-09 15:32:42 · 100 阅读 · 0 评论 -
Python并发编程3——multiprocessing模块创建进程
multiprocessing 模块创建进程进程创建方法流程特点【1】 将需要子进程执行的事件封装为函数【2】 通过模块的Process类创建进程对象,关联函数【3】 可以通过进程对象设置进程信息及属性【4】 通过进程对象调用start启动进程【5】 通过进程对象调用join回收进程基本接口使用Process()功能 : 创建进程对象参数 : target 绑定要执行的目标函数 args 元组,用于给target函数位置传参 kwargs 字典,给target函数键值转载 2020-10-09 15:29:27 · 98 阅读 · 0 评论 -
Python并发编程2——基于fork的多进程编程
基于fork的多进程编程fork使用pid = os.fork()功能: 创建新的进程返回值:整数,如果创建进程失败返回一个负数,如果成功则在原有进程中返回新进程的PID,在新进程中返回0注意:子进程会复制父进程全部内存空间,从fork下一句开始执行。父子进程各自独立运行,运行顺序不一定。利用父子进程fork返回值的区别,配合if结构让父子进程执行不同的内容几乎是固定搭配。父子进程有各自特有特征比如PID PCB 命令集等。父进程fork之前开辟的空间子进程同样拥有,父子进程对各自转载 2020-10-09 15:19:22 · 112 阅读 · 0 评论 -
Python并发编程1——进程的基本概念
并发编程多任务编程意义: 充分利用计算机多核资源,提高程序的运行效率。实现方案 :多进程 , 多线程并行与并发并发 : 同时处理多个任务,内核在任务间不断的切换达到好像多个任务被同时执行的效果,实际每个时刻只有一个任务占有内核。并行 : 多个任务利用计算机多核资源在同时执行,此时多个任务间为并行关系。进程(process)进程理论基础定义 : 程序在计算机中的一次运行。程序是一个可执行的文件,是静态的占有磁盘。进程是一个动态的过程描述,占有计算机运行资源转载 2020-10-09 14:52:43 · 71 阅读 · 0 评论 -
Python并发编程7——线程 基本概念及基本代码实现
线程编程(Thread)线程基本概念什么是线程【1】 线程被称为轻量级的进程【2】 线程也可以使用计算机多核资源,是多任务编程方式【3】 线程是系统分配内核的最小单元【4】 线程可以理解为进程的分支任务线程特征【1】 一个进程中可以包含多个线程【2】 线程也是一个运行行为,消耗计算机资源【3】 一个进程中的所有线程共享这个进程的资源【4】 多个线程之间的运行互不影响各自运行【5】 线程的创建和销毁消耗资源远小于进程【6】 各个线程也有自己的ID等特征threading转载 2020-10-09 14:15:32 · 61 阅读 · 0 评论 -
Python queue队列
队列是一种先进先出的数据结构,与之对应的是堆栈这种后进先出的结构。但是在python中,它内置了一个queue模块,它不但提供普通的队列,还提供一些特殊的队列。具体如下:queue.Queue :先进先出队列queue.LifoQueue :后进先出队列queue.PriorityQueue :优先级队列queue.deque :双向队列Queue:先进先出队列这是最常用也是最普遍的队列,先看一个例子。import queueq = queue.Queue(maxsize)q.put(转载 2020-10-09 11:48:07 · 319 阅读 · 0 评论 -
Python 关于requests 关闭连接,优化内存
Python 关于requests 关闭连接,优化内存问题场景项目需要通过一台主机搭上代理向目标服务器定时交换数据,主机上同时跑着比较占用资源的其他项目。项目设计思路因为主机上已经运行了比较占用线程内存资源的其他项目,所以计划本项目就应该在不能太占用资源,的前提下保持比较流畅的运行。设计了在线程下加上定时器的思路,定时运行相关网络请求方法。请求量 :每隔5秒钟,发送10 ~ 30个请求。核心代码headers = {"Content-Type": "application/json;cha转载 2020-10-08 12:18:52 · 17767 阅读 · 2 评论 -
python RSA加密传输
python RSA加密传输由于前端使用HTTP协议, 因此产生了对于数据加密的需求, 由于JS和Python中RSA秘钥产生方式的差异,踩了不少坑, 在这里记录一下.前端var crypt = new JSEncrypt();crypt.setKey(__YOUR_PUBLIC_KEY__); //仅支持pkcs8标准的秘钥文件var text = 'test';var enc = crypt.encrypt(text);秘钥文件格式标准 'pkcs8标准'# 密钥格式(公钥)--原创 2020-05-30 18:00:45 · 1005 阅读 · 0 评论 -
python中为print输出时设置颜色
python中为print输出时设置颜色我们在使用python运维与开发的过程中,经常需要打印显示各种信息。海量的信息堆砌在控制台中,就会导致各种信息都显示在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上差异的字体颜色,那么就会更加显眼,增加使用者可阅读性。书写语法print('\033[显示方式;前景色;背景色m输出内容\033[0m')其中,显示方式、前景色、背景色都是可选参数(可缺省一个或多个)。显示颜色的参数:显示方式效果字体色背景色颜色描述0转载 2020-05-22 17:13:54 · 1650 阅读 · 0 评论 -
Python 获取多线程获取返回值
1. 通过重写Thread类,自定义一个get_result()方法"""重新定义带返回值的线程类"""from threading import Threadfrom time import sleep,timeclass MyThread(Thread): def __init__(self, func, args): super(MyThread, self).__init__() self.func = func self.arg原创 2020-05-08 18:08:09 · 487 阅读 · 0 评论 -
python ThreadPoolExecutor线程池
✨ 前言从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进程池)两个类。相比 threading 等模块,该模块通过 submit 返回的是一个 future 对象,它是一个未来可期的对象,通过它可以获悉线程的状态主线程(或进程)中可以获取某一个线程(...转载 2020-04-21 09:49:27 · 165 阅读 · 0 评论 -
Python 线程池的实现
Python 线程池实现原理# 将任务放在队列中# 着手开始处理任务# - 创建线程# - 有空闲线程,择不再创建线程# - 不能高于线程池的限制# - 根据任务个数判断# - 线程去队列中取任务import queueimport ran...原创 2020-04-19 15:13:12 · 183 阅读 · 0 评论 -
Python—进程、线程、协程
一、线程线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务方法:start 线程准备就绪,等待CPU调度setName 设置线程名称getName 获取线程名称setDaemon 把一个主进程设置为Daemon...转载 2020-03-26 14:14:39 · 83 阅读 · 0 评论 -
Python 关于sys.argv[]的用法简明解释
Python中 sys.argv[]的用法简明解释sys.argv[]是一个从程序外部获取参数的方式,可以是一个或者多个,多个时获取到的是一个列表。例如:sys.argv[]参数为0时,#test.pyimport sysa=sys.argv[0]print(a)当外部执行该文件时C:\Users\Administrator\Desktop>python test.p...原创 2020-03-04 21:57:12 · 270 阅读 · 0 评论 -
python定时任务:apscheduler的使用
1 . 安装pip install apscheduler 2 . 简单例子# coding:utf-8from apscheduler.schedulers.blocking import BlockingSchedulerimport datetimedef aps_test(): print(datetime.datetime.now().strftime('%Y-...转载 2020-02-26 14:06:02 · 297 阅读 · 0 评论 -
python 关于时间的操作
python 关于时间的操作1. 日期输出格式化所有日期、时间的api都在datetime模块内。datetime => stringnow = datetime.datetime.now()now.strftime('%Y-%m-%d %H:%M:%S')#输出2012-03-05 16:26:23.870105strftime是datetime类的实例方法。str...原创 2020-01-10 11:32:29 · 394 阅读 · 0 评论