自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用 Jpom 自动化构建并部署项目

Jpom 是一款专为开发者设计的轻量级运维工具。它提供了一整套从项目构建到自动部署,再到日常运维和项目监控的解决方案,帮助开发者更好地管理和维护项目。

2024-08-28 18:13:13 3934 2

原创 区块链基础

区块链技术本质上是一个去中心化的数据库,它是比特币的核心技术与基础架构,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式加以保证的不易篡改、不易伪造的分布式账本。

2024-08-17 17:25:04 4760 4

原创 Arthas:Java应用诊断利器

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。开发人员可以使用 Arthas 在线解决生产问题。无需 JVM 重启,无需代码更改。Arthas 作为观察者永远不会暂停正在运行的线程。

2024-08-17 16:44:46 939

原创 用 Java 实现 Syslog 功能

用一个 Spring Boot 的项目去实现对管控设备的监控、日志收集等。同时需要将接收到的日志进行入库,每天存一张表,如device_log_20231026…

2023-10-31 10:28:55 3391 1

原创 设计模式 - 责任链

​ ​客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

2023-09-05 11:40:09 962

原创 使用nps实现内网穿透

​当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。

2023-08-29 17:04:45 3325 2

原创 使用frp实现内网穿透

​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。

2023-08-10 11:01:00 5191

原创 Java 使用 Google Guava 实现接口限流

