自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git ssh key

ssh key

2023-02-12 13:13:19 119

原创 Mac 下的node 版本管理工具——nvm

Mac 下的node 版本管理工具——nvm官网安装nvm你可以使用如下命令:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash或使用wget:wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash成功安装完成后重启命令行工具,使用 nvm 查看是否安装成功出现下述描述

2021-04-07 13:45:05 496

原创 vue-router传递参数的几种方式

vue-router传递参数的几种方式一、编程式的导航 router.push编程式导航传递参数有两种类型:字符串、对象。字符串字符串的方式是直接将路由地址以字符串的方式来跳转,不能传递参数:this.$router.push("home");对象两种方式:命名路由、查询参数,注意:和name配对的是params,和path配对的是query// 1.查询参数 url传递 ( /home?id=123 ) 刷新页面数据不会丢失this.$router.push({path: '/ho

2021-03-22 21:03:09 652

原创 数据结构——树

树树是什么?一种分层数据的抽象模型。前端工作中常见的树包括:DOM树、级联选择、树形控件…JS 中没有树,但是可以用 Object 和 Array 构建树。树的常用操作:深度/广度优先遍历、先中后序遍历。什么是深度/广度优先遍历?深度优先遍历:尽可能深的搜索树的分支。广度优先遍历:先访问离根节点最近的节点。(左:深度优先遍历,右:广度优先遍历)JS 模拟树const tree = { val: 'a', children: [ {

2021-03-02 21:44:41 119

原创 LeetCode——76. 最小覆盖子串

76. 最小覆盖子串给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。**注意:**如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例 2:输入:s = "a", t = "a"输出:"a"提示:1 <= s.length, t.length <= 105s 和 t 由英

2021-03-02 17:18:24 92

原创 控制显示与隐藏元素

控制显示与隐藏元素css: 设置opacity:0;隐藏,为1 完全显示html:显示与隐藏的几种方式display none : 无 隐藏元素 block : 显示 转换为块级元素visibility visible :显示 hidden :隐藏三者共同点都是隐藏。不同点:一、是否占据空间- display: none; 是彻底消失,不在文档流中占位,浏览器也不会解析该元素- visibility:hidden; 是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解

2021-02-24 21:49:33 363

原创 LeetCode——349. 两个数组的交集

349. 两个数组的交集349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/inters

2021-02-20 00:09:07 87

原创 数据结构——集合

集合是什么?一种无序且唯一的数据结构ES6 中有集合,名为 Set集合的常用操作:去重、判断某元素是否在集合中、求交集// 去重 const arr = [1, 1, 2, 2]; const arr2 = [...new Set(arr)]; // 判断元素是否在集合中 const set = new Set(arr); const has = set.has(2);// 求交集const set2 = new Set([2, 3]);const set3 = new Se

2021-02-20 00:07:20 120

原创 数组的API, 有哪些是纯函数?

数组的API, 有哪些是纯函数?纯函数:不改变源数组(没有副作用);返回一个数组// 纯函数:1. 不改变源数组(没有副作用);2. 返回一个数组const arr = [10, 20, 30, 40]// concat 连接两个或更多的数组,并返回结果(新数组)。const arr1 = arr.concat([50, 60, 70])// map 通过指定函数处理数组的每个元素,并返回处理后的数组。const arr2 = arr.map(num => num * 1

2021-02-16 22:54:06 445

原创 手写深度比较

手写深度比较,模拟 lodash.isEqual// 判断是不是对象或者数组function isObject (obj) { return typeof obj === 'object' && obj !== null}// 全相等 function isEqual(obj1, obj2) { // 如果 obj1 obj2 有一个不是对象 if (!isObject(obj1) || !isObject(obj2)) { // 值类型

2021-02-16 20:18:51 84

原创 LeetCode——83.删除排序链表中的重复元素

删除排序链表中的重复元素83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路:因为链表是有序的,所以重复元素一定相邻遍历链表,如果发现当前元素和下个元素相同,就删除下个元素值步骤:遍历链表,如果发现当前元素和下个元素相同,就删除下个元素值遍历结束后,返回..

2021-02-12 00:05:07 64

原创 LeetCode——206.反转链表

反转链表206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解题思路反转两个节点: 将 n + 1 的next指向 n反转多个节点: 双指针遍历链表,重复上述操作。解题步骤双指针一前一后遍历链表反转双指针var reverseList = function(head)..

2021-02-11 21:59:36 737

原创 LeetCode——141. 环形链表

141. 环形链表141. 环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:

2021-02-11 00:25:04 71

原创 LeetCode—— 61. 旋转链表

61. 旋转链表61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入:

2021-02-10 00:11:39 131

原创 LeetCode——两数相加

两数相加2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [

2021-02-09 01:55:20 147

原创 Leetcode——237. 删除链表中的节点

237. 删除链表中的节点237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 -- head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], no

2021-02-09 01:43:51 102

原创 LeetCode——返回倒数第 k 个节点

题目:返回倒数第 k 个节点面试题 02.02. 返回倒数第 k 个节点实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明: 给定的 k 保证是有效的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci著作权归领扣网络所有。商业

2021-02-08 00:19:10 112

原创 数据结构——链表

链表链表:多个元素组成的列表元素存储不连续,用next指针连载一起JavaScript 中没有链表,但可以用Object模拟链表链表常用操作:修改next、 遍历链表。const a = { val: 'a'};const b = { val: 'b'};const c = { val: 'c'};const d = { val: 'd'};a.next = b;b.next = c;c.next = d;// 遍历链表let p = a;while (p) {

2021-02-08 00:16:11 128

原创 LeetCode刷题—— 933. 最近的请求次数

题目:最近的请求次数933. 最近的请求次数写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前更大的 t 值。

2021-02-07 00:38:58 134

原创 数据结构——队列及队列实现

队列队列: 先进先出(FIFO)JavaScript中没有队列,但可以用Array实现队列的所有功能。入列 enqueue 出列 dequeue 查看列头 front对应操作:push shift queue[0]队列的实现var Queue = function() { var items = [] // 入队 this.enqueue = function(element) { items.push(element)

2021-02-07 00:35:38 157

原创 LeetCode 刷题——20.有效的括号

题目标题题有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: tr

2021-02-06 00:17:47 153

原创 数据结构——栈及栈的实现

数据结构の栈栈栈作用:栈的实现:应用十进制转二进制栈后进先出(LIFO)栈作用:在编程语言的编译器和内存中保存变量、方法调用栈的实现://es5// 函数: 函数 , 构造器// this 指向要创建的对象var Stack = function() { var items = []; //私有 // this.items = [] //共有 // push 栈顶添加元素 this.push = function(element) {

2021-02-05 23:58:17 53

原创 Vue 数据响应式理解

什么是数据响应? 数据响应式是 vue 实现 UI的核心原理,当用户改变数据 data ,UI 自动更新。怎么做?数据代理 数据劫持Vue 2 的数据响应式,通过设置 options.data 。首先,会被 Vue 监听原有数据对象。第二,通过 Vue 实例代理。使用 Object.defineProperty 将所有的 property 全部转为 getter/setter 。每次对 data 的读写操作,都会被 Vue 监听,Vue 在 data 改变时更新 UI 。Vue 2 则是

2021-02-02 19:33:14 150

原创 git 基本操作

git 基本操作git1.简介2.基本流程3. 提交步骤4.分支命令5. 暂时保存更改6.克隆 拉取 推送git1.简介最常用的代码版本管理工具(分布式版本控制系统)大型项目需要多人协作开发,必须熟用 gitMac OS 自带 git 命令 , windows 可去官网下载安装 https://git-scm.com/Ggit 服务端常见的有 GitHub Gitee coding.net等大公司会搭建自己的内网 git 服务2.基本流程git仓库暂存区工作目录

2021-01-28 16:24:43 47

原创 面试题之运行环境(页面加载、性能优化、安全)

运行环境一、页面加载1、从输入 url 到渲染出页面的整个过程2、window.onload 和 DOMContentLoaded 的区别知识点加载资源的形式加载资源的过程渲染页面的过程二、性能优化1. 性能优化原则2. 方法 ( 两个方面)a.让加载更快缓存CDNSSRb.让渲染更快懒加载:缓存 DOM 查询多个 DOM 操作一起插入到DOM 结构3. 节流 throttle 防抖 debounce (用户体验)防抖 debounce节流 throttle三、安全问题:常见的 web 前端攻击方式有哪些

2021-01-28 12:42:27 258

原创 JS-Web-API

JS基础知识,规定语法(ECMA 262 标准)JS Web API ,网页操作的API (W3C标准)前者是后者的基础,两者结合才能真正实际应用一、DOM前言vue 和 React 框架应用广泛, 封装了 DOM 操作但 DOM 操作一直都会是前端工程师的基础,必备知识只会 vue 而不懂 DOM 操作的亲段程序员,不会长久DOM 操作 (Document Object Model) 文档对象模型1、DOM 是哪种数据结构​ 树2、DOM 操作的常用API获取 DOM 节点

2021-01-26 11:31:51 132

原创 js基础

一、变量类型和计算1、typeof 能判断那些类型​ 识别所有值类型​ 识别函数​ 判断是否是引用类型(不可再细分)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxMYlKs7-1611478357317)(js%E5%9F%BA%E7%A1%80.assets/image-20210118174220226.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EEPhyAB9-1611478357320)(js%E5%9F%B

2021-01-24 17:39:20 313 4

空空如也

空空如也

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

TA关注的人

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