自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt 文件操作

Qt 提供了一套强大的文件操作API,使得在各种应用场景下进行文件管理变得高效而简单。无论是在桌面应用程序、嵌入式系统还是移动应用中,浏览、读取、写入和管理文件及目录都是基本而重要的任务。

2024-09-24 00:00:00 1260

原创 QRegularExpression

QRegularExpression 是 Qt 5.10 引入的类,用于处理正则表达式。它提供了更现代和高效的正则表达式功能,支持 Perl 兼容的正则表达式(PCRE),与之前的 QRegExp 相比,性能和功能都得到增强。

2024-09-23 15:00:21 1197

原创 Python 数据类型

Python 是一门动态类型语言,支持多种数据类型。这些数据类型可以大致分为基本数据类型和高级数据类型。

2024-09-22 00:00:00 761

原创 Qt日志输出及QsLog日志库

本文主要介绍Qt日志输出系统和QsLog日志库的使用,QsLog是一个基于Qt的QDebug类的易于使用的记录器。

2024-09-21 00:00:00 1137

原创 Qt 常用数据类型

Qt常用数据类型的总结,主要介绍基础数据类型、字符串类型、QVariant。

2024-09-20 09:45:40 1601

原创 C++ 元编程

元编程的主要目的在于将各种计算从运行期提前至编译期进行,以实现程序运行时的性能提升。也正因如此,元编程是一种增加程序的编译时间,从而提升程序运行效率的编程技术。

2024-09-18 22:39:17 1623 1

原创 C++ 策略技术中的算法策略

策略模式是一种设计模式,允许在运行时选择算法的行为。在C++中,这可以通过模板和多态实现。策略类通常定义一个接口,各种不同的策略类实现这个接口,以提供具体的算法实现。

2024-09-15 00:00:00 894

原创 C++ 萃取技术——将萃取类模板用作模板参数

在 C++ 编程中,理解和应用 Trait 类模板是提高代码质量和灵活性的关键技术之一。Trait 类模板提供了一种机制,通过这种机制可以在编译时查询或设置有关类型的特定属性。这些属性可能包括类型的数学特性、行为特性、或者与类型相关的支持操作。

2024-09-14 00:00:00 1636

原创 Qt 实现自定义截图工具

本文使用Qt框架从头开始创建一个简单的屏幕截图工具。

2024-09-13 17:35:01 1251

原创 C++ 萃取技术——使用SFINAE特性的信息萃取

SFINAE(Substitution Failure Is Not An Error,替换失败并不是一个错误)是实现类型萃取中一个重要的技巧,它允许编译器在模板实例化过程中忽略那些会导致错误的替换,而不是产生编译错误。

2024-09-13 00:00:00 829

原创 C++ 萃取技术——值萃取

在 C++ 编程中,萃取技术(Traits)是模板元编程的一个核心概念,用于在编译时提供类型相关的信息。其中,值萃取(Value Traits)是一种特定形式的萃取技术,它允许程序员为不同的数据类型定义特定的属性或值。

2024-09-12 00:00:13 1137

原创 C++ 萃取技术——固定萃取技术

萃取技术用于对模板中的各种模板参数进行管理。这种技术往往是通过书写一个类模板来体现,而这种类模板也称为“trait类模板”。从表现上来说,trait类模板像一个中间件一样,夹在不同的功能代码之间,使代码之间结合或调用(交互)变得更加灵活。

2024-09-11 19:27:01 1088

原创 C++ 标准库的典型内容

C++ 标准库提供了一系列强大且灵活的工具和组件,用于简化程序设计和提高开发效率。它包含多种功能模块,涵盖了内存管理、数据结构、算法、输入输出操作以及类型特征等多个方面

2024-09-10 00:01:10 839

原创 C++ 模板进阶知识——类模板中可变参的逐步展开

在C++编程中,模板是一种强大的工具,用于增加代码的复用性和灵活性。本文深入探讨了类模板中可变参数(Variadic Templates)的使用及其逐步展开的技术。本文将通过具体示例解释如何在类模板继承中利用可变参数来创建更通用和灵活的代码结构。

