自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT -- QSS界面优化

本文介绍了Qt样式表(QSS)的基本概念和应用方法。QSS借鉴CSS语法,用于美化Qt控件界面,支持字体、颜色、间距等样式设置。文章详细讲解了三种QSS设置方式:控件级样式设置、全局样式设置和文件加载样式表,并介绍了Qt Designer实时编辑样式的功能。同时,文章系统梳理了QSS支持的8种选择器类型及其语法规则,重点说明了类型选择器会同时影响子类样式的特性。通过具体案例演示了如何为按钮等控件设置样式,并指出QSS样式优先于C++代码设置的样式。

2025-12-10 17:10:52 1061

原创 QT -- 网络编程

Qt网络编程概述 Qt Network模块提供了一套跨平台的网络编程API,封装了从底层套接字到高层协议(如HTTP)的功能。其核心特点包括: 基于事件驱动和信号槽机制 提供QUdpSocket和QNetworkDatagram类实现UDP通信 支持客户端/服务器开发 UDP编程实现 服务器端实现 使用QUdpSocket绑定端口(如8080) 连接readyRead信号到处理函数 通过receiveDatagram接收数据报 处理请求后使用writeDatagram发送响应 客户端实现 创建QUdpSoc

2025-12-07 17:53:04 622

原创 QT -- 信号和槽

本文通过一个案例介绍了Qt框架中信号与槽机制的核心概念和使用方法。主要内容包括:1)使用PushButton控件和纯代码两种方式实现按钮切换"hello world"文本的功能;2)Qt窗口坐标体系的说明;3)信号与槽的基本概念和connect()函数的使用;4)如何查看内置信号和槽;5)自定义信号和槽的语法规范及实现方法。文章通过具体代码示例,展示了信号与槽的连接方式、emit触发信号的操作,以及自定义信号槽的实现过程,帮助读者理解Qt中对象间通信的核心机制。

2025-11-18 20:59:19 785

原创 QT-- 理解项目文件

本文详细解析了Qt项目文件的结构和功能,包括.pro工程文件、widget.h头文件、main.cpp主程序文件、widget.cpp实现文件和widget.ui界面设计文件。重点介绍了.pro文件中各配置项的作用,如模块添加、目标设置、文件包含等;分析了Qt项目的执行流程和信号槽机制;提供了Qt Creator常用快捷键和三种查阅帮助文档的方法。通过系统梳理Qt项目各组成部分的关系和功能,帮助开发者更好地理解Qt框架的工作机制和编程规范,提高Qt应用程序的开发效率。

2025-11-11 19:12:06 787

原创 QT -- 初识

本文介绍了在Qt中实现Hello World程序的两种方法:图形界面方式和纯代码方式。通过Qt Designer可以直观地添加标签控件并设置文本内容,使用快捷键Ctrl+R运行程序。在纯代码方式中,通过在Widget类构造函数中创建QLabel对象并设置文本实现功能。重点讲解了Qt的对象树机制,它通过父子关系自动管理对象内存,演示了自定义MyQLabel类来验证析构过程。针对中文乱码问题,建议使用Qt提供的qDebug替代cout进行日志打印,它能够自动处理编码问题且便于统一管理调试信息。文章还提供了完整的

2025-11-11 18:05:47 839

原创 Git的原理与使用 -- 远程操作

本文介绍了分布式版本管理系统的基本概念和远程仓库的创建与克隆操作。分布式版本管理系统允许每个用户拥有完整的代码副本和历史记录,通过克隆、修改和合并实现协作。创建远程仓库时需设置语言类型、.gitignore文件、开源许可证等选项,并配置README、Issue和Pull Request模板。克隆仓库支持HTTPS和SSH两种方式,其中SSH方式需提前生成公钥并添加到远程仓库。文章还详细说明了git config命令用于设置提交者的姓名和邮箱,以及SSH密钥的生成步骤。这些操作为代码协作开发提供了基础支持。

2025-10-31 18:37:12 1041

原创 Git的原理与使用 -- 分支管理

本文介绍了Git分支管理的基本概念和操作。主要内容包括:1. 分支的作用,允许独立开发不同功能而不干扰主分支;2. 创建、切换和合并分支的操作方法,包括git branch、git checkout等命令;3. 分支合并时的冲突处理机制;4. 分支删除的注意事项。文章通过具体命令示例和图示说明了分支的工作原理,特别强调了HEAD指针的作用和不同分支间的隔离性,以及如何解决合并冲突。最后指出Git鼓励使用分支开发再合并的工作方式,比直接在主分支工作更安全高效。

