自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 问答 (1)
  • 收藏
  • 关注

原创 jenkins流水线(jenkinsfile)详解,保姆式教程

Pipeline 即流水线,是 jenkins2.X 的新特性,是 jenkins 官方推荐使用的持续集成方案。与传统的自由风格项目不同,它是通过 jenkins DSL 编写代码来实现。相比于之前用户只能通过 Web 界面进行配置的方式来定义 Jenkins 任务,现在通过使用 jenkins DSL 和 Groovy 语言编写程序,用户可以定义流水线并执行各种任务。......

2022-08-11 11:03:34 49153 15

原创 Git使用详解全图文(基于gitee),看这一篇就够了

git使用详解全图文(基于gitee),看这一篇就够了Git又名分布式版本控制系统:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。Git易于学习, 占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有廉价的本地分支、方便的暂存区域和 多个工作流等功能。

2022-04-17 22:32:54 14443 5

原创 Docker Desktop 安装 Linux(告别传统的虚拟机VMware)

Windows系统上使用Docker Desktop安装和运行CentOS 7容器,以替代传统的VMware虚拟机方案。内容包括Docker Desktop和WSL2的安装配置、国内镜像源设置,以及CentOS 7镜像的拉取和容器启动步骤。重点讲解了在容器内安装配置SSH服务,并通过端口映射实现本地SSH工具(如FinalShell)连接容器,从而提供一个轻量、高效的Linux学习环境。文章还提供了常见问题的解决方案,例如容器重启后SS服务的自启动配置,适合初学者快速搭建Linux环境用于开发和学习。

2025-09-06 11:10:40 729 1

原创 JVM参数调优(GC 回收器 选择)

