自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端广度面试题(从前端到全栈)

前端广度测试面试题

2022-12-12 17:48:00 243 1

原创 前端深度面试题(原理和源码)

前端面试题

2022-11-10 16:26:14 438

原创 前端基础面试题(前端经典面试题)

前端基础面试题整理

2022-10-30 11:01:46 462

原创 React学习笔记

react学习笔记

2022-10-29 14:59:29 1258

原创 算法题:切换字母大小写

切换字母大小写,正则表达式 vs ASCII编码,分析时间复杂度

2022-07-20 18:13:16 101

原创 算法题:数字千分位格式化

数字千分位格式化,数组方式 vs 字符串方式,分析时间复杂度

2022-07-20 17:27:56 222

原创 算法题:获取1-10000之间所有的对称数(回文数)

获取1-10000之间所有的对称数(回文数),数组 vs 字符串 vs 生成翻转数,分析时间复杂度

2022-07-20 15:40:45 639

原创 算法题:请用JS实现快速排序,并说明时间复杂度

快速排序,splice vs slice,并分析时间复杂度

2022-07-20 14:30:58 232

原创 算法题:请找出字符串中连续最多的字符,以及次数

找出字符串中连续最多的字符以及次数,嵌套循环 vs 双指针,分析时间复杂度

2022-07-12 15:33:27 794

原创 算法题:将数组中的0移动到末尾

将数组中的0移动到末尾,嵌套循环 vs 双指针思路,分析时间复杂度

2022-07-12 11:45:34 608

原创 算法题:斐波那契数列

斐波那切数列,递归 vs 循环

2022-07-11 17:42:24 113

原创 算法题:求二叉搜索树的第 k 小值

二叉树及三种遍历方式

2022-07-11 14:13:46 261

原创 算法题:找出一个数组中和为n的两个数

找出一个数组中和为n的两个数

2022-07-08 14:31:00 436

原创 算法题:二分查找

二分查找,递归 vs 非递归

2022-07-08 11:31:34 73

原创 算法题:链表实现队列

链表实现队列

2022-07-06 16:00:21 95

原创 数据结构:链表,算法题:反转单向链表

反转单向链表

2022-07-06 11:17:58 124

原创 pm2的常用命令

pm2常用命令与配置文件

2022-06-01 11:03:10 728

原创 算法题:两个栈实现一个队列

