自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蜀道难,难于上青天。

蜀道难,难于上青天。

  • 博客(209)
  • 资源 (24)
  • 收藏
  • 关注

原创 绿联DX4600 AList部署及挂载阿里云盘

​ 因为云盘总是封禁已经转存的文件(珍惜影片),实在受不了了,就像购买个NAS构建私人云存储,正好趁着双11购入了绿联的DX4600,本来想购入群晖或者威联通等专业NAS,因为不想折腾,最终在极空间和绿联中选择了绿联DX4600,安装啥的按照绿联文档或者视频很容易,之后就是使用Docker部署AList之后将阿里云盘和百度网盘的内容同步到本地NAS中(提醒自己购买NAS部署私人云存储一点不便宜,慎重!!!

2023-11-09 18:01:52 4139

原创 IDEA 部署服务到 Docker 容器

IDEA 部署服务到 Docker 容器

2023-11-09 15:58:26 933

原创 Spring boot MongoDB实现自增序列

操作指令,经过测试100个并发下没有发现重复id的产生,但是还是建议使用MongoDB自己的Id生成策略,毕竟MongoDB作为非关系型数据库,如果维护一个自增序列,性能上肯定没有ObjectId好,而且分片情况下需要自己校验自增序列的唯一性,当然在某些特殊的业务场景下必须要使用自增序列的,也属于正常,如果大家有更好的方案,欢迎讨论。在某些特定的业务场景下,会需要使用自增的序列来维护数据,目前项目中因为使用MongoDB,顾记录一下如何使用MongoDB实现自增序列。的值作用本次序列,实现自增序列。

2023-07-04 11:19:13 1634

原创 Spring boot MongoDB 实现自定义审计字段

是Spring Data提供的一个接口,用于提供当前执行数据库操作的"审计员"的信息。"审计员"可以是当前操作的用户、系统的默认用户或其他相关信息,用于记录和跟踪数据的变更历史。,只要在保存文档之前将数据拦截处理就可以实现字段填充。除了上面这种方式,还可以通过实现。的作用是为实体类中标记了。

2023-07-03 18:22:43 1042

原创 Spring Data MongoDB实现@DBRef级联存储

使用@DBRef进行级联存储的方式就是通过继承`AbstractMongoEventListener`并重写`onBeforeConvert`方法在保存文档之前先保存子对象,就可以实现级联存储,需要注意,使用当前配置会全局生效,如果想要自定义级联存储可以使用自定义注解实现,扫描指定注解后进行级联存储。

2023-07-03 16:44:16 1162

原创 Springboot MongoDB封装通用Servcie

封装的通用Service,也可以使用之前文章自定义Repository来实现,如果同学们有更好的方案欢迎讨论。构建通用Service的实现,此处基于。实现,当然也可以使用之前文档自定义通过。构建通用Service,

2023-07-03 15:51:13 958

原创 Springboot MongoTemplate封装通用Repository

虽然Spring boot也提供了Mongodb JPA的操作类MongoRepository,但面对复杂操作时,没有MongoTemplate操作灵活,两个可以配合使用,取长补短。

2023-07-03 15:24:22 546

原创 MongoDB使用ObjectId作为主键时id序列化问题

默认主键生成策略,是 MongoDB 提供的默认生成方式,使用 12 字节的 BSON 类型存储主键,包含了时间戳、机器标识、进程标识和随机数)的字段作为主键,也可以使用注解@Id指定主键,可以作用于字符串、数字、对象等,除了使用@Id指定主键还可以自定义主键,例如自增序列等,但是建议使用默认生成策略。MongoDB主键,由时间戳(四个字节)、机器ID(三个字节)、进程ID(两个字节)、计数器(三个字节)四部分构成。以上就是使用ObjectId作为主键时序列化解决方案,如果有更好的解决方案欢迎探讨。

2023-07-03 15:19:17 946

原创 工欲善其事必先利其器(Windows)

此命令只是临时生效,关闭窗口后重置,使用以下命令永久配置,回车后如提示没有文件,按照提示创建文件。将单引号中的内容替换为想要的主题名称或Github地址,保存退出即可,例如想要切换为。可以像使用Linux终端一样爽,可以记录命令历史、命令提示、Table补全等等。在PowerShell中执行以下命令,安装Scoop。默认的主题其实已经足够了,但是如果想要切换主题,在。中列出主题名称及样式,选择喜欢的主题进行切换。,然后执行以下命令,查看Clink安装目录。,并将以下内容复制到文件,保存后重启。

