自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux C++使用GDB调试动态库崩溃问题完全指南

本文详细介绍了使用GDB调试Linux C++动态库崩溃问题的完整流程。主要内容包括:调试环境准备(编译带调试信息的动态库、启用核心转储)、定位崩溃问题(加载核心文件、查看调用栈)、深入分析方法(加载符号、检查变量值)、常见崩溃类型(空指针、内存越界等)的调试技巧,以及高级调试方法(GDB脚本、多线程调试、AddressSanitizer)。通过实战案例展示了从崩溃定位到修复的完整过程,并总结了动态库开发和调试的最佳实践。文章为开发者提供了系统解决动态库崩溃问题的实用指南。

2025-12-17 19:22:34 445

原创 C++编译死机排查工具与实战指南

本文深入探讨了C++编译死机问题的排查方法与工具。首先分析了编译死机的常见原因,包括语法错误、模板元编程问题、循环依赖等。然后详细介绍了多种排查工具:编译器内置诊断选项(GCC/Clang/MSVC)、系统监控工具(top/strace/valgrind)、调试工具(GDB/LLDB)以及第三方分析工具(Clang Static Analyzer/Cppcheck)。通过实际案例展示了如何应用这些工具解决问题,并提出了代码优化、编译环境配置等最佳实践。

2025-12-16 23:37:11 630

原创 Go项目发布到Go官方仓库完整指南

本文详细介绍了将Go项目发布到Go官方仓库的完整流程。主要内容包括:1) 准备工作,检查Go环境和选择Git托管平台;2) 项目结构设计;3) 初始化Go模块和管理依赖;4) 确保代码质量的测试、文档和检查工具;5) 提交到代码托管平台并创建语义化版本标签;6) 通过Go Module Proxy发布包;7) 维护更新和最佳实践。文章还提供了常见问题解决方案,帮助开发者顺利发布高质量的Go包,促进代码复用和社区贡献。

2025-12-14 18:30:07 761

原创 MySQL数据库迁移脚本及使用说明

这是一个MySQL数据库迁移脚本,支持将数据库从源服务器导出并导入到目标服务器。主要功能包括: 可配置参数:源/目标主机地址、用户名密码、数据库列表、备份目录和压缩选项 支持三种操作模式:仅导出、仅导入或完整迁移 使用mysqldump进行数据库备份,支持压缩选项 自动生成备份信息文件记录导出详情 包含完善的错误检查和帮助信息 脚本提供了灵活的命令行参数配置,包括: 指定源/目标数据库连接信息 选择要迁移的数据库列表 控制备份文件是否压缩选择仅执行导出或导入操作 典型使用场景包括数据库迁移、备份恢复等。

2025-12-13 20:58:44 798

原创 使用 GoZero 快速构建高性能微服务项目

GoZero是一个高性能的Go语言微服务框架,提供简单易用、可扩展的微服务解决方案。本文介绍了GoZero的核心优势,包括极简API设计、高性能网络库、内置服务治理等功能。详细讲解了环境准备步骤,包括Go语言安装、GoZero工具链配置和依赖安装。通过创建一个用户管理API服务的实例,展示了如何使用GoZero快速生成项目骨架、定义API接口、生成代码并实现业务逻辑。示例包含了用户登录和查询功能的实现,演示了数据库操作和JWT令牌生成等常见场景的开发流程。

2025-12-06 20:05:25 861

原创 Linux安装go及环境配置教程

本文详细介绍了在Linux系统上安装和配置Go语言环境的完整步骤。主要内容包括:1)从官方或镜像站下载Go安装包;2)解压到指定目录;3)配置环境变量(PATH和GOPATH);4)通过版本检查和运行Hello World程序验证安装;5)可选配置如Go Modules和国内代理设置;6)卸载方法及常见问题解决方案。文中提供了具体命令和配置示例,帮助用户快速完成Go语言环境的搭建。

2025-12-06 19:31:48 746

原创 C++17多线程编程全面指南

本文全面介绍了C++17多线程编程的核心概念和实用技术。首先回顾了线程创建与管理的基础知识,包括std::thread的使用方法和线程同步原语。重点讲解了C++17新增的并行算法和std::shared_mutex读写锁特性,这些改进显著提升了并发编程效率。文章还详细分析了生产者-消费者模式、线程池实现等典型应用场景,并提供了完整的代码示例。最后探讨了无锁编程、原子操作等高级主题以及性能优化技巧,为开发者编写高效、安全的并发程序提供了全面指导。

2025-11-30 19:55:31 881

原创 LinuxC++使用GDB调试指南

