自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 【线代基础】张量、向量、标量、矩阵的区别

例如,x=np.array([[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]])具有方向性,可以理解为一个多维数组,它是标量、向量、矩阵的高维扩展,属于一个数据容器。通常,张量的维度被称作轴(axis),张量轴的个数也叫做阶(rank)因为向量只有一个轴,只是在轴上有4个元素组成了4个维度!概念上为又代表方向,又代表大小的一组数,几何意义上对应。例如,x=np.array([1,2,3,4])上述x为4D向量,但不是4D张量。

2024-03-12 17:03:46 350

原创 【Linux】什么是.bashrc,以及其使用方法

bashrc,属于一种系统隐藏文件,常常可见于 macOS 或者主流的 Linux 发行版。如果你运行一个基于 Unix 或者类 Unix 的操作系统,bash 很有可能是其默认终端,那么.bashrc就是这个终端里面指令运行的配置脚本。

2024-01-26 17:32:16 3050 1

原创 【JS】用正则匹配实现模糊搜索

) 执行正则表达式中的正向预查。正向预查是一种零宽度断言,它不消耗自身字符去匹配,而是用于查看字符串中的 当前位置之后是否能够匹配指定的模式。*注意,这里正向预查的括号,代表里面的预查都是独立的,是接着外部正则表达式指向的位置来查的,所以当多个预查连续排列是,预查开始的位置不是上一个预查结束的位置,而是括号外部指向的、此时匹配到的位置。利用这个性质,我们可以实现模糊搜索要求的乱序字符匹配!正则表达式中,除了正向预查外,还有其他预查方式,作出一个补充:1、正向肯定预查 (?

2024-01-25 19:57:52 645

原创 git tag的用法详解

不过上述基于tag来checkout的前提,是要保证本地仓库中你有tags 的信息,,此时后面可以通过 -m ,像提交commit一样备注你的评论以及其他信息。打tag分为两种方式,一种是直接打tag,打一个简单的标签。通常,在进行编译部署之前,我们需要对某一个。tag基于某个commit来进行特定标识,如果是想更新远程的tag,用--force。,例如tag为release-v1.0。生成一个带tag的类似branch。标记一个特定的commit。一个是打带注释的tag。

2024-01-24 11:50:04 751

原创 JS中的File(四):文件流Streams API使用详解

PS:涉及到一些基本的文件操作和格式内容知识,可以进入我的主页参考我之前的此系列文章。这个系列我还会继续更新下去的~参考:从 Fetch 到 Streams —— 以流的角度处理网络请求 - 掘金 (juejin.cn)Stream API - Web API 接口参考 | MDN (mozilla.org)在流之前,如果想要对文件资源进行操作,需要先下载完整的文件,等待它反序列化成合适的格式,在完整地对接收到的内容进行统一处理。流出现之后,网络发送文件可以将文件以一块块的数据形式传输,这使得——视频缓冲区

2024-01-18 15:39:59 1152

原创 JS中的File(三):文件编码格式(ASCII、Unicode、UTF8等)

Unicode给所有的字符一一对应的关系,但是如果用来储存太浪费空间,比如,字符'A',ASCII编码只需要一个字节(8位),但是用Unicode就翻了一倍。

2024-01-15 17:42:14 497

原创 【图片滚动加载】如何解决滚动触发大量事件导致加载性能差

2、防抖:在节流的基础上,避免大量滚动触发事件导致相同的功能函数执行多次,因此设置timeout定时器,在等待执行的定时器有且仅有一个,delay时间后定时器中的内容执行完毕,定时器取消。3、两者互相控制:由于有时候网络请求比较快,快于delay时间,那么仅仅使用节流函数,会导致为了满足delay长的等待时间而导致。1、节流:特定delay时间内,无法再触发相关功能函数的执行。所以,加入timeout定时器,

2024-01-15 12:18:52 416

原创 JS中的File(二):TypedArray和ArrayBuffer详解

TypedArray是描述表达二进制数据的一种类数组数据视图,但并没有一个叫TypedArray的直接构造器。所以,属于TypedArray的子类有以下,其均可用于构造以及相关的类数组操作ArrayBuffer对象用来表示通用的原始二进制数据缓冲区。它是一个字节数组,是一个可转移对象(),但是它不可以直接操作其中的内容,而是要通过转换为TypedArray或者DataView(一种对象视图接口)再来进行读写操作。构造函数的形式length代表数组缓冲区的大小(以字节为单位。

2024-01-12 16:38:09 1040

原创 JS中的File(一):Blob对象详解

Blob是一个装着二进制数据的容器对象。Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成来用于数据操作。

2024-01-12 11:58:01 1586

原创 【Node】Express模块set、engine、all、use等常用接口解析

在Express用作node后端框架时,一般我们通过如下方式,在app.js中引入express模块引入完毕后,可以用app提供的各个接口引入各个中间件、路由配置、模板引擎等,在app上配置的参数都属于。接下来对常用的API做出介绍。

2023-12-14 16:31:42 138

原创 Access-Control-Allow-Origin如何给CORS设置多域名

作为通配符来说,直接变成对所有域名公开,非常的不安全。那如何设置特定的多个域名?Vary:<header1> , <header2>... 某些字段进行缓存。因此,响应现支持字段Vary,其可以对报文中某个字段的缓存进行控制。Vary: * 所有字段都不进行缓存。控制哪些域名可以共享资源,取值如下。

2023-11-06 17:25:39 2818

原创 log4js日志管理(分级、格式化、切割等)使用详解

log4js使用以放入node后端收集日志

2023-11-02 18:10:48 876

原创 断言(Assert)使用、原理以及注意事项详解

NDEBUG:控制assert是否生效, 在调试结束后#define NDEBUG 来禁用 assert 调用。例如:#include//相当于NDEBUG对assert起到如下作用#else...DEBUG:代表在测试阶段,可以这样定义宏以控制assert使用#define DEBUG // release 版本注释掉即可,测试版本定义#else#endif。

2023-10-18 11:54:02 1342

原创 【flex布局】理解flex-grow、flex-shrink和flex-basis

在使用弹性布局的时候,我们经常用上述三个css属性去控制弹性元素在主轴方向上的尺寸和伸缩性。接下来将详细介绍下在控制这三个属性的应用场景和功能特性。的宽度。在支持这个关键字的浏览器你可以看见文本已尽可能抓住机会来自动换行,使之变得尽可能小且没有溢出。这就是该字符串的大小。本质上讲,字符串中最长的单词决定了大小。第二段设置了值,其与前者相反。它会变得尽可能大,没有自动换行的机会。如果容器太窄,它就会溢出其自身的盒子。flex-direction切换主轴。

2023-09-25 23:50:47 750

原创 【原型链】记录面试题库

所以在不进行任何操作时,仅仅生成实例对象a并打印a.x输出的结果是。首先要理解,构造函数中的this.x和a.x有什么区别?所以最后打印出来还是继承属性的值。this被绑定在了实例对象a上面。第三个,删除a.x:注意一个。的,在构造完毕之后,

2023-09-16 15:15:40 37

原创 【JS】变量提升和函数提升详解

为什么会有“提升”的概念,简单来说,就是JS在执行之前会经历预编译的阶段,在这个过程中会将变量声明与函数声明提升到作用域的头部。变量声明的提升是以变量所处的第一层词法作用域为“单位”的,即全局作用域中声明的变量会提升至全局最顶层,函数内声明的变量只会提升至该函数作用域最顶层。在ES6之前,变量通常用var来声明,此时在作用域内存在变量提升【在ES6之后,引入了块级作用域的概念,如果用let const去声明变量,会存在暂存死区,即虽然存在提升但是在变量的声明定义语句之前不可以调用,否则报错 】典例:

2023-09-02 16:32:23 184

原创 【React】react版本迭代概览

React 是一个由 Facebook 开发的用于构建用户界面的 JavaScript 库。以下是一些 React 的版本发布时间以及每个版本的一些新特性的概述。请注意,这里列出的特性可能不是详尽无遗的,而是一些主要的特性。React 的发展非常迅速,因此建议查阅官方文档以获取更详细和准确的信息。用于实现更强大的代码分割和异步加载。异步渲染和 React Fiber。(2015年10月)(2018年11月)(2020年10月)

2023-08-27 15:36:15 1161

原创 【React】Fiber介绍

简而言之,React Fiber 是一种协调引擎,用于管理组件的更新和渲染,而 Fiber Tree 是一种改进的虚拟 DOM 树结构,用于支持 React Fiber 引擎的工作方式。:为了避免渲染过程中长时间的中断,React Fiber 使用了时间分片的概念,将渲染任务划分为小的时间片,确保在时间片结束后有机会中断任务。:传统的 React 渲染是同步的,一旦开始渲染,需要一次性完成整个组件树的渲染,这样可能导致页面发生阻塞。的一种协调引擎,用于处理组件的更新和渲染。或需要高度响应性的场景下。

2023-08-27 15:21:35 826

原创 【c++】常见区间算法问题整理

区间算法解决的重点:1、升序排列,定出区间之间左端点的关系,只需使用右端点即可得到区间关系,简化操作2、区间关系有三种:解题思路:!注意:在这个题目中,由于升序排列区间之后,能产生覆盖只可能在相邻的区间中产生覆盖,因此,只需要用left和right记录此时最邻近的、已覆盖的最大区间,由此判断下一个区间是否会产生完全覆盖小坑记录:bool比较函数传入sort方法的时候,请用static定义代码如下:按照上面所说的区间关系,记录left和right,不断更新在断开区间的时候或者在遍历末尾,将新纪录的区间放

2023-08-26 20:05:42 609

原创 【JS】实现微信抢红包算法

如果要改变最大值为y,应该Math.random()*y;如果要改变最小值为x,应该为Math.random()+x,同时要保证最大值不变依旧为y的话,应该为Math.random()*(y-x)+x。但是如果最大值或者最小值的要求比较严格,比如大于0.1小于3,这样可能会导致如果前4个如果取太小,剩余的那个超过了最大值。4、红包要设置最大值,如果第一个红包为5,剩下四个红包没法分,这里设置最大值为4.9。1、要在最小值和最大值范围内,因此控制好生成随机数的区间。5、处理金额的浮点数,两位小数。

2023-08-26 14:52:47 333

原创 【vue模版编译】vue3和vu2在模版编译过程中的区别

Vue 3引入了静态提升(Static Template Hoisting)的概念,它将模板中的静态内容(在编译时可确定的内容)在渲染函数外部提前创建,从而减少运行时的开销。- Vue 3的编译器生成的渲染函数可以更好地进行tree shaking(树摇优化),这意味着在最终打包中只包含用到的代码,减少了不必要的代码体积。- Vue 3的编译器可以更好地支持Fragments(片段)和Teleport(传送门)等特性,这些特性在Vue 2中可能需要特殊的处理。这种方法在一些性能方面存在一些限制。

2023-08-24 13:57:06 125

原创 【react】有状态和无状态组件详解

由于无状态组件没有自己的状态,它们的渲染结果完全由输入的 props 决定,因此在相同的输入下始终会产生相同的输出。在 React 中,无状态组件(Stateless Component)和有状态组件(Stateful Component)是两种常见的组件类型,它们之间的主要区别在于是否具有内部状态(state)和是否能够访问 React 的生命周期方法。无状态组件是指那些不持有内部状态(state)的组件。有状态组件是指那些持有内部状态(state)的组件。,从而模糊了无状态组件和有状态组件之间的界限。

2023-08-23 15:41:52 267

原创 【node.js】express框架中间件中对next函数原理的讨论

理论上,所有的中间件在处理控制权交接以及中间件跳转时,都需要调用next。多个中间件的控制权的传递,并且它会接收一个参数"route",如果调用next(“route”),则会跳过执行当前的中间件,直接将控制权交给下一个匹配的路由。next函数主要负责将控制权交给下一个中间件,如果当前中间件没有终结请求,并且next没有被调用,那么。中的中间件,将其做依次匹配,若匹配成功则执行【对于app.use默认匹配路劲是'/',即匹配任何请求】路径时,首先会执行中间件1,然后执行中间件2。在这个例子中,当访问。

2023-08-20 14:24:12 189

原创 Redux使用方法和基本原理详解

重要的入参:store、next、actionnext是一个函数,用于将 action 继续传递给下一个中间件或最终到达 reducer。在中间件函数中,你可以执行一些逻辑,然后调用来将 action 传递给下一个中间件或 reducer。// 在 action 被分发到 reducer 前执行的逻辑// 将 action 传递给下一个中间件或 reducer// 在 action 被分发到 reducer 后执行的逻辑。

2023-08-19 16:25:28 126

原创 浅拷贝、深拷贝和浅比较、深比较的理解

当传入的依赖项是一个数组或者对象时,如果每次更新数组和对象不是返回新的引用,而仅仅是直接修改其内容中的key:value则不会触发useEffect执行。在js中===、react中useEffect、useMemo(根据依赖项缓存函数返回值,有时候也可以视作对于依赖项的一些再加工计算)的执行都根据的是浅比较,那么在写代码时候如何让其实现深比较呢?当你去复制或者传递一个值的时候,浅拷贝会创建一个新的空间或对象,然后简单地将值复制给新的对象。深拷贝也是创建了一个新的空间或对象,但是并不是简单的赋值,而是。

2023-08-19 13:40:34 164

原创 【http】长连接和短连接的区别以及socket发挥的作用

短连接也可以使用Socket来实现,但在短连接模式下,每次通信都需要建立一个新的Socket连接,然后在通信完成后关闭连接。- 长连接可以使用Socket来实现,通过在客户端和服务器之间建立一个持久的Socket连接,可以保持通信通道一直打开,从而实现实时数据推送等需求。- 在长连接的情况下,客户端和服务器可以使用同一个Socket连接来交换多次请求和响应,而不需要频繁地建立和关闭连接。- 短连接模式下,每次连接的生命周期很短,只在需要通信时才建立连接,通信完成后立即关闭。

2023-08-18 10:19:33 523 1

原创 【node.js】commonjs和es6 module的区别

总之,CommonJS主要用于服务器端,模块加载是同步的,适用于需要在运行时动态加载模块的情况。ES6模块在现代浏览器和Node.js中都得到广泛支持,支持静态加载和异步操作,更适合于现代Web开发。选择哪种模块系统取决于你的项目需求和目标环境。CommonJS(简称CJS)和ES6模块(也称为ESM)都是用于在JavaScript中管理模块化的标准,但它们在语法和使用方面存在一些重要区别。

2023-08-17 10:25:40 317 1

原创 【JS】关于==、===与Object.is考察时的坑点总结

【代码】【JS】关于==、===与Object.is考察时的坑点总结。

2023-04-21 19:05:39 60

原创 【JS】var和let区别详解

let 声明的变量的作用域既可以是全局或者整个函数块,也可以是 if、while、switch等用。1、执行上下文:执行上下文有三类:全局执行上下文、函数执行上下文、eval 函数执行上下文。上述过程就是我们所谓的“变量提升”,这也就能解释为什么变量可以在声明之前使用,因为。let声明的作用域下,虽然变量依然在创建执行上下文的时候就被创建,var 和 let 的作用域规则都是一样的,其声明的变量只在。- var 声明的变量的作用域只能是全局或者整个函数块的。var 在全局环境声明变量,会在。

2023-04-09 23:22:11 741

原创 【JS】手写实现Array数组扁平化方法flat

实现要求:参考MDN。

2023-03-20 20:55:24 126

原创 【Promise】以例题理解resolve、reject和冒泡捕获机制

1、在new Promise传入的函数种,resolve之后,promise状态锁定在了[fulfilled],而不会因为后面的代码存在改变其状态。1、在new Promise传入的函数种,reject之后,promise状态锁定在了[rejected],而不会因为后面的代码存在改变其状态。证明了上述理论,then中的错误抛出如果未被捕获,会中断外部执行,而new Promise中的错误会被吞掉,不影响执行,仅仅warning!3、注意:resolve不可以出现在回调函数then中,没有任何意义。

2023-03-19 12:00:25 221

原创 用JS实现5种常用排序

【代码】用JS实现5种常用排序。

2023-03-18 21:06:03 188

原创 【面经】携程暑期实习一面

节流函数:会按照一定的频率来执行函数。节流类似于技能cd,不管你按了多少次,必须等到cd结束后才能释放技能。也就是说在如果在cd时间段,不管你触发了几次事件,只会执行一次。T0T感觉面试体验很好,面试官很耐心很温柔也很专业,就是我有点菜了捏,还有很多掌握得一般,经不起细问。- 防抖函数:函数的延迟执行;应用场景:当频繁触发同一个事件时,只有最后一次会被执行,减少了因为频繁的网络请求带来的开销。2、== 和 === 和Object.is()区别(主要注意:Object.is()和===的细微差别)

2023-03-15 20:48:20 197

原创 【C++ STL容器】map容器方法总结

Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗。

2023-03-13 22:15:54 537

原创 【JS】数据类型、函数传参和内存

JS基础——数据类型

2023-02-16 21:34:26 88

转载 【JS】原型链:__proto__和prototype解析

围绕一个典例展开对JS原型链的理解和阐述

2023-02-16 16:24:47 1048

原创 【Javascript】并发模型和事件循环详解

Javascript异步编程是重要一环,但是它是如何组织执行顺序的呢?这篇文章将详细探讨其背后的事件循环机制

2023-01-16 23:26:50 119

原创 【git】git配置与常用命令总结

git简单教程

2023-01-16 12:39:45 693

原创 【JS对象】看这一篇就够!从实践到底层JS对象详解!

JS对象详解

2022-09-06 21:48:35 804

原创 【JS执行机制】从表面到深入,详解闭包及其背后的作用域链

从JS执行机制的角度谈闭包

2022-09-02 17:39:18 197

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除