2022-10-19 16:21:44 954 1

原创 nvm安装及使用

如不卸载原有版本,会造成冲突,安装完nvm发现不了已安装的nodejs版本,建议卸载之前的版本。下载完解压,选择没有特殊字符及中文的目录(否则会提示找不到命令或目录)后一直下一步安装即可。能够发现,此时已被使用的版本前面有了星号,且提示当前版本被使用,此时再次使用命令。发现提示没有命令,不要慌,不是没有安装成功,而是没有使用。如不配置,安装nodejs贼慢,建议配置。npm配置淘宝镜像,如不配置,安装包特别慢。查看已经安装的nodejs版本列表。使用指定版本的nodejs,以。注意安装成功,此时使用。

2022-10-14 23:05:02 1657

原创 设计模式之组合模式

组合模式(Composite Pattern)是一种结构型设计模式, 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式用于将多个对象组合成树形结构以表示“整体-部分”的结构层次,组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。简单来说,需要实现树状结构(整体-部分),适合使用组合模式,反之不适合(不代表不能用,需要特殊适配,得不偿失)。

2022-09-29 16:44:42 660

原创 设计模式之桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式, 通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合, 从而能在开发时分别使用。举个例子,例如某个手机厂商生产三个品牌的手机:小米、华为、苹果,每个品牌又分为64G、128G、256G,那么,将会有13个类:桥接模式用聚合的方式代替继承,降低抽象与具体的耦合,重点在于“解耦”,一句话总结:双重维度扩展。桥接模式和组合模式的区别:组合模式侧重于整体与部分,桥接模式侧重于同级别类。

2022-09-27 11:24:11 596

原创 设计模式之适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作,即定义一个包装类,用于包装不兼容接口的对象。适配器模式是指定义一个适配器类,将一个已经存在的类,转换成目标接口所期望的行为形式,总而言之建议尽量使用对象的适配器模式,多用合成/聚合、少用继承。

2022-09-25 21:46:31 275

原创 设计模式之原型模式

原型模式是一种创建型设计模式,是指创建新对象的时候,根据现有的一个原型来创建。简单来说就是就是对象的克隆()。原型模式分为浅拷贝和深拷贝:(浅复制)只是拷贝了基本类型的数据,而引用类型数据,只是拷贝了一份引用地址。(深复制)在计算机中开辟了一块新的内存地址用于存放复制的对象。如果你有一个对象, 并希望生成与其完全相同的一个复制品,那么你可以用原型模式。

2022-09-24 22:13:14 278

原创 设计模式之创建者模式

Builder构建器模式也被称为生成器模式,是一种创建型设计模式, 分离复杂对象的创建和表示。简单理解就是内部有许多“小工厂”创建对象,最终来组建一个完全体。创建者模式让我想起来很早之前的一部动画片《战神金刚》,组成脚和腿,组成躯干,我来组成头部。创建者模式和模板方法模式极其相似,创建者模式强调的是对象的创建,模板方法模式强调的是方法的执行。创建者模式和工厂模式的区别,创建者模式侧重于产品的类型和创建顺序,工厂模式侧重于创建产品。

2022-09-24 12:10:51 172

原创 设计模式之工厂模式

工厂模式是一种创建型设计模式, 在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型(继承、多态)。工厂模式划分为三类:简单工厂(静态工厂)模式、工厂方法模式、抽象工厂模式,在GoF的《设计模式: 可复用面向对象软件的基础》将简单工厂模式划分为工厂方法模式。一句话表示:任何可以产生对象的方法或类,都可以称之为工厂。

2022-09-22 18:29:02 285

原创 设计模式之单例模式

单例模式是一种创建设计模式,确保类只有一个实例,同时为此实例提供全局访问点,换句话说就是在JVM中,某个类只允许被创建一次(唯一实例),之后所有的操作都是基于同一个实例。单例模式同时解决了两个问题(保证类只有一个实例、提供全局访问点),所以违反了单一职责原则。以上几种单例模式实现方式中,除了枚举方式外,其他几种方式都可以通过序列化和反序列化绕过类的private构造方法从而创建出多个实例(实际开发中也不会有人去这么做,费力不讨好)。

2022-09-21 17:29:52 642

原创 系统设计原则及技术指标

