自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构与算法】用两个栈实现一个队列

如现有一个队列,入队顺序是 A B C,出队顺序也是 A B C,用两个栈 stack1、stack2 实现入队、出队。由于栈是先进后出,所以需要在A B C分别入栈 stack1 后,再将 stack1 每个元素pop 出栈且入栈 stack2 ,接着将 stack2 进行pop 操作,此时 A 出栈。用数组可以实现队列,数组和队列的区别是:队列是逻辑结构是一个抽象模型,简单地可以用数组、链表实现,所以数组和链表是一个物理结构,队列是一个逻辑结构。队列的特性:先进先出。

2024-04-16 14:58:14 348

原创 【数据结构与算法】判断字符串是否括号匹配

栈是一种逻辑结构,理论模型,不管如何实现,都不受任何语言的限制。数组是一个物理结构,真实的功能实现,受限于编程语言。时间复杂度 O(n) 空间复杂度 O(n)

2024-03-28 17:23:07 317

原创 【数据结构与算法】将一个数组旋转 k 步

【代码】【数据结构与算法】题目1:将一个数组旋转 k 步。

2024-03-28 15:55:26 187

原创 【数据结构与算法】算法复杂度

前端领域需要程序运行更快,重时间轻空间,因为运行在浏览器上,所以内存空间是共用的。

2024-03-22 17:06:57 315

原创 【Vue】render jsx 条件判断、v-html处理

render jsx 条件判断、v-html处理

2023-01-31 18:35:11 1055

原创 【Electron】MacOS系统区分Dock菜单退出和点击X退出

