自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浏览器的进程和线程

浏览器的进程和线程

2022-11-02 19:33:59 867

原创 git常见命令和操作

git使用流程

2022-08-28 22:12:22 462

原创 js阻止事件冒泡方案

js阻止事件冒泡

2022-08-06 20:15:39 644

原创 使用promise封装Ajax

promise封装ajax

2022-06-27 21:02:53 368

原创 React生命周期详解

React生命周期详解

2022-06-12 20:42:04 250

原创 前端模块化module

什么是模块化将一个复杂程序按照一定的规则封装成几个块(模块),并组合在一起;模块的内部数据与实现是私有的,只是向外暴漏一些接口(方法)与外部通信。代码抽象、代码封装、代码复用、依赖管理为什么需要模块化没有模块化会出现:变量和方法容易出现命名冲突,造成全局污染加载资源的方式通过script标签从上到下,会导致引入多个scipt:请求过多、依赖模糊(加载顺序模糊)、难以维护模块化的好处:避免了命名冲突,减少命名空间污染更好的分离,按需加载高复用性、高维护性模块化规范Comm

2022-05-24 17:24:08 261

原创 webpack总结

1. webpack是什么webpack是一个用于JS应用程序的静态模块打包工具。编译代码、代码整合、万物皆可模块化。2. 一些核心概念Entry:入口,webpack执行构建的第一步从entry开始,可以抽象为输入。Moudle:模块,在webpack中一切皆模块,一个模块对应着一个文件。webpack会从配置的entry开始递归找出所有依赖的模块。Chunk:代码块,一个chunk由多个模块组合而成,用于代码合并和分割。Loader:文件加载器/模块转换器,用于把模块

2022-05-18 08:45:00 281

原创 实现EventEmitter 订阅监听模式