JVM参数调优摘要 JVM通常采用"通用型"默认配置,多数场景无需调优。调优需基于证据,针对低延迟、高吞吐量、低内存占用三大目标进行权衡("不可能三角")。JDK8主要提供7种垃圾回收器组合,其中Parallel Scavenge+Parallel Old(高吞吐)为默认,G1(低延迟)在JDK9成为默认。关键调优参数包括:-Xms/-Xmx(堆大小)、-XX:+HeapDumpOnOutOfMemoryError(OOM时导出dump)、-Xloggc(记录GC日志

2025-09-04 21:20:28 864

原创 JVM分析(OOM、死锁、死循环)(JProfiler、arthas、jdk调优工具(命令行))

本文介绍了使用JDK自带工具分析JVM常见问题的方法,包括OOM、死锁和死循环。通过测试代码演示了三种问题的产生场景,并详细讲解了JPS、JStack和JMap等工具的使用。针对OOM问题,配置了堆转储参数和GC日志记录;针对死锁和死循环问题,提供了线程状态分析指南。文章还比较了不同工具在Linux和Windows环境下的适用性,为Java开发者提供了一套完整的JVM问题排查方案。

2025-09-03 14:44:12 787

原创 springboot提前注册bean

SpringBoot项目中由于类加载顺序导致的Bean初始化问题。原SSM项目中通过XML配置优先加载的PropertiesUtil工具类,在迁移到SpringBoot后因加载顺序改变而出现空指针异常。作者通过分析JVM类加载机制和Spring IOC容器初始化过程,发现问题的根本原因是静态常量在初始化阶段依赖尚未注册的Bean。最终提出了使用ApplicationContextInitializer接口的解决方案,在应用上下文刷新前手动注册关键Bean,避免了大规模代码修改。

2025-08-30 17:24:49 857

原创 String的最大长度剖析

JVM规范中String常量在class文件中以CONSTANT_Utf8_info结构存储,包含1字节tag、2字节length和变长bytes数组。理论上最大长度应为65535(2^16-1),但实际测试发现65534个字符可编译,65535个字符会报错。通过分析JDK源码发现,编译器在Pool类中设置MAX_STRING_LENGTH为65535,但JVM规范存在历史缺陷:当字节码长度正好65535时,最后一条指令无法被异常处理保护。因此编译器将字符串最大长度限制为65534,以避免潜在问题。这一限制

2025-08-24 13:57:26 695

原创 优雅的请求接口(java)

本文介绍了一种通过模板类实现请求与返回类型动态绑定的方法。在请求方法中利用入参类获取出参的class并生成出参类。此外,还提供了一个统一的返回类Results,用于封装返回码、消息和实体数据,支持成功和失败的多种返回场景。这种方法提高了代码的灵活性和复用性。

2025-05-14 14:48:19 408

原创 滑动验证码(前后端完整逻辑与代码)

1、为了防止机器冒充人类做账号密码的暴力破解:调用接口或者模仿用户行为,大批量的尝试账号密码登录,就是为了获取真实的账号密码2、防止大规模在线注册滥用服务:批量注册大量无用的账号信息,给服务器增加压力3、防止滥用在线批量化操作:比如在投票的时候,有些恶意刷票软件就可以实现批量化投票功能4、防止信息被大量采集聚合:互联网时代,最有价值的就是内容生产,精心创作的原创文章,而验证码可以防止机器批量的爬取数据

2025-05-11 20:01:30 1284

原创 antd pro4 升级 antd5

Ant Design 5.0 使用 CSS-in-JS 技术以提供动态与混合主题的能力。与此同时,我们使用组件级别的 CSS-in-JS 解决方案,让你的应用获得更好的性能。

2025-04-29 15:35:33 1027

原创 雪花算法(JAVA单例不用修改版)

雪花算法(Snowflake Algorithm)是一种用于生成分布式系统中唯一ID的算法。起初由Twitter设计,用于解决分布式系统中唯一ID的需求。这一算法的目标是生成全局唯一、有序的64位整数ID,以确保数据不冲突、不重复。

2025-04-22 18:28:48 1027

原创 油候插件、idea、VsCode插件推荐(自用)

自用的一些插件

2025-03-21 16:35:59 1062

原创 JAVA_解决反射Introspector.getBeanInfo()得到的writeMethodRef与Lombok注解@Accessors(chain = true)冲突导致空指针问题

像BeanCopier依赖Introspector的writeMethod对目标类赋值的工具,在转换使用了@Accessors(chain = true)注解的类时,在获取属性描述PropertyDescriptor就不会返回这个属性的writeMethod属性,就相当于该类的属性没有“写入方法”,这就造成了拷贝对象过程中出现空指针问题。

2025-03-19 14:14:39 342

原创 AI文本SSE流式输出(JAVA版)

当使用ChatGPT或者Deepseek时,模型的回复不是一次性生成整个回答的,而是逐字逐句地生成。这是因为语言模型需要在每个时间步骤预测下一个最合适的单词或字符。如果等待整个回复生成后再输出到网页,会导致用户长时间等待,极大降低用户体验。本文的目的就是通过SSE(Server-Sent Events)流式输出技术,向前端提供所需的参数本文基于JDK8、硅基流动API做的输出。

2025-03-03 15:14:13 2050

原创 AI改文(小说推文Java版)

之前我做小说推文时,最耗时的就是改文案,而且大多是重复性工作改文案主要的功能为改人称、换行、去标点(因为需要生成语音,标点也算字符,可以减少成本)、改开头我就想着写一个java脚本来优化,主要的功能是改人称、换行、去标点、改开头现在加上了ai,可以做到改人称、换行、去标点、换书名改开头的话,免费的ai并不是很好用,还得人为改,后续需要我可以加上,但效果并不佳,我就去掉了,也可能是我写的prompt并不是很准确文生图的api使用我也会写在下面,但免费的效果感觉不行,电脑有条件去学一下 st

2025-02-18 17:43:41 1309

原创 Java给二维码添加背景

Java给二维码添加背景

2024-11-20 17:30:57 491

原创 antd proFromSelect 懒加载+模糊查询

查询用户的时候数量特别大,有10w条数据,不可能直接全部查询用来展示所以本文章将讲解如何使用懒加载+模糊查询,解决数量过大的问题

2024-11-14 18:12:11 730

原创 java动态导入导出excel,javassist动态创建类

Javassist 使 Java 字节码操作变得简单。它是一个用于在 Java 中编辑字节码的类库。它使 Java 程序可以在运行时定义新类,并在 JVM 加载它时修改类文件。与其他类似的字节码编辑器不同,Javassist 提供了两个级别的 API:源级别和字节代码级别。如果用户使用源代码级 API,则他们可以在不了解 Java 字节码规范的情况下编辑类文件。整个 API 仅使用 Java 语言的词汇表进行设计。您甚至可以以源文本的形式指定插入的字节码。Javassist 可以即时对其进行编译

2024-11-04 11:00:48 630

原创 使用bat命令在没有java的环境下启动jar包

里面有三个比较重要的文件clean.bat:用于清除占用程序的端口:用于启动全部的项目jre8_win64:用于jar所需要的java环境jre8_win64。

2024-09-26 13:37:30 714

原创 Mybatis+Druid+MybatisPlus多数据源配置

平常我们使用的是 properties 或者 yaml 来配置数据库的地址、用户名、密码等,但是这样只能配置一个数据源,现在我们想在一个项目里面配置多个数据源,那么我们就需要配置自己的配置类

2024-09-18 17:10:12 1376

原创 前端带token下载文件

前端带token下载文件

2024-07-23 16:21:38 521

原创 antd(react) ProFormUploadDragger(Upload)上传组件上传图片及省略图模糊展示

antd(react) ProFormUploadDragger(Upload)上传组件上传图片及省略图模糊展示

2024-05-24 15:02:17 1063

原创 springboot整合websocket,超简单入门

WebSocket 是一种基于 TCP 协议的全双工通信协议,它允许客户端和服务器之间建立持久的、双向的通信连接。相比传统的 HTTP 请求 - 响应模式,WebSocket 提供了实时、低延迟的数据传输能力。通过 WebSocket,客户端和服务器可以在任意时间点互相发送消息,实现实时更新和即时通信的功能。WebSocket 协议经过了多个浏览器和服务器的支持,成为了现代 Web 应用中常用的通信协议之一。它广泛应用于聊天应用、实时数据更新、多人游戏等场景,为 Web 应用提供了更好的用户体验

2024-05-09 16:17:31 931 3

原创 Mybatis:Oracle批量新增、批量修改

Mybatis:Oracle批量新增、批量修改

2024-03-04 10:18:42 1787

原创 java8 列表通过 stream流 根据对象属性去重的三种实现方法

java8 列表通过 stream流 根据对象属性去重的三种实现方法,并比较每个方法的去重速度

2024-01-19 15:49:32 18481

原创 SpringBoot参数校验@Validated、@Valid

在实际开发中,前端校验并不安全,任何人都可以通过接口来调用我们的服务,就算加了一层token的校验,有心人总会转空子,来传各式各样错误的参数,如果后端不校验,导致数据库数据混乱、特别是关于金额的数据,可能一个接口把公司都给干倒了

2024-01-17 14:35:27 2395 5

原创 前端异步+token下载文件

前端异步+token下载文件

2023-11-09 17:25:06 674

原创 java构建树结构的原理与工具类

构建一棵树的步骤> 1、首先获取所有的根节点(顶级节点),跟数据库的配置有关> 2、根据每一个根节点,与所有节点集合(数据)进行判断,当前节点是否为其下的子节点。> 3、若是,则递归调用构建树形;若不是,则表明该节点不属于其下子节点。> 4、应继续循环判断节点父子关系,直到所有节点与根节点判断完毕。

2023-11-09 11:13:12 802

原创 前后端分离使用RSA加密

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。目前该加密方式广泛用于网上银行、数字签名等场合。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

2023-10-26 22:25:42 3755

原创 Linux使用一个脚本启用、停用springboot项目(本文带脚本)

Linux使用一个脚本启用、停用springboot项目(本文带脚本)

2023-09-24 18:27:06 1413

原创 SpringMVC返回不带引号的字符串方案汇总

SpringMVC返回不带引号的字符串方案汇总

2023-09-19 16:37:57 1148

原创 Redisson分布式锁实战

这周遇见这么一个问题,简略的说一下由`MQ`发布了两个消息,一个是订单新增,一个是订单状态变更由于直接付款之后,这两个消息的发布时间不分先后,可能会造成两种情况,1、订单状态变更在订单新增之前;2、订单新增在订单状态变更之前逻辑二没有问题,有问题的是逻辑一,如果订单状态变更在订单新增之前,那么连新建订单都没有入库,怎么能改变订单的状态呢为了完成这个逻辑就需要使用锁来让两个业务同步,必须让新建订单在订单状态变更之前,我这里使用的是基于`Redisson`的分布式`Redis`锁

2023-09-08 11:14:20 985 4

原创 Linux查日志的六种实用方法

# 持续打印最新的日志,300行tail -300f xxx.log# 查某个值grep "内容" xxx.log# 根据时间段查日志sed -n "/2023-08-31 10:3[1-9]/p" xxx.log# 时间段查,不建议用,必须开始时间和结束时间日志中都有才能查询sed -n "/2023-08-31 16:17:20/,/2023-08-31 16:17:36/p" xxx.log# 查看某个值,并查询前后的日志# 这个命令会显示行号cat -n xxx.log

2023-08-31 14:12:08 1735 2

原创 xml转json

XML转JSON、实体类,筛选单个元素转成集合,并解决依赖报错问题:java.lang.NoSuchMethodError: org.json.JSONTokener.(Ljava/io/Reader;)V

2023-08-31 10:23:59 1393 7

原创 Java生成二维码

使用google的开发工具包ZXing生成二维码

2023-08-04 11:29:14 360 1

原创 @Transactional详解(作用、失效场景与解决方法)

@Transactional非常的好用,只需要一个注解就可以不用管事务操作了,只需要注重自己的业务代码就可以了@Transactional也有缺点,比如你要注意上诉的几种失效情况,他有个局限性,他的最小粒度要作用在方法上,也就是说,如果想要给一部分代码块增加事务的话,那就需要把这个部分代码块单独独立出来作为一个方法。而且AOP要生成一个动态代理类,所以会慢一点但是谁会管这些啊,好用就行了,也不是不能忍的问题,这跟他的好处根本不成正比,当然如果要使用编程式事务也可以,看个人爱好,反之小编一直在用

2023-08-03 16:23:29 32994 12

原创 AOP切面记录日志

/

2023-06-19 14:02:10 1028 6

原创 easyPOI导出多Sheet

Target({/**Sheet/*** 多Sheet导出,不需要批注* @param fileName 文件名* @param exportDataSet 导出的类对象} /*** 多Sheet导出,需要批注* @param fileName 文件名* @param exportDataSet 导出的类对象。

2023-06-14 14:20:53 7996 5

原创 jenkins pipline 拉取git历史版本

我的理解是:我们每次提交git的时候,除了保存我们修改的代码外,也缓存了之前提交的代码,可以用于我们查看更新的内容,而Commit ID 就是为了识别这些历史的提交版本。

2023-05-22 16:47:26 3795 7

原创 Mybatis-Plus配置Oracle和MySQL

最开始要配置好数据库的连接pom.xml <dependencies> <!--JDBC--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </d

2023-05-19 15:18:46 4861 1

空空如也

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

TA关注的人

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