- 博客(78)
- 收藏
- 关注
原创 第十四站:继承
protected:// 父类身份证号protected:// 子类学号,隐藏父类_numpublic:// 优先访问子类:999// 加类域限定符,访问父类:111Student s;sPrint();return 0;运行结果:999111小结:子类与父类同名成员时,子类会隐藏父类同名成员;如需访问父类,使用父类名::成员名class Apublic:public:void fun(int i) // 隐藏父类无参fun()A::fun();
2026-10-31 22:25:39
301
原创 第十三站:深度学习模板
本文系统介绍了C++模板的核心概念:类型模板参数(class T/typename T)用于泛型编程,非类型模板参数(如int N)可解决宏定义固定长度的局限性,支持编译期常量。通过数组类模板示例说明其灵活性。最后讲解模板特化,包括函数模板全特化与类模板的全特化、偏特化(参数固定型与类型修饰型),并强调匹配优先级:全特化 > 偏特化 > 通用模板。
2026-10-31 22:24:16
314
原创 【三】:Shell和权限
Shell是命令行解释器,作为用户与操作系统内核的交互桥梁,负责解析并执行命令。bash是CentOS7默认的Shell实现,通过子进程运行命令,若命令不存在则报“command not found”。用户可通过su切换身份,用sudo以权限执行特定命令。文件权限分为所有者、所属组、其他人三类,操作包括读(r)、写(w)、执行(x),可用chmod修改权限,受umask掩码影响。
2026-10-13 22:50:25
185
原创 【二】:Linux基础指令
本文系统介绍Linux基础指令,涵盖文件操作(ls、cd、pwd)、路径概念(绝对/相对)、文件类型识别(-表示普通文件,d表示目录)、文件管理(touch、stat、rm、rmdir)及目录创建(mkdir)。重点讲解文件模型:文件=内容+属性,强调属性数据占用磁盘空间。演示C/C++编译流程(g++ test.cpp → ./a.out),并提醒高危命令如rm -rf /的破坏性。结合实用技巧如ls -al查看隐藏详情、tree树状展示目录结构,帮助初学者掌握文件系统核心操作与安全规范。
2026-10-13 22:47:49
322
原创 堆排序算法
堆是一种基于完全二叉树的数组结构,分为最大堆和最小堆,满足父节点值不小于(不大于)子节点值的性质。其核心操作包括向下调整(AdjustDown)和向上调整(AdjustUp),用于维护堆的性质。建堆采用自底向上方法,时间复杂度为O(n)。堆排序通过反复将堆顶元素与末尾交换并调整堆,实现升序排序,时间复杂度为O(n log n),空间复杂度O(1)。使用数组存储可高效支持完全二叉树的随机访问,优于链表。
2026-10-11 21:59:17
450
原创 第十二站:容器适配器【stack和queue和priority_queue】
本文介绍了C++中的容器适配器概念,重点分析了stack和queue的实现原理。容器适配器基于适配器设计模式,通过封装底层容器提供受限接口。stack默认使用deque作为底层容器,要求支持push_back、pop_back等操作;queue也默认使用deque,但要求额外支持pop_front。文章通过代码示例展示了二者的核心接口实现,并比较了不同底层容器的适用性。最后解释了deque被选为默认底层容器的原因,包括其双端操作的高效性和随机访问能力,同时也指出了deque在排序等操作上的性能劣势。
2026-08-12 21:12:00
373
原创 第七站:string的模拟实现
本文总结了C++中string类的主要实现方法,包括构造函数、拷贝构造函数、赋值运算符重载和析构函数等核心功能。构造函数用于初始化string对象,拷贝构造函数用于已存在对象的复制创建,赋值运算符重载实现对象间的值覆盖,析构函数负责资源清理。此外还介绍了基本功能如获取字符串长度、容量、指定位置字符等,以及输入输出运算符的重载实现。最后给出了一个简单string类的完整实现示例,包含构造、析构、拷贝和赋值功能,以及一个支持增删查改的扩展版本,具备迭代器、字符插入等更丰富的操作接口。这些实现展示了string类
2026-08-12 21:05:49
175
原创 第十三站:深度学习模板
本文介绍了C++模板编程中的关键概念,包括类型模板参数、非类型模板参数和模板特化。类型模板参数通过class/typename声明,可接受任意数据类型;非类型模板参数为整型常量,用于解决宏定义固定数组长度的缺陷。模板特化分为函数模板特化(全特化)和类模板特化(全特化与偏特化),其中偏特化包括参数固定型和类型修饰型(如指针/引用特化)。特化优先级为全特化>偏特化>通用模板。这些技术增强了模板的灵活性,使其能针对特殊类型进行定制化处理。
2026-07-19 21:55:39
213
原创 动态规划【1】:斐波那契数列模型
本文介绍了四个动态规划问题的解法: 泰波那契数:使用动态规划计算第n个泰波那契数,初始状态为0,1,1,递推公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3],可以通过空间优化将复杂度降为O(1)。 三步问题:计算到达第n阶楼梯的方法数,每次可以走1-3步,递推公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3],注意处理大数取模。 最小花费爬楼梯:两种解法:(1)正序计算到达每层的最小花费;(2)逆序计算从每层到顶层的最小花费,返回前两层中的较小值。 解码方法:计算字符串解码方式
2026-07-11 23:02:27
280
原创 第五站:MySQL常用典型数据类型
本文介绍了MySQL中几种重要的数据类型及其特性: 数值类型: tinyint:有符号(-128~127)和无符号(0~255)两种 bit:位字段类型(1-64位),查询需特殊处理 小数类型: float:单精度浮点数,存在精度限制 decimal:高精度定点数,适用于需要精确计算的场景 字符串类型: char:定长字符串(最大255字符) varchar:变长字符串(最大65535字节) enum/set:枚举和集合类型等内容
2026-07-05 21:46:45
255
原创 第八站:vector及其常用操作【上】
摘要 vector是C++中的动态数组容器,与普通数组相比具有自动扩容能力。它采用连续存储空间,支持高效随机访问,但扩容时需重新分配内存。不同STL实现采用不同扩容策略(VS 1.5倍,GCC 2倍)。vector提供size()、push_back()等基本操作,以及迭代器遍历方式(普通、反向、const迭代器)。使用注意事项包括:reserve/resize区别、operator=深拷贝特性、迭代器失效问题(扩容或删除元素导致原迭代器失效)。示例代码演示了创建、插入、删除、查找和排序等常见操作等内容。
2026-07-05 21:42:28
358
原创 第六站:string及其常用操作【上】
本文介绍了C++中string类的基本概念和常用操作。string是表示字符串的类,底层基于basic_string模板类实现。主要内容包括:1) string对象的初始化方法;2) 插入字符/字符串的push_back()、append()和+=操作;3) 字符串遍历的三种方式(下标、指针和迭代器);4) 字符串长度计算和容量管理(capacity、clear、reserve、resize)等内容。
2026-07-03 21:18:35
206
原创 第四站:表的操作
本文主要介绍了MySQL数据库中表的基本操作。内容包括:创建表语法及参数说明,表字段定义方法;查看表结构的desc命令和show create table命令;删除表的drop table操作;修改表结构的多种alter table用法(重命名表、添加列、修改列类型、删除列、修改列名);查看表内容的select语句;插入数据的insert into语法;以及查看错误的show warnings命令和更新表数据的update语句。文中通过具体示例演示了各种操作的实际应用,并解释了相关参数和注意事项。
2026-07-03 21:10:33
251
原创 数组站:1.数组中重复的数字
摘要:本文探讨了在长度为n的数组(元素范围0~n-1)中查找任意重复数字的问题。给出了三种解决方案:排序后遍历(会改变原数组)、辅助数组计数(空间复杂度O(n)),以及最优的原地交换法(空间复杂度O(1))。重点阐述了第三种方法的核心思想:通过将元素交换到对应下标位置来检测重复,当nums[i]与nums[nums[i]]相等时即找到重复值。文末提供了C++实现代码,分析其时间复杂度为O(n),空间复杂度为O(1),但会改变原数组结构。(149字)
2026-07-02 23:36:03
347
原创 第二站:数据库基础
MySQL是一种基于C/S模式的网络服务,包含客户端mysql和服务端mysqld。数据库本质是对数据存储的解决方案,通过结构化方式管理磁盘文件。MySQL采用分层架构:连接层处理通信协议,服务层进行SQL解析优化,存储引擎负责数据存取,文件系统实现持久化。核心概念包括数据库(目录)、表(文件)和记录,通过SQL语句(DDL/DML/DCL)进行操作。主流存储引擎如InnoDB支持事务处理。整体体现为客户端请求→服务端处理→引擎操作→磁盘存储的解耦设计,支持高并发和灵活扩展。
2026-07-01 22:47:44
470
原创 第五站:模板
C++模板是泛型编程的核心工具,允许编写与类型无关的代码。函数模板通过template<typename T>声明,编译器根据调用类型自动生成具体函数,解决了函数重载的冗余问题。类模板通过template<class T>定义,可实例化为不同类型对象(如Stack_cpp<int>)。模板将重复工作交给编译器,提高了代码复用性和维护性,同时支持隐式和显式实例化。通过模板实现的栈结构自动管理构造/析构,具有封装性,并能通过运算符重载提供数组式访问。
2026-07-01 22:45:05
344
原创 第一站:MySQL的环境安装
本文介绍了MySQL在Linux环境下的安装与配置流程,主要包括:1)卸载原有MySQL/mariadb环境;2)获取官方yum源并安装;3)解决密钥过期问题;4)验证安装并启动服务;5)提供临时密码和免密登录两种登录方式;6)配置字符集和存储引擎等核心参数;7)可选设置开机自启动。特别强调安装全程使用root权限,初期建议直接使用root账户练习,并详细说明了SQL注释的三种标准写法。文中包含具体命令和常见问题解决方案(如密钥错误处理),适合初学者快速搭建MySQL学习环境。
2026-06-30 23:07:55
265
原创 第四站:C++内存管理
文章摘要:C/C++内存管理与变量生命周期 本文系统介绍了C/C++程序运行时的五大内存区域:栈区(自动管理局部变量)、堆区(手动管理动态内存)、数据段(全局/静态变量)、常量区(只读数据)和代码区(程序指令)。重点分析了指针大小与系统位数相关(32位4字节/64位8字节),全局变量与静态变量的作用域差异,以及变量构造/析构顺序(局部静态变量最后析构)。通过实例对比了malloc/free与new/delete的核心区别:后者会调用构造/析构函数等等内容。
2026-06-30 22:25:28
357
原创 第三站:类与对象(下)
摘要 本文主要探讨了C++中const修饰成员函数、成员变量初始化以及explicit关键字的用法: const成员函数:const修饰的函数不能调用非const函数,而非const函数可以调用const函数。const成员函数通过隐式传递const this指针实现。 成员初始化列表:类成员应在初始化列表中进行初始化(特别是引用、const和自定义类型成员),初始化顺序由声明顺序决定而非初始化列表顺序。
2026-06-29 20:41:57
361
原创 练习:日期类完整实现
本文介绍了C++日期类的实现,重点包括非法日期输入的判断和运算符重载。日期类通过构造函数验证输入有效性,使用静态数组存储每月天数并处理闰年情况。运算符重载部分实现了逻辑比较(<, ==, <=, >, >=, !=)、算术运算(+, +=, -, -=)功能,其中算术运算处理了日期进位和借位的复杂逻辑。代码展示了如何通过运算符重载使日期对象支持直观的数学运算,同时保持代码复用性和效率,如使用引用返回减少拷贝。整体实现了完整的日期计算功能。
2026-06-29 20:39:57
230
原创 插入排序算法
本文介绍了使用插入排序算法对整数数组进行升序和降序排列的实现方法。核心思想是将待排序元素(key)插入到已排序序列的适当位置。对于升序排列,当key前面的元素较大时将其后移覆盖;对于降序则相反。关键步骤包括:1)保存key值;2)与前面元素比较并后移覆盖后面的值;3)将key插入正确位置。边界条件是数组下标不小于0。代码示例展示了完整的排序过程,只需调整比较条件即可实现升序/降序切换。时间复杂度为O(n²),适合小规模数据排序。
2026-06-22 20:18:03
580
原创 R语言基本语法
R语言基础摘要 工作目录 使用getwd()查看当前路径,setwd()设置路径(支持/或\\分隔符)。 注释符为#,多行注释快捷键Ctrl+Shift+C。 对象命名规则 以字母开头,区分大小写,可含字母、数字、.或_,避免保留字。 赋值与数据类型 赋值符号:=、<-(推荐)、->;动态类型,覆盖式赋值。 基本类型:数值型(含整数)、逻辑型(TRUE/FALSE)、字符型(引号包裹)、复数型(i)。 特殊值:NA(缺失)、NULL(空)、NaN(非数)、Inf/-Inf(无穷)等内容。
2026-05-26 22:41:12
511
原创 R语言概述
R语言是由Ross Ihaka和Robert Gentleman基于S语言开发的开源统计分析语言,具有免费、跨平台、编程简单、制图功能强大等特点。文章详细介绍了Windows系统下R语言及RStudio的安装步骤:从CRAN镜像下载R语言安装包,设置安装路径;再下载RStudio集成开发环境。同时说明了RStudio的界面布局和代码运行方式,以及R软件包的分类(基本包、备用包、捐赠包)和安装方法(命令方式和界面操作)。R语言凭借其强大的数据分析功能和丰富的扩展包资源,成为统计分析和数据可视化的重要工具。
2026-05-19 20:10:38
496
原创 C++模板【上】
C++模板是泛型编程的核心工具,通过模板可以创建与类型无关的代码"模具"。函数模板和类模板能自动生成针对不同参数类型的代码,解决函数重载带来的代码冗余问题。函数模板通过template声明,编译器在编译时根据调用类型实例化具体函数。类模板同样通过template定义,使用时需显式指定类型参数。模板还支持运算符重载和成员函数在类外定义。此外,模板实例化分为隐式(自动推导类型)和显式(手动指定类型)两种方式。使用模板能显著提高代码复用性,同时保持类型安全。
2026-05-01 23:12:41
234
原创 C++内存如何管理?
【C/C++】程序运行时内存分为五大区域:栈区(存放局部变量和函数参数,自动管理)、堆区(手动申请释放,空间大但速度慢)、数据段(存放全局和静态变量,程序结束释放)、常量区(存放字符串常量和const常量,只读)和代码区(存放二进制指令,只读共享)。指针大小取决于系统位数(32位4字节,64位8字节)。全局变量与静态变量区别在于作用域范围。变量构造顺序遵循定义顺序,析构顺序相反。内存管理方面,malloc仅分配空间而new还调用构造函数,free仅释放空间而delete还调用析构函数。
2026-04-29 21:34:33
377
原创 类与对象(下)
【C++】探讨了C++中const修饰成员函数和类初始化的关键概念。首先说明了const成员函数与非const成员函数的调用规则,通过Date类示例展示了const在成员函数中的应用。然后详细介绍了类成员变量的初始化方式,重点讲解了初始化列表的使用场景和注意事项,包括必须在初始化列表初始化的三种情况(引用成员、const成员和自定义类型成员)。最后讲解了explicit关键字的作用和C++11中的新特性,包括构造函数参数传递和成员变量声明时赋初始值的语法。文章通过代码示例直观展示了这些概念的实际应用
2026-04-24 17:23:27
412
原创 第二站:C++中类与对象(上)
【C++】本文介绍了C++中类的定义、构造函数、析构函数和拷贝构造函数的核心概念。类定义使用class关键字,包含成员变量和成员函数,注意访问权限修饰符的区别。构造函数用于对象初始化,具有与类同名、无返回值等特征,可以重载;析构函数用于资源清理,在对象生命周期结束时自动调用;拷贝构造函数用于通过已有对象创建新对象,参数必须是类类型的引用。文章通过栈类等示例代码演示了这些概念的具体应用,并解释了类大小计算、this指针等底层原理。这些内容是C++面向对象编程的基础知识。
2026-04-17 23:23:32
335
原创 第一站:C++入门基础知识
【c++】本文介绍了C++中的几个重要特性:命名空间、缺省参数、函数重载和引用。命名空间用于解决命名冲突问题,提高代码模块化和可读性;缺省参数允许函数参数设置默认值;函数重载使得同名函数可以根据参数类型、个数或顺序不同而区分;引用作为变量的别名,与指针相比更安全高效。这些特性共同构成了C++区别于C语言的核心语法特征,为开发者提供了更强大的编程工具和更灵活的代码组织方式。
2026-04-14 18:43:52
372
原创 c语言-2-数据类型和变量
C语言数据类型分类包括字符型(char)、整型(int)、浮点型(float/double)和布尔型(_Bool)。数据类型分为有符号(signed)和无符号(unsigned)两种,影响变量取值范围。变量命名需遵循特定规则,分为全局变量和局部变量,分别存储在静态区和栈区。sizeof操作符用于计算数据类型长度,单位为字节。整型默认有符号,char类型符号性由系统决定。合理使用数据类型和变量对内存管理和程序效率至关重要。
2026-03-27 21:40:05
262
原创 删除有序数组中的重复项
本文介绍了删除有序数组中重复项的两种解法:暴力解法和双指针解法。暴力解法通过遍历数组,遇到重复元素时整体前移后续元素,时间复杂度较高为O(n²)。双指针解法使用快慢指针,快指针遍历数组,慢指针记录非重复元素位置,只需一次遍历即可完成去重,时间复杂度优化为O(n)。两种方法都能有效删除重复项并返回新数组长度,但双指针法效率更高,是更优解。
2026-03-22 23:52:52
67
原创 Linux环境搭建
本文介绍了三种搭建Linux环境的方式:物理机安装(不推荐)、虚拟机(不建议)和云服务器(推荐)。重点讲解了通过腾讯云或阿里云购买云服务器的步骤:1)访问官网完成注册认证;2)获取服务器IP、root账户和密码。随后指导使用Xshell工具远程连接:下载免费版Xshell,输入ssh命令连接服务器IP,验证root密码后即可登录。全文150字,完整呈现了云服务器搭建Linux环境的核心流程。
2026-03-18 14:24:30
225
原创 C语言-1入门
C语言是一种编译型编程语言,需要通过编译器将文本源代码转换为二进制可执行文件才能运行。程序执行从main函数开始,使用printf等库函数实现输出功能。C语言包含32个关键字,如int、for等,具有特殊含义。字符串以双引号表示,末尾隐含\0结束符,转义字符如\n用于特殊格式控制。ASCII码表定义了字符的数字编码标准。这些基本概念构成了C语言的核心特性。
2026-03-13 18:31:22
287
1
原创 Java之多线程入门
本文介绍了Java多线程编程的核心概念和实现方式。主要内容包括: 并发与并行的区别:并行是多个任务同时在多CPU上执行,并发是多个任务在单CPU上交替执行 进程与线程的区别:进程是独立执行的程序,线程是程序的基本执行单元 多线程实现方法: 继承Thread类:重写run()方法,调用start()启动线程 实现Runnable接口:解耦性更好,通过Thread类构造方法传入Runnable对象 线程常用功能:获取/设置线程名、线程休眠(sleep)、线程等待(join)等 推荐使用Runnable接口方式,
2026-01-20 22:21:32
726
原创 Stream流
Stream流简介与使用 Stream流是Java 8引入的一种处理集合数据的新方式,它结合Lambda表达式提供了更简洁、高效的操作方法。Stream流操作分为三类:获取流对象、中间操作和终结操作。
2026-01-20 10:23:00
243
原创 Lambda表达式
Lambda表达式是Java 8引入的简化匿名内部类书写的语法,基本结构为(参数)->{代码块},仅适用于函数式接口(只有一个抽象方法的接口)。它通过省略参数类型、单参数时的小括号、单行代码时的大括号/分号/return等规则大幅简化代码。示例展示了Lambda替代传统匿名内部类的方式,如()->System.out.println()和(a,b)->a*b。这种语法糖主要解决代码冗余问题,使函数式编程更简洁直观。
2026-01-19 23:52:06
217
原创 Java之异常
摘要:异常是程序运行时因数据不合法导致的中断情况,以异常对象形式存在。异常分为编译时异常(需处理否则编译不通过)和运行时异常(编译时不检查)。处理方式包括声明throws(交给调用者处理)和捕获try-catch(自行处理)。throws用于方法声明后,throw用于方法体内手动抛出异常。虚拟机默认处理异常方式为打印信息并终止程序。多个异常可通过单独处理或统一捕获处理。
2026-01-19 23:15:47
746
原创 Java之日志框架
日志技术是记录程序运行信息的重要手段,具有选择性记录和控制开关等优势。主流日志框架Logback基于SLF4J规范,包含core、classic和access三个模块。使用Logback需要导入相关jar包、配置logback.xml文件,并通过Logger对象记录日志。配置文件可设置输出位置(控制台或文件)和日志级别(ERROR/WARN/INFO/DEBUG/TRACE)。日志级别用于控制输出范围,ALL和OFF分别表示开启/关闭所有日志。Logback会自动将日志输出到控制台和指定文件,通过修改配置文
2026-01-17 22:28:32
1202
原创 数组题目之移除元素
本文介绍了LeetCode 27题"移除元素"的两种解法。暴力解法使用双重循环遍历数组,时间复杂度为O(n²);双指针法则通过快慢指针实现高效移除,时间复杂度优化为O(n)。两种方法均原地修改数组,空间复杂度为O(1)。双指针法的核心思路是:快指针遍历数组,慢指针记录非目标值的位置,最终返回新数组长度。后者效率更高,是更优的解决方案。
2026-01-16 22:27:26
152
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