自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CentOS7安装MySQL5.7服务

【CentOS7.6切换国内yum源及MySQL安装指南】本文介绍了CentOS7.6最小安装版本切换国内yum源的有效方法,并详细记录了MySQL5.7的安装过程。关键步骤包括:1)确保源可用后下载MySQL官方rpm包;2)解决安装时的GPG密钥报错问题(需导入MySQL的RPM-GPG密钥);3)安装MySQL社区版服务器;4)可选安装MySQL开发头文件。文章提供了完整的命令序列,特别针对安装过程中可能出现的密钥验证错误给出了解决方案。

2025-09-23 20:36:57 281

原创 LeetCode 算法题 1~3 题 C++

本文介绍了三个经典算法题的解法:1.两数之和问题使用哈希表存储遍历过的数,在O(n)时间内找到和为target的配对;2.两数相加问题通过链表遍历模拟加法运算,处理进位并生成结果链表;3.无重复字符的最长子串问题采用滑动窗口技术,维护一个字符哈希表,在O(n)时间内找到最长不重复子串。这些解法都利用了哈希表或双指针等高效算法,展现了常见算法问题的优化思路。

2025-09-16 10:41:47 478 1

原创 Qt 详谈信号与槽(二)

本文介绍了Qt中信号与槽机制的自定义实现方法和连接方式。主要内容包括:1. 自定义信号和槽的语法规范(信号声明在signals下,槽函数可在public或全局作用域);2. 带参数信号槽的使用和参数匹配规则;3. 四种连接方式(一对一、一对多、多对一、信号连信号);4. 其他特性如Qt4连接方式、Lambda表达式槽函数;5. 信号槽机制的优缺点(松散耦合但效率较低)。通过多个示例详细说明了信号槽的实际应用场景和注意事项。

2025-09-01 21:05:29 880

原创 Qt 详谈信号与槽(一)

摘要:Qt的信号和槽机制是其核心特性之一,用于实现对象间的事件驱动通信。信号由用户操作触发(如按钮点击),槽是对信号响应的函数。通过QObject::connect()函数将信号与槽关联,实现控件间的交互(如点击按钮关闭窗口)。系统信号和槽可通过Qt帮助文档查询,Qt Creator支持可视化生成槽函数代码(遵循on_XXX_SSS命名规则)。该机制底层通过函数调用实现,信号函数只需声明,槽函数需实现。开发者既可依赖IDE自动生成连接,也可显式使用connect确保可靠性。

2025-09-01 20:45:06 892

原创 Qt 概述

Qt是一个跨平台C++图形用户界面框架,支持Windows、Linux、macOS、Android等多个平台。自1991年发展至今,Qt已广泛应用于桌面应用、移动开发、嵌入式系统等领域,典型案例包括KDE、WPS、Skype等。Qt具有跨平台、易上手、开发效率高等优势,提供商业和开源两种许可模式。随着物联网、自动驾驶等行业发展,Qt在嵌入式、车载系统等领域的应用前景广阔,相关技术人才需求旺盛、薪资可观。最新版本为Qt6,但Qt5在企业中仍广泛使用。

2025-08-30 21:05:41 1149

原创 Linux 详谈线程同步与互斥

本文主要介绍了线程互斥与同步的实现机制。在互斥方面,详细讲解了临界资源、临界区、互斥量等概念,并通过售票系统案例演示了不加锁导致的数据竞争问题,提出使用mutex互斥量进行保护。在同步方面,介绍了条件变量的使用场景,包括初始化、等待和唤醒等操作,并通过示例展示了pthread_cond_wait和pthread_cond_signal/broadcast的使用方法。文章还展示了如何采用RAII风格封装互斥锁,以提高代码的安全性和易用性。这些机制能有效解决多线程环境下的数据竞争和时序问题。

2025-08-30 20:46:12 845

原创 Linux 详谈线程概念与控制(二)

