自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿里架构师:天天高并发,这个时代达不到百万以上的并发量都不叫高并发!!!

对象的共享对象的组合基础构建模块第二部分介绍了并发应用程序的构造理论,包括应用程序中并行语义的分解及其与逻辑任务的映射,任务的取消与关闭等行为的实现,以及Java线程池中的一些高级功能,此外还介绍了如何提高GUI应用程序的响应性。任务执行取消与关闭线程池的使用图形用户界面应用程序第三部分介绍了并发编程的性能调优,包括如何避免活跃性问题,如何提高高并发代码的性能和可伸缩性以获得理想的性能,以及在测试并发代码正确性和性能时的一些实用技术。避免活跃性危险性能与可伸缩性并发程序员的测试。

2024-04-17 14:46:42 1599

原创 阿里Java面试手册-Java面试题总结(附答案)——互联网大厂都在问的Java面试题,而你从没看过!

索引是一种数据结构,用于加快数据库的查询速度。在MySQL中,可以使用CREATE INDEX语句来创建索引。例如,CREATE INDEX idx_name ON table_name (column_name);可以创建名为idx_name的索引,它将基于table_name表中的column_name列。Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。

2024-04-13 19:29:51 988

原创 Java程序员真的还有未来吗?如何备战2024春招Java面试?并狂拿大厂offer?(java高级岗)

嘿,小伙伴们,你们有没有想过Java程序员还有没有未来?哈哈,别担心,我这就来给你们答疑解惑!首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们。

2024-04-11 19:32:01 1838

原创 二面字节被挂,三面阿里,四面京东,終拿offer!

秋招季,我怀着忐忑的心情参加了字节跳动商业化部门的二面。面试官直接抛出一道动态规划难题:"给定一个数组,找出不相邻元素的最大和。。。我虽然刷过类似题目,但在白板编码时手忙脚乱,边界条件处理不当,最终时间复杂度也没优化到位。这次失败让我意识到:光背题解不够,必须吃透算法原理。

2025-11-25 16:03:43 1137

原创 SpringBoot+Tess4j:轻松实现OCR功能

一、引言二、功能演示三、功能实现1. 描述2. 编码实现四、源码五、结束语。

2025-11-25 14:40:33 248

原创 自从用了SpringBatch,效率飙升500%!

Data// 公共字段// 银行端数据// 内部系统数据// 对账结果MATCHED, // 数据一致AMOUNT_DIFF, // 金额不一致STATUS_DIFF, // 状态不一致ONLY_IN_BANK, // 银行单边账ONLY_IN_SYSTEM // 系统单边账-- 常用监控SQL示例-- 最近5次作业执行情况。

2025-11-25 14:40:00 251

原创 阿里又开源了一个顶级Java项目!

为此阿里推出的 Spring AI Alibaba Admin ,通过五大核心功能形成 AI Agent 全生命周期解决方案:以 Prompt 模板化与版本控制提升开发效率,靠数据集版本管理与自动化生成保障评估基础,借灵活的评估器配置解决质量 “玄学” 问题,用实验管理实现批量评估与结果对比,再以端到端链路追踪和服务监控破解运维 “黑盒” 困境,同时支持多模型接入与动态配置。团队里你用你的版本,我用我的版本,乱成一锅粥,没法统一管理。测试不全面,没有统一的打分标准,这次和上次的效果也没法比。

2025-11-25 14:38:56 368

原创 谈谈 Spring 的替代方案

在当今快速发展的云原生和微服务架构时代,Java开发者面临着对高性能、低资源消耗框架的迫切需求。Micronaut作为一个新兴的JVM框架,凭借其创新的设计理念和卓越的性能表现,正在迅速成为传统Spring框架的有力替代品。本文将全面剖析Micronaut框架的核心优势,并与Spring Boot进行多维度对比,让大家在以后的技术选型中多一个选项。框架设计哲学Micronaut与Spring Boot最根本的区别在于其设计哲学的实现方式。

2025-11-25 14:38:13 240

原创 SpringBoot接口幂等性方案:4种策略+代码实战,告别重复提交

把请求体做 MD5/SHA256,作为幂等键。零额外交互、客户端无感。// 秒@Aspect@Component@Autowired// ① 计算请求体摘要// ② 第一次:setIfAbsent 返回 truereturn Result.fail("**重复请求**");try {// 异常时释放,允许重试throw e;// 使用• MD5 把任意长度报文压缩成 32 位,冲突概率极低。• setIfAbsent 保证原子性,异常回删避免误杀。

2025-11-25 14:37:17 373

原创 IDEA 实战:查看 Maven 依赖树与解决 Jar 包冲突

