Java后端
文章平均质量分 69
PXM的算法星球
前acmer 软工学生 java后端 算法爱好者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分布式事务详解
在单体系统中,事务(Transaction)通常由数据库本身保证——ACID(原子性、一致性、隔离性、持久性)特性足以覆盖大多数业务需求。然而,随着系统拆分为多个微服务后,一个完整的业务流程往往需要多个服务、多个数据库的协作。当某个步骤失败时,反向调用补偿逻辑(C3、C2、C1)回滚。:性能开销大、资源锁定时间长,难以应对高并发。:开发成本高,需要业务方显式实现三种接口。:补偿逻辑复杂,不适合强一致性场景。:消息补偿、重复投递需额外处理。:易于理解,适合长事务场景。:业务可控,补偿逻辑灵活。原创 2025-10-21 15:28:00 · 856 阅读 · 0 评论 -
ZooKeeper vs Redis:分布式锁的实现与选型指南
Redis 分布式锁基于内存操作,其核心思想是在内存中设置一个唯一的键值对来表示锁的持有。原创 2025-09-05 14:46:08 · 1058 阅读 · 0 评论 -
PXM的JAVA并发编程学习总结
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。线程与进程类似,但是是一个更小的执行单位,一个进程运行时可以产生多个线程,但是同一个进程的线程之间会共享堆和方法区,而进程与进程之间时相互隔离的。所以系统创建和运行线程的开销比进程小很多。原创 2025-09-05 13:46:42 · 975 阅读 · 0 评论 -
RabbitMQ消息堆积问题排查:concurrentConsumers 配置的坑与解决方案
• concurrentConsumers:初始并发消费者数• maxConcurrentConsumers:最大并发消费者数• 两者需要配合使用,只设置最大值不会生效。原创 2025-09-02 14:31:49 · 1210 阅读 · 2 评论 -
Docker部署Spring Cloud微服务实战
在之前的springcloud项目打包实战中,我们已经学会了如何把springcloud中的应用打包成jar包,但是用jar包运行有很大的缺点,比如如果你想要把它放到Linux服务器上运行,你必须下载linux对应版本的jdk,再者,如果你还想顺带一起部署中间件,如mysql,redis,这些中间件在各个平台都有不同的安装包和部署方式,非常难以部署。为了降低运维难度,可以使用docker来进行部署。我们当然首先要学会如何打包和使用jar包,如果不会的话。原创 2025-08-15 16:38:54 · 591 阅读 · 2 评论 -
你的 Maven 打包姿势过时了吗?Maven打包spring cloud微服务实战解析
在 Java 开发中,Maven 是最常用的项目管理工具之一,它不仅能管理依赖,还能自动化构建、测试和打包项目,相信maven的依赖管理功能很多人已经会熟练使用了,这次正好使用一下maven的打包功能。原创 2025-08-14 16:59:25 · 1378 阅读 · 0 评论 -
Spring cloud集成ElastictJob分布式定时任务完整攻略(含snakeyaml报错处理方法)
ElasticJob 适合分布式场景,Zookeeper 是其注册中心核心组件。推荐Java API 启动任务,方便在 Spring Boot 中集成。SnakeYAML 报错可通过版本统一或自定义 Representer解决。我是PXM,点个关注不迷路。原创 2025-08-13 17:33:23 · 1445 阅读 · 1 评论 -
spring gateway配合nacos实现负载均衡
再编辑这个实例的配置,用同样的找到添加虚拟机选项设置,并写上-Dserver.port=新端口号,我们就有两台同样的服务了。接下来我们在idea里面找到服务列表,右键现有demo服务->编辑所选配置->修改选项->允许多个实例。我们在配置文件中写上相应的路由配置,假设我们已经配置了一个名为demo的服务。我的网关服务部署在8888端口,我们提前写好相关接口/user/test。代表要去掉的地址数,意味着在我进行路由转发的时候要去掉/demo。然后我们建立一个服务,并引入。这个配置代表负载均衡,原创 2025-08-13 10:45:53 · 762 阅读 · 0 评论 -
nacos 3.x配置攻略
首先检查环境里是否有jdk17+并且在官网下载压缩包解压后打开并进入bin目录即可看到成功界面我们进入localhost:8080这个页面,就能进行配置管理了,注意首次进入会让你输入密码。点击左侧命名空间,我们新建一个命名空间接下来再在命名空间里写入相应配置现在我们就能使用别的应用来进行整合,我的下一篇博客将介绍如何用springcloud进行配置发现。原创 2025-08-12 16:25:18 · 1029 阅读 · 1 评论 -
【Java后端】Quartz任务调度核心机制详解:从基础编排到动态控制
建议将本文代码示例与您实际的业务场景结合,通过合理的线程池配置和持久化方案,可轻松应对日均百万级任务调度的需求。对于更复杂的节假日调度场景,可参考Quartz Calendar的官方文档实现。// 创建任务数据容器。原创 2025-08-11 10:02:24 · 709 阅读 · 0 评论 -
Spring Boot异常处理翻车?3步搞定全局异常捕获,让你的API稳如老狗!
为了统一接口返回格式,并方便携带错误码和错误信息,这里定义一个泛型响应类@Data// 成功响应// 错误响应Controller 层直接返回统一了接口格式,方便前后端对接明确了错误码避免返回异常信息时出现类型转换错误统一返回格式,便于前端处理减少重复的 try-catch 代码方便日志记录与问题排查相比使用,AOP 的方式更灵活,可以结合切点选择性地对某些包或类生效,适合需要细粒度控制的场景。原创 2025-08-08 15:01:27 · 380 阅读 · 0 评论 -
3分钟掌握Redis分布式Map核心黑科技!
Rmap可以当作一个用Redis实现的跨JVM的ConcurrentHashMap。原创 2025-08-08 11:33:19 · 508 阅读 · 0 评论 -
【java】一篇文章带你读懂线程池
是Java并发编程API中提供的高级接口,用于管理线程的执行过程。它扩展了Executor接口,增加了更多实用功能,如关闭线程池、获取任务结果等。// 创建线程池实例5, // 核心线程数10, // 最大线程数60L, // 空闲线程存活时间(秒)new ArrayBlockingQueue<>(100), // 任务队列容量new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略// 提交任务i < 10;原创 2025-07-26 12:02:23 · 1012 阅读 · 0 评论 -
【Java】 volatile 和 synchronized 的比较及使用场景
volatile是 Java 中的一个轻量级同步机制,它用来确保变量的可见性。当一个线程修改了volatile变量的值,其他线程能够立即看到修改后的值。它通过内存屏障来禁止编译器和 CPU 对volatile变量的重排序,确保每次读取都是从主内存中获取最新的值。是 Java 中的同步机制,它可以保证原子性和可见性。使用可以确保在同一时刻只有一个线程可以执行某个方法或代码块,其他线程必须等待锁的释放。确保了对共享资源的访问是安全的。volatile和是 Java 中两种常用的并发控制机制。volatile。原创 2025-05-14 20:58:13 · 691 阅读 · 4 评论 -
【Java基础】HashTable 和 ConcurrentHashMap 的区别与使用
在 Java 编程中,HashTable和都是用于存储键值对的数据结构。它们在某些情况下功能类似,但在设计和性能方面存在显著的差异。本文将详细介绍它们的区别以及如何选择使用它们。原创 2025-05-14 20:08:42 · 940 阅读 · 0 评论 -
Elasticsearch--自带“搜索引擎“的数据库
高度可扩展:自动分片与副本机制,轻松实现从单节点到千节点扩容。丰富查询能力:支持全文检索、精确匹配、布尔组合、多字段、多语言分词、多种聚合。实时性:近实时(NRT)架构,文档写入后秒级可查询。生态完善:Kibana、Beats、Logstash、Elastic APM 等生态工具,覆盖数据采集、监控、可视化全链路。混合场景支持:除了日志与搜索,还可做实时指标分析、向量搜索、SIEM 安全事件管理等。原创 2025-04-30 21:02:33 · 1770 阅读 · 1 评论 -
【java后端】用VSCode的print插件打印代码
作为程序员,我们经常需要将代码或技术文档打印出来用于评审、备案或分享,包括申请软著也需要代码的PDF。虽然VS Code本身没有内置打印功能,但通过Print插件可以完美解决这个问题。Print插件是VS Code上一款专门用于打印代码和Markdown文档的扩展工具。首先在VS Code的扩展市场中搜索"Print"并安装。对于包含UML等图表的Markdown,建议搭建本地Kroki服务。• 编辑文档时会自动刷新预览(默认3秒延迟)• 支持图表渲染(需配合Kroki服务)• 支持代码片段选择性打印。原创 2025-04-24 14:28:32 · 1382 阅读 · 0 评论 -
【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战
SQL 注入(SQL Injection)是指攻击者通过输入恶意 SQL 语句,干扰原本正常的数据库查询,从而达到绕过登录、获取数据、甚至删除数据库的目的。如果我们将用户输入直接拼接到 SQL 中,攻击者就可能利用OR '1'='1'这样的语句,绕过身份验证。原创 2025-04-23 22:47:51 · 1431 阅读 · 0 评论 -
Git合并中的祖先-后代关系:快进合并与非快进合并详解
Git 的合并策略体现了版本控制系统在处理复杂开发场景时的灵活性。理解祖先-后代关系不仅有助于把握合并的底层原理,还能帮助开发者根据实际需求选择最适合的合并方式。无论是快进合并带来的简洁历史,还是非快进合并留下的合并痕迹,都在各自的应用场景中发挥着重要作用。希望本文能够帮助你更好地理解并应用这些策略,使你的代码管理更高效、更具条理。原创 2025-04-05 16:20:05 · 898 阅读 · 0 评论 -
原型设计工具即时设计的简单使用攻略
是一款国产在线协同设计工具,支持从原型设计到开发交付的全流程,尤其擅长。其核心优势体现在:•:浏览器直接访问无需安装,中文界面友好•:内置3000+原型模板与组件库•:支持多人实时编辑与版本管理•:支持动态效果、智能动画等高级交互。原创 2025-04-05 15:52:04 · 2190 阅读 · 0 评论 -
软件设计中的耦合与内聚
耦合和内聚是软件设计中相辅相成的两个重要概念。高内聚的模块通过明确定义的接口与外界交互,自然形成松散耦合的系统结构。这种设计不仅使代码更易于理解和维护,还能提高系统的灵活性和可扩展性。记住:好的软件设计不是追求完美的耦合和内聚,而是在特定上下文和约束条件下找到最合适的平衡点。随着经验的积累,你会逐渐培养出对这种平衡的直觉判断能力。原创 2025-04-02 16:34:38 · 862 阅读 · 0 评论 -
Spring AOP面向切面编程实现日志功能
里的方法的前置操作以及后置操作,无论是否有异常都会进行,无法控制中间方法的进行与否。如果只需要在目标方法执行前或后做一些操作,使用 @**Before **或 @我们创建以下类,就能用切面对user相关的功能进行权限控制。如果需要完全控制目标方法的执行,使用 @权限检查、性能监控、事务管理**等功能。可以进行** 参数校验、日志记录。注释的方法可以看作是。原创 2025-03-25 11:49:59 · 430 阅读 · 0 评论 -
docker常用命令合集【新手向】
经过简单测试,我们已经顺利使用docker进行redis的使用了,其它容器也是如此。其中my-redis这里既可以使用容器的id,也能使用我们给它指定的名字。此时容器会被挂载到后台运行,我们查看正在运行的容器。在使用新容器的时候我们先要拉取容器镜像。然后就能通过以下命令查看本地容器列表。如果不想要我们可以用以下命令删除容器。接下来我们可以启动容器。接下来我们进入容器内部。可以得到类似如下列表。原创 2025-03-23 15:18:22 · 580 阅读 · 0 评论 -
spring boot 三步集成rabbitmq
使用rabbitmq。原创 2025-03-21 14:20:02 · 341 阅读 · 0 评论 -
Spring AOP相关常见问题
在日常开发中,我们经常需要给方法添加一些。原创 2025-03-18 13:12:42 · 826 阅读 · 0 评论 -
Java爬虫抓取B站视频信息
【代码】Java爬虫抓取B站视频信息。原创 2025-03-17 16:32:38 · 1700 阅读 · 0 评论 -
使用 Redis 实现接口缓存:提升性能的完整指南
通过 Redis 实现接口缓存,可以显著提升接口性能,减少数据库压力。以下是一个完整的实现接口缓存的步骤,以 Java 和 Spring Boot 为例。:请求不存在的数据,导致缓存失效,大量请求直接访问数据库。• 使用互斥锁:只允许一个线程更新缓存,其他线程等待。• 缓存空值:将空值存入缓存,并设置较短的过期时间。• 设置永不过期的热点数据:定期异步更新缓存。:大量缓存同时失效,导致数据库压力骤增。:缓存外部 API 的响应,降低延迟。:缓存热门数据,避免频繁访问数据库。原创 2025-03-15 19:29:45 · 1591 阅读 · 0 评论 -
spring后端密码加密工具类编写
我们接下来就能用这个工具类进行密码的加密以及验证。首先引入BCrypt依赖。原创 2025-03-09 18:45:21 · 397 阅读 · 0 评论 -
SSM配置拦截器
我们都知道在spring boot中配置拦截器非常容易,但是如果课设要求使用纯SSM编写,那么就要手动在xml文件中注册。此时当我们发送的请求没有token就会在这里返回401。然后再在 spring-mvc.xml里注册它。原创 2025-03-09 18:25:50 · 337 阅读 · 0 评论 -
Apifox实现自动提取token并在每次请求时发送
Apifox 是一款强大的 API 开发工具,集成了 API 文档管理、Mock 数据、自动化测试等功能。它支持团队协作,能够显著提高 API 开发和测试的效率。原创 2025-03-06 14:19:58 · 1791 阅读 · 0 评论 -
Spring使用JWT进行登录验证
JSON Web Token (JWT) 是一种用于在网络应用环境中进行用户身份验证和信息交换的开放标准。它通过将数据以 JSON 格式进行编码,使得信息在不同的系统和应用之间得以安全传递。JWT 的主要特点是结构简洁且安全性高,广泛应用于单点登录(SSO)、API 授权和用户身份认证。JWT 由三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部通常包括令牌的类型(JWT)和所使用的签名算法。原创 2025-03-06 14:14:49 · 488 阅读 · 0 评论
分享