自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 【面试题】如何保证MQ的消息不丢失、不重复

消息不丢失、不重复是消息队列的核心需求,但在实际应用中,满足这一要求并非易事。对于消息丢失问题,主流消息队列可通过消息重试和消息持久化等手段有效解决;然而,消息重试机制又不可避免地带来了消息重复的风险。目前,主流消息队列在处理消息重复问题上缺乏现成解决方案,对于不允许重复消费的业务场景,开发人员需在消费端实现幂等处理逻辑,以保障业务的准确性和稳定性。

2025-06-08 17:28:42 1202

原创 【面试题】如何从0开始实现一个弹幕系统

它打破了传统单向的观看模式,让观众在沉浸于视频内容的同时,能即时发送评论。这些承载着用户观点、情绪与共鸣的弹幕,以横向滚动的形式穿梭于视频画面之上,不仅显著提升了内容的互动性,更让每个观看者都能感受到 “不是一个人在追剧 / 看直播” 的社区参与感,形成独特的群体观看氛围。跟着我学习完之后你能获得如下成果:DAN弹幕是我接下来,我将带领大家进行技术实战,详细演示如何运用 SpringBoot 框架,一步步搭建起一个实时弹幕系统。在弹幕系统中,用户发送的评论会即时呈现在视频画面上。这些评论从右向左横向滚

2025-06-07 22:32:45 905

原创 JDK21 虚拟线程原理剖析与性能深度解析

操作系统线程(OS Thread):由操作系统直接管理,是操作系统进行任务调度的基本单位。平台线程(Platform Thread):Java 中类的每个实例对应一个平台线程,它是对操作系统线程的封装,与操作系统线程呈 1:1 映射关系。虚拟线程(Virtual Thread):一种轻量级线程,由 JVM 负责管理,对应的实例为类。载体线程(Carrier Thread):实际执行虚拟线程中任务的平台线程,当虚拟线程装载到某个平台线程上时,该平台线程即成为其载体线程。

2025-06-06 13:13:45 809

原创 我的概要设计模板(以图书管理系统为例)

为提升图书管理效率,方便读者借阅与查询,公司计划开发 “在线图书管理系统”,实现图书的电子化管理、快速检索、在线借阅等功能,优化读者使用体验。包含用户表(user)、图书表(book)、借阅记录表(borrow_record)、权限表(permission)等,用户表与借阅记录表通过用户 ID 关联,图书表与借阅记录表通过图书 ID 关联。系统分为用户模块、图书管理模块、借阅管理模块、系统管理模块四大核心部分,各模块独立开发与维护,通过接口实现数据交互。采用分层架构设计,提高系统可维护性与扩展性。

2025-06-04 18:30:05 775

原创 【秒杀】支撑单场 50 万+人次的秒杀方案

分层防御:流量控制要前置,避免所有压力到数据库多级校验:前端、网关、服务多层校验最终一致:接受短暂的不一致,确保最终正确降级方案:准备好熔断策略(如直接返回售罄)通过这套架构,我们成功支撑过单场 50 万+人次的秒杀活动,系统保持零超卖、零崩溃的记录。实际生产中建议根据具体业务需求调整各层参数,并通过全链路压测验证系统极限。

2025-06-02 22:49:32 618

原创 【JVM】调优参数总结

-Xms : JVM初始分配的堆内存大小,默认是物理内存的1/64;默认空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。-Xmx : JVM最大分配的堆内存大小,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;因此我们一般设置-Xms、-Xmx这两个参数相等,可以避免在每次GC 后动态调整堆的大小带来的影响。2.垃圾回收2.1 垃圾回收算法 :引用计数法: 会有循环引用的问题,古老的方法;Mark-Sweep: 标记清除。根可达判断,最大的

2022-07-13 11:16:49 427

原创 操作日志公共组件设计实现