Linux进程与线程控制摘要 Linux中进程是资源分配的基本单位,线程是调度的基本单位。线程共享进程的地址空间(代码段、数据段等)和资源(文件描述符、信号处理方式等),但也拥有自己独立的线程ID、寄存器组和栈空间。POSIX线程库提供了线程控制函数,包括: pthread_create()创建线程 pthread_exit()终止线程 pthread_cancel()取消线程 pthread_join()等待线程结束并获取返回值 pthread_detach()分离线程自动释放资源

2025-08-29 21:45:37 1286

原创 Linux 详谈线程概念与控制(一)

本文主要介绍了线程和分页式存储管理的核心概念。线程作为进程内部的执行流,具有轻量化、切换开销小等优点,但也存在编程复杂、健壮性降低等缺点。分页式存储管理通过虚拟地址和页表机制,将连续虚拟内存映射到不连续的物理内存页,解决了内存碎片问题。文章详细阐述了页表结构、地址转换流程以及缺页异常处理机制。两级页表的设计虽然减少了内存占用,但增加了查询开销,因此引入了TLB快表来提升效率。线程适用于提高CPU密集型和IO密集型程序的性能,但异常会导致整个进程终止。

2025-08-29 21:35:28 817

原创 Linux 详谈Linux进程信号(二)

本文主要探讨操作系统中的信号处理机制和中断系统。信号捕捉部分详细解释了用户自定义信号处理函数的执行流程,包括内核态与用户态的切换过程,并介绍了sigaction函数的使用方法。中断系统部分阐述了硬件中断、时钟中断和软中断的工作原理,揭示了操作系统通过中断驱动的本质,分析了系统调用通过软中断实现的机制。文章还讨论了可重入函数的概念及条件,并通过实例展示了volatile关键字在防止编译器优化、确保内存可见性方面的重要作用。整体上,文章从底层角度剖析了操作系统处理信号和中断的核心机制,帮助理解系统调用的实现原理

2025-08-28 11:02:02 904

原创 Linux 详谈Linux进程信号(一)

本文主要介绍了Linux系统中的信号处理机制。信号是进程间异步事件通知的一种方式,属于软中断。文章通过快递取件的日常例子类比信号处理过程,解释了信号识别、保存和处理的三个阶段,并介绍了三种信号处理方式:默认动作、忽略和自定义捕捉。通过代码示例演示了如何产生信号(键盘中断、系统命令、函数调用)和处理信号,包括使用signal()函数设置信号处理程序,以及信号的默认、忽略和自定义处理方式。

2025-08-28 10:46:52 909

原创 Linux 详谈进程间通信(二)

本文介绍了两种进程间通信(IPC)方式:命名管道和共享内存。命名管道通过mkfifo创建,允许无关进程通信,其打开行为受O_NONBLOCK影响,并提供了文件拷贝和服务端-客户端通信的实现示例。共享内存是最高效的IPC形式,通过shmget创建、shmat/shmat控制连接,但缺乏同步机制,需配合管道实现访问控制。文中详细说明了相关系统调用,并给出两个完整应用案例:基础通信版本和带同步控制的改进版本,展示了如何结合管道实现共享内存的互斥访问。

2025-08-27 16:06:31 1006

原创 Linux 详谈进程间通信(一)

本文介绍了进程间通信(IPC)的概念和实现方式,重点讲解了管道通信机制。主要内容包括:进程间通信的目的(数据传输、资源共享、通知事件、进程控制)、发展历程及分类;管道的基本概念和原理,详细分析了匿名管道的创建、使用和实现机制;通过实例代码演示了管道读写操作,包括父子进程间通信;展示了使用管道创建进程池处理任务的完整实现方案;总结了管道通信的特点和限制(仅适用于亲缘进程、半双工、流式服务等)。文章还深入探讨了管道在内核层面的实现本质,以及在不同场景下的读写规则和行为表现。

2025-08-27 15:42:00 902

原创 Linux 详谈库制作与原理

本文介绍了程序开发中的库(静态库和动态库)及其编译链接原理。静态库(.a/.lib)在编译时被链接到可执行文件中,而动态库(.so/.dll)在运行时加载。文章详细说明了如何生成和使用这两种库,包括Makefile编写、路径设置和环境变量配置等。同时,文章深入探讨了ELF文件格式,包括可重定位文件、可执行文件和共享目标文件的结构,以及section和segment的区别与合并原则。通过分析ELF头、程序头表和节头表,解释了链接视图和执行视图的不同作用,帮助读者理解程序从编译、链接到加载运行的全过程。

