自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(297)
  • 资源 (6)
  • 收藏
  • 关注

原创 安装好Ubuntu18.04之后要做的事!!大全、详细教程!

安装Ubuntu18.04之后的要做的事:1、更新源,使用软件更新器选择中国的服务器aliyun即可自动更新缓存,已经各种软件之后每天更新, shell更新:sudo apt update sudo apt upgrade2、安装vim、wget、curlsudo apt install vim配置十字光标:用户目录下 vim .vimrc...

2018-08-18 15:06:19 93257 13

原创 Python 利用飞桨OCR、layoutparser、TensorFlow对票据进行表格检测和识别

draft-detect运行环境:Windows10 系统 6核6线程 16G内存基于 Python3.8 版本 vitualenv 虚拟环境1、安装依赖先创建虚拟环境,基于Python3.8,然后激活虚拟环境。安装 requirements 中的依赖项pip install -r requirements.txt安装版面分析的特定库,注意:只能安装这个库,其他版本的库会有问题pip install -U https://paddleocr.bj.bcebos.com/whl/layo

2022-05-03 16:18:28 5016 7

原创 飞桨OCR打标、训练、预测、部署全流程

注:本文档全部在Windows10环境下操作注:本文档使用的飞桨OCR全景项目代码版本为 release/2.4查询文档列表:飞桨OCR官方中文文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/README_ch.md飞桨OCR for pdserving 部署官方文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.4/deploy/pdserving/REA

2022-02-15 09:51:53 26438 5

原创 Python 使用 Web3.py 进行 ETH 和代币转账

Python使用Web3

2022-01-31 20:26:33 23815 5

原创 Python 处理人民币金额,大小写互转

在工作中经常可以遇到人民币金额大小写的转换问题,这里是以 Python3 实现的人民币大小写转换的脚本,实测可用,准确无误,最大支持16位以内的金额大小写转换。脚本如下,可以在本地启动后输入小写金额进行验证:# handleCNY.pyclass ChangeCNY(object): NUM_DICT = { '0': '零', '1': '壹', '2': '贰', '3': '叁', '4': '肆',

2021-12-07 17:20:03 4532 2

原创 Django 使用不同配置文件的三种方式

1、背景简要开发过程中,环境分离是很常见的情况,一般都会分开发环境和生产环境。也有些分开发环境、日常环境、生产环境。当环境更多的时候,咱在写代码的时候当然不希望每次在上代码时再改配置,比较好的方法就是写多个配置文件,通过环境变量来决定使用哪个配置文件。Django 中默认是使用项目目录中的 settings.py 作为配置文件,接下来就按照开发、生产两套环境来探讨下,在 Django 中都有什么方式来动态使用配置文件。写在前面:本例的 Django 项目名称为 base_django_api 就是

2021-11-12 18:10:52 2156

原创 Python 通过pyautogui进行自动化操作,截图定位

import pytestimport pyautoguiimport osimport timeimport allurefrom PIL import Imageimport cv2import aircv as acimport numpy as npif __name__ == "__main__": # pytest.main(['-s', r'D:\aeas\shendu_-ui_zidonghua\tests\test_zaoshang\test_zaoshang

2021-10-24 21:40:54 1829

原创 Python 对称加密ECB简单实现

利用pycrypto中的方法来实现简单的ECB对称加密具体代码如下from base64 import b64decodefrom base64 import b64encodefrom Crypto.Cipher import AES # pip install pycrypto==2.6.1import timeclass ECBCipher(object): ''' 定义一个基于AES的ECB模式的加解密类 ''' def __init__(self,

2021-10-24 21:34:18 1110

原创 数据分析时利用 Python3 生成大量数据集CSV的通用脚本

在做数据分析时可能会需要很多数据来做测试,但数据并不是每次都能找到合适的,所以可以通过一些方法生成一些数据来做计算,可以根据自己的需求来生成需要的数据。实现方式就是利用多进程多线程来并发的生成数据,主要用于生成大量数据集的数据CSV文件主要代码如下:# create_data_util.pyimport timeimport randomfrom multiprocessing import Process, Manager, Poolfrom threading import Thread