2024-09-10 00:00:50 694

原创 C++ 模板进阶知识——stdenable_if

在 C++ 的模板编程中,控制模板的实例化是关键且复杂的一部分。std::enable_if 是一个模板元编程工具,用于基于编译时条件(如类型特征)来启用或禁用模板代码。这种技术不仅增强了代码的灵活性,还提高了类型安全性,是现代 C++ 开发者必须掌握的技能之一。

2024-09-09 00:03:24 731

原创 C++ 模板进阶知识——完美转发

完美转发是C++中一种高级的技术,用于在函数模板中转发参数至另一个函数,同时保持所有参数的值类别(左值、右值)和其他属性(如const修饰符)不变。这一技术主要通过模板和std::forward实现,并在泛型编程中尤为重要,因为它允许函数模板在不丢失任何参数信息的前提下传递参数。

2024-09-08 00:02:44 1013

原创 C++ 模板进阶知识——类型推断

类型推断(推导)这件事情在模板编程中经常出现,很多时候编译器都会做类型推断。这方面的相关知识在现代C++语言开发中是经常用到的,算是一个比较大的知识点,有必要对类型推断的知识理论做一些储备。

2024-09-07 00:00:00 1136

原创 C++ 模板进阶知识——万能引用

万能引用是C++11中引入的一个高级特性,它允许函数模板参数根据传入的实参自动成为左值引用或右值引用。这一特性极大地增强了模板函数的灵活性和通用性,使得编写可同时处理左值和右值的通用代码成为可能。

2024-09-06 00:00:32 1375

原创 C++ 模板基础知识——模板的特殊继承关系

模板的继承其实与普通的继承区别不大,但在模板的继承关系中,有一些比较特殊的继承关系。在C++中,本文将重点介绍两种特殊的模板应用方式:奇异的递归模板模式(CRTP)和混入(Mixins)。这些技术在提供编译时多态和代码复用方面具有独特的优势。

2024-09-05 00:00:55 1053

原创 C++ 模板基础知识——多态在模板中的应用

在C++中,模板和多态是两种强大的编程技术,它们可以用来创建灵活和可重用的代码。虽然多态通常与继承和虚函数(动态多态)关联,但在模板中使用时,主要涉及到编译时多态(静态多态)。

2024-09-04 00:01:06 1093

原创 C++ 模板基础知识——可变参数模板

可变参数模板(Variadic Templates)是C++11引入的新特性,允许模板定义中包含任意数量的模板参数。这大大简化了以往实现类似功能所需的复杂代码。

2024-09-04 00:00:51 1021

原创 C++ 设计模式——设计模式总结

设计模式是软件设计中常见问题的典型解决方案。它们是经过反复验证的、可重用的代码设计经验,用于解决在特定情境下反复出现的软件设计问题。

2024-09-03 00:00:00 963

原创 C++ 设计模式——解释器模式

解释器模式是一种特定于语言的模式,用于定义如何评估语言的句法或表达式。它适用于某些重复出现的问题,可以将一个需要解释执行的语言中的句子表示为一个抽象的语法树。这种模式通常被用于开发编程语言解释器或简单的脚本引擎。

2024-09-02 00:00:00 2389

原创 面向对象程序设计原则——里氏替换原则(LSP)

里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计中的一个重要原则,由芭芭拉·利斯科夫(Barbara Liskov)在1987年的会议演讲中首次提出。这个原则后来成为著名的SOLID原则之一,SOLID是五个面向对象设计原则的首字母缩写。其核心思想是:如果一个程序中使用了一个基类的对象,那么一定可以使用其子类的对象来替换它,而不会影响程序的正确性。简而言之,子类应该可以完全替代父类,而不会导致程序出错或行为异常。

2024-09-01 00:15:00 1117

原创 C++ 设计模式——访问者模式

访问者模式(Visitor Pattern)是一种行为设计模式,其目的是将数据结构与数据操作分离,使得在不修改已有程序代码的情况下,可以添加新的操作。这种模式通过定义一个访问者类,来改变一个元素类的执行算法。访问者模式使得你能够在不改变元素类的前提下,定义作用于这些元素的新操作。