快速看依赖树→ IDEA 自带依赖树 或。高效排查冲突→ 装插件,直观显示冲突。解决冲突→ 用exclusion排除不需要的包,或在锁定版本。

2025-11-25 14:36:35 354

原创 还用 WebSocket?这才是实时消息推送的正确姿势!轻量好用~

在很久很久以前,前端一般使用轮询来进行服务端向客户端进行消息的伪推送,为什么说轮询是伪推送?因为轮询本质上还是通过客户端向服务端发起一个单项传输的请求,服务端对这个请求做出响应而已。通过不断的请求来实现服务端向客户端推送数据的错觉。并不是服务端主动向客户端推送数据。显然,轮询一定是上述三个方法里最下策的决定。首先轮询需要不断的发起请求,每一个请求都需要经过http建立连接的流程(比如三次握手,四次挥手),是没有必要的消耗。客户端需要从页面被打开的那一刻开始就一直处理请求。

2025-11-25 14:35:51 716

原创 从零手撸 SpringBoot 日志分析系统:打造高性能慢SQL检测神器

前言最近在项目中遇到了一个棘手的问题:生产环境的MyBatis日志文件越来越大,手动查找慢SQL变得异常困难。为了方便方便做日志分析,写了个分析日志的系统PS:py更方便,但是这个版本是基于java的。项目背景。

2025-11-25 14:34:58 587

原创 String a = “abc“和String a = new String(“abc“)比较

首先在栈中定义一个引用变量a,检查字符串常量池中是否存在"abc",存在则直接指向"abc"的地址(指向的是字符串常量池中的地址),不存在则先在常量池中创建"abc"再指向其地址。new String("abc") 无论字符串常量池中是否存在“abc”,都会在堆中生成一个新的对象,c和d的引用指向各自堆的地址,堆引用才指向常量池。所以a、c、d三者不相等。首先在栈中定义了一个引用变量a,然后在堆中new一个String对象,a指向这个对象,然后new出来的String对象再指向常量池中的abc。

2025-11-25 14:33:53 275

原创 SpringBoot接口防抖(防重复提交)的一些实现方案

设置额外选项:过期时间和SET_IF_ABSENT选项”,有些同学可能不太清楚SET_IF_ABSENT是个啥,这里我解释一下:SET_IF_ABSENT是 RedisStringCommands.SetOption 枚举类中的一个选项,用于在执行 SET 命令时设置键值对的时候,如果键不存在则进行设置,如果键已经存在,则不进行设置。从测试的结果上看,防抖是做到了,但是随着缓存消失、锁失效,还是可以发起同样的请求,所以要真正做到接口幂等性,还需要业务代码的判断、设置数据库表的UK索引等操作。

2025-11-23 16:51:40 604

原创 够详细!RabbitMQ、RocketMQ、Kafka 三元归一!

Kafka Broker有一个参数,log.segment.bytes,限定了每个日志段文件的大小,最大就是1GB。一个Topic,代表逻辑上的一个业务数据集,比如订单相关操作消息放入订单Topic,用户相关操作消息放入用户Topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上可定会有容量限制问题,那么就可以在Topic内部划分多个Partition来分片存储数据,不同的Partition可以位于不同的机器上,相当于。

2025-11-23 16:50:53 1010

原创 总结如何画一手好的架构图

先不去管这些图好不好,我们通过对这些图的分类以及作用,思考了一下,总结下来,我们认为,明确这两点之后,从受众角度来说,一个好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应。在画出一个好的架构图之前, 首先应该要明确其受众,再想清楚要给他们传递什么信息,所以,不要为了画一个物理视图去画物理视图,为了画一个逻辑视图去画逻辑视图,而应该根据受众的不同,传递的信息的不同,用图准确地表达出来,最后的图可能就是在这样一些分类里。技术服务以及组件之间的交互关系。

2025-11-23 16:50:05 932

原创 教你实现 SSO 单点登录

单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统。随着SSO技术的流行,相关产品也比较多,其中CAS就是一套解决方案,CAS(Central Authentication Service)中文翻译为统一身份认证服务或中央身份服务,它由服务端和客户端组成,实现SSO,并且容易进行企业应用的集成。

2025-11-23 16:49:27 735

原创 通用支付系统设计

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。

2025-11-23 16:48:43 450

原创 Nginx 高可用方案!

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。

2025-11-23 16:47:54 509

原创 Nginx 配置高性能静态网站 - 缓存、Gzip、跨域和防盗链

本篇博客对配置Nginx静态网站中的缓存、Gzip、跨域和防盗链等四个知识点在之前的生产实践中遇到的问题进行归纳和总结,分享出来,以方便同学们有更好的成长。Nginx 配置高性能静态网站。

