自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue使用第三方组件库使用 .use()挂载 ,.use的原理是什么

.use的原理是什么

2023-06-20 16:34:33 698

原创 vue生命周期符合什么模式

今天分享一下面试中遇到的一个问题----vue生命周期符合什么模式???

2023-06-20 16:19:49 206

原创 数组中 forEach 和 Map 的区别

MDN上对Map和ForEach的定义forEach(): 对数组的每个元素执行一次给定的函数。map(): 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

2022-08-25 22:20:46 1919 2

原创 MVC、MVP、MVVM的区别

MVC、MVP和MWVM是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗长、混乱,这样对项目开发和后期的项目维护是非常不利的。......

2022-08-16 15:58:31 1465

原创 CSS选择器与优先级

CSS选择器有: 类别选择器(.xxx{}) 标签选择器(p) id选择器(#xxx{}) 通用(全局)选择器(*{}) 属性选择器(.b[src]) 后代选择器(#xxx .xx{}) 子选择器(div>p) 伪类选择器(:hover) 群组选择器(div,span{}) 相邻同胞选择器(h1+p{}) 继承选择器(div p{}) CSS优先级:是由四个级别和个级别出现的次数决定四个级

2022-04-21 11:16:43 593

原创 浅拷贝与深拷贝

一、对浅拷贝与深拷贝的理解浅拷贝和深拷贝是针对引用数据类型而言的,对于基本数据类型是没有深浅拷贝的概念。二、从存储的角度理解js的基本数据类型(String,Number,Boolean,null,Undefined)是存在栈内存的,当发生赋值b=a时会直接在栈内存中开辟一个新空间。a和b是两块独立的空间。修改b不会影响a的值。而js对于引用数据类型object。存储时会在栈内存存储引用(堆内存中存值的地址),堆内存存储真正的值,栈内存中的引用指向堆内存的值。当发生 = 的赋值操作 b

2022-04-21 11:08:47 1214 3

原创 JS for in 与 for of 的区别

for in 是ES5标准,遍历的是key(可遍历对象,数组和字符串的key)for of 是ES6标准,遍历的是value(可遍历对象,数组和字符串的value)一、for infor in 用来循环数组不是一个合适的选择 ,使用for...in可以遍历数组,但会存在以下问题:index索引为字符串型数字(数字,非数字),不能进行集合运算 遍历顺序有可能不是按照实际数组的内部顺序(可能按照随机顺序) 使用for-in会遍历数组所有的可枚举属性,包括原型。原型方法method和name属

2022-04-21 10:49:46 3700

原创 async和await

async和await 是es6新增的关键字,用于把异步变同步;async在函数定义时使用,用async定义的函数默认返回一个Promise实例,可以直接.then(async还可以定义对象的方法),如果async定义的函数执行返回的不是一个promise对象,那么就会给返回值包装成一个promise对象(将返回值放进promise实例的resolve方法中当做参数)await (要和async一起使用,一般是在async声明的函数中使用)await 会等待,等它右侧的代码执行完;用法1

2022-04-03 21:53:31 785

原创 JS自执行函数

自执行函数是什么?自执行函数就是当它被定义出来,就会自动执行的函数。不需要调用,传参也很方便。(function aaa(a,b){ return sum = a + b;})(1,2) 通过控制台可以发现sum实现了两个数的相加。  自执行函数有三种写法: ( function ( “ 参数 ” ) { " 函数方法 " ; } ) ( “ 给参数传的值 ” ) ( function ( " 参数 " ) { “ 函数方法 ” ; } ( " 给参数传的值 " )

2022-04-03 21:48:39 6047 1

原创 JS原型与原型链

一、什么是原型原型:每个js对象(除null)创建的时候,都会与之关联另一个对象,这个对象就是我们说的原型,每一个对象都会从原型中“继承”属性。例如:var obj = new Object();创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型二、prototype在js中,每个函数都有一个prototype属性,这个属性指向函数的原型对象,(函数也是个对象)var obj = new Object();所谓的prototype其

2022-04-03 21:46:56 6138 3

原创 JS中的同步与异步、宏任务与微任务

同步与异步javascript语言是一门“*单线程*”的语言同步和异步的差别就在于这条流水线上各个流程的执行顺序不同。最基础的异步是setTimeout和setInterval函数 console.log( "1" ); setTimeout(function() { console.log( "2" ) }, 0 ); setTimeout(function() { conso

2022-04-03 21:34:27 470

原创 JS数组打平方法

ECMAScript 2019 在 Array.prototype 上增加了两个方法:flat()和 flatMap()。这两个方法为打平数组提供了便利。如果没有这两个方法,则打平数组就要使用迭代或递归。数组打平也称数组扁平化,就是将数组里面的数组打开,最后合并为一个数组注意 flat()和 flatMap()只能用于打平嵌套数组。嵌套的可迭代对象如 Map 和 Set不能打平。在没有这两个方法之前,打平数组就要用迭代或者递归的方法function flatten(sourceArray,

2022-04-03 21:26:10 2807

原创 JS中的Storage

介绍Web Storage 的目的是解决通过客户端存储不需要频繁发送回服务器的数据时使用 cookie 的问题。Web Storage 规范最新的版本是第 2 版,这一版规范主要有两个目标:提供在 cookie 之外的存储会话数据的途径; 提供跨会话持久化存储大量数据的机制。localStorage 是永久存储机制,sessionStorage 是跨会话的存储机制。Storage 类型Storage 类型用于保存名/值对数据,直至存储空间上限(由浏览器决定)。Storage 的实例与

2022-04-03 21:20:59 4268

原创 客户端存储cookie

cookie 只是在客户端存储数据的一个选项Cookie 的作用就是用于解决 "如何记录客户端的用户信息": 当用户访问 web 页面时,他的名字可以记录在 cookie 中。 在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。 定义cookie是由服务器发送给客户端(浏览器)的最小量信息。作用cookie是键值对形式存储的少量信息,那它有什么作用呢?我们知道,平时上网时都是使用无状态的HTTP协议传输出数据,这意味着客户端与服务端在数据传送完成后就

2022-04-03 21:16:12 1331

原创 JS中的trimStart() 、trimEnd()、padStart()和padEnd()方法

trimStart() 和 trimEnd()分别用于删除字符串开头和末尾的空格let s = ' foo ';console.log(s.trimStart());//foo //console.log(s.trimEnd()); // foopadStart()和padEnd()padStart()和padEnd()用于补全字符串padStart()padStart()可以在字符串的开头进行字符补全。语法:string.padStart(<maxL.

2022-04-03 21:02:47 2231

原创 蓝桥杯真题--天干地支(Java实现)

现在我们知道了 2020 年是庚子年,我们这里既可以是除留余数来判断 N 年是什么天干和什么地支,我们也可以直接暴力使用循环做,这样的话 9999 的复杂度也跑不了多久。实现起来很简单,我们讲这个比较难的。我们先判断 0000 年的天干 和地支 。根据题意 0000 年 距 2020 年 早了 2020 年 。 已知天干 有 10 个, 那么 2020%10=0 剩下的都是整个轮回,即到了 0000 年 是庚 X 年,即天干是 庚 。再按照这个方法算地支 是 2020%12=4 及还要...

2022-03-19 22:09:58 1335

原创 蓝桥杯真题--求值(java实现)

代码package easy;public class 求值 { public static void main(String[] args) { //从1开始枚举 for (int i = 1;true ; i++) { //当num等于100时 输出 if (f(i) == 100 ) { System.out.println(i); break; } } } //求约数 static in..

2022-03-19 22:03:34 662

原创 蓝桥杯真题--算式问题(java实现)

思路这里有三个数字 我们称 a+ c = c 且各个位上的数字不同。 我们这里借助桶排序的思想来判断 1-9 这些数字有没有占用。所以我们定义一个判断函数,用于判断 a b c三个数字是否符合要求。然后暴力枚举:a 从 123 到 987 开始枚举有很多同学开始抬杠 111-999 岂不是更简单,因为 123 是最小的符合要求的数字,可以减少枚举的次数,987 是最大的符合要求的数字。b 从 123 到 987-A 枚举这时候又会有很多同学来问,为什么不直接枚举与 A 不一样的...

2022-03-19 21:49:14 625

原创 贪心算法(java实现)

贪心算法(Greedy algorithm),又称贪婪算法。是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而使得问题得到全局最优解。贪心的算法的设计就是要遵循某种规则,不断地选取当前最优解的算法设计方法。这节实验将会通过多个问题的来讲解贪心算法。贪心算法基本概念贪心算法与枚举法的不同之处在于每个子问题都选择最优的情况,然后向下继续进行,且不能回溯,枚举法是将所有情况都考虑然后选出最优的情况。贪心算法,在对问题求解时,不从整体考虑,而是采用一叶障目的选择方式,只选择某种

2022-03-18 21:58:15 6335

原创 蓝桥杯算法题--跑步锻炼(java实现)

题意小蓝每天都锻炼身体。正常情况下,小蓝每天跑11千米。如果某天是周一或者月初(11日),为了激励自己,小蓝要跑22千米。如果同时是周一或月初,小蓝也是跑22千米。小蓝跑步已经坚持了很长时间,从20002000年11月11日周六(含)到20202020年1010月11日周四(含)。请问这段时间小蓝总共跑步多少千米?package easy;public class 跑步锻炼 { public static void main(String[] a...

2022-03-16 21:12:29 1236

原创 计数排序算法(JAVA实现)

算法思想适用范围:量大但是范围小时间复杂度计数排序平均时间复杂度:o(n+k)(平方)、空间复杂度:o(k)、稳定排序、外部排序算法描述计数排序,不是基于元素比较,而是利用数组下标确定元素的正确位置。排序演示待排序列:9 3 5 4 9 1 2 7 8 1 3 6 5 3 4 0 10 9 7 9先遍历这个无序的数列,让每一个整数按照值对号入座,对应数组下标的元素加1。统计结果如下:数组值:|1 2 1 3 2 2 1 2 1 4 1|下表值:|0 1 2 3 4

2022-03-15 21:56:15 884

原创 快速排序算法(java实现)

基本思想 快速排序是一种采用分治法解决问题的一个典型应用,也是冒泡排序的一种改进。它的基本思想是,通过一轮排序将待排记录分割成独立的两部分,其中一部分均比另一部分小,则可分别对这两部分继续进行排序,已达到整个序列有序。排序的时间复杂度为 O(nlogn),相比于简单排序算法,运算效率大大提高。 算法步骤 从序列中取出一个数作为中轴数; 将比这个数大的数放到它的右边,小于或等于他的数放到它的左边; 再对左右区间重复第二步,直到各区间只有一个数。 例如,对以下 10..

2022-03-11 21:47:53 10226

原创 从键盘获得指定长度的数组(java实现)

package Sort;import java.util.Scanner;// 从键盘获得指定长度的数组public class 从键盘输入数组 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入数组的长度:"); int n = in.nextInt(); int[] arr = new int[n]; for .

2022-03-11 21:41:54 1653 1

原创 归并排序算法(java实现)

基本思想归并排序是由递归实现的,主要是分而治之的思想,也就是通过将问题分解成多个容易求解的局部性小问题来解开原本的问题的技巧。归并排序在合并两个已排序数组时,如果遇到了相同的元素,只要保证前半部分数组优先于后半部分数组, 相同元素的顺序就不会颠倒。所以归并排序属于稳定的排序算法。每次分别排左半边和右半边,不断递归调用自己,直到只有一个元素递归结束,开始回溯,调用 merge 函数,合并两个有序序列,再合并的时候每次给末尾追上一个最大 int 这样就不怕最后一位的数字不会被排序。归并排序的效率

2022-03-10 21:51:40 10724

原创 希尔排序算法--java

基本思想 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法,同时也突破了之前内排序算法复杂度为 O(n2)的限制。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率. 插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入..

2022-03-09 21:22:19 227

原创 插入排序算法--java

基本思想插入排序是一种简单的排序方法,时间复杂度为 O(n*n),空间复杂度为O(1),适用于数据已经排好序,插入一个新数据的情况。其算法的基本思想是,假设待排序的数据存放在数组 a[1...n] 中,增加一个节点 x 用于保存当前数据,进行比较,a[1]即作为有序区,a[2...n] 作为无序区。 从 i=2 起直至 i=n 为止,通过循环遍历,将 a[i] 放在恰当的位置,使 a[1...i] 数据序列有序 例如,我们现在有一个数组 a=[3 2 4 1 6 5 2 7],需要使用..

2022-03-09 20:51:07 131

原创 算法--冒泡排序--java

基本思想 所谓冒泡排序就是依次将两个相邻的数进行比较,大的在前面,小的在后面。 即先比较第一个数和第二个数,大数在前,小数在后,然后比较第 2 个数和第 3 个数,直到比较最后两个数 第一趟排序结束后,最小数的数一定在最后 第二趟排序在第一趟的基础上重复上述操作 由于排序过程中总是大数在前,小数在后,相当于气泡上升,所以叫冒泡排序。 大数在前,小数在后排序后得到的是降序 小数在前,大数在后排序后得到的是升序结果 排序过程(降序) ..

2022-03-09 20:22:08 335

原创 算法--选择排序--java

一、时间复杂度排序算法记忆口诀:选泡插,快归堆希统计基,恩方恩老恩一三,对恩加K恩乘K,不稳稳稳不稳稳,不稳不稳稳稳稳二、简单排序算法简单排序算法包括选择排序、冒泡排序、桶排序和插入排序,本节选择排序选择排序最简单但是最没用的排序算法,也有优化空间 基本思想 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,按照顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。 排序过程 初始:[5 4 6 8 7 1 2 3]第一趟排序后 1 [4 6

2022-03-09 11:02:43 318

原创 Vue--表单输入绑定

一、基础用法你可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。1.注意v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。v-model 在内部为不同的输入元素使用不同

2022-03-08 08:05:05 1767

原创 Vue中的过滤器

定义:对要现实的数据进行特定格式化后再显示(适用于一些简单逻辑处理)语法:1.注册过滤器:Vue.filte(name,callback) 或 new Vue{filters:{}}2.使用过滤器:{{ xxx | 过滤器名}} 或 v-bind:属性 = "xxx | 过滤器名"备注:1.过滤器也可以接收额外参数,多个过滤器也可以串联2.并没有改变原本的数据,是产生新的对应的数据<div id="root"> <h2>显示格式化后的时间

2022-03-08 08:04:53 141

原创 Vue中的内置指令

一、回顾指令v-bind 单向绑定解析表达式,可简写为 :xxxv-model 双向数据绑定v-for 遍历数组、对象、字符串v-on 绑定事件监听,可简写为 @v-if 条件渲染(动态控制节点是否存在)v-else 条件渲染(动态控制节点是否存在)v-show 条件渲染(动态控制节点是否展示)二、内置指令v-text指令1.作用:向其所在的节点中渲染文本内容2.与插值语法的区别:v-text会替换节点中的内容 {{xx}}则不会 <div id="r

2022-03-08 08:04:43 259

原创 Vue中的生命周期

一、生命周期1.又名:生命周期回调函数、生命周期函数、生命周期钩子2.是什么:vue在关键时刻帮我们调用的一些特殊名称的函数3.生命周期函数的名称不可更改,但函数的具体内容是程序员根据需求编写的4.生命周期函数中的this指向是vm 或组件实例对象 new Vue({ el:'#root', data:{ n:1 }, methods:{

2022-03-08 08:04:34 533

原创 Vue组件&&VueComponent

一、组件1.组件的定义实现应用中局部功能代码和资源的集合2.vue中使用组件的三大步骤(1).定义组件(创建组件)(2).注册组件(3).使用组件(写组件标签)3.如何定义组件?使用Vue.extend(options)创建,其中options和new Vue(options)时传入的那个options几乎一样,但也有区别区别如下:1.el不要写 因为 最终所有的组件都要经过一个vm的管理,由vm中的el决定服务哪个容器2.data必须写出函数 避免组件被复用时,

2022-03-08 08:04:23 285

原创 Vue中的自定义指令

1.局部指令 new Vue({ directives:{指令名:配置对象} }) 或 new Vue({ directives(指令名:回调函数) })2.全局指令:Vue.directive(指令名, 配置对象)或Vue.directive(指令名,回调函数)配置对象的三个回调:1.bind:指令与元素成功绑定时

2022-03-08 08:03:58 340

原创 Vue中的ref属性

1.被用来给元素或子组件注册引用信息(id的代替者)2.应用在HTML标签上获取的是真实的DOM元素,应用在组件标签上是组件实例对象(vc)3.使用方式:打标识:< h1 ref="xxx">< /h1> 或 < School ref="xxx" >< /School>获取:this.$refs.xxx...

2022-03-08 08:03:47 143

原创 Vue中的mixin(混入)

混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。功能:可以把多个组件共用的配置提取成一个混入的对象使用方式:第一步创建混入文件 mixin.js 把共用的配置放到这个文件里import { mixin } from '../mixin' // 引入混入文件第二步定义混合,例如:export const mixin = { meth

2022-03-08 08:03:35 258

原创 Vue中的 配置项props

功能:让组件接收外部传入的数据 向子组件传递数据(1).传递数据(父组件传递数据) < Student name="李四" :age="18" sex="女"/>(2).接收数据(子组件接收数据)第一种方式(只接收)简单的声明接收 props:['name','sex','age'] 第二种方式(限制类型)接收的同时对数据进行类型限制 props:{​ name:String,​ age:Number,

2022-03-08 08:03:19 163

原创 浏览器本地存储

1.浏览器通过window.localStorage 和 window.sessionStorage 属性来实现本地存储机制2.相关API(1)xxxxStorage.setItem('msg','hello')该方法接受一个键和值参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值(2)xxxxStorage.getItem('msg')该方法接受一个键名作为参数,返回键名对应的值(3)xxxxStorage.removeItem('msg')该方法接受一个键名作为参数

2022-03-08 08:02:36 250

原创 Vue组件的自定义事件

1.一种组件间通信的方式,适用于:子组件 ===> 父组件2.使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)3.绑定的自定义事件:第一种方式:在父组件中:<Student v-on:atguigu="getStudentName" @demo="m1"/>第二种方式:在父组件中: <Student ref="student"/> mounted() { //

2022-03-07 07:59:18 674

原创 Vue全局事件总线

1.一种组件间通信的方式,适用于任意组件间通信2.安装全局事件总线:​ new Vue({​ ......​ beforeCreate(){​ Vue.prototype.$bus = this //安装全局事件总线 $bus就是当前应用的vm​ }​ ...........​ })3.使用事件总线:(1).接收数据:A组件想接收数据。则在A组件中给$bus绑定自定义事件,事件的

2022-03-07 07:59:05 150

空空如也

空空如也

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

TA关注的人

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