自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 记录 pycharm 无法识别提示导入已有的模块解决方案 No module named ‘xxx‘

pycharm应该是在创建虚拟环境的时候将本地的环境当做基本环境,然后在基本基础上创建配置的虚拟环境,在使用pycharm中可能因为什么原因把虚拟环境的提示识别目录搞掉了,所以在智能提示扫描的时候只能用本地基本环境,但是本地基本环境又没有安装对应的模块,所以就会出现写代码的时候没有智能提示,但是实际运行代码的时候又是正常的这一现象,只需要在pycharm中将当前虚拟环境目录添加上即可。

2025-02-19 14:51:40 602

原创 paddleocr 和 pytesseract 使用记录

paddleocr 和 pytesseract 都是常见的ocr模块,不同的是,paddleocr 是百度开源的一个ocr识别库, pytesseract 基于Tesseract OCR引擎封装的python ocr库,在基础使用过程中,发现 paddleocr 比 pytesseract 要慢,而且内存占用更大,在识别中会持续缓存内存,直到占用到某个大小后,后续识别的图片才不会占用内存。

2025-02-14 15:50:40 211

原创 记录使用python解析sql文件异步批量插入数据

使用python读取sql文件实现批量插入功能

2024-07-31 15:02:27 579

原创 Python多文件导入同一个模块出现多次重复导入记录

Python程序多文件导入同一模块重复导入

2023-12-25 15:28:25 939

原创 浏览器插件开发爬虫记录

浏览器插件开发记录,添加代理、新tab页面数据交互

2023-10-09 16:23:17 1846

原创 企业微信开发

记录企业微信开发流程

2023-07-24 18:10:34 1584

原创 python 支付宝营销活动现金红包开发接入流程-含接口调用加签

python 接入支付宝营销活动,发红包,调用支付宝接口加签使用记录

2023-03-02 18:54:56 1007

原创 ubuntu docker 安装rocketmq记录

记录ubuntu docker rocketmq搭建

2023-01-29 18:13:34 612

原创 es 简单使用记录

es 接口使用简单记录

2022-12-29 10:58:18 198

原创 nacos配置中心使用记录

nacos是一个分布式配置中心,可用它做配置管理、服务发现等,目前用到它的是配置中心的功能在日常的web开发中常常会用到一些配置,如数据库连接地址、端口、账号、密码,jwt密钥等配置,如果是直接写在config配置文件中的话,等项目启动后再想变更配置参数会很麻烦,而且如果服务多的话修改起来也麻烦,所有需要一个配置中心记录配置信息,各个服务都从配置中心中拉取配置参数,后端服务做个长轮训监听配置中心的配置消息,如果有变动则更新服务中的配置。

2022-12-16 11:29:35 653

原创 python api、grpc consul 服务注册发现使用记录

consul 是一个服务注册、服务发现平台,可以接受api 或grpc 服务连接, 具有健康检查功能,consul的作用是将多个相同服务的服务器ip+端口收集为一个服务进行关联。

2022-12-15 19:12:45 422

原创 kong网关使用记录

kong 是一个api网关,类似nginx的网关,一般用于api服务的管理kong 可以从consul中通过dns获取服务路由,可以自动实现负载均衡。

2022-12-15 15:44:27 880

原创 EL/FK 日志管理系统安装使用记录

elk efk 日志管理系统使用记录

2022-12-14 16:00:12 636

原创 python grpc 拦截器使用记录

grpc 拦截器(同步 异步)使用记录

2022-12-08 19:13:46 853

原创 python thread.local 和 ContextVar 使用

在python中我们想要针对多任务如 多线程,每一个任务调用期间保存一份属于任务特有的变量时可以使用thread.local 线程本地变量或上下文变量, thread.local是针对于多线程的,在多线程中共用一个全局变量,但是每个线程变量从这个全局变量中获取、设置的变量针对于本线程,通过thread.local 可以实现线程隔离。

2022-12-01 17:17:38 666 2

原创 理解python中的yield、yield在协程中的作用以及实现一个简单的事件循环

个人理解 python异步中的 Future 、task对象以及事件循环的执行流程

2022-06-29 17:21:32 482

原创 asyncio server protocol协议