2025-08-26 16:00:57 1214

原创 Linux 详谈软硬链接

本文介绍了Linux系统中的两种链接方式:硬链接和软链接。硬链接通过inode实现多个文件名指向同一文件,删除时仅减少链接数;软链接则类似快捷方式,通过文件名引用目标文件。两者关键区别在于:硬链接是inode映射,软链接是独立文件。硬链接常用于目录结构(如.和..)及文件备份,软链接则用于创建文件快捷方式。文章还对比了文件访问、修改和属性变更的三个时间属性。

2025-08-26 15:41:46 930

原创 Linux 详谈Ext系列⽂件系统(二)

本文主要介绍了Linux文件系统的核心概念和工作原理。首先解释了硬盘数据存取的基本单位"块"(block)及其与扇区的关系,以及分区的概念。重点阐述了inode的作用,它是存储文件元信息的结构,每个文件对应一个唯一的inode号。 文章详细描述了ext2文件系统的组织结构,包括超级块(SuperBlock)、块组描述符表(GDT)、块位图、inode位图、inode表和数据区等组成部分。通过创建新文件的例子,说明了文件存储的具体过程。

2025-08-25 23:13:46 1097

原创 Linux 详谈Ext系列⽂件系统(一)

本文介绍了磁盘的物理和逻辑结构。磁盘通过CHS(柱面、磁头、扇区)寻址定位数据,但其容量受限。逻辑上,磁盘可视为线性结构,采用LBA(逻辑块地址)编址方式。LBA与CHS可相互转换:LBA=柱面号×单个柱面扇区总数+磁头号×每磁道扇区数+扇区号-1。操作系统只需使用LBA地址,磁盘内部会自动完成地址转换。这种机制使磁盘在逻辑上成为一个以扇区为元素的一维数组,简化了数据访问过程。

2025-08-25 22:30:48 980

原创 MySQL数据库 详谈用户管理

MySQL用户管理是保障数据库安全的重要措施。文章介绍了用户信息查看、创建、删除及密码修改等操作,重点讲解了权限管理:通过grant命令授予用户特定数据库权限,使用revoke回收权限。演示了创建用户'yzk'并赋予test数据库查询权限的实例,强调权限变更后需执行flush privileges确保生效。同时提醒避免创建可从任意主机访问的用户,以提高安全性。

2025-08-19 07:00:00 469 1

原创 MySQL数据库 详谈索引(二)

