session身份认证机制

本博客讲述session身份认证机制,在了解session身份认证机制之前,需要先了解以下内容。前端身份认证主要分为两种,一种是Session身份认证,一种是JWT身份认证。(3)Session身份认证的工作原理(重要!(4)在Express中使用session认证。服务端渲染推荐使用session认证机制。前后端分离推荐使用JWT认证机制。Cookie在身份认证中的作用。Cookie不具有安全性。(1)HTTP无状态性。提高身份认证的安全性。
分类: 编程语言 发布时间: 05-17 10:49 阅读次数: 0

JWT身份认证机制实现

复制这个token再发起一个get请求,在header中添加authorization属性和值,值就是token,但是要注意前面必须加上Bearer。下面这个unless是用来指定哪些接口不需要访问权限,比如下面这个就是以/api开头的就不需要访问权限,可以直接进入。JWT的全称是JSON Web Token,是目前最流行的跨域认证解决方案。(3)JWT的工作原理(重要!(7)Express中JWT的使用。(5)JWT各个组成部分的含义。(4)JWT的组成部分。(6)JWT的使用方式。
分类: 编程语言 发布时间: 05-17 10:49 阅读次数: 0

Vue的计算属性与监视属性

(2)所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数、Promise的回调函数等),最好写成箭头函数,这样this的指向才是vm或者组件实例对象。这个部分就有问题,你的return返回的值是交给setTimeout的不是fullName,所以根本得不到计算属性的值就无法渲染。(1)所有被Vue管理的函数最好写成普通函数,这样this的执行才是vm或者组件实例对象。(1)Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以。(1)计算属性能完成的功能,监视属性都可以完成。
分类: 编程语言 发布时间: 05-17 10:49 阅读次数: 0

Lodash.js实现防抖与节流

首先我们从最上面快速往下滑,在鼠标移入事件里面输出一下index。产生原因:这是因为太快了,浏览器还没反应过来。简单理解:节流相当于技能cd,防抖相当于回城。,那么就来看看第二种如何做。这样就只会打印这几个。
分类: 编程语言 发布时间: 05-17 10:48 阅读次数: 0

JS实现二叉排搜索树

二叉树中的节点最多只能有两个子节点:一个是左侧子节点,另一个是右侧子节点。而二叉搜索树又可以简称BST,它是二叉树的一种,但是只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大的值。上面就可以实现二叉搜索树的初步构建了。接下来来了解一下树的遍历,直接看几个例子就可以理解了。
分类: 编程语言 发布时间: 05-17 10:48 阅读次数: 0

牛客Top101 JS实现反转链表

解释,其实p1指针的作用是用于记录原始链表,p2的作用是用来临时存储结果的, p1=pHead.next;和 pHead=p1;其实就是用来移动指针的作用,核心是pHead.next=p2;p2=pHead这两行代码。给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,
分类: 编程语言 发布时间: 05-17 10:48 阅读次数: 0

牛客Top101 JS合并两个排序的列表

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0 ≤n≤1000,-1000≤节点值≤1000要求:空间复杂度 O(1),时间复杂度 O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示: 或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2
分类: 编程语言 发布时间: 05-17 10:47 阅读次数: 0

牛客Top101 JS判断链表中是否有环

判断给定的链表中是否有环。如果有环则返回true,否则返回false。数据范围:链表长度 0≤ n ≤ ≤10000,链表中任意节点的值满足 |val|
分类: 编程语言 发布时间: 05-17 10:47 阅读次数: 0

牛客Top101 JS实现得到链表中倒数最后k个结点

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0 ≤ n ≤ 10^50≤n≤105,0 ≤ ai ≤ 10^9,0 ≤ k ≤ 10^9要求:空间复杂度 O(n),时间复杂度 O(n)进阶:空间复杂度 O(1),时间复杂度 O(n)例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示: 其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有
分类: 编程语言 发布时间: 05-17 10:47 阅读次数: 0

牛客Top101 JS实现得到两个链表的第一个公共结点

输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围:n≤1000要求:空间复杂度 O(1),时间复杂度 O(n)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示: 可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共
分类: 编程语言 发布时间: 05-17 10:47 阅读次数: 0

牛客Top101 BM21 旋转数组的最小数字--JS实现

有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1≤n≤10000,数组中任意元素的值: 0≤val≤10000要求:空间复杂度:O(1) ,时间复杂度:O(logn)输入:[3,4,5,1,2]返回值:1示例2输入:[3,100,200,3]返回值:3完整代码
分类: 编程语言 发布时间: 05-17 10:46 阅读次数: 0

牛客Top101 BM28 二叉树的最大深度-- JS实现

求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。(注:叶子节点是指没有子节点的节点。)数据范围:0≤n≤100000,树上每个节点的val满足∣val∣≤100要求: 空间复杂度 O(1),时间复杂度 O(n)输入:{1,2}返回值:2示例2输入:{1,2,3,4,#,#,5}返回值: 完整代码:
分类: 编程语言 发布时间: 05-17 10:46 阅读次数: 0

vue 子组件中直接修改父组件传递过来的值

【代码】vue 子组件中直接修改父组件传递过来的值。
分类: 编程语言 发布时间: 05-17 10:46 阅读次数: 0

Object.assign是浅拷贝还是深拷贝?

Object.assign()拷贝的是属性值,如果源对象的属性值是一个指向对象的指针,那也只拷贝那个指针。所以如果对象的属性值为基础类型,对于通过Object.assign()拷贝的那个属性而言是深拷贝;如果对象的属性值为引用,对于通过通过Object.assign()拷贝的那个属性而言其实是浅拷贝的。神奇的事情发生了,target.a.b的值随着source变化而变化,但是target.c的值并没有随着source变化。target的值并没有随着source的变化而变化,到这里有人会说,这一看就是。
分类: 编程语言 发布时间: 05-17 10:45 阅读次数: 0

vueUse插件--useDraggable的使用方法以及案例(vue3)

看到这个工具的时候,我的第一想法是让我的全局设置变成一个可自由摆放,自由拖拽的小组件。同样,你还可以去实现弹出框,对话框的自由拖拽等等。自由发挥想象,反正有了这个工具你少写很多代码,而且减少bug风险,毕竟是vue官方工具。好了,废话不多说,下面上例子。其中-40的部分是减掉元素本身的大小。这里只是一个简单的demo,没有去处理窗口大小变化的时候,所以感兴趣的小伙伴可以自行往下扩展。官方给出的demo,感兴趣的可以去VueUse官网看看。参数是一个对象,里面有初始值,拖拽方式,感兴趣的可以去看看源码。
分类: 编程语言 发布时间: 05-17 10:45 阅读次数: 0

使用scrollTo平滑滚动到顶部

behavior 类型String,表示滚动行为,支持参数 smooth(平滑滚动),instant(瞬间滚动),默认值auto(等同于instant)我一开始考虑使用动画,后来一想如果使用动画,滚动时间就固定了,就会造成滚动忽快忽慢的情况。项目有页面右下角有个返回按钮,点击则滚动到顶部。这里希望平滑滚动到顶部,故而使用smooth参数。所以有没有办法让页面平滑滚动到顶部呢?left 等同于 x-coord。top 等同于 y-coord。
分类: 编程语言 发布时间: 05-17 10:45 阅读次数: 0

vue路由切换时报错:api.now is not a function

链接:https://pan.baidu.com/s/1uTyhny7zry0ioYHaSuGmAA?vue-devtools调试工具问题,用了beta版本导致,升级安装正式版即可。
分类: 编程语言 发布时间: 05-17 10:44 阅读次数: 0

yarn link 使用方法

可以跨项目,跨文件操作自己想要调试的yarn包,不用每次发布,只要是自己的电脑就可以,因为yarn link 是存在yarn的内存中。相当于开了个通道。原理实质上就是在 在 全局yarn安装目录下设置软连接方式在开发的包里文件下(和packagejson同级) 运行 yarn link然后会出现 success link xxxx(包名) 的标志 此时你的开发包已经在内存中了。
分类: 编程语言 发布时间: 05-17 10:44 阅读次数: 0

new Set()的基础用法(ES6)

添加某个值,返回 Set 结构本身,当添加实例中已经存在的元素,set不会进行处理添加。返回键名的遍历器,相等于返回键值遍历器values()Set本身是一个构造函数,用来生成 Set 数据结构。删除某个值,返回一个布尔值,表示删除是否成功。返回一个布尔值,判断该值是否为Set的成员。,没有重复的值,我们一般称为集合。3.3 遍历 entries()3.4 遍历 forEach()3.2 遍历 values()3.1 遍历 keys()清除所有成员,没有返回值。4.2 用于字符串去重。1、什么是Set()
分类: 编程语言 发布时间: 05-17 10:43 阅读次数: 0

Vue3的自定义指令

理解这些钩子函数也很简单:我们都知道自定义指令是作用在DOM元素上,那么自定义指令从绑定到DOM元素,再到DOM元素发生变化等等一系列操作,都对应了不同的钩子函数,比如当DOM元素插入到文档中时,自定义指令的mounted等钩子函数就会执行。我们使用自定义指令的目的就是为了灵活的操作DOM以及在钩子函数中处理我们的业务逻辑,所以Vue3将一些我们可能会用到的参数传递给了钩子函数,Vue3和Vue2中的自定义指令传递的参数都很类似。自定义指令也是类似的原理,我们需要先注册自定义指令,然后才可以使用它。
分类: 编程语言 发布时间: 05-17 10:43 阅读次数: 0