2024-09-01 00:00:00 1597

原创 C++ 设计模式——职责链模式

职责链(Chain Of Responsibility)模式也叫责任链模式,是一种行为型模式,用于将一个请求传递给一个链中的若干对象,哪个对象适合处理这个请求就让哪个对象来处理。职责链看起来与传统数据结构中的“链表”非常类似。

2024-08-31 11:06:55 1264

原创 C++ 模板基础知识——类模板中的友元

在C++中,类模板中的友元关系可以是相当复杂的主题,因为它涉及到模板参数化和类型依赖的处理。友元在类模板中的使用可以帮助你在保持类封装的同时,允许特定的其他类或函数访问其私有或保护成员。

2024-08-31 00:01:13 1446

原创 C++ 设计模式——备忘录模式

备忘录(Memento)模式也称为快照(Snapshot)模式,是一种行为型模式,主要用于防止数据丢失。它通过对对象的状态进行备份,以便在未来需要时可以恢复这些数据。换句话说,该模式能够将某个时间点的对象内部状态保存下来,并在必要时根据保存的内容将该对象恢复到当时的状态。备忘录模式的结构比较简单,使用频率相对较低,但在特定场景下非常有用。

2024-08-30 13:55:04 1490

原创 C++ 设计模式——中介者模式

中介者模式(Mediator Pattern)是一种行为型设计模式,它允许对象间的通信被封装到一个中介者对象中。该模式的主要目的是减少多个对象和类之间的通信复杂性,通过创建一个集中的控制点来管理相互间的依赖关系。这种模式特别适用于大型系统中,可以帮助减少组件之间的直接交互,从而使其更易于维护和扩展。

2024-08-30 00:00:00 2383 1

原创 C++ 模板基础知识——类模板、变量模板与别名模板(超长纯享版)

类模板是用于生成类的模具。通过提供特定的模板参数,可以实例化出具体的类。这个概念与函数模板类似。

2024-08-29 14:24:50 1614 1

原创 C++ 设计模式——桥接模式

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们都可以独立地变化。这种模式通过组合的方式来代替继承,增加了系统的灵活性。

2024-08-29 00:00:00 1197

原创 C++ 设计模式——适配者模式

适配者模式(Adapter Pattern)是一种结构型设计模式,主要用于解决接口不兼容的问题。其核心思想是通过创建一个适配器类,将一个类的接口转换成客户端所期待的另一种接口。

2024-08-28 02:00:00 1052

原创 C++ 模版基础知识——函数模板

C++ 函数模板是实现代码重用和类型安全的重要工具。通过使用模板,开发者能够编写通用的函数,这些函数可以处理多种数据类型,而无需为每种类型编写重复的代码。这种灵活性使得 C++ 在泛型编程方面具有显著优势。

2024-08-28 00:30:00 1289

原创 C++ 设计模式——代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,通过代理对象控制对其他对象的访问。代理模式通常用于控制对某个对象的访问,提供额外的功能,如延迟加载、访问控制、日志记录等。其主要实现思想是在客户端和真正要访问的对象之间引入一个代理对象(间接层),于是,以往客户端对真正对象的访问现在变成了通过代理对象进行访问,代理对象在这里起到了一个中介或者桥梁作用。引人代理对象的主要目的是可以为客户端增加额外的功能、约束或针对客户端的调用屏蔽一些复杂的细节问题。

2024-08-27 00:00:21 1506

原创 C++ 设计模式——享元模式

享元模式也称为蝇量模式旨在解决面向对象程序设计中的性能问题。享元的英文名“Flyweight”意为“轻量级”,源于拳击比赛中较轻的选手。该模式的核心目标是让对象变得“轻”,即减少内存占用。在需要某个对象时,尽量共享已经创建的同类对象,以避免频繁使用 `new` 创建同类或相似的对象。在对象数量非常庞大的情况下,这种共享可以显著节省内存占用并提升程序运行效率。

2024-08-26 09:32:51 1291

原创 C++ 设计模式——状态模式

