- 博客(167)
- 收藏
- 关注
原创 一文弄懂KMP字符串匹配算法
在文档编辑器中使用Ctrl+F查找功能,当输入"ABABCABAB"时快速定位所有出现位置。构建模式串的部分匹配表(LPS数组),记录每个位置的最长公共前后缀长度。以下是一个使用C++实现的。
2025-03-15 13:03:24
77
原创 一文绝对弄懂哈希表
假设你是图书管理员,图书馆有100个书架(相当于哈希表的桶)。每本书都有唯一的书名(键),你需要快速找到或存放书籍(值)。优点缺点这样解释清楚了吗?哈希表就像一个超级图书管理员,用计算编号的方式实现光速存取!以下是一个使用C++实现的哈希表(Hash Table)示例,采用链地址法处理冲突,实现高效的键值对存储与查询:算法核心解析1. 数据结构设计组件说明哈希桶数组 每个桶用链表存储键值对哈希函数将键映射到桶索引(示例使用C++内置哈希函数取模,实际需根据数据类型优化)
2025-03-15 11:02:20
509
原创 一文绝对弄懂二叉树层次遍历(BFS)算法
算法就像一个聪明的收银员,用排队本子保证层级顺序!假设你是超市收银员,有一群顾客(树节点)以。,且每层内按从左到右顺序。以下是一个使用C++实现的。
2025-03-14 15:44:42
214
原创 一文绝对弄懂Dijkstra算法
假设你是一个快递员,要从出发,把包裹送到等城市。每个城市之间的道路有不同的,你想找到从北京到每个城市的最短路线。:北京(0) → 天津(100km),北京(0) → 石家庄(200km),天津 → 济南(150km),石家庄 → 济南(250km):所有城市处理完毕,最短距离确定!假设存在“魔法道路”,距离为负数(比如天津→济南是-100km)。
2025-03-14 12:40:55
311
原创 一文绝对弄懂堆排序
堆排序像是一个智能金字塔建造机器人,通过不断自我调整结构,高效地让最大元素“浮”到顶端。它的稳定高效性使其在需要可靠性能的场景中备受青睐!:每次拿走塔顶的最大石块,剩下的石块自动调整形成新金字塔。:通过调整石块位置,让最大的石块自动浮到顶端。
2025-03-14 12:31:16
93
原创 一文绝对弄懂归并排序
你网购了8件商品,快递小哥送来一堆大小不一的包裹,现在你要按从小到大的顺序整理这些包裹。1️⃣2️⃣:归并排序教会我们——面对复杂问题时,先分解到最小单元,再通过有序协作逐步构建解决方案,这正是团队合作的核心智慧!
2025-03-13 10:50:17
675
原创 HTML块级元素和内联元素(简单易懂)
块级元素在页面上以块的形式显示,通常会独占一行,其宽度默认为父容器的宽度。内联元素在页面上以行内形式显示,不会独占一行,其宽度由内容决定。块级元素:独占一行,可以设置宽度和高度,适用于布局和需要独占空间的元素。内联元素:与前后元素在同一行显示,宽度由内容决定,适用于文本和小部件。转换显示方式:通过CSS的display属性可以灵活地改变元素的显示方式,实现更复杂的布局需求。
2025-03-12 13:24:30
852
原创 HTML嵌入CSS样式超详解(尊享)
行内样式是直接在HTML标签中使用style属性来定义样式。这种方式只对当前标签生效。< tagname style = " css 样式 " >stylecss 样式< tagname style = " css 样式 " >内部样式表是将CSS样式定义在HTML文件的<style>标签中,通常放在<head>部分。这种方式对整个HTML文档生效。< head > < style > 选择器 {css 样式 } </ style > </ head >
2025-03-11 20:18:40
788
原创 HTML 表单详解
HTML 表单是网页中用于收集用户输入的重要组件。通过表单,用户可以输入数据,如姓名、邮箱、密码等,这些数据随后可以被发送到服务器进行处理。表单由 标签定义,其中包含各种表单元素,如文本框、单选按钮、复选框等。一个基本的 HTML 表单结构如下::定义表单的开始和结束。:指定表单提交的目标 URL。:指定表单提交的方法,通常为 或 。:为表单元素提供描述性文本,增强可访问性。: 的 属性与表单元素的 属性对应,建立关联。:定义各种类型的输入字段,如文本框、密码框、提交按钮等。: 的
2025-03-11 16:55:18
1083
原创 HTML 列表详解
HTML 列表用于以结构化的方式展示项目集合。列表可以是无序的(项目符号为圆点、方块等)、有序的(项目符号为数字或字母)或者定义列表(包含术语和描述)。列表在网页布局、导航菜单、表单布局等方面有广泛的应用。无序列表使用标签定义,列表项使用标签表示。每个列表项前默认显示圆点符号。常用属性:设置列表项的项目符号类型,可选值为(实心圆点,默认值)、(空心圆点)、(方块)。三、有序列表()有序列表使用标签定义,列表项使用标签表示。每个列表项前默认显示数字编号。常用属性:设置列表项的编号类型,可选
2025-03-10 18:59:17
669
原创 HTML 表格详解(简单易懂较详细)
HTML 表格是网页中展示数据的重要工具。通过<table><tr><th><td>等标签,可以创建结构清晰、样式美观的表格。标签名描述示例<table>定义表格<table><tr>定义表格中的一行<tr><th>定义表格的表头单元格<th><td>定义表格中的数据单元格<td><thead>定义表格的头部<thead><tbody>定义表格的主体<tbody><tfoot>定义表格的脚部<tfoot>属性名描述示例border设置表格的边框设置单元格内容与边框之间的距离。
2025-03-10 14:29:29
836
原创 HTML 超链接(简单易懂较详细)
HTML 超链接是网页中不可或缺的部分,通过<a>标签和其属性可以实现多种类型的链接。属性名描述示例href指定链接的目标 URLtarget指定链接在何处打开download指定下载链接title为链接提供额外的信息<a title="这是一个示例网站">rel指定链接与当前文档的关系通过合理使用这些属性,可以创建出更加丰富、动态和用户友好的网页。
2025-03-08 10:52:17
710
原创 HTML 插入图片(简单易懂较详细)
在 HTML 中插入图片非常简单,通过<img>标签和其属性可以实现各种功能。属性名描述示例src指定图片的路径alt为图片提供替代文本<img alt="示例图片">width指定图片的宽度height指定图片的高度title为图片添加额外的信息<img title="这是一个示例图片">style为图片定义内联样式">class为图片添加类名id为图片添加唯一标识符loading实现图片懒加载srcset指定不同分辨率的图片路径sizes指定不同屏幕宽度下的图片尺寸。
2025-03-08 09:46:48
1021
原创 HTML 属性(详细易懂)
HTML 属性是 HTML 元素的重要组成部分,它们为元素提供了额外的信息和功能。通过合理使用 HTML 属性,可以创建出更加丰富、动态和用户友好的网页。在实际开发中,我们需要根据具体的需求和场景,选择合适的 HTML 属性,并结合 CSS 和 JavaScript 等技术,实现更加复杂的功能和效果。
2025-03-07 20:23:38
811
1
原创 学习前端前需要了解的一些概念(详细版)
网站(Website)是一个由网络服务器托管的、通过网络访问的、由相关网页和资源组成的集合。它为用户提供信息、服务或娱乐平台,是现代互联网的重要组成部分。网站的基本功能是展示信息和提供服务,用户可以通过浏览器访问网站,获取所需的信息或使用各种在线服务。网站的核心组件包括域名、服务器、网页内容和应用程序。这些组件共同协作,使得用户能够通过网络访问网站并与其进行交互。
2025-03-07 20:10:16
1039
原创 侯捷 C++ 课程学习笔记:Spaces in Template Expression、 nullptr and stdnull
在 C++11 之前,模板表达式中需要在两个闭合的模板参数之间加空格,以避免编译器解析错误。通过学习,我对 C++11 的新特性有了更深入的理解。是一个类型安全的空指针常量,可以用于任何指针类型,但不能用于整数类型。在实际编程中,合理使用这些新特性可以简化代码,减少错误,提高开发效率。的使用简化了代码,提高了可读性,特别是在处理复杂类型时。这种变化简化了模板表达式的书写,提高了代码的可读性。可以简化复杂类型的声明,提高代码的可读性。可以避免空指针的类型不匹配问题,使用。在 C++11 中,
2025-02-27 10:08:45
474
原创 侯捷 C++ 课程学习笔记:变参模板(Variadic Templates)
变参模板(Variadic Templates)是 C++11 引入的一项重要特性,允许模板函数或模板类接受可变数量的参数。变参模板通过模板参数包(Template Parameter Pack)和函数参数包(Function Parameter Pack)实现,极大地增强了模板编程的灵活性和表达能力。
2025-02-27 10:01:57
420
原创 侯捷 C++ 课程学习笔记:C++ 2.0 新特性
例如,自动类型推导和范围 for 循环简化了代码编写,移动语义和智能指针提高了性能和安全性,正则表达式和多线程编程提供了更强大的功能。这节课的目标是帮助学员全面认识 C++ 2.0(即 C++11/14)的新特性,并通过实例获得实际体验。C++ 2.0(即 C++11/14)引入了许多新特性,这些特性在语言和标准库两个层面都有所体现。C++ 2.0(即 C++11/14)引入了许多新的头文件,这些头文件提供了新的特性和功能。通过学习,我对 C++ 2.0(即 C++11/14)的新特性有了更深入的理解。
2025-02-26 16:30:32
660
原创 侯捷 C++ 课程学习笔记:STL 容器的结构与分类(附测试案例代码)
通过学习,我对 STL 容器的结构与分类有了更深入的理解。特别是通过实际的测试案例代码,我更好地理解了每种容器的特性和使用方法。在 C++ 标准模板库(STL)中,容器(Containers)是用于存储和管理数据的重要组件。在实际编程中,合理选择和使用 STL 容器可以显著提高代码的可读性和可维护性。例如,对于需要频繁插入和删除操作的场景,可以选择。在未来的学习和工作中,我将继续深入探索 STL 容器的高级特性,并将其应用到实际项目中,以提升自己的编程能力。对于需要快速查找和排序的场景,可以选择。
2025-02-26 16:13:46
514
原创 捷 C++ 课程学习笔记:STL 应用与复杂度分析
通过学习,我对 STL 的六大组件及其关系有了更深入的理解。老师帮助我掌握 STL 的核心概念和应用技巧。特别是对复杂度分析、迭代器的使用和范围 for 循环的介绍,为后续的面向对象编程和高级开发打下了坚实的基础。在实际编程中,合理使用 STL 可以显著提高代码的可读性和可维护性。同时,理解算法的复杂度,有助于选择合适的算法和数据结构,提高程序的性能。在未来的学习和工作中,我将继续深入探索 STL 的高级特性,并将其应用到实际项目中,以提升自己的编程能力。
2025-02-24 20:06:42
1244
原创 侯捷 C++ 课程学习笔记:C++ 标准库的体系结构与内核分析
C++ 标准库(C++ Standard Library)和标准模板库(Standard Template Library, STL)是 C++ 语言的重要组成部分。同时,理解标准库的实现原理,有助于更好地应用标准库的各种功能,提高开发效率。帮助学生深入理解 C++ 标准库的体系结构和内核原理,从而更好地使用和扩展 C++ 标准库。是 C++ 标准库的一部分,提供了各种通用的模板类和函数,如容器、算法、迭代器等。深入理解 C++ 标准库的体系结构和内核原理,了解标准库的实现机制。
2025-02-24 13:49:54
405
原创 侯捷 C++ 课程学习笔记:四个层面基本用法
C++ 提供了多个层面的内存管理工具,从 C 语言的malloc和free,到 C++ 的new和delete,再到全局的和,以及 C++ 标准库的allocator。这些工具各有特点,适用于不同的场景。在实际编程中,合理选择和使用这些内存管理工具,可以显著提高程序的性能和可维护性。
2025-02-23 13:50:14
328
原创 侯捷 C++ 课程学习笔记:内存管理的每一层面
C++ 应用程序的内存管理架构可以分为多个层次,从应用程序到操作系统 API,每一层都提供了不同的内存管理功能。C++ 应用程序是内存管理的最上层,使用 C++ 提供的各种内存管理工具和库来分配和释放内存。等函数,用于分配和释放内存。C++ 提供了多种内存分配和释放的原语,这些原语在不同的场景下使用,具有不同的特点和用途。在实际应用中,合理选择和使用内存管理工具可以显著提高程序的性能和可维护性。等,用于直接与操作系统交互,进行内存的分配和管理。等内存分配器,用于管理内存的分配和释放。
2025-02-23 13:43:02
668
原创 侯捷 C++ 课程学习笔记:内存管理与工具应用
这里容易出错的地方可能就是用了delete而不是delete[],这样可能导致未定义行为,比如只释放了第一个元素,剩下的没释放,或者破坏堆的结构?还有内存泄漏的情况,比如在函数里分配了内存,但没有在返回前释放,或者因为异常导致delete没有被执行。还有,浅拷贝的问题。总的来说,正确使用new和delete需要严格的代码纪律,确保每个分配都有对应的释放,并且正确处理所有可能的执行路径和异常情况。另外,非法访问的问题,比如分配了n个元素,但访问第n+1个元素,这会导致越界,可能引发崩溃或安全漏洞。
2025-02-22 11:54:17
643
原创 侯捷 C++ 课程学习笔记:类的声明与构造函数
通过学习侯捷老师的 C++ 课程,我对类的声明、内联函数、访问级别和构造函数有了更深入的理解。特别是对构造函数的重载和内联函数的使用,为后续的面向对象编程打下了坚实的基础。同时,理解访问级别的作用,有助于更好地封装类的内部数据,保护类的成员变量和成员函数。例如,在创建复数对象时,可以使用构造函数初始化复数的实部和虚部。类的声明是定义类的基本结构,包括类的成员变量和成员函数。:保护成员,可以在类的内部访问,也可以在派生类中访问。一个无参数的构造函数,用于初始化复数的实部和虚部为0。
2025-02-22 11:37:45
798
原创 侯捷 C++ 课程学习笔记:C++ 基础与演化
老师通过详细的讲解:从基础的变量和类型,到高级的类和对象,再到 C++ 的历史和演化,课程内容丰富而系统。通过学习,我不仅提升了编程相关知识,还明确了要有良好的编程习惯和面向对象的编程思维。
2025-02-21 21:05:01
1073
原创 侯捷 C++ 课程学习笔记:头文件与类的深度解析
头文件(.h或.cpp文件)在 C++ 中扮演着至关重要的角色。它主要用于声明类、函数、变量等,提供代码的接口信息。通过头文件,我们可以实现代码的模块化和重用,提高代码的可读性和可维护性。在上述示例中,通过#ifndef#define和#endif指令,避免了头文件的重复包含,确保代码的正确性。类是 C++ 中的核心概念,用于封装数据和操作数据的函数。通过类,我们可以创建对象,实现面向对象编程的基本思想。通过将声明与实现分离,我们可以在头文件中提供清晰的接口,而在源文件中实现具体的逻辑。
2025-02-21 20:50:42
276
原创 数据结构知识收集尊享版(迅速了解回顾相关知识)
二叉排序树(也称为二叉查找树或二叉搜索树)是一种特殊的二叉树,其中每个节点的值大于其左子树中所有节点的值,小于其右子树中所有节点的值。3.每趟排序,根据对应的增量 t,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。二叉树的顺序存储是将二叉树的节点存储在一个一维数组中,按照从上到下、从左到右的顺序排列。二维数组在计算机中通常以一维数组的形式存储,主要有两种存储方式:按行存储和按列存储。单链表、循环链表和双向链表都是线性表的链式存储结构,它们在存储和逻辑结构上有一些共同点和不同点。
2025-01-05 14:31:40
964
原创 软件工程大复习(七)面向对象设计
软件设计是软件开发过程中的一个阶段,它紧随需求分析之后。设计阶段的目标是将需求转化为一个完整的系统架构和详细设计,这将指导后续的编码和测试工作。概念性设计:确定系统的高层结构和组件,通常包括系统架构的设计。详细设计:涉及具体实现细节,如类设计、接口定义、算法实现等。
2025-01-03 12:33:03
893
原创 软件工程期末大复习(六)面向对象分析
软件分析是软件开发生命周期中的一个关键阶段,它紧随需求收集之后。在这个阶段,分析者的目标是理解用户的需求,并确定系统应该做什么。需求分析:分析用户的需求,确定系统必须实现的功能。概念性设计:确定系统的高级结构和行为,通常不涉及具体的技术细节。详细设计:在这个阶段之前的工作基础上,开始设计系统的具体实现。在面向对象分析中,分析者使用面向对象的概念来构建模型,这些模型将指导后续的设计和实现工作。
2025-01-03 12:29:47
1087
原创 软件工程大复习之(四)——面向对象与UML
面向对象(OO)是一种编程范式,它将数据和处理数据的方法封装在对象中。对象:实例化的数据和方法的集合。类:对象的蓝图或模板。封装:隐藏对象的内部状态和行为,只通过方法暴露有限的接口。继承:允许新类(子类)继承现有类(父类)的特性。多态:允许不同类的对象对同一消息做出响应。UML是一种标准的建模语言,用于软件工程中可视化、构建和文档化软件系统。用例图:描述系统功能和用户如何与系统交互。类图:展示系统中的类、属性、方法和它们之间的关系。对象图:类图的实例,展示对象及其关系。序列图。
2025-01-02 11:52:45
1064
原创 软件工程期末大复习(三)
结构化分析与设计是一种系统开发方法,它强调将复杂问题分解成更小、更易于管理和解决的部分。这种方法基于结构化编程的原则,即通过将程序分解成模块来提高程序的可读性和可维护性。在系统分析与设计中,这意味着将系统分解成模块,每个模块都有明确定义的功能。
2025-01-01 14:55:07
805
原创 软件工程期末大复习(二)
传统软件过程(Traditional Software Process)通常指的是瀑布模型(Waterfall Model),它是一种线性、顺序的软件开发方法。在这种模型中,每个阶段的结束都是下一个阶段开始的前提条件,不允许回溯。形式化方法模型(Formal Methods Model)使用数学技术来描述系统的需求和设计,并通过严格的数学证明来验证软件的正确性。软件演化模型(Evolutionary Model)是一种迭代和增量的软件开发方法,它允许在软件开发过程中逐步细化和完善软件。
2025-01-01 14:42:48
475
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人