自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-04-17 14:46:42 1643

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

原创 程序员2026年金三银四面试突击之Java权威指南-面试场景题!

多线程问题:如并发控制、死锁避免。集合框架问题:如HashMap的实现细节。JVM问题:如垃圾回收机制。设计模式问题:如单例模式的应用场景。算法问题:如排序或树操作。面试官常通过场景题测试你的逻辑思维、代码优化和问题解决能力。复习时,聚焦高频主题,并结合代码实践。准备策略复习核心Java概念:多线程、JVM、集合框架。练习LeetCode或HackerRank上的算法题。模拟面试场景:描述问题、写代码、优化方案。面试中先理解问题,再逐步解答。使用代码示例展示技能。

2026-01-07 17:00:22 722

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

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

2026-01-07 16:38:24 402

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

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

2026-01-07 16:37:42 653

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

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

2026-01-07 16:36:07 905

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

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

2026-01-07 16:35:13 509

原创 业务幂等性技术架构体系

幂等性介绍 现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题,服务端会进行重试等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成 幂等性不仅仅只是一次或多次操作对资源没有产生影响,还包括第一次操作产生影响后,以后多次操作不会再产生影响。并且

2026-01-07 16:34:19 844

原创 一张图搞懂微服务架构设计

随着业务量增长,单表的数据量达到性能瓶颈之后,我们就要采用分库分表来对数据库表进行水平拆分和垂直拆分了,具体如何进行合理的拆分,以及技术选型,这些和项目现有的表结构设计是息息相关的,要考虑后续的可拓展性,不能短期拆了一时爽,后续业务量增暴涨之后,服务器的性能不足以维持数据库的性能时,这时候要拆分服务器部署了。不管单体服务,还是微服务,数据持久层都是必须的,我们是选用互联网项目经常使用的mysql作为DB,为了保证服务读写效率以及高可用性,我们主从分离模式,同时实现读写分离,来保障mysql的读写性能。

2026-01-07 16:33:40 758

原创 13 秒插入 30 万条数据,这才是批量插入的正确姿势!

使用了 MyBatis 的批处理操作,将每 1000 条数据放在一个批次中插入,能够较为有效地提高插入速度。此外,还需要在配置文件中设置合理的连接池和数据库的参数,以获得更好的性能。如果批处理大小太小,插入操作的频率将很高,而如果批处理大小太大,可能会导致内存占用过高。这有助于控制内存占用,并确保插入操作平稳进行。总的来说,选择适当的批处理大小和等待时间可以帮助您平稳地进行插入操作,避免出现内存占用过高等问题。可以考虑使用一些内存优化的技巧,例如使用内存数据库或使用游标方式插入数据,以减少内存占用。

2026-01-07 16:33:02 695

原创 换掉SpringBoot?0.0015 秒内启动一个应用,这个框架可以封神了!

SpringBoot框架不用多介绍,Java程序员想必都知道。相对来说熟悉Quarkus的人可能会少一些。Quarkus首页放出的标语:超音速亚原子的Java(Supersonic Subatomic Java)。它是为 OpenJDK HotSpot 和 GraalVM 量身定制的 Kubernetes Native Java 框架,基于同类最佳的 Java 库和标准制作而成。Quarkus 的到来为开发 Linux 容器和 kubernetes 原生 Java 微服务带来了一个创新平台。

2026-01-07 16:32:12 995

原创 Spring 6.0+Boot 3.0:秒级启动、万级并发的开发新姿势

虚拟线程的资源管理策略、GraalVM的反射配置优化、OAuth2授权服务器的定制扩展等深度实践方向。对比GraalVM原生镜像与传统JAR包运行指标。本次升级标志着Spring生态正式进入云原生时代。轻量级线程支持高并发场景(需JDK 19+)启动时间缩短至毫秒级,内存占用降低50%+启动时间2.3s | 内存占用480MB。启动时间0.05s | 内存占用85MB。电商秒杀系统、实时聊天服务等高并发场景。类似Feign的声明式REST调用。声明式客户端简化服务间调用。统一API错误响应格式。

2026-01-07 16:27:19 234

原创 220W字详细介绍高级架构师精选面试题库-百万八股面试宝典!

包含的内容比较多,这里只做了简单的截图介绍,全文共220万字,59个大专题,需要完整版的同学,

2026-01-06 14:18:57 1029

原创 抖音服务器带宽有多大,才能供上亿人同时刷?

