自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 指针和引用

指针是一个变量,它存储的是另一个变量的内存地址。通过这个地址,我们可以间接访问或修改目标变量。int* p;(指向整型的指针)p = &a;取地址运算符)*p = 10;解引用运算符)指针本身占用独立的内存空间(32位系统4字节,64位系统8字节),可以重新指向不同的对象,也可以为nullptr(空指针)。指针:强大灵活,但需要手动管理内存和判空,容易出错。适合动态分配、可选参数、指针算术等场景。引用:简洁安全,不可重新绑定且不能为空,适合函数参数、返回值优化、运算符重载等场景。const 指针。

2026-05-20 22:18:13 460

原创 C++面向对象三大特性

特性核心作用实现方式封装隐藏内部数据,提供安全接口privateprotected成员继承复用代码,建立 is-a 关系多态同一接口,不同行为(扩展性)虚函数(运行时),模板/重载(编译时)理解虚函数表(vtable)和虚指针(vptr)是掌握多态的关键每个有虚函数的类都有一张vtable。每个对象都有一个vptr 指向 vtable。通过 vptr 间接调用虚函数实现了运行时动态绑定。基类析构函数必须是虚函数,否则派生类资源无法正确释放。

2026-05-20 21:23:08 410

原创 C++11异常处理机制

当标准异常无法满足需求时,我们可以自定义异常类。最佳实践是继承自 std::exception并重写what()方法。​public:private:// 不会执行func_c();// 不会执行try {func_b();func_a();return 0;​当一个异常被抛出后,程序会从异常抛出点开始,沿着函数调用链向上查找匹配的 catch 块。在这个过程中,会自动调用所有已经构造完成的局部对象的析构函数释放它们占用的资源。

2026-05-09 20:22:27 366

原创 RAII 机制

RAII 不是什么复杂的语言特性,它是一种贯穿整个 C++ 编程的设计习惯。把资源当作对象,把对象的生命期当作资源的生命期。信任析构函数,它是你最强的清理保证。不要害怕异常,RAII 会让异常变得安全。

2026-04-28 21:59:27 463

原创 左值和右值:从根源理解 C++ 的引用与移动语义

特性左值引用 (T&)右值引用 (T&&)绑定对象左值右值(或通过 std::move 转换的左值)典型用途参数传递、避免拷贝移动语义、完美转发const 版本可绑定右值?是,延长生命周期不适用本身是左值?是是可修改性可以(除非 const)可以现代 C++ 的内存和性能优化大部分建立在这套左右值机制之上。左值引用管“持久对象”,右值引用管“临时/即将销毁的对象”。std::move 不是移动,而是给左值贴上“可移动”的标签。std::forward 用来保持值类别。

2026-04-28 21:38:52 412

原创 C++ 标准目录结构

目录作用是否提交 Gitbin/可执行文件❌lib/库文件❌include/头文件✅src/源文件✅tests/测试代码✅examples/示例代码✅docs/文档✅第三方库✅(或子模块)build/编译中间文件❌。

2026-03-26 17:22:22 427

原创 Qt常用的事件函数

在Qt中,事件(Event)是应用,用于通知对象某些事情发生了。例如,等都会产生相应的事件。通过重写特定的事件处理函数,我们可以对用户交互或系统事件做出自定义响应。本文将详细介绍Qt中最常用的几类事件处理函数,包括鼠标事件、键盘事件和定时器事件。

2026-02-24 21:46:03 856

原创 怎么修改Clion的背景颜色

此时点击右边的按钮就可以修改十六进制,从而修改背景颜色,我这用的是浅绿色的,十六进制是:E8F5E9FF。

2026-02-24 21:07:38 146

原创 Qt事件系统

事件(Event)在Qt中是由QEvent类及其子类表示的对象,它们描述了应用程序内部或外部发生的各种事情,比如鼠标点击、键盘按下、窗口关闭、定时器超时等。事件可以由窗口系统产生,也可以由Qt应用程序自身生成,并通过事件循环分发到对应的对象进行处理。用户操作 → 生成事件 → 进入事件队列 →exec()取出事件→notify()派发并检查过滤器→分发→ 调用具体的等处理函数。accept()用户触发事件:例如按下键盘按键或点击鼠标。操作系统接收:操作系统捕获硬件事件,并将其转换为系统级消息。

2026-02-23 13:07:40 972

原创 QString常用方法详解与Qt容器深度对比

特性Qt5 QListQt6 QList存储方式存储T或T*的混合数组连续内存,类似std::vector内存布局非连续(大对象)连续性能插入删除快,随机访问慢随机访问快,插入删除可能慢兼容性与Java ArrayList类似与std::vector类似推荐用途存储指针或小对象通用容器,替代QVector优先使用UTF-8编码处理网络和文件数据利用arg()进行字符串格式化避免sprintf对于路径操作,使用QDir和QFileInfo而非手动解析注意QString的。

2026-02-10 18:18:46 1025

原创 进程间通信

在操作系统中,多个进程协同工作时难免需要交换数据、共享资源,这就需要可靠的进程间通信(IPC)机制。但进程间的独立性可能导致数据竞争、操作冲突等问题,因此一套完善的 IPC 机制需解决同步、互斥、数据传递三大核心挑战。本文将结合操作系统底层原理与可运行代码实现,详细拆解进程间通信的关键技术。机制核心特点适用场景优点缺点核心代码片段关键词忙等互斥(屏蔽中断)单 CPU 下屏蔽中断,防止进程切换内核临界区、短等待场景实现简单,无进程切换开销多 CPU 无效,风险高(可能导致系统挂起)