2021-01-31 22:45:40 1221

原创 使用 influxdb 包向 influxdb 数据库批量插入csv中的数据

1、安装相关的包pip install influxdb==5.3.1pip install pandas==1.1.32、具体代码先准备一个csv的数据文件 命名为test.csv脚本会将csv中的数据批量插入到influxdb数据库import csvfrom influxdb import InfluxDBClientimport osimport jsonimport timeimport datetimedef main(): # 连接influxdb数据库

2020-12-30 19:40:33 1257

原创 Python 使用xlwt xlrd 读写表格数据

1、安装相关包pip install xlrd xlwt2、使用xlwt写表格数据import xlwtdef main(): init_data1 = { "姓名": ['张三', '李四', '王五', '王二'], "年龄": [23, 22,12,43], } book = xlwt.Workbook(encoding="utf-8",style_compression=0) sheet1 = book.add_she

2020-11-29 16:55:04 739

原创 总结:Python 轻量级序列化和反序列化包 marshmallow 详细使用指南

第一部分、marshmallow 基本的数据类型及基础属性介绍1、基础数据类型fields.String(*, default, missing, data_key, …) 字符串类型fields.UUID(*, default, missing, data_key, …) UUID字符串类型fields.Integer(*, strict, **kwargs) 整数类型fields.Decimal(places, rounding, *, allow_nan, …) 支持Python中的deci

2020-10-28 18:55:58 2944

原创 Python 基于Redis实现一个分布式读写锁

1、简述出现背景Python 基于redis实现一个简单的分布式锁Python 基于Redis实现一个分布式可重入锁在前面实现了简单分布式锁是用来解决分布式场景下的并发写数据问题,分布式可重入锁是用来解决并发场景下同一线程下再次或多次获得锁的问题。那么分布式读写锁又是解决什么问题的呢?首先来理解下概念,读写锁其实可以拆分为读锁和写锁,又称共享锁和排它锁,没错,和MySQL中的共享锁、排它锁几乎是同一个东西。那可能就有同学要问了,既然MySQL有,还用Redis实现干什么,因为Redis足够快。它

2020-09-01 15:45:40 1093

原创 Python 基于Redis实现一个分布式可重入锁

1、简述出现背景Python 基于redis实现一个简单的分布式锁前面实现了一个简单的分布式锁,它在某些场景下可以有效的处理并发写数据问题。但是如果我们在某个线程中需要二次或多次获得同一个锁,这个分布式锁就会出现死锁,一直等待第一个加锁逻辑结束后才能继续进行,并且会直接导致当前的业务逻辑的异常和超时。因此还需要实现一种分布式可重入锁,来应对这种场景。2、简述原理简述一下可重入锁实现原理:首先在加锁时,进行判断是否能获得锁,如果获得锁,那么此时维护一个计数器,并在获得锁时设置计数器值为0。然后如果是同

2020-09-01 15:20:00 509

原创 Tornado 实践:基于 Peewee、Marshmallow、Aioredis 实现用户登录注册接口

1、首先看下需要的目录结构auth_demo/├── apps│ ├── __init__.py│ └── public│ ├── handler.py│ ├── __init__.py│ ├── models.py│ ├── schemas.py│ ├── tests.py│ └── urls.py├── base│ ├── handler.py│ ├── __init__.py│ ├─

2020-08-31 22:08:42 788

原创 Tornado 实践:简介及初步使用Tornado

1、Tornado 是什么Tornado 是一个 Python Web 框架和异步网络库,最初由 FriendFeed 开发。 通过使用非阻塞网络 I/O,Tornado 可以扩展到成千上万的开放连接,非常适合长时间轮询,WebSocket 和需要与每个用户建立长期连接的其他应用程序。Tornado 出现的目的在于解决高并发场景下的稳定性和性能问题。Tornado 提供了一个 HttpServer,在 Tornado 6.x 版本中,使用了最新的异步 IO 库,使该服务器的性能大大提高。它使用非阻塞网络

