自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-04-17 14:46:42 1633

原创 阿里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 999

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

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

2024-04-11 19:32:01 1848

原创 苦熬三个月没能秋招上岸!只怪我技术太菜!春招必靠它成功上岸!阿里Java面试题真的太牛了!

10、说说你对Spring的IOC是怎么理解的?11、解释一下spring bean的生命周期12、解释Spring支持的几种bean的作用域?15、说说Spring 中ApplicationContext和 BeanFactor...16、Spring 框架中的单例 Bean是线程安全的么?4、依赖注入的方式有几种,各是什么?41、HashMap的长度为什么是2的N次方呢?6、说说你对Spring MVC的理解7、SpringMVC常用的注解有哪些?2、Spring Boot的核心注解是哪个?

2025-12-22 20:35:46 1369

原创 这些 SpringBoot 默认配置不改,迟早踩坑!

Spring Boot 的“约定优于配置”确实省心,但省的是开发者的心,不是系统的责任。每一项默认配置背后,其实都藏着设计者的假设和权衡,而这些假设,在我们的业务场景中也许未必成立。这些坑我几乎都踩过,有些甚至反复踩了好几次。愿你读到这里,能少走几步弯路,可不能拿生产事故去交学费。提前优化配置,是对系统负责,也是对自己负责。

2025-12-22 20:26:33 820

原创 零停机更新代码:SpringBoot新技能,太6了~

在个人或者企业服务器上,总归有要更新代码的时候,普通的做法必须先终止原来进程,因为新进程和老进程端口是一个,新进程在启动时候,必定会出现端口占用的情况,但是,还有黑科技可以让两个SpringBoot进程真正的共用同一个端口,这是另一种解决办法,我们下回分解。那么就会出现一个问题,一种简单办法是,新代码先用其他端口启动,启动完毕后,更改nginx的转发地址,nginx重启非常快,这样就避免了大量的用户访问失败,最后终止老进程就可以。

2025-12-22 20:26:00 611

原创 微服务架构下网关的技术选型

网关的角色是作为一个API架构,用来保护、增强和控制对于API服务的访问。它是一个处于应用程序或服务(提供REST API接口服务)之前的系统,用来管理授权、访问控制和流量限制等。这样REST API接口服务就被网关保护起来,对所有的调用者透明。因此,隐藏在API网关后面的业务系统就可以专注于创建和管理服务,无需关心这些策略性的请求。

2025-12-22 20:25:18 651

原创 MySQL模糊查询再也用不着like+%了!

我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。AGAINST()接收一个要搜索的字符串,以及一个要执行的搜索类型的可选修饰符。上述语句,查询同时包含 'MySQL','database','DBMS' 的行信息,但不包含'DBMS'的行的相关性高于包含'DBMS'的行。

2025-12-22 20:24:40 894

原创 公司新来了一个同事,把权限系统设计的炉火纯青!

举个栗子,对于部门来说,一个部门拥有一万多个员工,这些员工都拥有相同的角色,如果没有用户组,可能需要一个个的授予相关的角色,在拥有了用户组以后,只需要,把这些用户全部划分为一组,然后对该组设置授予角色,就等同于对这些用户授予角色。对于通常的系统而言,存在多个用户具有相同的权限,在分配的时候,要为指定的用户分配相关的权限,修改的时候也要依次的对这几个用户的权限进行修改,有了角色这个权限,在修改权限的时候,只需要对角色进行修改,就可以实现相关的权限的修改。优点:减少工作量,便于理解,增加多级管理,等。

2025-12-22 20:23:11 899

原创 改变习惯性 !=null 判空,只需一秒!

判断一个数据是否为null,可以经过三步,第一步思考属于什么数据类型,第二步根据数据类型选择正确的工具类,第三步,使用正确的工具类进行判断。ObjectUtils 中的isEmpty()这一个方法,分别可以对字符串、数组、Map集合、List集合进行是否等于null的判断。也就是说它只判断了集合的长度,集合的长度为0,就认为集合是空的。=null 的判断,这个bug就解决了。在这个方法中,既有为null的判断,也有isEmpty的判断,聚合了两个判断,我们直接调用它也可以减少我们的工作量。