不要为了用某项技术而使用,某项技术的使用是为了应对业务增长带来的系统瓶颈问题,例如一个简单的OA系统,你非要使用微服务、分布式架构、亿级流量缓存,除了增加了开发、运维成本,还要应对开发过程中的种种问题,“不是贵的才是最好的,适合自己才是最重要的。系统的初期,以核心业务为主,快速上线,占取市场份额,等待用户及市场反馈,及时调整需求进行项目迭代,不要一开始就想开发一个淘宝或者京东,也许你可以开发出来,但是市场份额已满,到头来一场空。当部分代码在多个地方出现,或者你有想要拷贝的欲望时,证明需要重构次部分代码了。

2022-09-20 17:28:34 2017

原创 23种设计模式总结

设计模式(Design Patterns):是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案设计模式概念首次出现在编程领域是在1994年,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人(简称GoF)合著出版了一本名为设计模式: 可复用面向对象软件的基础的书,该书中讲述了使用23种设计模式解决了面向对象的各种问题。• OCP: 总纲,对扩展开放,对修改关闭• SRP: 类的职责要单一。

2022-09-20 17:16:05 246

原创 Docker 部署nginx记录

Docker 部署nginx

2022-07-26 17:10:49 521 1

原创 No qualifying bean of type问题解决

