自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (9)
  • 收藏
  • 关注

原创 UNIX环境高级编程

unix环境高级编程笔记

2021-11-18 21:01:33 640

原创 C++11 static_assert 关键字

C++11中的static_assert是编译时条件检查机制,用于验证代码是否满足特定条件。其语法为static_assert(condition, message),若条件不成立则编译失败并输出错误信息。与运行时检查的assert不同,static_assert在编译阶段即可发现问题,适用于类型检查、模板元编程和编译时常量验证等场景。通过确保类型大小、模板参数有效性等条件,能有效提升代码健壮性,避免潜在错误。典型应用包括验证数据类型尺寸、模板参数约束等编译时检查需求。

2025-06-20 16:52:55 349

原创 C++11 thread_local 关键字

C++11引入的thread_local关键字用于声明线程局部存储变量,每个线程拥有该变量的独立副本。它适用于全局变量、静态变量和局部变量,生命周期与线程相同。通过示例代码展示了其基本用法:不同线程对同一thread_local变量的修改互不影响。该特性避免了多线程数据竞争,但存在性能开销和初始化顺序限制。当线程结束时,其局部变量会自动销毁。thread_local在多线程编程中特别适用于需要独立线程状态的场景,如并行计算,使代码更安全简洁。

2025-06-20 16:37:05 263

原创 C++11 alignas 和 alignof 关键字

C++11 alignas 和 alignof 关键字

2025-06-20 16:21:01 416

原创 C++中的可变参数模板(Variadic Templates)

C++可变参数模板(Variadic Templates)是C++11引入的重要特性,允许函数和类模板接受任意数量的参数。文章介绍了其基本语法(typename... Args)和使用场景,包括函数模板(如print函数)和类模板的实现方式。重点讲解了参数包展开的两种方法:递归展开和C++17的折叠表达式,并通过代码示例演示其应用。该特性简化了处理可变数量参数的需求,避免了编写大量重载函数,提高了代码的灵活性和重用性,是现代C++模板元编程中的核心工具之一。

2025-06-20 15:19:50 428

原创 C++11 std::bind绑定器

摘要:C++11 的 std::bind 模板(位于<functional>头文件)用于创建可调用对象,通过绑定函数和参数实现灵活调用。它支持普通函数、函数对象和成员函数,可使用占位符(std::placeholders::_1等)延迟参数绑定。典型应用包括简化回调、与STL算法配合及参数延迟绑定。成员函数绑定需提供对象实例。该功能增强了函数调用的灵活性,适用于参数预绑定和部分绑定的场景。

2025-06-20 15:08:36 302

原创 c++11右值引用(rvalue reference)

右值引用是C++11引入的重要特性,主要用于实现移动语义和完美转发。通过&&符号表示,它能绑定临时对象,避免不必要的拷贝操作,显著提升性能。主要应用场景包括:1)移动语义,通过移动构造函数和移动赋值运算符高效转移资源;2)std::move将左值转为右值引用;3)完美转发,配合std::forward保持参数原始值类别。右值引用不仅支持常量修饰,还是STL容器性能优化的关键。典型用法如处理大型对象时取代深拷贝,实现资源的高效转移。

2025-06-20 14:44:51 325

原创 c++ noexcept关键字

c++ noexcept关键字

2025-06-20 14:26:40 290

原创 C++ using 关键字

C++ using 关键字

2025-06-20 13:54:10 329

原创 c++11 constexpr 关键字

c++11 constexpr 关键字

2025-06-20 13:45:40 350

原创 c++11 auto 、decltype关键字

c++11 auto 、decltype关键字

2025-06-20 13:34:08 738

原创 C++ 智能指针

C++ 智能指针

2025-06-19 17:10:57 781

原创 C++11 lambda 表达

C++11 lambda 表达

2025-06-19 16:42:11 581

原创 C++ final、default、delete 、 override 关键字解析

C++ final、default、delete 、 override 关键字解析

2025-06-19 15:08:45 360

原创 c++ 用户自定义自面量

c++ 用户自定义自面量

2025-06-19 14:53:32 313

原创 c++ 11 委托构造

c++ 11 委托构造

2025-06-19 13:31:42 194

原创 用 OpenSSL 库实现 3DES(三重DES)加密

使用 OpenSSL 库的 EVP API 对数据进行 3DES 加密,使用 CBC 模式。通过初始化密钥、初始化向量(IV)和加密上下文来执行加密,并处理填充

2025-06-11 14:02:47 1120

原创 c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作

使用 DES(数据加密标准)进行加密和解密的基本操作,重点展示了 ECB 和 CBC 模式,并且通过篡改密文的方式来进行攻击。下面是对每个部分的详细解析。

