自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 资源 (2)
  • 收藏
  • 关注

原创 echarts自定义图例(legend)样式

echarts自定义图例(legend)样式

2022-06-30 10:06:34 20577

原创 Jenkins+Docker持续集成(CI/CD)实战

什么是CI?CI又叫:持续构建 。负责拉取代码库中的代码后,执行用户预置定义好的操作脚本,通过一系列编译操作构建出一个 制品 ,并将制品推送至制品库。常用工具有 Gitlab CI,Github CI,Jenkins 等。本环节不参与部署,只负责构建代码,然后保存构建物。构建物被称为制品,保存制品的地方被称为 制品库。什么是CD?CD 则有2层含义:持续部署(Continuous Deployment) 和 持续交付(Continuous Delivery) 。持续交付 的概念是:将制品库.

2022-01-12 13:31:07 10381

原创 微信跨公众号支付(appid 与 openid 不匹配)-koa

实现不同主体公众号的跨公众号支付其实原理很简单,就下面几点:1、用一个公众号的appid来进行收款2、这个公众号的appid需要和商户号绑定3、用这个appid来获取用户的openid进过上面三步是不是就对应起来了~怎么才能在别的主体的公众号用我的appid来获得用户的openid呢?其实很简单,你可以在需要支付的页面进行一次获取code的重定向操作,获取code的url内的app...

2019-06-20 15:38:32 26173

原创 node.js之express的token验证

1、用jsonwebtoken生成token2、用express-jwt验证token是否过期或失效3、用jsonwebtoken解析出token中的用户信息,比如用户id注意:使用res.json()发送响应时,在此前加一个return,即return res.json(),类似res.send()等函数也要加return,而且是所有的地方都要加,即使是a请求的响应没加return,...

2019-02-24 17:22:06 9881 22

原创 docker 部署 node.js(express) 服务

项目文件上传至服务器任意目录,进入项目根目录,执行如下命令,成功后会显示容器的标识符(长字符串)的基础镜像,再将构建好的镜像传到服务器直接基于构建好的镜像创建容器;脚本在服务器构建镜像,再基于构建好的镜像创建容器。服务后,就能正常使用了,如果是容器部署的。则表示成功,失败的话可以执行。1、以下示例为宿主机没有安装。工程源码上传到服务器,通过。文件,用于指定在构建。2、先在本地构建包含。,则直接重启容器就行。

2023-09-12 21:07:09 1563

原创 腾讯云服务器无法使用 xftp 上传文件

现象:xftp 连接腾讯云服务器后不能在可视化界面创建文件,也不能上传文件。登录到服务器,并切换权限到。

2023-09-11 18:15:17 431

原创 连接 Mysql(8.0以上版本) 数据库报错:Client does not support authentication protocol requested by server;

为主机,对应了第一步表中的 Host 列,部分人是 %,填 Host 对应的值就行;为用户名,对应了第一步表中的 User 列;之前的版本中加密规则是。

2023-08-29 20:13:02 647

原创 mysql8.0以上忘记密码的重置方法 - window系统

到这里就重置完了,验证密码是否设置成功可以退出连接后,用。登录, 这里直接回车就行,在前面我们已经将密码设为了空。提示输入密码直接回车,进入数据库连接状态。运行命令提示符工具,执行下面的命令。,那个窗口是帮助我们跳过登录验证的。可以在任务管理器的服务中查看状态。下面这样就表示成功了,如果。服务没停止,这一步就会失败。返回如下提示则表示重置成功!连接状态后重置密码,如下。设置的密码再登录一次。3、以管理员身份运行。4、将登陆密码设置为空。5、修改登录密码,先。

2023-08-29 16:42:14 1051 1

原创 docker 安装 mysql 并挂载 配置文件和数据目录

拉取官方支持版本(OFFICIAL 为 ok的版本)3、以 mysql 作为基础镜像构建容器并挂载目录。为 mysql root 用户的密码。1、宿主机创建挂载目录。

2023-08-29 14:02:07 1880

原创 nodejs 之 express 实现下载网络图片并上传到七牛云对象存储oss空间

你可以通过访问 http://localhost:3000/download?来下载远程图片并将其存储到七牛云,其中 IMAGE_URL 是你希望下载的远程图片的URL。为方便阅读,本文将所有逻辑放在一个函数里,可根据自己的情况拆分。在项目根目录下创建一个名为 app.js 的文件,并添加以下内容。在项目根目录下运行以下命令安装依赖。

