自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 VueRouter路由守卫

最近学习一个商城项目的时候出现了一个请求,就是当我点击个人主页的时候,如果已经登陆并且没有超时的情况下会跳转到个人中心,但是如果没有登陆,或者登录超时了,那么就会跳转到登录界面,需要完成这个需求我们就必须使用路由守卫。然后1.路由守卫是什么?路由守卫简单的来说就是路由在跳转的时候所触发的一些钩子函数2.导航守卫的分类1)全局前置守卫——发生在路由跳转前当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中。co.

2021-04-03 21:10:08 470

原创 关于React事件处理函数中this的指向问题

问题出现:我们在给比如按钮绑定点击事件函数的时候,我们在事件函数中使用this的时候会报错,这是由于this.xxx是undefined。通过阅读了几篇博客之后我明白这并不是React这个框架的原因,这是JS的一个机制问题。问题分析:我们之前所知道的是,JS中对象调用方法的时候,方法中的this指向的是调用对象letobj={ tmp:'Yes!', testLog:function(){ console.log(this.tmp);...

2021-03-27 11:10:35 417

原创 面试题目总结——剑指Offer

1.数组中重复的数字/** * @param {number[]} nums * @return {number} */var findRepeatNumber = function(nums) { let s=new Set(); for(let i=0;i<nums.length;i++){ if(!s.has(nums[i])){ s.add(nums[i]); }else{ ret

2021-02-19 00:53:28 232

原创 面试题目总结——股票问题

买卖股票的最佳时机系列问题1.总共只买卖一次股票var maxProfit = function(prices) { let ans=0,minNum=prices[0]; for(let i=1;i<prices.length;i++){ ans=Math.max(ans,prices[i]-minNum); minNum=Math.min(minNum,prices[i]); } return ans;};2.不限制股

2020-12-14 16:00:41 320 1

原创 Promise的使用

1.Promise出现的背景——回调地狱我们在多次进行异步操作的时候会很难控制程序的进程,比如fs.readFile(path1,'utf8',function(err,data){if(err){console.log(err)}else{console.log(data)}});fs.readFile(path2,'utf8',function(err,data){if(err){console.log(err)}else{console.log(data)}});

2020-12-03 23:35:36 171

原创 Node.js简单的调用Mysql数据库

1.安装Mysql数据库2.创建连接let mysql=require('mysql');let connection=mysql.createConnection({ host:'localhost', user:'me', password:'secret', database:'my_db'});3.连接数据库connection.connect();4.执行数据操作connection.query('SELECT 1+1 AS s

2020-12-03 15:32:51 225

原创 Node.js调用MongoDB数据库

1.我们在使用Node.js调用MongonDB数据库的时候最好借用第三方库mongoose2.基础步骤(1)连接MongoDB数据库,指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来,就是localhost/xxxx,xxxx就是数据库的名字let mongoose=require('mongoose');let Schema=mongoose.Schema;mongoose.connect('mongodb://localhost/test',{useNewUrlP

2020-12-03 14:48:42 338

原创 Node.js使用第三方Express

1.使用Express发送简单的网络请求let express=require('express');//创建你服务器应用程序,相当于原来的http.createServerlet app=express();//公开指定目录,只要这样做了,我们就可以直接通过/public/xxx的方式访问public目录中的所有资源了//第一个指定的参数xxx是通过链接xxx开头的访问第二个参数文件夹中的文件,相当于起了一个别名app.use('/public/',express.static('./pu

2020-11-29 10:40:33 197 1

原创 Node.js使用模板引擎

art-template可以在浏览器中使用,也可以在Node后端开发中使用,下面只是简单的演示一下,以后有机会会更加系统的学习1.浏览器中使用模板<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> &.

2020-11-16 23:14:17 155

原创 Node.js加载模块与响应内容类型

1.require是一个方法,他的作用是用来加载模块的一般用法:1)加载文件模块并执行里面的代码2)拿到被加载的模块导出的接口对象2.Node.js的模块有三种1)具名的核心模块2)用户自己编写的文件模块3)第三方模块引用文件的主文件console.log('下面演示加载a.js文件')let getExport=require('./a')console.log('结束演示')被引用的文件console.log('a.js文件被调用')3.

2020-11-15 22:16:56 112

原创 Node.js简单的网络服务

1.在Node中专门提供了一个核心模块:http,http这个模块的职责就是帮你创建服务器2.搭建服务器的简单步骤1)加载http核心模块2)使用http.createServer方法创建一个Web服务器,此方法会返回一个server实例3)注册request请求事件,当客户端请求过来,就会自动触发服务器的request请求事件,然后执行第二个参数:回调处理函数4)绑定端口号,启动服务器response对象的write方法可以用来给客户端发送响应数据,最后一定要使用end来结束响应,