本文介绍了Linux环境下使用GDB调试C++程序的完整指南。主要内容包括:GDB的安装方法、编译调试版本程序的必要参数设置、基本调试命令(断点设置、程序执行控制、变量查看)、高级调试技巧(条件断点、多线程调试、core dump分析)、以及内存问题诊断实战。文章通过具体命令示例和对比表格,帮助开发者掌握这一强大的命令行调试工具,提升解决程序运行时问题的效率。

2025-10-28 10:39:55 1082

原创 Ubuntu禁用系统手势,阻止应用程序异常最小化

本文介绍了如何禁用Ubuntu系统手势以避免QT应用在全屏时被误触最小化。首先需要安装gnome-shell-extensions及相关依赖包,然后从官网下载Disable Gestures插件并解压到指定目录。通过修改metadata.json文件中的uuid并重启系统后,在扩展中启用该插件即可成功禁用手势功能。该方法有效解决了触摸屏设备上单指下滑误触导致应用退出的问题。

2025-10-21 10:30:50 395

原创 虚拟串口使用指南:Windows与Linux平台

本文介绍了在Windows和Linux系统中创建虚拟串口的方法。Windows系统使用VSPD软件创建成对的虚拟串口,便于串口程序开发和测试。Linux系统则通过socat工具或tty0tty驱动创建虚拟串口,并提供了配置和测试方法。虚拟串口可应用于DLT645协议开发、跨平台调试和性能测试等场景,无需物理设备即可模拟串口通信,提高开发效率。文章还列出了常见问题及解决方案,帮助用户快速解决虚拟串口使用中的问题。

2025-10-18 17:48:11 1005

原创 如何将 Python 包发布到 PyPI:完整指南

本文详细介绍了如何将Python项目打包并发布到PyPI的完整流程。主要包括:注册PyPI测试和正式环境账户、安装必要的构建工具(build和twine)、准备标准项目结构(包含pyproject.toml或setup.py等关键文件)、版本管理规范(语义化版本控制)以及构建和发布的具体步骤。特别强调了先在测试环境验证发布流程的重要性,并提供了从本地测试到最终发布的详细操作指南,包括使用twine工具上传包和API密钥配置等关键环节。通过本文,开发者可以掌握让Python包通过pip被其他用户安装使用

2025-09-27 12:31:21 877

原创 Python包制作 - 以DLT645-2007通讯规约库为例

本文介绍了以DLT645-2007通讯规约库为例的Python包制作全流程。主要内容包括:1)Python包管理工具从setup.py到pyproject.toml的演进;2)标准项目结构设计,展示模块化分层架构;3)pyproject.toml和setup.py双配置文件的详细解析;4)MANIFEST.in文件包含规则;5)自动化构建脚本的实现方法。文章通过实际项目案例,系统讲解了现代Python包开发的最佳实践,包括版本管理、依赖控制、测试验证等关键环节,为开发者提供了完整的Python包制作参考方案

2025-09-26 20:11:52 1128

原创 使用python test测试http接口

本文介绍了使用Python测试HTTP接口的方法,主要包括两部分内容: 通过Common类实现登录认证,获取token和控制会话(controlSession)。使用AES加密密码,发送POST请求获取授权信息,为后续接口调用提供凭证。 使用unittest框架编写单元测试用例,测试不同策略模式的设置功能。测试用例包括: 功率平衡模式(powerBalanced) SOC平衡模式(socBalanced) 自定义功率分配模式(customRatio) 代码展示了完整的HTTP请求流程,包括请求头设置、参数传

2025-09-10 10:31:47 341

原创 使用 Doxygen 生成 C++ 与 Python 项目文档

Doxygen是一款跨语言的自动化文档生成工具,支持C++、Python等多种编程语言。它能够从源代码中提取特殊格式的注释,生成HTML、PDF等多种格式的技术文档。Doxygen的主要优势包括自动化文档生成、代码与文档同步、多格式输出支持以及可视化图表生成能力。文章详细介绍了Doxygen的安装配置方法,并提供了C++和Python项目的文档注释示例,包括函数、类、命名空间等元素的注释规范。此外还介绍了Doxygen的高级功能如Markdown支持、数学公式渲染、代码分组等,以及如何配置Doxyfile来

2025-09-07 22:18:15 756

原创 iec104-python库使用指南

IEC104是电力自动化系统中的标准通信协议,基于TCP/IP架构,支持遥测、遥信等功能。iec104-python库实现了该协议,可通过源码编译安装。使用时需创建IEC104Server类,添加监控点(设置自动上报)和命令点(处理控制指令),并提供获取测点值的接口。该库支持主站与子站通信,满足电力系统实时监控需求。安装时需注意依赖问题,国内用户可使用镜像源加速下载。