2025-06-05 17:52:55 1033

原创 ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途

DES(数据加密标准)是一种对称加密算法,支持不同的加密模式,最常见的两种模式是 ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)。它们之间的主要区别在于如何处理数据块及其安全性。

2025-06-05 17:43:54 476

原创 c++ 通过XOR自己实现一个对称分组加密算法

通过XOR自己实现一个对称分组加密算法

2025-06-05 16:49:07 247

原创 c++ 基于OpenSSL的EVP接口进行SHA3-512和SM3哈希计算

OpenSSL的EVP接口进行SHA3-512和SM3哈希计算

2025-06-05 16:33:16 221

原创 c++ 通过(MD5和Merkle树)验证文件的完整性。

通过(MD5和Merkle树)来计算文件的哈希值,目的是验证文件的完整性。

2025-06-05 14:56:59 281

原创 c++ 基于openssl MD5用法

c++ 基于openssl MD5用法

2025-06-05 11:14:29 430

原创 c++ Base64 编解码实现

c++ Base64 编解码实现

2025-06-05 10:48:20 350

原创 c++ Base58编码解码

Base58 使用 58 个字符进行编码,字符集为:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz。注意:0(零)、O(大写字母O)、I(大写字母I)和 l(小写字母L)等字符被排除,以避免视觉上的混淆。:Base58 编码和 Base64 类似,但由于字符集更小,编码后的长度比 Base64 稍短。由于字符集避免了视觉上容易混淆的字符,因此在用户界面中显示时更为友好。主要用于加密货币(如比特币)中,作为钱包地址等信息的编码方式。

2025-06-05 10:39:13 457

原创 c++ Base16编码解密:从原理到实战

Base16 使用 16 个字符进行编码,字符集为:0123456789ABCDEF(大写或小写都可以,但通常是大写)。每 1 个字节的数据被编码成 2 个字符,因此 Base16 编码后的长度是原数据的 2 倍。主要用于在需要以十六进制表示数据时使用,常见于调试、哈希值表示、文件校验和等场景。在计算机科学中广泛用于二进制数据的表示。

2025-06-05 10:32:00 246

原创 Qt 处理 XML 数据

是面向文档的,可以方便地读取、修改和创建 XML 文档。它适用于处理小型文件,并允许你修改整个文档。和是基于流的,适用于逐步读取和写入 XML 数据,适合处理大型文件。QDomDocument 使用起来更加简单直观,而 QXmlStreamReader 和 QXmlStreamWriter 则提供了更高效的内存管理,尤其是在处理大型 XML 文件时。

2025-04-24 14:50:11 602

原创 Qt使用 SQLite 数据库的基本方法

用于连接数据库,addDatabase() 设置数据库驱动。QSqlQuery用于执行 SQL 查询和命令,可以绑定参数和获取查询结果。SQLite 是一个文件级数据库,可以直接操作本地文件,无需额外的数据库服务器。使用事务可以确保多个 SQL 操作的原子性。

2025-04-24 14:40:37 712

原创 Qt 使用 MySQL 数据库的基本方法

用于连接数据库,addDatabase() 设置数据库驱动。QSqlQuery用于执行 SQL 查询和命令,可以绑定参数和获取查询结果。通过事务可以确保多个 SQL 操作的原子性。在进行数据库操作时,确保处理好错误和异常情况。

2025-04-24 14:20:04 865

原创 Qt 中线程使用

适用于需要执行耗时操作并与界面进行交互的场景。适用于大量短任务的场景,避免了频繁创建和销毁线程的开销。使用信号和槽进行线程间的通信,确保线程安全。

2025-04-24 14:05:11 550

原创 QTcpSocket 和 QUdpSocket 来实现基于 TCP 和 UDP 的网络通信

在 Qt 中,您可以通过 QTcpSocket 和 QUdpSocket 来实现基于 TCP 和 UDP 的网络通信。以下是如何使用 Qt 实现这两种通信方式的简要示例。

2025-04-24 13:56:33 371

原创 QFile、QDataStream、QTextStream 和 QBuffer 的简要解释

QFile:用于文件操作,支持文本和二进制文件。QDataStream:用于二进制数据的序列化,支持与 QFile、QBuffer 等设备一起工作。QTextStream:用于文本数据的输入输出,支持文本编码处理。QBuffer:用于内存数据缓冲,模拟文件操作,但无需使用磁盘文件。

2025-04-22 14:13:35 743

原创 c++ static 和 extern 关键字

