自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决虚拟机CentOS8无法上网的问题

周五安装的虚拟机,然后一直不能上网,我查阅了好多资料,试了好几次都没用,今天终于把它搞好了。记录一下。一、1、首先保证虚拟机的网络适配器为NAT模式2、设置虚拟机的“编辑”->“虚拟网络编辑器”中的VMnet8的DHCP的设置(两个选项都勾选上)。3、设置物理主机,保证虚拟网关的IP地址为自动获取;同时本地连接也设置为自动获取4、开启物理主机的VMware DHCP Service 和VMware NAT Service服务命令为:net start “VMware DHCP Ser

2021-05-16 15:01:15 8035 5

原创 联想小新进入BIOS方法(解决安装VM虚拟机提示“Intel VT-x处于禁用状态”)

最近要学项目部署,所以先安装个VWmare虚拟机,在虚拟机里安装Linux系统。我下载好Linux的镜像文件后,在vw里创建新的虚拟机时报错,发现我的电脑的虚拟化是禁用的。 于是我在网上查了一下得打开BIOS才能修改虚拟化设置。 问题是:我的电脑是联想小新,我在网上查说电脑开机时按F2就可以进入BIOS系统,可我来来回回试了好几趟都不行。后来终于打开了。所以记录一下解决方法。1、先进入“设置”页面,点击“更新和安全” —> “恢复”—> “高级启动”—> “立即重新启动”2、在出现

2021-05-14 21:51:18 20499 10

原创 git push -u origin master提交时报错Branch ‘master‘ set up to track remote branch ‘master‘ from ‘origin‘.

一、当我向GitHub远程仓库中推送本地仓库的项目进行到最后一步命令时,报了如下的错误:Branch 'master' set up to track remote branch 'master' from 'origin'.解决方法:1、添加到本地仓库git add .2、添加提交描述git commit -m ‘提交’3、提交前先从远程仓库主分支中拉取请求gitpull origin master4、把本地仓库代码提交git push -u origin master二、如何

2021-04-25 17:43:50 21177 3

原创 用栈实现回文字符串的判断

用栈实现回文字符串的判断栈是一种后进先出的数据结构,它只能在一段进行插入和删除操作。例如一个字符串"12321",像这种 ,无论正读反读均相同的字符序列,就叫做回文字符串。首先,我们需要读取这行字符串,并求出字符串的长度。 char a[101]; int len; gets(a); len=strlen(a);如果一个字符串是回文的话,那么它必须是中间对称的,我们需要求中点,即: mid=len/2-1;接下来将会涉及到栈的应用;我们先将mid之前的字符全部入栈。因为这里的栈是用

2020-05-14 16:42:46 18772 11

原创 HTML 一个div在浏览器页面中居中

HTML 一个div在浏览器页面中居中第一种方法:(纯css实现)总的来说,就是绝对定位,设置宽高,top和left设为50%,margin设为:上为高度一半,左为宽度一半。即使缩放浏览器窗口也能保证div居中代码:效果:第二种方法:(纯CSS实现)即使缩放浏览器窗口也能保证div居中效果图:...

2020-05-13 10:22:35 3875 2

原创 call、apply和bind的模拟实现

call()和apply()的区别在于,call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。举例:var func = function(arg1, arg2) { ...};func.call(this, arg1, arg2); // 使用 call,参数列表func.apply(this, [arg1, arg2]) // 使用 apply,参数数组一、call的模拟实现我们先来看一个简单的例子。var value = 1var

2021-09-17 20:33:05 1048

原创 构造函数、原型和原型链

构造函数constructor 返回创建实例对象时构造函数的引用。 此属性的值时对函数本身的引用,而不是一个包含函数名称的字符串。function Parent(){ this.age = age}var p = new Parent(50)p.constructor === Parent // truep.constructor === Object // false构造函数本身就是一个函数,与普通函数没有任何区别,不过为了规范一般将其首字母大写。构造函数和普通函数的区别在于