2025-10-29 18:58:09 980 1

原创 Git的原理与使用 -- 基础操作

Git入门指南:从安装到基本操作 本文介绍了Git的基本概念和操作流程。主要内容包括: Git简介:作为版本控制系统,Git可管理所有格式文件,但仅能记录文本文件的修改细节 安装配置:Linux下安装命令及用户信息配置方法 基本操作: 创建本地仓库(git init) 工作区、暂存区、版本区的关系 文件添加(git add)与提交(git commit) 重点概念:工作区修改需通过add和commit才能纳入版本管理,Git通过索引机制高效管理文件版本 150字完整摘要,涵盖Git安装、配置、核心概念和基本

2025-10-26 18:17:12 712

原创 C++ - 基于多设计模式下的同步&异步日志系统

日志系统摘要 日志系统是软件开发中重要的调试和维护工具,主要用于: 问题排查:在生产环境无法调试时,通过日志定位问题 流程追踪:帮助理解代码执行流程,特别是分布式/多线程场景 性能优化:避免频繁断点调试,提高问题排查效率 技术实现分为: 同步日志:直接写入文件,简单但性能较差 异步日志:采用生产者-消费者模型,主线程与日志线程分离,提高性能 日志系统实现涉及关键技术: 不定参函数:支持可变参数格式 设计模式:特别是单例模式(饿汉/懒汉)确保日志实例唯一性 设计原则强调: 单一职责 开闭原则 低耦合等 (14

2025-10-13 20:24:18 806

原创 MySQL表的内连和外连

本文介绍了MySQL中表连接的内连和外连两种方式。内连接通过WHERE子句筛选笛卡尔积,仅显示两表匹配的数据(如查询员工和部门信息)。外连接分为左外连接(以左表为核心,未匹配项显示NULL)和右外连接(以右表为核心),适用于需要保留单表全部记录的查询场景(如统计所有部门员工,包括空部门)。文中通过员工-部门等实例演示了语法差异,并指出实际开发中左外连接更常用,可通过调整表顺序替代右外连接。

2025-10-03 09:40:03 796

原创 MySQL复合查询介绍

本文展示了MySQL数据库的基本查询操作,包括员工信息查询、薪资分析等。主要内容包括:1)查询工资高于500或岗位为MANAGER且姓名以J开头的员工;2)按部门升序、工资降序排序;3)按年薪降序排序杜;;4)查询工资最高的员工;5)显示高于平均工资的员工;6)统计各部门平均和最高工资;7)筛选平均工资低于2000的部门;8)统计各岗位员工数和平均工资。这些操作涵盖了WHERE条件、排序、分组、聚合函数等基础SQL语法。

2025-10-01 15:32:14 1057

原创 MySQL内置函数使用介绍

MySQL日期与字符串函数使用示例 摘要:本文演示了MySQL中常用日期函数(current_date, current_time, date_add等)和字符串函数(charset, concat, length)的用法。包含创建日期表、留言表案例,展示如何计算日期差、格式化显示日期、查询时间范围内的数据,以及字符串拼接和长度计算等操作。通过实例代码直观呈现了获取系统时间、日期加减、字符串处理等常见数据库操作技巧。

2025-09-29 20:02:35 400

原创 MySQL表的基本查询

本文介绍了MySQL表的CRUD操作(增删改查),重点讲解了Create和Retrieve部分。在Create部分,演示了单行全列插入、多行指定列插入、插入否则更新(ON DUPLICATE KEY UPDATE)以及替换(REPLACE)操作;在Retrieve部分,展示了基本查询语法。通过学生表和学生成绩表的案例,详细说明了各种插入方式的区别和使用场景,包括主键冲突、唯一键冲突时的处理方式,并解释了不同操作返回的影响行数含义。

2025-09-06 15:55:50 959

原创 C++11语法介绍 -- 右值引用和移动语义

C++11引入了右值引用和移动语义,通过区分左值(可寻址的持久对象)和右值(临时对象或字面量)来优化资源管理。左值引用用于为左值取别名,而右值引用则专门处理临时对象。const左值引用可以绑定右值,但右值引用需通过move强制转换来引用左值。右值引用能延长临时对象的生命周期并允许修改,而const左值引用仅延长生命周期。移动构造函数和移动赋值运算符通过“窃取”右值资源而非拷贝,显著提升了深拷贝类(如string/vector)的效率。右值引用变量在表达式中表现为左值,这一设计在资源转移场景中尤为关键。移动语