2025-12-22 20:22:20 284

原创 优雅的处理 API 接口敏感数据加解密(方案详解)

HTTPS()是一种通过计算机网络进行安全通信的传输协议。它利用SSL/TLS协议在HTTP应用层进行通信加密,通过证书进行身份验证,从而确保数据传输的安全性和完整性。

2025-12-22 20:21:50 808

原创 复杂业务系统的通用架构设计

结合着业务系统的复杂性,如果想要系统未来具有长期价值,不得不把大的系统进行拆分,用统一的业务语言进行描述,把不可识别的问题,拆分成可识别的问题域进行解决,这也就是现在又逐渐盛行起来的领域驱动设计的方法。应用如何进行设计,包括模块如何划分,功能如何实现,技术如何支撑,数据如何展示,流程如何定义,逻辑如何实现,数据如何存储等等,都是应用架构的范畴。架构的本质依然没有改变,只是由于社会的发展,我们的需求,需要处理的问题、依赖愈来愈复杂,我们需要用发展的眼光,时刻追随技术前沿,进而推进、优化、迭代系统的架构设计。

2025-12-22 20:20:48 906

原创 求求你们别再用 kill -9 了,这才是 Spring Boot 停机的正确方式!!!

则是等待应用关闭,执行阻塞操作,有时候也会出现无法关闭应用的情况(线上理想情况下,是bug就该寻根溯源)总之,进程强行终止会带来数据丢失或者终端无法恢复到正常状态,在分布式环境下还可能导致数据不一致的情况。再谈为了提醒明知故犯(在一坑里迭倒两次不是不多见),由于业务系统中大量使用了。指令,然而它的使用也有些讲究,要思考如何能做到优雅停机。则是为jvm中增加一个关闭的钩子,当jvm关闭的时候调用。可以模拟了一次系统宕机,系统断电等极端情况,而。,关闭jvm时触发对应的handle。

2025-12-22 20:20:02 91

原创 AI这么火爆!程序员会被AI所淘汰吗?对于全国占比50%数量的Java程序员来说,未来如何不被淘汰,甚至拿高薪?

AI这么火爆!程序员会被AI所淘汰吗?对于全国占比50%数量的Java程序员来说,未来如何不被淘汰,甚至拿高薪?

2025-12-18 15:06:32 944

原创 从程序员如何一步步成长为架构师?

同样的经历也发生在我的Spark学习之路上,我有过多次Spark从入门到 放弃的经历,直到有一天碰到了一个实际业务问题——需要定期分析大量数 据并生成分析结果,在解决这个问题的过程中,我才真正理解了Spark的用 途。这就和有些人一直不明白架构师到底是做什么的一样,直到有一天,他 们遇到了一个具体的问题,摸索出了一个可行的方案,才明白:原来架构师 是这样解决问题的。只有先懂场景才能学好架构,相信看完本书之后,无论是在全局的架构 思维上,还是面试时的思路展现上,抑或工作难点的突破上,你都会得到全 面的提升。

2025-12-18 14:33:02 1416

原创 架构师基操之如何画出好的架构图?

1.前言你是否对大厂展示的五花八门,花花绿绿的架构设计图所深深吸引,当我们想用几张图来介绍下业务系统,是不是对着画布不知从何下手?作为技术扛把子的筒子们是不是需要一张图来描述系统,让系统各个参与方都能看的明白?如果有这样的困惑,本文将介绍一些画图的方法论,让技术图纸更加清晰。2. 架构的定义系统架构是概念的体现,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义;架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策;

2025-12-18 14:13:15 1046

原创 SpringBoot+SPI机制,轻松实现可插拔组件