No qualifying bean of type问题解决前言No qualifying bean of type ‘xxx.xxx.xxx’ available: expected single matching bean but found 2:xxx.xxx.xxx对于一个java开发新手来说, 应该经常会遇到这个问题,而且还不好意思询问周围同事,不要怕,今天就让我们解决掉它。问题及解决方案问题1包扫描不正确或未扫描默认情况下,如果使用了springboot,他会默认扫描启动类(

2022-05-06 16:58:21 63694

原创 Springboot集成Swagger2

Springboot集成Swagger2前言​ 多年以前写过一篇 springMVC整合swagger(亲自试验完全可用),但随着springboot的流行,今天记录一下springboot集成swagger2的使用过程,swagger3的集成类似只不过依赖调整了一下,后面会提到。集成添加maven依赖<properties> <swagger.version>2.9.2</swagger.version></properties><!

2022-05-06 15:47:28 685

原创 HTML中给div加超链接

HTML中给div加超链接前言​ 最近开发一个静态公司官网,其中有四个推荐位,推荐位由图片,标题,简介组成,要求点击推荐位的任意位置皆可跳转到指定页面。解决方式方式一使用 window.location.href 跳转,如下代码所示:<div class="recommend" onclick="window.location.href='https://first.com';return false"> <img class="recommend_img" src=

2022-04-25 15:56:22 6230

原创 Git分支合并(merge)时忽略某个文件或者目录

Git分支合并(merge)时忽略某个文件或者目录前言​ 最近使用VUE开发构建了项目,因为打包发布引发了一场小意外,就是不同分支的dist文件夹合并时发生冲突,而且有时先打包后合并的分支,导致两个分支实际发布的是同一套代码,导致乌龙事件的发生,虽然很快找到了问题,但是还是有些尴尬,本文主要记录如何在合并分支时忽略某些文件或者目录。操作步骤1. 定义虚拟的合并策略git config --global merge.ours.driver true其他配置可参考 Git配置2. 编辑规

2022-04-21 10:50:29 5532

原创 Ucloud之us3不同区域文件同步

us3文件同步

2022-04-13 16:49:54 197

原创 区块链开发之Metamask使用调研

区块链开发之Metamask使用调研支持的浏览器​ 链接Metamask自动链接Metamask钱包。代码示例const Web3 = require("web3");const ethEnabled = async () => { if (window.ethereum) { //获取账户地址 const account = await window.ethereum.request({method: 'eth_requestAccounts'}); c

2022-02-23 16:27:56 16166

原创 常用软件推荐 - Java开发

常用软件推荐 - Java开发前言​ 本人Java开发者一个,本文章主要记录自己使用的一些软件,如果喜欢可以下载安装体验一番,这里我今介绍我使用过的或者目前正在使用的软件,毕竟有了靠谱的工具会大大增加我的的工作效率及生产力。开发工具IntelliJ IDEA这个没什么可以说的,毕竟Java开发神器,没有不使用的吧,如果有请保持沉默。Navicat Premium虽然IDEA中内置了数据库工具,但是相比较而言,Navicat使用更加丝滑,支持提示、补全等功能。当然还有jetbrains家

2022-02-23 15:57:15 121

原创 PicGo + Gitee实现markdown图床

PicGo + Gitee实现markdown图床

2022-02-22 18:28:56 467 2

原创 Windows 命令执行时间统计方式

Windows 命令执行时间统计方式前言​ 日常开发过程中经常会遇见需要统计命令执行时间的需求,所以本片文章主要记录一下本人经常使用的几种方式。常用方式Measure-Command介绍在内部执行脚本并计算操作的执行时间。使用方式Measure-Command{你的命令}例如:Measure-Command{echo hello}Measure-Command{echo hello}----------------------------------------------Day

2021-12-28 15:24:08 4981

原创 【FFMPEG】视频转码之VOB视频无声处理

1、确定视频格式首先确定视频格式是或为常用格式,例如:mp4,mkv,mov…等常见且可直接转码的视频文件,如是则进行步骤 2,不是则见步骤 3。2、命令行转码以下为转码命令Measure-Command {ffmpeg -vsync 0 -hwaccel qsv -hwaccel_output_format qsv -y -i output.mp4 -c:v h264_nvenc -c:a aac -b:v 1800k -s 1920x1080 -hls_playlist_type .

2021-12-28 11:23:05 2413

原创 FFMPEG之视频编码那些事儿

抛砖引玉首先我们先计算以下 1080P 60fps 的视频文件大小通过上图可知一秒钟的视频应该是342MB,但实际我们看的视频并没有这么大,那是因为我们看的视频都是进行压缩之后的,实际大小只有1~2MB,那到底是如何实现的呢,我们后面慢慢讲解。分辨率就如上面所说,1080p是什么?下面这些又是什么?HD:1280x720FullHD:1920x10802k:2560x1440上面这些我们日常生活中应该都听过或者看到过,那这些都是什么?没错,这就是分辨率。分辨率 = 横向像素*纵

2021-11-25 17:38:51 1062

原创 FFMPEG 使用显卡加速转码

FFMPEG 使用显卡加速转码前言视频转码时如果遇见视频比较大、时长很长的时候,转码压制需要等待很久且及占用cpu,所以就在想有没有什么办法可以加速转码进度呢 ,故本篇文章记录FFMPEG如何调用显卡对转换编码格式或者压制进行加速。软硬编解码的区分:软编码:使用CPU进行编码硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等软硬编解码的区别: 软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。

2021-11-25 15:53:45 10695 5

原创 FFMPEG 合并视频文件(无损)

FFMPEG 合并视频文件(无损)前言最近在做视频转码相关业务,但是片源商给了一些DVD的零散视频片段,需要自己去合并片段并进行业务转码,本篇文章主要记录视频合并的过程及常见的合并方式。环境FFMPEG BUILDS 4.4.1FFmpeg BuildsGeForce GTX 1060(NVIDIA)显卡支持列表windows 10OVB格式视频文件VTS_01_1.VOBVTS_01_2.VOBVTS_01_3.VOBVTS_01_4.VOBVTS_01_5.

2021-11-25 11:49:51 2965

原创 Linux 下Java环境的安装

环境CentOS Linux release 7.9.2009Java 8vim下载JDKJDK下载地址 ,默认是最新版本,下拉即可看到其他版本。选择自己的jdk版本,以java8为例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgOcHBLd-1637561381329)(https://s6.jpg.cm/2021/11/22/IOe6yE.jpg)]下载 jdk-8u311-linux-x64.tar.gz 到 /usr/local/src目录下

2021-11-22 14:10:37 512

原创 Nginx 配置CORS解决跨域

什么是跨域?由于浏览器的同源策略,一个域下的文档或脚本试图去请求另一个域下的资源,就会产生跨域,那么怎么才算同源呢,即满足 协议相同、端口相同、主机相同。跨域常见情景跨域常见错误Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

2021-11-19 15:44:13 2975

原创 Git 常用命令

Git 标签相关打标签git tag -a <tagname> -m "<tagdesc>"删除标签git tag -d <tagname>删除远程标签git push origin --delete <tagname>推送指定标签到远程git push origin <tagname>推送所有标签到远程git push origin --tags取消合并git merge --abort撤销提交- git

2021-11-19 15:15:53 78

原创 spring boot 、vue-simple-uploader 实现分片、断点上传

前言​ 公司最新有个需求需要上传大文件,需要支持分片及断点上传,需要有上传、暂停、取消等功能,且支持关闭浏览器后下次打开继续上传。本片文章记录我使用vue-simple-uploader的过程。环境vue 2.6.10vue-simple-upload 0.7.6springboot 2.5.xmysql5.xmybatis plus 3.4.1vue-simple-upload 是什么?vue-simple-uploader是基于 simple-uploader.js 封装的vue

2021-11-19 15:00:54 1742

原创 shiro使用爬坑记录之shiro-redis

shiro使用爬坑记录之shiro-redis前言​ 权限认证使用的一直都是shiro,因为项目重构导致之前的认证不可用,故本片文章记录排错过程。环境SpringBoot 2.1.3.RELEASEMybatis-plus 3.1.2Shiro 1.4.0Jwt 3.7.0shiro-redis 3.1.0错误信息class java.lang.String must has getter for field: authCacheKey or id We need a field

2021-10-14 12:39:12 369

原创 Linux之基础网络配置

前言​ 因为某种特殊原因,需要使用Linux系统进行操作,但是采购的主机是一台初始的Linux系统,没有网络,无法通过ssh进行连接,本片文章主要记录一下Linux中的网络配置。环境CentOS Linux release 7.6.1810网络配置查看网卡信息命令:ip a默认情况下是没有ifconfig命令的,需要联网后安装 net-tools之后才可以使用。输出:[root@localhost]# ip a1: lo: <LOOPBACK,UP,LOWER_UP>

2021-10-14 11:45:38 1031

原创 前端使用ASE加解密(AES/CBC/NoPadding)

前端使用ASE加解密(AES/CBC/NoPadding)前言最新因需求变动,原有Android系统已经不满足现有的需求,需开发PC端的客户端,对应的数据加解密也不能公用同一个类库(后端服务使用的JAVA),现有架构使用的是nodejs,所以记录以下加解密的过程。环境nodejs v14.17.5vue3electron 13.0.0安装加解密依赖yarnyarn add crypto-jsnpmnpm install crypto-js --save-dev加解密工具类A

2021-09-08 16:52:11 3483 9

分片上传文件工具类FileInfoUtils

分片上传文件工具类,对应文章为:https://blog.csdn.net/y534560449/article/details

2022-04-20

高级重命工具(Advanced Renamer)便携版

一键批量重命名

2021-04-13

FastStoneCapture_9.4_Portable[录屏].exe

小巧简单的录屏软件

2021-04-13

Defender Control v1.7[关闭win自带防火墙].zip

Win10 自带防火墙占用资源大,不用怕,一键关闭,一键开启

2021-04-13

Bandicam[录屏软件].zip

Win用户福利,轻量级录屏软件

2021-04-13

Auto.js Prov7.0.8-3[免登录Pro版]_sign.apk

Auto.js Prov7.0.8-3[免登录Pro版]

2021-04-13

SSM精华案例

spring+springmvc+mybatis精华版

2017-03-09

HttpClient所需的jar包

HttpClient所需的jar包

2016-12-21

SSM项目集成shiro

SSM项目集成shiro

2016-12-19

ssm整合swagger

本项目是基础的ssm整合+与quartz+swagger整合案例

2016-12-16

微信接入源码案例

微信接入源码案例

2016-12-08

java发送邮件jar包

java发送邮件jar包

2016-12-08

mybatis逆向工程生成项目

mybatis逆向工程生成项目,下载下来只需修改数据库驱动类型和需要生成的表名称即可,操作简单直接运行GeneratorSqlmap的main方法即可生成

2016-12-06

mybatis逆向工程生成

mybatis逆向工程生成 包含jar 和配置文件

2016-12-06

python学习CHM参考文档

适合初学者的python CHM文档

2016-12-06

mybatis二级缓存学习

mybatis 二级缓存学习

2016-12-05

ssm+分页整合

ssm和分页整合

2016-12-05

spring+springmvc+mybatis整合源码

spring+springmvc+mybatis整合案例,简单易懂

2016-12-05

Python安装MySQL安装包 64位 py2.7 [exe文件]

python的mysql连接依赖模块

2016-12-01

python基础教程pdf

本书适合python初学者

2016-11-29

navicatpromium安装加破解包64位

解压后直接安装,安装完运行破解文件即可。

2016-10-29

SecureCRT6.2.0.195

SecureCRT6.2.0.195,学习linux的必备工具

2015-11-19

运维工程师必会的109个Linux命令

运维工程师必会的109个Linux命令,适用于初学者

2015-11-19

python的chm帮助文档

python的chm帮助文档,初学者的瑰宝,高手的甜点

2015-11-19

空空如也

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

TA关注的人

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