自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (3)
  • 收藏
  • 关注

原创 哔哩哔哩2020前端笔试题总结

1.输出结果for(let i=0;i<10;i++){setTimeout(function(){console.log(i)},1000);}2.左右固定宽高,section自适应3.时间循环机制输出顺序4.能改变原数组的方法5.样式的优先级6.display的哪些属性可以给行内元素设置宽高的样式编程题:1.版本号排序2.给定一个正整数,求有平方和为这个正整数的最小数量…大概能回忆出这么多了…...

2020-08-13 21:46:37 850

原创 高度塌陷出现的场景以及解决方法

1.当子元素浮动,父元素没有设置高度的时候会造成父元素高度坍塌2.解决方法:1)给父元素设置固定高度2)父元素设置overflow:hidden3)最后一个浮动元素的后面加一个空标签,设置样式clear:both4)父元素添加伪元素::after设置样式content:‘’clear:bothdisplay:block...

2020-08-02 09:47:11 189

原创 遍历对象的方法总结

1.for…in…遍历对象,还会得到对象原型链上的属性,k可以通过hasOwnProperty()方法过滤原型链上的属性2.Object.keys()返回对象自身属性组成的数组,自动过滤了原型链上的属性,可以通过forEach来遍历3.Object.getOwnPropertyNames()返回自身属性组成的数组,包括不可枚举的属性,可以通过forEach遍历4)Reflect.ownKeys()返回对象自身所有属性组成的数组,包括不可枚举属性和Symbol属性...

2020-07-15 10:28:08 971

原创 基本数据类型和引用数据类型有什么区别总结

1.内存分配方面基本数据类型存放在栈中,占据的空间是固定的引用数据类型,栈中的变量是它的引用地址,内容存放在堆中,大小可改变2.访问机制方面基本数据类型的值是可以直接访问到的引用数据类型是不允许其直接访问保存在堆中的对象的,需要通过地址访问3.赋值变量方面基本数据类型赋值给一个新的变量,两个变量独立,只是值相同而已引用数据类型是把地址赋值给一个新的变量,存储在栈中的两个变量是指向堆中同一个对象,其中任何一个改变都会反映到另一个身上...

2020-07-14 16:48:29 450

原创 JS基本数据类型以及类型转换总结

1.null表示空对象指针,比如作为原型链的终点、想要保存对象的变量还没有正在的保存对象的时候2.undefined 表示缺少值,应该有一个值但没有被定义,比如变量声明但没有赋值、调用函数时没有提供该有的参数、函数没有返回值注意:null==undefined返回true3.Number3.1 String转为Number类型的方法:1)parseInt(str)2)parseFloat(str)3)Number(str)如果第一个值不是±符号或者数字就返回NaN,是的话一直截取到后

2020-07-14 16:19:51 168

原创 leetcode移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。/** * @param {number[]} nums * @param {number} val

2020-07-10 11:56:13 79

原创 leetcode删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。/** * @param {number[]} nums * @return {number} */var remov

2020-07-10 11:51:39 77

原创 安全防范、XSS、CSRF

1.XSS什么是xss攻击???就是攻击者将可执行代码注入到网页中,一般可以分为两种,一种是攻击的代码被写入数据库,这种攻击危害比较大,如果网站访问量比较大的话,会导致大量正常访问页面的用户都收到贡酒,另一种是通过修改url参数的方式加入攻击代码,诱导用户访问链接从而进行攻击如何防范xss攻击???通常可以通过两种方式防御:1)转义字符将用户输入的内容进行转义,最好是对一些内容进行过滤,比如script标签2)通过csp本质是建立白名单,开发者明确告诉浏览器哪些外部资源是可以加载和执行

2020-07-06 09:43:46 196

原创 性能优化

1.图片优化1)大小优化:通过减少像素点和每个像素点能够显示的颜色缩小图片大小2)加载优化:用CSS代替修饰类的图片,用CDN加载图片,计算出适配屏幕的宽度去请求相应剪裁好的图片而不是直接使用原图浪费宽带,小图用base64,使用精灵图,选择正确的图片格式,比如小图使用png,图标尽量使用svg代替,照片使用jpeg2.DNS预解析DNS解析也是需要时间的,可以通过预解析的方式先获得域名对用的ip:<link rel="dns-prefetch" href="//blog.poetries.

2020-07-06 09:35:35 229

原创 找出数组中唯一一次出现奇数次的数字