‌而SPI定义了一种插件式的架构,‌允许开发者定义接口,‌并通过服务提供者来提供不同的实现,‌主要目的是允许系统在运行时发现和加载具体的服务提供者,‌从而实现动态扩展和替换功能的能力。在Java中,‌SPI被广泛应用于各种框架和库的扩展,‌如Servlet容器初始化、‌类型转换、‌日志记录等场景。Java SPI(‌Service Provider Interface)‌是一种服务提供界面,‌它是Java提供的一种服务发现和加载机制,‌允许开发者为接口定义多种实现,‌并在运行时动态地发现和加载这些实现。

2025-12-18 14:12:35 781

原创 Spring Boot 3 + Netty 构建高并发即时通讯服务

在中代表一个网络连接,它的生命周期包括以下几个主要状态:注册(Registered):Channel 被注册到 EventLoop 上激活(Active):Channel 连接建立并就绪非激活(Inactive):Channel 连接断开注销(Unregistered):Channel 从 EventLoop 中注销这些状态变化会触发 ChannelHandler 中的相应生命周期方法,如 channelRegistered()、channelActive() 等。

2025-12-18 14:11:49 962

原创 如何处理对接第三方接口不稳定经常超时的问题?

第三方接口不稳定经常超时,如何处理三方接口异常不影响自己接口?典型回答这种情况还挺常见的,我们经常需要调外部的服务,但是有的时候外部服务又不稳定,经常会失败或者超时,那么我们怎么避免因为他们的超时而影响到我们自己的接口呢?有以下几种办法可以选择。NO.1异步处理对于一些可以异步请求第三方的场景,我们应该尽可能用异步的方案,包括MQ,异步线程,甚至是离线文件同步等方案。这种异步的方案我们用的非常多。异步的话至少能保证我们给上游的返回是不受影响的。但是异步的话需要注意的是,我们需要有个收单的过程,就是别人请求过

2025-12-18 14:11:07 243

原创 字节一面:千万级订单表新增字段怎么弄?

加个字段,真没你想得那么简单,尤其在核心大表上。整件事从头到尾,我学到了很多:• 技术方案不是唯一解,需求变更有时比技术更省事;• 尽量避免改动核心表结构,可以用扩展表、JSON字段或冗余字段;•别小看线上DDL的风险,谨慎评估业务影响;测试环境永远是你最好的朋友,大胆模拟1E数据才能安心上线。面试官:你怎么在千万级订单表加字段?我先不加,看还能不能不加。

2025-12-18 14:10:31 791

原创 这些 SpringBoot 默认配置不改,迟早踩坑!

Spring Boot 的“约定优于配置”确实省心,但省的是开发者的心,不是系统的责任。每一项默认配置背后,其实都藏着设计者的假设和权衡,而这些假设,在我们的业务场景中也许未必成立。这些坑我几乎都踩过,有些甚至反复踩了好几次。愿你读到这里,能少走几步弯路,可不能拿生产事故去交学费。提前优化配置,是对系统负责,也是对自己负责。

2025-12-18 14:09:56 826

原创 设计一个多租户 SaaS 系统,如何实现租户数据隔离与资源配额控制?

多租户(Multi-Tenant)是指一个软件系统同时服务多个客户(租户),每个租户拥有独立的业务空间,但共享相同的基础设施。SaaS 系统的多租户架构设计需要解决两个核心问题:•确保租户之间的数据互不干扰,满足安全和合规要求。•控制每个租户使用的系统资源(如存储、API 调用次数),避免资源滥用。

2025-12-18 14:09:01 737

原创 零停机更新代码:SpringBoot新技能,太6了~

在个人或者企业服务器上,总归有要更新代码的时候,普通的做法必须先终止原来进程,因为新进程和老进程端口是一个,新进程在启动时候,必定会出现端口占用的情况,但是,还有黑科技可以让两个SpringBoot进程真正的共用同一个端口,这是另一种解决办法,我们下回分解。那么就会出现一个问题,一种简单办法是,新代码先用其他端口启动,启动完毕后,更改nginx的转发地址,nginx重启非常快,这样就避免了大量的用户访问失败,最后终止老进程就可以。

2025-12-18 14:07:59 888

原创 Java内卷之下,程序员还有机会吗?