2021-09-16 13:29:31 1054

原创 关于setTimeout和Promise执行顺序问题

我们先来看一个代码片段:setTimeout(_ => console.log(4))new Promise(resolve => { resolve() console.log(1)}).then(_ => { console.log(3)})console.log(2)//输出结果为 1、2、3、4可以看出Promise比setTimeout()先执行。因为Promise定义之后便会立即执行,其后的**.then()是异步里面的微任务**,而setTim

2021-09-02 13:23:55 5950 3

原创 JS 浅拷贝与深拷贝

一、数据类型数据分为基本数据类型和对象数据类型。1、基本数据类型的特点:直接存储在栈中的数据。2、引用数据类型的特点:存储的是该对象在栈中的引用,真实的数据存放在堆内存中。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得后从堆中获得实体。如下图:二、浅拷贝与深拷贝浅拷贝和深拷贝是只针对Object和Array这样的引用数据类型的。浅拷贝和深拷贝的示意图大致如下:浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还

2021-09-02 12:45:26 102

原创 JS 事件委托详解

基本概念事件委托,就是把一个元素响应事件的函数委托到另一个元素。一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。事件冒泡DOM中事件委托的实现是利用事件冒泡机制。在document.addEventListener 的时候我们可以设置事件模型:事件冒泡、事件捕获。一般来说都是事件冒泡的模型。如上图所示,事件模型是指分为三个阶段:1、捕

2021-09-02 11:05:59 213

原创 关于JS中的自由变量与作用域链

