自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cxxopts位置参数示例

可以方便地处理位置参数(即不带有选项名,按顺序出现的参数)。下面详细介绍其位置参数的用法,包含代码示例、代码解释和注意事项。代码解释创建 对象:此代码创建了一个 对象,用于管理命令行选项,并指定了程序的名称和简要描述。定义普通选项:这里添加了两个普通选项: 用于打印帮助信息, 用于指定输出文件。定义位置参数:首先创建一个 类型的变量 ,用于存储位置参数。然后添加一个名为 的选项,它将接收多个字符串类型的位置参数,并将其存储在 中。设置位置参数名称: 方法指定了位置参数对

2025-02-14 17:16:06 586

原创 cxxopts分组使用示例

支持将命令行选项进行分组,这样可以让帮助信息的展示更加清晰,便于用户理解不同类型选项的用途。以下是关于 分组用法的详细介绍和示例代码。代码解释创建 对象:这行代码创建了一个 对象,用于管理命令行选项,并指定了程序的名称和简要描述。定义选项组:向选项组中添加选项:这里向 中添加了两个选项,分别是输入文件路径和输入文件格式。解析命令行参数:调用 方法对传入的命令行参数进行解析,解析结果存储在 对象中。打印帮助信息:当用户指定了 或 选项时,调用 方法打印帮助信息。 方法的

2025-02-14 17:14:06 729

原创 cxxopts使用示例(C++ 命令行参数解析库)

cxxopts是一个轻量级、易于使用的 C++ 命令行参数解析库,其设计目标是提供简洁、高效的方式来处理命令行输入。轻松地在 C++ 项目中处理命令行参数。下面是一个简单的示例,展示了如何使用。是一个仅头文件的库,你只需要将。通过以上介绍,你可以使用。

2025-02-14 17:09:51 871

原创 独立C++ asio库实现的UDP Client

以下是使用独立的asio库(无需依赖 Boost)实现的 UDP 客户端示例代码。该客户端可以向指定的 UDP 服务器发送消息,并接收服务器的响应。

2025-02-13 14:55:55 599

原创 独立C++ asio库实现的UDP Server

以下是一个使用独立的 C++ Asio 库实现的 UDP 服务器的示例代码。这个 UDP 服务器可以监听指定端口,接收客户端发送的数据,并将接收到的数据原样返回给客户端。

2025-02-13 14:54:01 792

原创 独立C++ asio库介绍

独立的asio库是一个跨平台的 C++ 库,用于网络和底层 I/O 编程。在 C++20 之前,asio通常作为 Boost 库的一部分存在(即 Boost.Asio)。而现在,asio已经可以独立使用,无需依赖 Boost 库,它提供了统一的异步和同步 I/O 模型,让开发者可以方便地编写高性能、可扩展的网络应用程序,支持多种网络协议,如 TCP、UDP、ICMP 等。

2025-02-13 14:49:01 800

原创 SML(State Machine Language)示例2

在使用 SML 创建状态机之前,需要定义事件、状态和动作。使用 SML 的 DSL(领域特定语言)来定义状态机的转换规则。

2025-02-12 15:25:12 345

原创 SML(State Machine Language)示例1

在使用 SML 创建状态机之前,需要定义事件、状态和动作。使用 SML 的 DSL(领域特定语言)来定义状态机的转换规则。

2025-02-12 15:22:19 604

原创 WSL(Ubuntu20.04)编译和安装DPDK

本文记录了WSL子系统Ubunt20.04编译DPDK19.11.14的过程。

2024-10-24 11:03:11 527

原创 Maven安装及配置

本文描述了Maven安装配置,以及在集成开发环境IntelliJ IDEA 2024中配置。

2024-09-12 21:36:48 590 1

原创 Java11环境安装(Windows)

本文描述Java11的安装及配置过程。

2024-09-12 21:29:17 1611

原创 Paddle安装详解(CPU版本)

本文描述了基于Python3.12安装Paddle2.6.1的CPU版本。

2024-09-12 09:28:31 1008

原创 Qt5.15.2 使用C++ filesystem标准库

C++标准发展的很快C++11标准刚普及时,后续C++14/C++17/C++20/C++23相继而来,而Qt5默认使用编译器版本时GCC8.1,对C++17不是全面支持,使用filesystem会有编译错误。通过自定义构建套件的方式将编译版本提高到GCC11.2.0,可以完全支持C++17标准。