2025-08-27 14:41:08 892

原创 C++语法介绍 -- 《 智能指针 》

本文分析了C++智能指针的使用场景与设计原理。主要内容包括: 智能指针解决传统指针在异常处理时的内存泄漏问题,通过RAII机制自动管理资源生命周期。 标准库提供的智能指针类型: auto_ptr(已废弃):采用所有权转移策略 unique_ptr:禁止拷贝,支持移动 shared_ptr:引用计数实现共享所有权 weak_ptr:解决shared_ptr循环引用问题 智能指针核心特性: 支持定制删除器 重载指针操作符(* -> []) 提供bool类型转换 特化处理数组版本 设计原理分析: uniqu

2025-08-25 19:19:37 1078

原创 MySQL表约束

本文介绍了MySQL中常用的表约束类型及其应用场景,主要包括: 空属性约束(NOT NULL):强制字段不能为空值,确保数据完整性 默认值(DEFAULT):为字段设置默认值,简化数据插入操作 列描述(COMMENT):用于字段注释说明 零填充(ZEROFILL):数字不足位数时自动补零显示 主键约束(PRIMARY KEY):保证字段值唯一且非空,用于标识记录 这些约束条件能有效规范数据输入,保证数据的合法性和业务逻辑的正确性。通过实际SQL示例和生活场景类比,展示了各种约束的具体应用方式及其重要性。

2025-08-13 20:51:45 909

原创 MySQL数据类型介绍

本文主要介绍了MySQL中的主要数据类型及其特性。数值类型部分详细讲解了tinyint的越界测试、bit类型的存储方式及M参数含义,以及float和decimal两种小数类型的精度差异。字符串类型重点对比了固定长度的char和可变长度的varchar,通过工位与背包的生动比喻说明两者在存储机制和适用场景上的区别。日期时间类型介绍了date、datetime和timestamp三种常用格式的表示范围和存储空间。文章通过具体案例演示了各类型的数据操作,并强调了数据约束的重要性,为数据库设计中的数据类型选择提供了

2025-08-05 21:18:21 653

原创 Linux中《动/静态库原理》

本文深入解析了ELF(Executable and Linkable Format)文件格式在编译链接过程中的关键作用。从目标文件(.o)生成、多文件合并到可执行文件加载,详细阐述了ELF文件的四种类型(可重定位、可执行、共享目标、核心转储)及其四部分结构(ELF头、程序头表、节头表、节)。重点介绍了readelf工具的使用方法,并通过实例展示了可执行程序加载时Section合并为Segment的过程,揭示了程序从编译到运行的底层实现机制。

2025-06-29 21:31:09 812

原创 Linux中《动/静态库制作》

库是预编译的可复用代码集合,分为静态库(.a/.lib)和动态库(.so/.dll)。静态库在编译时直接嵌入程序,运行时不再需要;动态库则在程序运行时加载,多个程序可共享同一库。静态库使用ar工具打包.o文件生成,动态库通过gcc的-shared和-fPIC选项生成。使用库时需要指定头文件路径(-I)、库路径(-L)和库名(-l)。动态库运行时需确保系统能找到库文件,可通过拷贝库文件、建立软链接、设置LD_LIBRARY_PATH环境变量或配置/etc/ld.so.conf.d/目录实现。

2025-06-27 14:37:40 693

原创 Linux -- Ext系列文件系统介绍

本文用生活化比喻解释了磁盘、服务器、机柜和机房的概念及其层级关系:磁盘类似存储数据的"抽屉",服务器是装有多个磁盘的"功能电脑",机柜如同存放服务器的"书架",机房则是保障设备运行的"图书馆大楼"。文中详细剖析了磁盘的物理结构(磁头、磁道、柱面、扇区)和CHS寻址方式,并通过Linux命令示例展示了磁盘容量计算方法。最后指出现代存储系统虽采用更先进技术,但传统磁盘结构仍是理解计算机存储的基础。

2025-06-17 21:06:58 758

原创 MySQL表操作

本文介绍了MySQL表的基本操作,包括创建表、查看表结构、修改表和删除表。创建表时需要指定字段名、数据类型、字符集和存储引擎等属性。查看表结构可使用DESC或SHOW CREATE TABLE命令。修改表包括添加/修改/删除字段、修改表名和字段名等操作,使用ALTER TABLE语句实现。删除表采用DROP TABLE命令,操作需谨慎。文章通过示例演示了各项操作的具体语法和执行效果,帮助用户掌握MySQL表的基本管理方法。