2025-09-01 07:53:50 925 1

原创 使用Python实现DLT645-2007智能电表协议

摘要 该项目实现了DLT645电表通信协议的服务端和客户端功能,支持TCP和RTU两种通信方式。系统采用模块化设计,分为数据层、协议解析层、业务逻辑层和通信层。数据层通过JSON配置文件初始化测点数据,协议层处理帧的编解码和校验。目前已实现电能量、最大需量等核心功能读取,但事件记录、参变量等部分功能尚未完成。项目代码结构清晰,包含通用函数、数据模型、协议解析和服务实现等模块,为电表通信提供了完整的解决方案。

2025-08-24 22:01:15 520

原创 DLT645多功能电能表协议详解

DLT645协议是中国电力行业电能表通信的核心标准,采用主从式RS-485通信,包含97和07两个版本。协议帧结构由地址域、控制码、数据域等组成,支持多种电能数据读取和参数配置。关键特性包括6字节BCD地址编码、数据域加0x33变换规则、4层数据标识体系等。C++实现需处理帧构造、校验和计算及数据编解码,典型应用如读取正向有功总电能需发送特定数据标识请求帧并解析响应。该协议标准化程度高,广泛应用于国内智能电表数据采集系统。

2025-08-04 10:08:47 1987

原创 AsyncIOScheduler 使用指南:高效异步任务调度解决方案

AsyncIOScheduler是APScheduler库中的异步任务调度器,专为Python异步编程环境设计。它利用asyncio库实现非阻塞的任务调度,支持多种触发器类型(date/interval/cron)和丰富的任务管理功能。文章详细介绍了其安装配置、核心概念(调度器/任务/触发器)、基本使用方法(创建/启动/停止调度器)以及高级功能(任务管理/错误处理/动态调整)。还提供了配置管理、性能优化和错误处理等最佳实践,帮助开发者高效管理异步定时任务,避免传统阻塞式调度的性能问题。

2025-07-28 10:27:55 795

原创 FastAPI 基本使用方法

FastAPI是一个高性能的Python Web框架,基于Starlette和Pydantic构建,支持异步编程。主要特点包括自动API文档生成、类型提示数据验证和简单易用的开发体验。本文介绍了FastAPI的安装配置、基本应用创建、请求处理(路径参数、查询参数、请求体)、响应模型、错误处理、依赖注入、数据库集成(SQLAlchemy)、中间件(CORS)和测试等核心功能。通过代码示例展示了如何快速构建RESTful API,包括路由定义、数据验证、状态码设置等开发要点,是Python开发者构建现代Web

2025-07-21 09:56:07 1256

原创 Python与MongoDB深度整合:异步操作与GridFS实战指南

本文介绍了使用Python异步操作MongoDB的实践方法,重点探讨了GridFS文件存储系统的应用。主要内容包括:通过单例模式实现MongoDB连接池管理,配置连接参数优化性能;详细解析GridFS文件上传策略,包括文件夹压缩上传和直接内容上传两种方式;实现高效的文件下载和健壮的删除操作;以及异步编程实践技巧,如异步文件操作、线程池执行同步任务等。这些方法为现代Python应用与MongoDB的深度整合提供了完整解决方案。

2025-07-14 10:12:02 419

原创 Ubuntu安装Mongodb

MongoDB 8.0社区版安装与配置指南 本文详细介绍了在Ubuntu系统上安装MongoDB 8.0社区版的完整步骤:1)更新系统并安装依赖;2)导入MongoDB公钥和添加官方仓库;3)执行安装。配置部分包括服务启动、设置开机自启、修改配置文件允许远程连接等操作。安全配置环节指导创建管理员用户和启用认证机制。最后提供了安装验证方法和常见问题解决方案,如依赖错误处理和端口冲突排查。整个流程涵盖从安装到安全配置的全过程,并附有详细的命令行操作示例。

2025-07-14 09:49:25 459

原创 多服务器IP白名单配置(使用redis stream实现)

摘要:基于Redis的IP白名单动态管理系统 本文介绍了一个通过Redis实现的动态IP白名单管理系统。系统采用Redis Stream消息队列机制,实现对代理服务器IP白名单的分布式实时更新。当用户登录管理平台时,系统会将用户IP存入Redis并设置24小时有效期,同时通过Stream通知所有代理服务器更新白名单。系统提供完整的Python实现方案,包括IP添加/删除、过期检查、消息监听和自动清理等功能,确保了白名单的时效性和一致性。

2025-06-25 14:58:15 554

