自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring Boot 实现接口幂等性的4种方案

在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。这里的副作用是不会对结果产生破坏或者产生不可预料的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。幂等性是开发当中很常见也很重要的一个需求,尤其是支付、订单等与金钱挂钩的服务,保证接口幂等性尤其重要。对于下单等存在唯一主键的,可以使用“唯一主键方案”的方式实现。......

2022-08-02 16:30:40 276

原创 如何保证接口的幂等性?

幂等性就是一个接口在短时间内被多次调用,产生的结果和只调用一次的结果相同。比如查询操作就天然幂等。为什么说它是天然的幂等呢?因为这个查询语句不管执行多少次都不会对资源造成修改,所以说是天然幂等的操作。...

2022-07-20 21:36:29 879

原创 【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 421

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

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

2022-06-09 17:05:34 657

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

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

2021-09-07 14:17:24 797

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

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

2021-04-03 20:43:35 293

原创 关于Dubbo

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

2021-02-04 10:46:13 245

原创 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 420

转载 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 6244

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

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

2019-06-27 17:00:25 232

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

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

2025-06-03 13:32:48 480

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

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

2025-06-03 11:50:27 319

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

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

2025-06-02 22:49:32 316

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

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

2025-06-01 22:40:45 676

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

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

2025-06-01 14:57:55 787

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

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

2025-06-01 14:27:01 958

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

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

2025-05-31 22:41:45 1667

原创 【JAVA基础】JMX 和 MBean

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

2025-05-30 12:41:09 259

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

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

2025-05-29 11:16:57 668

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

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

2025-05-29 10:52:22 832

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

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

2025-05-26 12:40:47 444

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

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

2025-05-24 23:55:07 840

原创 【SpringBoot实战指南】使用 Spring Cache

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

2025-05-22 18:19:39 468

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

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

2025-05-22 11:42:17 971

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

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

2025-05-20 12:02:10 572

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

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

2025-05-16 10:25:57 527

原创 【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 528

原创 【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 842

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

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

2025-05-07 11:55:59 674

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

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

2025-05-06 17:14:32 995

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

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

2025-04-30 11:30:17 405

原创 【DBeaver】如何连接MongoDB

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

2025-04-30 10:59:22 865

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

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

2025-03-13 18:10:43 1237

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

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

2025-03-12 18:07:16 608

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

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

2024-11-27 17:00:53 564

原创 【锁】聊一聊ReentrantLock 和 Synchronized 的区别

今天我们来聊一聊 ReentrantLock 和 Synchronized 的区别!

2024-11-12 14:15:57 592

原创 【Spring】Spring框架中有有哪些常见的设计模式

Spring 框架中广泛运用了多种设计模式,今天让我们来学习一下。

2024-11-11 15:54:11 432

原创 【整洁代码之道】常见的类命名方式

代码命名不仅仅是为了让代码“好看”,它直接关系到代码的可读性、可维护性、可扩展性以及开发效率。良好的命名可以使开发过程更加高效,减少错误,提升代码的质量。而不规范或模糊的命名则可能导致沟通障碍、维护困难甚至潜在的错误。因此,重视代码命名并遵循命名规范,是编写高质量软件的关键一步。一般作为程序启动器使用,或者作为启动器的基类。通俗来说,可以认为是main函数的入口。Processor某一类功能的处理器,用来表示某个处理过程,是一系列代码片段的集合。如果你不知道一些顺序类的代码怎么命名,就可以使用它,显得高

2024-11-08 14:37:37 1020

原创 【后端秘籍】【JVM】第二篇

强引用:像坚固的铁链,只要强引用存在,对象就不会被垃圾回收。软引用:像温柔的丝带,只有在内存不足时才会被回收,适合用于实现内存敏感的缓存。弱引用:像脆弱的丝线,内存足够时也会被回收,生命周期比强引用和软引用短。虚引用:像幽灵的触摸,无法直接获取对象,随时可能被垃圾回收,并在被回收时发出通知。理解这些引用类型可以帮助我们灵活管理内存。例如,在图片加载应用中,可以使用软引用来缓存图片。当内存紧张时,软引用会被回收。而在需要实时监控对象状态的应用中,虚引用可以用来接收对象被回收的通知,以便做出相应处理。

2024-10-25 22:24:30 861

原创 【后端秘籍】【JVM篇】第一章

Java 内存模型定义了共享内存中变量的访问规则,确保在多线程环境下,线程之间的互斥和可见性。加载时,类加载器会首先请求其父类加载器加载,如果父类加载器无法加载,再由子类加载器进行加载。其设计目的是保证类数据唯一,节省内存,并确保数据的安全访问。Parallel 收集器:重视系统吞吐量,通过多线程并行处理垃圾收集,适合需要高吞吐量的场景。G1 收集器:适用于大内存环境,能高效管理内存并优化回收停顿时间,逐步替代CMS。CMS 收集器:旨在减少回收停顿时间,适合对延迟敏感的应用,使用并发收集方式。

2024-10-25 21:39:27 388

jvm(21题).pdf

jvm必读

2021-04-03

Java线上故障排查方案.pdf

线上故障排查方法记录

2021-04-03

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

xhell 64 位 免费破解

2019-04-01

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

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

2019-04-01

rsa加密工具类

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

2018-07-13

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

TA关注的人

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