自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mt23

路漫漫其修远兮,吾将上下而求索。

  • 博客(91)
  • 收藏
  • 关注

原创 一个含了不同维度的字符串在逻辑上如何定义相等的抽象设计

背景这个标题确实有点儿不知所措,我实在不知道该如何定义下面我将要分析的场景,但我认为这种隐含的思想还是重要的。大概的场景是这样的,在设计上我们对设备的货舱型号进行了一定编码,比如:G1_G2、G2_G1,F6_G1等等,但是在统计时,需求期望的是将G1_G2与G2_G1看做是一个如何设计G1_G2与G2_G1相等暴力法if ("G2_G1".equals(key)) { key = "G1_G2";} else if ("F6_G1".equals(key)) { key =

2022-01-07 17:13:12 382

原创 PC端音频流转至手机播放,任意操作系统、任何手机系统【SRS+OBS推流、VLC播放】

目的长话短说,公司电脑是台式机,没得耳机、音响。但平时为了听歌、或者需要听取台式机的声音,为此想了一个方案PC声音=》手机=》蓝牙耳机如何实现最开始我是使用软件wiresound吧,好像是这个名字,但是这个只支持android客户端,为此很苦恼。【远程会议实现】后来两个办法用远程会议,将桌面共享给手机,就能播放手机,但是感觉不怎么好【自建推流服务器】其实想使PC的声音到手机最简单的设计就是推流方案。这也是【SRS、OBS、VLC】能够实现的原理安装流媒体服务器【SRS】与推流客户端【O

2021-12-30 11:53:53 5560

原创 vue-好看的版本更新记录

vue-好看的版本更新记录更新历史名称内容版本1.0创建时间2021-10-26更新时间2021-10-26功能清单基于vue、element实现版本更新日志的显示基于json文件记录更新日志最终效果集成流程拉取github地址https://github.com/mathcoder23/vue-version-log集成到Spring Boot拷贝github中的资源到Spring Boot的resouce文件夹的version下

2021-10-26 18:14:49 1120

原创 docker-mysql备份

docker-mysql备份更新历史名称内容版本1.0创建时间2021-10-25更新时间2021-10-25功能清单基于linux-cron执行定时任务直接使用docker命令对mysql备份保存指定时间的数据前提准备确认docker中已运行mysql,并且获取容器名称确认备份脚本目录与文件新建脚本vi /xxx/backups/backup.sh粘贴一下代码并且修改对应的数据# 容器名称container_name="xx

2021-10-25 14:07:48 1111

原创 docker版oos备份工具

docker版oos备份工具更新历史名称内容版本1.0创建时间2021-10-20更新时间2021-10-20功能清单基于Docker运行通过环境变量配置OSS信息挂载要同步的目录到容器内/sync自定义cron任务时间下载git clone https://github.com/mathcoder23/docker-oss-sync.git# 加速git clone https://hub.fastgit.org/mathcoder23/

2021-10-20 15:49:20 311

原创 java-Excel的导入导出

java-Excel的导入导出更新历史名称内容版本1.0创建时间2021-10-14更新时间2021-10-19功能清单基于maven从零集成Excel功能maven集成Excel导入Excel导出vue-Excel导入对话框模板axios-文件下载(使用blob下转换)maven集成<properties> <easy.poi.version>4.4.0</easy.poi.version>&

2021-10-19 11:23:21 296

原创 java-jar包resource转文件

java-jar包resource转文件更新历史名称内容版本1.0创建时间2021-10-19更新时间2021-10-19功能清单将jar包内的resource文件转换到本地文件存储package org.pettyfox.base.utils;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.i

2021-10-19 10:27:34 866

原创 vue-Excel导入对话框模板

vue-Excel导入对话框模板更新历史名称内容创建时间2021-10-18更新时间2021-10-18变更次数0功能清单提供基于对话框的excel导入功能配置基本定制内容通过回调方法处理定制内容通过方法设置导入结果的显示<!--version: 1.0date: 2021-10-18update:author: Petty Foxfunction: 提供基于对话框的excel导入功能属性配置:- allowType:配置允

2021-10-18 18:08:48 252

原创 代码小笔记-css

scss笔记选中当前节点的仅下一级节点& > div { padding: 15px 20px 10px; margin-right: 10px; border: 1px solid #ddd; border-radius: 1px;}

2021-10-09 10:13:53 73

原创 DrawIO 基于MinIO以及OSS私有云方案

DrawIO 基于MinIO以及OSS私有云方案基于drawio的私有云实现以及私有云端存储方案项目地址:https://github.com/mathcoder23/drawio-minio-oss功能特性支持OSS部署(本来就是支持的,限于部署服务器的带宽问题,将静态页面转到OSS部署加快页面访问速度)新增基于MinIO的第三方存储方案在私有化后,新增用户登录、并且管理创建的流程图文件(方便云端管理自己创建的流程图文件)支持通过接口创建、管理、删除登录用户信息效果示例

2021-07-15 17:09:29 3248 2

原创 从零开始上传开源项目到Maven中央仓库

目录介绍简单讲解一下上传到Maven中央仓库流程Maven(sonatype)账号准备1.注册Sonatype JIRA账号2.创建工单3.验证GroupId基于域名验证基于开源仓库的验证4.流转工单状态5.工单处理完成6.登录nexus repository manager7.nexus repository manager平台生成User TokenMaven项目打包并上传流程打包简要配置说明1.工程pom.xml配置pom项目基本信息maven中snapshot与release版区别配置分发管理pom

2021-07-13 16:05:55 421

原创 Maven 聚合工程 Could not find artifact 父模块找不到异常

说明我们在利用Maven建立一个多模块的聚合工程时,可能会遇到这样的问题,那就是Could not find artifact xxx,并且不能找到的artifact 正是父工程项目结构此图是我聚合工程的一个项目,在对根pom.xml进行打包的时候mvn package报了如下错误Could not find artifact com.xxx:xxx:xxx in nexus-aliyun (https://maven.aliyun.com/repository/public)父pom(arti

2021-07-13 13:50:10 29207 3

原创 ERR_CERT_AUTHORITY_INVALID和SSL: error:0B080074:x509

简述用nginx部署了https,但是在浏览器上能够正常,微信小程序访问就是不行,最后调试后才发现客户端抛了一个这样的错误:ERR_CERT_AUTHORITY_INVALID,从字面意思上理解就是证书有问题,但是考虑了一下,这个证书时刚申请的呀,应该不会有问题。排查问题首先可以肯定证书的配置肯定有问题,接下来我们要考虑的是证书本身有问题,还是在配置时没配对,在下载证书时,有nginx版、tomcat版、apache版,我这次意识到我在nginx配置时,好像用的apache版证书,所以问题应该是

2021-06-10 15:15:18 1593

原创 Could not find or load main class org.springframework.boot.loader.JarLauncher

简述今天用java -jar出现了个匪夷所思的错误Error: Could not find or load main class org.springframework.boot.loader.JarLauncher,这个第一眼感觉应该是jar包本身的问题。结果排除下来问题也算找到了。从java -jar说起java -jar app.jar用这个启动没啥问题,但是由于要指定java的工作路径所以我们加了个参数java -jar -Duser.dir=/home app.jar一直行就一脸懵逼

2021-06-10 14:41:08 6075

原创 OpenCV4.12在Centos7和Ubuntu18下的安装

OpenCV源码下载Github地址,如果下载比较慢的话自己想想办法,额外安利一个加速吧:github加速之后的OpenCV将会在/home/api-service/opencv下进行编译下载的openCV包在/home/api-service/package/opencv-4.1.2.tar.gz安装的基础环境很重要,否则会导致opencv在编译后某些功能不能正常使用CentOS7下OpenCV4.12安装更新CentOS国内源yum install -y wgetwget -O Cent

2021-06-09 14:34:03 211 1

原创 vue-quill-editor 图片实现自定义服务器上传的简单方法

vue-quill-editor介绍这款组件是基于quill的富文本编辑器改造为vue环境使用的。github地址-vue-quill-editor的基于MIT开源协议,可以放心使用安装vue-quill-editornpm install vue-quill-editor --save注册组件到vue环境路径:main.jsimport VueQuillEditor from 'vue-quill-editor'import 'quill/dist/quill.core.css' /

2021-05-19 10:02:11 243 1

原创 JAVA线程状态详解

Java中线程状态源码java包位置:java.lang.Thread.State(Thread的内部枚举类)public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the

2021-05-11 17:48:25 96

原创 html用原生锚点定位在vue中兼容页内锚点定位的简单方法

目录Html原生锚点定位的方法1、在锚点元素定义id值2、使用a标签或修改location.hash值vue的锚点定位冲突问题简单的解决冲突办法原理简要代码Html原生锚点定位的方法html中锚点定位只需要做两件事1、在锚点元素定义id值<div id="target1">定位位置</div>2、使用a标签或修改location.hash值<a href="#target1">跳转定位</a>或者js方法window.location.

2021-04-22 15:36:34 399

原创 IDEA Process finished with exit code -1073741819 (0xC0000005)or Maven Process terminated 导致项目无法运行的问题

背景当我再次解决这个问题时,我才恍然大悟,在很久以前我遇到过这个问题,2021年新年的开始,预想着一个好兆头,因此特有花了一点点时间把桌面清理的干干净净,看着硬盘所剩不多的可用空间,忍不住拿出来万年不用的360清理了一下垃圾。好了,一切工作准备就绪后开始快乐的编程了,刚才是还是好的,但某一时间项目突然运行不了???Process finished with exit code -1073741819 (0xC0000005)在IDEA上运行直接报上诉错误,首先,我代码没有任何改动,刚刚还是好的,

2021-02-20 10:13:15 1799 2

原创 TLS双向认证之生成双端证书信息

目录TLS双向认证需要的认证文件制作根证书第三方机构的根证书自签根证书(基于openssl)根证书签发证书服务端证书客户端证书TLS双向认证需要的认证文件服务端:server.crt、server.key客户端:client.crt、client.key双方信任的:root.crt说明:服务端和客户端都需要这三个重要的认证文件:根证书,双方必须信任这个证书,因为对方的证书就是由此根证书颁发的自己的证书,TLS通讯的加密基础自己的密钥,TLS通讯的加密基础制作根证书第三方机构的根证

2020-12-16 17:00:51 933 1

原创 git导出不同版本的差异代码

场景:有时候会遇到不同git仓库但要相互同步代码,而我们只需要导出修改后的代码,我们不可能一个个文件的拷贝出来吧,而且文件夹的目录结构手动处理不管是容错、还是工作量都是不小的开支。因此我们利用git archive指令来导出有差异的代码两个已提交版本的代码差异导出列出两个版本commit(可以使用git log、也可以使用IDEA的VersionControl右键Copy Reversion Number)执行命令(win版)git archive --format=zip HEAD $(

2020-12-11 11:46:09 1390

原创 代码细节之前后端Ping检测工具

目录前言前言在前端有时候需要输入ip,为了提高用户体验我们增加个Ping的检测工具,但是注意这里的Ping实际上是代理Ping,即服务端代理客户端是Ping,因此Ping的结果是基于服务端的网络拓扑来的。...

2020-11-02 18:26:54 592

原创 利用浏览器插件生成TAPD的更新日志

目录前言每次复制需求、缺陷名称的烦恼基于Tampermonkey/Chrome插件开发插件插件效果和代码如下插件脚本管理插件代码插件效果前言在项目研发中,我们使用TAPD来管理软件研发流程,我们一般在项目内部会有个迭代更新日志,参考如下:一般后面跟的就是需求、缺陷的名称。当然我们这个手动版的日志肯定比不上全自动化的。每次复制需求、缺陷名称的烦恼看吧这是TAPD缺陷的标题项,每次复制还是有点麻烦。鼠标点一下标题后面的任务ID又消失了。复制还是不太方便。所以所以就自己弄个浏览器插件基于Tamp

2020-10-23 16:24:28 344

原创 基于vue elementu-ui表单验证框架的js工具类之密码、确认密码验证

目录常规Element的表单验证关键代码核心代码优化成js工具类引用即可注入校验规则JS代码代码简化最后谈谈这个js放哪里Vue和Element-UI这两大框架在前端开发中应用已经非常nice了。但是在开发中还是有很多不足之处。以大量的使用基础,来不断的改进吧。常规Element的表单验证偷个懒,这里首先去官网看看表单验证的基本用法https://element.eleme.cn/#/zh-CN/component/form关键代码<el-form :model="ruleForm"

2020-10-16 15:48:38 973

原创 gradle国内下载各种版本

真的每次下载gradle安装包都要气炸。几十兆的东西非要折腾几个小时。但是相比以前已经好很多了,以前gradle官网都访问不了,现在至少还能访问,而且偶尔下载速度也很快。gradle版本列表一般用bin包就行了,我目前暂时放在百度云,版本只选了4.x.x、5.x.x、6.x.x的。而且选的是第二个x的最高版,因为一般第二个x的低版都是补丁。链接:https://pan.baidu.com/s/12nAjKahkiWT2SePBMVscOw提取码:a2zd...

2020-10-15 15:00:40 4472 2

原创 uni-app微信公众号web JS-SDK开发之二授权登录

实现微信登录先看一下微信文档了解一下:网页授权回调域名配置(必须配置,是页面不是接口)登录流程说明看过文档之后,想必都知道了登录的流程。这里需要注意的是

2020-09-30 09:30:36 763

原创 css实现div永远在底部并随滚动条滚动而在最底部

目录前言布局的情况讨论内容显示小于屏幕高度内容显示超过屏幕高度出现滚动条代码实现效果前言在显示网站的ICP备案信息时,我们希望ICP备案信息永远在最下面,但是当页面数据过多出现滚动条时,ICP备案信息也在最下面,而不是浮动在屏幕的底部布局的情况讨论内容显示小于屏幕高度如果我们采用flow流布局,直接把ICP信息放在div下面,当上层div高度很小时,ICP就会显示在中间内容显示超过屏幕高度出现滚动条如果我们用fixed将ICP固定那么就会出现底部显示的信息覆盖了内容代码实现为

2020-09-29 18:03:07 4703

原创 前后端架构,前端H5或后台web动态切换(负载均衡)后端Api的baseUrl方案设计

这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录

2020-09-29 09:26:20 1115

原创 前端Vue、H5、Web、Html等待页面的快速显示以及代码参考

目录前言目标实现原理加载页代码(理论上手机端和PC端显示友好)vue加载完毕后隐藏加载页h5效果PC效果前言我们在做前端开发时,用户的网络情况以及服务器的网络负载是有限度的,因此为了有更好的用户体验,我们需要尽可能的早显示出等待界面,当然有进度条更好。目标用户访问Html页面时,用最快的速度先返回加载页,然后当所有的js、css等框架资源加载完毕后在显示主内容实现原理我们基于vue框架开发时,有个html模板页,我们将所有的加载页需要的js、div、css放在html中,并且在vue还

2020-09-28 16:57:45 1256

原创 [排坑] docker ps 命令无响应整个服务崩溃

项目场景:使用2核4G的服务器搭建了基于docker的若干服务问题描述:首先说现象,整个服务崩溃无法访问进入服务器后使用docker ps命令无响应原因分析:在线上经历来讲,我遇到过两次这个现象,分别在不同的项目中,排除与代码层面的问题,毫无疑问,这个问题是致命的,一旦发生,整个服务瘫痪,我记不清第一次出现这个问题是什么原因造成的了。所以下面说的问题定位方法仅供参考毫无疑问,重启服务器是能够解决的,但这是下下策,我们需要找到问题根源。查看磁盘使用情况,df -h查看端口占用情况,

2020-09-27 11:29:38 6026

原创 Spring Boot集成Guava EventBus并注入Bean

目录前言目标事件总线介绍概览图代码实践基础类IEventBusAbstractSpringEventBusIEventConsumer业务类实现事件总线投递消息消费者前言基于事件总线的方式开发,可以使我们代码更加简洁,而且解耦Guava的EventBus是个轻量级的事件总线,而且事件间可以相互隔离,所以更加灵活多变本文不讲EventBus的具体功能,只考虑应用场景目标在Spring中集成Guava的EventBus,并友好的注入Bean消费者只需要实现接口,即可接收事件消息生产者只需要

2020-09-25 12:29:11 2708

原创 uni-app微信公众号web JS-SDK开发之一接入

目录目标uni-appH5接入JS-SDK接入说明1,环境说明2,JS-SDK接入说明3,资源准备开始接入本人前后端开发框架第一步,下载web开发者工具第二步,uni-app安装JS-SDK并初始化(前端)第三步,初始化微信公众账号沙盒点击上面的`微信公众平台接口测试帐号申请`进入沙盒申请配置JS安全域名(重要、重要、重要)第四步,后端接入微信公众号,实现wx.config配置参数(后端)1. 提供jsSdkConfig接口(公共接口)2. 引入公众号对接依赖3.配置WxMpService Bean第五步,

2020-09-25 10:25:16 2146 1

原创 Frp轻松解决内网访问方案

目录背景硬件要求技术选型原理解释Frp服务端搭建(测试)Frp客户端搭建(测试)生产级配置服务端配置frps.ini配置开机自动启动客户端配置仪表盘总结背景在开发时,有时候需要临时将内网的web服务在外网访问。此文将会解决这样的痛点硬件要求一台公网服务器,并且有权限管理它。(开发者应该有一台自己的服务,现在买也很便宜)如果没公网服务器,可以找基于Frp、Ngork的服务商,免费的速度很慢技术选型本文采用基于Frp的内网方案原理解释服务端的Frps先监听某个(7777)端口,客

2020-09-24 14:30:13 810 2

原创 软件开发Bug处理与软件版本关联的开发流程总结及Git分支使用和命名规约

目录前言Git分支使用以及命名规范(2020-09-23)Git根目录应该是软件开发的工作空间根目录按照项目开发流程来讲,Git被划分为`master`,`dev`两大分支dev分支与软件版本细则软件需求与分支、软件版本细则代码状态跃迁通过Git的Tag标签,实现解耦Tag标签准则代码提交准则日志文件参考开发流程(假设已经开发到某一阶段)认领需求(需求已精确到足够小)实现需求发布测试版BUG反馈处理BUG发布修复版本前言规范的按开发流程、以及GIt代码管理流程能够更好的提升研发进度以及效率。笔者以中小项

2020-09-23 12:57:30 325

原创 [排坑]ScheduledThreadPoolExecutor Java 线程池吞掉未捕获异常

前言最近在线上发现了很诡异的事情,某个服务的线程处理运行很不稳定,经常性不能正常工作,但是也排查不出来问题根源。最终确定了原因是在使用scheduleAtFixedRate时,Runnable中发生了未捕获异常,并且未配置uncaughtExceptionHandler导致异常发生后,日志直接被吞了。解决办法方法一配置uncaughtExceptionHandler处理类,但是这个的处理逻辑是由线程池决定了,在特定的场景下,我们不清楚线程池的具体实现,需要查看代码方法二(推荐)自定义抽象的Ru

2020-09-22 10:35:53 1000

原创 [排坑]内存缓存(Ehcache)不小心的写数据,导致缓存被污染的事故

项目场景:在项目中使用基于内存(JVM)的缓存缓存了每个用户的基本信息用户的基本信息会同步到终端设备问题描述:发现同步到终端设备的数据与数据库的不一致。但是很奇怪的是其中一个属性值小概率被置为空了。在数据库中值是存在的。原因分析:1,论证数据库数据与缓存数据的一致性,这里的一致性是指,我在数据库看到的,和被缓存的数据是否相同。因为不排除,在查询数据库并缓存时,ORM映射问题导致某个属性没被赋值,但是这种问题一般出现频率是高频的,而不会是偶发。但也不排除偶发概率,因为在属性映射时,假设

2020-09-17 18:05:03 597

原创 [排坑]Spring Boot @RequestParam的required=true但参数依然为null

使用场景:使用Spring Boot的@RequestParam注解时,我知道required的默认值是true,理论上来讲,被注解标注的参数如果为null,Spring Boot应该抛出异常。但实际上没有。问题描述: public RestObjectResponse<xx> xxx(@RequestParam(value = "role")UserRole role) { return xxx; }从上面的代码来看,如果role为null,应该会直

2020-09-17 11:28:17 3996 1

原创 Linux Crontab与Cron表达式不同造成的脚本不执行

先说坑想着Linux自带的定时任务crontab命令,用着应该也很方便。所以尝试一下下,暂定要每日凌晨2点执行备份。但是通过crontab -e配置,在网上查阅了cron表达式0 0 2 * * ?就是不执行。此时去查询了一下cron和crontab表达式,这才发现,这两玩意儿规则不一样。心里一万句我真菜。下面讲讲表达式区别cron表达式长度是六到七位(精度是秒)每位含义秒(Seconds) 0~59的整数 , - * / 四个字符分(Minutes) 0~59的整数 , - * /

2020-09-02 22:07:39 647

原创 Docker修改MySQL时区终极版

前言Docker确实是方便。但每次创建Mysql后都头疼,时区问题头疼。今天就专门花时间以及总结一下如何修改。我需要的修改肯定是持久化的,所以临时性的方案就不考虑了。基础环境为了保证实验的严谨性,还是申明一下基础环境Centos7Docker1.13mysql:5.7关于容器运行方式不用docker run不用docker compose使用docker swarmMySQL时区修改方法1,挂载 /etc/localtime:/etc/localtime这种依赖宿主机

2020-08-27 13:07:18 2246 1

原创 Spring Security设置X-Frame-Options响应头

前言被Security管理的接口中,其中可能包含html页面,而前端在开发时,可能使用frame标签。为了系统安全性,默认情况下X-Frame-Options是禁止的。HTTP 响应头X-Frame-Options 说明X-Frame-Options HTTP 响应报头可以被用来指示一个浏览器是否应该被允许在一个以呈现页面<frame>,<iframe>或<object>。通过确保其内容未嵌入其他网站,网站可以使用此功能来避免 点击劫持 攻击取值说明

2020-08-25 16:48:50 4786 2

空空如也

空空如也

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

TA关注的人

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