原创 Redis Stream介绍和基本用法

Redis Stream是Redis 5.0引入的高性能消息队列数据结构,支持持久化、有序消息和多消费者组模式。底层采用基数树和Listpack实现高效存储与查询,核心命令包括XADD(生产)、XREAD(消费)和XACK(确认)。适用于异步任务、日志聚合等场景,具有低延迟、轻量级优势,但需注意内存管理和单线程写入限制。最佳实践包括控制流长度、及时确认消息和监控状态。

2025-06-25 14:10:32 1102

原创 python使用pydantic库结合fastApi实现接口参数验证

Pydantic是一款基于Python类型提示的数据验证库,主要特点包括:利用类型注解自动验证数据结构、支持自定义验证规则、提供自动类型转换和序列化功能。该库通过BaseModel定义数据模型,可验证字段类型、取值范围等,并集成详细错误处理。特别适合与FastAPI配合使用,能自动生成API文档并处理请求参数验证。示例展示了如何定义站点模型并设置数值范围验证,当输入负数时会返回明确错误信息。Pydantic以高性能著称,核心逻辑由Rust实现,广泛应用于API开发和配置管理场景。

2025-06-19 14:14:28 796

原创 使用Gitlab CI/CD结合docker容器实现自动化部署

本文介绍了Gitlab CI/CD的基本概念和实现方案。主要内容包括:Gitlab CI/CD核心组件(Pipeline、.gitlab-ci.yml、Runner)和工作流程;部署前的准备工作,包括安装gitlab-runner、注册Runner到项目以及生成SSH密钥;通过一个示例.gitlab-ci.yml文件,展示了使用Docker构建镜像并部署到多台服务器的完整流程。该方案实现了代码提交后自动构建、测试和部署的持续集成/持续交付流程,提高了开发效率。执行结果在Gitlab界面实时可见,便于监控管理

2025-06-12 09:58:27 1842

原创 electron使用带身份认证的代理访问webview,支持socks5、http代理

electron本身的session不支持代理认证,我们可以中间转接一层,先开启一个支持认证的socks5客户端将数据从socks5代理服务端里面拿过来,再在本地起一个http代理服务端,我们将这个本地http代理服务设置到electron的session里面去,这样数据就能通过socks5客户端 --> http本地服务端 --> electron session。如果内网网页是http的,可以通过openssl生成自签名证书,通过nginx反向代理设置证书地址,开放443端口支持https。

2025-04-21 11:04:04 1277 1

原创 Http代理服务器选型与搭建

安装Proxy Switchy Omega3插件。如果不需要用户名密码认证,配置文件改成如下即可。通过http代理访问内网网站,如图显示成功访问。使用curl测试通过代理能否访问百度。加入以下内容,支持用户名和密码认证。设置完左下角点击应用即可生效。通过apt下载squid。添加用户名/密码限制访问。

2025-04-09 09:21:08 1146

原创 Ubuntu部署Dufs文件服务器

运行dufs,设置登录用户名密码为admin和888888,-A允许所有操作,文件服务器根目录为/home/narada/ems,放在后台执行且不输出错误信息。查看rust版本,需要>1.81。将dufs加入环境变量。

2025-03-25 16:20:10 870

原创 Ubuntu使用socks5代理

在现场调试程序时,受制于工控机性能,直接在工控机上调试可能不是一个很好的选择。可以在工控机上设置一个代理,本地开发电脑通过代理连接到现场工控机,这样便可在本地开发机直连现场设备,方便调试。

2025-01-09 13:32:05 147

原创 apache服务器允许访问软链接

之前搭建了一台apache服务器,想在里面使用软链接来链接到不同的文件夹,实现服务器指定文件夹访问。本以为创建完软链接可以直接显示了,但是却怎么也显示不全。研究了一个小时,终于得以解决。

2025-01-08 15:16:00 933

原创 Ubuntu配置双网卡Bond和4G移动网卡

最近项目里需要用到AB双网,领导让我进行预研,并提供了一种思路,使用Bond技术。经过几天查询资料和实验,取得了初步成功,分享给大家。参考文章1:https://blog.csdn.net/WuDan_1112/article/details/124756315参考文章2:https://blog.csdn.net/weixin_66855479/article/details/144507395。

2025-01-07 15:09:53 2425 1

原创 Ubuntu安装redis和基本配置

设置绑定ip地址为0.0.0.0,并取消保护模式,可以让其他ip地址访问redis(根据需要设置)redis配置文件在/etc/redis/目录下,可执行文件在/usr/bin目录下。设置完密码之后,打开redis-cli也需要输入密码。设置守护进程运行,如果不设置会放在前台执行。redis无法持久化写入问题,出现如下错误。编辑配置文件,设置redis服务器密码。通过配置文件启动redis。打开redis-cli工具。输入如下语句即可解决。