自由变量在A作用域中使用的变量x,却没有在A作用域中声明(即是在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。作用域链先说一说什么是作用域链呢?当代码在一个环境中执行时,会创建变量对象的一个作用域链(作用域形成的链条)1、作用域链的前端,始终都是当前执行的代码所在环境的变量对象2、作用域链中的下一个对象来自于外部环境,而下一个变量对象则来自于下一个外部环境,一直到全局执行环境3、全局执行环境的变量对象始终都是作用域链上的最后一个对象内部环境可以通过作用域链访问所有外部环境,但

2021-09-02 10:41:14 91

原创 手动搭建一个react项目(不使用create-react-app脚手架)并更改默认端口

首先,创建一个文件夹1、使用npm init -y 命令生成package.json文件2、安装所需要的依赖npm install --save react (安装React)npm install --save react-dom (安装React Dom)npm install --save-dev webpack (安装webpack,打包工具)npm install --save-dev webpack-cli (使用 webpack 4+ 版本,还需要安装 webpack-cli

2021-07-26 13:48:26 990 1

原创 前端每日一题

var a,b;(function(){ alert(a); alert(b); var a=b=3; alert(a); alert(b);})();alert(a);alert(b);输出结果应为:undefined,undefined,3,3,undefined,3解析:由于var a=b=3, 所以a是局部变量,b是全局变量。 var a,b; (function(){ alert(a); //这是第一个输出的,先在局部没找

2021-07-17 09:22:12 641

原创 Problems loading reference ‘http://json.schemastore.org/package‘: Unable to...

1、报错内容Problems loading reference 'http://json.schemastore.org/package': Unable to2、报错原因:因为某些原因无法连接到schema3、解决方法:设置离线模式设置离线模式方法:在 User settings.json 中添加 "json.schemaDownload.enable": false...

2021-07-16 09:22:08 9829 1

原创 Uncaught TypeError: Cannot read property ‘push‘ of undefined

最近项目部署, 把前端项目部署到服务器上之后,我的react里面重定向用的是window.location,但是部署到服务器上之后就没有办法定向了。 于是我想着把重定向改成this.props.history.push, 但是改成这个之后本机也报错了,错误提示无法识别push,之所以出现这种问题是因为路由没有直接被管理,所以我们的这个组件中找不到这个history方法。 因为我是在直接被路由管理的组件的子子组件里面用到history,所以此处需要使用history的组件没有被路由直接管理所以说找不到pu

2021-06-01 12:23:47 1326

原创 在服务器上安装node(非软连接)

最近搞项目部署,先在服务器里配置个node环境,看了博客用软连接的话全局使用一直有问题。所以记录一下另一种简单的方法。1、当我们在终端中直接使用yum安装node时,不能成功。提示没有可用的安装包。2、 解决方法:安装附加安装包epel yum install -y epel-release再次安装node yum install -y nodejs3、运行命令查看node、npm版本如图所示,已经全局安装成功了。...

2021-05-26 16:51:46 279

原创 nginx编译报错 cc1:所有的警告都被当作是错误 make[1]:*** [objs/Makefile:446:objs/src/core/nginx

报错信息如下:make -f objs/Makefilemake[1]: 进入目录“/opt/nginx-1.8.1”cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_murmurhash.o \ src/co

2021-05-22 18:10:45 5936

原创 xshell上传文件到虚拟机Linux服务器

我在学习nginx的过程中,一直需要把很多压缩包安装到虚拟机的Linux服务器中。所以在这里简单记录一下xshell工具进行文件的传输。1、首先,xshell远程连接上一台Linux主机2、输入rz命令,查看是否已经安装了lrzsz,如果没有安装则执行 yum -y install lrzsz命令进行安装。3、安装成功后,输入rpm命令确认是否正确安装。4、使用 rz -y命令进行文件上传,此时会弹出上传的窗口5、选择要上传的文件,点击确定即可将本地文件上传到Linux上,如图表示

2021-05-21 17:05:40 3158 1

原创 关于nginx防火墙设置端口号的操作

1、启动1.1首先以root身份打开终端1.2 输入命令 cd /usr/local/src/1.3 输入命令 cd nginx-1.20.0由于我安装的nginx版本为 1.20.0 所以命令中也是1.20.01.4 输入命令 cd conf1.5 输入命令 /usr/local/webserver/nginx/sbin/nginx然后在地址栏输入 本机IP 就可以访问到了,如图: 表示成功启动nginx了。2、查看开放的端口号输入命令:firewall-cmd --list-all

2021-05-18 19:49:12 1638

原创 CentOS8 配置本地yum源

1、以root方式打开终端2、输入命令2.1 mkdir -p /mnt/dvd2.2 mount /dev/cdrom /mnt/dvd2.3 cd /mnt/dvd2.4 ls如图所示:2.5 vim /etc/yum.repos.d/local.repo2.6 输入如图所示 ,并保存2.7 yum clean all2.8 yum makecache2.9 yum list all到此为止yum本地源就已经配置好了。注意!!!3、yum更新软件包时会提示"Th

2021-05-17 17:33:19 378

原创 react-hooks + redux实现一个完整的的前后端登录注册小案例

因为之前写项目一直没有用状态管理,打算在下个项目里用hooks和react-redux。所以最近学了一下redux和hooks,写了一个登录注册来练习练习。前端:react + antd + react-router-dom +react-redux + react-hooks后端:Node + MongoDB1、前端所需第三方依赖:2、后端所需第三方依赖该案例我配置了antd的按需加载以及less语法的使用。一、项目目录该案例共分为client和server两个文件夹。1、client

2021-05-11 19:45:33 1464 4

原创 使用react-redux实现一个todolist小案例

首先我们得对redux有一定的基础认识。入口文件import React from 'react';import ReactDOM from 'react-dom';import {Provider} from 'react-redux'import TodoList from './TodoList'import store from './store/index'ReactDOM.render( <Provider store={store}> <Tod

2021-05-08 21:48:07 181

原创 解决关于react antd Form组件不能更新state的问题

首先,我先把我的问题说一说。就是我在引用antd的组件库在写登录注册页面时,用到了

2021-04-25 11:48:41 1340

原创 JS数组去重的方法

一、利用es6 set去重1、function unique(arr) { return Array.from(new Set(arr)) }2、Array.from()方法就是一个将类数组对象或者可遍历对象转换成一个真正的数组。类数组对象就是 具有length属性的对象。3、要将一个类数组对象转换为一个真正的数组,必须具备一下条件:(1)该类数组对象必须具有 length 属性,用于指定数组的长度;如果没有length属性,那么转换后的数组是一个空数组。(2)该类数组对象的属性名必须为

2021-04-21 14:45:24 683

原创 用node实现socketIO实时通信

一般来说只有前端才能向后端请求,请求完成后端再做出响应反馈给前端。而socket.io机制就解决了后端可以主动向前端发出请求,通过该原理即可实现聊天室的功能。第三方包的安装首先应该安装socketio的第三方包,客户端安装:npm i socket.io-client服务端安装: npm i socket.io分别引入socket.io客户端:import io from 'socket.io-client'服务端: require('socket.io')服务端代码文件socketIO

2021-04-15 18:11:15 1052

原创 解决npm run eject报错

当我在配置隐藏文件,想让隐藏文件显示出来时,终端输入npm run eject 报错:报错原因git问题,你的版本库有未提交的文件,因为reject后会多出来一些文件。为了不影响。你应该把这些文件加到ignore里或者删掉。错误处理git initgit add .git commit -m 'save'npm run eject...

2021-03-30 17:08:47 489

原创 在项目中用node实现邮箱验证码的发送和验证

基础配置我的项目是react + node + MongoDB ,首先邮箱验证码的发送需要开启SMTP服务,这里我就不做过多赘述了,挺简单的,给大家一个地址照着这个做就行:https://jingyan.baidu.com/article/c35dbcb0eb01428917fcbc77.html然后,我们要在项目中安装 nodemailer 中间件,这个是发送邮箱验证码必不可少的 npm i nodemailer思路详解先看看我的项目目录结构下面展示的文件都只展示与邮箱验证码发送有关的

2021-03-27 13:50:00 1068

原创 jwt 解码token

1.引入 jwt 模块npm i jsonwebtoken

2021-03-24 13:52:21 165

原创 第一次在项目中使用token总结

使用token进行身份验证,我的整体思路是:首先当用户第一次登录的时候向服务端发送请求,服务端接收到这个请求然后用jwt生成一个token,并把它返回给客户端,然后客户端用cookie进行保存,之后每一次客户端向服务端发送请求时都在请求头中携带这个token服务端收到请求,然后去验证客户端请求里面带着的 token,如果验证成功,就向客户端返回请求的数据1.首先需要在项目中安装jwt模块npm i jsonwebtoken2.然后在服务端文件中(我的项目中服务端入口文件是app.js,路由

2021-03-23 11:38:13 873

原创 跨域代理实现

// 1、设置跨域访问app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", "*");// 这里设置允许所有跨域访问 res.header("Access-Control-Allow-Headers", "Content-Type,XFILENAME,XFILECATEGORY,XFILESIZE,set-cookie");//一定要在这里面加上自定义的请求头 res.h

2021-03-22 22:01:45 110

原创 小程序本地存储的步骤

//1. 获取本地存储中的数据 const Cates = wx.getStorageSync('cates') // 2. 判断 if (!Cates) { // 不存在 发送请求获取数据 this.getCates(); } else { // 有旧的数据 定义过期时间 10s 改成 5分钟 if (Date.now() - Cates.time > 1000 * 10) { // 重新发送请求 t

2021-03-21 20:39:11 343

原创 web中的本地存储和小程序中的本地存储的区别

1. 写代码的方式不同web:存储:localStorage.setItem('key','value')获取: localStorage.getItem('key')小程序:存储:wx.setStorageSync('key','value')获取:wx.getStorageSync('key')2.类型转换web: 不管存入的是什么类型的数据 都会先调用 toString() 把数据变成字符串再存进去小程序:不存在类型转换 存什么类型的数据 获取的时候就是什么类型的数据...

2021-03-21 18:35:23 198

原创 解决微信小程序中 calc 失效问题

有效写法是: height: ~"calc(100vh - 80rpx)";注意:1、运算符左右两边要有空格;2、数字和单位之间不能有空格;3、括号与减数,被减数之间不能有空格;4、 以上无效记得加上英文~符和双引号。...

2021-03-21 16:06:10 972

原创 聊一聊es6中的promise

Promisepromise就是为了解决多层的函数、方法的嵌套调用而存在的。简单粗暴地理解就是:它就是把一层一层向内嵌套调用的方法给拉成一串连续调用的方法。每个嵌套调用的方法,都向调用者返回this,也就是返回自身,然后带着上一次调用的结果进入下一次嵌套调用的环节。伪代码:// 普通的js嵌套函数function foo() { function aa() { function bb() { function cc() { // ...一层一层不断向下嵌套 }

2021-03-20 13:59:44 106

原创 深入理解JS的变量声明提升和函数声明提升

变量声明提升首先是变量的定义,所有没有用var定义就直接赋值的变量都会成为全局变量; 但是如果用var定义了变量,但是没有对其进行赋值,那么变量的初始值就是undefined我们先来看下面的代码:var a = 1;var b = 2;对于这两行代码它的处理过程是:先进行变量的声明:var a;var b;再进行变量的赋值:a = 1;b = 2;变量作用域变量的作用域指的是变量起作用的一个范围。变量分为全局变量和局部变量。全局变量指的是在全局都拥有定义;而局部变量只能在函数

2021-03-19 20:21:06 167

原创 聊一聊JS的执行上下文

JS的代码会按照自上到下的顺序解析执行,例如:var foo = function () { console.log('foo1');}foo(); // foo1var foo = function () { console.log('foo2');}foo(); // foo2如果我们把代码改成这样:function foo(){ console.log('foo1');}foo() //foo2function foo(){

2021-03-19 19:08:00 229

原创 前端每日一题(一)

[1, 2, 3].map(num => { if (typeof num === 'number') return; return num * 2;})A: []B: [null, null, null]C: [undefined, undefined, undefined]D: [ 3 x empty ]本题的答案应该是C,对数组进行映射的时候,num就是当前循环到的元素。 在这个例子中,所有的映射都是number类型, 所以if中的判断typeof num

2021-03-19 18:23:16 226

原创 事件绑定和事件监听的区别

<!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <title>事件绑定与监听的区别</title> </head> <body> <button id="btnA">按钮A</button> <button id="btnB">按钮B</button>

2021-03-11 21:53:24 618

原创 this指向

this指向一直对我来说是比较头疼的问题,时不时会在这个上面踩坑,每次都要查各种资料然后才找到问题,每次找又比较麻烦,所以今天我打算自己整理一下 关于this指向 的问题。首先,普通函数,this的概念是:this是JavaScript的一个关键字,他是指函数执行过程中,自动生成的一个内部对象,是指当前的对象,只在当前函数内部使用。(this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this指向的是window;当函数被作为某个对象的方法调用时,this就等于那个对象)this的指向在函

2021-03-11 21:45:27 88

原创 关于let const var总结

1. var我们最常见的就是用var这个指令来声明一个变量;而且,在JS中,只存在全局作用域和函数作用域。1.var定义的变量没有块级作用域2.对于var声明的一个变量,它具有提升机制3.var声明的变量可以跨块访问, 不能跨函数访问例子:关于 let 、const,我们知道这是es6新增的语法。2. letlet与var类似,它也是用来声明变量的;1.let定义的变量,有块级作用域,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。例:2. let不存在变量提升3.

2021-03-07 19:07:23 200

空空如也

空空如也

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

TA关注的人

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