2025-06-13 21:21:55 483

原创 MySQL库操作

MySQL数据库基本操作指南摘要 本文介绍了MySQL数据库的基础操作命令: 查看数据库:使用show databases和select database()命令; 显示创建语句:show create database查看数据库创建信息; 修改数据库:主要修改字符集和校验规则,使用ALTER DATABASE命令; 删除数据库:DROP DATABASE命令会连带删除数据库文件夹; 备份恢复:使用mysqldump命令备份,source命令恢复,可备份单表或多库; 连接监控:show processlis

2025-06-13 19:58:52 488

原创 Linux中《基础IO》详细介绍

FILE:是C语言标准库中定义的一个结构体类型(struct),用来表示一个“文件流”,结构体里面封装了文件描述符fd,在操作系统的接口中,只认文件操作符fd。缓冲区是内存空间的⼀部分。也就是说,在内存空间中预留了⼀定的存储空间,这些存储空间⽤来缓冲输⼊或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输⼊设备还是输出设备,分为输⼊缓冲区和输出缓冲区。缓冲区就是一段内存空间。

2025-06-09 20:35:34 1108

原创 Linux中《进程控制》详细介绍

本文介绍了Linux进程管理的核心概念和方法,主要包括三个部分:进程创建、进程终止和进程等待。 在进程创建部分,详细讲解了fork函数的工作原理,包括其返回值机制和写时拷贝技术,解释了如何通过fork创建父子进程以及资源分配过程。 进程终止部分阐述了进程退出的三种场景(正常正确、正常错误和异常终止),对比了exit()和_exit()函数的区别,并介绍了退出码的含义及其获取方法。 进程等待部分说明了父进程等待子进程的必要性,重点介绍了wait和waitpid两种系统调用,包括参数设置、返回值解析以及如何获取

2025-06-08 21:05:42 702

原创 MySQL数据库基础

本文介绍了数据库的基本概念和使用方法。首先分析了传统文件存储的缺点(安全性低、查询管理困难等),说明数据库作为专业数据管理解决方案的优势。文章详细讲解了MySQL的服务器连接、数据库管理、表操作等基本命令,并通过示例演示了数据库创建、表操作和数据查询等核心功能。同时剖析了MySQL的三层架构(连接层、服务层、存储引擎层)和SQL语言分类(DDL、DML、DCL)。最后对比了不同存储引擎的特性,指出MySQL采用插件式存储引擎架构,可根据场景选择适合的引擎。全文为初学者提供了MySQL数据库的入门指南。

2025-06-02 17:07:16 776

原创 C语言输入函数对比解析

哈哈,看来你正在和C语言的输入函数们玩“大家来找茬”!放心,我会用最接地气的方式给你讲明白,保证比看《甄嬛传》还精彩。咱们先上结论:fgets是输入函数界的防弹衣,其他函数可能是皇帝的新装。下面进入正片环节

2025-05-17 21:09:26 1117

原创 Linux中《进程》详细介绍

可以这样,但是效率太低了,CPU的速度是以纳秒为单位的,而外设的速度是以毫秒为单位的,CPU都已经把数据处理完了,但是外设还没有把数据拷贝过来,根据木桶效应,这样会降低效率。,体现在父进程创建子进程的时候,会把父进程的PCB,拷贝给子进程,子进程和父进程的PCB大部分都是一样的,所以子进程有自己的PCB。因为一个父亲可以有多个子进程,所以如果是父进程的话,需要返回子进程的pid,便于区分,哪个是哪个子进程,而子进程返回0,是为了标识,这是一个子进程,我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。

2025-03-30 11:29:49 752

原创 Linux中《进程地址空间》详细介绍

父进程创建时,会同时创建PCB,struct mm_struct,页表,并加载父进程对应的代码和数据,将物理内存中的地址转化为虚拟地址,再构建页表映射,子进程拷贝父进程的PCB,struct mm_struct,页表,当子进程修改数据时,OS为了进程的独立性,发生写时拷贝,再修改子进程虚拟地址映射的物理地址,所以虚拟地址是相同的,物理地址不同。在早期的计算机中,要运⾏⼀个程序,会把这些程序全都装⼊内存,程序都是直接运⾏在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。

2025-03-30 11:29:26 1002

原创 Linux中《进程状态--进程调度--进程切换》详细介绍