2024-12-17 15:20:14 750

原创 sqlalchemy异步方法使用

注意,使用select查询时获取单个要用scalar(),因为sqlalchemy的异步方法不支持query。建立异步引擎和session,后面接口的async_session()都从这里引入。一般是select搭配scalar()使用,query()搭配fisrt()使用。comment表示注释,生产mysql的数据表里面会带上注释。以用户为例,建立用户模型继承基类。创建基类base.py。

2024-12-13 14:56:42 1476

原创 Ubuntu使用Qt虚拟键盘,支持中英文切换

​ 最近领导给了个需求,希望将web嵌入到客户端里面,做一个客户端外壳,可以控制程序的启动、停止、重启,并且可以调出键盘在触摸屏上使用(我们的程序虽然是BS架构,但程序还是运行在本地工控机上的),我研究了一下qt的webengineview,成功将web嵌入到客户端里面,但是虚拟键盘这个问题却难住了我。​ 首先客户端无法调出系统的虚拟键盘,我发现调系统键盘这条路走不通后,转头去研究qt官方自带的虚拟键盘,但是官方的虚拟键盘不支持拼音输入,而且自带了一大堆语言,我只需要中英文。

2024-11-01 15:33:14 1722 6

原创 Http请求转发服务器实现

2.使用Http请求转发服务器,将现场和他对应的VPN的ip地址映射起来存到数据库里,前端先请求服务器本地IP地址(127.0.0.1),当通过主界面跳转到某个现场时,通过数据库查询现场VPN的IP地址,然后将之后的请求都转发到对应的VPN地址,即可获取对应现场的数据。1.使用代理,将每台工控机的web服务端口代理到云服务器上的一个空闲端口,这种方式的优点是不需要额外写代码实现,只需要通过配置代理即可,缺点是云服务器上端口占用过多,每打开现场的网址url上面都会带一个端口号。

2024-10-18 17:31:50 1514

原创 Linux使用再生龙备份系统,并在新机器上还原系统,超详细步骤

比如说我有100台工控机,每台工控机我都想提前预制好我的程序,里面所有的环境都已经提前配好,一开机就能直接进入软件展示界面。将启动盘插入工控机,开机进入BIOS,选择U盘启动(用+号可以修改启动顺序将U盘启动项上移动)插入再生龙启动U盘,开机进入BIOS选择U盘启动(用+号可以修改启动顺序将U盘启动项上移动)此时可以看到我插入的U盘(/dev/sdc)已经被识别到,选择Ctrl+C退出。插入空U盘,打开rufus软件,选择再生龙镜像,进行制作再生龙U盘启动盘。此时插入存放镜像的U盘,等待5秒识别U盘。

2024-09-18 15:41:12 7702 10

原创 nps代理搭建内网穿透服务,访问内网web网站和远程运维

使用nps代理相对于VPN,对于用户来说更加友好,只需要公网IP+端口号就可以访问内网服务,缺点是每个服务都需要一个代理端口,和VPN来说各有优劣。

2024-09-12 17:37:24 2089

原创 Linux远程命令行终端启动向日葵

一般我们将工控机发到现场会做双重保险,接一个vpn或ssh反向代理,再接一个向日葵,一个是方便终端操作,启动程序,修改配置文件等。一个是方便界面操作,比如说启动网页或者客户端,必须要通过界面。但是有时将工控机发到现场会忘记将向日葵设置开机自启动,现场如果也没人协助,这样就无法操作界面了,我们需要通过远程将向日葵启动,但是前提是必须设置的永久验证码。

2024-08-17 11:10:59 7250 5

原创 Pyside(PyQt)开发中英文版软件

最近接到一个新需求,软件需要开发英文版。自己研究了一阵子pyside英文版开发,差不多走通了,把方案分享给大家。

2024-08-05 10:28:44 641

原创 Pyqt结合matplotlib实现图表的基本交互,实现图表的放大缩小,移动光标注释

最近在使用pyqt结合matlibplot开发一款内部使用的数据分析软件,发现matlibplot库在处理大数据,出图性能方面还是很不错的,但是就是图表的交互性上差了一点,比如说图像的放大和缩小,移动的光标线,显示注释等等,很多还是需要自己造轮子,本人通过五一假期的一番研究,从中也颇有收获,现在把下面的这些研究成果分享给大家。

2024-05-05 18:19:47 3002 1

空空如也

空空如也

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

TA关注的人

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