- 博客(1383)
- 收藏
- 关注
原创 阿里架构师:天天高并发,这个时代达不到百万以上的并发量都不叫高并发!!!
对象的共享对象的组合基础构建模块第二部分介绍了并发应用程序的构造理论,包括应用程序中并行语义的分解及其与逻辑任务的映射,任务的取消与关闭等行为的实现,以及Java线程池中的一些高级功能,此外还介绍了如何提高GUI应用程序的响应性。任务执行取消与关闭线程池的使用图形用户界面应用程序第三部分介绍了并发编程的性能调优,包括如何避免活跃性问题,如何提高高并发代码的性能和可伸缩性以获得理想的性能,以及在测试并发代码正确性和性能时的一些实用技术。避免活跃性危险性能与可伸缩性并发程序员的测试。
2024-04-17 14:46:42
1595
原创 阿里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
原创 SpringBoot接口防抖(防重复提交)的一些实现方案
设置额外选项:过期时间和SET_IF_ABSENT选项”,有些同学可能不太清楚SET_IF_ABSENT是个啥,这里我解释一下:SET_IF_ABSENT是 RedisStringCommands.SetOption 枚举类中的一个选项,用于在执行 SET 命令时设置键值对的时候,如果键不存在则进行设置,如果键已经存在,则不进行设置。从测试的结果上看,防抖是做到了,但是随着缓存消失、锁失效,还是可以发起同样的请求,所以要真正做到接口幂等性,还需要业务代码的判断、设置数据库表的UK索引等操作。
2025-11-23 16:51:40
538
原创 够详细!RabbitMQ、RocketMQ、Kafka 三元归一!
Kafka Broker有一个参数,log.segment.bytes,限定了每个日志段文件的大小,最大就是1GB。一个Topic,代表逻辑上的一个业务数据集,比如订单相关操作消息放入订单Topic,用户相关操作消息放入用户Topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上可定会有容量限制问题,那么就可以在Topic内部划分多个Partition来分片存储数据,不同的Partition可以位于不同的机器上,相当于。
2025-11-23 16:50:53
792
原创 总结如何画一手好的架构图
先不去管这些图好不好,我们通过对这些图的分类以及作用,思考了一下,总结下来,我们认为,明确这两点之后,从受众角度来说,一个好的架构图是不需要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应。在画出一个好的架构图之前, 首先应该要明确其受众,再想清楚要给他们传递什么信息,所以,不要为了画一个物理视图去画物理视图,为了画一个逻辑视图去画逻辑视图,而应该根据受众的不同,传递的信息的不同,用图准确地表达出来,最后的图可能就是在这样一些分类里。技术服务以及组件之间的交互关系。
2025-11-23 16:50:05
654
原创 教你实现 SSO 单点登录
单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统。随着SSO技术的流行,相关产品也比较多,其中CAS就是一套解决方案,CAS(Central Authentication Service)中文翻译为统一身份认证服务或中央身份服务,它由服务端和客户端组成,实现SSO,并且容易进行企业应用的集成。
2025-11-23 16:49:27
619
原创 通用支付系统设计
支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。
2025-11-23 16:48:43
392
原创 Nginx 高可用方案!
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果一个系统能够一直提供服务,那么这个可用性则是百分之百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。
2025-11-23 16:47:54
399
原创 Nginx 配置高性能静态网站 - 缓存、Gzip、跨域和防盗链
本篇博客对配置Nginx静态网站中的缓存、Gzip、跨域和防盗链等四个知识点在之前的生产实践中遇到的问题进行归纳和总结,分享出来,以方便同学们有更好的成长。Nginx 配置高性能静态网站。
2025-11-23 16:46:44
537
原创 Redis缓存如何回收?击穿、穿透、雪崩、预热解决方案?
穿透:缓存不存在,数据库不存在,高并发,少量key击穿:缓存不存在,数据库存在,高并发,少量key雪崩:缓存不存在,数据库存在,高并发,大量key语义有些许差异,但是,都可以使用限流的互斥锁,保障数据库的稳定。
2025-11-23 16:45:18
591
原创 我的mybatis-plus用法,被全公司同事开始悄悄模仿了!
包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。记过上面的接口验证,功能没有问题,集成成功。建议大家选择 utf8mb4 这种字符集,做过微信的同学应该会知道,微信用户名称的表情,是需要这种字符集才能存储的。mybatis-plus 为使用者封装了很多的注解,方便我们使用,我们首先看下实体类中有哪些注解。有更高的性能,但是不能忽略下面的配置,否则服务会不断抛出异常,原因是数据库的连接时常和连接池的配置没有做好。关于其他的属性,我不太推荐使用,用得越多,越容易蒙圈。
2025-11-23 16:43:59
408
原创 2026年阿里Java面试题库(纯干货,超详细,从题目到答案)
问题:请详细解释Java内存模型(JMM)及其在并发编程中的作用答案: Java内存模型定义了Java程序中各种变量的访问规则,以及在JVM中将变量存储到内存和从内存中取出变量的底层细节。JMM主要包含以下关键概念:主内存与工作内存:内存间交互操作:happens-before原则:应用场景:问题:Java并发编程中需要解决的三大核心问题是什么?如何解决?答案: 并发编程需要解决的三大核心问题:可见性问题:原子性问题:有序性问题:问题:详细描述JVM的垃圾回收机制,包括各种GC算法及其适用场景答案: JVM
2025-11-23 16:37:08
1432
原创 没想到RAG教程这么通俗易懂,程序员真的有福了!
就好比把RAG技术比作一个聪明的图书管理员,当我们提出问题时,它能迅速从庞大的知识“图书馆”里找到相关的信息,并结合这些信息生成准确的答案。对于程序员来说,这样的教程无疑是一大福音。而现在,有了这个通俗易懂的RAG教程,程序员可以节省大量的学习成本,更快地掌握RAG技术。而这个通俗易懂的RAG教程,将为更多的程序员打开探索RAG技术的大门,推动RAG技术在各个领域的广泛应用。毕竟这类前沿技术的教程往往涉及到复杂的算法、新颖的架构以及专业的理论知识,我本以为又要在一堆生涩的术语和复杂的逻辑中艰难摸索。
2025-11-17 20:52:59
412
原创 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
391
原创 SpringBoot接口幂等性方案:4种策略+代码实战,告别重复提交
/ 秒@Aspect@Component@Autowired// ① 计算请求体摘要// ② 第一次:setIfAbsent 返回 truereturn Result.fail("**重复请求**");try {// 异常时释放,允许重试throw e;// 使用MD5 把任意长度报文压缩成 32 位,冲突概率极低。setIfAbsent 保证原子性,异常回删避免误杀。注解 + AOP 零侵入,老接口 1 行代码即可拥有幂等。
2025-11-17 19:53:08
333
原创 请求合并的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
538
原创 如何搭建漂亮的SpringBoot脚手架
在真实的工作中,IDE的配置工作其实不是最麻烦的和最浪费的时间的,有一件事情更加浪费时间,每次搞的我都特别的崩溃,这件事情也和环境相关,同时也和其他人相关。你们猜猜是什么事情呢?
2025-11-17 17:30:23
570
原创 只改了五行代码将接口吞吐量提升了10多倍
背景公司的一个ToB系统,因为客户使用的也不多,没啥并发要求,就一直没有经过压测。这两天来了一个“大客户”,对并发量提出了要求:核心接口与几个重点使用场景单节点吞吐量要满足最低500/s的要求。当时一想,500/s吞吐量还不简单。Tomcat按照100个线程,那就是单线程1S内处理5个请求,200ms处理一个请求即可。这个没有问题,平时接口响应时间大部分都100ms左右,还不是分分钟满足的事情。然而压测一开,100 的并发,吞吐量居然只有 50 ...
2025-11-17 17:29:45
578
原创 三面阿里,四面京东,終拿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
559
原创 通用支付系统设计
支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心 两个大系统。交易系统关联了业务场景和底层支付,而支付系统完成了调用支付工具到对账清算等一系列相关操作。下面我们就来一起看下各个系统的核心组成和交互。
2025-11-12 14:53:24
884
原创 我的mybatis-plus用法,被全公司同事开始悄悄模仿了!
包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于 mybatis-plus 是什么,不多做介绍了,看官方文档:https://baomidou.com/,咱们直接代码撸起来。建议大家选择 utf8mb4 这种字符集,做过微信的同学应该会知道,微信用户名称的表情,是需要这种字符集才能存储的。有更高的性能,但是不能忽略下面的配置,否则服务会不断抛出异常,原因是数据库的连接时常和连接池的配置没有做好。关于其他的属性,我不太推荐使用,用得越多,越容易蒙圈。
2025-11-12 14:51:45
869
原创 Redis缓存如何回收?击穿、穿透、雪崩、预热解决方案?
穿透:缓存不存在,数据库不存在,高并发,少量key击穿:缓存不存在,数据库存在,高并发,少量key雪崩:缓存不存在,数据库存在,高并发,大量key语义有些许差异,但是,都可以使用限流的互斥锁,保障数据库的稳定。
2025-11-12 14:50:57
816
原创 10 万QPS ,API 耗时 100ms,线程池如何优化?
打印日志、降级处理、放入备用队列等五、代码实现:线程池优化实战(含注释)我们以 Spring Boot + 自定义线程池为例,构建一个高性能任务处理系统。
2025-11-12 14:50:11
375
原创 一款牛逼的IDEA插件神器:让代码命名变得轻松高效
日常工作就是在前端(Vue)和后端(Java)之间来回切换,一手托着 IDEA,一手托着 Cursor,在代码的世界里搬砖。写业务逻辑、调BUG、和产品经理“友好交流”……这些我都能应付自如,但唯独有一件事,能瞬间击垮我的“专业防线”,那就是——命名。你是不是也经历过这样的场景:• 一个“获取用户激活状态”的方法,想了五分钟,最后憋出了一个,总觉得不优雅,但又想不出更好的。• 面对一个复杂的业务流程,里面的临时变量、flag、各种 DTO,命名开始逐渐失控,tempListflag1开始满天飞。
2025-11-12 14:49:30
413
原创 你会Maven吗?再问一遍,你真的会用Maven了吗?
果你是有一定的开发经验,我相信你一定被项目lib下的JAR包折磨过,如果碰上兼容问题,更是逐个下载不同版本JAR包进行替换排查,相信是每个程序员都不想再经历一边的噩梦。Maven的出现则大大降低开发人员的准备工作,让开发人员更专心与业务,下面即介绍Maven基本使用。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。一、基础配置。
2025-11-12 14:48:49
642
原创 SpringBoot接口幂等性方案:4种策略+代码实战,告别重复提交
/ 秒@Aspect@Component@Autowired// ① 计算请求体摘要// ② 第一次:setIfAbsent 返回 truereturn Result.fail("**重复请求**");try {// 异常时释放,允许重试throw e;// 使用MD5 把任意长度报文压缩成 32 位,冲突概率极低。setIfAbsent 保证原子性,异常回删避免误杀。注解 + AOP 零侵入,老接口 1 行代码即可拥有幂等。
2025-11-12 14:48:02
249
原创 请求合并的3种技巧,性能起飞!
工作中,我们常见的请求模型都是”请求-应答”式,即一次请求中,服务给请求分配一个独立的线程,一块独立的内存空间,所有的操作都是独立的,包括资源和系统运算。我们也知道,在请求中处理一次系统 I/O 的消耗是非常大的,如果有非常多的请求都进行同一类 I/O 操作,那么是否可以将这些 I/O 操作都合并到一起,进行一次 I/O 操作,是否可以大大降低下游资源服务器的负担呢?
2025-11-12 14:45:52
615
原创 号称取代 Elasticsearch,太猛了!
Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎完全重写了代码并保持开源。这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。对于更大的数据集,Manticore通过Manticore Columnar Library提供列存储支持,可以处理无法适合内存的数据集。Manticore是基于SQL的,使用SQL作为其本机语法,并与MySQL协议兼容,使您可以使用首选的MySQL客户端。
2025-11-07 14:08:47
397
原创 SpringBoot+ShardingSphere实现多线程批量插入10000条数据
简单的来说,水平分片就是把一张大表的数据进行一个水平切割,将切割出来的不同的部分添加到不同的表当中,我们举这样的一个例子,在一家银行当中,最开始只开放了一个业务窗口,因为一开始的业务量不大,一个窗口足以解决这一天当中的所有问题,但是由于业务员的出色的业务能力,越来越多的人开始到这个银行办理业务了,这时一个窗口就不够了,需要多开几个窗口分担业务压力。Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互有效的梳理。
2025-11-07 14:07:57
772
原创 细数一些 JDK8 踩过的坑,说多了都是泪
遇到最大的坑:直接将 stream 修改成 parallelStream , 天真地以为做了性能优化。其他场景不再赘述,一定要知道 parallelStream 是并行的,多线程的问题它都有。stream 不同于数据库的排序操作,为 null 时数据库会默认排序,但这个API不会。下面案例:value 值由函数值返回,模拟返回 null, 运行结果 NPE。业务查询结果,先按第一个字段排序,相同再按照第二个字段排序......案例:模拟从 DB 检索出来的数据,按照业务要求进行多字段排序。
2025-11-07 14:07:20
1026
原创 太方便了!SpringBoot 只需一个注解,就能搞定任意对象下载!
下载功能应该是比较常见的功能了,虽然一个项目里面可能出现的不多,但是基本上每个项目都会有,而且有些下载功能其实还是比较繁杂的,倒不是难,而是麻烦。因此,为了简化这一过程,有一个工具库,使得下载功能的实现变得更加简单快捷。如果我说现在只需要一个注解就能帮你下载任意的对象,是不是觉得非常的方便感觉差别不大?那就听听我遇到的一个下载需求我们有一个平台是管理设备的,然后每个设备都会有一个二维码图片,用一个字段存储的 http 地址。
2025-11-07 14:06:35
814
原创 SpringBoot + Nacos + k8s 优雅停机
ribbon 默认缓存刷新时间30s;停机的服务监听nacos反注册事件,判断是自己反注册了,表示准备关机,那么就可以停止对mq消息的监听,停止定时任务,这样就比在优雅停机时,进行mq 和 定时任务的停止更完美。上面的方案中,提到nacos反注册时,其他服务监听反注册事件,进行ribbon缓存刷新,那么,反注册的服务(停机服务)自身,是否可以也监听该事件呢?上面的步骤,其实还缺了不少基础的内容,比如,停止请求外,还要停止接收定时任务、停止接收mq消息,等待他们的完成,这2项都是我们微服务中必不可缺的能力。
2025-11-07 14:03:45
764
原创 用雪花 id 和 uuid 做 MySQL 主键,被领导怼了
在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。本篇博客的目录mysql程序实例 使用uuid和自增id的索引结构对比 总结。
2025-11-07 14:02:24
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