<script> function findNum(nums) { let result = nums[0]; for (let i = 1; i < nums.length; i++) { result = result ^ nums[i]; } return result; } arr = [1, 2, 2, 4, 6, 1, 1, 3, 4, 3, 6]; console.log(f..

2020-07-05 09:18:00 397

原创 js实现二分查找

<script> var arr = [12, 34, 37, 56, 67, 78, 89, 90, 99] function search(arr, key) { let low = 0; let high = arr.length - 1; while (low <= high) { let mid = parseInt((high + low) / 2); if (arr[mid] == key..

2020-07-05 08:54:53 160

原创 编程实现输入框和确定按钮,点击确定,列表中增加当前输入内容,并清空输入框列表中每条有删除按钮,点击删除本条内容

<body> <input id="input" type="text" name="" id=""> <button onclick="addContent()">添加</button> <ul id="ul"></ul> <script> function addContent() { let ul = document.getElementById('ul') let l

2020-07-05 08:53:34 605

原创 vue组件之间值的传递

1.父子组件之间的传值1)父向子传递:父组件通过v-bind绑定一个变量,子组件通过prop接收这个变量父组件<template> <div> <m-child :message="'Parent message'" ></m-child> </div></template><script>// 引入子组件import MChild from '@/components/Child'e

2020-07-05 08:49:43 98

原创 js数组随机排序

洗牌算法 <script> let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; let cloneArray; function getSort(arr) { cloneArray = arr.concat(); for (let i = 0; i < cloneArray.length; i++) { let index = Math.floor(Math.random() * cloneArr

2020-07-04 11:36:30 91

原创 深浅拷贝

1.浅拷贝两个或多个对象指向同一个内存地址,如果其中某个对象变量的值发生改变,另一个对象相应的值也会发送改变,比如Object.assgin()合并多个对象,只要源对象里某个值是对象,则这个对象发生的任何改变就会在目标对象里有所体现2.深拷贝值和地址都复制,其中任意一个对象的值改变,另外的对象对应的值不会改变,1)可以通过先转为JSON.stringify(),再转为JSON.parse()实现,但这个方法只能复制对象和数组,不能复制函数缺点:会忽略undefined和symbol、不能序列化函数

2020-07-03 09:32:45 84

原创 ==和===的区别

1.==比较的是两者的内容,首先会判断两者的类型是否相同,如果相同就直接比较大小,不同的话,就会进行类型转换,会先判断是否是null和undefined的比较,是的话返回true,不是的话判断两者的类型是否是String和Number,是的话就会将字符串转换为Number,不是的话判断其中一方是否是boolean,是的话把boolean转换为Number再进行判断,不是的话判断其中一方是否为Object且另一方是否为String Number symbol 是的话就会把Object转为原始类型进行比较2

2020-07-03 09:30:08 514

原创 js的This值

简单总结~This是函数执行的上下文,通常指向函数的直接调用者,可以通过bind apply call来改变函数的指向,一般的普通函数的this值通常是谁调用,this值就指向谁,而箭头函数的this值,通常是包裹箭头函数的第一个普通函数所指向的this值,一旦被绑定了就不会再被任何方式改变,this的指向也会有优先级,new的方式优先级最高,接下来是bind等函数,最后是对象调用这个方式...

2020-07-03 09:28:48 121

原创 js类型转换

1.转为布尔值:条件判断的时候,除了undefined null fasle NaN ‘’ 0 -0,其他所有的值都为true,包括所有的对象2.转为数字Number() 如果转换的里面有任意一个值不少不是数值就返回NaNparderInt() 如果第一个字符是数字,直到遇见不是数字的为止,如果第一个不是数字或者字符返回NaNparseFloat()如果第一个字符是数字,则直到遇见的不是数字为止,如果第一个不是数字或者字符就返回NaN3.转为字符串.toString() 不可以转null和u

2020-07-03 09:27:29 482

原创 typeof和instanceof类型判断

typeof可以准确判断除了null的基本类型,null和对象都会返回objectinstanceof能准确判断对象的类型,对于基本类型都返回false,内部机制根据原型链来判断,如果沿着A的原型链,同时沿着B的原型链来找,如果能找到同一个引用,就返回true。...

2020-07-03 09:25:52 253

原创 深拷贝和浅拷贝的概念

大概是这样~1.浅拷贝:复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意一个对象的值,另一个对象对应的值会随之变化2.深拷贝:将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝`Object.assign()//将所有可枚举属性的值从一个或多个源对象复制到目标对象,假如可枚举属性值是一个对象的引用,也只能指向那个引用JSON.parse(JSON.stringify(object))// 通过这种方式可以实现object对象的深拷贝...

2020-06-29 17:55:19 304

原创 js实现数组扁平化/降维

let newArray=[] function flat(arr){ for(let i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ flat(arr[i]); }else{ newArray.push(arr[i]) } } return newArray;}

2020-06-29 17:46:19 149

原创 箭头函数的特点

总结一下~1.没有自己的this,不能用call(),apply()这些方法改变this值的指向2.不存在arguments对象3.不能当构造函数使用,也没有prototype属性

2020-06-29 14:46:45 185

原创 判断对象类型

总结一下~1.obj instanceof Object2. Object.prototype.toString.call() 得到类型字符串3.typeof obj4.obj.constructor

2020-06-29 14:45:51 423

原创 对原型以及原型链的简单理解

一、原型1.每个函数上面都有一个prototype属性,指向了函数的原型对象(函数名.prototype)2.每个实例上面都有一个隐型的__proto__指向函数的原型对象(函数名.prototype)3.实例访问属性或者方法的时候遵循实例上存在就用实例上的属性和方法,不存在就顺着__proto__往上查找,找到就停止的原则4.每个函数的原型对象上都有一个constructor属性,指向构造函数本身5.每个原型上还有一个__proto__属性,指向上一级原型对象(例如:Person.prototy

2020-06-29 09:24:48 235

原创 bind、call、apply的区别

1.使用的时候call和apply是对函数的直接调用,但是bind返回的是一个函数,需要用()调用2.传参第一个参数都是this要指向的对象,apply的第二个参数是一个数组,数组元素与要调用的方法参数对应,call后面的参数与要调用的方法参数对应,bind可以像call一样传参,也可以再调用的时候传参...

2020-06-28 22:26:22 83

原创 变量提升

1.JS执行的时候会生成执行环境,全局执行环境或者函数执行环境。创建执行环境会经历两个阶段,第一个阶段是创建阶段,js解释器找出需要提升的变量和函数,在内存中提前为他们开辟空间,函数的话直接将整个函数放入内存空间,变量只声明并赋值为undefined,第二个阶段就是执行阶段,之前声明的变量和函数就可以提前使用了。2.在提升的过程中,后面的同名函数会覆盖前面的函数,并且函数的优先级高于变量...

2020-06-28 22:23:55 177

原创 cookie、sessionStorage、localStorage的区别

1.cookie:大小不超过4K,cookie有效期内有效,始终在http请求中携带2.sessionStorage:大小可以达到5M或更多,数据在当前浏览器窗口关闭时失效,不会主动发送给服务器,仅本地保存3.localStorage:大小可以达到5M或更多,数据如果不被主动删除是不会失效的,不会主动向服务器发送数据,仅本地保存( localStorage API 不支持设置过期时间)...

2020-06-28 19:03:26 370

原创 HTML5的离线储存怎么使用以及工作原理

1.使用:1)2)在file.appcache文件里编写离线存储的资源,例如:3)在离线状态时,操作doucument.applicationCache进行需求实现2.原理:1)在线时,浏览器发现html头部有manifest属性,就会请求manifest文件,如果是第一次访问,浏览器就会根据manifest文件进行相应资源的下载,如果已经访问过并且已经有资源了,就会使用离线下载的资源。然后对新旧的manifest文件进行比较,如果有改变则重新下载文件中的资源,没有改变就不进行任何操作2)离线

2020-06-28 18:56:46 1554

原创 对网站重构的理解

个人理解是使程序更好的扩展、维护和优化对传统网站的重构:1.表格布局改为DIV+CSS2.使网站前端兼容于现代浏览器3.减少代码间耦合4.设计可扩展的API5.代替旧有的框架,语言6.压缩js,css,image等前端资源…...

2020-06-28 18:43:21 185

原创 vue使用element pagination组件

<div v-if="pageshow"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-size="size" background layout="prev, pager, next" :total="total"></el-pagination> </.

2020-06-20 08:48:50 154

原创 git rebase和merge时遇到冲突

git rebase的时候遇到冲突然后我备份了代码 再去执行git rebase --abort,再切分支去develop上面merge,这个时候其实冲突还是没有解决:解决办法:我用vscode打开代码然后去图中指示的文件里解决了冲突,自己看要保留哪一份修改的代码就可以了,然后报错,再去develop上执行add和commit,最后push...

2020-04-30 19:29:03 1051

原创 git push的时候遇到的问题

git push的时候报错:! [rejected] develop -> develop (fetch first) error: failed to push some ref…然后根据提示输入百度了解决方案继续输入git pull出现下面这张情况**解决办法**步骤:1.输入i2.按下ESC键3.英文状态下输入:wq做完以上三步后,直接push就可以啦~...

2020-04-29 18:37:59 757

原创 vscode使用git简单介绍

2020-04-23 16:12:03 129

choujiang.zip

基于微信小程序,采用固定的布局,一个简单的九宫格抽奖板块,逻辑简单清晰,代码容易理解,后期速度可以自己设定调节

2020-05-29

实验报告程序.zip

基于c#,并由图片浏览器、计算器、福利彩票球、点名系统、记事本、评委打分、随机出题、联动选课等功能合成的一个窗体小程序

2020-04-23

sendmail.zip

使用SpringBoot写的一个单人发送邮件或者群发邮件的简单小程序 发送的内容可以是简单的文本也可以是图片、视频、文档、zip包等等

2020-04-23

空空如也

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

TA关注的人

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