- 博客(99)
- 收藏
- 关注
原创 基于阿里云效实现cicd记录
基于Docker Swarm的自动化CI/CD方案 本文介绍了一个基于Docker Swarm集群的CI/CD实现方案。系统架构包含manager节点运行中间件(MySQL/Redis),worker节点运行web服务。通过阿里云效流水线实现:1) 在Gitee代码仓库打tag时自动触发构建;2) 将web应用构建为Docker镜像并推送到阿里云镜像仓库;3) 在worker节点安装Runner实现自动部署;4) 使用docker stack deploy命令更新服务。方案中重点配置了全局部署模式和镜像版本
2025-10-31 18:31:49
883
原创 记录docker使用kong consul postgresql配置dns异常解决
docker 部署 postgresql、kong、consul,kong 使用postgresql数据库作为数据存储,使用consul 作为服务发现。
2025-08-12 15:40:50
3253
原创 docker 常见命令使用记录
本文介绍了Docker Swarm集群管理的核心操作。主要内容包括:1)集群创建与管理,包括初始化管理节点和工作节点加入;2)集群网络配置,重点说明overlay网络驱动的跨主机通信功能;3)集群配置管理,演示如何通过config实现全局配置文件分发;4)堆栈服务管理,包含服务部署、日志查看和问题排查技巧;5)辅助工具使用,如容器信息查看和宿主机进入容器网络空间的方法。文章提供了详细的命令示例和YAML配置片段,涵盖了Swarm集群从创建到运维的关键技术点。
2025-07-21 14:48:49
358
原创 Docker Swarm 集群使用记录
进行标明加入的节点ip地址,那么docker swarm node节点默认以当前eth0网卡中的ip地址加入到集群中,eth0 网卡下的ip默认是内网ip,所以才会导致如果是不同网段下的节点无法正常通信,如果当前集群是在内网中,每个服务器的eth0 网卡下的ip可以进行互联的话,那么则不需要使用。需要注意,如果用docker swarm 搭建的机器的服务器来源于不同网络的,比如每个服务器都是云服务器,并且云服务器之间都是只能通过公网ip进行通信的,那么node节点需要在加入服务器的时候使用。
2025-07-18 18:43:46
533
原创 docker 容器无法使用dns解析域名异常问题排查
本文介绍了容器内DNS解析失败的排查方法。当容器无法解析域名时,可以通过nsenter命令进入容器网络空间进行调试。若发现请求127.0.0.53而非127.0.0.11的问题,需修改宿主机DNS配置:禁用systemd-resolved服务、重建resolv.conf文件并重启Docker。若出现hostname解析错误提示,还需在/etc/hosts中添加主机名记录。最后重新进入容器网络空间验证DNS解析是否恢复正常。该方法解决了容器因DNS配置问题导致的域名解析失败情况。
2025-07-17 18:48:40
994
原创 记录使用appium 2.0进行自动化总结
本文介绍了三种Appium自动化测试中的手机点击操作方法:1)通过XPath定位元素,带有重试机制确保点击成功;2)通过屏幕坐标直接点击,适合已知精确位置的情况;3)通过图像识别定位点击,适用于无法获取XML结构的特殊场景。文章还提供了自动获取并管理Appium驱动的完整代码,包括端口分配、进程管理和自动化连接功能,帮助开发者快速搭建Android自动化测试环境。这些方法涵盖了不同场景下的点击需求,并考虑了加载延迟等实际问题。
2025-06-18 10:51:33
363
原创 记录 pycharm 无法识别提示导入已有的模块解决方案 No module named ‘xxx‘
pycharm应该是在创建虚拟环境的时候将本地的环境当做基本环境,然后在基本基础上创建配置的虚拟环境,在使用pycharm中可能因为什么原因把虚拟环境的提示识别目录搞掉了,所以在智能提示扫描的时候只能用本地基本环境,但是本地基本环境又没有安装对应的模块,所以就会出现写代码的时候没有智能提示,但是实际运行代码的时候又是正常的这一现象,只需要在pycharm中将当前虚拟环境目录添加上即可。
2025-02-19 14:51:40
965
2
原创 paddleocr 和 pytesseract 使用记录
paddleocr 和 pytesseract 都是常见的ocr模块,不同的是,paddleocr 是百度开源的一个ocr识别库, pytesseract 基于Tesseract OCR引擎封装的python ocr库,在基础使用过程中,发现 paddleocr 比 pytesseract 要慢,而且内存占用更大,在识别中会持续缓存内存,直到占用到某个大小后,后续识别的图片才不会占用内存。
2025-02-14 15:50:40
464
原创 nacos配置中心使用记录
nacos是一个分布式配置中心,可用它做配置管理、服务发现等,目前用到它的是配置中心的功能在日常的web开发中常常会用到一些配置,如数据库连接地址、端口、账号、密码,jwt密钥等配置,如果是直接写在config配置文件中的话,等项目启动后再想变更配置参数会很麻烦,而且如果服务多的话修改起来也麻烦,所有需要一个配置中心记录配置信息,各个服务都从配置中心中拉取配置参数,后端服务做个长轮训监听配置中心的配置消息,如果有变动则更新服务中的配置。
2022-12-16 11:29:35
708
原创 python api、grpc consul 服务注册发现使用记录
consul 是一个服务注册、服务发现平台,可以接受api 或grpc 服务连接, 具有健康检查功能,consul的作用是将多个相同服务的服务器ip+端口收集为一个服务进行关联。
2022-12-15 19:12:45
541
原创 kong网关使用记录
kong 是一个api网关,类似nginx的网关,一般用于api服务的管理kong 可以从consul中通过dns获取服务路由,可以自动实现负载均衡。
2022-12-15 15:44:27
994
原创 python thread.local 和 ContextVar 使用
在python中我们想要针对多任务如 多线程,每一个任务调用期间保存一份属于任务特有的变量时可以使用thread.local 线程本地变量或上下文变量, thread.local是针对于多线程的,在多线程中共用一个全局变量,但是每个线程变量从这个全局变量中获取、设置的变量针对于本线程,通过thread.local 可以实现线程隔离。
2022-12-01 17:17:38
893
2
原创 理解python中的yield、yield在协程中的作用以及实现一个简单的事件循环
个人理解 python异步中的 Future 、task对象以及事件循环的执行流程
2022-06-29 17:21:32
537
原创 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
636
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
1961
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
786
原创 python 多态 协议 鸭子类型
接口(python 中的协议)的多种不同的实现方式即为多态。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。from abc import ABCMeta, abstractmethod# 鸭子类class Dock(metaclass=ABCMeta): @abstractmethod def Swimming(self): # 游泳方法协议(接口) pass @abstractmethod # 走路协
2021-11-25 23:13:48
558
原创 微信公众号网页授权流程
在微信开发中,微信公众号可以配置自己的页面,当用户进入我们的公众号跳转进入我们第三方页面的时候,需要一个用户标记,也就是微信授权用户信息给我们,我们可以拿到用户的 open_id 对用户进行标记流程1 用户点跳转页面(跳转url在微信开放平台中配置, 如: https://www.baidu.com/index.html)用户跳转的时候是什么都没有携带的,页面加载完成后会触发js事件, 这时候 index.html 中js 会有相应的判断, 如果 url中什么没有code参数,就代表这个用户是刚跳转进
2021-09-03 14:35:09
1309
原创 svn 切换服务器ip
起因: 机房外网ip 出问题了,外网连接svp服务器连不上了, 所以要用内网ip来连, 切换新的svn服务器1 先删除已经存在的svn地址2 重新设置新的svn 地址和账号:已有的项目切换svn地址操作步骤:1 进入svn操作选项界面2 重新定位3 切换新svn地址...
2021-07-29 10:57:24
807
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
548
原创 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
436
原创 async 异步
什么是协程, 为什么要用协程协程是用户态的线程,是实现多任务的一种方式,为什么不用多线程实现多任务而是用协程呢? 因为协程的切换是在代码中逻辑切换的, 协程任务的切换不需要到cpu内核中进行切换, 因此,协程的切换要比线程快,资源消耗要比线程小,在web开发中大都是io任务,python中的多线程有GIL锁,实际上也是单线程,无法真正利用cpu多核并行,况且, web 开发大都是 io堵塞等待, 多线程争抢到gil锁大多时间都耗费在io等待上异步是基于事件轮询的多任务, 遇到io堵塞的时候会自动让出
2021-07-22 15:06:54
184
原创 js 异步个人理解
在js中是没有多线程这个概念的,js只能单线程,那js如何实现多任务呢?这就涉及到了异步单线程单线程中执行任务顺序是从上到下 一个一个的执行的, 任务执行完的时间是4个任务执行时间的总和,异步当使用异步后,js会创建一个类似异步队列的东西来存储异步任务,当执行到创建异步任务的时候js会将异步任务存放到异步任务队列中,然后跳过这个任务之间执行下一个任务,到同步任务执行到一定的时候js 会从异步任务队列中获取一个异步任务来进行执行,当异步任务执行到一定的时候,js会再将执行权去执行同步任务队列, 两
2021-03-14 17:25:24
132
原创 layui table 表格 多个操作按钮使用记录
在开发中有时候 table 表格的操作按钮是不固定的,可以有多个,三两个还好,如果操作的按钮过多的时候就不美观了,这时候我们就想把一下按钮添加到一个按钮列表中,在正常的情况下就隐藏起来,点击的时候弹出这个按钮列表, 如: 我们想要实现这种效果当我们点击更多的时候弹出一个按钮列表, 这时候...
2021-01-30 18:23:22
2034
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
1512
原创 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
307
2
原创 python 创建虚拟环境使用记录
1 virtualenv可以使用 virtualenv 模块来创建虚拟环境,创建命令: virtualenv 虚拟环境名字进入虚拟环境命令 : soruse 虚拟环境名称/Script/activate退出命令: deactivate2 virtualenvwrapper这个是基于 virtualenv 进行封装的, 好处在于创建好虚拟环境后可以在任意位置 使用 work 就可以查看所有虚拟环境并且 使用work 也可以直接进入虚拟环境创建: mkvirtualenv 虚拟环境进入:wor
2020-11-16 09:42:51
210
原创 直播推流 ffmpeg 拉流二次转发 记录
因前两天老大给我发了个任务,说让我做一个flask 服务器接口,接收请求,在请求参数中获取 直播拉流地址和 推流地址,然后调用 ffmpeg 到拉流地址上进行拉流 将拉到的流媒体数据推到另一个直播服务器上,简单来说就是直播的二次转发过程什么鬼, 拉流是什么东西?推流又是什么?ffmpeg 又是个什么鬼?obs又是什么?啥是推流码?啊这但是看他说这很简单的,我也就十分配合的一边点头,一边复读:是是是, 好的,没问题回去后我百度了下obs ,哦,原来是一个流媒体采集软件啊,简单来说就是采集当前的屏
2020-11-14 21:14:25
5968
原创 权重随机抽奖, 拉马努金数
一 权重随机抽奖我的理解是 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
407
原创 字符串对比
好久没更(水)博客了,今天有空了来更(水)一下一按照我的理解就是 判断两个字符串是否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
471
原创 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
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