- 博客(54)
- 收藏
- 关注
原创 C++初阶(07):STL简介
STL(标准模板库)是C++的核心组件,包含容器、算法、迭代器等六大模块。常见容器包括vector(动态数组)、list(链表)和map(红黑树实现)。算法如排序、查找等通过迭代器与容器交互。智能指针(如shared_ptr)管理内存,避免泄漏。STL在面试中重点考查:vector扩容机制、map与哈希表区别、智能指针原理等。学习需从使用到理解底层实现(如空间配置器)。
2025-11-14 09:07:52
756
原创 13-MySQL用户管理
本文介绍了MySQL用户管理的核心操作与安全实践。主要内容包括:1.用户信息存储于mysql.user表,2.创建用户需指定主机权限(避免使用%),3.密码策略要求,4.修改方法。重点讲解了权限管理(grant/revoke命令)和常见面试考点,强调C++开发中应创建仅含必要权限的用户而非直接使用root账户,以降低安全风险。文中通过具体SQL示例演示了用户创建、授权、回收权限等操作流程,并总结了权限不生效的解决方案(flush privileges)等高频面试问题。
2025-11-03 17:55:05
815
原创 12-MySQL视图
MySQL视图是基于SELECT查询的虚拟表,不存储数据但可简化复杂查询、隐藏敏感字段并提供统一数据接口。修改视图数据会同步影响基表,反之亦然。重要限制包括:视图不可添加索引/触发器,命名需唯一,操作需权限。典型应用场景包括封装多表查询及字段筛选(如仅显示演员姓名)。
2025-11-02 16:51:01
987
原创 11-MySQL事务管理
本文系统讲解了MySQL事务的核心知识点,包括:1. ACID四大特性:原子性、一致性、隔离性、持久性,通过转账等案例详细说明;2. MySQL事务支持:仅InnoDB引擎支持,与MyISAM的对比;3. 事务基本操作:包括开启、提交、回滚等语法,并给出账户操作实例;4. 隔离级别:详解四种级别及其解决的并发问题;5. 面试题解析:包含概念解释、引擎对比、转账实现等典型问题。文章强调ACID属性的实例化理解、隔离级别的选择以及事务操作的正确编写,适合数据库学习者和面试准备者参考。
2025-11-01 20:45:19
1031
原创 09-MySQL内外连接
本文详细介绍了MySQL中的表连接操作,重点讲解内连接和外连接的区别与应用。内连接通过传统写法(WHERE)和标准写法(INNER JOIN)实现表间数据匹配,外连接则分为左外连接(LEFT JOIN)和右外连接(RIGHT JOIN),能够保留指定表的所有数据。文章包含实际案例演示,并提供了面试常见问题解答,帮助读者掌握不同连接方式的使用场景和语法要点。(149字)
2025-10-31 20:15:51
947
原创 08-MySQL复合查询
本文系统介绍SQL复合查询核心知识点:1. 单表复杂查询之多条件筛选、排序、聚合函数、分组查询等组合用法;2. 多表查询强调通过关联字段避免笛卡尔积问题;3. 自连接演示了表内数据关联技巧;4. 子查询部分深入剖析单行、多行、多列等子查询类型及运算符选择;5. 合并查询对比union与unionall的区别。全文涵盖完整语法、实操案例和面试要点,适合数据库学习者系统掌握复合查询技能。
2025-10-31 09:10:42
864
原创 07-MySQL内置函数
本文系统讲解SQL常用内置函数,包括日期、字符串、数学和工具函数。日期函数重点介绍时间计算、差值计算和业务场景应用;字符串函数涵盖连接、截取、替换等格式化操作;数学函数包含取整、随机数等基础计算;工具函数涉及MD5加密、null值处理等实用技巧。
2025-10-26 21:56:30
807
原创 06-MySQL基础查询
本文主要内容包括:1. 基础增删改查语法:插入数据(单行/多行、冲突处理)、条件查询(比较/逻辑运算符、模糊查询)、排序分页、更新删除操作;2. 聚合函数与分组查询:count/sum/avg等聚合函数使用,group by分组及having过滤;3. 面试重点对比:delete与truncate区别、NULL值判断、别名使用规范等。
2025-10-25 20:17:45
685
原创 05-MySQL表约束
本文系统介绍了MySQL中常用的字段约束属性,包括:空属性(null/not null)、默认值(default)、列描述(comment)、零填充(zerofill)、主键(primary key)、自增长(auto_increment)、唯一键(unique key)和外键(foreign key)。重点讲解了各类约束的核心作用、创建方法和使用场景。最后通过商店购物系统三表设计案例,展示了这些约束在实际开发中的综合应用。
2025-10-23 14:58:55
680
原创 10-MySQL索引
本文主要介绍了MySQL索引的核心概念、原理及实践应用。文章详细解析了磁盘IO机制、B+树优势,对比了聚簇索引(InnoDB)和非聚簇索引(MyISAM)的区别。在实操部分,演示了主键、唯一、普通和全文索引的创建方法。并强调索引应遵循高频查询优先、避免低效字段等原则。
2025-10-22 20:23:40
691
原创 04-MySQL数据类型
该文章首先将MySQL数据类型分为数值、字符串、时间日期、特殊字符串四类,明确各类型定义、范围及核心特性。重点阐述数值类型的范围、越界测试、bit类型的ASCII码显示规则,以及float与decimal的精度差异;字符串类型中char与varchar的对比、编码对varchar的影响;日期时间类型中timestamp的自动初始化与更新特性;enum与set的存储逻辑及借助find_in_set函数的查询方法。文中还包含各类型实操代码示例,并标注面试高频考点。
2025-10-15 01:40:55
884
原创 03-MySQL表级操作
本文详细介绍了MySQL表的创建、查看、修改和删除操作。重点讲解了CREATE TABLE语法及不同存储引擎(InnoDB/MyISAM)的特性差异,通过示例演示了ALTER TABLE的5种常见修改操作(增删改字段、表名和列名)。文章还解析了DESC命令返回的各字段含义,并强调删除表前需备份数据。
2025-10-10 08:00:00
693
原创 02-MySQL 库级操作
本文详细讲解了MySQL数据库的基础操作和关键概念,包括创建数据库的语法细节与健壮性写法(IF NOT EXISTS)、字符集与校验规则(影响中文存储和查询结果)、数据库维护操作(查看/修改/删除)以及备份恢复方法。重点解析了校验规则对查询排序的影响(区分大小写场景),并提供了C++项目交互时的实用技巧和面试常见考点。文章还介绍了数据库连接管理。
2025-09-30 08:00:00
802
原创 01-MySQL数据库基础
本文系统介绍了数据库基础与MySQL核心操作。首先分析了文件存储的四大缺陷,阐述了数据库的核心作用与存储介质。重点讲解了MySQL的服务器连接、数据库/表层级关系及基础SQL操作。此外详细解析了MySQL的跨平台架构与四种存储引擎特性,并提供选型建议。
2025-09-24 08:00:00
1005
原创 Windows 安装 MySQL 服务器(5.7.27版本)
本文详细介绍了MySQL 5.7.27在Windows系统的安装流程,包含下载解压、环境变量配置、创建my.ini文件(需ANSI编码)、管理员模式初始化数据库、安装启动服务等步骤。重点提示:必须使用全英文路径,配置后验证环境变量是否生效,注意解决端口占用和服务冲突问题。
2025-09-21 23:16:45
1099
原创 C++ 11
本文总结了C++11的核心特性及其在面试中的高频考点: 统一初始化扩展了{}的应用范围; 类型推导(auto/decltype)简化代码,nullptr解决NULL二义性问题; 右值引用实现移动语义,通过资源窃取提升效率; Lambda表达式简化回调逻辑; function包装器统一可调用对象类型,bind实现参数绑定和调整; 线程库支持多线程编程,atomic解决数据竞争,lock_guard实现线程同步。
2025-09-19 16:44:01
850
原创 C++进阶(04):map和set
本文核心要点包括:1)set存储唯一值且不可修改;2)map存储键值对,key唯一不可修改,value可修改;3)两者操作时间复杂度均为O(logn)。与哈希表相比,map/set保持有序性但查找稍慢;与AVL树相比,红黑树旋转操作更少。典型应用场景包括set实现数组去重和map统计字符出现次数。
2025-09-12 09:49:21
772
原创 C++:二叉树
本文系统讲解了树和二叉树的核心概念与应用。主要内容包括:1. 树的基本概念(度、层次、森林等)和表示方法(孩子兄弟表示法);2. 二叉树特性(完全二叉树、满二叉树)、性质(节点数计算)和存储结构;3. 堆的实现与应用(堆排序、Top-K问题);4. 二叉树的遍历方式(前中后序递归/非递归实现、层序遍历);5. 二叉搜索树(BST)的插入删除操作与性能分析。
2025-09-03 08:00:00
1014
原创 C++初阶(11):stack和queue
本文重点内容包括:1. 容器适配器概念:通过封装底层容器(deque/vector/list)提供特定接口;2. 核心使用:详细说明各适配器的定义方式、常用接口及典型应用场景;3. 优先队列:深入讲解大/小顶堆的实现、自定义类型比较规则,以及Top-K问题解决方案;4. 模拟实现:给出基于vector和list的stack/queue实现和优先队列的模拟实现。
2025-08-21 08:00:00
1007
原创 C++ : list
文章聚焦C++标准库双向链表容器std::list,剖析其核心特性与使用要点。阐述其作为双向链表的特性,如O(1)时间复杂度的任意位置插入/删除、不支持随机访问等;详解构造方法、迭代器操作等常用接口,强调insert/erase用法及迭代器失效问题;展示反向迭代器、链表节点等模拟实现细节;并与vector从底层结构、性能、空间利用等方面展开全面对比。
2025-05-26 08:00:00
992
原创 C++初阶(09):vector
本文主要内容包括:1. vector核心特性:连续存储空间、动态扩容机制(VS1.5倍/G++2倍)、O(1)随机访问等;2. 基本操作:构造/迭代器/增删改查函数;3. 迭代器失效问题:详细分析扩容/erase导致的失效场景及解决方案;4. 高频OJ题解:包括只出现一次数字、杨辉三角等经典问题;5. vector模拟实现:详解深拷贝问题,给出完整类模板实现方案。
2025-05-22 21:50:31
594
原创 C++初阶(08):string 类
本文系统讲解了C++中string类的使用与实现。首先分析了C语言字符串的局限性,指出string类在面向对象编程中的优势。详细介绍了string类的核心接口,包括构造函数、容量操作、访问遍历、修改操作等常用方法。重点剖析了string类的深拷贝实现原理。最后通过5个高频OJ题(反转字母、首个唯一字符、最后一个单词长度、回文判断、字符串相加)演示string类的实际应用。
2025-05-16 08:00:00
826
原创 C++ 的 IO 流
本文围绕C/C++输入输出体系展开,先介绍C语言scanf/printf及缓冲区作用;再阐释C++流的概念、标准IO流对象(cin/cout等)及文件流(ifstream/ofstream/fstream)操作;最后说明stringstream在类型转换、字符串拼接和数据序列化中的应用与优势。
2025-04-22 18:31:10
942
原创 C++ 多态与虚函数
本文系统解析 C++ 多态,涵盖概念(不同对象调同函数现异态)、构成条件(基类指针 / 引用调虚函数且派生类重写)。阐述虚函数重写及例外(协变、析构函数重写),C++11 的 override 和 final。介绍抽象类特性,多态原理(虚函数表、动态绑定等)。通过示例展示多继承虚函数表特性,如各基类独立表、合并表及未重写函数留原表等,助于深入理解多态机制。
2025-04-18 08:00:00
964
原创 C++ 异常
文章主要介绍了 C 语言和 C++ 的错误处理机制:C 语言常用返回错误码,严重时终止程序。C++ 异常通过 throw、try、catch 实现,有特定抛出、捕获规则,可重新抛出,使用时要注意安全和规范。C++ 标准库异常以父子类层次组织。实际开发可选用标准库或自定义异常体系。异常利大于弊,工程中鼓励使用。
2025-04-17 08:00:00
2052
原创 C++ 模板进阶
本文介绍C++模板相关知识。模板参数分类型和非类型形参,给出函数、类模板中其定义、调用格式与示例。阐述模板特化,函数模板特化有特定步骤,复杂参数建议用普通函数;类模板特化分全特化和偏特化,各有步骤与示例。还提及模板分离编译易出问题,建议声明与定义放同一文件,或显式实例化。最后总结模板优点为复用代码、提升灵活性,缺点是代码膨胀、编译耗时且错误难定位。
2025-04-14 10:48:18
679
原创 C/C++内存管理
本文系统介绍C/C++内存管理知识。先讲内存区域划分,包括栈、堆等。接着阐述C++动态内存管理,new/delete操作符分单个和连续空间操作,对比malloc/free,前者可初始化、处理自定义类型。还介绍operator new与delete函数及new/delete实现原理。提及定位new表达式,最后讲常见面试题,如malloc/free与new/delete区别、内存泄漏相关内容。
2025-04-10 22:41:25
1136
原创 C++进阶:继承与派生
💬 :如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区畅所欲言!我们一起学习、共同成长~!1.1.1 继承的概念在面向对象程序设计中,继承是实现代码复用的核心方式。程序员可保留原有类特性,为其扩展新功能,由此创建的新类即派生类。继承构建起面向对象程序设计的层次结构,契合人类从简单到复杂的认知规律与思维模式。它和常见的函数复用不同,函数复用针对单个或多个函数,继承则从类的整体架构出发,复用原有类属性和方法并加以拓展创新,实现更高级别的代码复用。1.2 继承的定义。
2025-04-08 11:43:22
820
原创 C++初阶(04):类与对象(三)
本文深入剖析了static成员、友元和内部类三大核心概念。1) static成员通过共享机制实现类级别数据管理,重点掌握其初始化方式和访问规则;2) 友元机制突破封装限制,详细解析友元函数在输入输出运算符重载中的关键应用,以及友元类的单向特性;3) 内部类作为外部类的天然友元,具有独立存储特性。文章通过典型代码示例演示核心知识点。
2025-03-25 17:03:41
662
原创 C++初阶(03):类与对象(二)
本文全面解析了C++类的6个默认成员函数及其应用场景,重点讲解了构造函数、析构函数、拷贝构造函数三大核心内容。其中:1. 构造函数详解了默认构造、初始化列表、explicit关键字等关键概念;2. 析构函数分析了资源释放机制和调用顺序;3. 拷贝构造函数深入探讨了深浅拷贝问题。文章还系统讲解了const成员函数、运算符重载规则、赋值运算符重载等进阶内容,并提供了日期类的完整实现示例。
2025-03-21 00:14:27
414
1
原创 C++初阶(02):类与对象(一)
本文主要内容包括:1)面向过程与面向对象的本质区别;2)类的定义方式与访问控制;3)类对象模型与内存对齐规则;4)this指针的工作原理;5)通过栈(Stack)的完整实现案例,具体展示了C语言(基于结构体+全局函数)与C++(基于类封装)在封装性、安全性、易用性等方面的差异。其中特别强调了C++通过访问限定符、this指针等机制带来的优势,并分析了空指针访问、内存管理等常见问题的底层原理。
2025-03-12 22:45:31
1044
原创 C++初阶(01):入门
本文系统介绍了C++核心特性:1、命名空间及其定义使用方式(正常定义、嵌套、合并);2、输入输出流cin/cout的基本用法;3、缺省参数的分类及使用规则;4、函数重载的原理与实现方法;5、引用的概念、特性(常引用、使用场景)及与指针的对比;6、内联函数的优势及与宏函数的区别;7、C++11新特性auto关键字、范围for循环和nullptr的使用场景与注意事项。
2025-03-11 22:21:23
1785
1
原创 C 语言数据结构(三):栈和队列
好比排队收银,排在队伍前面的顾客先结账离开队伍,而后到的顾客要在后面依次等待。就像往一个桶里放东西,最后放进去的东西会在最上面,取的时候最先被取出。在数据结构中,一个节点通常由多个部分组成,其中用于存储实际数据的部分称为。栈是一种特殊的线性表,它只允许在固定的一端进行插入和删除元素操作。队列是只允许在一端插入数据,在另一端删除数据的特殊线性表。
2025-03-08 12:45:10
728
原创 C 语言数据结构(二):顺序表和链表
线性表(linear list)是 n 个具有相同特性的数据元素的有限序列。它是一种在实际中广泛使用的数据结构。常见的线性表包括:顺序表、链表、栈、队列、字符串等。线性表在逻辑上是线性结构,即一条连续的直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2. 顺序表2.1 概念及结构顺序表是用一段。
2025-03-07 21:24:08
1014
原创 C 语言数据结构(一):时/空间复制度
一、前言一、前言1. 什么是数据结构数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。2. 什么是算法算法(Algorithm)是明确的计算流程,它接收一个或一组输入值,经过一系列计算步骤后,输出一个或一组结果,其作用就是把输入数据转变为输出结果。二、时 / 空间复杂度1. 算法效率算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此,即时间复杂度和空间复杂度。
2025-03-05 00:37:15
1133
原创 预处理详解
运算符在 C 语言预处理阶段发挥作用,它能将位于其两边的符号合并成一个新的符号,常用于从分离的文本片段创建合法的标识符,这种操作也被称为记号粘合。许多 C 编译器允许在命令行中定义符号(变量),这些符号在编译过程中可控制程序行为,从而可根据同一源文件编译出不同版本的程序。当宏参数在宏的定义中出现超过一次,且参数带有副作用时,使用宏可能导致不可预测的后果。如果某个表达式的值为真,则编译其对应的代码块,并跳过后续的。连接产生的结果必须是一个合法的标识符,否则其结果是未定义的。是否定义,若定义则调用相应函数;
2025-02-28 01:35:14
898
原创 C 语言文件操作详解
每个使用中的文件会在内存开辟文件信息区,存放文件名字、状态、当前位置等信息,这些信息存于系统声明的 FILE 结构体变量。函数根据文件指针的当前位置和指定的偏移量,重新定位文件指针的位置,就好像在文本编辑器中移动光标到指定的位置一样。因为有缓冲区的存在,C 语言在操作文件时,需要刷新缓冲区或者在文件操作结束时关闭文件,否则可能导致读写文件的问题。在程序设计中,一般谈及的文件有两种,即从文件功能角度分类的程序文件和数据文件。类型的指针变量,该变量指向该文件,相当于建立了指针和文件的关系。
2025-02-27 11:14:44
747
原创 动态内存管理
然而,在某些情况下,我们需要的空间大小只有在程序运行时才能确定,这时数组编译时开辟空间的方式就无法满足需求。执行函数时,函数内局部变量的存储单元在栈上创建,函数执行结束时这些存储单元自动被释放。这意味着这块内存虽然不再被程序使用,但仍然被标记为已分配状态,无法被其他程序或当前程序的其他部分再次使用,从而造成了内存泄漏。函数内的局部数组,函数结束后,其内存已被释放,返回的指针指向已释放的内存,属于悬空指针,使用该指针会导致未定义行为。该函数在调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。
2025-02-26 00:20:38
862
原创 自定义类型
早期 C 标准规定,位段的成员必须是 int、unsigned int 或 signed int。后来 C99 标准中,位段成员的类型也可以选择其他类型,如 char、short、_Bool类型等。位段的成员名后边有一个冒号和一个数字。(冒号后面的数字表示该位段成员在内存中所占用的二进制位数)// A 是一个位段类型struct Aint _a:2;int _b:5;int _c:10;int _d:30;
2025-02-24 22:45:48
1000
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