Java内卷之下,程序员还有机会吗?在Java领域竞争日益激烈的环境下,程序员的发展机会依然存在,但需要调整策略以适应变化。

2025-12-09 15:16:37 163

原创 Java程序员如何突击即将来临的春招?该做哪些技术储备?

Java程序员如何突击即将来临的春招?该做哪些技术储备?

2025-12-09 15:12:33 1624

原创 源码级详解Spring的三级缓存: 循环依赖的处理流程

我们回到⽂章开头的例⼦,创建 A 对象时,会把实例化的 A 对象存⼊“三级缓存”,这个 A 其实是个半成品,因为没 有完成依赖属性 B 的注⼊,所以后⾯当初始化 B 时,B ⼜要去找 A,这时就需要从“三级缓存”中拿到这个半成品的 A(这⾥描述,其实也不完全准确,因为不是直接拿,为了让⼤家好理解,我就先这样描述),打破循环。关于循环依赖的知识,其实还有,因为篇幅原因,就不再写了,这篇⽂章的重点,⼀⽅⾯是告诉⼤家循环依赖的 核⼼原理,另⼀⽅⾯是让⼤家⾃⼰去 debug 代码,跑跑流程,挺有意思的。

2025-12-09 15:08:39 684

原创 SpringBoot 在一次 http 请求中耗费了多少内存?

当知道 1 次 RPC 请求和 Http 请求需要的堆内存大小后,你可以精确地计算:指定的并发量之下,系统需申请多少堆内存。Jmeter 调用 20000 次 Http 接口以后,通过手动 GC 的方式触发 GC,通过 GC 详细日志计算压测期间新生代堆内存增长量。但随着日志大小的增加,内存占用显著上升,这可能触发更频繁地GC,最终导致系统性能明显下降。我们希望 1 次 Rpc、Http 请求申请堆内存足够少,这样可减少 GC 导致的系统停顿,提高系统性能,单机可以支撑更高的并发量。

2025-12-09 15:07:45 837

原创 优雅的处理 API 接口敏感数据加解密(方案详解)

HTTPS()是一种通过计算机网络进行安全通信的传输协议。它利用SSL/TLS协议在HTTP应用层进行通信加密,通过证书进行身份验证,从而确保数据传输的安全性和完整性。

2025-12-09 15:07:09 832

原创 弃用 Nginx后,Pingora成为Web服务器界的新王者!

今天,我们很高兴有机会在此介绍 Pingora,这是我们使用 Rust 在内部构建的新 HTTP 代理,它每天处理超过 1 万亿个请求,提高了我们的性能,并为 Cloudflare 客户带来了许多新功能,同时只需要我们以前代理基础架构的三分之一的 CPU 和内存资源。随着 Cloudflare 规模的扩大,我们已经超越了 NGINX 的处理能力。多年来它一直运作良好,但随着时间的推移,它在我们规模上的局限性意味着我们有必要构建一些新的东西。

2025-12-09 15:06:22 788

原创 我们放弃了Nacos作为配置中心,转而选择了这款神器~

创建完成后进入配置管理界面2.4、创建一个配置参数apollo.meta:Apollo 配置中心地址。apollo.cluster:指定使用某个集群下的配置。apollo.bootstrap.enabled:是否开启 Apollo。apollo.bootstrap.namespaces :指定使用哪个 Namespace 的配置,默认 application。

2025-12-09 15:05:35 725

原创 Spring 项目别再乱注入 Service 了!用 Lambda 封装个统一调用组件,爽到飞起

Controller 里干干净净,再也不用注入一堆 Service;想改日志格式、加权限校验,只需要改,不用改每个方法;解析过的 Service 信息会缓存,下次调用更快;写 Lambda 的时候,方法名错了编译就报错,不用等到运行才发现。

2025-12-09 15:04:25 392

原创 Controller层代码这么写,同事们都模仿起来了