该组件主要定位是提供通用和个性化的 记录操作日志 功能,接入简单、可拔插、可扩展、不和业务逻辑耦合。系统没有进操作日志的记录(例如:某个人在xx时间进行了xx功能的操作,产生了xx结果。或者其他个性化的日志需求)。又由于每个业务系统都有记录操作日志的需求,如果都单独开发一套操作日志记录功能,耗时耗力。故进行该公共组件的抽取实现。4.2 操作日志实现思路 项目启动效果以下是默认版本实现流程。如果不想让日志存入公共的 mogodb 库中,可以自己扩展实现 实现思路1.引入依赖:2.增加yml配置3.

2022-06-09 17:05:34 663

原创 Prometheus + Grafana 搭建监控报警平台

1.安装PrometheusPrometheus(普罗米修斯)是一个系统和服务的监控系统。它以在给定的时间间隔从配置的目标收集指标数据,评估规则表达式,显示结果。并可以在观察到指定条件时触发警报。Prometheus 于 2016 年加入云原生云计算基金会(CNCF),成为继 kubernetes 之后的第二个项目,是当下容器监控的主流方案。Prometheus是由 go 语言编写而成,采用 pull 方式获取监控的数据信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus 不仅可以通过静

2021-09-07 14:17:24 824

原创 【java基础】为什么要实现Serializable

在写代码的时候我们会发现,有一些类会实现 Serializable 接口,接下来我就来整理记录一下关于 Serializable 的一些点。1.为啥要序列化和反序列化?提到 Serializable 接口我们就会联想到对象的序列化和对象的反序列化。什么是对象的序列化:把对象转换为字节序列什么是对象的反序列化:把字节序列恢复为对象的当我们在本地java虚拟机里运行 Java 实例的时候, 是不需要序列化和反序列化的。有的朋友就要问:那什么时候需要序列化和反序列化呢? 比如说:当我们需要将内存中的对象

2021-04-03 20:43:35 302

原创 关于Dubbo

前序:这段时间一直在西安往返出差,每次坐飞机都坐的我屁股蛋子生疼,看了看纵横商旅app上的飞行时间,大约在天上待了42个小时。而且我早年看过坐飞机的那一部《死神来了》电影,这导致每次飞机跌波的时候我心里是有一丝丝余悸的,心悬着,毕竟脚不着地的感觉。话不多说,好人一生平安吧。中序:是这样的,公司有个项目是采购的西安一家软件公司的sass产品,我司私有化部署并且在全国范围内下属幼儿园已经运行了三年。由于需求不满足现有业务的发展,打算在其基础上进行定制化需求开发。于是乎我便和其他两位素未谋面的同事前往西安与

2021-02-04 10:46:13 250

原创 System.out和System.error一起用的问题

System.out和System.error一起用的问题问题出现竟然不按代码顺序出牌!!!!原因是因为System.out和System.error一起用导致 System.err.println("this is printSomeThing Core ServiceImpl"); System.out.println("TagService代理前"); Object returnObject = method.invoke(this.object, args);

2020-07-21 09:37:22 423

转载 Java面试总结之Full GC

在面试中我们会经常被问到full Gc相关的问题,比如什么情况下会发生full gc,如何去排查频繁发生full Gc的问题等。要想轻松自如的回答这些问题,我们就必须充分的去理解gc的触发条件,gc回收的内容,以及gc具体的执行过程。掌握了这3个要点,full gc相关的问题就易如反掌了。一、gc的定义GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与.........

2019-09-10 10:21:31 6251

原创 git命令,非一般的感觉

GIT常见命令使用创建本地仓库克隆远程仓库查看和操作本地仓库和远程仓库的追踪关系切换分支把工作区新增、修改内容添加至暂存区提交暂存区所有代码变动到本地仓库推送当前版本提交内容至远程仓库分支合并某个分支的代码到当前分支该命令可以当作是fetch和merge命令的合并暂存当前工作区和暂存区内容查看历史提交版本记录查看变更记录帮助常见命令使用不同的人有不同的ide,但是所有人都有命令行工具。总而言之......

2019-06-27 17:00:25 233

转载 阿里内网万字离职帖引热议,无招送上祝福,马云亲自回复

