- 博客(164)
- 收藏
- 关注
原创 【学习篇】异步任务处理框架celery学习
Celery是一个基于Python的分布式任务队列框架,主要用于异步任务处理和定时任务调度。它由消息中间件(Broker)、任务执行单元(Worker)和结果Backend三部分组成,支持与RabbitMQ、Redis等集成。Celery常用于耗时操作(如邮件发送、图像处理)影响着程序响应速度的场景,以及需要分布式任务涌动的应用。通过简单的代码示例展示了如何创建Celery异步任务,并使用Flower工具进行任务执行监控。
2025-10-12 10:10:21
341
原创 【学习篇】什么是分布式系统
摘要: 分布式系统通过多台计算机协同工作,突破单机性能、存储和可用性限制,对外提供统一服务。其核心特征包括多节点协同、资源共享、无全局时钟和故障独立性,常见架构有客户端-服务器、微服务、分布式存储/计算等。主要挑战源于网络不可靠(延迟、分区)与节点故障,需解决数据一致性、容错和负载均衡问题,采用Raft、副本机制等技术实现高可用。典型技术栈涵盖gRPC、Kafka、Kubernetes等,适用于高并发、海量数据场景。本质是以多节点网络协作扩展系统能力。
2025-10-09 21:57:57
494
原创 【学习篇】redis发布订阅模式
Redis 发布订阅(Pub/Sub)是一种轻量级消息广播机制,通过频道实现一对多实时通信。核心原理是:发布者通过 PUBLISH 向频道发送消息,Redis 服务器根据订阅关系表(频道-客户端映射)将消息推送给所有订阅者。订阅者通过 SUBSCRIBE 阻塞监听频道,支持通配符模式订阅。特性包括无消息持久化、实时推送、订阅关系随连接断开消失。适用于实时通知、日志广播等场景,但不保证消息可靠投递。相比消息队列(如 Kafka),Redis Pub/Sub 更轻量但功能有限,适合允许消息丢失的高实时性需求。
2025-10-09 21:52:59
914
原创 【学习篇】Redis 分布式锁
Redis分布式锁是解决分布式系统并发资源竞争的常用方案,通过SET NX EX命令加锁和Lua脚本解锁实现互斥访问。核心要求包括互斥性、安全性、死锁避免、高可用和性能。基础实现使用原子操作设置锁和过期时间,进阶方案如Redlock算法解决集群高可用问题。常见问题包括锁超时、误删锁和主从切换锁丢失,可通过锁续期、Lua验证和Redlock解决。生产推荐使用Redisson等成熟客户端,避免重复造轮子。最佳实践包括合理设置锁key、唯一标识和优先使用客户端库。
2025-10-09 21:47:51
1503
原创 在Python中加载.pkl文件
本文介绍了Python中加载.pkl文件的几种方法。主要使用pickle模块,包括基本加载方式、处理大文件的方法,以及兼容性处理和替代方案(joblib)。文章还提供了完整示例展示.pkl文件的保存和加载流程,并提醒了安全性注意事项,建议不要加载不可信来源的.pkl文件。
2025-10-09 21:39:22
338
原创 windows如何设置mongodb的副本集
本文详细介绍了在Windows环境下配置MongoDB副本集的完整流程。主要内容包括:1)准备工作,创建数据目录和日志目录;2)启动三个MongoDB实例并初始化副本集;3)可选设置Windows服务实现自动启动;4)功能验证和常见问题解决方法;5)提供Python和Node.js连接代码示例。文章特别强调了副本集配置的关键参数和注意事项,如端口设置、数据目录权限、防火墙配置等,并针对Windows环境提供了服务注册方案。通过本指南,用户可以快速搭建一个可靠的单机模拟MongoDB副本集环境。
2025-10-09 21:27:46
949
原创 MongoDB 集合更新后通过 Socket.IO 自动推送数据到前端 (FastAPI 实现)
本文介绍了如何使用 FastAPI 和 Socket.IO 实现 MongoDB 数据变更实时推送功能。主要内容包括: 后端实现: 使用 FastAPI 搭建 Web 服务 配置 MongoDB 变更流(Change Streams)监听数据变化 集成 Socket.IO 实现实时通信 启动时自动运行监听任务 前端实现: 通过 Socket.IO 客户端监听后端推送 实时显示两个集合的数据变更
2025-10-09 21:14:40
1125
原创 遇到RabbitMQ 的 `channel_max` 限制报错
RabbitMQ连接达到通道数上限(2047)的解决方案 摘要:当RabbitMQ客户端创建的通道数达到服务器设置的channel_max(默认2047)时,会抛出ConnectionNotAllowed错误。问题根源在于通道未被正确关闭而持续累积。正确的做法是:1)每个操作使用新通道;2)操作完成后必须关闭通道;3)仅复用连接而非通道。
2025-10-09 20:56:01
401
原创 只有通过Motor 获取 mongodb的collection,才能正常使用 async with collection.watch()监听集合变更
要正确使用 async with collection.watch(),必须通过 Motor 异步驱动获取 MongoDB 集合对象。核心步骤: 安装 Motor 驱动:pip install motor 创建异步客户端:AsyncIOMotorClient 获取数据库和集合对象:client[db_name][collection_name] 最终得到的 AsyncIOMotorCollection 实例才能用于变更监听 关键要点: MongoDB 必须运行在副本集模式 连接字符串需包含副本集名称 必须使
2025-10-09 20:42:29
228
原创 【工具推荐】Apifox Helper 是 Apifox 团队针对 IntelliJ IDEA 所推出的插件
Apifox Helper插件现已上线,支持IDEA开发环境,提供API文档同步、调试等功能。通过该插件可快速生成API文档,提升开发效率。下载链接:插件官网。插件界面简洁直观,支持多种API操作,满足开发需求。
2025-08-16 11:14:42
265
原创 【概念学习】深度学习有何不同
通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特征都会相应地自动调节适应,无须人为干预。这种方法比贪婪地叠加浅层模型更加强大,因为它可以通过将复杂】抽象地表示拆解为很多个中间空间(层)来学习这些表示,每个中间空间仅仅是前一个空间的简单变换。先前的机器学习技术(浅层学习)仅包含将输入数据变换到一两个连续的表示空间,通常使用简单的变换,比如高维非线性投影(SVM)或决策树。这极大地简化了机器学习工作流程,通常将复杂的多阶段流程替换为一个简单的、端到端的深度学习模型。
2025-08-06 21:28:50
232
原创 【概念学习】早期神经网络
摘要:反向传播算法是优化参数化运算链的关键技术,1989年Yann LeCun将其与卷积神经网络结合,开发出LeNet用于手写数字识别。核方法(如SVM)通过高维映射和间隔最大化寻找决策边界,但依赖人工核函数且难以扩展。决策树及其集成方法(随机森林、梯度提升机)通过组合弱模型提升性能,其中梯度提升机通常优于随机森林,适用于各类浅层学习任务。这些方法各有优劣,适用于不同场景。
2025-08-06 20:18:28
476
原创 【概念学习】什么是深度学习
机器学习的概念来自于图灵的这个问题:对于计算机而言,除了“我们命令它做的任何事情”之外,它能否自我学习执行特定任务的方法?这就是机器学习的技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是规则。在相当长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新的方法,强调从连续的。
2025-08-06 19:24:42
845
原创 【学习篇】SQL复杂查询学习
摘要: 本文探讨MySQL千万级大表的优化策略,重点围绕复杂查询与性能调优展开。首先解析SQL执行顺序和表关系(多对多、一对多、一对一),介绍子查询和JOIN操作的原理与应用场景。进阶部分涵盖分组聚合、窗口函数等高级查询技术。性能优化方面强调索引设计(B树/哈希索引)、字段数据类型选择和视图的使用,避免全表扫描。文章还指出不合理的索引可能导致存储开销增加,建议根据实际查询需求和数据特性平衡索引策略。通过合理的表结构设计、查询优化技巧和资源管理,可显著提升大规模数据处理的效率。
2025-07-06 20:17:05
1655
原创 MySQL补充知识点学习
MySQL数据库关键知识点摘要:1. 游标(Cursor)用于逐行处理查询结果,适合复杂业务逻辑和大量数据处理,但性能开销较大。2. 事务(Transaction)具有ACID特性(原子性、一致性、隔离性、持久性),包含提交和回滚操作,默认自动提交。3. 表设计原则包括使用自增主键、优化二进制字段存储、保存资源地址而非内容本身、添加完整注释等。4. 软删除(Soft Delete)采用标记删除而非物理删除,便于数据恢复和审计追踪,通常通过添加is_deleted或deleted_at字段实现。
2025-06-04 23:07:13
2442
原创 MySQL关系型数据库学习
MySQL是一款开源的关系型数据库管理系统,采用表结构存储数据,支持标准SQL语言。学习要点包括:1)安装配置MySQL服务端;2)用户权限管理,通过GRANT命令分配表级权限;3)配置文件/etc/my.cnf的核心参数设置;4)数据类型与表结构设计;5)连接方式(命令行/图形工具如Workbench);6)Python操作MySQL(pymysql库)及ORM框架应用;7)防范SQL注入的关键措施(参数化查询/输入验证)。文档提供了Windows安装指南和Python代码示例。
2025-06-03 23:05:15
1274
1
原创 MongoDB数据库学习
MongoDB作为分布式文档数据库,采用BSON格式存储键值对数据,集合相当于关系型数据库的表。初级学习需掌握基本概念、使用Compass图形工具/Python(PyMongo)连接数据库,创建数据库时需注意集合和文档的创建机制。中级内容涵盖模式设计(如分桶模式、树形模式)、副本集搭建(主从节点切换与数据同步)以及分片技术(数据拆分与集群管理)。分片适用于扩展RAM/磁盘空间、降低单机负载等场景。推荐结合MongoDB Atlas或Ops Manager简化运维。
2025-06-03 22:52:55
1236
原创 windows安装和部署docker
Docker是一种开源的容器化平台,支持将应用程序及其依赖打包成轻量级容器进行部署。本文介绍了Windows系统下Docker的安装方法:首先启用虚拟化功能,从官网下载Docker Desktop并完成安装(内置Docker Compose)。接着安装WSL2,通过PowerShell执行wsl --install命令部署Linux环境。安装完成后需重启系统,可使用wsl -v验证版本。文中还提供了卸载WSL发行版的方法及官方文档参考链接,包括Docker安装指南和WSL2官方安装说明。该教程适合开发者快速
2025-06-03 22:30:00
583
原创 串口通讯协议学习
见的串口硬件协议包括UART、RS-232、RS-485、RS-422、SPI和I²C,每种协议在通信方式、电平信号、拓扑结构和典型应用上有所不同。
2025-05-18 16:07:32
1433
原创 蓝牙通讯协议学习
传统蓝牙(RFCOMM)和低功耗蓝牙(BLE)在通信协议和使用方式上有显著差异。传统蓝牙模块(如HC-05)通过RFCOMM/SPP协议直接透传串口数据,无需UUID,而BLE模块(如HM-10)基于GATT协议,需通过服务UUID和特征UUID进行通信。传统蓝牙模块通常使用固定通道传输数据,而BLE模块则需要通过AT指令或扫描工具获取UUID。
2025-05-18 15:34:36
2052
原创 【每天学习一点点】使用Python的pathlib模块分割文件路径
Python的pathlib模块提供了一种面向对象的方式来处理文件系统路径,比传统的os.path更加直观和易用。通过pathlib,可以轻松地分割、合并和处理文件路径。例如,使用Path对象可以获取路径的父目录、文件名、后缀等信息,还可以处理多级路径、相对路径和多个后缀的文件。此外,pathlib还提供了检查路径属性的方法,如判断路径是否为文件或目录,以及路径是否存在。pathlib的这些功能使得路径操作更加直观和安全,特别是在跨平台开发时,它能自动处理不同操作系统的路径分隔符问题。
2025-05-08 22:18:22
464
原创 工具分享:通过滑块拉取CAN报文信号数值自动发送报文
CAN报文发送工具使用wxpython进行开发,配套Excel模板可以通过修改Excel自定义界面展示的信号名称和信号的属性;同时,工具支持导入现场采集的报文数据自动按照配套Excel模板定义的报文发送周期进行模拟发送。
2025-05-07 21:28:20
1120
原创 MinIo安装和使用操作说明(windows)
桶(Bucket):MinIO中存储对象的容器,类似于文件夹。将MinIo的服务端和客户端的.exe都下载好。对象存储:存储非结构化数据,如图片、视频等。
2025-05-07 14:51:32
1128
原创 使用PyQt5绘制水波浪形的柱状显示流量—学习QTimer+QPainterPath
进入学习Python开发上位机界面的第二阶段,学习如何开发自定义控件,从常用的控件入手学习,本期主要学习如何使用PyQt5绘制水波浪形的柱状显示流量。但是最后我放弃了,因为水波的效果达不到我想要的。
2025-04-05 11:22:46
762
原创 【学习篇】fastapi接口定义学习
假设您有一个自定义异常,您(或您使用的库)可能 .UnicornExceptionraise并且您希望使用 FastAPI 全局处理此异常。您可以使用以下命令添加自定义异常处理程序:@app.exception_handler()
2025-04-04 23:07:00
1399
原创 【学习篇】pandas进行数据清洗
Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。Pandas 提供了丰富的功能,包括:数据清洗:处理缺失数据、重复数据等。数据转换:改变数据的形状、结构或格式。数据分析:进行统计分析、聚合、分组等。数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。需要记住的示例,对自己理解pandas的数据结构有很大的帮助。
2025-04-01 11:00:04
459
原创 分享一个Pyside6实现web数据展示界面的效果图
然后,让我们来看下子DS直接给我实现的web界面效果吧。数据展示界面有点大,就只截图一小部分给你看看DS是多么的优秀(当然大家都知道DS的优秀)。后续我也会尝试DS推荐的“结合 FastAPI + React 前后端分离”方案,等方案落地了再和大家分享吧。
2025-03-29 22:46:37
531
原创 性能优化:python中的状态机
使用状态机可以优化包含大量`if-else`逻辑的Python代码,使其更简洁、可维护,并在某些情况下提升性能。
2025-03-22 22:39:18
690
原创 嵌入式基础知识学习:SPI通信协议是什么?
基本特性全双工同步通信:支持同时发送和接收数据,通过主设备提供的时钟(SCLK)实现精确时序同步。主从架构:一个主设备(Master)控制一个或多个从设备(Slave),通过片选信号(SS/CS)选择通信对象。四线制接口:包括SCLK(时钟)、MOSI(主发从收)、MISO(主收从发)、SS(片选)四根信号线,硬件连接简单。高速传输:无固定速率限制,实际应用中可达10 Mbps甚至更高。工作原理数据交换:主从设备通过移位寄存器实现数据交换,每个时钟周期传输1位数据,通常从最高位(MSB)开始。
2025-03-22 22:14:18
696
原创 嵌入式基础知识学习:UART是什么?
基本特性异步通信:无共享时钟线,依赖起始位和停止位标记数据边界,通过双方约定的波特率实现时序同步。全双工传输:支持同时发送(TX)和接收(RX)数据,使用独立引脚实现双向通信。简单硬件接口:仅需TX、RX和共地(GND)三根线,适合远距离、低成本场景。数据帧结构起始位:1位低电平(逻辑“0”),标志数据传输开始。数据位:5~9位(通常为8位),从最低有效位(LSB)开始传输。校验位(可选):奇偶校验位,用于检测数据错误(如偶校验、奇校验)。
2025-03-22 22:01:25
823
原创 从OSI七层网络模型角度了解CAN通信协议
CAN通信协议的网络架构基于OSI七层模型进行设计,但实际实现中根据其应用场景(如汽车电子、工业控制等)进行了简化和优化。通过分层架构,CAN实现了从底层电气特性到高层应用协议的完整生态,成为工业与汽车领域的主流通信方案。
2025-03-20 21:58:44
2095
原创 CAN通信转TCP/IP通信协议解析
最近项目开发受限于开发版只有一路CAN口和多个CAN通信对象的帧ID一样,考虑采用转换模块将CAN通信转成TCP/IP通信,间接实现获取CAN报文数据的目的。
2025-03-20 21:53:56
999
原创 Linux环境如何使用周立功的.so进行二次开发
重新编译.so除了controlcan.h 文件,还需要controlcan.c文件。controlcan.c文件是实际实现 controlcan.h 中声明的函数的代码。没有 controlcan.c,你无法生成真正的 .so 文件,因为 .so 文件需要包含这些函数的具体实现。test.c:使用了 controlcan.h 中定义的函数和数据结构,实现了具体的 CAN 通信逻辑,包含了设备的打开、初始化、数据发送和接收等功能。需要注意的是目前只有CANFD类型的才提供aarch64系统的驱动,
2025-03-05 20:22:02
1096
原创 VS Code使用Copilot (GitHub Copilot)插件自动按照注释生成代码
使用PyQt5实现自定义控件,控件的基本功能是用户设置流量数值,柱状图的水波能够到达相应的水平线。然后,按下Enter键等待1s内的时间,Copilot自动给你生成注释提示你这个自定义控件生成代码的步骤,按下Tab键接受这个建议。
2025-02-23 17:55:32
1890
1
原创 PyQt5中自定义控件的技巧
PyQt中提供了强大的2D绘图系统,可以使用相同的API在屏幕上和绘图设备上进行绘制,主要基于QPainter、QPainterDevice和QPainterEngine这3个类。QPainter一般在部件的绘图事件paintEvent()中进行绘制,首先创建QPainter对象,然后进行图形的绘制,最后记得销毁QPainter对象。QFont用于文本绘制,由字体属性组成。控件样式设置:在控件箱中选择的控件通常具有默认的样式和外观,开发者可以通过修改控件的样式表或者设置样式属性来自定义控件的外观。
2025-02-23 14:37:29
366
原创 PySide6中如何实现TableWidget全选后Ctrl+C自动复制表格内容(包含列标题和行标题)
使用PySide6进行工具开发,通过TableWidget选择某个单元格进行Ctrl+A全选再Ctrl+C复制后,打开excel选择某个sheet页签的某个单元格进行Ctrl+V,实现自动复制全表内容(包括列表头)。在复制单元格内容时,将换行符 (\n) 替换为特殊标记(例如 |||),以避免 Excel 将其解释为单元格内的换行。使用制表符 (\t) 分隔列,使用换行符 (\n) 分隔行,确保 Excel 能够正确解析。
2025-02-23 13:45:20
473
原创 PySide6中如何实现TableWidget跨行列粘贴Excel表格内容
在 PySide6 中,QTableWidget 默认不支持跨行或跨列粘贴内容。要实现跨行列粘贴功能,需要自定义粘贴逻辑。可以通过重写 QTableWidget 的 dropEvent 或 paste 方法来实现。使用PySide6进行工具开发,通过TableWidget实现跨行列粘贴Excel表格内容。列数是固定的(因为列标题是固定的),而只根据粘贴内容动态增加行数。如果粘贴的内容超出表格列范围,超出的部分会被忽略。
2025-02-22 22:21:06
316
通过滑块拉取CAN报文信号数值自动发送报文:https://blog.youkuaiyun.com/Logintern09/article/details/127106646?spm=1011.2415.3001
2025-05-05
集装箱空箱调运的文献综述
2025-05-05
博弈论凸博弈特性分析及行生成算法在合作博弈核心计算中的应用研究
2025-05-05
博弈理论演化博弈论在经济学中的应用:动态均衡与选择机制解析
2025-05-05
【演化博弈理论】基于演化博弈的班轮航线网络设计:任务分配与动态联盟策略分析
2025-05-05
文献研读:The coopetition game in international liner shipping
2023-05-14
智能电池信息界面的.ui文件-博客《使用PyQt5实现添加工具栏、增加SwitchButton控件》的.ui
2024-08-08
python实现车辆路径轨迹移动的上位机程序
2024-05-25
python实现九宫格的车辆路径轨迹上位机程序
2023-05-19
python调用32位的ControlCan.dll实现can报文的收发
2022-11-05
文献研读:Stable Cooperation in Dynamic Vehicle Routing Problems
2023-02-07
文献研读:在集装箱班轮航运网络中逆转港口循环方向
2023-02-06
32位ControlCan.dll 供实现周立功can设备报文收发调用
2022-09-29
用于求解单配送中心带硬时间窗约束VRP的多智能体进化算法
2022-10-21
DBC文件可以解析J1939 DM1多包故障报文吗?
2023-07-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