2020-08-29 16:34:16 808

原创 Python 使用unittest进行接口测试

1、准备发起请求的类本例的目录结构如下tests/├── request_obj.py├── run_test.py└── test_public.py本例使用requests库封装一个请求的类来使用首先安装requests库pip install requests下面就来创建一个文件,命名为request_obj.py,输入一下内容:import requestsimport osimport jsonimport randomfrom io import BytesIO

2020-08-06 21:38:40 487

原创 Django 使用内置的单元测试

1、在你的app内的tests.py文件内添加测试用例代码本例的代码结构如下:由于我的app较多,也为了方便管理,我将app统一放在了apps目录下,想要达到这样的效果,只需在settings.py配置文件中增加以下代码...# Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file_

2020-08-03 22:02:11 419

原创 Python 实用的序列化和反序列化包marshmallow的使用指南

marshmallow是一个非常实用的序列化和反序列化框架,由于使用简单、功能丰富被很多开发人员使用,结合Flask或Tornado,可以很轻松使开发人员在开发RESTful风格的API。下面结合peewee的model来讲解marshmallow的使用假设有这样两个modelclass Group(BaseModel):group_type_choices = ((‘SuperAdmin’, ‘超级管理员’),(‘Admin’, ‘管理员’),(‘NormalUser’, ‘普通用户’),

2020-07-31 22:26:07 1145

原创 Python 轻量级ORM框架Peewee的使用指南

1、基础:初始化数据库:db = MySQLDatabase('database_name', user='www-data', charset='utf8mb4')创建model:class BaseModel(Model): class Meta: database = dbclass User(BaseModel): name = CharField(unique = True) age = IntegerField() sex = Cha

2020-07-29 20:39:42 3740

原创 Python3 元类编程

在Python中一切接对象,类也是一个对象,所有的类都是有type类创建,我们实际开发中最常用的type方法,是用来获取某个对象的类型的,例如type(1) ⇒ int 、type(‘str’) ⇒ str。但是type还有一种用法,就是用来创建类的。1、通过type动态创建无父类、无属性的类People = type('People', (), {})p = People()print(p)2、通过type动态创建有父类、无属性的类class Animal(object): nam

2020-06-30 21:47:06 293

原创 Python 基于Redis实现一个简单的分布式锁

# redis_lock.pyimport redisimport timeimport threading# 连接池方式pool = redis.ConnectionPool(host='127.0.0.1',port=6379)redis_con = redis.Redis(connection_pool=pool)class RedisLock(object): def __init__(self): self.redis_con = redis_con

2020-06-27 21:20:18 623

原创 Python 中装饰器加括号和不加括号的区别

在Python 中使用装饰器的时候,可能会碰到加括号装饰和不加括号装饰器的情况。那么这两种情况到底有什么区别呢?下面分为两种情况来说明第一种:必须不叫括号才能正常装饰的写法import time# 1、这种装饰不能携带括号,否则没法运行。因为@timer() 解释器在执行时会先执行 timer 函数,所以没法运行def timer(func): def test3(*args,**kwargs): print('查看是否携带参数:', args, kwargs)

2020-05-30 15:00:23 1398 1

原创 Python3 网络编程 socket 库使用TCP协议实现文件上传、进度条、大文件断点续传

1、基于socket库 TCP 协议实现普通小文件上传客户端代码:# tcp_small_file_client.pyimport socketimport osimport jsonclient = socket.socket()client.connect(('127.0.0.1', 9090))menu = {"1":"upload","2":"download","3":"exit"}for key,val in menu.items(): print(key, val

2020-05-30 14:59:35 1288 1

原创 Python 多线程死锁的示例

在 Python 中多线程中为了防止资源竞争而出现问题,提供了锁的机制,当一个线程操作资源时进行加锁,操作完毕后释放锁,这样其他线程就不会同时操作资源导出出现异常。在 Python 多线程中注意是两种锁:互斥锁和递归锁那么它们有什么区别呢?互斥锁:一旦一个线程获得一个互斥锁,会阻塞随后尝试获得锁的线程,直到它被释放;任何线程都可以释放它。递归锁:递归锁必须由获取它的线程释放。一旦线程获得了递归锁,同一个线程再次获取它将不阻塞;线程必须在每次获取它时释放一次。虽然锁可以防止程序出问题,但是使用锁

2020-05-25 21:07:24 458

原创 Django 使用定时任务的多种姿势对比

1、安装django-apschedulerpip install django-apscheduler2、配置settingsINSTALLED_APPS = ( ... "django_apscheduler",)3、迁移数据库因为django-apscheduler会创建表来存储定时任务的一些信息,所以将app加入之后需要迁移数据python manage.py migrate4、完整示例 在views.py中增加你的定时任务代码注意:如果在其他文件中添加代码是没有效果

2020-05-17 18:44:51 8560 3

原创 Python3 基于协程asyncio的消费者模式

注意本例运行在Linux环境下本例模拟一个生产者每2-4秒生成一个消息,然后有多个消费者消费这些消息。暂定每个消费者消费一个消息耗时10秒,这样可以使每个消费者都能消费消息import timeimport asyncioimport queueimport threadingimport uuidimport random'''基于协程的消费者模型,多个协程充当worker消...

2020-04-30 22:35:49 799

原创 Python3 基于线程、协程并发请求、大并发爬虫方法之一

from gevent import monkey; monkey.patch_all()import asyncioimport timeimport requestsimport aiohttpimport sysimport threadingimport geventimport queue'''基于协程的各种并发请求示例在运行程序时 传入指定的命令行参数来开启执行的...

2020-04-30 22:24:48 409

原创 Python3 使用多线程、协程并发请求的比较

1、安装相关的库pip install gevent requests aiohttp2、实际代码演示import asyncioimport timefrom gevent import monkey; monkey.patch_all()import requestsimport aiohttpimport sysimport threadingimport gevent...

2020-04-30 21:20:59 1829

原创 Python3.7 高级编程之 async/await asyncio 事件循环的使用

什么是事件循环:事件循环是每个 asyncio 应用的核心。 事件循环会运行异步任务和回调,执行网络 IO 操作,以及运行子进程。说简单点就是由于python是单线程的 程序在执行中会将所有任务放到队列中去逐一执行,当发现阻塞时就去执行其他任务,知道程序结束。应用开发者通常应当使用高层级的 asyncio 函数,例如 asyncio.run(),应当很少有必要引用循环对象或调用其方法。主要...

2020-04-29 22:39:16 1996

原创 Python3 浮点数精度问题

'''很多语言中都有浮点数数据精度的问题,Python中也是例如:0.1 + 0.2 应该等于0.3 但结果 事实上是 0.30000000004首先说原因: 1、小数转换成二进制的方法:将小数部分先乘以2,记录整数部分,然后将得到的结果的小数部分乘以2,记录整数部分,直到乘法得到的结果是整数1时停止。 实例:0.1的二进制计算方法如下 0.1*2=0.2 ...

2020-04-29 22:38:37 8294

原创 Django 中使用Celery实现异步任务

1、在settings.py 同级目录下,新增一个celery.py的文件需要注意的是:你的项目目录名要和配置一样例如我的项目目录名就是 base_django_api我的目录结构如下:# celery.pyfrom __future__ import absolute_import, unicode_literalsimport osfrom celery import Cele...

2020-03-31 21:58:35 2449 1

原创 深入理解计算机概念 进程、线程、协程

1、CPU、CPU内核:CPU:是中央处理器的简称,是计算机的运算和控制中心、是信息处理、程序运行的最终执行单元。CPU内核 是CPU内的核心芯片,内核是CPU的计算引擎,由单晶硅制成,用来完成所有的计算、接受/存储命令、处理数据等,是数字处理核心。核心(Die)又称为内核,是CPU最重要的组成部分。2、单核CPU、多核CPU、多CPU:单核CPU:就是系统只有一个CPU,内核只有一个。...

2020-03-31 21:30:09 368

原创 Vue 后台管理项目中使用keep-alive防止也没每次打开都重载,影响使用体验

1、修改AppMain.vue将 加载组件的地方,使用keep-alive包含起来......<keep-alive> <router-view/></keep-alive>......2、修改具体的业务代码假设有一个用户管理的页面,修改该页面里面的代码。在使用keep-alive 时created():不会在每次进入页面时执行,而是只执...

2020-03-31 21:28:24 1091

原创 大白话HTTP/HTTPS协议

1、计算机中什么是协议在计算机中要与其他设备进行通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种统一的规则。而我们就把这种规则称为协议(protocol)。2、什么是HTTPHTTP(HyperText Transfer Protocol ,超文本传输协...

2020-02-17 18:08:21 960

原创 Python 实现常见算法之二分法查找

什么是搜索搜索(又叫查找)是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找什么是二分法查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。# 二分法查找基于Python语言的实现'''二分查找: 二分查...

2020-02-11 15:11:56 1572

原创 Python 数据结构之二叉树的实现

1、基本概念二叉树 是一种简单的树形结构,是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树是一种递归结构。二叉树的基本概念空树:不包含任何节点的二叉树成为空树。只包含一个节点的二叉树称为一个单点树。父节点和子节点:一颗二叉树的根节点称为该数的子树根节点的父节点,与之对应的,子数的根节点称为二叉树树根节...

2020-02-09 16:43:02 798

原创 certbot以nginx方式为域名加https证书

ubuntu16.04 server下1、添加源sudo add-apt-repository ppa:certbot/certbot如果报命令 add-apt-repository 找不到,运行 sudo apt-get install -y software-properties-common python-software-properties 后再执行上述命令2、更新sudo...

2020-02-09 16:41:20 730

原创 Python 数据结构之哈希表的实现

哈希表(Hash table,也叫作散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈...

2020-02-06 16:24:22 4170

原创 Python 数据结构之队列的实现

队列 是一个抽象的数据结构,与堆栈有些相似。较对比于栈,队列打开两端。 一端总是用来插入数据(排队),另一个是用来删除数据(离队)。 队列使用先入先出的方法,即,第一存储的数据项先被访问。队列有两端,入口端和出口端,数据只能从入口进入队列。从出口离开队列。因此也被称为FIFO表示先进先出 后进后出。队列可以使用数组,链表,指针和结构来实现。双端队列(deque,全名double-ende...

2020-02-06 16:23:58 522

基于Linux的wps的必要字体

在Linux上使用wps,用它替换原本的libre是非常好的,但是字体问题很头疼,而且很多地方找不到字体文件,本文件就是解决wps的字体问题。

2018-08-18

django重写jwt、使用中间件输出日志、错误重定向等项目模版

本项目重写了原本的jwt认证模块,可以使用自己的模型来当做jwt内部的用户模型使用,使用这个之后会是的jwt认证变得更加简单有效。作为后端api、移动端的api是非常合适的。并且本项目使用了django中间件来做日志输入,错误定向等等。

2018-08-11

使用vue2.0技术开发的移动端app,解决了web开发者无法开发移动端的问题,这里是用了vue全家桶做示例,可以快速构建一个支持跨平台的app。

使用vue2.0技术开发的移动端app,解决了web开发者无法开发移动端的问题,这里是用了vue全家桶+museUI进行开发,内部模块化清晰,使用方便,已经解决了用户登录认证的问题,和h5端使用sdk进行定位的问题。可以快速构建一个支持跨平台的app。最后使用hbuilder打包,支持安卓和ios。

2018-08-05

django rest framework

该资源是对我发表博客 ‘django restful使用,完成高可定制的接口输出!rest framework设计典范’一文的代码补充。感兴趣的小伙伴可以了解一下。

2018-06-28

odoo10 删除seesion操作,不允许一个账号同时登录

这个工具是用来防止odoo10的用户同时登录多个,当一个用户在其他浏览器登录,则会删除其他浏览器上的用户。

2018-04-24

odoo打印凭证、报表等

基于odoo的打印报表功能,可以基于本模块研究更加深入的报表打印功能。

2018-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除