MySQL索引原理与操作摘要 本文深入探讨了MySQL索引的工作原理和实际操作。首先解释了MySQL数据存储的基本单位Page(16KB)及其与内存Buffer Pool的交互机制,强调了减少磁盘IO次数的重要性。通过示例演示了主键索引如何自动排序数据,并分析了B+树作为索引结构的优势:多阶特性降低树高、非叶子节点只存键值、叶子节点相连便于范围查询。 对比了InnoDB的聚簇索引(数据与索引共存)和MyISAM的非聚簇索引(数据与索引分离),解释了回表查询的原理。详细介绍了各类索引的创建方式(主键、唯一、普

2025-08-19 06:00:00 1069

原创 MySQL数据库 详谈索引(一)

文章摘要:本文探讨了MySQL索引的重要性、磁盘存储原理及MySQL与磁盘交互机制。首先指出没有索引会导致海量数据查询效率低下,通过案例演示创建索引后查询速度提升数百倍。其次介绍磁盘存储结构,解释扇区、柱面等概念,说明操作系统以4KB为基本IO单位。最后揭示MySQL InnoDB引擎以16KB为基本交互单位(称为page),远大于磁盘默认512字节扇区,以此提高IO效率。文章强调了索引"空间换时间"的特性及硬件与软件间的IO优化策略。

2025-08-18 06:30:00 1243

原创 MySQL数据库 详谈表的内连和外连

SQL表连接分为内连接和外连接。内连接通过WHERE或INNER JOIN筛选两表的笛卡尔积,是开发中最常用的连接方式。外连接包括左外连接(LEFT JOIN)和右外连接(RIGHT JOIN),分别保留左表或右表的全部记录,不匹配的记录显示为NULL。左外连接语法为"表1 LEFT JOIN 表2 ON 条件",右外连接语法类似。典型应用场景包括:显示所有学生成绩(含无成绩学生)或所有部门信息(含无员工部门)。文章最后推荐了两道LeetCode数据库题目供练习。

2025-08-18 06:00:00 591

原创 MySQL数据库 详谈复合查询

本文介绍了MySQL数据库查询的进阶操作,主要包括:1.多表查询,通过关联条件连接不同表获取数据;2.自连接,在同一表中建立关联查询;3.子查询的多种形式,包括单行、多行、多列子查询以及在FROM子句中使用子查询;4.合并查询(UNION和UNION ALL)。文中通过员工管理系统示例详细演示了各类查询的具体应用,如查询特定部门员工信息、计算部门平均工资、查找工资高于部门平均的员工等。这些技巧在实际数据库操作中非常实用,能有效处理复杂的数据查询需求。

2025-08-17 16:46:39 726

原创 MySQL数据库 详谈内置函数的使用

本文介绍了MySQL中常用的日期、字符串和数学函数的使用方法。日期函数包括获取当前日期时间(current_date(), current_time(), current_timestamp())、日期加减(date_add, date_sub)和日期差计算(datediff)。字符串函数涵盖字符集查询(charset)、字符串连接(concat)、长度计算(length)、替换(replace)和截取(substring)...

2025-08-17 16:32:49 1204

原创 MySQL数据库 详谈表的增删改查(二)

本文介绍了SQL中的数据操作语句,重点讲解了UPDATE和DELETE语法及使用案例。通过具体示例演示了如何更新单列、多列数据,以及基于排序条件的批量更新操作。同时介绍了DELETE语句的用法,包括条件删除和整表删除,并对比了TRUNCATE截断表的特性。此外还展示了插入查询结果、聚合函数(COUNT/SUM/AVG/MAX/MIN)以及GROUP BY子句的分组查询应用,包括使用HAVING对分组结果进行筛选。文中通过学生成绩表等示例详细说明了各种SQL操作的实际应用场景和注意事项。

2025-08-16 16:52:15 915

原创 MySQL数据库 详谈表的增删改查(一)

本文介绍了MySQL中CRUD操作的基本语法和使用案例。1) Create部分演示了单行/多行数据插入、主键冲突处理(ON DUPLICATE KEY UPDATE)和REPLACE语法;2) Retrieve部分详细讲解了SELECT查询的各种用法,包括全列/指定列查询、表达式计算、别名设置、结果去重、WHERE条件筛选(比较/逻辑运算符)、NULL值处理、结果排序(ORDER BY)和分页查询(LIMIT)...

2025-08-16 16:38:45 1160

原创 MySQL数据库 详谈表的约束

本文介绍了MySQL中常用的数据约束类型,包括NOT NULL、DEFAULT、COMMENT、ZEROFILL、PRIMARY KEY、AUTO_INCREMENT、UNIQUE KEY和FOREIGN KEY。通过具体案例演示了每种约束的用法:NOT NULL确保字段不为空;DEFAULT设置默认值;COMMENT添加字段描述;ZEROFILL实现数字前导零填充;PRIMARY KEY保证唯一性和非空性;AUTO_INCREMENT实现自增长;UNIQUE KEY确保字段唯一但允许空值

2025-08-16 16:19:10 866

原创 LeetCode 206. 反转链表

反转链表的两种解法 本文介绍了反转链表的两种方法:头插法和递归法。头插法通过遍历原链表,将每个节点取下并插入到新链表头部,时间复杂度O(n),空间复杂度O(1)。递归法则将问题分解为最小子问题:若链表为空或只有一个节点则直接返回;否则递归反转后续节点,并调整指针指向。两种方法都处理了边界情况(空链表或单节点链表)。代码实现简洁,递归法更考验对递归过程的理解。两种解法均满足题目要求,适用于不同场景。