这几天,阿里内网热闹了,有篇快一万字的离职帖子火得不行。发帖的厂友是钉钉的一位产研负责人,花名叫元安,在阿里干了好些年,他的汇报上级是无招-2,职级大概在P8到P9之间。这篇离职帖子写得那叫一个敢说,把公司里的各种问题都给指出来了。帖子一发布,立马在阿里同事之前引起热议,大家都特别认可,有员工称赞元安是真正把阿里价值观落到实处的人,就连无招都给元安送了祝福。令人意想不到的是,马老师也关注到了这条帖子,并进行了回复,而且文字一看就是马老师亲自写的,他回复了这样一段话:“元安同学好,谢谢你那么长的信,写得很好。

2025-06-12 10:10:52 69

原创 如何告别无效内卷,领先 99% 的开发人员?

可以帮大家跳出思维定式,从疲于应对问题的执行者,蜕变为掌控全局的战略型开发者,让工作真正实现事半功倍。

2025-06-09 18:51:52 388

原创 为何选择Spring框架学习设计模式与编码技巧?

控制反转(IoC)与依赖注入(DI)- 实现了工厂模式和策略模式Spring AOP- 代理模式和装饰器模式的典范Spring MVC- 前端控制器模式和模板方法模式Bean作用域- 单例模式和原型模式事件机制- 观察者模式- 模板方法模式- 装饰器模式。

2025-06-03 22:54:06 574

原创 【Spring AI】如何实现文生图功能

Spring AI 是基于 Spring Boot 开发的框架,旨在简化 Java 应用与 AI 服务的集成过程。它提供了统一的编程模型,支持接入多种 AI 模型和服务,开发者无需深入了解复杂的 AI 底层技术,就能快速将 AI 能力融入应用中,例如实现智能问答、文本生成、图像生成等功能。

2025-06-03 13:32:48 859

原创 【Spring AI】调用 DeepSeek 实现问答聊天

在人工智能交互应用愈发普及的今天,DeepSeek 作为高效的语言模型,具备出色的问答聊天能力。借助 Spring AI 框架,开发者能够轻松将 DeepSeek 集成到 Java 应用中。

2025-06-03 11:50:27 868

原创 SQL注入攻击的方法与预防

通过采用预编译语句、ORM 框架、输入验证与过滤和最小权限原则等防御措施,可以有效地防止这类攻击。所以我们开发人员应当始终对用户的输入保持警惕,遵循安全的编码规范,定期进行安全测试和代码审计,以确保应用程序的安全性。

2025-06-01 22:40:45 767

原创 【Java基础】Java基础语法到高级特性