当内存资源不足时,将wait_queue里的进程的代码和数据唤出到磁盘当中swap交换分区。如果次数键盘就绪了,OS会把磁盘当中该PCB的代码和数据再重新加载到内存,构建指针映射,这个也叫做唤入。我们把这个称为阻塞挂起,运行挂起也是同样的道理。

2025-03-29 14:17:23 1323

原创 Linux中《环境变量》详细介绍

同时bash进程内部也会维护一张命令行参数表,用户输入命令后,是bash先拿到,bash先把命令行的一串字符,以空格为分隔符进行切分,把切分的内容放到一个字符数组中,利用PATH环境变量,找到对应的指令,进行执行。当用户登陆时,操作系统会给用户创建一个bash进程,bash进程会从操作系统的配置文件中读环境变量信息,并在bash内部创建一张环境变量表,一个指针数组的样子。没错,就是环境变量的作用,环境变量里的。记录了一些指定的路径,系统默认会在指定的路径下查找,也就是说,从系统的配置文件里来的!

2025-03-29 14:16:01 1158

原创 Linux中基础开发工具详细介绍

• 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.• 但是这样太麻烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.• 软件包和软件包管理器, 就好⽐ “App” 和 “应⽤商店” 这样的关系.

2025-03-13 18:35:13 951 1

原创 Linux权限介绍

Linux中的粘滞位(Sticky Bit)是一种特殊的文件系统权限标志,主要用于目录,以限制对目录中文件的删除和重命名操作.一个文件是否能被删除,与文件的rwx权限本省无关,以文件所处的目录w权限有关.任何一个人都能在共享目录下新建文件,但是不能让文件非拥有者删除文件.:假设当前用户是 user1,工作目录是 /home/user1,执行 su - user2 后,用户身份切换到 user2,工作目录会变为 /home/user2,并且加载了 user2 的环境变量和配置文件。

2025-02-19 09:32:06 882

原创 Linux中sudo命令的详细介绍

名称:sudo = Super User DO(以超级用户身份执行)作用:允许普通用户临时以 root(超级管理员)或其他用户的权限执行命令。核心价值:在保证系统安全的前提下,赋予用户有限的提权能力。

2025-02-18 14:24:09 1122

原创 C++高阶数据结构 -- 《 图 》

有向图和无向图:在有向图中,顶点对是有序的,顶点对称为顶点x到顶点y的一条边(弧),

2024-12-23 19:03:21 1011

原创 C++高阶数据结构 --《 并查集 》

从上图可以看出:编号6,7,8同学属于0号小分队,该小分队中有4人(包含队长0);编号为4和9的同学属于1号小分队,该小分队有3人(包含队长1),编号为3和5的同学属于2号小分队,该小分队有3个人(包含队长1)。注意:这里的初始化状态是-1,表示一棵树,该位置是根。特点:跟堆类似,用下标表示关系, 双亲表示法(父亲)(根位置为负数,孩子位置为双亲的下标)这里表示10棵树,10个集合。

2024-12-19 09:35:19 810

原创 C++--map和set的使用介绍

set的声明如下,T就是set底层关键字的类型set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现仿函数传给第⼆个模版参数大于比较set底层存储数据的内存是从空间配置器申请的,如果需要可以⾃⼰实现内存池,传给第三个参数。⼀般情况下,我们都不需要传后两个模版参数。set底层是⽤红黑树实现,增删查效率是O(logN) ,迭代器遍历是⾛的搜索树的中序,所以是有序的。map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型。

2024-11-28 10:32:29 867

原创 C++--多态语法介绍

多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。

2024-11-17 17:54:12 1064 1

原创 二叉搜索树介绍

所以综合而言⼆叉搜索树增删查改时间复杂度为: O(N)那么这样的效率显然是⽆法满⾜我们需求的,后续还会继续讲解⼆叉搜索树的变形,平衡⼆叉搜索树AVL树和红⿊树,才能适⽤于我们在内存中存储和搜索数据。

2024-11-17 16:01:20 694

原创 C++中的stack和queue介绍

stack的介绍堆栈是一种容器适配器,专门设计用于在后进先出(LIFO)的上下文中操作,其中元素仅从容器的一端插入和提取。queue的介绍队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列.底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。

2024-10-28 20:59:13 975

原创 C++中的list介绍(常用函数)

list的文档及介绍。list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。以下为list中一些常见的重要接口。

2024-10-22 14:59:06 880

空空如也

空空如也

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

TA关注的人

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