自定义注解:@Limiter/*** 限流注解/*** 每秒创建令牌个数,默认:0.5* 代表每秒允许通过的请求数为0.5个,即2秒只能通过一个请求/*** 获取令牌等待超时时间 默认:500/*** 超时时间单位 默认:毫秒/*** 限速提示信息*/ String msg() default "访问过于频繁,请稍候再试";/*** 限流注解/*** 每秒创建令牌个数,默认:0.5* 代表每秒允许通过的请求数为0.5个,即2秒只能通过一个请求/**

2023-07-24 10:12:54 938

原创 Java 使用 oshi 获取当前服务硬件信息(操作系统、CPU、内存、磁盘)

这里需要引入两个依赖包:</</</</</</</</

2023-07-06 14:13:33 6055 4

原创 Docker 安装 Jenkins 并部署 Maven 项目

此处我建议点击“安装推荐的插件”的选项。然后耐心等待,有可能部分插件会安装失败,因为此处的下载源在国外。部分插件安装失败,我们可以点击重试,如果多次重试仍然失败(就是我本人),我们直接点击下一步。

2023-06-07 10:58:43 5245 2

原创 Spring Boot 整合流程引擎 Flowable(附源码地址)

一、导入依赖flowable依赖:<dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>6.7.2</version></dependency>pom.xml:<?xml version="1.0" encoding="UTF-8

2023-05-24 16:02:08 2365

原创 JDK多版本配置及切换版本不生效问题解决

首先你要有多个版本的jdk,如果没有请移至。

2023-04-24 16:46:49 3785 7

原创 IDEA 返回上一步、下一步 Back ← Forward → 快捷键失效问题解决

在网上找了半天失效原因,发现没得一个靠谱的,最后突然发现可能是快捷键冲突,于是发现了问题。笔者此处是和网易云音乐的快捷键冲突了(这里需要一个软件一个软件退,退了再在IDEA界面试试生不生效,我这里就是退到网易云音乐的时候,就突然生效了,才发现这个问题)。然后找到Main Menu下的 Navigate,看看这个两个快捷键是否和我一样,如果一样说明快捷键设置没问题,大概率是和其他软件快捷键冲突了。这里的上一首和下一首快捷键和IDEA的快捷键冲突了,改一下网易云上的设置即可。

2023-04-24 09:34:45 4316 4

原创 Java同学入职环境安装全讲解

最近入职一家新公司,拿到新电脑,那肯定有绕不开的装开发环境流程。下面我就从安装jdk、maven、git、idea四个方面讲解(主要提供各个软件官方的下载网址,因为百度搜出来的东西大家懂的都懂我就不多说了)。如果只需要看某一个软件,自行跳转即可。

2023-04-12 10:52:50 2486

原创 如何保证Redis与数据库的数据一致性

如何保证Redis与数据库的数据一致性

2023-02-02 18:10:40 4316 2

原创 Java IP归属地查询(离线方式+在线方式,内附查询IP方法)

IP归属地查询(离线+在线方式,内附查询IP方法)

2022-11-04 18:54:11 3722 1

原创 Mac使用NATAPP完成内网穿透

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。换句话说就是能让其他人像访问外网一样访问你的内网。...

2022-07-12 18:47:07 5221 3

原创 使用JProfiler排查内存溢出(OOM)

一、下载JProfiler客户端下载地址:https://www.ej-technologies.com/download/jprofiler/files无脑下一步,选择IDEA即可,然后集成。二、IDEA集成JProfiler插件安装完成后如果IDEA的右上角有下图标志,即为安装成功,如果没有的话,可以重启IDEA尝试。接下来进行绑定客户端,如下图:笔者此处使用的是Mac版本,选择后缀为app的JProfiler即可,如果为windows的小伙伴应该是在需要选择bin目录下的JProfl

2022-05-24 15:08:15 1958

原创 Nexus私服搭建及Maven集成(Windows版本 - 巨详细)

一、Nexus下载下载地址:https://www.sonatype.com/products/repository-oss-downloadPS:此处链接访问后,会让你填一些信息才能让你访问到具体的下载页面。这里可以随意填写,不用嫌麻烦,填好后就会出现具体的下载页面,如图:如果你实在不想填,可以直接访问:https://www.sonatype.com/thanks/repo-oss这个地址就是填完后跳转的具体下载页面。这里我选择的是OSS 3.X - Windows版本,下载后解压会得到如下

2022-04-26 21:00:21 2170 4

转载 <? extends ...>与<? super ...>区别与理解

一、<? extends …>extends指上界通配符,示例中指的是所有Fruit类及其派生的子类。对该通配符指示的容器进行写入操作(set),就像收到一个包裹,上面写了包裹里都是水果,但编译器并不事先知道具体是哪一种水果,如果里面是香蕉,但放入了一个苹果就会造成错误,所以编译器禁止这种操作。public void Func( List <? extends Fruit> temp) { temp.set(...); //compile time error}而

2022-04-25 16:19:41 4709

原创 SpringBoot集成Minio7.x文件存储服务器(包含服务器安装搭建)

一、版本选择直到笔者写这篇文章的时候Minio-API已经出到了8.x,我试用过,发现8.x版本的API主要的改动就是把零散的一些入参,整合成了一个个对象。经过对比,我发现还是7.x的简单易懂,如果小伙伴用的是8.x版本的Minio-API那么不建议你看第三步,因为我的方法已经不适用了。二、Minio服务器搭建2.1 下载因为Docker下载安装启动各种中间件过于简单和方便,所以此处只介绍手动下载。Minio官方下载地址:http://www.minio.org.cn/download.shtml

2022-04-12 12:01:23 863

原创 Git使用SSH拉取代码,附带生成SSH Key(超详细之一定能成功)

一、查看电脑上是否已经存在SSH公钥cd ~/.sshls默认情况下,用户的SSH密钥存储在.ssh目录下,如果有id_rsa、id_rsa.pub这两个文件说明你已经生成过SSH密钥了,请跳过以下生成步骤。其中id_rsa是私钥,而id_rsa.pub是公钥。二、生成SSH密钥ssh-keygen -t rsa -C "这里换上你的邮箱"回车后,1.首先会让你确认密钥的生成位置,如果不需要更改路径则直接回车。如果这个路径下已经存在密钥则需要让你确认是否需要覆盖旧密钥文件。2.之后会让你

2022-04-09 16:16:52 10996 1

原创 实现ConstraintValidator完成自定义校验注解

一、导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>二、自定义注解类此处我用一个非常简单的例子来说明,主要是看结构。OnlyNumber :/** * @Description: 只能包含数字,同时可以

2022-04-09 16:10:38 2916 2

原创 SpringBoot实现i18n国际化配置(超详细之跟着走就会系列)

一、新增国际化资源文件在resources文件下新建i18n文件,并新建国际化资源文件。如图:点击新增Resource Bundle文件。我们在Resource bundle base name处填写国际化文件的名称,笔者此处填“messages”。并点击中间偏右的“+”号,新增国际化语言,此处新增两个语言“zh_CN”,“en_US”。点击ok保存,看到这样的文件结构,就表示创建成功了:分别在两个文件中添加zh_CN:A00001=你好,世界A00002=你好,JAVAen_US:

2022-04-09 15:38:16 33659 16

原创 SpringBoot集成XxlJob分布式任务调度中心(超详细之手把手教学)

一、前言废话就不多说了,介绍Xxl-Job的网上已经有很多,本文就不多加复制粘贴了,直接步入第二步。(PS:本文包括Xxl-Job分布式定时任务调度中心的搭建,以及SpringBoot集成XxlJob的全过程。如果不想了解搭建的小伙伴可以直接调到第三步。)二、Xxl-Job分布式定时任务调度中心搭建2.1 下载源码地址:https://github.com/xuxueli/xxl-job我使用的2.3.0版本的,这是目前最新的版本。下载好后,我们使用IDEA打开,可以看到如图的几个模块:

2022-04-09 14:46:57 15838 3

原创 通过mapstruct实现对象之间的相互转换

1.导入依赖<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.3.1.Final</version></dependency><dependency> <groupId>org.mapstruct</groupId

2022-01-26 18:55:37 644

原创 使用Java中的JsonSerializer进行类型转换

我的需求是将BigDecimal类型转为保留两位小数的String,这个时候就可以用到java中的JsonSerializer这个类来帮我实现。1.编写一个类,去继承JsonSerializer<>类.public static class BigDecimalKeepTo2 extends JsonSerializer<BigDecimal> { @Override public void serialize(BigDecimal value,

2022-01-26 18:18:11 960

原创 StopWatch通过打印日志记录方法耗时

我们经常会碰到这样的情况,当前端同事或者测试向你反应某个接口很慢的时候,我们就需要去排查这里面的那些代码块处理比较慢。这个时候就需要使用到打印日志的方式。不同的包的StopWatch类方法不一样,但是都大同小异。我目前用的是springframework.util包下的。public static void main(String[] args) { long start = System.currentTimeMillis(); System.out.println("==========

2022-01-26 16:55:41 1616

原创 SpringBoot集成Liquibase

一、前言Liquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据) 都保存在XML文件中,便于版本控制。liquibase说白了就是一个将你的数据库脚本转化为xml格式保存起来,其中包含了你对数据库的改变,以及数据库的版本信息,方便数据的升级和回滚等操作。二、SpringBoot集成Liquibase2.1 导入依赖maven: <!-- https://mvnrepository.com/artifact/org.liquiba

2021-11-08 17:45:39 1235 2

原创 工厂+策略+模板模式实战

一、前言最近项目中连续遇到两次业务都需要用到工厂+策略模式来实现。具体业务如下,可以参考参考和自己的业务是不是相似。1.系统预警功能这个功能刚开始就包含三十多个指标,后续可能还会增加。为了以后增加指标的时候代码的扩展性强,而不是在一个方法里面if-else,就使用到这种工厂+策略的方式来实现。2.三重福利功能这个功能就是判断当前用户是否完成了具体任务,然后领取优惠券。虽然当时接到任务的时候需求就只有三个福利类型,但是为了预防以后增加福利的时候,能快速实现,也就采用了工厂+策略的方式来实现。二、实

2021-10-27 11:44:00 506

原创 IDEA代码被覆盖如何找回(已解决)

其实IDEA这个功能有很多没有发生这个事故的开发小伙伴还不知道,IDEA会在我们日常开发的时候不断的给我们在本地做备份记录,为的就是应对我们有时候代码因为误操作被覆盖了,或者断电代码丢失了的情况。一、右键项目,找到Local History二、点击Local History,然后选中Show History,如图:三、根据左侧的时间来找当时自己误操作的时间,然后点击类进行查看。把代码复制粘贴出来,问题就能够得到解决了。...

2021-07-28 11:01:18 4978

转载 Notepad ++ 关联到右键菜单(亲测有效)

博客地址:https://blog.youkuaiyun.com/weixin_43096084/article/details/104260140

2021-05-21 10:39:41 500

原创 restTemplate调用接口返回为数组格式接收方式

之前工作中调用接口的返回参数都是如下格式:{ "data": [ { "name":"张三", "age":25 }, { "name":"李四", "age":26 } ], "status": 1, "msg": null}习惯性会封装一个最外层的对象来接收:/** * 最外层接收类 * (以下所有对象类为了看起来简洁均不写getter、setter方法) */public class Stu