2025-11-23 16:46:44 675

原创 Redis缓存如何回收?击穿、穿透、雪崩、预热解决方案?

穿透:缓存不存在,数据库不存在,高并发,少量key击穿:缓存不存在,数据库存在,高并发,少量key雪崩:缓存不存在,数据库存在,高并发,大量key语义有些许差异,但是,都可以使用限流的互斥锁,保障数据库的稳定。

2025-11-23 16:45:18 847

原创 我的mybatis-plus用法,被全公司同事开始悄悄模仿了!

包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。记过上面的接口验证,功能没有问题,集成成功。建议大家选择 utf8mb4 这种字符集,做过微信的同学应该会知道,微信用户名称的表情,是需要这种字符集才能存储的。mybatis-plus 为使用者封装了很多的注解,方便我们使用,我们首先看下实体类中有哪些注解。有更高的性能,但是不能忽略下面的配置,否则服务会不断抛出异常,原因是数据库的连接时常和连接池的配置没有做好。关于其他的属性,我不太推荐使用,用得越多,越容易蒙圈。

2025-11-23 16:43:59 533

原创 2026年阿里Java面试题库(纯干货,超详细,从题目到答案)

问题:请详细解释Java内存模型(JMM)及其在并发编程中的作用答案: Java内存模型定义了Java程序中各种变量的访问规则,以及在JVM中将变量存储到内存和从内存中取出变量的底层细节。JMM主要包含以下关键概念:主内存与工作内存:内存间交互操作:happens-before原则:应用场景:问题:Java并发编程中需要解决的三大核心问题是什么?如何解决?答案: 并发编程需要解决的三大核心问题:可见性问题:原子性问题:有序性问题:问题:详细描述JVM的垃圾回收机制,包括各种GC算法及其适用场景答案: JVM

2025-11-23 16:37:08 1505

原创 没想到RAG教程这么通俗易懂,程序员真的有福了!

就好比把RAG技术比作一个聪明的图书管理员,当我们提出问题时,它能迅速从庞大的知识“图书馆”里找到相关的信息,并结合这些信息生成准确的答案。对于程序员来说,这样的教程无疑是一大福音。而现在,有了这个通俗易懂的RAG教程,程序员可以节省大量的学习成本,更快地掌握RAG技术。而这个通俗易懂的RAG教程,将为更多的程序员打开探索RAG技术的大门,推动RAG技术在各个领域的广泛应用。毕竟这类前沿技术的教程往往涉及到复杂的算法、新颖的架构以及专业的理论知识,我本以为又要在一堆生涩的术语和复杂的逻辑中艰难摸索。

2025-11-17 20:52:59 413

原创 SpringBoot 3.x 集成 Flowable 7.x:流程设计、部署、启动及完成实战

• 官方流程设计器• 访问IP加启动容器的端口默认账户/密码:admin/test• 进入设计器• 创建流程并设计• 创建测试流程这里先简单画个流程,后期写个详细流程图的绘画• 确定后进入设计界面• 添加用活动后设置名称• 点击用户任务设置用户任务的执行人• 这里先简单设置一个固定的人,分配用户ID为:user1• 再重复添加一个用户任务,添加一下结束事件• 最后就依次连线就行了,选中开始节点然后连接到用户最后的效果图点击保存。

2025-11-17 19:54:46 335

原创 10 万QPS ,API 耗时 100ms,线程池如何优化?

打印日志、降级处理、放入备用队列等五、代码实现:线程池优化实战(含注释)我们以 Spring Boot + 自定义线程池为例,构建一个高性能任务处理系统。

2025-11-17 19:53:47 392

原创 SpringBoot接口幂等性方案:4种策略+代码实战,告别重复提交

/ 秒@Aspect@Component@Autowired// ① 计算请求体摘要// ② 第一次:setIfAbsent 返回 truereturn Result.fail("**重复请求**");try {// 异常时释放,允许重试throw e;// 使用MD5 把任意长度报文压缩成 32 位,冲突概率极低。setIfAbsent 保证原子性,异常回删避免误杀。注解 + AOP 零侵入,老接口 1 行代码即可拥有幂等。

2025-11-17 19:53:08 335

原创 请求合并的3种技巧,性能起飞!

工作中,我们常见的请求模型都是”请求-应答”式,即一次请求中,服务给请求分配一个独立的线程,一块独立的内存空间,所有的操作都是独立的,包括资源和系统运算。我们也知道,在请求中处理一次系统 I/O 的消耗是非常大的,如果有非常多的请求都进行同一类 I/O 操作,那么是否可以将这些 I/O 操作都合并到一起,进行一次 I/O 操作,是否可以大大降低下游资源服务器的负担呢?