2025-08-15 17:56:16 481

原创 MySQL数据库 详谈数据类型

MySQL数据库 详谈数据类型

2025-08-14 11:59:22 754

原创 MySQL数据库 表的操作

MySQL数据库表操作指南:包含创建、修改和删除表的基本语法。创建表使用CREATE TABLE语句,可指定字段类型、字符集和存储引擎(如MyISAM会生成.frm、.MYD、.MYI三个文件)。ALTER TABLE用于修改表结构,包括添加字段(ADD)、修改字段类型(MODIFY)、删除字段(DROP)、重命名表(RENAME TO)和修改列名(CHANGE)。DESC命令可查看表结构,DROP TABLE用于删除表。修改表时需谨慎,特别是删除字段操作会永久删除数据。

2025-08-14 11:43:30 769

原创 MySQL数据库 库的操作

MySQL数据库创建与操作指南摘要:本文介绍了MySQL数据库的创建、修改和删除操作。创建数据库时可指定字符集(如utf8)和校验规则(如utf8_general_ci),默认不区分大小写,而utf8_bin规则区分大小写。通过示例演示了不同校验规则对查询和排序的影响,如大小写敏感查询的差异。还讲解了查看数据库信息(show databases)、修改数据库字符集(alter database)以及删除数据库(drop database)等操作,重点强调删除数据库会级联删除所有数据表,需谨慎操作。

2025-08-13 18:01:21 519

原创 C++ 详谈智能指针(二)

摘要:文章探讨了C++智能指针shared_ptr存在的循环引用问题及其解决方案。当两个shared_ptr相互引用时会导致引用计数无法归零,造成内存泄漏。通过将其中一个指针改为weak_ptr(不增加引用计数)可有效解决该问题。同时分析了shared_ptr线程安全问题,指出引用计数需原子操作保护。文章还介绍了C++11与Boost智能指针的关系,并讨论了内存泄漏的危害及检测方法。最后强调预防内存泄漏应优先使用智能指针等RAII技术,并辅以检测工具。

2025-08-12 11:22:26 901

原创 C++ 详谈智能指针的使⽤及其原理(一)

本文系统介绍了C++智能指针的核心概念与应用。主要内容包括:1)智能指针在异常安全场景中的必要性,通过RAII机制自动管理资源释放;2)标准库智能指针(auto_ptr/unique_ptr/shared_ptr/weak_ptr)的特性与使用场景,重点分析各自拷贝语义的差异;3)智能指针的底层实现原理,包括引用计数机制和删除器功能的实现方式;4)通过模拟实现auto_ptr、unique_ptr和shared_ptr,深入剖析智能指针的设计思想。

2025-08-12 11:13:28 964

原创 2025年8月 CentOS7.6最小安装版本 切换国内yum源(亲测有效)

本文分享了CentOS7.6.1.810镜像资源及yum源更换方法。由于CentOS官方已停止维护,并详细介绍了在最小安装版本下更换yum源的四步操作:备份原yum源、删除原文件、通过curl下载阿里云yum源配置、更新本地缓存。操作需在root用户下完成,文中特别说明最小安装版本已自带ssh和curl工具,方便远程连接和文件下载。最后通过yum cleanall和makecache命令完成更新。

2025-08-11 08:00:00 1103

原创 C++ 详谈多态

本文详细介绍了C++中的多态机制,包括多态的概念、实现方式及其底层原理。多态分为编译时多态(静态多态)和运行时多态(动态多态),重点讨论了运行时多态的实现条件:必须通过基类指针或引用调用虚函数,且派生类需重写基类虚函数。文章还探讨了虚函数表、纯虚函数与抽象类、虚函数重写常见问题(如协变、析构函数重写)以及C++11新增的override和final关键字。通过实例分析了多态在底层如何通过虚函数表实现动态绑定,区分了静态绑定与动态绑定的不同。最后通过内存地址对比验证了虚函数表通常存储在代码段(常量区)。

2025-08-11 07:00:00 757

原创 C++ 详谈继承(二)