字节跳动有多少台服务器?字节跳动大型的数据中心出口带宽是多少?最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。抖音,百度,阿里云,腾讯都是自建的数据中心,都是 T 级别出口带宽(总出口带宽),也就是达到 1T=1024G/s 的出口带宽,服务器总署基本都在 20 万台以上,甚至阿里云都超过了 100 万台。字节跳动的数据中心总带宽,可能在 10TB 级别左右,预期突破 15TB 级别不远了。

2026-01-06 14:10:29 450

原创 MyBatisPlus解决大数据量查询慢问题

常规查询流式查询游标查询大数据量操作的场景大致如下:数据迁移数据导出批量处理数据在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生OOM(内存溢出);而且查询会很慢,因为框架耗费大量的时间和内存去把数据库查询的结果封装成我们想要的对象(实体类)。一次性读取 100w 数据到 JVM 内存中,或者分页读取。

2026-01-06 14:08:37 756

原创 PostgreSQL有这么多优势,为什么还要使用MySQL?

PostgreSQL 与 MySQL 并非简单的谁更好,而是谁更适合。对于追求长期演进、复杂数据模型和强一致性的系统,PostgreSQL 是更坚实的基础;而对于快速上线、读多写少的 Web 应用,MySQL 依然是高效之选。而国产数据库的崛起,正是站在 PostgreSQL 的肩膀上,走出了一条自主创新之路。

2026-01-06 14:08:02 455

原创 SpringBoot 数据权限新姿势,注解+动态SQL真香!

会根据find()方法返回的列表来构建SQL图片可以编写在对应需要数据权限拦截的方法上/*** 通过传递给DataScopeFindRule.find方法来获取指定的数据权限实体* @return*//*** 构建模板* TODO 注意:当key为多个时此值生效* 示例:template = "{key1} OR {key2}"* 通过template生成后的SQL:table1.column1 = 1 OR table2.column2 = 2* @return*//**

2026-01-06 14:07:25 384

原创 雪花算法ID重复了?惨痛教训:请勿轻易造轮子!

使用的IPy用点分隔的最后一位,即192.168.0.1的1,极容易重复。雪花算法涉及时钟回拨、位运算、分布式协调等关键细节,成熟组件更稳妥。别为造轮子而造轮子,尤其在通用组件上,不可抱侥幸心理。

2026-01-06 14:06:37 363

原创 变天了,Spring Boot 4 震撼发布!

如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。这一变化不仅提升了 Kotlin 与 Java 的互操作一致性,还首次支持对泛型、数组和可变参数的空值语义精确描述。•Kotlin 项目可能因 API 空安全语义变化而需要调整•推荐在自己的应用中也采用 JSpecify,以构建真正 null-safe 的系统。•classpath 扫描•各种动态代理•反射•自动配置的条件判断。

2026-01-06 14:06:03 591

原创 告别if-else噩梦:流程编排技术真的太香了!

流程节点中的方法包括processsuccessrollback和callback方法。

2026-01-06 14:05:30 573

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

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

2026-01-06 14:04:33 827

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

Java SPI机制的核心在于它提供了一种方式,‌使得服务提供者可以根据SPI的约定,‌为某个接口提供具体的实现类。‌这些实现类被放置在特定的位置,‌如目录下,‌并通过配置文件指定。‌当需要使用这些服务时,‌Java运行时环境能够自动扫描这些目录,‌找到并加载相应的实现类,‌从而实现服务的动态发现和加载。‌Java SPI的主要用途包括:‌服务提供者可以在不修改业务代码的情况下,‌为框架或库提供扩展点。‌允许在运行时动态地插入或更换组件实现,‌鼓励松耦合的设计原则。‌。

2026-01-06 14:03:50 756

原创 苦熬三个月没能秋招上岸!只怪我技术太菜!春招必靠它成功上岸!阿里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 1383

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

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

2025-12-22 20:26:33 834

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

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

2025-12-22 20:26:00 616

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

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

2025-12-22 20:25:18 658

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

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

2025-12-22 20:24:40 932

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

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

2025-12-22 20:23:11 901

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

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

2025-12-22 20:22:20 287

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

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

2025-12-22 20:21:50 828

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

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

2025-12-22 20:20:48 912

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

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

2025-12-22 20:20:02 96

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

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

2025-12-18 15:06:32 959

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

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

2025-12-18 14:33:02 1448

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

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

2025-12-18 14:13:15 1067

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

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

2025-12-18 14:12:35 783

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

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

2025-12-18 14:11:49 970

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

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

2025-12-18 14:11:07 247

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

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

2025-12-18 14:10:31 796

空空如也

空空如也

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

TA关注的人

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