2025-11-17 19:49:20 712

原创 全网最全的 Jenkins + Maven + Git 自动化部署指南!

我们今天用 Jenkins + Maven + Git 来实现一套简单的自动化部署• 首先,程序员将本地代码,git push到远程 GitLab 服务器。• 然后,Jenkinsgit pull到 Jenkins 服务器,并用 maven 帮我们打成 jar 包。• 最后,Jenkins 将打好的 jar 包通过 SSH Publisher 发布到测试服务器。一、先决条件这里需要用到 三台服务器,一台安装 GitLab,一台安装 Jenkins,还有一台测试服务器。

2025-11-17 17:31:08 540

原创 如何搭建漂亮的SpringBoot脚手架

在真实的工作中,IDE的配置工作其实不是最麻烦的和最浪费的时间的,有一件事情更加浪费时间,每次搞的我都特别的崩溃,这件事情也和环境相关,同时也和其他人相关。你们猜猜是什么事情呢?

2025-11-17 17:30:23 572

原创 只改了五行代码将接口吞吐量提升了10多倍

背景公司的一个ToB系统,因为客户使用的也不多,没啥并发要求,就一直没有经过压测。这两天来了一个“大客户”,对并发量提出了要求:核心接口与几个重点使用场景单节点吞吐量要满足最低500/s的要求。当时一想,500/s吞吐量还不简单。Tomcat按照100个线程,那就是单线程1S内处理5个请求,200ms处理一个请求即可。这个没有问题,平时接口响应时间大部分都100ms左右,还不是分分钟满足的事情。然而压测一开,100 的并发,吞吐量居然只有 50 ...

2025-11-17 17:29:45 580

原创 执行一条 SQL 语句,期间发生了什么?

1.索引的基础知识。

2025-11-17 17:29:04 653

原创 Spring Boot+Nacos+MySQL微服务问题排查指南

建议:把这个模板保存为放在项目根目录,团队共享。

2025-11-17 17:27:20 312

原创 三面阿里,四面京东,終拿offer!Java面经分享!

本人某985计算机专业硕士,在校期间主要研究方向是大数据和分布式系统,有3个开源项目贡献经历,2段BAT级别实习经历。从去年9月开始准备秋招,最终通过阿里三面技术面+HR面,京东四面(含2轮技术交叉面),最终同时拿到阿里P6和京东T7的offer。

2025-11-12 16:36:18 111

原创 Nginx 高可用方案!

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。

2025-11-12 14:54:07 561

原创 通用支付系统设计

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。

2025-11-12 14:53:24 885

原创 我的mybatis-plus用法,被全公司同事开始悄悄模仿了!

包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于 mybatis-plus 是什么,不多做介绍了,看官方文档:https://baomidou.com/,咱们直接代码撸起来。建议大家选择 utf8mb4 这种字符集,做过微信的同学应该会知道,微信用户名称的表情,是需要这种字符集才能存储的。有更高的性能,但是不能忽略下面的配置,否则服务会不断抛出异常,原因是数据库的连接时常和连接池的配置没有做好。关于其他的属性,我不太推荐使用,用得越多,越容易蒙圈。

2025-11-12 14:51:45 871

原创 Redis缓存如何回收?击穿、穿透、雪崩、预热解决方案?

穿透:缓存不存在,数据库不存在,高并发,少量key击穿:缓存不存在,数据库存在,高并发,少量key雪崩:缓存不存在,数据库存在,高并发,大量key语义有些许差异,但是,都可以使用限流的互斥锁,保障数据库的稳定。

2025-11-12 14:50:57 817

原创 10 万QPS ,API 耗时 100ms,线程池如何优化?

打印日志、降级处理、放入备用队列等五、代码实现:线程池优化实战(含注释)我们以 Spring Boot + 自定义线程池为例,构建一个高性能任务处理系统。

2025-11-12 14:50:11 377

原创 一款牛逼的IDEA插件神器:让代码命名变得轻松高效

日常工作就是在前端(Vue)和后端(Java)之间来回切换,一手托着 IDEA,一手托着 Cursor,在代码的世界里搬砖。写业务逻辑、调BUG、和产品经理“友好交流”……这些我都能应付自如,但唯独有一件事,能瞬间击垮我的“专业防线”,那就是——命名。你是不是也经历过这样的场景:• 一个“获取用户激活状态”的方法,想了五分钟,最后憋出了一个,总觉得不优雅,但又想不出更好的。• 面对一个复杂的业务流程,里面的临时变量、flag、各种 DTO,命名开始逐渐失控,tempListflag1开始满天飞。

2025-11-12 14:49:30 414

空空如也

空空如也

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

TA关注的人

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