状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态发生变化时,动态地改变其行为。该模式的核心在于将状态相关的行为封装到独立的状态类中,使得对象的行为随状态而变化,从而减少冗余的条件判断。

2024-08-26 00:08:09 1212

原创 C++ 设计模式——组合模式

组合模式(Composite Pattern)是一种结构性设计模式,允许将一组对象组织成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的操作/使用/处理具有一致性。组合模式使得客户端可以以统一的方式对待单个对象和组合对象,从而简化了客户端代码的复杂性。

2024-08-25 19:31:10 1189

原创 面向对象程序设计原则——单一职责原则

单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的一个重要原则,指的是一个类应该只有一个原因引起变化,也就是说,一个类的职责应该单一,应该只做一类事情或者对外只提供一种功能 。

2024-08-24 19:24:01 1094

原创 C++ 设计模式——迭代器模式

迭代器模式是一种行为设计模式,旨在提供一种方法来顺序访问集合对象中的元素,而不暴露集合的内部结构。

2024-08-24 19:07:20 1154

原创 C++ 设计模式——命令模式

命令(Command)模式是一种行为型模式,它将请求封装为对象,从而使您能够使用不同的请求、排队请求或记录请求,以及支持可撤销的操作。

2024-08-23 09:16:25 1771

GitLab 入门教程:环境搭建与使用

GitLab 是一个开源的代码托管和协作平台,功能类似于 GitHub。它可以帮助团队管理代码库、跟踪任务、进行代码审查和持续集成/持续部署 (CI/CD)。 GitLab环境搭建流程: 下载: 从GitLab官方网站下载所需的安装包。 安装: 将下载的文件上传至/opt目录。 使用rpm进行安装。 进行基础配置,包括设置外部访问地址和时区。 安装完成后,进行重新配置和启动GitLab服务。 访问: 通过配置的地址访问GitLab。 获取默认的管理员账号(用户名为root,密码在/etc/gitlab/initial_root_password中,文件会在24小时后自动删除)。 可进行汉化配置和修改默认密码。 用户管理: 在管理员面板添加用户和创建群组。 用户权限包括Regular和Admin两种。 群组管理: 通过创建群组管理项目,设置不同的用户权限,如Guest, Reporter, Developer, Maintainer, Owner。 这个文档详细描述了如何从头搭建并配置一个GitLab环境,包括安装、配置、用户和群组管理的具体步骤​(Gitlab环境搭建)。

2024-08-14

Git 从入门到精通:版本控制实战指南

这份文档详细介绍了 Git 的基本概念、工作流程、操作命令以及与远程仓库(如 GitHub、码云)的交互。以下是文档内容的总结: Git的简介和历史:介绍了Git的起源,如何从一个为Linux内核项目设计的版本控制系统演变而来,并与集中式版本控制系统(如SVN)进行对比。 Git的工作原理:讲解了Git的分布式版本控制系统的特点,包括本地仓库与远程仓库的概念,以及Git的常见操作如克隆(Clone)、推送(Push)、拉取(Pull)等。 Git的安装与配置:提供了Git在Windows平台上的安装步骤,并介绍了如何配置用户名和邮箱。 创建Git仓库:详细说明了如何使用Git命令行和TortoiseGit(图形化工具)来初始化仓库。 Git的工作区域:解释了Git的三种工作区域——工作区、暂存区、本地仓库——以及它们之间的交互流程。 提交与管理文件:描述了如何在Git中添加、修改文件并提交到版本库,包括使用命令行和TortoiseGit的操作方式。 版本历史管理:介绍了如何查看和管理Git中的历史版本,并提供了前进和回退到不同版本的操作方法。

2024-08-14

mingw 编译的 osg3.6.5

对应 Qt 5.15.2版本 mingw 编译的 osg3.6.5 和 osgQOpenGL(osgQt) 环境变量设置: ..\OpenSceneGraph-mingw\3rdparty\bin ..\OpenSceneGraph-mingw\osg3.6.5\bin ..\OpenSceneGraph-mingw\osg3.6.5\share\OpenSceneGraph\bin

2024-08-10

空空如也

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

TA关注的人

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