2021-03-11 11:08:25 2940 1

原创 git The requested repository does not exist,or you do not have permission git did not exit cleanly解决

今天接手一个老项目,需要从git远程仓库将代码拉到本地,遇到了这个问题。最后原因是因为换了电脑,使用的是以前同事的电脑,直接git clone的话他会用以前同事的账号密码去拉,结果以前同事没有这个代码仓库的权限,导致了该问题。解决方案:将用户名密码换成自己的。具体方法:1.打开控制面板2.点击用户账户3.点击凭据管理器下的“管理windows凭据”4.在普通凭据下找到你项目的git地址5.点击编辑修改账户密码,修改完之后再次拉代码就ok了。(这里只提供我遇到的情况,可能还有很多情况

2021-02-26 16:01:10 2935 1

原创 IDEA输入字母间距变大报红处理方法

出现这种情况可能是因为你误按到了shift+空格键,再按一次shift+空格键即可恢复。

2020-12-30 17:08:24 3563 7

转载 git创建与合并分支图文讲解

git创建与合并分支图文讲解

2020-12-25 17:20:49 174

原创 Java输出日志logback.xml(附代码)

色 执行结果 HSSFColor.ROYAL_BLUE HSSFColor.TEAL HSSFColor.LIME HSSFColor.PALE_BLUE HSSFColor.AQUA HSSFColor.GREEN HSSFColor.TURQUOISE HSSFColor.DARK_BLUE HSSFColor.CORNFLOWER_BLUE HSSFColor.OLIVE_GREEN HSSFColor.WHITE HSSF.

2020-12-17 14:49:53 970

原创 Java使用Poi的一些基本操作(合并单元格、设置单元格背景色、设置单元格边框颜色、设置字体颜色、是否加粗等等)

近半年的开发中都在和导入导出打交道,涉及到导出那自然避免不了一些单元格的合并、设置单元格背景色、设置单元格边框颜色、设置字体颜色、字体是否加粗等问题。因此想要总结一下,也让以后遇到类此问题可以方便查看。下面我将一一用代码来展示。一、设置单元格的列宽//首先需要new一个Workbook工作簿Workbook workbook = new XSSFWorkbook();//然后用workbook创建一个SheetSheet sheet = workbook.createSheet("三、区域整体完成

2020-12-17 14:35:20 9189 2

原创 List深拷贝(附代码)

最近工作遇到了需要将一个list的信息存于另外一个新的list中,再将新list中的部分字段做变换,再拿去ERP做校验。如果校验通过,就拿老的list继续往下走。这个时候就需要用到list的深拷贝了,话不多说,直接上代码:/** * List 深拷贝 * @param srcList * @param <T> * @return */ public static <T> List<T> depCopy(List<T> srcList)

2020-08-20 15:18:12 1028 1

原创 SpringMVC的执行流程 - 超详细(面试必备、图文)

1.用户(前台)发送请求到前端控制器DispatcherServlet2.DispatcherServlet收到请求后调用HandlerMapping处理器映射器3.处理器映射器根据请求的url地址找到具体的处理器,生成处理器对象及处理器拦截器(如果有的话就生成)一并返回给DispatcherServlet4.DispatcherServlet通过HandlerAdapter处理器适配器调...

2020-01-08 18:52:50 623

空空如也

空空如也

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

TA关注的人

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