自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指 Offer 06. 从尾到头打印链表

从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1] // 方法一: 额外空间 function reversePrint(head) { let newArr = []; let p = head; while (p && p.val !== null) { newArr.unshift(p);

2022-03-12 21:49:47 763

原创 03. 替换空格

3. 替换空格题目描述 将一个字符串中的空格替换成 “%20”。Input: "A B" Output: "A%20B"'思路 : 额外空间法let testStr = "We are happy."function replaceSpace(str) { let arr = str.split(''); let newStr = []; for (let i = 0; i < arr.length; i++) { if (arr[i] ===

2022-03-12 21:39:13 164

原创 02.二维数组的查找

02.二维数组的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 t

2022-03-12 21:19:43 257

原创 js复习题(上)

1.cookie的优缺点优点:数据持久性。不需要任何服务器资源。 Cookie 存储在客户端并在发送后由服务器读取。可配置到期规则`。 控制 cookie 的生命期,使之不会永远有效。偷盗者很可 能拿到一个过期的 cookie 。简单性。 基于文本的轻量结构。通过良好的编程,控制保存在 cookie 中的 session 对象的大小。通过加密和安全传输技术( SSL ),减少 cookie 被破解的可能性。 只在 cookie 中存放不敏感数据,即使被盗也不会有重大损失。缺点:Coo

2022-03-10 00:36:50 315

原创 浏览器面试题

1. 不同标签页通讯本质原理就是去运用一些可以 共享的中间介质,因此比较常用的有 以下方法通过父页面window.open()和子页面postMessage异步下,通过 window.open('about: blank')和 tab.location.href = ‘*’ 设置同域下共享的 localStorage 与监听 window.onstorage重复写入相同的值无法触发 , 会受到浏览器隐身模式等的限制设置共享 cookie与不断轮询脏检查(setInterval)借助服务端或者中

2022-03-08 21:11:37 514

原创 Vue-router 实现权限控制

1.路由元信息(meta)如果一个网站有不同的角色,比如 管理员 和 普通用户 ,要求不同的角色能访问的页面是不一样的这个时候我们就可以 把所有的页面都放在路由表里 ,只要 在访问的时候判断一下角色权限 。如果有权限就让访问,没有权限的话就拒绝访问,跳转到404页面vue-router 在构建路由时提供了元信息 meta 配置接口,我们可以在元信息中添加路由对应的权限,然后在路由守卫中检查相关权限,控制其路由跳转。可以在每一个路由的 meta 属性里,将能访问该路由的角色添加到 roles 里。用户

2022-03-08 14:51:30 4102

原创 html面试题篇

1.html语义化定义:正确的标签来做正确的事原因:可访问性:帮助辅助技术更好的阅读和转译你的网页可检索性:提高搜索引擎的有效爬取,提高网站流量国际化:全各国开发 者更容易弄懂你网页的结构差异性: 减少网页间的差异性,帮助其他开发者了解你网页的结构,方便后期开发和维护2.你用过哪些 HTML5 标签表示结构<header> <nav> <main> <article> <section> <aside> &lt

2022-03-05 20:48:40 106

原创 理解ES6中的Map与Set

JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。为了解决这个问题,最新的ES6规范引入了新的数据类型Map。测试浏览器是否支持Map与Set'use strict' let a = new Map(); let b = new Set(); console.log("你的浏览器支持Map与Set");MapMap是一组键值对的结构,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现

2022-03-03 17:04:54 84

原创 JS复习题(二)

JS复习题 二16.类型转换17.类型判断18.模块化19.防抖与节流20.函数执行改变 this21.异步解决方案22.AST23.babel编译原理24.函数柯里化25.get与post28.类的创建和继承29.事件1.事件流2.冒泡机制3.捕获机制4.先冒泡后捕获5.事件委托30.懒加载和预加载31.mouseover 和 mouseenter 的区别16.类型转换JS 中在使用运算符号或者对比符时,会自带隐式转换数字 + 字符串 = 字符串let a = 123 + "456"; //"

2022-01-28 00:04:47 844

原创 Vite+TS搭建项目

1.搭建vite项目1.安装vitenpm i -g create-vite-app2.创建vite项目create-vite-app vue3-demo3.安装依赖npm install4.运行项目npm run dev2.配置TS环境使用vite搭建好的项目是没有使用typescript的,所以我们要去安装typescript并修改代码,以保证我们后续可以使用typescript1.安装TSnpm install typescript2.在项目的根目录创建文件:tsconfi

2022-01-12 21:21:04 2599

原创 http状态码

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):1** 信息,服务器收到请求,需要请求者继续执行操作1xx 状态码描述100客户端应继续其请求101Switching Protocols 切换协议2** 成功,操作被成功接收并处理2xx 状态码描述200OK 请求

2022-01-02 00:11:52 59

原创 mockjs

1.安装npm i mockjs --save2.新建mock.js3.引入(main.js)import { createApp } from 'vue'import App from './App.vue'import ('./mock/mock.js');const app = createApp(App);app.mount('#app')4.使用/* 模拟后台接口格式: Mock.mock("请求的URL地址", { "数据对象" }) Mock.mock()的方

2021-12-29 20:34:06 159

原创 axios二次封装

import axios from ‘axios’;// 判定开发模式if (process.env.NODE_ENV == ‘development’) {axios.defaults.baseURL = ‘/api’;} else if (process.env.NODE_ENV == ‘debug’) {axios.defaults.baseURL = ‘http://v.juhe.cn’;} else if (process.env.NODE_ENV == ‘production’) {

2021-12-29 20:29:24 421

原创 js垃圾回收

1.概念JS会在创建变量时自动分配内存,在不使用的时候会自动周期性的释放内存,释放的过程就叫 “垃圾回收”。优点:自动分配内存减轻了开发者的负担,开发者不用过多的去关注内存使缺点:因为是自动回收,所以如果不清楚回收的机制,会很容易造成混乱,而混乱就很容易造成"内存泄漏".由于是自动回收,所以就存在一个 “内存是否需要被回收的” 的问题,2.回收算法2.1 标记清理步骤1.变量进入上下文,会加上标记,证明其存在于该上下文;2.将所有在上下文中的变量以及上下文中被访问引用的变量标记去掉,表明这

2021-12-01 13:47:15 772

原创 js的async与await

async与await1.async2.await3.在程序中加入非阻塞的暂停1.asyncasync关键字可以让函数具有异步特征,但总体仍是同步求值async function foo() { console.log(1);}foo();console.log(2); //1 22.awaitawait关键字,会记录在哪里暂停执行,等到await右边的值可用了,JS运行时会向消息队列中推送一个任务,然后恢复异步函数的执行async function foo2() {

2021-11-26 14:33:18 205

原创 js执行上下文与执行栈

1.什么是执行上下文?当前执行环境中的变量、函数声明,参数(arguments),作用域链,this等信息。分为全局执行上下文、函数执行上下文,其区别在于全局执行上下文只有一个,函数执行上下文在每次调用函数时候会创建一个新的函数执行上下文。2.执行上下文的类型javascript 中有三种执行上下文类型,分别是:全局执行上下文——只有一个,浏览器中的全局对象就是 window 对象,this 指向这个全局对象。。函数执行上下文——存在无数个,只有在函数被调用的时候才会被创建,每次调用函数都会创建

2021-11-24 19:42:36 787

原创 js数据类型转换

1.任意类型转换为字符串1、x.toString(S要大写)这种方法可以将number,boolean,object转化为字符串,但是无法转换null,undefined这两种数据类型(1).toString()"1"true.toString()"true"var obj={}(obj).toString()"[object Object]"2、String(x)(S要大写)String(x)是一个全局函数,功能更强大可以转换基本上所有类型为字符串String(1)"1"

2021-11-23 18:20:29 477

原创 Var,Let 和 Const 的区别

1.Var,Let 和 Const 有什么区别?1.1varJs没有块级作用域:在JS函数中的var声明,其作用域是函数体的全部。明明已经跳出 for 循环了,却还可以访问到 for 循环内定义的变量 a ,甚至连 i 都可以被放访问到 for(var i=0;i<10;i++){ var a = 'a'; } console.log(a);循环内变量过度共享:控制台输出了3个3,而不是预想的 0、1、2。原因 : 循环本身及三次 timeout

2021-11-23 18:10:10 516

原创 mongoDB

1. 在官网安装mongoDB和可视化工具2.配置系统环境变量2.在D盘建文件夹存放数据3.配置命令用于切换存放数据的命令,以管理员身份运行mongod --dbpath D:\data\db5.教程https://www.tizi365.com/topic/61.html

2021-11-22 16:43:05 86

原创 js重绘与回流

关于js的重绘与回流1.浏览器的渲染过程解析生成DOM Tree(此时包含所有节点,包括display:none);根据CSS Object Module(CCSSOM)计算节点的几何属性(坐标和大小)(margin,pading,height,width等),生成Render Tree(不包含display: none的节点);这一过程叫回流或者布局;在Render Tree进一步渲染其它属性。如:color等。2.重绘重绘(repaint):当元素样式的改变不影响布局时,浏览器将使用重绘

2021-11-20 21:53:11 1468

原创 vuex教程

1.vue是什么?它是一个程序里面的状态管理模式,它是集中式存储所有组件的状态的小仓库,并且保持我们存储的状态以一种可以预测的方式发生变化。2. 什么时候用vuex呢?如果你不需要开发大型的单页应用,此时你完全没有必要使用vuex,比如你的页面就两三个,使用vuex后增加的文件比你现在的页面还要多,那就没这个必要了。假如你的项目达到了中大型应用的规模,此时您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。3.vuex流程4.使用uex4.1安装npm ins

2021-11-17 16:30:02 247

原创 前后端分离登录

1.http无协议因为HTTP是无状态的协议,也就是说,这个协议是无法记录用户访问状态的,其每次请求都是独立的无关联的,一笔是一笔。而我们的网站都是设计成多个页面的,所在页面跳转过程中我们需要知道用户的状态,尤其是用户登录的状态,这样我们在页面跳转后我们才知道是否可以让用户有权限来操作一些功能或是查看一些数据。所以,我们每个页面都需要对用户的身份进行认证。为了实现这一功能,用得最多的技术就是浏览器的cookie,我们会把用户登录的信息存放在客户端的cookie里,这样,我们每个页面都从这个cookie里

2021-11-16 20:05:20 3936

原创 脚手架常用命令

1.Vue31.安装脚手架npm install -g @vue/cli2.初始化项目vue create my-project3.启动项目npm run serve(yarn serve)4.打包上线npm run build5.路由安装npm install vue-router@next --save安装一些依赖有问题,可能由于版本不够,可以在命令后面加上@next2.Vite1.安装vitenpm i -g create-vite-app2.创建vite项目creat

2021-11-16 15:12:44 1834

原创 nodejs核心API

nodejs核心API1.Buffer对象(不需要引入)2.fs模块2.1 同步和异步读取2.2 同步写入2.3异步写入2.4copy实现2.5 读入流和写入流2.6 pipe3.http服务器1.Buffer对象(不需要引入)Bufferd对象用途:以二进制流进行数据的传送传递1.三种创建方式(类似于数组的创建,用16进制存储)let buf1 = Buffer.alloc(20, 13);console.log(buf1);2.不确定大小,内部可能有脏数据let buf2 =

2021-11-08 20:50:38 519

原创 Vue组件化

1.全局组件<!-- 首页 --> <div id="home"> <span>首页</span> <button-counter></button-counter> </div>//注册全局组件 app.component('button-counter', { data() { retur

2021-11-08 20:37:12 99

原创 Vue-cli3配置项

1."export ‘createRouter’ was not found in 'vue-router’报错出现这样的报错是因为我们使用的vue-router包不对,安装了2.x版本的,因为我们现在开发使用的是vue3,所以也要对应安装vue3版本的vue-router包。我们只需要将之前安装的 vue-router包卸载,然后重新安装vue3的vue-router包。// 卸载 vue2.x 的vue-routernpm uninstall vue-router --save// 安装 vue

2021-11-01 20:17:57 141

原创 axios+Promise封装request请求

1.axios全局配置axios.defaults.baseURL = 'http://127.0.0.1:8888';axios.defaults.timeout = 5000; //超时时间axios.defaults.headers.post['Content - Type'] = 'application/json;charset=UTF-8';2.axios请求拦截axios.interceptors.request.use((config) => { // 拦截成功on

2021-10-17 18:22:20 200

原创 vue3封装Button组件

Button.vue<template> <!-- 控制按钮显示不同样式 --> <button @click="handleClick" :class="[ type ? 'button-' + type : '', 'button_init', { 'is-plain': plain, 'is-circle': circle, }, ]" >

2021-10-15 16:47:48 668

原创 java实验.二

java实验.二public class Computer { private String name; private String color; private Number price; // 定义私有属性 public Computer(String name,String color,Number price){ this.name = name; this.color = color; this

2021-10-14 15:41:01 168

原创 Object

1.对象类型1.内建对象由ES标准中定义的对象,在任何的ES的实现中都可以使用比如:Math String Number Boolean Function Object…2.宿主对象由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象比如 BOM DOM3.自定义对象由开发人员自己创建的对象2.创建对象1.构造函数let obj = new Object();obj.name = "张三";obj.age = 18;2.对象字面量let person = { n

2021-10-13 21:33:44 51

原创 vue3封装tabbar组件

tabbar组件tabbarItem接收选项参数1.tabbarItem.vue2.tabbar.vue3.router.js4.main.js5.使用示例(App.vue)6.效果tabbarItem接收选项参数1.path(路由页面path)type:String2.selectedColor(选中文字颜色)type:String1.tabbarItem.vue<template> <div id="tabbar-item" @click="itemClick"&

2021-10-13 19:26:22 491 2

原创 Vue-Router

1.router.js// 1.引入import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router';/* import Home from '../components/Home.vue';import Mine from '../components/Mine.vue';import News from '../components/News.vue'; */// 路由懒加载const

2021-10-13 13:35:47 99

原创 vue3新特性

1.mixin作用:定义一些公共的数据和方法,在多个组件都可以进行使用1.1mixin初体验 // 定义一个Mixin对象(可以放任何东西) const myMixin = { data() { return { msg: "张三", } }, methods: { hello() { alert("hel

2021-10-06 16:37:23 231

原创 Promise

11.1 异步编程11.1.1 同步与异步同步行为对应内存中顺序执行的处理器指令。let x = 3; x = x + 4;异步行为类似于系统中断,即当前进程外部的实体可以触发代码执行let x = 3; setTimeout(() => x = x + 4, 1000);11.2 期约11.2.1 期约基础ECMAScript 6 新增的引用类型 Promise,可以通过 new 操作符来实例化。创建新期约时需要传入执行器(executor)函数作为参数let p = n

2021-09-27 14:28:59 158

空空如也

空空如也

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

TA关注的人

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