2024-07-31 10:04:46 819

原创 Qt添加构建套件

在使用Qt 5.15.2开发中,默认GCC编译器使用的版本是GCC8.1,这个版本对C++17支持不太好,另外不支持C++20。其实可以通过添加构建套件的方式,增加对高版本GCC编译器支持。本文后续将说明如何添加构建套件。

2024-07-31 09:37:08 3705

原创 CL11命令行解析使用实例

CLI11提供了您在强大的命令行解析器中所期望的所有功能,具有美观、简洁的语法,并且以单个文件的形式提供,便于包含在项目中。这很容易适用于小型项目,但功能强大,足以支持复杂的命令行项目,并且可以针对框架进行定制。本来准备使用Boost库中program_options,不过boost整个头文件就有170MB,对于小小项目来说使用成本很高,还得编译boost库,感觉不划算。CLI11功能强大可以直接包含头文件使用,对小项目很友好。本文后面讲述CLL11的使用实例。

2024-07-18 16:02:14 623

原创 Linux下编译boost1.85

Boost提供免费的同行评审的可移植C++源库。我们强调与C++标准库配合良好的库。Boost库旨在广泛使用,并可在广泛的应用程序中使用。Boost许可证鼓励所有用户以最小的限制使用Boost库。我们的目标是建立“现有实践”并提供参考实现,以便Boost库适合最终的标准化。从库技术报告(TR1)中包含的十个Boost库开始,再到自2011年以来ISO C++标准的每次发布,C++标准委员会一直将Boost作为添加标准C++库的宝贵来源。

2024-07-18 13:51:09 769

原创 Xilinx Vitis 2020工程源目录修改

Xilinx Vitis可以做standalone程序开发,不过其工程中使用的路径为绝对路径。工程更换位置后编译将会显示错误。例如:源目录为D:/work,复制到同事电脑上放到C:/work(同事电脑只有一个C盘)。利用Vitis打开工程编译会有一堆错误,提示文件找不到。可以通过手动修改以上文件是可以解决问题,不过手动修改容易出错误。更好的方式是写一脚本来做文件路径替换,这个脚本需要处理xml和json文件。Python语言内置xml和json库,是理想语言选择。

2024-07-09 14:54:45 1579

原创 扫描服务器端口(Python)

如果只知道服务器的地址,不知道其提供服务端口号,可以通过扫描所有端口方式发现服务器提供哪些端口。下面使用Python编写脚本扫描服务器端口。采用单线程扫描1-65535时间比较长,可以缩小搜索范围例如(1-10000)或采样下面多线程方式。服务器有效端口1-65535。

2024-07-09 14:34:29 439

原创 Qt调用Matlab(一)

MATLAB是MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。在本文利用Qt通过C/C++来访问Matlab功能。

2024-07-05 10:55:52 1757

原创 Ubuntu20.04更新GLIBC到2.35版本

Ubuntu20.04默认GLIBC库版本是2.31.今天碰到一个软件需要2.35版本的GLIBC。需要升级到2.35版本。

2024-07-03 17:02:32 6075 5

原创 Modbus RTU协议简介及CRC算法实现

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。大多数Modbus设备通信通过串口EIA-485物理层进行。对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

2024-07-03 16:26:16 3491 3

原创 Linux动态库查询路径设置(LD_LIBRARY_PATH)

Linux下动态库查询路径与Windows不同,即使动态库文件与可执行程序在相同目录下也是找不到的。请注意,修改系统级的动态库路径需要谨慎,因为这会影响到系统中所有使用动态链接器的程序。

2024-07-01 15:11:08 2600

原创 Linux CMakeLists编写之可执行程序

编译工具有很多(make/cmake/BJam)。cmake是跨平台,使用cmake编译需要编写CMakeLists.txt。本文编写CMakeLists.txt来生成C++可执行程序。

2024-07-01 14:45:57 664

原创 Linux CMakeLists编写之静态库

编译工具有很多(make/cmake/BJam)。cmake是跨平台,使用cmake编译需要编写CMakeLists.txt。本文编写CMakeLists.txt来生成C++静态库。

2024-06-27 14:38:37 589

原创 CPPTest设计分析

