自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2025最新版Java面试及答案(精选版)

Java平台无关性如何实现?Java源码编译为字节码(.class文件),JVM在不同操作系统上解释执行字节码。关键公式:$$ \text{跨平台性} = \text{JVM} + \text{字节码} $$final关键字的用法修饰类:不可继承修饰方法:不可重写修饰变量:常量(基本类型值不变,引用类型地址不变)重载(Overload)与重写(Override)的区别// 重载示例:同一类中方法名相同,参数不同// 重写示例:子类覆盖父类方法。

2025-07-18 14:15:36 911

原创 剖析 Kafka 消息丢失的原因

总的来说,Kafka消息丢失是一个涉及多个环节的问题,需要从生产者、Broker和消费者三个层面综合考虑。通过合理的配置和策略,结合监控和及时的应对措施,可以大幅降低消息丢失的风险,确保数据在分布式系统中的可靠传递。

2025-07-18 14:04:14 557

原创 解决Springboot项目打成jar包后获取resources目录下的文件报错的问题

前几天在项目读取resources目录下的文件时碰到一个小坑,明明在本地是可以正常运行的,但是一发到测试环境就报错了,说找不到文件,报错信息是:class path resource [xxxx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:xxxx.jar!xxxx。看了半天代码感觉没有问题,于是怀疑是打成项目jar包后和原项目存在差异导致的。

2025-07-18 14:03:14 385

原创 项目重构之如何使用 MySQL 替换原来的 MongoDB

在笔者 Java 后端开发的项目经历中,MySQL 和 MongoDB 都有使用过作为后端的数据库来对业务数据进行持久化,两者没有孰优孰劣之分,都可以在合适的场景下发挥出它们的优势。今天要分享的是一个项目重构过程中如何将数据库选型由原来的 MongoDB 改为 MySQL 的思考,涉及到业务当前的痛点、选型分析、解决的核心思路,最后会给出简单的 demo。本篇文章侧重在于两者在表设计思维上的转换,而业务数据迁移同步的方案,下一篇文章将给出。

2025-07-18 14:02:03 629

原创 Java互联网项目中消息通知系统的设计与实现(上)

消息通知系统(notification-system)作为一个独立的微服务,完整地负责了 App 端内所有消息通知相关的后端功能实现。该系统既需要与文章系统、订单系统、会员系统等相关联,也需要和其它业务系统相关联,是一个偏底层的通用服务系统。该系统在可拓展性、高性能、较高可用性、数据一致性等方面有较高要求,最终目的是提升用户粘性、加强 App 与用户的互动、支撑核心业务的发展。

2025-07-18 13:59:16 544

原创 Springboot6.x配置thymeleaf的可能bug

如果是开发环境,例如eclipse,idea,vscode中都是很好,没有任何问题,但是一旦打成jar运行,就会提示找不到资源!依稀记得一点:如果实现了WebMvcConfigurer,那么在applicaton.yml做的一些配置可能就有问题。1.如果实现了WebMvcConfigurer,那么就不要在yml中配置thymeleaf。业务需要,需要通过后端提供模板引擎服务(对于小型项目,这个比前后分离的好太多了)。但是非常操蛋的是,总是提示模板引擎解析失败,无法找到资源。

2025-07-18 13:54:54 123

原创 Zookeeper安装部署!

ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

2025-07-17 14:17:20 304

原创 Springboot 6.x配置thymeleaf的可能bug

如果是开发环境,例如eclipse,idea,vscode中都是很好,没有任何问题,但是一旦打成jar运行,就会提示找不到资源!依稀记得一点:如果实现了WebMvcConfigurer,那么在applicaton.yml做的一些配置可能就有问题。1.如果实现了WebMvcConfigurer,那么就不要在yml中配置thymeleaf。业务需要,需要通过后端提供模板引擎服务(对于小型项目,这个比前后分离的好太多了)。但是非常操蛋的是,总是提示模板引擎解析失败,无法找到资源。

2025-07-17 14:16:30 93

原创 spring的问题-能耗、学习曲线

如果只是用spring开发javaee应用,我建议还是尽量只使用spring的核心部分即可,其它所谓的security等等之类的东西,也许需要慎重考虑。java是c的大概两倍,但是考虑到spring的复杂结构,我觉得至少是3倍的关系。从运维角度看,用java写的东西,天然就不是一个绿色的。只可惜,我们的科学家和工程师并没有认真做好他们自己的事情,这也侧面反应了为什么我们的某些方面和外国人还是有很大的差距,因为首先。开始的时候,spring的确是一个还是算小巧的工具,但是现在已经变成了一个庞杂的大东西。

2025-07-17 14:15:35 471

原创 太方便了!SpringBoot+轻量级分布式日志框架GrayLog!

在微服务架构中,一个服务通常都会有多个实例,而这些服务实例可能会被部署到不同的机器或虚拟容器上。此时对于日志数据的查看和分析就会变得困难起来,因为这些服务的日志数据都散落在各自实例所在的机器或容器上。例如,我现在要在订单服务里查找一个订单id为1的日志,而订单服务有10个实例并且部署在10台不同的机器上,那么我就得一台台的去找这个日志数据。所以这时候我们就需要有一个可以实现日志聚合的工具,将所有实例的日志数据都聚合在一个地方,那么我们就不需要到每个实例去找日志了,而本文将使用的日志聚合工具为Graylog。

2025-07-17 14:10:45 286

原创 支付宝:多线程事务怎么回滚?说用@Transactional可以回去等通知了!

1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。可以发现子线程组执行时,有一个线程执行失败,其他线程也会抛出异常,但是主线程中执行的删除操作,没有回滚,测试结果:抛出异常,

2025-07-17 14:08:18 286

原创 微服务:解决复杂业务的妙方

分布式(Distributed)是指一个系统的组件分散在不同的网络节点上,这些组件协同工作以完成整个系统的任务。分布式系统可以提高可扩展性、容错能力和资源利用率。由于组件在物理上分隔,分布式系统需要处理诸如数据一致性、通信延迟和故障恢复等问题。微服务是一种特定的分布式系统架构风格,它强调将应用程序拆分为许多较小的、松散耦合的、独立运行的服务。这些服务围绕特定功能或业务领域组织,并通过轻量级通信协议进行交互。

2025-07-14 20:20:02 416

原创 Zookeeper安装部署

ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

2025-07-14 20:18:28 341

原创 Springboot6.x配置thymeleaf的可能bug

如果是开发环境,例如eclipse,idea,vscode中都是很好,没有任何问题,但是一旦打成jar运行,就会提示找不到资源!依稀记得一点:如果实现了WebMvcConfigurer,那么在applicaton.yml做的一些配置可能就有问题。1.如果实现了WebMvcConfigurer,那么就不要在yml中配置thymeleaf。业务需要,需要通过后端提供模板引擎服务(对于小型项目,这个比前后分离的好太多了)。但是非常操蛋的是,总是提示模板引擎解析失败,无法找到资源。

2025-07-14 20:17:32 348

原创 spring的问题-能耗、学习曲线

如果只是用spring开发javaee应用,我建议还是尽量只使用spring的核心部分即可,其它所谓的security等等之类的东西,也许需要慎重考虑。java是c的大概两倍,但是考虑到spring的复杂结构,我觉得至少是3倍的关系。从运维角度看,用java写的东西,天然就不是一个绿色的。只可惜,我们的科学家和工程师并没有认真做好他们自己的事情,这也侧面反应了为什么我们的某些方面和外国人还是有很大的差距,因为首先。开始的时候,spring的确是一个还是算小巧的工具,但是现在已经变成了一个庞杂的大东西。

2025-07-14 20:16:56 384

原创 MySQL:事务基础知识

Session A和Session B各开启了一个事务,Session B中的事务先将studentno列为1的记录的name列更新为'张三',然后Session A中的事务再去查询这条studentno为1的记录,如果读到列name的值为'张三',而Session B中的事务稍后进行了回滚,那么Session A中的事务相当于读到了一个不存在的数据,这种现象就称之为。:可重复读,事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。

2025-07-14 20:15:30 404

原创 Nacos 高级详解:提升你的开发和部署效率

nacos 提供了3种方式,配置dataId的加载顺序。

2025-07-12 17:13:50 505

原创 RabbitMQ+redis+Redisson分布式锁+seata实现订单服务

(相关解释直接在代码注释上了)

2025-07-12 17:12:01 803

原创 SpringBoot实战:Spring Boot接入Security权限认证服务

通过JWT为每个用户生成一个唯一且有期限的Token,用户每次请求都会重新生成过期时间,在规定的时间内,用户未进行操作Token就会过期,当用户再次请求时则会再次执行登录流程,而Token的过期时间应根据实际的业务场景规定。Security中默认提供了强哈希加密方式,但也可根据实际需求自定义加密逻辑,这通过实现接口并重写其方法来完成。在自定义的实现中,matches方法的参数实际上是用户登录时传入的密码(明文),该密码在验证前可能已经过解密处理(如果前端使用了AES等加密方式)。而matches。

2025-07-12 17:08:13 607

原创 Java 在PDF中插入页眉、页脚

在以下示例中,我们用到了PdfCanvas类的和DrawLine()方法,分别用于在PDF页面上指定位置绘制文本、图片和线条。如果要添加动态的信息如页码、页数、章节编号等,则可以使用Free Spire.PDF for Java提供的和类,然后再使用Draw() 方法将其绘制到PDF页眉或页脚位置。

2025-07-12 17:05:01 206

原创 Java实现OCR扫描/识别图片文字

图片内容一般无法编辑,如果想要读取图片中的文本,我们需要用到OCR工具。本文将介绍如何在Java中实现OCR识别读取图片中的文字。

2025-07-12 17:03:33 218

原创 手把手教你解决spring boot导入swagger2版本冲突问题

改完之后使用了HttpServletRequest和HttpServletResponse的类应该都会报错,也是因为我之前提到的Swagger 2 的依赖底层使用的是 javax 依赖包,而 Spring Boot 3 使用的是 Jakarta 依赖包。首先Spring Boot 3 和 Swagger 2 不兼容。去pop.xml查看你springframework的版本,如果你已经是Spring boot3了,像我这里是当前的最新版3.3.1,那就改成2.7.2,改完之后点击右上角m形状的刷新按钮。

2025-07-10 21:28:10 173

原创 SpringBoot学习——路径参数

在启动类中写入以下代码:实现的效果为,当访问路径为/img时,会去本地相应的文件目录寻找。注意,接口类WebMvcConfigurer。默认springboot访问静态资源(图片、视频等)在static文件下,若想找本地位置的资源,应该使用静态资源映射方法。如果多个地方用到一个值(例如路径),则可以在配置文件中统一维护。@PathVariable 参数表示该参数要从路径中获取。例如,视频网站中,路径输入不同的模块,调用不同的视频。输入不同的路径,调用不同的方法。在代码中使用img-path的值。

2025-07-10 21:26:25 189

原创 springcloud学习——网关

一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理,例如增加请求头,具体可以看spring的官网。如图,客户访问网关的微服务地址,网关对客户访问的地址进行断言,将其映射为相应微服务的地址,并在注册中心寻找该微服务发送请求。:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。

2025-07-10 21:25:06 743

原创 要收藏,JavaEE开发常用注解

OOP(面向对象编程),IoC(控制反转),AOP(面向切面编程)都是一种编程思想,DI(依赖注入)是IoC的具体实现。

2025-07-10 21:22:33 259

原创 什么是AOP,以及在Springboot中自定义AOP

但是在OOP的开发过程中,我们发现尽管我们已经抽象出很多对象了,但是对象之间的某些方法是有一些共性的,如果进一步抽象,则整体的抽象粒度过于小,抽象粒度过于复杂。(关于java的注解,属于java的基础知识,但是在新兴的框架中,他的作用越来越大,我抽时间会写一篇相关的文章)先说OOP,面相对象编程简单来说,万物皆可视为对象,我们要做的就是将万物(业务逻辑中的虚拟物体),抽象为一个个对象,进而为这些抽象的物体丰富各种能力和特性(方法和属性)。从而抽象出一整段的业务逻辑,作为我们的系统。

2025-07-10 21:20:45 497

原创 Java面试篇-MySQL专题

索引在项目中非常常见,它是一种帮助 MySQL 高效获取数据的数据结构,主要用来提高数据检索效率。降低数据库的 I/O 成本。同时,索引列可以对数据进行排序,降低数据排序的成本,也能减少 CPU 的消耗。聚簇索引是指数据与索引放在一起,B+ 树的叶子节点保存了整行数据,通常只有一个聚簇索引,一般是由主键构成。非聚簇索引则是数据与索引分开存储,B+ 树的叶子节点保存的是主键值,可以有多个非聚簇索引,通常可以自定义的索引都是非聚簇索引。

2025-07-07 14:50:08 537

原创 SpringBatch批处理零基础速成指南,效率飙升500%!

关键缺陷:无法回答"处理到哪了?某银行系统改造后,利息计算时间从4小时缩短至23分钟。常见问题:线程池配置不当导致OOM、数据库连接泄露。真实案例:某支付系统因未处理部分失败,导致重复出款。凌晨时段需扫描百万级账户数据,手工计算容易遗漏。问题根源:参数修改需要重新部署、不同环境配置混杂。分片读取账户数据,批量计算利息,失败自动重试。设计模式:采用分块(Chunk)处理机制。:作业指纹库(相同参数只能存在一个实例):保存步骤上下文数据(重启恢复的关键)场景:处理10GB CSV文件时OOM。

2025-07-07 14:48:05 862

原创 Java的对象监视器

在Java中,监视器(Monitor)是用来实现线程同步的一种机制。每个Java对象都有一个与之关联的监视器,线程可以通过关键字来获取和释放对象的监视器。监视器的主要作用是确保在同一时刻只有一个线程可以执行同步块或同步方法,从而实现线程的互斥访问。监视器(Monitor):用于实现线程同步,每个Java对象都有一个监视器。入口集(Entry List):线程在尝试进入同步块或同步方法时,如果无法获取监视器锁,会进入入口集等待。等待集(Wait Set):线程在调用wait()

2025-07-07 14:46:01 363

原创 如何在Spring Cloud中实现Nacos客户端登录密码加密

公司规范要求配置文件里不能出现明文的密码。最近项目引入了Nacos作为服务的配置中心,使用的是这个包。基本的那么如何将换为公司内部加密算法加密后的密码呢?

2025-07-07 14:43:35 151

原创 一个程序员的水平能差到什么程度?

降低代码可读性的方式方法 包括但不限于以上12种;像二狗这样的程序员包括但不限于二狗。大家不要向二狗学习,因为他是真的。

2025-07-07 14:42:32 646

原创 【Spring源码分析】Spring Scope功能中的动态代理 - Scoped Proxy

本文基于Springboot 3.3.2及Springcloud 2023.0.1版本编写。

2025-07-07 14:40:03 636

原创 分布式微服务相关概念【分布式微服务笔记01】

SpingCloud 和 SpringCloudAlibaba 是一套标准化的微服务解决方案微服务可以根据业务不同,将一个大项目拆解成不同的服务(搜索服务/网关服务/配置服务/存储服务/发现服务......)各个服务通过分布式方式进行工作,从而可以高效、快速、稳定的完成复杂的功能SpringCloud 来源于Spring, 是更高层次的、架构视角的综合性大型项目, 目标旨在构建一套标准化的微服务解决方案, 让架构师在使用微服务理念构建系统的时, 面对各环节的问题都可以找到相应的组件来处理。

2025-07-07 14:38:19 420

原创 看了我的MyBatis-plus用法,全公司同事开始悄悄模仿了。。

本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于mybatis-plus是什么,不多做介绍了,看官方文档:baomidou.com/,咱们直接代码撸起来。

2025-07-07 14:37:19 667

原创 服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】

它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留)也不盲目注销任何健康的微服务。当服务消费方,发现了可以使用的服务后(可能是多个,又存在一个问题就是到底调用A服务,还是B 服务的问题,这就引出了服务注册和负载均衡)服务提供方【可能是一个集群】------将自己注册到/renew/cancel---->Eureka Server【可能是一个集群】服务消费方 ------将自己注册到/发现服务---->Eureka Server【可能是一个集群】 ---->

