<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[老男孩的博客]]></title><description><![CDATA[本博客主要是记录自己的学习点滴~，文章来源于总结，转载，还有在工作中实际碰到的问题以记录，时间原因博文部分为用心打磨，部分仅为临时记录。还有一些不正确老博文随着后续的认识会不断的更正。]]></description><link>https://blog.csdn.net/weixin_45792953</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; weixin_45792953]]></copyright><item><title><![CDATA[一文带你了解，前端性能指标&优化那些事]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/129554675</link><guid>https://blog.csdn.net/weixin_45792953/article/details/129554675</guid><author>weixin_45792953</author><pubDate>Wed, 15 Mar 2023 14:34:21 +0800</pubDate><description><![CDATA[CDN 是内容分发网络的缩写，它是一种将互联网内容快速传输给用户的技术。CDN 通过在不同地区部署多个服务器，将内容缓存到离用户最近的服务器上，从而减少延迟和带宽消耗。CDN 回源是指当 CDN 节点没有缓存用户请求的内容时，需要向源站（原始服务器）请求资源，并重新设置缓存的过程。回源可以保证 CDN 节点总是能够提供最新和最完整的内容给用户，但也会增加源站的负载和流量成本。]]></description><category></category></item><item><title><![CDATA[浏览器对象详解]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/129499915</link><guid>https://blog.csdn.net/weixin_45792953/article/details/129499915</guid><author>weixin_45792953</author><pubDate>Mon, 13 Mar 2023 17:31:35 +0800</pubDate><description><![CDATA[window.screen.deviceXDPI/deviceYDPI 屏幕实际的水平 DPI、垂直 DPI。100 信息性|200 成功|300 重定向|400 客户端错误|500 服务器错误。既是 window 对象属性，也是 document 的对象属性。提供当前窗口中的加载的文档有关的信息和一些导航功能。封装 XMLHttpRequest 请求。用来表示浏览器窗口外部的显示器的信息等。先区别 IE 的不同之处。浏览器系统信息大集合。不携带cookies。]]></description><category></category></item><item><title><![CDATA[一文带你了解，前端模块化那些事儿]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/129427604</link><guid>https://blog.csdn.net/weixin_45792953/article/details/129427604</guid><author>weixin_45792953</author><pubDate>Thu, 09 Mar 2023 17:41:19 +0800</pubDate><description><![CDATA[该文章主要讲述了前端模块化的发展历史和各个阶段的技术方案，包括无模块化（IIFE）、CommonJS、AMD、CMD、ESModule、UMD。其中，无模块化时期的文件拆分是最基础的模块化，但也存在函数命名冲突的问题；IIFE 是现代模块化的基石，利用函数的块级作用域进行隔离，可以控制作用域；CommonJS 文件即模块，模块加载同步，适用于服务器端 node，浏览器端使用 webpack 或 browserfy。]]></description><category></category></item><item><title><![CDATA[Promise 分析与实现（手撕&通过A+规范case）]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/129402668</link><guid>https://blog.csdn.net/weixin_45792953/article/details/129402668</guid><author>weixin_45792953</author><pubDate>Wed, 08 Mar 2023 14:27:44 +0800</pubDate><description><![CDATA[Promise 分析与实现（手撕&通过A+规范case）]]></description><category></category></item><item><title><![CDATA[数据结构与算法(十一)-图(Graph)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122539641</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122539641</guid><author>weixin_45792953</author><pubDate>Mon, 17 Jan 2022 14:45:03 +0800</pubDate><description><![CDATA[文章目录图结构(Graph)一、图的介绍1.  什么是图？2.图的特点3. 图的常用术语：4. 图的表示4.1 邻接矩阵邻接矩阵存在的问题：4.2 邻接表邻接表的问题：二、图结构的封装2.1 图类的创建2.2 添加顶点和边2.3 实现toString()方法测试代码2.4 图的遍历方式图的遍历思想：遍历图的两种算法：2.5 广度优先搜索(BFS)思路：**实现思路：**代码实现：测试代码过程详解简版BFS2.6深度优先搜索(DFS)思路：实现思路：代码实现：测试代码过程详解简版DFS2.7 完整代码
图结构]]></description><category></category></item><item><title><![CDATA[数据结构与算法(十)-红黑树(RedBlackTree)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122494739</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122494739</guid><author>weixin_45792953</author><pubDate>Fri, 14 Jan 2022 15:01:01 +0800</pubDate><description><![CDATA[文章目录红黑树(RedBlackTree)一、红黑树的介绍二、红黑树的五条规则红黑树的相对平衡三、红黑树的三种变化3.1 变色3.2 左旋转3.3 右旋转四、红黑树的插入操作情况1情况2情况3情况4情况5五、实际插入案例插入10插入9插入8插入7插入6插入5插入4插入3插入2插入1
红黑树(RedBlackTree)
一、红黑树的介绍

红黑树（Red–black tree）是一种自平衡二叉查找树，是在计算机科学中用到的一种数据结构，典型用途是实现关联数组。它在1972年由鲁道夫·贝尔发明，被称为"对称二叉]]></description><category></category></item><item><title><![CDATA[数据结构与算法(九)-二叉搜索树(BinarySearchTree)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122479184</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122479184</guid><author>weixin_45792953</author><pubDate>Thu, 13 Jan 2022 17:45:50 +0800</pubDate><description><![CDATA[二叉搜索树(BinarySearchTree)
一、对二叉搜索树的介绍

二叉搜索树（BST，Binary Search Tree），也称为二叉排序树和二叉查找树

1. 二叉搜索树的特性

非空左子树的所有键值小于其根节点的键值。比如：下图三，中节点 6 的所有非空左子树的键值都小于 6
非空右子树的所有键值大于其根节点的键值；比如：下图三，中节点 6 的所有非空右子树的键值都大于 6；
左、右子树本身也都是二叉搜索树


图二和图三符合二叉搜索树的特效，所以属于二叉树
图一中的节点5要比节点7大，不符合]]></description><category></category></item><item><title><![CDATA[数据结构与算法(八)-树(Tree)和二叉树(BinaryTree)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122453812</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122453812</guid><author>weixin_45792953</author><pubDate>Wed, 12 Jan 2022 15:01:24 +0800</pubDate><description><![CDATA[树(Tree)和二叉树(BinaryTree)
一、树结构的介绍
我们大家都见过现实生活中的树????，例如：

1.1 树的特点：

树一般都有一个根，连接着根的是树干
树干会发生分叉，形成许多树枝，树枝会继续分化成更小的树枝
树枝的最后是叶子

现实生活中很多结构都是树的抽象，模拟的树结构相当于旋转180°的树，如下：

1.2 树结构 对比于数组/链表/哈希表 有哪些优势呢？
数组：

优点：可以通过下标值访问，效率高；
缺点：查找数据时需要先对数据进行排序，生成有序数组，才能提高查找效率；并且在插入]]></description><category></category></item><item><title><![CDATA[数据结构与算法(七)-哈希表(HashTable)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122436909</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122436909</guid><author>weixin_45792953</author><pubDate>Tue, 11 Jan 2022 17:05:08 +0800</pubDate><description><![CDATA[哈希表（HashTable）
一、介绍
哈希表并不好理解，不像数组、链表和树等可通过图形的形式表示其结构和原理。
哈希表的结构就是数组，但它神奇之处在于对下标值的一种变换，这种变换我们可以称之为哈希函数，通过哈希函数可以获取HashCode。哈希表通常是基于数组实现的，但是相对于数组，它存在更多优势
1. 哈希表的优点

哈希表可以提供非常快速的插入-删除-查找操作；
无论多少数据，插入和删除值都只需要非常短的时间，即O(1)的时间级。实际上，只需要几个机器指令即可完成；
哈希表的速度比树还要快，基本可以瞬]]></description><category></category></item><item><title><![CDATA[数据结构与算法(六)-字典(Dictionay)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122411937</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122411937</guid><author>weixin_45792953</author><pubDate>Mon, 10 Jan 2022 15:33:42 +0800</pubDate><description><![CDATA[字典(Dictionay)
一、介绍
字典是用来存储唯一值的一种数据结构，通常以 [键, 值] 对 的形式来存储数据，主要特点是一一对应，也称为映射。
在js中字典是使用Map类实现的，每个语言实现的类名不同，比如：Python 中是 dict，Java 中的 HashMap 和 TreeMap，但是实现字典的特点都是一样的
二、字典的实现

为了区分ES6中的Map，这里使用Dictionay作为类名

字典常见的操作

set(key,value) 向字典中添加新元素
remove(key) 通过使用键]]></description><category></category></item><item><title><![CDATA[数据结构与算法(五)-集合(set)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122394357</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122394357</guid><author>weixin_45792953</author><pubDate>Sun, 09 Jan 2022 15:33:21 +0800</pubDate><description><![CDATA[集合(set)结构
一、介绍
集合通常是由一组无序的、不能重复的元素构成。数学中常指的集合中的元素是可以重复的，但是计算机中集合的元素不能重复。
集合是特殊的数组。

特殊之处在于里面的元素没有顺序，也不能重复。
没有顺序意味着不能通过下标值进行访问，不能重复意味着相同的对象在集合中只会存在一份。

二、集合的实现
集合比较常见的实现方式是哈希表，这里使用 JavaScript 的 Object 进行封装
集合常见的操作

add(value) 向集合添加一个新的项
remove(value) 从集合移除一]]></description><category></category></item><item><title><![CDATA[数据结构与算法(四)-双向链表(DoublyLinkedList)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122367104</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122367104</guid><author>weixin_45792953</author><pubDate>Fri, 07 Jan 2022 16:20:45 +0800</pubDate><description><![CDATA[双向链表(DoublyLinkedList)结构
一、双向链表的介绍
既可以从头遍历到尾，也可以从尾遍历到头。链表相连的过程是双向的。实现原理是一个节点既有向前连接的引用，也有一个向后连接的引用
单向链表的特性

只能从头遍历到尾或者从尾遍历到头（一般从头到尾）
链表相连的过程是单向的，实现原理是上一个节点中有指向下一个节点的引用
单向链表有一个比较明显的缺点：可以轻松到达下一个节点，但回到前一个节点很难，在实际开发中, 经常会遇到需要回到上一个节点的情况。
由于双向链表的节点指向是双向的，所以双向链表可以]]></description><category></category></item><item><title><![CDATA[数据结构与算法(三)-链表(LinkedList)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122343313</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122343313</guid><author>weixin_45792953</author><pubDate>Thu, 06 Jan 2022 14:43:49 +0800</pubDate><description><![CDATA[链表结构
一、介绍
链表和数组一样，可以用于存储一系列的元素，但是链表和数组的实现机制完全不同。链表又可以分作单向链表和双向链表。
链表的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用（有的语言称为指针或连接）组成。类似于火车头，一节车厢载着乘客（数据），通过节点连接另一节车厢。如下图所示

链表的火车结构



链表的数据结构


​	head 属性指向链表的第一个节点。
​	链表中的最后一个节点指向 null。
​	当链表中一个节点也没有的时候，head 直接指向 null。

给火车加上数]]></description><category></category></item><item><title><![CDATA[数据结构与算法(二)-队列(queue)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122328075</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122328075</guid><author>weixin_45792953</author><pubDate>Wed, 05 Jan 2022 17:23:05 +0800</pubDate><description><![CDATA[队列(queue)结构
一、介绍
队列是一种特殊的线性表，生活中类似队列结构的场景：

排队:比如在电影院，商场，甚至是厕所排队。
优先排队的人，优先处理。 (买票、结账、WC)。

如图所示：

队列的限制


先进先出 (FIFO：First In First Out)


只允许在表的前端（front）进行删除操作


只允许在表的后端（rear）进行插入操作


如图所示：

二、程序中的队列

打印队列：计算机打印多个文件的时候，需要排队打印
线程队列：当开启多线程时，当新开启的线程所需的资源不足]]></description><category></category></item><item><title><![CDATA[数据结构与算法(一)-栈(stack)]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122305359</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122305359</guid><author>weixin_45792953</author><pubDate>Tue, 04 Jan 2022 16:09:20 +0800</pubDate><description><![CDATA[栈(stack)结构
一、介绍
数组是一个线性结构，并且可以在数组的任意位置插入和删除元素。 但是有时候，我们为了实现某些功能，必须对这种任意性加以限制。 栈和队列就是比较常见的受限的线性结构。
特点：


栈是后进先出（last in first out）的，就是后进入的元素，先出栈。类似于自动餐托盘，最后放上的托盘，往往先拿出去使用


栈的最上面的元素被称为栈顶，栈的最内的元素，被称为栈底


向一个栈插入新元素又称作进栈、入栈或压栈，它是把新元素放到栈顶元素的上面，使之成为新的栈顶元素；


从一个]]></description><category></category></item><item><title><![CDATA[数据结构与算法(零)-前言]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/122303616</link><guid>https://blog.csdn.net/weixin_45792953/article/details/122303616</guid><author>weixin_45792953</author><pubDate>Tue, 04 Jan 2022 15:13:11 +0800</pubDate><description><![CDATA[JavaScript数据结构与算法
本系列文章是作者在B站学习完 《数据结构与算法》后，为了进行总结和复习而整理的学习笔记，视频讲解的特别好，给大家安利一波～
一、什么是数据结构？

数据结构（data structure）是计算机中存储、组织数据的方式。通常情况下，精心选择的数据结构可以带来最优效率的算法。—中文维基百科

一句话总结：数据结构就是在计算机中，存储和组织数据的方式。
例如：图书馆中存放了很多书籍，怎样摆放图书既能放很多书，还方便取？
其实我们主要思考两个问题

新书怎么插入？
怎么快速对找]]></description><category></category></item><item><title><![CDATA[（程序猿专属）1024-从我做起，关爱程序员-漫画篇]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/120932938</link><guid>https://blog.csdn.net/weixin_45792953/article/details/120932938</guid><author>weixin_45792953</author><pubDate>Sun, 24 Oct 2021 14:14:56 +0800</pubDate><description><![CDATA[为什么1024被称做程序员节？
这是因为2¹⁰ = 1024
运行程序的硬件进制是以1024为基础的
例如：1G=1024MB ；1MB=1024KB
因此1024也就成了程序员们最熟悉的数字
在此先祝愿大家：
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
if (today === 1024) {
  console.log("没有加班");
} else {
  console.log("没有bug");
}

⬆️⬆️⬆️⬆️]]></description><category></category></item><item><title><![CDATA[一篇文章带你揭 秘现代浏览器原理]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/120685545</link><guid>https://blog.csdn.net/weixin_45792953/article/details/120685545</guid><author>weixin_45792953</author><pubDate>Sun, 10 Oct 2021 13:52:07 +0800</pubDate><description><![CDATA[现代浏览器原理揭秘
首先我们先了解一些关键的计算机术语以及Chrome浏览器的多进程架构。
前提计算机基础概念
1.CPU（Central Processing Unit）

中央处理器, 解释计算机指令以及处理计算机软件中的数据, 功能强大，它可以串行地一件接着一件处理交给它的任务
现代电脑上cpu通常会有多个核心, 比如经常听到的8核处理器, 4核处理器等等。因为多核心CPU可以大大提高手机和电脑的运算能力
CPU的核心数是指物理上，也就是硬件上存在着几个核心。比如，双核就是包括2个相对独立的CPU核心]]></description><category></category></item><item><title><![CDATA[docker下YApi部署教程-支持swagger数据导入]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/120289368</link><guid>https://blog.csdn.net/weixin_45792953/article/details/120289368</guid><author>weixin_45792953</author><pubDate>Tue, 14 Sep 2021 16:05:26 +0800</pubDate><description><![CDATA[前言：
作为一个前端开发人员，经常会遇到一种情况就是 在后端接口没有出来之前，需要去mock数据，等待真实接口开发完后，替换成真实的接口，而在mock的过程中如果采用假数据的方式进行mock，一是增加无趣的工作量，二是造成了代码入侵，所以应该如果减少这种工作量呢？
其实作为前端可以搭建一个自己的mock平台，去帮我们完成mock和接口管理的工作
经过一番探索，最终选择由去哪儿开源的YApi进行接口mock管理
特性：

免费开源，内网部署，信息再也不怕泄露了
支持 postman, har, swagger]]></description><category></category></item><item><title><![CDATA[vue中使用防抖]]></title><link>https://blog.csdn.net/weixin_45792953/article/details/114137563</link><guid>https://blog.csdn.net/weixin_45792953/article/details/114137563</guid><author>weixin_45792953</author><pubDate>Tue, 06 Apr 2021 10:19:56 +0800</pubDate><description><![CDATA[/**
 * @desc 函数防抖
 * @param fnName 函数
 * @param time 延迟执行毫秒数
 */
export default function VueDebounce(fnName, time) {
  let timeout = null;
  return function () {
    if (timeout) {
      clearTimeout(timeout);
    }
    timeout = setTimeout(() =&gt; {
    ]]></description><category></category></item></channel></rss>