自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 koa 运用 joi 实现 接口一致性检

import Koa from 'koa';import Joi from 'joi';import Router from '@koa/router';import validateSchemaJoi from './middlewares/schema.js';const app = new Koa();const router = new Router();const loginSchema = Joi.object({ a: Joi.string() .min(3)

2021-11-04 18:20:55 455

原创 数据交换之中介者模式

export default class DataMediator { constructor() { this.store = new Map(); } notify(sender, event, data = undefined) { let res; if (sender && event) { switch (event) { case 'get': res = this.get(sender);

2021-11-04 11:50:38 142

原创 对象类型深层次属性的获取并且能够自定义空状态的返回值

function switchEmpty(caseValue) { let resValue; switch (caseValue) { case 'undefined': resValue = undefined; break; case 'null': resValue = null; break; case 'number': resValue = 0; break; case 'ob

2021-11-04 11:37:21 165

原创 vue 中引用类型数据 watch 监听失效 问题 解决方案

<template> <div> <VueDeepWatch :objectValue="objectValue" :arrayValue="arrayValue" /> </div></template><script>import VueDeepWatch from '@/components/vueDeepWatch.vue'export default { data () { return {

2021-11-04 11:33:38 567

原创 js 中 null 与undefined 的区别总结

null 是对象, 是 JavaScript 保留关键字。null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaNnull表示"没有对象",即该处不应该有值。null的用法是:(1) 作为函数的参数,表示该函数的参数不是对象。 (2) 作为对象原型链的终点。undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。undefined是全局对象(window)的一个特殊属性。undefine用法是:(1)变量被声明了,但

2021-11-04 10:39:20 312

原创 从模板编译到虚拟dom

将html字符串转换为AST(parseHtmlToAst.js)const unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;const attribute = /^\s*([^\s"'<>\/=

2021-07-30 16:07:46 287

原创 excel.js实践(2021-6-25)

import * as ExcelJs from 'exceljs/dist/exceljs';export function jsonToExcel(data) { const tableName = "表名称"; const borderStyle = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' }

2021-06-25 16:32:00 2454

原创 字符串特殊字符加反斜杠(2021-5-26)

stripscript(s) { const str = "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*();—|{}【】‘;:”“'。,、?]"; const pattern = new RegExp(str); let rs = ''; Array.from(s).forEach((char) => { rs += char.replace(pattern, `\\${

2021-05-26 17:31:35 766

原创 基于vuex 的全局组件通信(2021-5-25)

store/index.jsimport Vue from "vue";import Vuex from "vuex";import testModule from "./modules/test";Vue.use(Vuex);export default new Vuex.Store({ state: { user: { name: "", other: undefined }, test: { testInfo: ""

2021-05-25 11:56:13 141

原创 vuetify上传图片组件封装(2021-5-24)

<template> <div> <div class="d-flex flex-wrap "> <div v-for="(item, key) in imgList" :key="key" class="ma-2"> <v-sheet color="white" elevation="1" width="200" :height="showAdd ? 240 : 200"> <v-

2021-05-25 11:55:14 1096 1

原创 node express 使用 Sequelize 操作数据库(2021-5-23)

mysql 链接配置文件const conf = { database: 'node', user: 'root', password: 'xxxxx', options: { host: 'rm-2vcnsje1qrd9c966ago.mysql.cn-chengdu.rds.aliyuncs.com', dialect: 'mysql', define: { charset: 'utf8mb4', dialectOptions: {.

2021-05-23 22:08:01 391 1

原创 node express使用 express-auto-routes 管理路由(2021-5-23)

----app.js// auto-routes配置const autoRoutes = require('express-auto-routes')(app);autoRoutes(path.join(__dirname, './routes'));----模型(位于route目录下)exports.get = async function get(req, res, next) { // const token = req.headers['t-data'] // console.

2021-05-23 22:06:42 211

原创 node express使用 cors 实现跨域 (2021-5-23)

参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS// **** 跨域 *(废弃)***// app.all('*', function (req, res, next) {// res.header("Access-Control-Allow-Origin", "*");// res.header("Access-Control-Allow-Headers", "X-Requested-With, t-data");//

2021-05-23 22:05:30 222 1

原创 2020-5-17(eventBus ----vue)

局部1. 初始化 --单文件初始化 // event-bus.js import Vue from 'vue' export const EventBus = new Vue()2. 引用(单文件) import { EventBus } from "{path}/event-bus.js";3. 方法 // 发送消息 EventBus.$emit("aMsg", '') // 监听接收消息 EventBus.$on("aMsg", (msg) =&g..

2021-05-20 11:35:02 65

原创 2021-5-20 (代码规范)

代码规范VScode配置 (适用于airbnb-base){ "editor.quickSuggestions": { //开启自动显示建议 "other": true, "comments": true, "strings": true }, // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize,一个tab=2个空格 "editor

2021-05-20 11:31:18 142

原创 2021-5-13

js引用对象深度复制 /** * alias: 传入的引用对象 * return: 深度复制后的引用对象 */function aliasObjDeepCopy(alias = undefined) { if (Array.isArray(alias)) { return [...alias]; } if (alias.constructor === Object) { return JSON.parse(JSON.stri

2021-05-13 18:21:18 62

原创 按钮原子化操作数据刷新方法

/** * @param {array} arr 被改变的数组 * @param {object} item 对象数据项 * @param {array} paramName 用于筛选的具有唯一标识的参数名称 * @param {*} param 用于筛选的具有唯一标识的参数 * @param {String} type 可供操作的类型,有 "add","up","del" * @returns {array} 重构后的数据 */const refreshData = functi

2021-05-11 17:29:54 91

原创 ubuntu 云服务器 部署node express 持续化集成docker镜像且开放外网访问 -2021-5-2

使用expresss创建后台框架npm install express --save npm install -g express-generator express my-backed-----配置外网访问-----项目目录/bin/www/文件:server.listen(port);改为:server.listen(port, '0.0.0.0');将代码放入gitee(github)持续集成(以下3个文件相互耦合)docker 镜像构筑文件 node..

2021-05-02 16:06:14 202

原创 2021-4-28 -深层对象(数组)值获取

深层对象(数组)值获取function getDeepDataFromArrOrObj(data, directArr = []) { if (directArr.length === 0) { return data; } const name = directArr.shift(); if (!data[name]) { return name + "子项不存在"; } if (Array.isArray(data[name]) || data[name].co

2021-04-30 16:13:55 302

原创 2021-4-30 -ES6

对象----prototype对象Object.setPrototypeOf(object, prototype) 设置一个对象的prototype(原型)对象Object.getPrototypeOf(obj) 用于读取一个对象的prototype对象----获取该属性的描述对象let obj = { foo: 123 };Object.getOwnPropertyDescriptor(obj, 'foo')--enumerable属性,称为”可枚举性“,如果该属性为false,就表示某些

2021-04-30 16:12:19 56

原创 2021-4-28

特殊字符转正常字符 clearRegExp(s) { var pattern = new RegExp( "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&mdash;—|{}【】‘;:”“'。,、?]" ); var rs = ""; for (var i = 0; i < s.length; i++) { rs = rs + s.substr

2021-04-28 17:52:57 96

原创 2021-4-27

exceljs 使用记录安装官方文档传送门npm install exceljs --save引用import * as ExcelJs from 'exceljs/dist/exceljs';初始化工作表const workbook = new ExcelJs.Workbook(); //创建工作簿workbook.created = new Date(); //设置工作簿创建时间workbook.modified = new Date(); //设置工作簿修改时间w

2021-04-27 16:20:54 118

原创 2021.4.22

父子组件间的数据传递及方法调用父组件通过ref使用子组件的方法并修改子组件数据子组件通过.$parent使用父组件的方法动态修改父组件信息子组件通过watch监听父组件数据变化parent.vue<template> <div class="container"> <input v-model="childrenValue" placeholder="edit me" @change="changeChildData

2021-04-23 18:00:11 76

原创 zabbix学习

zabbix安装安装repo源:rpm -ivh https://mirrors4.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm #下载后repo包会有zabbix.repo文件sed -ri "s#repo.zabbix.com#mirrors4.tuna.tsinghua.edu.cn/zabbix#g" /etc/yum.repos.d/zabbix.repo

2021-01-04 17:23:57 231 4

原创 nginx学习

########### 每个指令必须有分号结束。##################user administrator administrators; #配置用户或者组,默认为nobody nobody。#worker_processes 2; #允许生成的进程数,默认为1#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,serv

2021-01-03 17:38:20 65

原创 linux基本操作记录

uname -a # 查看内核/操作系统/CPU信息\# head -n 1 /etc/issue # 查看操作系统版本\# cat /proc/cpuinfo # 查看CPU信息\# hostname # 查看计算机名\# lspci -tv # 列出所有PCI设备\# lsusb -tv # 列出所有USB设备\# lsmod # 列出加载的内核模块\# env # 查看环境变量资源\# free -m # 查看内存使用量和交换区使用量\# df -h # 查看各分.

2021-01-03 17:36:24 96

原创 shell 陌生命令记录

awk内置变量表属性说明$0当前记录(作为单个变量)1 1~1 n当前记录的第n个字段,字段间由FS分隔, 最大100FS输入字段分隔符 默认是空格NF当前记录中的字段个数,就是有多少列NR已经读出的记录数,就是行号,从1开始RS输入的记录他隔符默 认为换行符OFS输出字段分隔符 默认也是空格ORS输出的记录分隔符,默认为换行符ARGC命令行参数个数ARGV命令行参数数组FILENAM

2021-01-03 17:35:25 682

原创 shell脚本收集

shell 函数操作shell 数组传参不是整体传数组,而是拆分为单个值后传入#!/usr/bin/bashif [ $# -lt 1 ];then echo "error, arguments is less one!!!!!" exitfiarr=()#位置参数转化为数组for i in $@ do arr+=($i)doneecho "传入的参数数组:${arr[@]}"showArray(){ arrf=()

2021-01-03 17:34:14 97

原创 shell开发笔记

expect 解释器expect(使用前需要先下载)是一个能实现自动和交互式任务的解释器,它也能解释常见的shell语法命令,其特色在以下几个命令:spawn命令:spawn command命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令;在ssh自动登陆脚本中,我们使用 spawn ssh user_name@ip_str,fork一个子进程执行ssh登陆命令;expect命令:expect命令是expect解释器的关键命令,它的一般用法为 expect "st

2021-01-03 17:30:31 634

原创 centos7:docker 安装卸载一条龙操作

一. 卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \

2021-01-03 17:19:37 218

原创 docker 使用时遇到的问题合集

centos7.6 版本无基础命令 ip addr(ip addr command not found)解决: yum -y install initscriptsdocker中安装完httpd服务后,使用命令systemctl start httpd.service,发现报错,错误信息:Failed to get D-Bus connection: Operation not permitted解决:使用命令docker run -d -name centos7 --privilege.

2021-01-03 17:18:34 166

原创 docker实现单主机多应用实例(一核2G 学生机)

docker部署harbor本地厂库部署jenkins部署idea 与github进行版本控制tomcat部署nginx(openresty)部署mysql 和redis 部署[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PvLJ4bX-1604149911266)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201031210..

2021-01-03 16:40:24 1138

原创 网站收集

grafana 模板https://grafana.com/grafana/dashboards?search=zabbixzabbix手册https://www.zabbix.com/documentation/4.0/zh/manual清华源https://mirrors4.tuna.tsinghua.edu.cn/vue-element-admin文档https://panjiachen.github.io/vue-element-admin-site/zh/guide/#安装spri

2021-01-03 16:27:38 83

原创 IDEA使用优化(更新于2021.1.3)

常用的IDEA快捷键ctrl+shift+alt:多行操作psvm:生成main()方法;fori:生成for循环;Ctrl+Alt+v:自动补齐返回值类型 和 变量名ctrl+o:覆写方法(快捷重写方法)ctrl+i:实现接口中的方法ctrl+shift+u:大小写转换CTRL+SHIFT+Z:取消撤销Alt+Insert:生成构造方法、getter、setterctrl+y:删除当前行Ctrl+Shift+J:将选中的行合并成一行ctrl+g:定位到某一行Ctrl+Shitft

2020-11-22 18:36:11 6352

原创 虚拟机实现单Master单Node(创作于2020.10.3)

master 节点ip修改Vim /etc/sysconfig/network-scripts/ifcfg-<一般是网卡名>修改:BOOTPROTO=noneONBOOT=yes添加:IPADDR= 192.168.80.200 #NAT模式 ip设置的网段一定要和虚拟机设置的相同NETMASK=255.255.255.0GATEWAY=192.168.80.2DNS1=8.8.8.8关闭防火墙systemctl stop firewalld.service &am

2020-10-03 19:53:49 353

原创 dockerfile研究

FROM #指定基础镜像MAINTAINER #镜像的作者,一般是 姓名+邮箱RUN #运行镜像ADD #添加依赖内容,例如我这个镜像需要tomcat,就ADD一个tomcatCOPY #类似ADD,讲文件内容拷贝到镜像中WORKDIR #设置当前的工作目录VOLUME #挂载目录,和上面的工作目录不一样EXPOSE #暴露端口,不然run的时候你得-p指定暴露,这里写了就不需要-pCMD #指定容器运行时需要运行的命令,会

2020-09-09 21:31:35 68

原创 微信小程序学习之授权登录

创建云开发小程序微信开发者工具》项目》新建项目》小程序》云开发》创建2.创建好后的云开发项目会自带几个测试demo,当然,还不能使用,接下来开通云环境。在开发者工具工具栏左侧,点击 “云开发” 按钮即可打开云控制台、根据提示开通云开发、创建云环境。开通好后就能在云开发控制台进行数据操作啦。3.小程序绑定服务控制台环境,(默认为第一个环境)相当于绑定服务器。云开发控制台》设置》环境设置》复制环境ID》返回开发者工具》在资源管理器打开app.js》修改env的值为刚才复制的环境ID》保存4.测.

2020-06-04 17:20:09 914

原创 实现tp5命令操作Xml文件

实现tp5命令操作Xml文件节点

2020-05-22 15:38:46 1119

原创 tp5使用PHPExcel实现excel表格数据导入数据库

将excel文件中的数据导入到数据库,需要注意的是:如果该数据库中存在与将要导入的excel文件名的同名表,则会被覆盖掉,请千万注意

2020-05-18 11:18:53 980 1

原创 $_SERVER(超全局变量解析)

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组,其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

2020-05-13 16:07:09 288

interpretor.exe

用pythin做的windows桌面应用软件,具有中英文在线翻译,同步记录翻译文档的功能,资源描述要50个字,现在是凑子数的

2020-06-01

空空如也

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

TA关注的人

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