2020-11-14 20:35:17 128

原创 Node.js读写文件

1.浏览器中的Javascript没有文件操作能力的,但是Node中的Javascript具有文件操作能力2.读取文件fs是file-system的简写,就是文件系统的意思,在Node中如果想要进行文件操作,就必须引入fs这个核心模块,调用fs.readFile方法读取文件第一个参数就是要读取的文件路径第二个参数就是一个回调函数成功的话,data就是文件中的数据,error是null失败的话,error就是错误对象,data是undefined3.写文件第一个参数:文件路径

2020-11-14 17:21:00 184

原创 Vue学习(十五)——Vuex

Vuex

2020-11-07 23:55:52 154

原创 减治算法——序列中第k大的数字

现在有一个无序序列T,我们现在的需求是寻找其中第k大的一个数字。这种问题我一般就直接sort然后返回了,但是这里使用减治法,我们可以参考之前的快速排序的思路,先把整个数组从轴值划分,但是不用像快排那样对轴值两边的再次划分,只用对下标判断之后对一边进行划分或者得到结果。#include<iostream>#include<vector>using namespace std;//查找一个序列中第k大的元素void Swap(int&a,int&b){

2020-11-06 11:14:17 578 1

原创 Vue学习(十四)——Tabbar组件

整个组件的实现思路是在页面的最底部放置一个tabbar栏,点击对应的tabbar图标就获取对应的页面显示,我们切换页面的显示的操作可以使用前端路由来完成.组件单项:tabbar-item<template><div class="tab-bar-item" @click="itemClick"> <div v-if="!isActive"> <slot name="item-icon"></slot>

2020-11-03 16:07:25 660

原创 减治算法——两个序列的中位数

这种算法与分治算法类似,分治法是把一个大问题分成若干个子问题,分别求解各个子问题,然后再把子问题的解进行合并得到原问题的解。而剪枝法同样是把一个大问题划分成为若干个子问题,但是这些子问题不需要分别求解,只需要求解其中一个子问题,所以也不需要对子问题的解进行合并。所以严格的说减治法是一种退化了的分治法。问题:规定一个长度为n(n>=1)的升序序列S,处在第n/2个位置的数称为序列S的中位数,例如,序列S1={11,13,15,17,19}的中位数是15.两个序列的中位数是他们所有元素的升序序列的

2020-11-03 14:11:16 1625

原创 Vue学习(十三)——路由

1安装vue-router(如果在设置项目的时候已经选择了,就不用了)使用指令npm install vue-router --save2.在模块化工程中使用(1)导入路由对象,并且调用Vue.use(VueRouter)(2)创建路由实例,并且传入路由映射配置(3)在Vue实例中挂在创建的路由实例3.使用vue-router的步骤(1)创建路由组件(2)配置路由映射(3)使用路由:通过标签<router-link><router-view>

2020-10-29 17:27:42 177

原创 Vue学习(十二)——脚手架

1.使用脚手架配置Vue项目(1)脚手架一般在终端操作在vscode中使用终端需要先打开一个控制台(2)修改创建文件的路径在终端使用 cd xxx 命令(3)输入命令 vue init webpack xxxx,xxxx是项目名称,可以任意写(4)等待项目模板加载完毕之后,就开始填写项目信息2.关闭ESlint的标准(1)找到config文件夹(2)找到config文件夹中的index.js文件(3)找到以下属性useEslint,把值改为f.

2020-10-22 23:08:03 123

原创 分治算法——棋盘覆盖问题

整个题目还是分治的思想,由于棋盘是2^k*2^k的,所以我们可以把他平均分成4份,每一份再递归的调用覆盖函数,直到需要覆盖的边长为1,说明只有一个位置,并且该位置放置的是特殊方格。传入的参数中,tr,tc是棋盘的坐标,dr,dc是已经特殊方格的坐标,size是棋盘的边长。覆盖函数的思路就是,从宏观的角度思考,把棋盘分为左上右上,左下右下,如果方格在当前的方位,就递归的覆盖棋盘,如果方格不在当前方位,就把目前围绕整个棋盘中心点的四个方格的当前方位的方格填充,并当作下一次递归的特殊方格。#in..

2020-10-20 16:02:24 580

原创 箭头函数

箭头函数的基础语法: const xxx=(参数列表)=>{ 函数操作 …… return; } const fun=(name,id,height)=>{ document.write("我的序号是"+id+ "我的名字是"+name+ "我的身高是"+height) } fun("马云",1,188)箭头函数的语法糖:(1)函数的代码块中