main.jslet willQuitApp = false;app.on('ready', () => {// 阻止默认退出事件改为最小化到托盘 win.on('close', event => { console.log('win close', willQuitApp); // 判断非显式调用app.quit触发的close事件作最小化到托盘处理 if (!willQuitApp) { event.preventDefault(); .

2022-05-09 14:23:04 1609

原创 【TS】类的定义、继承、访问类型、constractor、getter、setter

类的定义与实例化、类的继承、类的访问类型、构造函数、Getter、Setter、抽象类

2022-01-19 10:42:06 1594 1

原创 【前端自动化测试】浅谈前端自动化测试及Jest框架

一、前端自动化测试产生的背景及原理对于前端开发人员来讲,日常开发面对的bug类型主要有:安全性、逻辑、性能、UI/交互等,特别是复杂场景或老项目修改。bug本身并不可怕,可怕的是带着bug上线,为了防止bug上线,codereview、测试团队介入排队代码潜在的问题、灰度发布机制帮助我们做局部验证。 目前前端团队已经通过TypeScript、Flow、EsLint、StyleLint、Sonar 有效提高前端代码质量,而前端自动化测试可以帮我们进一步避免bug的产生,写...

2021-12-03 16:42:55 388

原创 【Vue】项目自动创建文件以及路由

"scripts": { ... "new": "node .electron-vue/bin/newPage", ...}.electron-vue/bin/newPage.js/** * 创建组件 * 命令: npm run new 【moduleName@moduleName@moduleName】 pageName 【module中文名@module中文名】 * 作用: * 1、创建页面文件,并添加到路由 * 2、moduleName@moduleNa.

2021-11-29 15:50:44 925

原创 【eslint】规则问题汇总,兼容prettier函数后空格等规则

一、eslint 规则【no-new】Do not use 'new' for side effects.禁止使用new不将结果对象分配给变量的关键字的构造函数调用来维护一致性和约定。使用new构造函数的目标通常是创建特定类型的对象并将该对象存储在变量中/*eslint no-new: "error"*/// Badnew Thing();// Goodvar thing = new Thing();Thing();.eslintrc.jsmodule...

2021-11-25 16:31:28 7972

原创 【React】dva 绑定 State 到 View

mapStateToProps 函数会返回一个对象,用于建立 State 到 Props 的映射关系。state.[namespace],也就是说与model的namespace保持一致,否则取值失败返回undefinedDataSync.tsximport React, { Component } from 'react';import { message, Row, Col,Spin, Card, Button } from 'antd';import { MenuUnfoldOut..

2021-11-04 17:37:43 1023

原创 【React】antd上传文件组件customRequest自定义上传解析

import React, { Component } from 'react'import { Form, Row, Col, Input, Button, Select, Radio, Upload, message } from 'antd'import styles from '../../index.less'import _ from 'lodash';import { LoadingOutlined, PlusOutlined } from '@ant-design/icons';.

2021-10-26 18:17:26 3138

原创 【微信公众号】微信扫一扫,条形码/一维码,二维码功能解析

api.jsgetSignatureInfo: (params) => fetch({ url: '/management-system/api/v1/wechat/signature', params, method: 'post', }),wx-tool.jsimport wx from 'weixin-js-sdk';import api from '@/api';class WxTool { constr..

2021-09-26 14:23:01 2816

原创 Mac Chrome 安装插件(无VPN)

1、将插件解压,打开Chorme扩展程序2、加载已解压的扩展程序2、复制新增的扩展程序id4、应用程序——chrome——右键——显示包内容——contents——info.plist红框部分为你新增扩展程序的id,代码如下:<key>ExtensionInstallWhitelist</key> <array> <string>新增扩展程序id</string> ...

2021-09-03 18:09:56 2625

原创 【React】React 的生命周期函数及其应用场景

什么是生命周期函数?生命周期函数是指在某一时刻,组件会自动调用执行的函数。组件挂载(Mounting):1、componentWillMount:在组件即将被挂载到页面的时刻被执行,且执行一次;2、render:在组件挂载时被执行,并不负责渲染;3、componentDidMount:在组件被挂载到页面之后被执行,且执行一次;组件更新(Updation):组件更新发生在props和states发生改变的情况下,...

2021-09-02 11:40:41 822

原创 【TS】泛型 Generics

泛型Generics,是指在定义函数Function、接口Interface 或类 Class 时不预先指定具体的类型,而是在使用的时候再指定类型的一种特征。// 函数名后的 <> 内传入泛型参数,在使用时指定类型function echo<T>(arg: T): T { return arg}const str: string = 'str'const result = echo(str) //类型推论会推论出参数的类型泛型可以看作是类型变量,它是一种特

2021-08-02 17:36:07 279

原创 【TS】类型别名和类型推断

在TS中凡是在冒号: 后面的都是在声明类型和实际业务逻辑并无关系,是对参数和返回值类型约束的写法。?标识符表示可选,可选参数需置后。添加默认值的参数也会自动识别为可选参数。function add(x: number, y: number, z?: number, q: number = 10): number { if(typeof z === 'number'){ return x + y + z }else { return x + y

2021-07-30 14:41:19 1088

原创 【TS】Interface接口

在TypeScript里,接口的作用就是定义Object类型,非常灵活有以下功能:对对象(object)的形状(shape)进行描述。如属性、方法; 对类(class)进行抽象。在面向对象语言中较为常见; Duck Typing(鸭子类型)。如果某东西具有鸭子的特性,就可以将它看作鸭子,是动态编程语言中对象的一种推断策略,更关注对象如何被使用,而不是对象的类型本身。interface IPerson { readonly id: number; //readonly 只读属性 n

2021-07-29 18:17:10 1055

原创 【TS】typescript中的基本数据类型、Array及其声明方式

1、booleanlet isDone: boolean = false2、numberlet age: number = 567let binaryNumber: number = 0b1111 //二进制3、stringlet firstName: string = 'viking'let message: string = `Hello, ${firstName}, age is ${age}`4、nulllet n: null = null5、un

2021-07-29 18:01:31 1906

转载 【JS】undefined与null的区别

大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?一、相似性在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。var a = undefined;var a = null;上面代码中,a变量分别被赋值为undefined和null,这两种写法几乎等价。u

2021-07-29 17:09:25 114

原创 【JS】Axios取消未完成请求解决Tab频繁切换数据问题

一、场景描述Tab切换频率较低、数据返回速度理想的情况下,几乎不用考虑这个问题。切换频率高如果不处理未完成的请求不仅会严重影响页面性能,由于浏览器并发请求限制,也可能会造成后续请求超时。另外一个较为直观的业务影响是,频繁切换也会造成数据渲染错误,如下图:当前已切换到待付款,但是渲染的数据是前面请求的已完成的数据。二、解决方案原理:利用 Javascript XMLHttpRequest 对象上的 abort 方法,终止已发出的请求。MDN上关于此方法的解释:当一个请求被终止,它的 r...

2021-06-02 15:33:15 3261

原创 【内网穿透】NATAPP内网穿透详解

1、注册NATAPP并申请免费隧道https://natapp.cn/2、下载NATAPPhttps://natapp.cn/#download3、授权 解压完成后是一个文件,需要授权才能使NATAPP可运行,cd 到解压文件所在目录,授权命令行chmod a+x natapp4、运行NATAPPauthtoken获取方法:./natapp -authtoken=xxxxxxxxxx问题解决:InvalidHostheadervue.config...

2021-05-27 13:01:15 900

原创 【JS】详解JS精度丢失原理以及业务中价格计算引入数学库 Math.js的使用场景

一、JS为什么会出现精度丢失问题1、JS基本数据类型 Number 在内存中是怎么存储的?JS中的Number类型使用的是双精度浮点型,也就是其他语言中的double类型。在计算机内存中,单精度数是用32个 bit 来存储的浮点数,双精度数是使用64个 bit 来存储的浮点数。其中有1位符号位 (+/-),11位表示指数位(次方数),52位表示数值位(精确度) 内存结构如下:在ES规范中规定e的范围在-1074 ~ 971,而m能表示的最大数是52个1,最小能表示的是1。计算机中存储小数是.

2021-03-03 15:57:55 2023

原创 【Vue】自定义指令权限校验

main.js//自定义按钮权限指令 例:v-getauth="'CGRK_SHD_XJ_TJ'" 值需要加单引号,不然会去实例的data中查找该变量。且加单引号之后才能从 binding.value 上拿到传参Vue.directive('getauth', { //此时不能使用bind钩子函数,否则会找不到父元素影响接下来取父元素的操作 inserted: ((el, binding) => { if(store.state.users.user.isAdm.

2021-02-09 17:56:37 442

原创 【React】配置 Alias 别名

在src根目录新建config-overrides.js自定义webpack配置。安装 customize-cranpm install customize-craconst { override, addWebpackAlias } = require('customize-cra');const path = require('path')module.exports = override( addWebpackAlias({ '@': path.resol..

2020-09-03 16:49:16 1771

原创 【Vue + ElementUI】完美解决 el-progress percentage 超过100报错及百分比格式化显示处理

<el-progress :percentage="computedPercentage(scope.row) >= 100 ? 100 : computedPercentage(scope.row)" :format="computedPercentage(scope.row, 1)"></el-progress>computedPercentage(row, format){ if(!row.yearComplete || !row.yearTarget.

2020-08-24 14:55:24 9121

原创 【Linux】vim 文书编辑模式

vi file 进入vim编辑模式i 编辑编辑完成后ESC 切换到命令模式:w 保存文件,不退出 vim。:w file 将修改另外保存到 file 中,不退出 vim。:w! 强制保存,不退出 vim 。:wq 保存文件,退出 vim。:wq!...

2020-04-09 11:21:42 136

原创 【Vue + ElementUI】el-date-picker 日期选择控制 配置最早开始日期

<el-date-picker v-model="followadd.nextFollowTime" type="date" placeholder="选择日期" style="width: 100%;" ...

2020-03-27 22:30:17 825

原创 【Vue + ElementUI】cascader 回显

这里由于服务端入库需要传入string(其实是服务端那大哥懒得改,我也懒得费嘴了,不如自己写来得快)使用cascader级联选择器最终选择的lable,编辑操作回显写了一个map方法获取id 再 Push到array再updata v-model 实现。目前只支持两级,后期可以写一个递归函数以达到多级处理回显。cascader v-model只接收一个Array类型才支持回显<el-...

2020-03-27 11:28:30 1707

原创 【Sublime Text3】优秀的ST3插件

1、Git Confilict Resolver 快速查找git代码冲突{ "keys": ["ctrl+alt+f"], "command": "find_next_conflict" }, { "keys": ["ctrl+alt+o"], "command": "keep", "args": { "keep": "ours" } }, { "keys": ["ctrl+alt+t...

2020-03-24 09:43:41 194

原创 【Vue+elementUI】el-table实现跨页selection及翻页记忆回显

<template> <div class="newcom-wrap"> <el-table ref="multipleTable" :data="newComList.list" tooltip-effect="dark" @selection-change="handleSelectionChange" :row-key=...

2020-03-21 21:04:36 2526 3

原创 【Vue】filter 封装

filter.js/** * Created by ZOE on 20/03/18 *//** format template String * ellipsis 字符串切割 * transDateSub 截取时间戳(10位) * * * */import { parseTime} from '@/utils/index'const filters = { ...

2020-03-18 22:20:15 211

原创 【Vue+elementUI】el-dropdown 添加click事件

<el-dropdown v-show="scope.row.clueRemind == 2" class="tip-sales" @command="handleCommand" @click.native="beforeHandleCommand(scope.row.id)"> <span class="el-dropdown-link"> 提醒...

2020-03-18 22:16:53 869

原创 【Vue+elementUI】el-select 同时获取value和label方法

<el-select v-model="distributionForm.userId" placeholder="请选择子帐户"> <el-option v-for="item in subAccount" :label="item.realName" :key="item.id" :value="item.id"></el-option></...

2020-03-18 14:04:00 1371

原创 【Vue】Vue Router导航守卫 Maximum call stack size exceeded next path 解决方案

全局前置导航守卫中需要调用next()方法来resolve这个钩子,可以通过往next()里传入如:replace:true 、name:'home' 执行结果依赖next方法的调用参数。 当配置 next() 时会出现死循环或路由栈溢出,原因是当执行钩子函数时,如果遇到next('/home'),会触发离开的钩子,然后再次触发前置导航钩子,此时 to.path...

2020-03-16 00:49:31 3724

原创 【Sumblime Text】开启双/多屏显示同一个代码文件

打开要双屏显示的代码文件(横向): Alt+F+E 克隆文件 Alt + Shift + 2 (3,4,5)分出多个屏幕鼠标将克隆出来的文件拖至其它分屏竖向分屏:...

2020-03-14 17:27:40 568

原创 【Linux】Linux 常用命令

cd / 进入根目录rz上传文件(linux默认可以解压ZIP格式包,RAR需安装工具支持)unzip wwwroot.zip 把/home目录下面的wwwroot.zip直接解压到/home目录里面

2020-03-13 14:15:12 109

原创 【JS字符串】JS字符串方法整理

方法 描述 参数说明 返回值 charAt(index) 返回指定索引位置的字符 index:必需。表示字符串中某个位置的数字,即字符在字符串中的位置。 返回在指定位置的字符。 charCodeAt(index) 返回指定索引位置字符的 Unicode 值 index:必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 返回在指...

2020-01-06 22:53:38 256

原创 【JS数组】JS数组方法整理

ES6数组新增方法与ES5对比 方法 描述 改变原数组 返回值 参数说明 push() 在数组尾部追加元素 是 新的数组长度 pop() 删除(弹出)数组最后一个元素 是 被删除的元素 unshift() 在数组头部添加...

2020-01-03 00:31:16 398

原创 【Node】CommonJS二三事

CommonJS 特性每个文件是一个模块,有自己的作用域 在模块内部 module 变量代表模块本身 module.exports 属性代表模块对外接口require 规则 / 表示绝对路径, ./ 表示相对于当前文件 支持js、json、node扩展名,不写时会依次尝试 不写路径则认为是build-in 模块或者各级 node_modules 内的第三模块 ...

2019-12-03 19:25:58 124

空空如也

空空如也

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

TA关注的人

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