自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vue3-cli报错: code ENOENT syscall open path C:\Users\LX\Desktop\package.jsonnp

最近开始学习vue3安装脚手架步骤:step1:查看vue版本---必须在4.5以上step2:输入文件名---vue create vue3_teststep3等待安装结束,启动项目 npm run serve ----------------报错----------------不知道怎么回事?直接通过vs code 打开这个文件,在vscode 中启动项目(npm run serve)------成功启动-------------...

2021-12-28 14:07:43 321

原创 MongoDB 报错:数据库连接失败 MongooseServerSelectionError:connect ECONNREFUSED 127.0.0.1:27017

今天一大早运行后端服务器,报了如下错误:查了资料发现是: MongoDB 服务器终止任务了;把它打开就行了在任务管理器中右键 打开就行再次输入指令成功!!

2021-12-08 14:35:23 3005

原创 Mongodb报错:connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb E

配置完环境变量,说是连接失败~~这好像是因为没有指明它输出在哪里?-------------------------需要再新建一个文件夹我在D盘与mongodb同目录下新建一个文件夹mongodata然后开启一个cmd窗口,然后需要进入mongodb下的bin 目录下输入指令,简单办法:直接先进入mongodb下的bin目录,然后双击小红框输入cmd 再回车 进直接进入我们需要的目录下了,输入命令mongod.exe --dbpath D:\mongodata..

2021-12-07 14:11:10 2802 1

原创 Mondodb报错:‘mongo‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

最近开始使用koa框架+mongodb 数据库搭建后端接口遇到很多bug:安装好mondoDB 之后,我是安装在D盘目录下的安装好之后,window+R 打开了一个cmd窗口,输入mongo 命令:报错:'mongo' 不是内部或外部命令,也不是可运行的程序 或批处理文件。这是由于没有配置环境变量的原因,简单来说,你把mongo安装在了别的盘,如果给它配置了环境变量,那在任何一个第三方平台都可以访问到了:作为程序员,配置环境变量是必须会的技能,下面说说具体怎么操作,所有的环境变量都是

2021-12-07 14:00:54 11348 6

原创 性能优化-懒加载

与懒加载相对应的概念就是预加载,首先来看看它们的概念:懒加载:按需加载,就是不要一次性加载,而是需要的时候再去加载,减缓服务器的压力预加载:一次性将全部资源加载完毕,需要的时候直接从本地缓存中读取就行,增加服务器的压力也不能说谁好谁坏,就侧重点不同懒加载最大的好处就是首屏渲染速度快,预加载最大的好处就是用户等待时间短懒加载特别使用于长网页的电商页面,因为有大量的图片,如果在首屏一次性加载完全部图片,会导致首屏渲染时间长,我们当然希望用户一上来就能看到页面的图片,所以我们选择懒加载,来

2021-12-06 09:40:12 351

原创 cookie session token 的理解

由于http是无状态的协议。什么是无状态的协议?就是向同一个服务器发的多个请求之间是没有关系的假如你正在某个购物商城购物,你的登录、搜索、下单、支付等操作,服务器不知道这些操作是否来源于同一个用户。因此诞生了这些鉴权方式cookie由服务端保存在客户端的一小段文本信息,格式是键值对分类:会话级cookie:保存在内存中,浏览器页面关闭即消失;持久级cookie:保存在硬盘中,不会随浏览器窗口的关闭而关闭格式组成:name:value:path: 作用路径e

2021-12-05 18:38:49 273

原创 深入理解 Vuex

Vuex 定义在Vue中实现集中式状态(数据)管理的一个Vue 插件,对vue应用中多个组件的共享状态进行集中式的管理(读、写),也是一种组件间通信的方式,且适用于任意组件间通信关键词:集中式:与分布式相对立,就是把数据放在一起管理插件:它是一个插件,需要Vue.use(vuex)共享状态:这里面的数据可以供多个组件使用为什么需要vuex ,全局事件总线不是很好吗?如果组件特别特别多,就会显得逻辑混乱,大量组件之间互相通信,所以vue就将数据单独放在一个容器里,它不属于任何一个组

2021-12-01 21:04:43 619

原创 JZ-offer-二叉树的层序遍历

我们知道,二叉树的搜索分为深度优先搜索和广度优先搜索深度优先搜索,简单来说就是竖着遍历,分为前序遍历,中序遍历和后序遍历广度优先搜索,就是横着搜索,因为也叫层序遍历一、JZ-offer-32(1) 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。层序遍历一般用到队列的概念。利用了队列具有先进先出的特性,具体实现过程就是:每次弹出一个节点,就判断该节点是否有子节点,有就将其加入到队列中,这样就实现了队列中的元素始终是按层排队的。function levalOrd.

2021-11-30 19:15:21 178