本文探讨了C++继承机制的三个关键问题:1)友元关系不能继承,基类友元无法访问派生类私有成员,需单独声明;2)静态成员在继承体系中共享唯一实例,而非静态成员各自独立;3)多继承带来的菱形继承问题,包括数据冗余和二义性,可通过虚继承解决但不推荐使用。文章建议优先使用组合而非继承来降低耦合度,仅在is-a关系明确或需要多态时使用继承。通过汽车与轮胎、栈与向量的示例,说明了组合与继承的适用场景,强调组合在维护性上的优势。

2025-08-10 09:00:00 930

原创 C++ 详谈继承(一)

摘要:继承是面向对象程序设计实现代码复用的核心机制,允许在基类基础上扩展功能形成派生类。文章详细介绍了继承的概念、定义格式(public/protected/private继承方式)及访问权限变化规则,重点分析了基类与派生类间的转换关系(切片原则)和同名成员隐藏规则。通过Student/Teacher继承Person的实例,演示了代码复用优势。同时深入讲解派生类默认成员函数(构造、拷贝构造、operator=、析构)的生成规则及调用顺序,并给出两种实现不可继承类的方法 ...

2025-08-10 07:00:00 857

原创 C++ 详谈异常

异常处理机制摘要 异常处理机制允许程序在运行时检测和处理问题,将问题检测与解决过程分离。C++通过抛出(throw)异常对象来报告错误,由匹配的catch块处理。异常处理流程包括: 抛出异常后,程序暂停当前执行,沿调用链查找匹配catch 若未找到匹配,程序终止;否则执行catch块代码 异常对象会被拷贝传递,确保catch块获得完整错误信息 异常处理优势

2025-08-09 08:00:00 1368

原创 C++ 详谈模版(二)

本文介绍了C++模板编程中的关键概念。主要内容包括:1)非类型模板参数的使用限制和注意事项;2)模板特化的两种形式(函数模板特化和类模板特化),其中类模板特化又分为全特化和偏特化;3)模板分离编译问题及解决方法。文章通过具体代码示例展示了模板特化的应用场景,并分析了模板编程的优缺点,如代码复用性和灵活性等优点,以及可能导致的代码膨胀和错误信息难以定位等缺点。这些内容为C++开发者深入理解模板编程提供了实用指导。

2025-08-09 06:00:00 2894

原创 C++ 详谈模版(一)

文章摘要:本文介绍了C++中的泛型编程和模板技术。主要内容包括:1)泛型编程概念,通过模板实现代码复用;2)函数模板的定义、原理和使用方法,包括隐式和显式实例化,以及模板参数的匹配原则;3)类模板的定义格式和实例化过程。模板技术允许编写与类型无关的通用代码,编译器会根据实际类型生成特定版本的函数或类,提高了代码的可重用性和维护性。

2025-08-08 17:11:54 1071

原创 数据结构进阶 详谈红黑树

红黑树是一种自平衡二叉搜索树,通过颜色约束(红/黑)确保最长路径不超过最短路径的2倍。其核心规则包括:根节点为黑、红节点子节点必黑、任意路径黑节点数相同。插入时需处理三种情况:变色(父叔红)、单旋(父红叔黑且同侧)、双旋(父红叔黑且异侧)。相比AVL树,红黑树平衡要求更宽松,旋转次数更少,时间复杂度仍为O(logN)。验证时需检查颜色规则和路径黑节点数一致性。红黑树在插入、查找等操作上高效稳定,广泛应用于STL等库中。

2025-08-08 16:51:34 1222

原创 设计模式 观察者模式

观察者模式定义了对象间一对多的依赖关系,当"一"个对象状态变化时,所有依赖的"多"个对象自动更新。示例展示了一个数据中心(DateCenter)与多个显示设备(DisplayA、DisplayB)的场景:数据中心通过容器管理观察者对象,当调用Notify()时,所有注册的显示设备都会收到通知并执行show()方法。该模式通过抽象接口IDisplay实现松耦合,支持动态添加/删除观察者。

2025-08-07 23:18:56 307

空空如也

空空如也

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

TA关注的人

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