自定义博客皮肤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)
  • 收藏
  • 关注

原创 el-table行列合并原理

el-table和并相同数据的行单元格rowspan为当前单元格所需要的合并的行数(包括本行),若当前行的rowspan为n(n不为0),后面的n-1行的rowspan则需要为0。如当前行的rowspan为3,则后面2行的rowspan需要为0colspan同理methods:{ filterData(arr, key) { let result = []; let concatOne = 0; arr.forEach((item, index) =&g

2020-12-14 17:51:12 933

原创 数组扁平化和对象深拷贝

数组扁平化function flatten(arr) { if (Array.isArray(arr)) { let result = [] // join split方法 // result = arr.join(',').split(',').map(item => { // return parseInt(item); // }); // toString方法 /

2020-11-30 17:00:36 121

原创 TCP连接中seq和ack是什么东西呢

seq是序dao列号,这是为了连接以后传bai送数据用的,ack是对收到du的数据包的确zhi认,值是等待接dao收的数据包的序列号。在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接

2020-11-16 11:15:34 7622

原创 less初遇

less中的注释以//开头的注释,不会被编译到css文件中以/**/包裹的注释,会被编译到css文件中less中的变量使用@来声明一个变量:@pink: pink;作为普通属性值来使用:直接使用@pink作为选择器和属性名,#@{selector的值}的形式@m:margin;@selector: #wrap;@{selector} { @{m}: 0;}作为URL:@{url}@url: './assets/logo.png';#wrap { b

2020-10-06 19:18:24 107 1

原创 6中方法实现三栏布局(两侧定宽,中间自适应)

6种方法实现三栏布局(两侧定宽,中间自适应)1. 利用浮动* { margin: 0; padding: 0;}.left { background-color: yellow; float: left; width: 300px; height: 400px;}.right { background-color: skyblue; float: right; width: 300px; height: 400

2020-09-20 11:53:54 288

原创 用递归实现斐波那契数列及优化

斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……前两项为1,从第三项起,每一项等于前两项的和,即F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)普通的递归写法function fibonacci(n){  if(n <= 2){    return 1  }else{    return fibonacci(n - 1) + fibonacci(n - 2)  }}问题:代码优美逻辑清晰。但是有重复计

2020-09-04 10:00:33 686 1

原创 js中 [] + {} 和 {} + [] 分别输出什么

[] + {} == 0和{} + [] == 0的区别[] + {} :一个数组加一个对象。加法会进行隐式类型转换,规则是调用其 valueOf() 或 toString() 以取得一个非对象的值(primitive value)。如果两个值中的任何一个是字符串,则进行字符串串接,否则进行数字加法。[] 和 {} 的 valueOf() 都返回对象自身,所以都会调用 toString(),最后的结果是字符串串接。[].toString() 返回空字符串,({}).toString() 返回“[objec

2020-09-03 20:28:27 1113

原创 ES9新特性之正则表达式扩展

正则表达式命名捕获组ES9以前,获取字符串中的某些值,需要这样做let str = '<a href="http://www.baidu.com">百度</a>'const reg = /<a href="(.*)">(.*)<\/a>/let result = reg.exec(str)console.log(result)ES9允许命名捕获组使用符号?<name>,这样获取捕获结果可读性更强let str = '<a h

2020-08-06 15:00:56 351 2

转载 彻底弄懂 this 指向

彻底理解js中this的指向,不必硬背。

2020-08-05 11:13:03 99

原创 ES6新特性之Promise

Promise介绍与基本使用Promise 是 ES6 引入的异步变成的新解决方案,语法上 Promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。Promise 构造函数:Promise(excutor) {}Promise.prototype.then 方法Promise.prototype.catch方法// 实例化 Promise 对象const p = new Promise(function(resolce, reject) { setTimeout

2020-08-04 15:38:00 223

原创 ES6新特性之生成器及其应用

生成器生成器函数时ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同function *gen() { yield '一只没有眼睛' yield '一只没有嘴巴' yield '真奇怪'}let iterator = gen()console.log(iterator.next()) // {value: "一只没有眼睛", done: false}console.log(iterator.next()) // {value: "一只没有嘴巴", done:

2020-08-03 16:33:22 127

原创 ES6新特性之迭代器及其应用

迭代器介绍迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署Iterator接口,就可以完成遍历操作。ES6创造了一种新的遍历命令for..of循环,Iterator接口主要供for...of消费// 声明一个数组const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']// 使用for...of遍历数组for(let v of xiyou) { console.log(v)}原生具备Iterato

2020-08-03 15:52:40 336 2

原创 ES6新特性之Symbol类型

Symbol类型ES6引入了一种新的原始数据类型Symbol,表示独一无二的值,它是JavaScript语言的第7种数据类型,是一种类似于字符串的数据类型。let s = Symbol()console.log(s, typeof s) // Symbol() "symbol"Symbol特点Symbol的值是唯一的,用来解决命名冲突的问题let s2 = Symbol('test')let s3 = Symbol('test')console.log(s2 === s3) // fa

2020-07-31 22:05:07 173

原创 ES6新特性之箭头函数

箭头函数以及声明特点ES6允许使用箭头(=>)定义函数声明一个函数// let fn = function() {// // }// ES6let fn = (a, b) => { return a + b}this是静态的,this始终指向函数声明时所在作用域下的this值(继承上一层自定义函数的this,若无上层自定义函数,则为window)window.name = "小猪"let fn = function() { console.

2020-07-29 16:00:31 188

原创 ES6新特性之对象的简化写法

ES6中对象的简化写法ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法let name = '罗志祥'let famous = function() { console.log('时间管理大师')}const star = { name, famous}// 相当于// const star = {// name: name,// famous: famous// }ES6还允许在对象中写函数时,去掉:和functionc

2020-07-29 15:17:03 349

原创 ES6新特性之let和const

let变量声明以及新特性变量不能重复声明let star = "罗志祥"let star = "时间管理大师"// 重复声明,会报错块级作用域{ let girl = '周扬青'}console.log(girl) // 报错// if else while for等均存在块级作用域不存在变量提升console.log(song) // 报错let song = "恋爱达人"不影响作用域链let name = "小猪"function fn()

2020-07-29 15:02:18 88

转载 HTTP中URI和URL的区别

作者:daixinye链接:https://www.zhihu.com/question/21950864/answer/154309494来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们能且仅能确定一个人.

2020-07-28 15:57:00 127

原创 闭包

如何产生闭包?当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时,就产生了闭包闭包到底是什么?使用chrome调试查看理解一:闭包是嵌套的内部函数(绝大部分人)理解而:包含被引用变量(函数)的对象(极少数人)注意:闭包存在于嵌套的内部函数中产生闭包的条件?函数嵌套内部函数引用了外部函数的数据(变量/函数)function fn1() { var a = 2 var b = 'abc' function fun2() {

2020-07-27 15:02:25 156

原创 对象继承

原型链继承定义父类型构造函数给父类型的原型添加方法定义子类型的构造函数创建父类型的对象赋值给子类型的原型将子类型原型的构造属性设置为子类型给子类原型添加方法创建子类型的对象:可以调用父类型的方法关键:子类型的原型为父类型的一个实例对象// 父类型function Sup() { this.supProp = "Sup property"}Sup.prototype.showSupProp = function() { console.log(this.supPro

2020-07-27 15:01:41 92

原创 执行上下文、执行上下文栈、作用域

执行上下文代码分类(位置)全局代码函数(局部)代码全局执行上下文在执行全局代码前将window确定为全局执行上下文对全局数据进行预处理var定义的全局变量 ==> undefined,添加为window的属性function声明的全局函数 ==> 赋值(fun),添加为window的方法this ==> 赋值(window)开始执行全局代码函数执行上下文在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象对局部数据进行预处理形参变量 &

2020-07-25 11:55:44 91

原创 数据类型及判断类型的几种方法

undefined与null的区别undefined代表定义未赋值null代表定义并且赋值了,值为null什么时候给变量赋值为null呢初始赋值,表明将要赋值为对象结束前,让对象成为垃圾对象(被垃圾回收器回收)严格区分变量类型与数据类型数据的类型基本类型String:任意字符串Number:任意数字Boolean:true/falseUndefined:undefinedNull:null对象类型Object:任意对象Function:一种特别的对象(可以

2020-07-23 16:05:10 489

原创 用JavaScript实现轮播图

用到的图片代码<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * {

2020-07-23 10:21:57 202

原创 常用BOM对象

文章目录BOMNavigator对象History对象length属性back()方法forward()方法go()方法Location对象Location对象属性Location对象方法BOM什么是BOM?浏览器对象模型BOM可以使我们通过js来操作浏览器在BOM中为我们提供了一组对象,用来完成对浏览器的操作BOM对象Window:代表的是整个浏览器的窗口,同时window也是网页中的全局对象Navigator:代表当前浏览器的信息,通过该对象可以来识别不同的浏览器Location:

2020-07-21 17:07:33 236

原创 mouseenter/mouseleave和mouseover/mouseout的区别

共同点:都是鼠标进入进出时会触发的回调函数。不同点:进入子元素是否会触发:demo<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content

2020-07-20 16:17:07 257

原创 JavaScript中数组的基本方法与操作

数组添加和删除元素的四个方法基本方法let arr = [1, 2, 3];push():向数组末尾添加元素arr.push(4);console.log(arr); // [1, 2, 3, 4];pop():弹出数组的最后一个元素let temp = arr.pop();console.log(arr); // [1, 2];console.log(temp); // 3;shift():移除数组第一个元素,返回被移除的元素let temp = arr.shift(

2020-07-19 10:25:52 87

原创 JavaScript中的Date和Math对象

Date对象创建一个Date对象如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间let d = new Date;创建一个指定的时间对象需要在构造函数中传递一个表示时间的字符串作为参数日期的格式为:月份/日/年 时:分:秒let d = new Date("7/18/2020 10:34:30");Date的方法let d = new Date();getDate():获取当前Date对象是几日let date = d.getDate();get

2020-07-19 10:24:57 129

原创 JavaScript中的正则表达式

正则表达式正则表达式用于定义一些字符的规则计算机可以根据正则表达式,来检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来创建正则表达式的对象语法:let 变量 = new RegExp(“正则表达式”, “匹配模式”)正则表达式严格区分大小写在构造函数中可以传递一个匹配模式作为第二个参数,i:忽略大小写,g:全局匹配模式// 检查字符串中是否含有“a”let re = new RegExp("a");使用字面量来创建正则表达式语法:let 变量 = /正则表达式

2020-07-19 10:24:08 63

转载 axios常见请求传参方式

get请求一般发送get请求传参是这么写axios.get('/user?id=12345&name=user') .then(res => res) .catch(err => err)为了方便全局统一调用封装的axios,一般这么写// params参数必写 , 如果没有参数传{}也可以axios.get('/user', { params: { id: 12345, name: user }}) .

2020-06-21 13:35:12 1215

原创 javascript中原型链的理解

原型链图1. 所有的函数对象都有一个显式原型(prototype)属性function Foo() { }console.log(Foo.prototype.constructor === Foo) // true所有函数对象都有一个显示原型属性,指向原型对象,原型对象是一个Object实例对象,其中的constructor属性(构造函数)又指向原函数对象。2. 所有的函数对象都有一个隐式原型(__proto__)属性var Foo = function () { }; // var Foo

2020-06-17 15:56:20 133

原创 JavaScript数组操作四个常用方法

JavaScript中数组操作常见函数var a = [1, 22, 333, 4444, 55555]function Counter() { this.sum = 0;}forEach返回值undefined。语法array.forEach(function(currentValue, index, arr), thisValue)参数示例// 遍历数组元素,常用语求数组的和Counter.prototype.add = function(arr) { a

2020-06-08 22:07:31 159

原创 Vue自定义事件的写法

Vue自定义事件事件名不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。举个例子,如果触发一个 camelCase 名字(驼峰命名)的事件:this.$emit('myEvent')则监听这个名字的 kebab-case 版本是不会有任何效果的:<!-- 没有效果 --><my-component @my-event="doSomething"></my-component>不同于组件和 pr

2020-06-03 16:10:08 418

原创 Vue的计算属性及监视

文章目录Vue的计算属性计算属性计算属性的监视Vue的计算属性计算属性在computed属性对象中定义计算属性的方法,在页面中使用{{方法名}}来显示计算的结果。<body> <div id="app"> 姓:<input type="text" placeholder="First Name" v-model="firstName"> <br> 名:<input type="text"

2020-06-02 16:10:02 170

原创 HTML5 Input 日期选择器

HTML5 Input DatePicker 对象Input Date 对象表示 HTML <input type="datetime"> 元素。是 HTML5 中的新对象。访问 Input Date 对象var x = document.getElementById("myDate");日期(<input type="date" />)最基本的日期选择器...

2020-04-26 12:01:47 36696 3

原创 前端flex布局属性及使用

flex布局容器的6个属性属性名说明flex-direction: row || row-reverse || column || column-reverse主轴上元素的排列方向justify-content: flex-start || flex-end || center || space-around || space-between内容在主轴上的对齐方式...

2020-04-26 11:22:50 294

原创 Spring Boot配置与配置文件属性值注入

文章目录Spring Boot核心配置与配置文件属性值注入目标全局文件配置application.properties与application.yml文件配置使用@ConfigurationProperties注入属性使用@PropertySource加载自定义配置文件使用@ImportResource加载XML配置文件使用@Configuration编写自定义配置类Spring Boot核心配...

2020-04-25 11:54:23 522

空空如也

空空如也

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

TA关注的人

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