2023-08-18 15:21:57 477

原创 docker安装nginx并配置SSL

2、启动nginx容器,复制一份默认配置文件出来。4、重新创建nginx容器并挂载配置目录。7、修改配置宿主机,增加ssl证书配置。创建成功后会看到nginx的欢迎页面。进入容器查看挂载文件是否同步到容器内。能进入目录则表示同步成功,退出容器。进入容器的nginx配置目录。6、在宿主机创建ssl目录。3、挂载nginx目录。8、重启nginx容器。5、查看挂载是否成功。

2023-07-31 16:15:36 1585

原创 docker+mongodb设置数据库的账号和密码

使用docker部署mongodb并设置数据库连接认证

2023-07-16 14:01:13 3291

原创 vue3 setup取v-for下ref

vue3 通过ref取v-for下遍历的dom

2022-09-08 15:42:05 644 1

原创 文字超出部分以省略号(...)代替,并显示tooltip,未超出不显示

文字超出部分以省略号(...)代替,并显示tooltip,未超出不显示

2022-08-02 15:46:58 1966

原创 vue之插槽slot的深入使用

具名slot插槽深入使用,并传值

2022-06-09 16:01:39 157 1

原创 nginx常用命令

nginx常用命令

2022-06-08 11:24:47 225

原创 基于xterm.js + socket.js的Web SSH

xterm.js 作为终端面板,以 socket.js + stompjs 实现消息通信。效果如下:代码:<template> <div> <div ref="terminalContainer"></div> </div></template><script lang="ts">import {Vue, Component, Prop } from "vue-property-dec.

2022-03-16 17:18:31 2418 4

原创 Git以指定远程分支为基础新建一个本地分支并切换到该分支

git checkout -b 本地分支名 origin/远程分支名如果创建失败可以先执行 git fetch 拉取所有分支。

2022-02-28 14:54:38 719

原创 字体大小随容器宽度自适应变化 - vue