该题的解题思路用到了数据结构栈和队列的概念,请查看 栈 和 队列/** * @description 两个栈实现一个队列 * @author lsr */export class Queue { private stack1: number[] = [] private stack2: number[] = [] /** * 入队 * @param num num */ push(num: number) { this.stack1.push(num)

2022-04-08 15:00:12 1359

原创 数据结构:队列

队列先进先出API:push、shift、lengthconst queue = []queue.push(100) // 入队queue.push(200)queue.push(300)const n = queue.shift(100) // 出队queue.length // 长度注:数组是有序结构,用shift实现队列很慢,暂且忽略这个问题,这里以实现功能为主后续解决方案:链表数组 vs 队列没有关系,数组可以实现队列队列是逻辑结构,理论模型数组是物理结构,可

2022-04-08 14:54:12 441

原创 算法题:判断一个字符串是否括号匹配

判断一个字符串是否括号匹配

2022-04-07 18:33:59 1269

原创 数据结构:栈

栈先进后出API:push、pop、lengthconst stack = []stack.push(100) // 入栈stack.push(200)stack.push(300)stack.pop(100) // 出栈stack.length // 长度栈 vs 数组没有任何关系,数组可以实现栈,别的方式同样可以实现栈栈是逻辑结构,理论模型,不受语言的限制数组物理结构,功能实现,受限于编程语言划重点栈逻辑结构 vs 物理结构......

2022-04-07 18:32:23 275

原创 算法题:将一个数组旋转 k 步都有哪些方法并分析复杂度

/** * @description Array rotate * @author lsr *//** * 将一个数组旋转 k 步 - pop unshift * @param arr arr * @param k k * @returns arr */export function rotate1(arr: number[], k: number): number[] { const length = arr.length if (!k || length === 0) re

2022-04-02 17:49:30 1193

原创 数据结构和算法

重点算法复杂度:空间、时间算法思维:贪心、二分、动态规划常见数据结构算法复杂度什么是复杂度程序执行时需要的计算量(cpu)和内存空间(和代码是否简洁无关)复杂度是数量级(O)(方便记忆、推广),不是具体的数字一般针对一个具体的算法,而非一个完善的系统时间复杂度空间复杂度时间复杂度 - 程序执行时需要的计算量(CPU):O(1):“可数的”,和输入量无关,计算一次—— 一次就够(数量级)O(logn):“对数”,输入量越大,计算量越趋于平缓——数据量的对数(数量级)O(n)

2022-04-01 16:53:46 665

原创 Javascript的设计模式之从设计到模式(其他设计模式)

(五)原型模式根据已有对象,clone一个新对象object.create()(十)桥接模式用于把抽象化与实现化解耦使得二者可以独立变化业务中使用较多设计原则:抽象和实现分离,解耦开放封闭原则(十一)组合模式生成树形结构,表示“整体-部分”关系让整体和部分都具有一致的操作方式场景:文件夹、vnode、菜单设计原则:整体和单个节点的操作抽象出来开放封闭原则(十二)享元模式共享内存(主要考虑内存,而非效率)相同的数据,共享使用设计原则:将相同的

2022-03-28 18:37:35 892

原创 Javascript的设计模式之从设计到模式(重要设计模式)

一、五大设计原则S - 单一职责原则(做好一件事)O - 开放封闭原则(可扩展,不修改)L - 李氏置换原则(子类覆盖父类)I - 接口独立原则(单一独立)D - 依赖倒置原则(依赖抽象)二、23种设计模式创建型工厂模式(工厂方法模式、抽象工厂模式、建造者模式)(创建和生成)√单例模式(只能出现一个对象)√原型模式 (通过拷贝一个现有对象生成新的对象)√组合型适配器模式 √装饰器模式 √代理模式 √外观模式 √桥接模式组合模式享元模式行为型策

2022-03-13 22:15:52 1126

原创 treeshaking特性

treeshaking触发条件:解构的方式获取方法调用的npm包必须使用ESM(export导出)同一文件treeshaking在mode=production模式下才生效一定要注意使用解构方式来加载模块// 例:import { moudleAFun1 } from './moduleA'import moduleB from './moduleB'moudleAFun1()// moduleB没有使用,在development和production模式下都会被剔

2022-03-12 16:22:54 501

原创 CommonJs、AMD、CMD、ESModule介绍

CommonJsCommonJs规范介绍NodeJs默认模块化规范,每个文件是一个模块,有自己的作用域CommonJs规范采用同步加载方式通过require加载模块,module.exports和exports输出模块CommonJs规范特点所有代码都运行在模块作用域,不会污染全局作用域模块可以加载多次,第一次加载时会运行模块,模块输出结果会被缓存,再次加载时,会从缓存结果中直接读取模块输出结果模块按出现顺序加载browserify打包原理通过自执行函数实现模块化将每个模块编

2022-03-06 17:37:09 648

原创 脚手架工具——yargs的使用

脚手架工具yargs:const yargs = require('yargs/yargs')const { hideBin } = require('yargs/helpers')const dedent = require('dedent')const arg = hideBin(process.argv)const cli = yargs(arg)cli // 用法说明 .usage("usage:liushuran-test [command] <options>")

2022-02-27 11:50:29 907

原创 Javascript的设计模式之UML类图

一、UMLUnified Modeling Language 统一建模语言类图:UML中有很多图,只看类图即可关系:只看泛化(继承)和关联(组合)二、画图工具MS Office visioprocesson三、类图注:js中目前只有public类型四、关系泛化,表示继承关联,表示引用注:子类指向父类,引用指向被引用注:继承是虚箭头,引用时实心箭头五、总结类图,属性和方法关系,泛化和关联...

2022-02-25 14:09:47 1082

原创 Javascript的设计模式之面向对象

概念:类 + 实例三要素:继承:子类继承父类extendssuper封装:数据的权限和保密(ts 访问类型)public - 允许在类的内外使用,默认类型private - 允许在类内使用protected - 允许在类内及子类中使用减少耦合,不该外露的不外露利于数据、接口的权限管理ES6目前不支持,一般认为_开头的属性是private多态:同一接口不同实现(ts)注:ts中的class属性需要声明同一个接口,不同的表现JS应用极少需要结合java等语言的接口

2022-02-25 11:18:39 608

原创 手写Promise

/** * author:lsr * desc:手写Promise * date:20220118 */class MyPromise { state = 'pending' value = undefined reason = undefined resolveCallbacks = [] rejectCallbacks = [] constructor(fn) { const resolveHandler = (value) => { if (

2022-01-18 19:25:28 316

原创 WeakMap和WeakSet

弱引用,防止内存泄漏WeakMap只能用对象作为key,WeakSet只能用对象做value没有forEach和size// const obj = {}// function fn() {// const innerObj = { name: '张三' }// obj.innerObj = innerObj // 强引用// }// fn()// 垃圾清理机制,是一个标记清除的机制(引用计数),数据没有用时会被清除,但是当还被一些没有被清除的变量引用时,不会被清除。// 如果没有 .

2022-01-14 14:44:15 122

原创 Set和Array的区别

API不同Set元素不能重复Set是无序结构,操作很快// const arr = [10, 20, 30, 40, 50]// Set Apiconst s = new Set([10, 20, 30, 40])s.add(50)s.delete(10)s.has(20)s.sizes.forEach(val => console.log(val)) // value// Set元素不能重复// 数组去重[...new Set(array)]// 字符串去重[..

2022-01-13 20:03:57 1397

原创 Map和Object区别

区别:API不通,Map可以以任意类型为keyMap是有序结构(重要)Map操作同样很快// object// const obj = {// name: '张三',// title: 'Author'// }// 只能以字符串为key,且是无序格式// map Apiconst m = new Map([ ['name', '张三'], ['title', 'Author']])m.set('age', 30)m.delete('title')m.has('name

2022-01-13 15:47:06 403

原创 第二章 Vite概念和设计思想

2-1 Vite概念介绍

2022-01-13 14:02:04 152

空空如也

空空如也

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

TA关注的人

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