static 用于限制变量或函数的作用域,使其仅在当前文件或函数内可见。- extern 用于声明在其他文件中定义的变量或函数。- 不能将 static 和 extern 同时应用于同一变量或函数,因为它们的作用域是互相对立的。

2025-04-18 09:39:47 461

原创 qt 事件及事件过滤

Q_OBJECTpublic:protected:// 处理鼠标按下事件// 处理键盘按下事件// 绘制事件在上面的代码中,我们重载了 mousePressEvent() 来响应鼠标点击事件,以及重载了 keyPressEvent() 来响应键盘按键事件。paintEvent() 用来绘制文本。Qt 的事件机制为应用程序提供了强大的用户交互能力。你可以通过重载特定的事件处理函数来响应各种事件,如鼠标、键盘、绘制、窗口调整等。

2025-04-15 14:22:02 868

原创 Qt 自定义控件

你可以继承 QWidget 或者其他现有的 Qt 控件类来创建自定义控件。Q_OBJECTpublic:// 设置控件的初始大小protected:// 绘制事件:自定义按钮的外观// 设置按钮的背景色// 设置文本颜色// 鼠标点击事件:模拟按钮点击// 发射点击信号signals:// 自定义的点击信号Qt 支持使用样式表(QSS)自定义控件的样式,可以在自定义控件中结合 QSS 来设置控件的外观。

2025-04-15 14:06:10 1238

原创 QBitmap、QPixmap、QImage 和 QPicture 使用方法和特点以及转换

QBitmap、QPixmap、QImage 和 QPicture 都是 Qt 中用来处理图像和绘制的类。它们各自有不同的用途和特点,下面是每个类的详细解释:

2025-04-10 14:44:20 1008

原创 qt自定义信号槽需要注意的事项

如果你使用自定义类型作为信号和槽的参数,确保该自定义类型已经使用 Q_DECLARE_METATYPE 宏声明,以便 Qt 的元对象系统可以正确处理它。// 自定义类型然后你可以在信号和槽中使用这个自定义类型。

2025-04-07 14:30:02 1012

原创 Qt 资源文件(.qrc 文件)

Qt 资源文件(.qrc)是一个强大的工具,可以将资源文件嵌入到应用程序中,简化部署并避免外部文件路径问题。通过将常用的资源(如图片、样式表、配置文件等)包含在可执行文件中,可以提高程序的可移植性和可靠性。使用 .qrc 文件时,只需要将资源文件的路径添加到 .qrc 文件中,然后通过 😕 路径在代码中访问这些资源。这样,程序就能在没有外部文件的情况下运行,确保资源不会丢失。

2025-04-07 13:35:04 1405

原创 通过 PAM 模块集成外部服务来实现用户身份认证

PAM(Pluggable Authentication Module)是一种认证框架,允许开发者根据不同的需求编写自定义的认证逻辑。在 Linux 系统中,PAM 被广泛应用于 SSH、登录、sudo 等认证场景。通过编写自定义 PAM 模块,你可以在认证过程中调用外部服务,通常是通过 TCP 或 UDP 套接字进行通信,以便从外部系统验证用户的凭证(如用户名和密码)。为了与外部服务器通信,我们需要定义一个请求结构体和响应结构体,来封装发送和接收的数据。

2025-04-02 11:22:10 893

原创 在 Linux 中,可以使用 inotify 机制来监控目录中的文件创建事件

在 Linux 中,可以使用 inotify 机制来监控目录中的文件创建事件

2025-04-02 10:45:04 478

docker 详情学习笔记

docker 详情学习笔记

2023-04-06

StreamingMediaBroadcast-master.zip

StreamingMediaBroadcast-master.zip

2022-01-06

linux c 语言串口调试

用于linux 环境下c语言串口编程编程接收,发送,波特率配置。尤其对于接收串口数据必须采用无符号类型的字符数组去接收 一整行为例说明 整型的每一种都有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是有符号类型需要使用一个bit来表示数字的正负,比如16位系统中一个int能存储的数据的范围为–32768 ~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

2020-05-28

setup_CN_2052_11.8.2.9022_Professional_VBA_BONC.exe

企业版wps

2021-12-20

sscom串口调试工具

串口调试工具

2021-11-05

setup_CN_2052_11.8.0.8643_Professional_KVP_PDF_BONC.exe

企业版wps无广告

2021-12-20

win清除宏病毒文件。。。。。。

win清除宏病毒文件。。。。。。

2021-09-08

mingw-get.rar

win gcc安装

2021-11-04

系统iso镜像工具.rar

系统镜像制作工具

2021-11-05

空空如也

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

TA关注的人

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