![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 75
rgc_520_zyl
这个作者很懒,什么都没留下…
展开
-
opentelemetry+python+jaeger链路追踪相关使用备注
opentelemetry+python+jaeger链路追踪相关使用原创 2022-09-06 17:10:59 · 3398 阅读 · 0 评论 -
Python Asyncio总结
主要介绍Asyncio源码涉及的相关主要几个类及相关方法;重点为了理解事件循环运行原理;原创 2021-12-06 10:30:44 · 461 阅读 · 0 评论 -
Python collections.deque使用
底层实现原理:A deque (double-ended queue) is represented internally as a doubly linked list. (Well, a list of arrays rather than objects, for greater efficiency.) Both ends are accessible, but even looking at the middle is slow, and adding to or removing from原创 2021-11-18 16:47:43 · 644 阅读 · 0 评论 -
WSGI和flask上下文机制
WSGI全称:Python Web Server Gateway Interface(python web服务网关接口)此WSGI接口 有2部分,分别为 server或者gateway端 和application或者framework端;http请求处理过程如下图:server端作用负责接收用户发起的http请求,进行简单处理后,将包装后的请求数据 调用一次application端的服务,处理具体的请求,处理完后再交给server端,封装后再交给用户;flask框架中server端的依赖继承关原创 2021-11-05 16:17:11 · 609 阅读 · 0 评论 -
基金模拟系统中,账户模块对乐观锁悲观锁的详细设计方案
需求:在不考虑 被黑客篡改db数据的安全性问题下,现需要实时记录 用户 每笔交易变动后 账户金额的变化要求:并发时,不能出现 账户金额记录错误,如 账户金额100元,同时买入2笔订单,每笔20元,则账户金额必须为60元;需求分析: 解决并发情况下,db数据脏读脏写的问题详设方案:表结构设计方案:class AccountAmountModel(): """账户金额表""" __tablename__ = 't_account_amount' id = Colu原创 2021-08-24 18:28:03 · 167 阅读 · 0 评论 -
flask单个请求中计算密集型的优化过程
被请求接口中的情况如下: 根据用户输入参数, 需要使用pandas和numpy进行大量计算,这些计算中 ,比如 在 范围 1-100之间使用 随机函数 生成 一个随机值,这个随机值 就是一条线上的点; 这个接口 需要 随机100万次 然后把100万个点渲染到前端页面上;分析需求: 因为是随机100万次,每次随机值都放在list中,最后发给前端; 每次计算时 不会影响其他程序;优化思路:可以考虑 把100万次的计算 平均放到 10个进程中;每个进程负责10万次计算; 这样可以缩减10倍时间...原创 2021-08-11 16:55:18 · 408 阅读 · 0 评论 -
python heapq数据结构
python中堆的使用相关实现原理其实 堆 只是将list中的元素位置进行改变以满足堆的数据结构要求即可;并且每次 增删改 时 都会移动元素位置以保证 满足 堆 特性所以 堆的 数据结构仍然是 list而已;只是每次对 堆的操作 都需要将list作为参数 传入堆的函数中;堆的数据结构要求为: i处的元素总是大于位置i // 2处的元素;注意和下标无关如: 此堆结构: [1.11, 2, 1.5, 3, 8, 5, 4, 6, 7, 11, 9, 10] 则以 第i=6位的数...原创 2021-08-11 16:43:59 · 121 阅读 · 0 评论 -
Python代码编写优化
在导入方式及 代码运行访问 命名空间中的变量时,先在本地变量寻找 再到全局变量寻找的优化#! /usr/bin/env python# -*- coding: utf-8 -*-import mathimport timeitfrom math import sindef tight_loop_very_slow(iterations): """ 每次循环 要先找全局变量中的math模块,再去 模块中找 sin方法,极慢 """ result = 0...原创 2021-08-11 16:15:03 · 117 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)及CBF 使用及原理浅析
布隆过滤器 原理:步骤1:在内存中开辟一块连续的空间;将所有bit位置为0; 假如 设置 3个hash函数 将 数据 分别存储在3个bit位上;步骤2:在有数据(如 'baidu')需要存储时, 将 数据 经过 3个hash函数的计算 得到 3个 bit位置; 然后将对应3个bit位置 数据置位1;下次判断 数据(如'baidu') 是否存在时,将数据 通过 步骤2 计算后 获取对应bit位置 数据是否 都为1(注意 因为3个hash函数相同,所以相同数据 无论计算多少次 对应bit位置原创 2021-04-21 19:37:31 · 658 阅读 · 0 评论 -
Python进程间通信(IPC)几种方式总结
起源:在项目中单进程无法满足需求时,可能 多进程是一种解决方案, 但是进程间在 需要相互沟通交流协作的时候 就需要进程间能够相互通信;进程间通信的方式:共享内存: 多个进程间 共享一块内存区域,进程间向此内存区域 读写数据,从而完成数据共享,进而完成进程间通信; 这块内存区域支持的数据类型如下:list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Barrier,Queu...原创 2021-02-01 19:37:28 · 2125 阅读 · 0 评论 -
python __iter__,__next__使用
示例代码:class IterDictVal: """ 迭代字典的值 """ def __init__(self, k_v_map): """ 初始化 :param k_v_map: """ self.v_list = list(k_v_map.values()) self._position = 0 def __iter__(self): ...原创 2020-12-31 19:05:04 · 896 阅读 · 0 评论 -
命令模式(Command pattern)及代码实现
模式定义:生活中的例子代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:和 其他模式 的 比较:示例代码部分总结:相关链接:http://c.biancheng.net/view/1383.htmlhttps://refactoringguru.cn/design-patterns/chain-of-responsibility...原创 2020-12-04 15:29:27 · 290 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Design Pattern)及代码实现
模式定义:代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:和 其他模式 的 比较:示例代码部分总结:相关链接:...原创 2020-11-30 14:30:07 · 261 阅读 · 1 评论 -
celery+rabbitmq queue,message,exchange设置持久化或非持久化
持久化原创 2020-11-19 20:17:43 · 1150 阅读 · 2 评论 -
桥接模式(Bridge Design Pattern)及代码实现
模式定义:代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:和 其他模式 的 比较:示例代码部分总结:相关链接:...原创 2020-11-10 19:46:10 · 247 阅读 · 0 评论 -
代理模式(Proxy Design Pattern)及代码实现
什么是 代理模式?代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:和 其他模式 的 比较:示例代码部分总结:相关链接:...原创 2020-11-08 19:31:12 · 314 阅读 · 0 评论 -
享元模式(Flyweight Design Pattern)及代码实现
什么是 享元模式?代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:示例代码部分总结:相关链接:原创 2020-11-08 15:48:21 · 197 阅读 · 0 评论 -
外观模式(Facade Design Pattern)及代码实现
什么是 外观模式?对客户端 隐藏 复杂系统的内部交互沟通逻辑,只提供简单的 几个接口 供客户端使用,通过这几个接口 实现 复杂系统内部的交互过程; 客户端 不必考虑 系统内部实现逻辑; 即 在已有复杂系统之上实现的一个抽象层;相当于 提供了 一个 访问复杂系统的快捷方式生活中的例子:电脑开机;提供给用户一个 开机按钮即可; 内部 复杂的开机程序启动流程(从cpu,内存,硬盘各个模块进行依次加载等等) 用户不必考虑(对用户隐藏); 用户 网上购物下单; 用户只需点击按钮,并付款; 此..原创 2020-11-04 20:25:46 · 417 阅读 · 0 评论 -
装饰器器模式(Decorator Design Pattern)及代码实现
什么是 装饰器模式?代码中的例子(何时该使用此模式):该模式关键的角色:该模式的主要优缺点如下:示例代码部分总结:相关链接:原创 2020-11-04 20:26:10 · 289 阅读 · 2 评论 -
适配器模式(Adapter Design Pattern)及代码实现
什么是 适配器模式?适配器模式(Adapter pattern)是一种结构型设计模式,帮助我们实现两个不兼容接口之间 的兼容。首先,解释一下不兼容接口的真正含义。如果我们希望把一个老组件用于一个新系统中, 或者把一个新组件用于一个老系统中,不对代码进行任何修改两者就能够通信的情况很少见。但 又并非总是能修改代码,或因为我们无法访问这些代码(例如,组件以外部库的方式提供),或 因为修改代码本身就不切实际。在这些情况下,我们可以编写一个额外的代码层,该代码层包含 让两个接口之间能够通信需要进行的所有修改。这原创 2020-11-02 18:57:45 · 372 阅读 · 0 评论 -
单例模式(Singleton Design Pattern)及代码实现
什么是 单例模式?顾名思义 单例模式 便是指 一个类在一个运行的程序中只能有一个实例;代码中的例子(何时该使用此模式):程序中 对 某个固定文件的多次读取,可以使用单例模式,这样减少程序IO时间 和 生成新对象的 内存资源占用, 相当于 缓存功能;单例模式 关键的角色:单例 角色: 能创建全局唯一一个实例的类该模式的主要优缺点如下:示例代码部分(多个实现方式)1.通过 metaclass方式实现# -*- coding: utf-8 -*-...原创 2020-11-01 21:07:54 · 457 阅读 · 0 评论 -
原型模式(Prototype Design Pattern)及代码实现
什么是 原型模式?原型模式 指 把一个通过类 示例化后的 对象作为 原型,对此原型 进行 复制,得到一个新的对象,这个新对象 和原型 的 属性等完全相同,并且 用户 可以在此新对象 基础上 进行改变(新增或修改属性);现实生活中的例子:1.克隆羊 多莉,对 原有 羊 进行克隆 后 得到一个 完全相同的 新对象(多莉);2.书籍的 不同版本; 在第一版书籍 出版后,发现一些问题, 需要出版第二版,这时 作者 不会从头开始 一页一页的 写书等等, 作者会在第一版的 进行克隆 生成 第二版..原创 2020-10-29 18:02:54 · 388 阅读 · 0 评论 -
建造者模式(Builder Design Pattern)及代码实现
什么是 建造者模式?建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造 过程可用于创建多个不同的表现;现实生活中的例子:我去电脑公司要一个定制版本的 电脑 [电脑公司 有一个主管(Director) 和 2个不太熟悉总体组装流程的电脑员工(ConcreteBuilder) ],电脑可以有 鼠标(游戏鼠标,普通鼠标),键盘(机械键盘,普通键盘),触控板,CPU,内存条(4G,8G等等) 等等 不同种类的硬件设备;当我 提供不同需求时,按照步骤定制出不同的电脑; 如 我想...原创 2020-10-27 22:16:04 · 386 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)及代码实现
什么是抽象工厂?抽象工厂模式 是在 工厂模式的基础上 对工厂进行抽象一层 ;属于 创建型模式;抽象工厂设计模式是抽象方法的一种泛化。概括来说,一个抽象工厂是(逻辑上的)一组工 厂方法,其中的每个工厂方法负责产生不同种类的对象;现实生活中的例子:汽车制造业应用了抽象工厂的思想。冲压不同汽车模型的部件(可以认为 是 车门工厂、车轮工厂、车篷工厂、挡泥工厂等)所使用的机件是相同的。机件装配起来的模型随时可配置,且易于改变。从下图 我们能看到汽车制造业抽象工厂的一个例子...原创 2020-10-26 20:02:06 · 868 阅读 · 0 评论 -
简单工厂模式(simple factory)及代码实现
简单工厂模式属于 创建型模式,是用来创建对象的模式,在创建对象时,客户端代码无需知道创建逻辑,只要知道传输什么参数即可实现简单工厂模式思路(按照如下代码示例 思考):我的业务需求有2个,分别为 计算买入手续费,卖出手续费,分析后发现获取 手续费费率 规则 相同,而且 都需要当日净值既然都是 手续费,且有相同部分,便可抽象出 一个 手续费基类,包含买入/卖出相同部分,计算手续费规则不同,则可 让子类实现;在客户端代码 需要计算 买入或卖出手续费 时,无需考虑 手续费相关类的实现细节,只..原创 2020-10-25 18:28:37 · 592 阅读 · 0 评论 -
python flask转发 requests response 的文件
# -*- coding: utf-8 -*-"""(C) rgcAll rights reservedcreate time '2020/8/19 17:31'Usage:"""import requestsfrom flask import make_responsefrom flask_restful import Resource@api.resource("/indexManage/dumpIndexInfo")class DumpIndexInfoControll.原创 2020-08-19 17:37:25 · 1042 阅读 · 0 评论 -
python requests转发flask.request里的文件
python requests转发flask.request里的文件# -*- coding: utf-8 -*-"""(C) Guangcai Ren <rgc@bvrft.com>All rights reservedcreate time '2020/8/11 18:08'Usage:需求:在flask服务中,需要对 上传文件的api进行转发,如下为 单个文件,多个文件 转发代码python==3.6flask==1.1.2requests==2.24.0.原创 2020-08-11 18:20:47 · 1025 阅读 · 0 评论 -
使用自动化脚本工具pyautogui在postman/接口文档 等实现参数名快速填写
痛点:一个接口十几个甚至几十个业务字段 使用postman进行测试,或者写接口文档时,在填写这些字段名时就要耗费很久并且很弱智的复制粘贴解决方法:使用 pyautogui工具 省去重复性工作平台:macbook pro 16-inch注意点:在使用windows时,快捷键 和 macos不同; 运行脚本时,输入法应该为英文 运行脚本时,尽量不要动 鼠标键盘 脚本中的 鼠标开始...原创 2020-04-28 17:45:11 · 392 阅读 · 0 评论 -
python functools update_wrapper,wraps使用
update_wrapper 使用此函数主要用在装饰器函数中,装饰器返回函数反射得到的是包装函数的函数定义而不是原始函数定义如下代码 整合update_wrapper源码 和 示例代码在一个文件中,方便查看;# -*- coding: utf-8 -*-"""(C) Guangcai Ren <rgc@bvrft.com>All rights reservedcr...原创 2020-03-30 22:31:50 · 962 阅读 · 0 评论 -
python functools.reduce 代替for循环
适当的使用reduce 能够代替for循环,让代码更优雅# -*- coding: utf-8 -*-"""(C) Guangcai Ren <rgc@bvrft.com>All rights reservedcreate time '2020/3/23 19:01'Module usage:一个迭代器(叫累加器容易引起误会,误认为只能累加),第一个和第二个进行操作...原创 2020-03-30 22:31:18 · 243 阅读 · 0 评论 -
python functools lru_cache 算法逻辑及使用示例
算法逻辑如下:网页链接为:算法链接相关用法:def lru_cache(maxsize=128, typed=False): """Least-recently-used cache decorator. If *maxsize* is set to None, the LRU features are disabled and the cache...原创 2020-03-30 22:31:03 · 317 阅读 · 0 评论 -
python functools partial,partialmethod使用
functools.partial使用偏函数(Partial function)是通过将一个函数的部分参数预先绑定为某些值,从而得到一个新的具有较少可变参数的函数"""functools.partial偏函数(Partial function)是通过将一个函数的部分参数预先绑定为某些值,从而得到一个新的具有较少可变参数的函数用法:1.在 asyncio add_done_call...原创 2020-03-30 22:30:29 · 1777 阅读 · 0 评论 -
python functools.cmp_to_key 相关使用
cmp_to_key 此功能函数的历史背景 及 演变过程不太理解 文档到底什么意思,查看相关文档,如下:使用示例:from functools import cmp_to_keypersons = [ { 'name': 'zhangsan', 'age': 20, 'grade': 98 }, {...原创 2020-03-30 22:29:59 · 1001 阅读 · 0 评论 -
python functools singledispatch
功能:解释1:把一个大函数,根据函数的第一个参数的不同类型,分成不同的小函数,从而减少 一个函数的代码量,写出更加高逼格的优雅代码;解释2:使用 @singledispatch 装饰的普通函数会变成泛函数(generic function),类似java重载机制注意事项:1.只能对函数的第一个参数起作用2.其他参数的默认值 在 根据第一个参数的类型分配到不同函数中后,其参数默认值可以不...原创 2020-03-30 22:29:15 · 222 阅读 · 0 评论 -
python 多进程+多线程,多进程+协程 代码示例
此方法 可以在 flask+gunicorn 设置的服务中使用,注意 开发时,使用命令行方式启动服务,不要使用Pycharm(会崩溃);多进程+多线程import timefrom concurrent.futures import ThreadPoolExecutor, as_completedfrom multiprocessing import Poolclass P...原创 2020-03-30 22:42:04 · 937 阅读 · 1 评论 -
前端js,后台python实现RSA非对称加密
先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密; # -*- encoding:utf-8 -*-import base64from Crypto import Randomfrom Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5from Crypto.PublicKey import RSA# 伪随机数生成器r...原创 2018-09-28 18:18:28 · 713 阅读 · 0 评论 -
python发送邮件
邮件发送系统大致流程为了更好的理解邮件发送功能的实现,要先了解邮件发送系统的大致流程。首先 电子邮件之间的相互发送接受就像 邮局邮件发送一样,从一个站点(邮件发送服务器)到目的地站点(邮件接收服务器),然后目的地站点处理收到的邮件,并发送给接受人。每个邮件服务器即担任发送也担任接受邮件,并且每个服务器地址,端口号,配置等也不同。其实发送邮件的流程就 两部:第一:写邮件写好发送方...原创 2018-01-01 19:57:43 · 341 阅读 · 0 评论 -
python中json.loads,dumps,jsonify使用
search_info = {'id':132,'user_role':3}print type(search_info) #输出 <type 'dict'>#转为string用dumpsprint type(json.dumps(search_info)) #输出 <type 'str'>#string转 dict用 loads()print ty...原创 2018-01-01 19:52:07 · 1561 阅读 · 0 评论