在python asyncio 库中可以创建 server 和 connection, 想要使用 asyncio 创建 server服务器的话需要一个 protocol 协议对象处理请求服务, 在asyncio 中,server 底层是tcp server, 想要实现web server 就需要实现 protocol协议,用自定义的protocol 来处理解析请求数据protocol在asyncio中定义了server 请求进来的处理协议, 常用的有:# 创建http协议处理对想class Http

2022-02-14 16:22:00 544 1

原创 python grpc 异步调用使用记录

protobufsyntax = "proto3";option go_package = "./;proto";service StreamRpc{ rpc GetServerResult(Requests) returns (Reply); rpc GetServerStream(Requests) returns (stream Reply); rpc ClientSendStream(stream Requests) returns (Reply); rpc ServerCl

2022-01-04 17:59:25 1801 3

原创 grpc python使用记录

rpcRPC是远程过程调用(Remote Procedure Call)的缩写形式, 在python中, 有 基于 xml , json ,mq(zeromq) 的rpc 框架, 现在记录grpc 在 python中的使用grpcgrpc 是一个跨语言的通用rpc框架, 比 SimpleXMLRPCServer, jsonrpclib 性能要高, 比zerorpc 支持的语言多, grpc 传输协议用的是http2 , 序列化用的是protobuf, grpc中有一元调用,单向流式调用,双向流式调用这

2022-01-03 17:38:40 715

原创 python 多态 协议 鸭子类型

接口(python 中的协议)的多种不同的实现方式即为多态。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。from abc import ABCMeta, abstractmethod# 鸭子类class Dock(metaclass=ABCMeta): @abstractmethod def Swimming(self): # 游泳方法协议(接口) pass @abstractmethod # 走路协

2021-11-25 23:13:48 528

原创 微信公众号网页授权流程

在微信开发中,微信公众号可以配置自己的页面,当用户进入我们的公众号跳转进入我们第三方页面的时候,需要一个用户标记,也就是微信授权用户信息给我们,我们可以拿到用户的 open_id 对用户进行标记流程1 用户点跳转页面(跳转url在微信开放平台中配置, 如: https://www.baidu.com/index.html)用户跳转的时候是什么都没有携带的,页面加载完成后会触发js事件, 这时候 index.html 中js 会有相应的判断, 如果 url中什么没有code参数,就代表这个用户是刚跳转进

2021-09-03 14:35:09 1114

原创 svn 切换服务器ip

起因: 机房外网ip 出问题了,外网连接svp服务器连不上了, 所以要用内网ip来连, 切换新的svn服务器1 先删除已经存在的svn地址2 重新设置新的svn 地址和账号:已有的项目切换svn地址操作步骤:1 进入svn操作选项界面2 重新定位3 切换新svn地址...

2021-07-29 10:57:24 691 2

原创 async futrue 和 concurrent.futures 区别

asyncio future 和 concurrent.futuresasyncio future 是协程实现的异步方式, concurrent.futures 是通过线程池或进程池实现的异步两个future 是不一样的, 但是,asyncio 可以将 concurrent.futures 线程池或进程池实现的异步转换为协程方式的异步, 用await 的方式 等待 concurrent.futures 调用结束, 这种一般适应于 未支持异步协程库的方法调用上,异步任务中需要异步io操作,但是 没有对

2021-07-22 15:14:01 453

原创 asyncio future 和 task

asyncio future 和 taskfuture 是一个协程等待对象, task 任务等待是基于这个等待对象的,task 对象继承future,await 开启 future 对象后 当前协程会陷入等待,执行权会让出去, 当给future对象 set_result赋值后 future才会被唤醒,task 对象继承了 future对象, 遇到io堵塞的时候就将执行权让出去,当io结束,系统给set_result 赋值的时候,task对象就被唤醒, task是基于future 上的,可以通过io

2021-07-22 15:13:29 385

原创 async 异步

什么是协程, 为什么要用协程协程是用户态的线程,是实现多任务的一种方式,为什么不用多线程实现多任务而是用协程呢? 因为协程的切换是在代码中逻辑切换的, 协程任务的切换不需要到cpu内核中进行切换, 因此,协程的切换要比线程快,资源消耗要比线程小,在web开发中大都是io任务,python中的多线程有GIL锁,实际上也是单线程,无法真正利用cpu多核并行,况且, web 开发大都是 io堵塞等待, 多线程争抢到gil锁大多时间都耗费在io等待上异步是基于事件轮询的多任务, 遇到io堵塞的时候会自动让出

2021-07-22 15:06:54 153

原创 js 异步个人理解

在js中是没有多线程这个概念的,js只能单线程,那js如何实现多任务呢?这就涉及到了异步单线程单线程中执行任务顺序是从上到下 一个一个的执行的, 任务执行完的时间是4个任务执行时间的总和,异步当使用异步后,js会创建一个类似异步队列的东西来存储异步任务,当执行到创建异步任务的时候js会将异步任务存放到异步任务队列中,然后跳过这个任务之间执行下一个任务,到同步任务执行到一定的时候js 会从异步任务队列中获取一个异步任务来进行执行,当异步任务执行到一定的时候,js会再将执行权去执行同步任务队列, 两

2021-03-14 17:25:24 105

原创 layui table 表格 多个操作按钮使用记录

在开发中有时候 table 表格的操作按钮是不固定的,可以有多个,三两个还好,如果操作的按钮过多的时候就不美观了,这时候我们就想把一下按钮添加到一个按钮列表中,在正常的情况下就隐藏起来,点击的时候弹出这个按钮列表, 如: 我们想要实现这种效果当我们点击更多的时候弹出一个按钮列表, 这时候...

2021-01-30 18:23:22 1912 5

原创 oracle update or insert 字段数据量过长

在开发中遇到了一个问题,就是我需要插入 或更新一条数据,如:update blog set content='11111111111111111...' where id = 1这时候这个content数据长度是很大的,可以是几千上万个字符, 这时候执行这个sql语句就会出问题,oracle sql ORA-01704: string literal too longoracle 数据oracle 的sql 解析器无法直接处理怎么长的数据(mysql可以),这时候要怎么做才能更新或插入这个数据呢,

2021-01-09 20:07:23 1381

原创 oracle 数据库命令使用记录

之前都是使用mysql数据库的,现在由于新项目甲方有钱上了oracle,虽然说oracle mysql 都是 关系型数据库用的也是sql ,但还是有些不一样的统计总数在mysql查询数据并获取所有满足数据的总数量可以使用sql_calc_found_rows函数来进行查询,select sql_calc_found_rows * from test where name = '老王'正常来说这条sql 只能查询10条name = 老王的数据,但是,使用 sql_calc_found_rows后可以

2020-12-19 23:07:38 260 2

原创 python 创建虚拟环境使用记录

1 virtualenv可以使用 virtualenv 模块来创建虚拟环境,创建命令: virtualenv 虚拟环境名字进入虚拟环境命令 : soruse 虚拟环境名称/Script/activate退出命令: deactivate2 virtualenvwrapper这个是基于 virtualenv 进行封装的, 好处在于创建好虚拟环境后可以在任意位置 使用 work 就可以查看所有虚拟环境并且 使用work 也可以直接进入虚拟环境创建: mkvirtualenv 虚拟环境进入:wor

2020-11-16 09:42:51 174

原创 直播推流 ffmpeg 拉流二次转发 记录

因前两天老大给我发了个任务,说让我做一个flask 服务器接口,接收请求,在请求参数中获取 直播拉流地址和 推流地址,然后调用 ffmpeg 到拉流地址上进行拉流 将拉到的流媒体数据推到另一个直播服务器上,简单来说就是直播的二次转发过程什么鬼, 拉流是什么东西?推流又是什么?ffmpeg 又是个什么鬼?obs又是什么?啥是推流码?啊这但是看他说这很简单的,我也就十分配合的一边点头,一边复读:是是是, 好的,没问题回去后我百度了下obs ,哦,原来是一个流媒体采集软件啊,简单来说就是采集当前的屏

2020-11-14 21:14:25 5604

原创 权重随机抽奖, 拉马努金数

一 权重随机抽奖我的理解是 5权重概率是4权重概率的2倍,是3权重概率的4倍,那这不就是2的阶乘嘛思路:循环权重,生成对应的随机比例,然后将这个比例值添加到总随机数上进行随机import randomdata = {1: 1, 2: 2, 3: 2, 4: 3, 5: 5, 6: 7, 7: 7, 8: 8}def prize(max, user): # 生成id字典,记录随机次数 record_user = {i: 0 for i in user} # 循环一百万

2020-11-01 20:02:20 344

原创 字符串对比

好久没更(水)博客了,今天有空了来更(水)一下一按照我的理解就是 判断两个字符串是否99% 相似,两个字符串只能有一个字符的不同1.1逐个匹配我第一想法是逐个字符进行匹配,然后记录两个字符的不同字符数,然后进行判断, 如:def no_equal(str1, str2): nums = 0 # 记录不同字符列表 ls_list = [] # 以str1为主进行匹配,所有str1为最长的那个字符串 if len(str1) < len(str2):

2020-10-31 20:29:48 399

原创 docker mysql8.0 主从复制

先下载docker 镜像docker pull mysql下载mysql最新镜像docker run -it --rm mysql /bin/bash运行mysql镜像docker cp 运行起来的容器名: /etc/mysql/my.cnf ./将运行起来的mysql容器中的my.cnf 文件复制到当前目录下docker stop 容器id暂停容器运行,因为在运行镜像的时候写了 --rm 使用暂停容器时 会自动销毁容器,回收内存空间创建两个目录,master slave 分别是主机和从机的数据存

2020-10-10 10:11:50 142

原创 docker 创建redis 集群1

sh 脚本批量创建容器#!/bin/bash # 创建3个主容器for((i=1;i<=3;i++));dodocker run -itd --name rdm$i -v /data/redis/redis_master$i/redis.conf:/etc/redis.conf -v /data/redis/redis_master$i/data:/data -p 700$i:6379 redis redis-server /etc/redis.confdone# 创建3

2020-09-24 17:27:28 253

原创 vue day2事件,属性

vue中是可以给事件进行绑定的, 如点击事件, 鼠标移入移出事件 可以给标签绑定事件,当触发事件时, 可以给事件对应得操作,如调用方法,简单的表达式操作等v-on:事件可以使用 v-on 来绑定事件, 如可以看到, 通过v-on:mouseover 给鼠标移入事件绑定了一个合适, 当检测到鼠标移入到button 按钮时会自动的触发也可以使用简约的写法 @mouseover="mouses"事件修饰符事件修饰符可以对dom事件细节进行控制, 如阻止浏览器的默认行为,如阻止超链接的跳转, 阻止浏览

2020-08-18 10:44:22 177

原创 vue day1 插值表达式 属性绑定

插值表达式:在vue中插值表达式和Python中的jinja2语法有点相似,, 都是 {{ 数据 }} 以大括号的形式来进行的<html lang="en"><head> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <meta charset="UTF-8"> <meta name="viewport" content

2020-08-18 08:24:33 553

原创 Celery 异步调用方法改动记录

Celery 是一个任务队列, 可以异步处理在4.0 版本后python使用celery 会出现种种错误, 这时候需要安装 eventlet模块pip install eventlet默认是celery -A task worker --loglevel=info启动celery4.0后启动celery:celery -A task worker --loglevel=info -P eventlet在work 装饰器上也要改动默认是:import timefrom celery i

2020-08-05 10:59:45 323

原创 Redis基本使用1

在redis 中有 5种数据类型string: 字符串hash: hash (个人理解是python中的dict)list: 列表set: 集合zset: 有序集合删除del keystringstring 字符串, 以key - value 进行存储,set name lowang set 设置一个键值对mset name laowang age 10 sex 男 mset 批量设置键值对mget name age sex

2020-07-27 19:48:19 108

原创 Python with,多继承

withwith 就是上下文协议,可以自动的帮你将上下文管理器资源关闭,如 用with open 打开了一个文件,后面你就不用手动的将它关闭,在with 中会自动的帮你关闭该资源在一个类中只要实现了 __enter__()和 __exit__()方法的类就是一个上下文管理器, 当使用with 这个实例对象的时候 会调用 __enter__()方法,这个方法打开文件,或连接数据库,如何返回该操作的对(打开文件的对象或连接数据库的对象) 当这个资源对象使用结束后,会自动调用 上下文管理器中的 __exi

2020-07-24 17:09:32 152

空空如也

空空如也

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

TA关注的人

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