写一个EventEmitter,实现on(监听事件)、emit(触发事件)、off(清除监听事件)、once(为事件注册单次监听器)以上功能: class EventEmitter { constructor() { // events是一个对象,key对相应的是event,value对应的是函数的数组 this.events = {}; } // 监听event事件,触发时调用callback函数

2022-05-09 16:37:29 627

原创 下划线驼峰互转

下划线变驼峰使用另一个变量存储,遍历当前字符串,把当前字符加入到新的变量中,遇到_,后面的字符变大写之后再加入到变量中。遍历字符串,如果遇到_,直接利用slice方法进行切割,对后一个字符进行大写,之后拼接。利用replace()和正则表达式。//1. let str = "hello_world";function fn1(str){ let result =""; for(let i=0;i<str.length;i++){ var res =str

2022-05-02 20:59:25 906

原创 排序 js版(冒泡、快排、归并、选择、插入、希尔、堆)

冒泡排序(稳定 O(n^2))通过相邻元素之间的比较和交换,将排序码小的元素逐渐从底部移向顶部。// 冒泡,相邻元素之间比较 function fn(arr){ for(let i=0;i<arr.length-1;i++){ for(let j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ let temp = arr

2022-04-26 10:05:30 3837 3

原创 遍历数组和对象的方法

遍历数组的方法forEach遍历,不能跳出循环。不能使用break、continue或者return语句使用for-in遍历(遍历的是键,能够遍历原型链上的属性,也就是继承的属性)使用for-of遍历(遍历数组,类数组对象、字符串都支持)遍历对象的方法回答的是for-of,但是for-of是不能直接遍历对象的,但是它有提供的其他三种方法:Object.keys()、Object.values()、Object.entries()。for-in 循环遍历对象自身的和继承的可枚举属性(不包含s

2022-04-16 10:32:31 1448

原创 js判断数据类型(全)

js基本数据类型基本数据类型:String、Number、Boolean、Undefined未定义、null空、symbol表示独一无二的值(es6引入的新的原始数据基本类型)。Number:返回的特殊值NaN,表示不是数值,用于表示本来要返回的数值的操作失败了。String:字符串是不可变的,一旦创建,值就不能变了。做的字符串操作是先对原字符串进行销毁再创建的。null:null值表示一个空对象指针,typeof null 结果是object。symbol(符号):是原始值,且实例是唯一、不

2022-04-11 08:12:21 16038

原创 js中new一个实例对象的过程

new操作符的作用:new操作符用于创建一个构造函数的实例对象。function Person(name,age){ this.name = nage; this.age = age;}Person.prototype.sayName = function(){ console.log(this.name)}conste person1 = new Person('Tom',20);console.log(person1) //Person {name: "Tom", age: 20}

2022-04-03 16:38:01 2851 6

原创 文本设置省略号

1.显示单行,多余文本隐藏显示省略号:.box{ width:200px; overflow:hidden; //多于文本隐藏 text-overflow:ellipisis; //显示省略号 white-space:nowrap; //文本不换行}多行文本溢出控制最后一行显示显示省略号基于行数控制{ width:200px; overflow:hidden; text-overflow:ellipisis; display:-webkit-box; //设置为弹性伸

2022-03-27 17:33:01 723

原创 vue中key的作用

作用:key是给每一个Vnode的唯一的id,在执行diff算法的时候可以根据key,更准确的找到对应的Vnode节点,高效的更显虚拟dom。不使用key:Vue尽可能地高效地渲染元素,通常会 就地复用最小化的element的移动,并且会尝试尽最大程度在同适当的地方对同样类型的element,做patch或者reuse。使用key:Vue会根据keys的顺序记录element,曾经拥有key的element如果不再出现的话,会被直接remove或者destoryed。因此使用key可以提高渲染效率,

2022-03-20 17:08:15 1144

原创 JavaScript事件循环

1.浏览器内核有多种线程在工作:GUI渲染线程:负责渲染页面,解析html,css构成DOM树等和js引擎线程是互斥的,当JS引擎在工作时,GUI线程会被挂起,GUI更新被放在JS任务队列中,等待JS引擎线程空闲继续执行js引擎线程:单线程工作,负责解析JavaScrip脚本和GUI线程互斥,JS运行时间过长会导致页面阻塞。js引擎是单线程。每次只能执行一个任务,其他任务需要按照顺序排队等待被执行,只有当前任务执行完成之后才会往下执行下一个任务。2.javaScript事件循环机制分为

2022-03-13 17:44:21 1735

原创 详说Promise与async/await

1.什么是promisepromise是对异步编程的抽象。一个promise对象代表一个异步操作,可以将回调函数与异步对象脱离,通过then方法在这个异步操作上绑定回调函数。2.promise的状态pedding初始状态;fulfilled成功状态;rejected失败状态;状态一旦改变,就不会再发生变化。3.promise的优点将异步对象和回调函数脱离,从回调地狱中解脱,避免了层层嵌套。提供了唯一then接口,更好的控制异步操作,代码简洁化。4.promise的缺点无法中途取消,一旦状态

2022-03-06 15:05:27 284

原创 vue组件间通信方式(全)

组件通信分类:父子组件通信兄弟组件通信祖孙与后代组件通信‘非关系组件通信常见的8种通信方式1. 通过props传递使用场景:父传子使用方式:子组件设置声明props属性,定义接收父组件传递过来的参数;父组件在使用子组件标签中通过字面量来传递值//子组件Child.vue//定义接收参数props:{ name:String; //字符串类型 age:{ //对象类型 type:Number, default:18, //默认值 require:true //表示

2022-02-20 00:30:50 293 1

原创 详说SPA(单页应用)和MPA(多页应用)

一. 什么是SPA?SPA(single-page application),翻译过来就是单页应用。SPA是一种特殊的web应用。将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript和CSS。 一旦页面加载完成,SPA不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用JavaScript动态的变换HTML的内容, 从而实现UI与用户的交互。二.SPA的优缺点?优点:具有良好的交互体验因为是局部渲染,每个部分是单独的模块,避免了不必要的

2022-02-15 11:55:42 4471

原创 详说深度优先搜索DFS的应用

对于深度优先遍历DFS,通过上一篇《详说广度优先搜索BFS的用法》中提到的DFS的遍历的顺序,不难看出:这个算法会尽可能深 的搜索树的分支。当结点 v 的所在边都己被探寻过,搜索将 回溯 到发现结点 v 的那条边的起始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被访问为止。提到回溯算法,还是会想到深度优先搜索DFS,在我看来在树的深度优先遍历算法(dfs)中,回溯指的就是树遍历的状态重置,和含有递

2022-01-23 23:48:56 1174

原创 详说广度优先搜索BFS的用法

BFS(广度优先搜索)和DFS(深度优先搜索)总是会被一起提及。在实际应用中,我们用DFS的时候远远多于BFS,那么什么使用场景是DFS不能够做到的,只能使用BFS遍历:层序遍历、最短路径BFS与DFS,我们先看看在二叉树上进行DFS遍历和BFS遍历的代码比较BFS遍历使用递归:void dfs(TreeNode root){ if(root==null){ return ; } dfs(root.left); dfs(root.right);}BFS遍历使用队列(先进先出)数据

2022-01-22 16:30:18 608

原创 算法——0和1个数相同的子数组

解题思路:利用前缀和和哈希表把输入数组中所有的0都替换成-1,那么题目就变成了求包含相同数目的-1和1的最长子数组的长度在一个只包含数字1和-1的数组中,如果子数组-1和1的数目相同的话,那么子数组的所有数字之和就是0所以这个题目就变成了求数字之和为0的最长子数组的长度遍历每一个元素,计算变形过的前缀和,哈希表中存放每个前缀和与该前缀和第一次出现的下标。当该前缀和第二次出现,意味着这两个前缀和的差是0,也就是说在两个前缀和的下表中存在着相同个数的0和1。class Solution { .

2022-01-18 17:06:01 797

原创 van-uploader附件点击下载文件

最近的项目的一个需求:附件图片类型点击查看,非图片类型点击下载附件。使用的是vant组件van-uploader一。点击调用接口,我调用的接口返回的类型是blob类型的,所以我们的请求也应该是blob类型,记得设置reponseType:‘blob’ !!!export function lookDown(uuid){ return request({ url:'api/file/download/'+uuid, method:'get', re

2021-12-10 16:40:16 3980 5

原创 MapReduce课后练习

1【单选题】下列说法错误的是________。A、Map函数将输入的元素转换成<key,value>形式的键值对B、Hadoop框架是用Java实现的,MapReduce应用程序则一定要用Java来写C、不同的Map任务之间不能互相通信D、MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave2【单选题】在使用MapReduce程序WordCount进行词频统计时,对于文本行“hello hadoop hello world”,经过Word

2021-12-02 20:58:41 4825

原创 el-upload上传文件方法自定义参数

这几天在是实现上传文件的功能,使用element-ui的el-upload组件需求是上传成功之后再将返回的文件上传到服务器,因为不同用户身份上传需要做的处理不通,需要传参,用来区别不同的身份。官方文档中上传成功时调用钩子函数存在三个参数。还需要我们的自定义参数index,这时的写法应该是::on-success="(response,file,fileList)=>successUpload(response,file,fileList,index)"相应的s方法处写法也应该是://文件

2021-11-28 15:25:47 3206

原创 git 拉取指定分支

今天拉去项目的代码时,拉下来打开没有内容,只有去项目仓库里面查看了一下,发现自己拉取的是master分支,而我是要克隆的是develop分支git clone默认是拉去的master分支,如果想要拉去其他分支,克隆的时候需要指定分支:git clone -b 指定分支 ssh地址这样拉取的就是自己想要的分支拉如果这篇文章对你有帮助的话,请留下一个赞????吧。...

2021-11-24 10:50:36 11510

原创 html页面audio的autoplay自动播放音乐失败解决方案

这几天写了一个网页,想给网页加一个背景音乐,随着页面加载好自动播放,一直实现不了,也没有报错,后来查询资料原来是因为audio设置的autoplay属性,记录一下。原本<audio preload autoplay loop id="music"> <source src="/music/bg.mp3" type="audio/mpeg"></audio>Chrome提示:DOMException: play() failed because the

2021-11-22 22:38:59 9763 7

原创 数据采集与预处理课程 ——课中考试 ——爬取网页书籍信息并保存到excel

记录:2021-2022第1学期数据采集与预处理课程 课中考试一、打开人民邮电出版社(http://www.ptpress.com.cn)主页,找到“新书推荐版块”中对应方向的真实地址。(学号1-2选计算机,3-4选电子,依次类推。)二、编写代码获取相关图书的基本信息“bookName”、“bookID”、“picPath”保存到excel中,命名为“某类新书基本信息.xlsx”,例如:“计算机新书基本信息. xlsx”。三、在第二步的基础上爬取图书的价格和库存信息,保存到Excel表中,命名

2021-11-19 17:19:43 2321

原创 java栈和队列的实现

栈:后进先出队列:先进先出实现使用借助以下类实现:Stack:栈类Queue:队列类LinkedList:双端队列(栈操作建议使用)一.栈的实现栈的实现,有两个方法:一个是用java本身的集合类型Stack类型;另一个是借用LinkedList来间接实现Stack。Stack类栈是Vector的一个子类,实现了一个标准的后进先出的栈,栈本身最重要的就是push和pop。 Stack<Integer> stack = new Stack<>(); St

2021-11-16 20:44:16 1547

原创 java ArrayList动态数组的实现

什么是动态数组?我们先来说一下静态数组初始化一个数组的方式://静态初始化int [] a = new int [] {1,2,4};//简写int [] b = {1,2,4};//动态初始化int [] c = new int [3]; //指定长度,数组的长度不能改变//没有赋值,java会赋给初始值//int :0//double: 0.0//Boolean: false//String 引用数据类型: null二维数组:int [][] d = {{1},{2,

2021-11-09 10:56:38 412

原创 v-premission添加权限

v-premission权限管理1)对表单右侧操作进行权限管理注意:1.只有权限标识的名字一样,才可以正确绑定权限。2.需要增加权限的页面的组件路径一定要写到index才可以。2)增加权限进入菜单页面,点击新增,选择新增按钮,权限标识要和代码中名字保持一致。(以下以student添加权限imp)增按钮,权限标识为自己要添加的权限名称premission 处也添加该权限...

2021-11-04 17:07:39 696

原创 element-ui带输入建议的input框踩坑--输入建议空白

问题:获取到后端返回的数组,并将数组传入作为results 传入 callback后,焦点放在输入框上的时候,并未出现任何内容,只出现了一个不完整的空白框。原因分析:Elemen t带建议查询输入框,输入建议列表的数据只来源于data:[] 中的 value 字段!!!解决方案1:将自己的数据需要展示的字段组成{value:‘建议’}这种格式this.devEuiArr.push({“value”: item.dev_eui})searchAppNodeApi(searchQuery).then(

2021-10-31 17:40:18 1169 1

原创 v-for动态设置img的src

项目开发中遇到这个问题,记录总结一下。问题:利用v-for动态设置图片,图片路径处写法如下图,发现图片不显示 <div v-for="(item,index) in classify" :key="index" class="cart"> <img :src="item.img" alt=""> <div> <p>{{item.title}}</p> <p&

2021-09-26 14:44:12 2209

原创 计算机组成原理

报了下半年的软考一上午将计算机组成原理的视频看完了,视频内容有点简单,下边是我的笔记。一。计算机组成与体系:考点:数据的表示计算机结构Flynn分类算法CISC和RISC流水线技术存储系统总线系统可靠性校验码与运算:0&0=0;0&1=0;1&0=0;1&1=1即:两个同时为1,结果为1,否则为0或运算:0|0=0; 0|1=1; 1|0=1; 1|1=1;即 :参加运算的两个对象,一个为1,其值为1。异或运算:0^0=0; 0^1=1

2021-09-19 19:53:22 446

原创 微信小程序AvatarCropper 头像裁剪

最近在开发微信小程序,为了避免用户头像上传过大,导致资源浪费,添加了头像剪裁的功能使用u-View组件库中的AvatarCropper 头像裁剪官网已经讲的很清楚了,以下是官网地址:https://www.uviewui.com/components/avatarCropper.html我直接用官网上的代码,发现出现了一些问题:this.$u.route跳转无效,我就改用uniapp的uni.navigateTo,改用uni.navigateTo的话需要注意一点,原先的参数的书写方式就不行了,un

2021-08-26 15:20:46 1400 1

原创 微信小程序图片无法显示时显示默认图片

最近开发的项目是微信小程序,动态显示图片,遇到了一些类问题图片是从别的网站获取的网络图片,使用Image无法正常显示解决方案: 使用原生img标签,添加属性referrerPolicy=“no-referrer”<img referrerPolicy="no-referrer" :src="item.picPath" >此时图片可以显示出来了2.之后发现有几个图片一直加载失败,就让其显示自己设置的默认图片(微信小程序不管用)解决方案:处理图片加载失败的问题,使用onerror事

2021-08-26 14:53:01 3179

原创 mybatis知识点总结和梳理

一.mybatis是什么?mybatis是优秀的持久层框架。避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。二 mybatis的执行流程创建.xml文件(是全局配置文件) 配置数据库文件、事务等myabatis...

2021-07-31 21:21:55 354

原创 第一个Mybatis程序

一、准备下载maven,解压配置环境变量 ,检测是否配置成功 : 直接cmd:mvn-version修改maven文件中的settings.xml配置文件a. 指定本地仓库 localRepositoryb. 添加镜像和相应的JBoss仓库创建一个普通maven项目idea配置mavena.file->settings->Build,Execution->Build Tools ->Mavenb.修改maven3,让idea使用自己的mavenc.修改 us

2021-07-20 21:53:15 78

原创 vue中数组和对象赋值问题

vue中对数组和对象的赋值问题1.vue中对数组的赋值问题我们之前对数组的操作情况:1.利用索引直接设置一个值array[index] = value2.修改数组的长度array.length = num对于以上的操作,在vue是无法实现的,vue不能检测以上变动的数组对于第一种情况需求,在vue中可以通过以下代码实现this.$set(this.array,index,value)若是将一个数组的值赋给另一个数组,也是基于上面代码,只不过在外层加一个for循环即可 (array1

2021-06-05 12:05:48 10545

原创 spring核心之一 AOP

AOP一.概念:面向切编程:使用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个之间的耦合度降低,提高程序的可重用性,提高了开发效率。不通过修改代码方式,添加新的功能(新功能单独写一个模块,通过方式加入其中,不改变原来的模块代码)二.底层原理:1.Aop底层使用动态代理有两种情况:有接口情况,使用JDK代理创建接口实现类代理对象,增强类的方法没有接口情况,使用CGLIB动态代理创建子类的代理对象,增强类的方法2.JDK动态代理过程使用Proxy类里面的方法创建代理

2021-05-15 10:10:08 260

空空如也

空空如也

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

TA关注的人

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