2026-02-02 21:47:00 550

原创 进程和线程

线程是进程内的轻量级执行单元,是操作系统调度的基本单位。它共享所属进程的所有资源(包括虚拟地址空间、文件描述符等),仅保留独立的核心执行状态:程序计数器(记录下一条指令地址)、寄存器集合、栈空间(存储函数调用与局部变量)。简单说,进程是 “资源容器”,线程是容器内 “干活的执行流”。定位差异:进程是 “资源分配的基本单位”,负责隔离资源、保证安全;线程是 “调度的基本单位”,负责高效执行、提升并发。特性互补:进程的资源独立性带来了隔离性与稳定性,但开销较高;

2026-01-30 15:25:14 604

原创 Java的IO流

是Java中用于表示文件和目录路径的类,提供了丰富的文件操作方法。

2026-01-25 23:19:47 573

原创 Stream流

Stream API是现代Java编程中不可或缺的工具。它通过声明式的方式让数据处理变得更加简洁、优雅和高效。

2026-01-23 23:22:20 626

原创 MySQL进阶

事务是一组要么全部成功、要么全部失败的SQL操作。示例:银行转账-- 开始事务-- 操作1:从A账户扣款-- 操作2:向B账户存款-- 如果两个操作都成功,则提交COMMIT;-- 如果任何一个失败,则回滚ROLLBACK;索引是帮助MySQL快速查找数据的数据结构,就像书的目录。没有索引:需要逐行扫描整个表有索引直接定位到数据位置视图是基于SQL查询的虚拟表,不存储实际数据。示例-- 创建视图FROM users-- 使用视图。

2026-01-03 18:13:52 977

原创 Dockerfile

Dockerfile 是一个文本文件,包含了一系列构建 Docker 镜像的指令。通过 Dockerfile,开发者可以定义应用程序运行所需的环境、依赖和配置,实现构建过程的自动化、标准化和版本控制。Docker 通过读取 Dockerfile 中的指令,按顺序自动构建镜像,确保环境一致性和可重复性。

2026-01-02 17:06:41 1066

原创 IO多路复用

/ 相关宏操作// 清空集合// 添加fd到集合// 从集合移除fd// 检查fd是否在集合中nfds:最大文件描述符值+1(因为从0开始检查)readfds:监控可读事件的fd集合writefds:监控可写事件的fd集合exceptfds:监控异常事件的fd集合timeout:超时时间NULL:永久阻塞0:立即返回0:等待指定时间0:就绪的文件描述符数量0:超时-1:出错int fd;// 文件描述符// 等待的事件// 实际发生的事件fds:pollfd结构数组nfds。

2025-12-29 19:55:33 725

原创 MySQL基础语句

CREATE DATABASE [IF NOT EXISTS] 数据库名称[CHARACTER SET 字符集名称][COLLATE 校对规则];-- 创建数据库-- 创建数据库,如果不存在-- 创建数据库并指定字符集类别核心语句主要用途DDLCREATEALTERDROPTRUNCATE定义和管理数据库结构DMLINSERTUPDATEDELETE操作表中的数据DQLSELECT查询数据TCLCOMMITROLLBACKSAVEPOINT控制事务DCLGRANTREVOKE。

2025-12-26 20:25:09 710

原创 Docker容器数据卷

容器数据卷是Docker容器中用于持久化存储数据的特殊目录。它可以将容器内的数据目录映射到宿主机的目录,实现数据的持久化和共享。只指定容器内目录,不指定宿主机目录,由Docker自动创建挂载点。给数据卷指定一个名称,便于管理和识别。明确指定宿主机路径和容器内路径的挂载方式。数据卷容器是一个专门用于提供数据卷给其他容器挂载的容器。它本身不运行应用,只用于数据共享。Docker数据卷是容器数据持久化的核心机制,通过灵活使用匿名挂载、具名挂载和指定路径挂载,可以满足不同场景的需求。

2025-12-25 23:09:59 897

原创 设计模式C++版(工厂模式)

简单工厂模式(Simple Factory Pattern)是最简单的工厂模式,也称为静态工厂方法模式。它定义一个工厂类,根据传入的参数不同创建不同的产品实例。工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,但让子类决定实例化哪个类。工厂方法让类的实例化推迟到子类。抽象工厂模式(Abstract Factory Pattern)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

2025-12-24 22:07:50 969

原创 docker基础常用命令

显示所有镜像(显示--digests:显示镜像的摘要信息--no-trunc:不截断输出(显示完整的镜像ID。

2025-12-24 10:42:26 1040

原创 设计模式C++版(单例模式)

应用场景配置管理类日志记录器线程池数据库连接池缓存系统选择建议如果实例创建开销小且始终需要:使用饿汉模式如果需要延迟加载:使用局部静态变量方式(C++11+)如果需要更多控制:使用原子变量+DCLP如果不需要线程安全:使用简单懒汉模式单例模式是设计模式中最简单但最常用的模式之一,正确实现需要考虑线程安全、资源管理等因素。在C++中,使用局部静态变量是最简洁安全的实现方式(C++11及以上)。

2025-12-23 20:13:34 1022

空空如也

空空如也

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

TA关注的人

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