CppTest是一个可移植、功能强大但简单的单元测试框架,用于处理C++中的自动化测试。重点在于可用性和可扩展性。支持多种输出格式,并且可以轻松添加新的输出格式。CppTest下载地址Github地址下面对其设计进行分析,已更好对其使用。

2024-06-27 09:41:00 1017

原创 为Ubuntu18.04云服务器修改用户shell

在Ubuntu18.04的云服务器,创建一个普通账户,登录进行发现使用shell是sh而不是bash,sh对终端命令支持很不好,将用户的shell修改为bash.

2024-06-26 11:12:54 457

原创 CppTest单元测试框架(更新)

中讲述利用宏ADD_SUITE将测试用例自动增加到测试框架中。但在使用中发现一个问题,就是通过宏ADD_SUITE增加多个测试Suite时,每次运行时都是所有测试Suite都运行,有的Suite运行比较慢,这对边写测试用例边编译运行时效率很低。于是就在原来测试框架下作出修改,即默认运行所有测试用例,不过可以通过命令指定测试用例来运行

2024-06-26 10:29:03 1075

原创 C++并发之环形队列(ring,queue)

最近研究了C++11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的环形队列,队列大小通过模板参数传递。环形队列是一个模板类,有两个模块参数,参数1是元素类型,参数2是队列大小,默认是10。入队操作如果队列满阻塞,出队操作如果队列为空则阻塞。

2024-06-25 16:50:26 836

原创 C++并发之阻塞队列(block,queue)

最近研究了C++11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的阻塞队列,队列大小没有限制。阻塞队列是一个模板类,有两个模块参数,参数1是元素类型,参数2是容器类型,可以是std::deque和std::list,默认是std::deque。入队操作没有阻塞,出队操作如果队列为空则阻塞。

2024-06-25 16:34:27 846

原创 C++并发之协程实例(四)(通过迭代器访问生成器序列)

协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。

2024-06-24 17:09:36 241

翻译 我的C++20协程教程

  粗略地说,协程是可以相互调用但不共享堆栈的函数,因此可以在任何时候灵活地暂停执行以进入不同的协程。在C++的真正精神中,C++20协程被实现为一个埋在垃圾堆下面的漂亮的小金块,你必须费力才能访问到漂亮的部分。坦率地说,我对这个设计感到失望,因为最近的其他语言变化都做得更有品味,但遗憾的是,没有协同工作。进一步混淆协程的是,C++标准库实际上并没有提供访问协程所需的垃圾堆,所以你实际上必须滚动自己的垃圾,然后费力地浏览它。无论如何,无论如何,我会尽量把任何进一步的评论留到这篇博客文章的结尾…

2024-06-24 16:23:39 277

原创 C++并发之协程实例(三)(co_await)

协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。

2024-06-23 15:07:19 450

原创 C++并发之协程实例(二)(计算斐波那契序列)

协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。斐波那契数列是一位意大利的数学家,他闲着没事去研究兔子繁殖的过程,研究着就发现,可以写成这么一个序列:1,1,2,3,5,8,13,21…也就是每个数等于它前两个数之和。那么给你第 n 个数,问 F (n) 是多少。用数学公式表示很简单: f(n) = f(n-1) + f(n-2)

2024-06-21 12:50:27 430

翻译 C++并发之协程(Coroutines,co_await,co_yield, co_return)

协程(Coroutines )是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。

2024-06-20 10:39:58 351

原创 C++并发之协程实例(一)(coroutine, std::coroutine_handle, std::suspend_never, std::suspend_always)

协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调的情况下处理非阻塞I/O),还支持惰性计算无限序列上的算法和其他用途。

2024-06-18 17:33:23 771

原创 多版本GCC安装及切换

最近在研究C++20中的协程需要安装GCC版本10。用到GCC多版本切换,记录步骤。

2024-06-18 15:18:31 802

原创 C++并发之原子操作(std::atomic)

原子类型是封装一个值的类型,该值的访问保证不会导致数据争用,并且可以用于同步不同线程之间的内存访问。这个头文件(atomic)声明了两个C++类,atomic和atomic_flag,它们在自包含类中实现原子类型的所有特性。头文件(atomic)还声明了一整套与C中的原子支持兼容的C样式类型和函数。

2024-06-17 16:12:45 1345