原创 JZ-offer 简单二叉树相关

一、输出二叉树的镜像左右子节点交换即可,采用递归的思路最简单function mirrorTree(root){if(root == null) return null;//交换左右子节点,定义一个中间变量,实现交换let temp = root.left;root.left = root.right;root.right = temp;//往下递归,直到为空mirrorTree(root.left);mirrotTree(root.right);}二、二叉树的深度给

2021-11-30 17:14:18 314

原创 深入理解虚拟DOM 和 Diff 算法

什么是虚拟DOM?简单来说 虚拟DOM 就是一个JS 对象,用对象的形式来描述DOM 结构;具体怎么表示?DOM 结构包含很多的属性,节点的类型包含:文本节点,标签节点和属性节点。 <div> <p style="color:red">Hello</p> <span style="border:1px solid red;color:green">World</span> </div&gt

2021-11-30 15:13:03 715

原创 Vue 响应式原理(双向数据绑定原理)

vue 中的双向数据绑定其实就是在单向数据绑定的基础上,给可输入元素(input textare) 等添加change事件,来动态改变绑定的Model 以及视图。先来一张结构图:首先,这个vue 是通过数据劫持结合发布者-订阅者模式来实现的双向绑定。首先通过Object.defineProperty() 给每个属性绑定getter / setter 。当数据发生变化时,发布消息给订阅者,出发相应的回调函数,完成视图更新。1、数据监听器Observer源码里面是这样的:先是处理对象数.

2021-11-30 12:25:27 566

原创 LeeCode 2—两数相加

????题目描述:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。????解决思路:这道题需要返回一个新的链表;创建新节点,给它指定next 就把多个节点连接起来了 。两个节点相加时还需要考虑进位,代码注释中写清楚了整个流程????代码实现:function addTwoNumbers(l1,l2){

2021-11-05 20:36:26 65

原创 Canvas相关用法

首先canvas 只是一个容器元素,或者说提供一个画布,而真正绘制图片需要使用js脚本。标签 <canvas> </canvas> canvas标签只有两个可选的属性 width height,如果不设置宽度和高度,默认是300*300;也可以通过css来设置宽高,但是可能会导致宽高和初始比例不一样,出现扭曲。 支持<canvas>的浏览器会只渲染<canvas>标签,而忽略其中的替代内容。不支持<canvas>的浏览器则 会直接渲...

2021-11-05 20:21:10 252

原创 LeeCode 19—删除链表的倒数第N个节点

????题目描述:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。解题方法:定义两个快慢指针,慢指针slow比快指针fast 滞后n,这样当快指针 fast 移动到来链表末端时,慢指针slow刚好移动到待删除指针的前一个节点处;然后slow指针就跳过倒数第N个节点。function removeNthFromEnd(head,n){ let fast = head,slow = head; for(let i=0;i<n;i++){ fast = fas

2021-11-03 21:58:07 60

原创 LeeCode 143—重排链表

????题目描述:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→ …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换????解题思路:先将所有节点打断,让每个节点都指向null,并且将这些链表存入一个数组,最后通过两个指针将其连接起来function reorderList(head){ let p; cons...

2021-11-02 20:54:17 79

原创 LeeCode 92— 反转链表(进阶)

????题目描述:给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表????分析:这里的left 和right表示的是链接的位置,可以理解为第几个,总之这是一道反转部分链表的题。最直观的方法就是把要反转的那部分链表单独拿出来,反转之后再跟原来的链表拼接在一起。流程:切割链表——> 反转链表——> 拼接链表——>返回链表????代码:

2021-11-01 20:52:22 307

原创 JZ22—链表中倒数第K个节点

????题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。????解答思路:解法1:输出倒数第k个节点,实际上是输出顺数第len-k个节点--所以先求出长度解法2:利用快慢指针,定义两个指针都指向头节点,fast指针前移,移动到k时,就让low指针移动 function get

2021-10-30 17:18:18 80

原创 LeeCode 160—相交链表

????题目描述:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。????题目分析:如果两个链表在某个节点开始相交,说明在这个节点之后,两链表不仅节点值相同,而且后面节点的长度一样,如果A B两条链表长度不相同,但是要相交,那么他们必须从相交后链表长度相等的位置开始进行比较。思路:让A B 从特殊位置(链表长度短的开始比较),先保证A 是最长的链表function getIntersectionNode.

2021-10-30 17:03:31 138

原创 LeeCode 141—环形链表

????题目描述:给定一个链表,判断链表中是否有环????有环就返回true 没有就返回falsefunction hasCycle(head){const res = [];while(head !=null){ if(res.includes(head)){ return true } res.push(head); head = head.next}return false}分析:利用数组存储节点。判断数组中是否有此节点,有就返

2021-10-29 19:41:39 66

原创 js中数组方法之 indexOf 和 includes的区别

数组有时候需要知道 元素在数组中的索引号,就需要用到es5数组方法 indexOfes7中的给我们提供了功能更强大的 includes方法:????indexOf 返回元素的索引号,没有就返回-1;includes 返回 布尔值 true or false 有没有该元素const arr = [2,9,7,5,8];console.log(arr.indexOf(5)); //3console.log(arr.indexOf(1)); //-1console.log(arr.i

2021-10-29 19:09:59 404

原创 LeeCode 21—合并有序链表

????题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。题目分析:双指针+迭代注意两个链表都是升序的????代码验证:function mergeTwoList(l1,l2){ //创建一个dummy节点--- 最后直接返回dummy的下一个节点dummy.next const dummy = new ListNode(-1); let pre = dummy; while(l1!=null &amp

2021-10-29 13:47:12 56

原创 LeeCode 206—反转链表

????题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表链表题 就是 操作指针代码实现:function reverseList(head){ let curr = head; let pre = null; while(curr){//curr.next值先赋给next,以免覆盖,next移动 const next = curr.next;//改变curr指向,给curr.next赋值,指向null curr.next = p

2021-10-28 21:13:22 68

原创 LeeCode 33—搜索旋转排序数组

????题目描述:给一个按照升序排序的数组,然后在某一索引处旋转,求出给定数组中target的下标并返回。给定的数组是旋转之后的数组数组中的每一个元素都是独一无二的;????代码验证:按照题目的意思,就是求给定数组中targe值得索引号,并返回利用js中数组得 indexOf方法:function search(nums,target){ let index = nums.indexOf(target); if(index != -1){ return

2021-10-27 23:14:10 115

原创 求数组的最大值和最小值的四种方法

求数组中的最大值和最小值有很多种方法:????方法1:for循环找最大值;????方法2:先对数组排序(从大到小,或者从小到大)max/min = arr[length-1]????方法3:使用内置对象Math身上的max/min方法,注意这种方法传入的值是不是数组,而是一个接一个的元素,这时候应该想到 ES6中的解构数组 了????方法4:巧用apply方法,因为apply方法它在执行的时候,可以将传入的数组解析成一个一个的元素。代码验证:let arr = [23,1,33,6

2021-10-26 13:18:39 19031

原创 LeeCode121—买卖股票的最佳时机

????题目描述:给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。注意是:只是返回的是最大利润 --- 就是找出差值最大的两个元素,并且这两个元素必须后一个元素大于前一个元素,这样才有利润。返回这个差值。????代码:两种方法:1、双

2021-10-26 10:52:13 92

原创 LeeCode88—合并两个数组

题目描述:给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列分析:1、可以遍历两个数组,将数组1后面的n个数替换为Nums,然后排序2、用js中的 splice 方法function merge (nums1,m,nums2,n){ //从nums1下标为m开始删除n个元素,然后插入替换的元素,这.

2021-10-25 20:40:57 125

原创 LeeCode 1—两数之和

题目描述:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。最简单的方式是:遍历数组,然后用target减去它,得到与它匹配的数pairNum,然后使用nums.indexOf(pairNum)方法判断这个pairNum是否存在function twoSum(nums,target){ let len = nums.length; for(let i=0;i <le...

2021-10-24 13:33:40 2375

原创 LeeCode 53 最大子序和

题目描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路:累加+比较从第一个数开始累加,如果发现和变小了,就舍弃这个数,将cur变为0,再重新开始累加function maxSubArray(nums){ let cur = 0; let max = -Number.MAX_VALUE; for(let i=0;i<nums.length;i++){ cur += nums[i]; m..

2021-10-24 13:12:12 50

原创 LeeCode15_三数之和

题目描述给一个数组nums,判断是否存在三个元素a,b,c满足 a+b+c =0,找出所有和为0且不重复的三元组。思路:1、如果nums的长度小于3,直接返回;2、先从小到大排序,如果第一个数大于0 或者最后一个数小于0 那么一定不存在这样的三个元素。3、这里面的难点是去重 function threeSum(nums){ let len = nums.length; if(len < 3) return [];

2021-10-23 19:31:56 68

原创 继承的概念以及原型和继承的关系

目录继承默认原型原型与继承的关系关于原型上的方法原型链的问题继承先看一个栗子:function SuperType(){ this.property = true //注意这个property不属于原型上的属性,会在它的实例对象身上}Demo1.prototype.getSuperValue = function(){ return this.property}function SubType(){ this.subproperty

2021-10-21 13:47:49 179

原创 options has an unknown property ‘contentBase‘——webpack错误解决

最近在学webpack时踩了很多坑webpack-dev-server 是为了方便我们开发,实时监测我们代码的改变,实时刷新页面。这样就不要一修改代码就重新运行了,大概是这个意思配置开发服务器webpack-dev-server,运行npm install -Dwebpack-dev-server在webpack.config.js中配置如下:module.exports = {devServer:{ //指定服务器目录 contentBase...

2021-10-19 16:13:35 3998 2

原创 创建对象的方式以及深入理解原型

使用Object 构造函数或对象字面量可以方便地创建对象-----这些方式具有很大的缺陷:创建具有同样接口的对各对象需要重复编写大量代码---------------------------------------------本节不讨论-------------------------------------------...

2021-10-19 13:46:17 121

原创 JS 之数据类型检测--四种方法

数据类型检测方式typeofconsole.log(typeof true) // Booleanconsole.log(typeof 2) //numberconsole.log(typeof 'abd') //stringconsole.log(typeof []) //objectconsole.log(typeof null) //objectconsole.log(typeof undefined) //undefined数组 对象 nul.

2021-10-16 10:46:23 48

原创 Access to XMLHttpRequest at ‘http://127.0.0.1:8000/server‘ from origin ‘http://127.0.0.1:5500‘ has

控制台输出 Access to XMLHttpRequest at 'http://127.0.0.1:8000/server' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested reso离谱~~我访问本地服务器,竟然还存在跨域问题找了很对解决方案最有效的是在设置响应头时

2021-10-15 16:25:52 46161 1

原创 彻底搞懂事件循环机制

JS是单线程的,最大的特点是维持了事件循环事件循环的组成由主线程和任务队列任务队列分为宏任务和微任务执行顺序如下:主线程 > 微任务 > 宏任务<script>console.log('start');setTimeout(() => { console.log('children2'); Promise.resolve().then(() => { console.log('children3'); }.

2021-10-12 14:33:10 58

原创 成功解决使用node时,启动js文件抛出错误 events.js:377 throw er; // Unhandled ‘error‘ event ^Error: listen EA

问题描述:我在写服务端时:const http = require('http');const url = require('url')const app = http.createServer();app.on('request',(req,res)=>{ //获取请求方式 const method = req.method.toLocaleLowerCase(); //返回的时大写的GET/POST 最好转换为小写的 //获取请求地址 co

2021-10-08 14:32:05 5103 1

原创 操作系统——进程、线程、并发、并行等

进程和线程进程:资源分配的最小单位,进程可以看作是一个程序,同一时刻进行的进程数小于核心数。但是!!单核CPU也是可以进行多进程的(amazing~)它的实现原理是这样的:同一时刻只能有一个进程进行,但是它可以在多个线程之间快速的进行切换,当从一个线程切换到另一个线程时,需要保护现场(有点像断点)所以进程拥有自己的地址变量、全局变量等硬件资源,一边切换回去能继续工作。线程:线程就理解为进程的单元,一个程序是不是由多个内部任务组成的呢?每个内部任务就是一个线程,因为它称为微进程,是程序的最小组

2021-10-05 20:35:51 365

原创 解决internal/modules/cjs/loader.js:892 ^Error: Cannot find module ‘C:\Users\LX\Desktop\Node_DEMO\a报错

刚开始学习node.js,一开始就报错,心态崩了-----------------------------------------------------------------------------------我在桌面上创建一个文件夹Node_demo,我的xx.js文件在Node_demo>demo2>app.js在vscode中,我直接 ctrl +`(反引号)打开终端,然出现以下错误仔细看路径,发现不对,我的app.js应该是在demo2中的,可能这种快捷方式打开的

2021-10-05 11:48:48 4786

原创 JS重点总结(1)

dom模型,事件委托的优缺点事件委托就是:利用冒泡的原理,把事件添加到父元素上,委托它们父级代为执行事件优点:提高性能,减少内存,对于新添加的元素也会有之前的事件缺点:1. 事件委托基于冒泡,不冒泡的事件不支持2.层级过多,冒泡过程中可能被中间层阻止3.如果把所有事件都用事件委托,可能会出现事件误判,即不该触发事件的被绑定了0.1+0.2 = 0.3?0.1+0.2 = 0.30000000000000004首先浮点值的精确度最高可达17位小数两数相加时,会将两束转换成二

2021-10-04 13:57:04 65

原创 HTML (1)

HTML5 存储类型有什么区别?HTML5 能够本地存储数据,(在之前都是使用 cookies 存储的)。HTML5 提供了两种本地存储方案:localStorage 用于持久化的本地存储,数据永远不会过期,关闭浏览器也不会丢失。 sessionStorage 同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。px em rem 的关系px:绝对单位长度,类似于我们平时用到的米、厘米em r.

2021-10-04 13:43:17 99

空空如也

空空如也

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

TA关注的人

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