- 博客(139)
- 收藏
- 关注
原创 第 7 章 查找
二叉排序树(也称二叉查找树)或者是一棵空树,或者是具有下列特性的二叉树:1)若左子树非空,则左子树上所有结点的值均小于根结点的值。2)若右子树非空,则右子树上所有结点的值均大于根结点的值。3)左、右子树也分别是一棵二叉排序树。根据二叉排序树的定义,左子树结点值 < 根结点值 < 右子树结点值,所以二叉排序树进行中序遍历,可以得到一个递增的有序序列。例如,图 7.4 所示二叉排序树的中序遍历序列为 1 2 3 4 6 8。图7.4 一棵二叉排序树。
2026-01-17 10:30:15
543
原创 第 6 章 图
第6章 图图的定义图结构的存储邻接矩阵法、邻接表法邻接多重表、十字链表图的遍历深度优先遍历广度优先遍历图的相关应用最小生成树:Prim算法、Kruskal算法最短路径:Dijkstra算法、Floyd算法拓扑排序:AOV网关键路径:AOE网6.1 图的基本概念6.1.1 图的定义图 GGG 由顶点集 VVV 和边集 EEE 组成,记为 G=(V,E)G=(V,E)G=(V,E),其中 V(G)V(G)V(G) 表示图 GGG 中顶点的有限非空集;E(G)E(G)E(G) 表示图 GGG 中顶点之间的关
2025-12-23 16:29:38
2741
原创 第 5 章 树与二叉树
树是nn≥0nn≥0个结点的有限集。当 n = 0 时,称为空树。在任意一棵非空树中应满足:1)有且仅有一个特定的称为根的结点。2)当n1n \gt 1n1时,其余结点可分为mm0m(m \gt 0)mm0个互不相交的有限集T1T2⋯TmT1T2⋯Tm,其中每个集合本身又是一棵树,并且称为根的子树。显然,树的定义是递归的,即在树的定义中又用到了其自身,树是一种递归的数据结构。
2025-12-23 15:29:57
838
原创 第 4 章 串
字符串简称串,计算机上非数值处理的对象基本都是字符串数据。我们常见的信息检索系统(如搜索引擎)、文本编辑程序(如 Word)、问答系统、自然语言翻译系统等,都是以字符串数据作为处理对象的。本章详细介绍字符串的存储结构及相应的操作。串(string)是由零个或多个字符组成的有限序列。一般记为S′a1a2an′n≥0S′a1a2an′n≥0其中,S 是串名,单引号括起来的字符序列是串的值;aia_iai可以是字母、数字或其他字符;
2025-12-23 15:04:11
894
原创 第 3 章 栈和队列
操作受限推广线性表栈顺序栈链栈共享栈队列循环队列链式队列双端队列数组一维数组多维数组:压缩存储、稀疏矩阵3.1 栈3.1.1 栈的基本概念1. 栈的定义栈(Stack)是只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如图 3.1 所示。栈顶(Top):线性表允许进行插入删除的那一端。栈底(Bottom):固定的,不允许进行插入和删除的另一端。空栈:不含任何元素的空表。假设某个栈 S=(a1,a2,a3,a4,a5)S = (a_1, a_
2025-12-23 14:50:06
544
原创 第 2 章 线性表
线性表是具有相同数据类型的nn≥0nn≥0个数据元素的有限序列,其中nnn为表长,当n0n=0n0时,线性表是一个空表。若用LLL命名线性表,则其一般表示为La1a2aiai1anLa1a2aiai1an式中,a1a_1a1是唯一的 “第一个” 数据元素,又称为表头元素;ana_nan是唯一的 “最后一个” 数据元素,又称为表尾元素。
2025-12-23 14:29:26
665
原创 第 1 章 绪论
fill:#333;color:#333;color:#333;fill:none;第1章 绪论数据结构(三要素)逻辑结构线性结构:线性表、栈、队列非线性结构:树、图、集合存储结构(物理结构)数据的运算五个特征算法的定义五个特性有穷性、确定性、可行性、输入、输出效率的度量时间复杂度空间复杂度。
2025-12-23 13:38:35
462
原创 1. 严格模式
早期的 JavaScript 语言有很多设计不合理的地方,但是为了兼容以前的代码,又不能改变老的语法,只能不断添加新的语法,引导程序员使用新语法。严格模式是从 ES5 进入标准的,主要目的有以下几个。总之,严格模式体现了 JavaScript 更合理、更安全、更严谨的发展方向。
2025-12-23 09:56:31
986
原创 2. 装饰器
2015备注:虽然中可以直接使用类装饰器,但为了确保其他装饰器可用,现阶段使用时,仍建议使用配置来开启装饰器支持,而且不排除在来的版本中,官方会装饰器的相关语法!
2025-09-22 15:15:47
1211
原创 1. Typescript 快速入门
今非昔比的 JavaScript(了解)JavaScript 中的困扰😞 1. 不清楚的数据类型😞 2. 有漏洞的逻辑😞 3. 访问不存在的属性😞 4. 低级的拼写错误静态类型检查浏览器不能直接运行 TypeScript 代码,需要编译为 JavaScript 再交由浏览器解析器执行。要把 .ts 文件编译为 .js 文件,需要配置 TypeScript 的编译环境,步骤如下:第⼀步:创建⼀个 demo.ts 文件,例如:第二步:全局安装 TypeScript第三步:使用命令编译 .ts
2025-07-24 13:45:26
2842
2
原创 2. Webpack 高级配置
提升开发体验使用Source Map让开发或上线时代码报错能有更加准确的错误提示。提升 webpack 提升打包构建速度使用让开发时只重新编译打包更新变化了的代码,不变的代码使用缓存,从而使更新速度更快。使用OneOf让资源文件一旦被某个 loader 处理了,就不会继续遍历了,打包速度更快。使用排除或只检测某些文件,处理的文件更少,速度更快。使用Cache对 eslint 和 babel 处理的结果进行缓存,让第二次打包速度更快。使用Thead。
2025-07-24 09:09:24
1300
原创 1. webpack5 基础入门
开发模式:仅能编译 JS 中的ES Module语法生产模式:能编译 JS 中的ES Module语法,还能压缩 JS 代码开发模式顾名思义就是我们开发代码时使用的模式。编译代码,使浏览器能识别运行开发时我们有样式资源、字体图标、图片资源、html 资源等,webpack 默认都不能处理这些资源,所以我们要加载配置来编译这些资源代码质量检查,树立代码规范提前检查代码的一些隐患,让代码运行时能更加健壮。提前检查代码规范和格式,统一团队编码风格,让代码更优雅美观。
2025-07-21 11:17:40
814
原创 第 28 章 最佳实践
通常,说代码“可维护”就意味着它具备如下特点。❑ 容易理解:无须求助原始开发者,任何人一看代码就知道它是干什么的,以及它是怎么实现的。❑ 符合常识:代码中的一切都显得顺理成章,无论操作有多么复杂。❑ 容易适配:即使数据发生变化也不用完全重写。❑ 容易扩展:代码架构经过认真设计,支持未来扩展核心功能。❑ 容易调试:出问题时,代码可以给出明确的信息,通过它能直接定位问题。
2025-07-16 09:35:34
922
原创 2. 说说 HTTP 常见的状态码有哪些,适用场景?
HTTP 状态码(英语:HTTP Status Code),用以表示网页服务器超文本传输协议响应状态的 3 位数字代码它由 RFC 2616 规范定义的,并得到RFC 2518RFC 2817RFC 2295RFC 2774与RFC 4918等规范扩展简单来讲,http状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态。
2025-07-10 14:39:03
388
原创 3. 7 种常见的前端攻击
HTTPS 是一种安全协议,可以对传输数据进行加密,防止攻击者窃取或篡改。CSRF 攻击通常利用用户的信任来实施,因为用户在自己的浏览器中看到的是来自可信网站的请求,而没有意识到该请求实际上是被攻击者伪造的。点击劫持 (Clickjacking) 是一种欺骗攻击,攻击者在可信赖的页面上使用透明或半透明的覆盖层来欺骗用户点击他们所看到的以外的内容,例如按钮或链接。大家都知道,保证网站的安全是十分重要的,一旦网站被攻陷,就有可能造成用户的经济损失,隐私泄露,网站功能被破坏,或者是传播恶意病毒等重大危害。
2025-07-10 14:38:09
920
原创 5. 跨域
fill:#333;color:#333;color:#333;fill:none;能不能支持不支持能更改服务器吗浏览器支持CORS吗代理CORSJSONPCORS 支持所有类型的 HTTP 请求,是跨域 HTTP 请求的根本解决方案JSONP 只支持 GET 请求,JSONP 的优势在于支持老式浏览器,以及可以向不支持 CORS 的网站请求数据。不管是 Node 中间件代理还是 nginx 反向代理,主要是通过同源策略对服务器不加限制。
2025-07-10 14:30:06
473
原创 9. 元素拖拽
整个拖放过程中,存在两个关键元素:拖拽元素、放置元素 拖拽元素:被拖拽的元素放置元素:在 HTML 中,文本、图片和链接是默认可以拖放的元素。其他元素都是默认不可拖动的,如果需要让其他非默认可拖动的 HTML 元素变得可拖动,比如、等,你需要明确地为这些元素设置 属性。这样,这些元素就能够接受拖放操作了。所有 HTML 元素在默认情况下都不接受拖拽元素的放置,除非通过特定的事件处理来允许。要使一个 HTML 元素能够接受被拖动的元素,需要对这个元素进行一些特定的设置和事件绑定:DataTransfer 对
2025-06-25 09:52:33
488
原创 10. JSON 转换中的精度问题
因为 JavaScript 语言问题,数字大于 16 位后,会丢失 16 位以后的数字:比如声明。将 json 字符串转为 Object 时,如果其中有大数字的值,也会发生精度丢失问题。打印 n 之后会显示 1234567890123456800;
2025-06-25 09:43:58
277
原创 9. CSS 引入方式
样式表优点缺点使用情况控制范围行内样式表(行内式)书写方便,权重高结构样式混写较少控制一个标签内部样式表(嵌入式)部分结构和样式分离没有彻底分离较多控制一个页面外部样式表(外链式)完全实现结构和样式相分离需要引入最多控制多个页面。
2025-06-20 09:08:17
868
原创 5. 定位 position
我们通过上面的学习,知道position属性有五个可选值但static是默认值,即不开启定位,所以我们只需要对比 4 种定位方式即可定位方式是否不设置偏移量,元素不会发生改变是否脱离文档流是否改变元素性质是否提升元素层级参考系relative(相对定位)√××√参照于元素在文档流中的位置absolute(绝对定位)×√√√参照于其包含块fixed(固定定位)×√√√参照于浏览器的视口sticky(粘滞定位)×√√√参照于浏览器的视口。
2025-06-18 10:12:56
751
原创 2. 前端该如何选择图片的格式?
图片的类型目前就分为两种:位图矢量图所谓位图就是用像素点拼起来的图,也叫点阵图,平时我们用到的 png、jpg 等图片就是位图。矢量图,也叫做向量图。矢量图并不记录画面上每一点的信息,而是记录了元素形状及颜色的算法,当你打开一幅矢量图的时候,软件对图形对应的函数进行运算,将运算结果图形的形状和颜色显示给你看。无论显示画面是大还是小,画面上的对象对应的算法是不变的,所以,即使对画面进行倍数相当大的缩放,它也不会像位图那样失真。
2025-06-17 10:23:03
630
原创 3. pm2
pm2 是一个进程管理工具,可以用它来管理你的 node 进程,并查看 node 进程的状态,当然也支持性能监控,进程守护,负载均衡等功能。
2025-06-17 09:41:49
228
原创 1. 说一下 http 和 https
http:超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。https:是以安全为目标的 http 通道,简单讲是 http 的安全版,即 http 下加入 ssl 层,https 的安全基础是 SSL,因此加密的详细内容就需要 ssl。ssl 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密(在传输层)。
2025-06-17 09:32:15
409
原创 8. 原型与原型链
一、引用类型皆为对象原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点:JavaScript 中一切引用类型都是对象,对象就是属性的集合。Array 类型、Function 类型、Object 类型、Date 类型、RegExp 类型等都是引用类型。也就是说数组是对象、函数是对象、正则是对象、对象还是对象。二、原型和原型链是什么上面我们说到对象就是属性(property)的集合,有人可能要问不是还有方法吗?其实方法也是一种属性,因为它也是键值对的表现形式。可以看到 上确实多了一个
2025-04-21 11:12:20
732
原创 3. html5 form 表单
在移动端,inputmode 值会影响弹出的键盘布局: 可以为元素设置快捷键,当按下快捷键后,可以聚焦元素: 用户可以使用 tab 键切换聚焦的元素,默认情况下,切换的顺序和元素的顺序一致,如果希望不一致,可以通过 tabindex 属性进行手动干预:是一个枚举属性,它控制用户输入/编辑文本输入时文本输入是否自动大写,以及如何自动大写。offnoneonsentenceswordscharacters在物理键盘上输入时,属性不会影响行为。
2025-02-14 14:20:46
772
原创 3. 手写 promise
表示一个异步操作的最终结果,与之进行交互的方式主要是then方法,该方法注册了两个回调函数,用于接收promise的终值或本promise不能完成的原因。本规范详细列出了then方法的完成过程,所有遵循 Promises/A+ 规范实现的promise均可以本标准作为参照基础来实施 then 方法。因而本规范是十分稳定的。尽管 Promise/A+ 组织有时可能会修订本规范,但主要是为了处理一些特殊的边界情况,且这些改动都是微小且向下兼容的。
2025-02-12 16:42:11
617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