有些时候JSR303标准中提供的校验规则不满足复杂的业务需求,也可以自定义校验规则自定义校验规则需要做两件事情自定义注解类,定义错误信息和一些其他需要的内容注解校验器,定义判定规则//自定义注解类/*** 是否允许为空*//*** 校验不通过返回的提示信息*/String message() default "不是一个手机号码格式";/*** Constraint要求的属性,用于分组校验和扩展,留空就好*/Class<?Class<?//注解校验器// 验证手机号。

2025-12-09 15:03:01 310

原创 SpringBoot + EasyExcel 导出文件,太香了!

比如金额需要显示成 "¥1,000.00",日期要显示成 "2025 年 5 月 29 日"。除了前面提到的,数值格式可以用@ExcelProperty("金额")看着导出的规范格式,突然想起当年因为金额格式不对被财务打回 13 次的惨案,现在终于能扬眉吐气了。

2025-12-09 14:59:24 900

原创 Java内卷严重!如何春招成功上岸?学习计划+面试如何储备?

Java内卷严重!如何春招成功上岸?学习计划+面试如何储备?

2025-12-04 14:05:20 1667

原创 优雅使用 Enum 提升 SpringBoot 配置管理效率

ADMIN("管理员"),USER("普通用户"),GUEST("游客"),VIP("VIP用户"),MODERATOR("版主");

2025-12-04 13:59:46 858

原创 一文读懂Redis

Redis 是C语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库、缓存、消息中间件等场景,是一种NoSQL(not-only sql,非关系型数据库)的数据库。

2025-12-04 13:58:50 995

原创 秒杀架构设计的 7 个思路技巧

答题的验证:除了验证答案的正确性意外,还要统计反应时间,例如12306的难题,正常人类的答题速度最快是1.5s,那么,小于1s的验证可以判定为机器验证。redis抢锁成功后,记录抢到锁的用户信息后,就可以直接释放锁,并反馈用户,通过异步的方式来处理订单,提升秒杀的效率,降低无意义的线程等待。异步操作有事务问题,本地事务和分布式事务,但是为了提升并发度,最好牺牲一致性。验证失败提示失败,但是不刷新答题的算法:要么答题成功,进入下单界面,要么提示打错,继续答题(不刷新答题,无须交互,用js验证结果)。

2025-12-04 13:56:56 601

原创 MySQL 8的老大难问题,从5.7延续至今,有这么难?

你的数据分布的不均匀,优化器在选择这个索引进行数据排序的时候,这个索引中包含,如性别,状态,等被包含在group by order by 中,而这些数据根本不具备索引扫描的优势,属于通篇都是女,然后就导致 index scan ,然后排序毫无用处,还需要回表。这个优化器的主要作用针对order by 和 group by中的搭配limit的查询,决定优化器是否优先选择已经建立排序规则的有序索引问题,来替代在查询中的 filesort等优化数据提取后,在排序的问题。那么问题来了,这不是一个好的功能吗?

2025-12-04 13:56:14 355

原创 年少不知自增好,错把UUID当个宝!!!

1.UUID 作为主键的问题2.修改数据导致索引刷新的原因3.字符主键导致效率降低的原因4.如何优化 UUID 主键的性能~Summary在 MySQL 中,使用在大表中可能会导致性能问题,尤其是在插入和修改数据时效率较低。以下是详细的原因分析,以及为什么修改数据会导致索引刷新,以及字符主键为什么效率较低。

2025-12-04 13:55:39 357

原创 Java利器:Pair和Triple无缝解决多值返回,编写高效代码!

Pair类是 Apache Commons Lang3 库提供的一个抽象类,用于表示简单的键值对。它实现了Map.Entry接口,这意味着它可以在各种集合中使用;同时,它还实现了Comparable接口,方便我们比较两个Pair对象的大小;并且支持对象的序列化和反序列化。下面是Pair/*** 抽象类,表示简单的键值对。* 实现了 Map.Entry 接口,支持在各种集合中使用。* 实现了 Comparable 接口,用于比较两个 Pair 对象的大小。* 可序列化,支持对象的序列化和反序列化。

2025-12-04 13:55:01 488

空空如也

空空如也

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

TA关注的人

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