- 博客(91)
- 收藏
- 关注
原创 koa中关于session取值undefined问题
在写项目的过程中遇到一个关于koa中session取值的bugbug描述:相同的IP发出的请求,第一个接口给session赋值之后,第二个接口请求的时候从session中取值为undefined解决方案:在后端代码中设置credentials: trueapp.use(cors({ credentials: true}));在前端的axios请求中设置withCredentialsimport Axios from 'axios';Vue.prototype.$axios =
2022-03-26 19:47:15
1385
原创 leetcode-22括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]题解:使用回溯法,中间使用剪枝。当)的数量大于(的时候表面这种情况不是我们所需要的class Solution {public: vector<string> generateParenthesis(int n) { vector<
2020-11-19 11:39:55
171
原创 leetcode-17电话号码的字母组合
题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。题解:看到这种求全排列,所有情况的题目可以使用回溯法来解决代码:class Solution { private: const s
2020-11-18 17:25:45
176
原创 vue中子组件调用父组件的方法
1.子组件通过this.$parent.event来调用父组件的方法父组件<template> <div> <child></child> </div></template><script> import child from './child'; export default { components: { child }, methods: {
2020-06-08 20:45:46
515
原创 TCP协议三次握手分析
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:SYN(synchronous建立联机):建立连接ACK(acknowledgement 确认):表示响应,为1便是确认连接Sequence number(顺序号码): 发送这个包的序号另一个是确认编号(Acknowledgement Number):即接收到的上一次远端主机传来的seq然后+1,再发送给远端主机。提示远端主机已经成
2020-06-01 13:24:16
305
原创 JavaScript实现div鼠标跟随
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .top{ width: 50px; height: 50px; position: absolute; b
2020-05-31 16:55:26
177
原创 JavaScript实现div的鼠标拖拽
HTML<div class="box"></div>CSS.box{ width: 50px; height: 50px; position: absolute; background-color: red; }记得添加定位,不然移动不了分为三个事件,鼠标点击下去(onmousedown),鼠标移动时候(onmousemove),鼠标松开(mouseup事
2020-05-31 11:20:59
689
原创 修改el-table中的表格样式
项目中遇到的一个坑吧,我们在完成UI给的效果图的时候,总会需要修改el-table的样式<div class="tableDate"> <el-table :data="InvoiceFileData" style="width: 100%;"> <el-table-column label="文件名称"
2020-05-29 16:37:40
1429
原创 SSL建立的过程
客户端使用http url访问服务器,要求web服务器建立ssl链接web服务器收到客户端请求后,会将网站的证书(包含公钥)返回给客户端客户端与web服务器端协商SSL链接的安全等级,也就是加密等级客户端浏览器通过双方协商一致的安全等级,建立会话密钥,用网站证书中的公钥来加密会话密钥,并传送给服务器web服务器通过自己的私钥解密出会话密钥web服务器通过会话密钥加密与客户端之间的通信...
2020-05-26 22:01:15
664
原创 前端性能优化方法
对一个网站而言,CSS、javascript、logo、图标这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的,如果将这些文件缓存在浏览器中,可以极好的改善性能。
2020-05-26 21:20:16
165
原创 实现监听vuex的状态变化并实时更新状态
监听vuex的状态变化并实时更新状态需要使用状态的页面data () { return { remarks: '' } }, watch: { "$store.state.Remark": function () { //需要执行的代码 this.remarks = this.$store.state.Remark; } }store中的index.js文件import Vue
2020-05-26 15:14:19
1559
原创 浏览器渲染原理
浏览器从服务器那收到的HTML,CSS,JavaScript等相关资源,然后经过一系列处理后渲染出来的web页面的过程过程浏览器将获取的HTML文档解析成DOM树处理CSS标记,构成层叠样式表模型CSSOM(CSS Object Model)将DOM和CSSOM合并为渲染树(rendering tree)将会被创建,代表一系列将被渲染的对象渲染树的每个元素包含的内容都是计算过的,它被称之为布局layout。浏览器使用一种流式处理的方法,只需要一次pass绘制操作就可以布局所有的元素将渲染树的各
2020-05-25 17:16:41
171
原创 Vue中computed和watch有什么区别
computedvar var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar' }, computed: { fullName: function () { return this.firstName + ' ' + this.lastName ...
2020-05-06 17:49:33
1128
原创 CSS-flex布局
什么是flex布局Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性任何一个容器都可以指定为 Flex 布局。.box{ display: flex;}行内元素一样可以指定基本概念这里借助阮一峰老师的图采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,...
2020-05-04 21:20:34
184
原创 cookie各字段详解
name字段:名称value字段:cookie的值domain字段:为可以访问此cookie的域名,顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以...
2020-05-04 17:48:16
4865
原创 JavaScript之节流与防抖
防抖在前端开发中会遇到一些频繁的事件触发,比如:window 的 resize、scrollmousedown、mousemovekeyup、keydown……防抖的原理就是:你尽管触发事件,但是我一定在事件触发 n 秒后才执行,如果你在一个事件触发的 n 秒内又触发了这个事件,那我就以新的事件的时间为准,n 秒后才执行,总之,就是要等你触发完事件 n 秒内不再触发事件,我才执行fu...
2020-05-04 12:09:56
170
原创 leetcode 21.合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:使用递归,当l1和l2的节点比较时候,把小的结点指针重新指向/** * Definition for singly-linked list. * str...
2020-05-03 11:15:51
96
原创 leetcode 20.有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...
2020-05-03 11:08:45
116
原创 leetcode 16.最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:双指针的变形题而已,取个绝对值判断与ta...
2020-05-03 10:48:52
117
原创 JavaScript中call apply bind的区别
相同点:都可以改变this的指向例子:var zhangsan = { name: "张三", gender: "男", age: 24, say:function () { alert(this.name+","+this.gender+",今年"+this.age+"岁"); }}var lisi = { name: "李四...
2020-05-01 09:49:40
133
原创 leetcode 15.三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路:滑动窗口,先将数组排序,我们...
2020-04-28 10:59:14
164
原创 leetcode 3.无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...
2020-04-28 10:51:20
104
原创 leetcode 9.回文数题解(C++)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。思路:先判断这个...
2020-04-28 10:42:05
316
原创 手写ajax的实现过程
var xhr = new XMLHttpRequest();xhr.open("GET",url,false);xhr.onreadstatechange = function() { if (xhr.readystate === 4){ if(xhr.status === 200){ alert(xhr.responseText)...
2020-04-23 11:41:51
279
原创 JS-深浅拷贝实现
浅拷贝浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存,所以当一个对象发生变化时,另一个对象随之改变深拷贝深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象;实现深拷贝function deeolone(scoure){ if (typeof scoure !== "object") return scoure; /...
2020-04-23 11:09:46
214
原创 leetcode 43 字符串相乘题解
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0...
2020-04-22 23:48:30
242
原创 leetcode 33.搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...
2020-04-22 21:02:10
95
原创 javascript中的声明提升
变量提升先看第一个代码a = 1;var a;console.log(a);//1按照思路来说第一行代码创建了一个全局变量a并赋值1,第二行重新声明并赋值undefined。按道理来说应该打印undefined。而我们打印出来的是1是因为发生了变量提升才打印1上面的代码实际的执行顺序是下面这样的var a;a = 1;console.log(a);在来看一个例子cons...
2020-04-22 13:48:52
361
原创 ES5继承和ES6继承的区别
ES5继承这里使用的是最常用的组合继承,要了解其他的继承方式可以ES5继承方式function Person (name,gender){ this.name = name; this.gender = gender;}Person.prototype.getName = function() { console.log(this.name);}function...
2020-04-22 12:42:54
350
原创 实现JavaScript中的new
新建一个空对象,这个空对象原型指向构造函数的prototype,执行构造函数后返回这个对象function objectFactory(){ var obj = new Object(); //创建一个新对象 Constructor = [].shift.call(argument); //取出第一个参数即构造函数,shift会修改数组 obj._proto_...
2020-04-21 19:33:50
150
原创 Javascript作用域和作用域链
作用域作用域就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6 的到来,为我们提供了‘块级作用域’,可通过新增命令 let 和 const 来体现。全局作用域最外层函数 和在最外层函数外面定义的变量拥有全局作用域var outVari...
2020-04-21 18:50:40
206
原创 Set WeakSet Map WeakMap的操作方法
Set类似数组,成员值唯一,可以去重const s = new Set();[2,3,5,4,2,2,2].forEach(x=>s.add(x));for (let i of s){ console.log(i);} //2,3,5,4Set的操作方法Set.prototype.add(value):添加某个值,返回Set结构本身Set.prototype.d...
2020-04-21 12:28:21
219
原创 css实现水平/垂直居中
水平居中块级元素居中html代码:<div class="father"> <div class="children"></div></div>记得清楚浏览器样式html,body { margin: 0; padding: 0; }效果:1. 使用margin实现水平居中.fa...
2020-04-20 20:02:01
175
原创 JS-类的继承方式
当我们了解了原型和原型链后我们就可以来看JS类的继承方式原型链继承function Parent () { this.name="kevin";}Parent.prototype.getName = function () { console.log(this.name);}function Child () {}Child.prototype =...
2020-04-18 23:27:11
225
原创 原型与原型链
prototype属性JavaScript中每个函数都有prototype属性(prototype是函数才有的属性)function Person() {}Person.prototype.name = 'Kevin';var person1 = new Person();var person2 = new Person();console.log(person1.name) // ...
2020-04-18 13:51:55
144
原创 leetcode 8 字符串转换整数
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字...
2020-04-18 12:51:54
95
原创 UDP和TCP的区别
UDP发送数据前不需要建立连接,而TCP是面向连接的UDP尽努力交付,不保证可靠交付;TCP提供可靠服务UDP是面向报文的,而TCP是面向字节流UDP支持一对一,一对多;TCP支持一对一TCP首部字节为20个;UDP首部字节为8个...
2020-04-17 20:30:45
102
原创 csrf和xss的网络攻击及防范
什么是CSRF(跨站请求伪造)当用户访问A(信任网站)网站并登录成功时,在用户处产生A的Cookie。这时候用户访问了B(危险网站)网站,当B要求访问第三方站点(A)的时,浏览器会带着用户最开始登录A的时候产生的Cookie访问A,而A网站并不能分辨请求是由用户发出的还是由B发出的,这时候B网站就能模拟用户操作。例如转账等操作如何防范CSRF攻击1.使用token可以在 HTTP 请求中以...
2020-04-17 20:12:48
450
原创 JS的异步加载的三种方法
为什么要引入异步加载JS当浏览器解析器遇到<script>标签时会立即加载(加载:下载,解析和执行),浏览器对其他资源和文档的加载会停止。为了提高页面的加载速度,得让JS不阻塞其他资源的加载。提高页面加载速度的最简单快速的方法就是将脚本文件放到body底部。但这并不是提高页面加载速度最优方案的方案defer属性defer异步加载:dom文档全部被解析完才会执行JS,只有IE能用...
2020-04-17 19:35:37
405
原创 leetcode 5.最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”class Solution {public String longestPalindrome(String s) { if (s == null ||...
2020-04-16 19:55:49
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人