2020-10-18 21:47:54 449

原创 分治算法——最大子段和问题

最大字段和

2020-10-18 14:49:28 1748

原创 分治算法——数字旋转矩阵

这道题以前就写过,使用的是循环以及判断,最近学习了分治的思想,这个思想其实以前学习归并的时候就大概有个体会,但是最近系统学习了这个思想,有了更加体系的思想。#include<vector>#include<iostream>using namespace std;void Helix_matrix(vector<vector<int>>&mtx,int begin,int size,int number){ if(size==.

2020-10-18 08:28:14 647

原创 canvas绘图——代码雨

带啊吗

2020-10-16 22:55:19 317

原创 Vue学习(十一)——作用域

十一

2020-10-15 23:27:58 1111

原创 算法——快速排序

快速排序

2020-10-14 23:17:25 154

原创 Vue学习——父子组件通信与双向绑定的练习

练习简述:子组件中显示输入框中的数值,有上下两个显示与输入的组合,但是上面是下面的100分之一,下面是上面的100倍。并且在子组件中数值被修改的同时,父组件中的数据也应该被相应的修改。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-s

2020-10-14 21:33:17 183

原创 Vue学习(十)——slot插槽

1.slot的基本使用slot可以被理解为就是一个占位标签,在调用的时候才会被指定为一个特定的标签来代替这个占位标签,调用时只需要在自定义标签中写入已个新的标签就可以指定为该标签了,多写的话就会指定为写入的所有标签放入该位置<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=dev

2020-10-14 20:04:39 121

原创 Vue学习(九)——父子组件的互相访问

1.父组件访问子组件(1)使用this.$children访问子组件数组,不过这样访问的不好之处在于如果我们向子组件数组中插入一个新的组件的时候就会可能出现差错,操作不到我们想要的组件<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-s

2020-10-14 16:49:35 88

原创 Vue学习(八)——组件

1.组件的基本用法——代码复用相当于我自定义了一个标签,以后就可以复用了,但是标签名不能使用驼峰命名法,而且使用ES6的新语法 `字符串`(TAB上面的按键)会更好,组件的构造与声明要在new Vue之前,并且把自定义的标签放在一个根标签中,这个根标签一定要是被Vue管理的一个标签。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name

2020-10-12 23:03:24 137

原创 Vue学习(七)——v-model指令

1.双向绑定<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> </style&g

2020-10-07 22:33:41 166

原创 Vue学习——购物车案例

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> table { .

2020-10-06 21:21:04 165

原创 Vue学习(六)——v-for指令

v-for可以循环数组也可以循环对象<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style>

2020-10-06 16:03:28 1106 1

原创 Vue学习(五)——条件渲染

v-if="xxx",v-else-if="xxx",v-else,这些语句和if,else作用类似,xxx是一个布尔值,判断为真则显示标签。案例:切换输入<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

2020-10-06 09:08:28 167 2

原创 Web页面设计——POLO页面实践

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!--引入清空所有样式的样式文件--> <lin.

2020-10-05 23:01:31 217

原创 Vue学习(五)——v-on指令

1.v-on语法糖v-on:click="函数名",可以简写为@click="函数名"。2.v-on事件监听传参其他情况下,如果函数需要参数,但是我们并没有传参,那么该参数就是undefined类型,但是在Vue中,我们在事件定义时,写方法时省略了小括号,但是方法本身是需要一个参数的(并且只需要一个参数),这个时候,Vue会默认将浏览器生产的event事件对象作为参数传入方法中,比如鼠标点击的数据。如果我们想要在有参数的同时传入event事件对象,我们可以传入:$event,这样就可以得到浏

2020-10-05 22:57:16 514

原创 Vue学习(四)——计算属性

计算属性是computed:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> <

2020-10-05 16:52:59 135

原创 Vue学习(三)——v-bind指令

1.动态绑定链接src="link"或者src="{{link}}"都是不可取的,我们需要通过v-bind属性来动态绑定链接<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>

2020-10-05 15:32:33 610

原创 Vue学习(二)——指令

1.v-once指令该指令表示元素和组件只渲染一次,不会随着数据的改变而改变<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>&

2020-10-04 20:22:41 123

原创 Vue学习(一)——简单的操作Vue

一.Hellow Vueel:属性可以挂载元素,data可以存储变量数据<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>&lt

2020-10-04 19:10:35 91

原创 重新排列单词间的空格

https://leetcode-cn.com/problems/rearrange-spaces-between-words/class Solution {public: string reorderSpaces(string text) { string res; int i=0; int word=0; int len=text.size(); vector<string>sarr;

2020-09-27 23:02:39 201

空空如也

空空如也

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

TA关注的人

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