原创 undefined reference to `__atomic_is_lock_free‘

看来标准库std::atomic的实现,除部分在头文件实现外,还有部分在库文件中实现。

2024-06-17 15:59:00 393

原创 C++并发之Future(std::future, std::promise, std::packaged_task, std::async)

Future允许异步访问特定提供程序设置的值的功能,这可能在不同的线程中。这些提供程序(providers)中的每一个(要么是promise对象,要么是package_task对象,要么调用async)都与Future对象共享对共享状态的访问:提供程序使共享状态就绪的点与Future对象访问共享状态的点同步。

2024-06-14 18:14:41 1101

原创 C++并发之条件变量(std::condition_variable)

条件变量是一个能够阻塞调用线程直到被通知恢复的对象。当调用其中一个等待函数时,它使用unique_lock(通过互斥锁)来锁定线程。线程保持阻塞状态,直到被另一个调用同一condition_variable对象上的通知函数的线程唤醒。条件变量类型的对象总是使用unique_lock来等待.

2024-06-14 18:10:15 524

Eclipse Layout Kernel(ELK)功能演示

Eclipse Layout Kernel(或ELK)是图表的自动布局库,其做两件事:一是布局算法的集合,二是弥合布局算法与图表查看器和编辑器之间差距的基础设施。 本工程一个基于Maven的Java工程,演示ELK自动布局的使用。

2024-09-12

Python脚本扫描服务器端口

如果只知道服务器的地址,不知道其提供服务端口号,可以通过扫描所有端口方式发现服务器提供哪些端口。本Python脚本通过多线程扫描服务器端口。

2024-07-09

泰坦尼克号上乘客数据集

泰坦尼克号的沉没是历史上最臭名昭著的沉船之一。1912年4月15日,在她的处女航中,被广泛认为“不沉”的“泰坦尼克号”在与冰山相撞后沉没。不幸的是,船上的每个人都没有足够的救生艇,导致2224名乘客和船员中有1502人死亡。虽然生存中有一些运气因素,但似乎有些群体比其他群体更有可能生存下来。在这里,建立一个预测模型来回答这个问题:“什么样的人更有可能生存?”使用乘客数据(即姓名,年龄,性别,社会经济阶层等)。

2024-07-09

Xilinx Vitis 2020工程源目录修改

Xilinx Vitis可以做standalone程序开发,不过其工程中使用的路径为绝对路径。工程更换位置后编译将会显示错误。例如:源目录为D:/work,复制到同事电脑上放到C:/work(同事电脑只有一个C盘)。利用Vitis打开工程编译会有一堆错误,提示文件找不到。本脚本用来解决该问题。

2024-07-08

FFMPEG C++封装

FFMPEG是一个C语言开源视音频编解码库。本工程将FFMPG4.1.3进行C++封装,形成C++ FFMPG库。介绍参见:https://blog.youkuaiyun.com/flysnow010/article/details/137063852

2024-07-08

Qt调用Matlab实例

MATLAB是MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。在程序利用Qt通过C/C++来访问Matlab功能,调用Matlab代码:t=0:0.01:4*pi;y=sin(t);h=plot(t,y)绘制一正弦图。

2024-07-03

MODBUS-RTU协议CRC算法

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,RTU格式后续的命令/数据带有循环冗余校验的校验和。本资源就是MODBUS-RTU协议CRC算法实现。

2024-07-03

Matlab绘制时域和频域图

从文件文件中读取数据,对数据处理后绘制时域和频域图。

2024-06-27

百度翻译桌面端Windows

百度翻译桌面端 轻·快的多语种翻译工具 200+语种 极简模式 跨软件划词句 快捷键发起翻译 极简模式 悬浮微小输入框 随时翻译不打扰 快捷翻译 快捷键发起实时翻译 告别繁琐复制粘贴 划词翻译 划选词句即可翻译 外语阅读无障碍

2024-06-27

C++11标准库中多线程测试用例

C++11标准库中多线程测试用例.包括std::thread,std::mutex,std::lock_guard,std::unique_lock,std::condition_variable,std::future,std::promise,std::packaged_task,std::async,std::atomic.

2024-06-18

C++智能指针及容器测试用例

基于CppTest测试框架的C++智能指针及C++标准库容器测试用例,通过测试用例示范了智能指针和容器各接口用法。

2024-06-11

libssh的C++封装源码及单元测试用例

本工程基于Qt 5.12,是对libssh库C++封装,包括封装代码和单元测试代码,是很好学习libssh库的参考,也可直接拿来使用实现ssh的上下载文件及ssh交互。本库在本人的开源项目使用,项目地址:https://github.com/flysnow010/flyscp.

2024-05-17

在嵌入式开发中,经常会利用命令行交互系统测试功能,本文描述使用C++语言开发的一个命令行交互系统,支持命令注册(C或C++格式)

CommandManager 接口列表: - registerCommand 注册命令 - unregisterCommand 注销命令 - showCommand 显示单条命令信息 - showCommands 按组显示命令 - execCommand 执行命令 - returnValue 获取命令返回值 - run 运行命令行系统,通过默认命令exit退出

2024-05-09

开源单元测试库CppTest源码及测试程序

基于CppTest2.0.0版本,在Linux下直接make,不需要配置。

2024-04-26

Qt实现的Kermit协议源码

Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 Kermit文件运输协议是一个半双工的通信协议。 它支持7位ASCII字符。 数据以可多达96字节长度的可变长度的分组形式传输。 对每个被传送分组需要一个确认。 Kermit文件运输协议在每次会话中可以传送多个文件。 本资源利用Qt实现了Kermit协议,收发测试验证通过。

2024-03-28

Qt实现的XModem和YModem协议源码

XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即1k字节的数据块。Xmodem协议传输有接收程序和发送程序完成,先由接收程序发送协商字符,协商校验方式,协商通过之后发送程序就开始发送数据包,接收程序接收到完整的一个数据包之后按照协商的方式对数据包进行校验。校验通过之后发送确认字符,然后发送程序继续发送下一包;如果校验失败,则发送否认字符,发送程序重传此数据包。 YModem协议是XModem的改进协议,它最常用于调制解调器之间的文件传输的协议,具有快速,稳定传输的优点。它的传输速度比XModem快,这是由于它可以一次传输1024字节的信息块,同时它还支持传输多个文件,也就是常说的批文件传输。 本资源利用Qt实现了XModem和YModem协议,收发测试验证通过。

2024-03-28

FFMPEG C++封装库使用示例之初始化

该示例演示了FFMPEG C++封装库的初始化,并打印支持的: - 文件格式 - 编解码格式 - 协议格式 - 过滤器格式 - 像素格式 - 采样格式

2024-03-27

C++封装例程(class,struct,public,protected,private,friend)

C++封装(class,struct,public,protected,private,friend)的博客例程。 https://blog.youkuaiyun.com/flysnow010/article/details/136907034

2024-03-25

基于Qt5.12实现TFTP的Server和Client

TFTP协议是基于UDP的简单文件传输协议,协议双方为Client和Server.Client和Server之间通过5种消息来传输文件,消息前两个字节Code是消息类型,消息内容随消息类型不同而不同。传输模式有三种:octet,netascii和mail,octet为二进制模式,netascii为文本模式,mail为文本模式,不过收到的文本不是保存到文件,而是打印出来,现在已不常用。DATA消息种数据长度是512字节,最后一个数据包可能会小于512。 本资源基于Qt5.12实现TFTP的Server和Client。

2024-03-22

Qt实现Windows的SendTo菜单

本资源在Qt平台下利用Windows API实现Windows发送到(SendTo)菜单,并实现菜单项单击功能。

2024-03-15

Qt利用WindowsAPI弹出U盘

本程序实现动态检测磁盘插拔,并判断磁盘驱动器类型,可以将U盘弹出操作,将本地磁盘进行格式化操作。

2024-03-11

Qt显示桌面菜单,包括此电脑/库目录

利用Qt实现的桌面菜单,包括桌面,此电脑,库,网络,下载,控制面板,回收站等菜单项。实现用到Window Shell编程,通过Windows Shell返回菜单项和图标,显示通过QMenu将菜单项显示出来。在界面单击右键显示菜单,选择菜单项显示该项针对的右键菜单。

2024-03-06

Qt下显示文件及目录的Windows右键菜单

本资源是Qt工程,用来显示Windows下文件和文件夹的右键菜单。

2024-03-05

空空如也

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

TA关注的人

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