需求:固定宽高的容器,内部文字长度不固定,字号大小需要随着文字数量的变化而变化,使得文字始终以一行撑满容器。效果如图:实现思路:拿到文字所在dom的水平宽度 childWidth,并取得其父级dom的水平宽度 parentWidth。这里需要对超出父级容器的部分缩小,所以可以用:parentWidth / childWidth = scalcVal如果文字长度超出父容器,则会得到一个介于0 ~ 1之间的值,这个值可以直接作为缩放比例使用,再结合css3的transform:scale(x.

2022-01-07 15:25:26 6157 1

原创 图片加载失败后显示默认图片

加载失败后显示默认图:<img :src="`${img}.png`" onerror="javascript:this.src='logo.png'"/>也可以在图片加载失败后弹出提示:<img src="image.gif" onerror="alert('图片不能被加载。')">扩展小知:img除了支持加载失败的回调,也支持加载中断及加载成功的回调。用法:onabort:<img src="image_w3default.gif" onabort

2022-01-06 10:22:20 4275

原创 css3实现loading动画

<div class="loading"> <span></span> <span></span> <span></span> <span></span> <span></span></div>.loading { width: 76px; height: 60px; position: absolute; top: 50.

2021-12-29 10:34:26 988

原创 mxGraph添加流动的管道动画

效果图:1、使用css3定义流动的class/*** 管道动画* 线段长度为8,每0.5s执行一次keyframes中定义的dash动作,且无限循环执行*/.flowStyle { stroke-dasharray: 8; animation: dash 0.5s linear; animation-iteration-count: infinite;}@keyframes dash { to { stroke-dashoffset: -16; }}2、给

2021-12-02 16:38:12 1922 2

原创 mxGraph允许调整线条弯曲度后报错:Illegal constructor

代码示例:// 允许调整线条弯曲度this.setCellsBendable(true);解决办法:在graph/index.js中增加如下代码。Object.keys(mxgraph).forEach((key)=>{ window[key] = mxgraph[key];});graph/index.js文件完整内容示例import mx from "mxgraph";const mxgraph = mx({ mxBasePath: "/graph/mxgraph"

2021-12-02 16:03:38 897

原创 draggable拖拽组件的使用

背景:左右两个数据栏,左侧为数据源,右侧为组建的目标数据。要实现左侧和右侧可以互相拖拽,但是左侧拖拽到右侧后源数据不变,右侧拖拽到左侧时,无论丢在左侧哪里都回到源数据原来的分组下;并且,左侧和右侧内部都可以上下拖拽调整位置。效果图:如下,左侧有分组,每一组可以直接通过拖拽A(xxx应用)、B(xxx应用)等上下调整组的位置,组内可以上下拖拽调整先后顺序。代码:import Draggable from "vuedraggable";components: { Draggable,.

2021-10-21 14:33:41 1204

原创 uniapp使用canvas绘制卡片并下载到本地

效果:简介最多显示3行,超过3行部分用省略号(…)代替。代码:<canvas style="width: 100%; height: 409px;" canvas-id="myCanvas"></canvas>// 绘制图片createImg (qrcode) { uni.showLoading({ title: '生成中' }) const that = this; const ctx = uni.createCanvasContext('myCanvas

2021-10-21 13:44:16 639

原创 echarts堆叠柱状图

注意:本文为vue的写法效果图:图例(legend)和提示框(tooltip)的配置,在另一篇文章已经讲到(传送门),这里主要讲柱状堆叠的实现。stack:数据堆叠,同个类目轴上系列配置相同的stack值可以堆叠放置。代码实现: legendList:["UNKNOWN", "SUCCESS","FAILED"]; const myChart = echarts.init(this.$refs.veHistogramChart); const seriesData

2021-10-21 13:10:05 2494

原创 echarts渐变堆叠折线图

注意:本文为vue的写法背景:页面根据后台返回的数组,动态生成渐变堆叠折线图,有几组数据则生成对应的几条折线图。效果图:下面分别从图例(legend)、提示框(tooltip)、series等各方面介绍配置参数。折线图的色彩池const rgbColorList = [ "61, 115, 255", "64, 206, 210", "235, 119, 137", "151, 121, 255", "247, 181, 0", "56, 196, 247", "

2021-10-21 11:00:42 1066

原创 axios请求拦截封装(antd)

import axios from 'axios'import { message, Modal } from 'antd'let reqNum = 0;// 创建一个axios连接const service = axios.create({ // withCredentials: true, // 允许跨域时发送cookie timeout: 5000 // 请求超时})// 请求拦截器service.interceptors.request.use( conf

2021-06-09 10:29:12 635 1

原创 uniapp与webview之间的传参

1、由uniapp传参到webview内的网页。//uniapp中的页面<template> <web-view :src="url"> </web-view></template><script>export default { data() { return { url:"https://www.demo.com?data1=1&data2=32&data3=11" }

2021-02-25 09:15:38 9127

原创 js调TSC打印机

1、将TSCActiveX.dll和TSCLIB.dll放入C:\Windows\SysWOW64目录下,32位系统放入:C:\Windows\System322、以管理员身份运行命令行工具,直接执行下面命令:32位系统:regsvr32 TSCActiveX.dll64位系统:regsvr32 C:\Windows\SysWOW64\TSCActiveX.dll3、ie浏览器配置启用ActiveX控件和插件 var TSCObj = new ActiveXObject("TSCActiv.

2021-01-18 21:23:08 1376

原创 el-tree 默认选择几个节点,却全选中了

场景:某一级目录下有几个二级目录,当选中二级目录中的某一项并提交到后台后,页面渲染时却选中了整个一级目录,但是数据却是正常的一条二级目录。解决办法:比对该目录下未提交的目录,并将其checked设为false,这种方法能解决二级目录全选中的问题,但是会出现另一个小问题,虽然二级目录选择状态正常了,但是一级目录依然是全选中状态,如下:所以,在比对完当前目录是否在已选列表内后,还需要对未全选的父级做不确定选项的展示处理,el-tree的不确定选项设置办法为部分选:checked = false, .

2021-01-14 12:22:31 2288

原创 canvas文字换行处理

项目中需要用到canvas绘图,关于文字换行的处理一直没找到合适的解决方案,于是自己动手撸了一个。函数实现的功能:1、设置最大行数(最多多少行),超出部分用省略号(…)表示。2、最大行数(lineNum)传入-1,实现自动换行效果。参数说明: * 参数解析: * * ctx: canvas绘图上下文 * str: 需要绘制的文本内容 * draw_width: 绘制后的文字显示宽度 * lineNum: 最大行数,多出部分用'...'表示, 如

2020-12-11 14:50:59 6437 6

原创 uniapp引入iconfont字体图标

1、进入阿里图标库添加自己需要的图标到自己创建的项目。2、将自己添加的图标下载下来3、解压后将下面两个文件放入自己准备的目录下,这里演示放在static下4、修改iconfont.css文件内容如下:@font-face { font-family: 'iconfont'; /* project id 2255196 */ src: url('~@/static/iconfont/iconfont.ttf')}5、在App.vue引入iconfont<style l

2020-12-09 15:47:40 1634 1

原创 uniapp解决scroll-view回弹抖动等bug

滑动时回弹抖动:1、设置scroll-anchoring为true默认为false,开启 scroll anchoring 特性,即控制滚动位置不随内容变化而抖动,仅在 iOS 下生效,安卓下可参考 CSS overflow-anchor 属性。2、不设@scroll 和scroll-top/scroll-left,如下<scroll-view class="scroll-view_Line" :scroll-anchoring="true" scroll-y="true"> &l

2020-12-09 15:38:39 10315

原创 nodejs之eggjs结合cheerio爬取数据

实现的功能(同样适用于网站监控):每隔一段时间更新一次网站数据。1、每隔一段时间执行一次操作,所以需要建立一个定时器。注意:1、eggjs官方规定,定时器只能写在schedule目录下2、cheerio模块主要负责解析html3、使用之前需要安装 npm install --save cheerio// app > schedule > watchPage.js const cheerio = require('cheerio') module.exports =

2020-12-05 16:14:34 436 1

原创 node.js之egg提交post请求

1、新建验证中间件middleware > auth.js// auth.jsmodule.exports = (option, app) => { return async function auth (ctx, next) { ctx.state.csrf = ctx.csrf; await next(); }}2、注册中间件,config > config.default.js// config.default.jscon

2020-11-29 20:54:40 673

原创 node.js之egg使用中间件屏蔽指定ip

1、middleware新建屏蔽中间件:forbidip.jsmodule.exports = (option, app) => { return async function forbideIp (ctx, next) { // firbideip 数据可以来自数据库,也可以来自传参 var firbideip = option.forbidips, clientIp = ctx.request.ip; if (fir

2020-11-29 20:04:35 552

原创 wangeditor渲染不出来,报错xxx of undefined

原配置: var editor = new E('#div') editor.customConfig.uploadImgShowBase64 = true // 使用 base64 保存图片 editor.create()改为:var editor = new E('#div')// 兼容老版本let config = editor.customConfig ? editor.customConfig : editor.confg;config .uploadImgShowBas

2020-11-25 13:29:24 2552 2

原创 vue中的防抖实战

业务情景: 当用户搜索时需要根据用户输入的内容实时查询,但是又不想输入每个字都查询或者实时保存用户的输入信息。防抖原理:当持续触发事件时,设置一个间隔时间,当该时间内没有再次触发事件则执行一次函数,如果时间到之前再次触发事件,则重新开始延时。防抖作用1、对服务器来说:可以防止短时间多次请求接口,一定程度上减轻服务器压力。2、对前端页面来说:可以防止页面抖动,减轻浏览器压力,提升性能。特别是监听scroll时,抖动最明显。防抖前后效果防抖前:防抖后:送上代码:<inpu.

2020-11-06 17:31:03 1223

原创 instanceof原理解析

原理:当A的原型链中包含B的显式原型则匹配成功,否则失败。什么是隐式原型(__proto__)什么是显式原型(prototype)?1.函数的prototype属性:在函数定义时自动添加的,默认值是一个空的object对象2.对象的__proto__属性:创建对象时自动添加对的默认值为构造函数的prototype属性值3.程序员可以直接操作显式原型,但是不能直接操作隐式原型(ES6之前)对象的隐式原型为其对应构造函数的显式原型的值什么是原型链呢?可以看这篇介绍代码实现:functio.

2020-11-05 18:19:44 220

js对接TSC相关文件

文件包含:TSCActiveX.dll和TSCLIB.dll

2021-01-18

node.js之express的token验证

基于 express 封装的用户鉴权功能,基本原理: 1、用 jsonwebtoken 生成 token 2、用 express-jwt 验证 token 是否过期或失效 3、用 jsonwebtoken 解析出 token 中的用户信息,比如用户 id

2020-10-24

空空如也

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

TA关注的人

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