自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2022-08-11 11:03:34 46145 14

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

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

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

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

自用的一些插件

2025-03-21 16:35:59 910

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

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

2025-03-19 14:14:39 274

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

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

2025-03-03 15:14:13 1188

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

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

2025-02-18 17:43:41 872

原创 Java给二维码添加背景

Java给二维码添加背景

2024-11-20 17:30:57 398

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

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

2024-11-14 18:12:11 623

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

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

2024-11-04 11:00:48 576

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

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

2024-09-26 13:37:30 593

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

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

2024-09-18 17:10:12 1260

原创 前端带token下载文件

前端带token下载文件

2024-07-23 16:21:38 429

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

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

2024-05-24 15:02:17 874

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

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

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

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

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

2024-03-04 10:18:42 1637

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

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

2024-01-19 15:49:32 17129

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

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

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

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

前端异步+token下载文件

2023-11-09 17:25:06 582

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

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

2023-11-09 11:13:12 732

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

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

2023-10-26 22:25:42 3393

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

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

2023-09-24 18:27:06 1320

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

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

2023-09-19 16:37:57 1085

原创 Redisson分布式锁实战

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

2023-09-08 11:14:20 932 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 1518 2

原创 xml转json

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

2023-08-31 10:23:59 1279 5

原创 Java生成二维码

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

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

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

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

2023-08-03 16:23:29 29696 6

原创 AOP切面记录日志

/

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

原创 easyPOI导出多Sheet

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

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

原创 jenkins pipline 拉取git历史版本

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

2023-05-22 16:47:26 3629 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 4686 1

原创 MySQL视图详解

视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。

2023-05-12 09:54:03 737

转载 事务执行一半,业务系统宕机,数据库的数据会怎样?

业务系统提交了一个数据库dml指令,在尚未进行提交时,系统宕机了。那么数据库的数据会是修改前的,还是修改后的?数据库中的连接是否会断开,数据是否会被锁定?

2023-05-10 17:30:11 747 1

原创 Oracle分页查询(效率分析与原理)

rownum是Oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且 rownum 不能以任何表的名称作为前缀。

2023-05-10 15:33:34 1847 1

原创 Java反射(原理剖析与使用)

1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。2、Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。

2023-05-01 00:19:18 3155 3

原创 报错记录:构造方法获取不了@Value的值,问题刨析与解决方案

对象被Spring容器接管之前会调用构造函数构造对象,导致注解失效,构造函数执行完成被Spring容器接管之后才会调用@Value注解将配置注入对应的属性当中

2023-04-26 16:40:44 3586

原创 读取配置文件(properties、yaml)的八种方法

配置文件本质上是包含成功操作程序所需信息的文件,这些信息以特定方式构成。它们不是在程序中进行硬编码,而是用户可配置的,通常存储在纯文本文件中

2023-04-25 16:46:44 6757 2

原创 Redis实现分布式锁原理和Redisson框架实现分布式锁,全网最详细讲解

分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了进程。

2023-04-09 20:32:28 2665 6

原创 Windows安装Nginx并配置负载均衡

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

2023-04-09 00:57:21 1287

原创 idea实现同时启动两个相同服务但不同端口的项目,全图解

点击左上角的——》视图——》工具窗口——》服务。

2023-04-09 00:38:04 7275

空空如也

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

TA关注的人

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