访问修饰符] [static] 返回类型 方法名(参数列表) {// 方法体return 返回值;// void方法可省略// 示例。

2025-06-01 14:57:55 936

原创 【Java基础】Java入门教程

JDK(Java Development Kit) - Java开发工具包,开发、编译、调试Java程序JRE(Java Runtime Environment) - Java运行环境,仅运行已编译的Java程序IDE- (Integrated Development Environment)集成开发环境。

2025-06-01 14:27:01 1078

原创 【SpringBoot实战】优雅关闭服务

优雅关闭(Graceful Shutdown)是指服务在关闭或重启时,先完成所有正在处理的请求,再安全终止进程的机制。用户请求突然中断导致的客户端报错数据库事务执行到一半被强制终止负载均衡将流量导向正在关闭的节点下面来看典型的架构场景:当对服务实例进行滚动更新时,若直接终止实例,正在处理的请求将失败。通过 SpringBoot 原生支持的优雅关闭机制,配合基础设施的流量控制,可实现服务的零中断发布。正确配置server.shutdown=graceful + 超时时间使用SIGTERM。

2025-05-31 22:41:45 1705

原创 【JAVA基础】JMX 和 MBean

实时监控:运行时数据采集远程管理:通过网络接口管理应用动态扩展:无需重启便可动态增加应用功能/*** 缓存性能监控MBean* 实现CacheMetricsMBean接口(标准MBean模式)* 接口定义示例:* }*/// 使用Micrometer的Counter指标(可选)/*** 构造函数初始化指标*/// 初始化计数器(需要Micrometer依赖)// 注册到JMX(也可以通过Spring自动注册)try {

2025-05-30 12:41:09 273

原创 【RocketMQ】RocketMQ核心概念解析

✗ 文中"生产者案例"应为"生产者实例"(原文错别字修正)✗ 文中"消费者案例"应为"消费者实例"(原文错别字修正)✓ 二级分类(如"订单数据.跨境订单")✓ 支持Push/Pull两种模式。✓ 可生产多个Topic的消息。✓ 每个JVM进程对应一个实例。✓ 消息大类(如"订单数据")✓ 逻辑分组(需指定组名)✓ 逻辑分组(需指定组名)✓ 可包含多个Queue。✓ 可订阅多个Topic。✓ 生产者组的部署实例。✓ 消费者组的部署实例。✓ 必须指定Topic。✓ 采用集群消费模式。

2025-05-29 11:16:57 673

原创 【MQ】消息队列的核心价值及技术选型

消息队列()是分布式系统中不可或缺的中间件,它通过解耦应用组件、异步处理、流量控制等机制,帮助企业构建高性能、高可用、可伸缩和最终一致性的系统架构。

2025-05-29 10:52:22 842

原创 【Spring Boot 实战】使用 HTTP 响应压缩优化接口性能

最后我们通过启用 HTTP 压缩这个简单优化,我们以近乎零成本的方式显著提升了接口性能。大数据量API接口移动端应用场景跨国/高延迟网络环境。

2025-05-26 12:40:47 456

原创 【对线面试官】聊聊JVM调优经验?

其实,!如果你的 JVM 出现了严重的 GC 压力,,而不是直接上手去调整 JVM 参数。尽管如此,面试时常常会有面试官问起 JVM 调优。那么,他们真的在问 JVM 调优的经验吗?

2025-05-24 23:55:07 843

原创 【SpringBoot实战】使用 Spring Cache 本地缓存

Configuration // 标记这是一个Spring配置类/*** 创建并配置Caffeine缓存管理器* @return CacheManager 实例,用于管理应用中所有缓存* 主要配置参数说明:* - initialCapacity: 初始缓存空间大小(提升初始性能)* - maximumSize: 缓存最大容量(基于条目数)* - expireAfterWrite: 写入后过期时间(数据一致性优先场景)* - recordStats: 开启统计功能(用于监控和调优)*/

2025-05-22 18:19:39 518

原创 【缓存】JAVA本地缓存推荐Caffeine和Guava

在软件开发过程中,缓存是提升系统性能的常用手段。对于基础场景,直接使用 Java集合框架(如Map/Set/List)即可满足需求。自行实现这些功能往往复杂度较高。(新一代缓存之王)和(经典缓存方案)。

2025-05-22 11:42:17 1031 2

原创 【HTTP】connectionRequestTimeout与connectTimeout的本质区别

作用层面:物理连接 vs 逻辑连接时间阶段:连接建立 vs 连接获取影响范围:单次请求 vs 系统资源合理配置这两个参数,可以有效平衡系统可靠性和响应速度,是构建健壮分布式系统的重要基础。

2025-05-20 12:02:10 617

原创 【配置中心】配置中心该用Nacos还是Apollo

专业配置管理→ Apollo轻量级全家桶→ Nacos。

2025-05-16 10:25:57 586

原创 【Spring Cloud Gateway】Nacos整合遇坑记:503 Service Unavailable

经过查阅 Spring Cloud 官方文档,我注意到从 Spring Cloud 2020版 本开始,Netflix Ribbon 被标记为进入维护模式,Spring 官方推荐使用Spring Cloud LoadBalancer 作为替代。最近在公司进行微服务架构升级,将原有的 Spring Cloud Hoxton 版本升级到最新的 2021.x 版本,同时使用 Nacos 作为服务注册中心和配置中心。添加依赖后,重启 Gateway 服务,再次测试路由功能,一切恢复正常。第一步:确认服务注册情况。

2025-05-15 12:45:08 567

原创 【SpringBoot实战】集成Easy ES

Easy ES(简称EE)是一款基于 Elasticsearch 官方 RestHighLevelClient 封装的 ORM 框架,提供类似 MyBatis-Plus 的 API 设计,可以帮助开发者更简单地集成和使用 Elasticsearch,让操作 Elasticsearch 变得更加方便和高效,大大降低了 Elasticsearch 操作复杂度。通过 Easy ES 框架,我们可以:● 减少约 80% 的 ES 操作代码量● 使用熟悉的 MyBatis-Plus 风格 API。

2025-05-14 21:47:05 965

原创 【SpringCloud GateWay】Connection prematurely closed BEFORE response 报错分析与解决方案

基于 LRU(最近最少使用)算法思想,LIFO 策略可确保当前最活跃的"热点连接"优先被复用,而长期未被使用的空闲连接将自然沉淀至队列末端,便于后续回收机制处理。使连接池的回收动作先于后端服务的强制断连,防止获取到即将被后端主动关闭的"僵尸连接",避免出现请求中途因连接被重置导致的异常。将连接池获取策略由默认的 FIFO(先进先出)变更为 LIFO(后进先出)。空闲时间阈值 < 后端服务连接超时时间(connectTimeout)。增加 SCG 服务的JVM启动参数,调整连接获取策略。

2025-05-07 11:55:59 746

原创 【AI】如何自己训练AI大模型

人工智能领域中,尤其是大型语言模型(如GPT、BERT等),已经取得了显著的进展。对于初学者来说,自己训练一个AI大模型可能显得有些复杂,但通过循序渐进地掌握步骤,你也可以成功实现。本文将为你提供一个清晰的学习路线,帮助你更好地理解并动手操作。

2025-05-06 17:14:32 1071

原创 【线程安全】SimpleDateFormat线程安全问题

SimpleDateFormat线上告警群出现告警啦,下面是具体的告警堆栈日志。

2025-04-30 11:30:17 406

原创 【DBeaver】如何连接MongoDB

MongoDB 在社区版是默认没有的,搜索驱动包也搜索不到,网上有很多 mongodb-driver 的 jar 包并不是驱动包,找到了一个叫 mongo-jdbc-standalone.jar 才能使用。

2025-04-30 10:59:22 1076 2

原创 【AI】技术人如何系统学习AI大模型应用开发?

【代码】【AI】技术人如何系统学习AI大模型应用开发?

2025-03-13 18:10:43 1250

原创 为什么说InnoDB中B+树的高度一般保持在三层以内会比较好?

树高最大数据量(示例)I/O次数适用场景3层~2000万行3常规OLTP业务4层~200亿行4超大规模数据结论3层B+树在磁盘I/O效率、索引维护成本和数据容量之间实现了最佳平衡。通过合理设计索引、控制数据行大小和分库分表,可避免树高膨胀,保障数据库性能。

2025-03-12 18:07:16 616

原创 【技术基础】什么是堆外内存?

堆外内存是提高 Java 应用性能的有效手段之一,特别是在处理大量数据、网络通信、文件处理和高性能计算等场景下。虽然堆外内存提供了更好的性能和控制,但同时也带来了更高的风险和复杂性。开发者需要权衡利弊,合理地在应用中引入堆外内存,并通过严格的测试和监控确保系统的稳定性和可靠性。

2024-11-27 17:00:53 568

jvm(21题).pdf

jvm必读

2021-04-03

Java线上故障排查方案.pdf

线上故障排查方法记录

2021-04-03

xshell 6.0 免费下载即用,无需破解

xhell 64 位 免费破解

2019-04-01

rsa加密工具类

非常实用的rsa加解密工具类,加签验签,拿过去就能用,包含测试代码

2018-07-13

xmind8(不需要破解,安装即用)

此版本为xmind8,不需要破解,安装即用啊啊啊啊啊啊啊啊

2019-04-01

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

TA关注的人

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