2025-07-07 14:35:01 755

原创 负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】

Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。Ribbon 主要功能是提供客户端负载均衡算法和服务调用Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务程序员很容易使用 Ribbon 的负载均衡算法实现负载均衡一句话:Ribbon == 负载均衡 + RestTemplate 调用。

2025-07-07 14:33:20 728

原创 服务远程调用-Open Feign-微服务核心组件

OpenFeign 是个声明式WebService 客户端,使用OpenFeign 让编写Web Service 客户端更简单使用方法: 定义一个服务接口然后在上面添加注解OpenFeign 也支持可拔插式的编码器和解码器。Spring Cloud 对OpenFeign 进行了封装使其支持了Spring MVC 标准注解和HttpMessageConverters【消息转换器】OpenFeign 可以与Eureka 和Ribbon 组合使用以支持负载均衡。

2025-07-06 15:22:01 533

原创 深入解析 Spring 配置文件:从基础到高级

Spring 配置文件主要有两种形式:XML 配置和 Java 配置(也称为基于注解的配置)。无论你选择哪种方式,最终的目标都是一样的:定义 Spring 容器如何创建和管理 Bean。Spring 配置文件是 Spring 框架的核心组件之一。无论是 XML 配置还是 Java 配置,都有其独特的优势和适用场景。通过深入理解 Bean 的生命周期、作用域、初始化和销毁方法,以及条件化 Bean 和 Profile 等高级配置,我们可以更加灵活和高效地使用 Spring 框架。

2025-07-06 15:21:12 222

原创 Spring Boot + Maven 多模块项目开发详解

通过这篇文章,我们详细介绍了如何使用 Spring Boot 和 Maven 来构建一个多模块项目。我们从项目结构、父项目配置、子模块配置到代码编写,一步一步地进行了讲解。希望这篇文章能对你有所帮助,让你在实际项目中更加得心应手。如果你有任何问题或建议,欢迎在评论区留言,我们一起交流学习!

2025-07-06 15:19:50 360

原创 解决非Spring Bean访问Spring Bean的问题:实用指南

在非SpringBean类中直接获取SpringBean可能会引发问题,例如上面案例里提到的空指针和自动装配失败。为避免这些问题,建议将需要访问Spring Bean的类也注册为Spring Bean,以确保依赖关系得到正确管理。

2025-07-06 15:18:24 727

空空如也

空空如也

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

TA关注的人

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