- 博客(1463)
- 收藏
- 关注
原创 阿里架构师:天天高并发,这个时代达不到百万以上的并发量都不叫高并发!!!
对象的共享对象的组合基础构建模块第二部分介绍了并发应用程序的构造理论,包括应用程序中并行语义的分解及其与逻辑任务的映射,任务的取消与关闭等行为的实现,以及Java线程池中的一些高级功能,此外还介绍了如何提高GUI应用程序的响应性。任务执行取消与关闭线程池的使用图形用户界面应用程序第三部分介绍了并发编程的性能调优,包括如何避免活跃性问题,如何提高高并发代码的性能和可伸缩性以获得理想的性能,以及在测试并发代码正确性和性能时的一些实用技术。避免活跃性危险性能与可伸缩性并发程序员的测试。
2024-04-17 14:46:42
1644
原创 阿里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
1000
原创 Java程序员真的还有未来吗?如何备战2024春招Java面试?并狂拿大厂offer?(java高级岗)
嘿,小伙伴们,你们有没有想过Java程序员还有没有未来?哈哈,别担心,我这就来给你们答疑解惑!首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们。
2024-04-11 19:32:01
1849
原创 那些年入百万的阿里P8大佬是如何精通微服务架构原理的?
阿里P8的成长路径证明:微服务的精通不仅是技术组件的堆砌,更是对分布式复杂性的掌控力与业务架构的抽象能力——这是百万年薪背后的核心壁垒。但是,有的程序员会说,看你小编长篇大论的,看是看完了,但是看不懂,级别不够,这些知识,不知道该如何去掌握。别慌,小编这就给您分享一份微服务架构原理与开发实战的秘籍,包你一学就会,一看就懂;都是前人的智慧总结,一步步沉淀下来的,绝对是最符合你的胃口的;
2026-01-13 21:50:37
819
原创 为什么 MyBatis 源码中,没有我那种 if···else
通过梳理,MyBatis大约运用了10种左右设计模式。可以说,复杂且优秀的ORM 框架源码在设计和实现的过程中都会使用大量的设计模式。在解决复杂场景的问题时,需要采用分治、抽象的方法,运用设计模式和设计原则等相关知识,把问题合理切割为若干子问题,以便加以理解和解决。学习源码远不是只是为了应付面试,更重要的是学习优秀框架在复杂场景下的解决方案。通过学习这些优秀的方案技术,可以提高对技术设计和实现的理解,扩展编码思维,积累落地经验。只有经过这样长期的积累,我们才更有可能成为优秀的高级工程师和架构师。
2026-01-13 21:45:24
306
原创 实现异步编程的8种方式
首先我们先看一个常见的用户下单的场景:在同步操作中,我们执行到 发送短信 的时候,我们必须等待这个方法彻底执行完才能执行 赠送积分 这个操作,如果 赠送积分 这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景。实际上,发送短信和赠送积分没有任何的依赖关系,通过异步,我们可以实现赠送积分和发送短信这两个操作能够同时进行,比如:异步这就是所谓的异步,是不是非常简单,下面就说说异步的几种实现方式吧。
2026-01-13 21:44:52
326
原创 如何优雅的实现在线人数统计功能?
zadd命令有三个参数key:有序集合的名称。score1、score2 等:分数值,可以是整数值或双精度浮点数。member1、member2 等:要添加到有序集合的成员。
2026-01-13 21:44:06
295
原创 面试官:千万级订单表新增字段怎么弄?
加个字段,真没你想得那么简单,尤其在核心大表上。整件事从头到尾,我学到了很多:技术方案不是唯一解,需求变更有时比技术更省事;尽量避免改动核心表结构,可以用扩展表、JSON字段或冗余字段;别小看线上DDL的风险,谨慎评估业务影响;测试环境永远是你最好的朋友,大胆模拟1E数据才能安心上线。面试官:你怎么在千万级订单表加字段?我先不加,看还能不能不加。
2026-01-13 21:40:17
438
原创 SpringBoot+SPI机制,轻松实现可插拔组件!
Java SPI机制的核心在于它提供了一种方式,使得服务提供者可以根据SPI的约定,为某个接口提供具体的实现类。这些实现类被放置在特定的位置,如目录下,并通过配置文件指定。当需要使用这些服务时,Java运行时环境能够自动扫描这些目录,找到并加载相应的实现类,从而实现服务的动态发现和加载。Java SPI的主要用途包括:服务提供者可以在不修改业务代码的情况下,为框架或库提供扩展点。允许在运行时动态地插入或更换组件实现,鼓励松耦合的设计原则。。
2026-01-13 21:39:46
383
原创 雪花算法ID重复了?惨痛教训:请勿轻易造轮子!
大家好,我是顶级架构师。最近我们线上系统发生了一起严重事故:订单号/流水号出现了重复,影响了核心业务流程。最终定位到根源:一个自研的二方包雪花算法ID生成器出现了问题。下面我们来回顾一下雪花算法的标准结构,分析问题出在哪,并总结一些通用的设计建议。标准的Snowflake ID由一个64位long型整数构成: 1位符号位: 始终为0,确保生成正数。41位时间戳: 记录与固定起始时间的毫秒差,可支持约69年。10位机器ID: 用于标识不同节点。12位序列号: 在同一毫秒内生成多个ID时使用,最多支
2026-01-13 21:39:08
345
原创 一套万能的异步处理方案!(珍藏版)
良好的系统设计必须要做到开闭原则,随着业务的不断迭代更新,核心代码也会被不断改动,出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能,既要保证性能又要保证质量,我们往往都会使用异步线程池来处理,然而却增加了很多不确定性因素。就算事务提交了,异步策略解析失败了,我们还有兜底方案执行(除非数据库有问题,消息队列有问题,方法有bug)无侵入设计,独立数据库,独立定时任务,独立消息队列,独立人工执行界面(统一登录认证)如果你的方法正在运行事务,会等事务提交后或回滚后再处理事件。kafka 消息队列。
2026-01-13 21:38:28
376
原创 满屏Service注入混乱?用Lambda封装个统一调用组件,直接起飞!
Controller 里干干净净,再也不用注入一堆 Service;想改日志格式、加权限校验,只需要改,不用改每个方法;解析过的 Service 信息会缓存,下次调用更快;写 Lambda 的时候,方法名错了编译就报错,不用等到运行才发现。
2026-01-13 21:36:10
260
原创 程序员2026年金三银四面试突击之Java权威指南-面试场景题!
多线程问题:如并发控制、死锁避免。集合框架问题:如HashMap的实现细节。JVM问题:如垃圾回收机制。设计模式问题:如单例模式的应用场景。算法问题:如排序或树操作。面试官常通过场景题测试你的逻辑思维、代码优化和问题解决能力。复习时,聚焦高频主题,并结合代码实践。准备策略复习核心Java概念:多线程、JVM、集合框架。练习LeetCode或HackerRank上的算法题。模拟面试场景:描述问题、写代码、优化方案。面试中先理解问题,再逐步解答。使用代码示例展示技能。
2026-01-07 17:00:22
737
原创 改变习惯性 !=null 判空,只需一秒!
判断一个数据是否为null,可以经过三步,第一步思考属于什么数据类型,第二步根据数据类型选择正确的工具类,第三步,使用正确的工具类进行判断。ObjectUtils 中的isEmpty()这一个方法,分别可以对字符串、数组、Map集合、List集合进行是否等于null的判断。也就是说它只判断了集合的长度,集合的长度为0,就认为集合是空的。=null 的判断,这个bug就解决了。在这个方法中,既有为null的判断,也有isEmpty的判断,聚合了两个判断,我们直接调用它也可以减少我们的工作量。
2026-01-07 16:38:24
413
原创 优雅的处理 API 接口敏感数据加解密(方案详解)
HTTPS()是一种通过计算机网络进行安全通信的传输协议。它利用SSL/TLS协议在HTTP应用层进行通信加密,通过证书进行身份验证,从而确保数据传输的安全性和完整性。
2026-01-07 16:37:42
689
原创 复杂业务系统的通用架构设计
结合着业务系统的复杂性,如果想要系统未来具有长期价值,不得不把大的系统进行拆分,用统一的业务语言进行描述,把不可识别的问题,拆分成可识别的问题域进行解决,这也就是现在又逐渐盛行起来的领域驱动设计的方法。应用如何进行设计,包括模块如何划分,功能如何实现,技术如何支撑,数据如何展示,流程如何定义,逻辑如何实现,数据如何存储等等,都是应用架构的范畴。架构的本质依然没有改变,只是由于社会的发展,我们的需求,需要处理的问题、依赖愈来愈复杂,我们需要用发展的眼光,时刻追随技术前沿,进而推进、优化、迭代系统的架构设计。
2026-01-07 16:36:07
910
原创 这些 SpringBoot 默认配置不改,迟早踩坑!
Spring Boot 的“约定优于配置”确实省心,但省的是开发者的心,不是系统的责任。每一项默认配置背后,其实都藏着设计者的假设和权衡,而这些假设,在我们的业务场景中也许未必成立。这些坑我几乎都踩过,有些甚至反复踩了好几次。愿你读到这里,能少走几步弯路,可不能拿生产事故去交学费。提前优化配置,是对系统负责,也是对自己负责。
2026-01-07 16:35:13
535
原创 业务幂等性技术架构体系
幂等性介绍 现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题,服务端会进行重试等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成 幂等性不仅仅只是一次或多次操作对资源没有产生影响,还包括第一次操作产生影响后,以后多次操作不会再产生影响。并且
2026-01-07 16:34:19
847
原创 一张图搞懂微服务架构设计
随着业务量增长,单表的数据量达到性能瓶颈之后,我们就要采用分库分表来对数据库表进行水平拆分和垂直拆分了,具体如何进行合理的拆分,以及技术选型,这些和项目现有的表结构设计是息息相关的,要考虑后续的可拓展性,不能短期拆了一时爽,后续业务量增暴涨之后,服务器的性能不足以维持数据库的性能时,这时候要拆分服务器部署了。不管单体服务,还是微服务,数据持久层都是必须的,我们是选用互联网项目经常使用的mysql作为DB,为了保证服务读写效率以及高可用性,我们主从分离模式,同时实现读写分离,来保障mysql的读写性能。
2026-01-07 16:33:40
777
原创 13 秒插入 30 万条数据,这才是批量插入的正确姿势!
使用了 MyBatis 的批处理操作,将每 1000 条数据放在一个批次中插入,能够较为有效地提高插入速度。此外,还需要在配置文件中设置合理的连接池和数据库的参数,以获得更好的性能。如果批处理大小太小,插入操作的频率将很高,而如果批处理大小太大,可能会导致内存占用过高。这有助于控制内存占用,并确保插入操作平稳进行。总的来说,选择适当的批处理大小和等待时间可以帮助您平稳地进行插入操作,避免出现内存占用过高等问题。可以考虑使用一些内存优化的技巧,例如使用内存数据库或使用游标方式插入数据,以减少内存占用。
2026-01-07 16:33:02
786
原创 换掉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
1014
原创 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
239
原创 220W字详细介绍高级架构师精选面试题库-百万八股面试宝典!
包含的内容比较多,这里只做了简单的截图介绍,全文共220万字,59个大专题,需要完整版的同学,
2026-01-06 14:18:57
1045
原创 抖音服务器带宽有多大,才能供上亿人同时刷?
字节跳动有多少台服务器?字节跳动大型的数据中心出口带宽是多少?最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。抖音,百度,阿里云,腾讯都是自建的数据中心,都是 T 级别出口带宽(总出口带宽),也就是达到 1T=1024G/s 的出口带宽,服务器总署基本都在 20 万台以上,甚至阿里云都超过了 100 万台。字节跳动的数据中心总带宽,可能在 10TB 级别左右,预期突破 15TB 级别不远了。
2026-01-06 14:10:29
455
原创 MyBatisPlus解决大数据量查询慢问题
常规查询流式查询游标查询大数据量操作的场景大致如下:数据迁移数据导出批量处理数据在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生OOM(内存溢出);而且查询会很慢,因为框架耗费大量的时间和内存去把数据库查询的结果封装成我们想要的对象(实体类)。一次性读取 100w 数据到 JVM 内存中,或者分页读取。
2026-01-06 14:08:37
759
原创 PostgreSQL有这么多优势,为什么还要使用MySQL?
PostgreSQL 与 MySQL 并非简单的谁更好,而是谁更适合。对于追求长期演进、复杂数据模型和强一致性的系统,PostgreSQL 是更坚实的基础;而对于快速上线、读多写少的 Web 应用,MySQL 依然是高效之选。而国产数据库的崛起,正是站在 PostgreSQL 的肩膀上,走出了一条自主创新之路。
2026-01-06 14:08:02
471
原创 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
389
原创 雪花算法ID重复了?惨痛教训:请勿轻易造轮子!
使用的IPy用点分隔的最后一位,即192.168.0.1的1,极容易重复。雪花算法涉及时钟回拨、位运算、分布式协调等关键细节,成熟组件更稳妥。别为造轮子而造轮子,尤其在通用组件上,不可抱侥幸心理。
2026-01-06 14:06:37
371
原创 变天了,Spring Boot 4 震撼发布!
如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。这一变化不仅提升了 Kotlin 与 Java 的互操作一致性,还首次支持对泛型、数组和可变参数的空值语义精确描述。•Kotlin 项目可能因 API 空安全语义变化而需要调整•推荐在自己的应用中也采用 JSpecify,以构建真正 null-safe 的系统。•classpath 扫描•各种动态代理•反射•自动配置的条件判断。
2026-01-06 14:06:03
599
原创 面试官:千万级订单表新增字段怎么弄?
加个字段,真没你想得那么简单,尤其在核心大表上。整件事从头到尾,我学到了很多:技术方案不是唯一解,需求变更有时比技术更省事;尽量避免改动核心表结构,可以用扩展表、JSON字段或冗余字段;别小看线上DDL的风险,谨慎评估业务影响;测试环境永远是你最好的朋友,大胆模拟1E数据才能安心上线。面试官:你怎么在千万级订单表加字段?我先不加,看还能不能不加。
2026-01-06 14:04:33
833
原创 SpringBoot+SPI机制,轻松实现可插拔组件!
Java SPI机制的核心在于它提供了一种方式,使得服务提供者可以根据SPI的约定,为某个接口提供具体的实现类。这些实现类被放置在特定的位置,如目录下,并通过配置文件指定。当需要使用这些服务时,Java运行时环境能够自动扫描这些目录,找到并加载相应的实现类,从而实现服务的动态发现和加载。Java SPI的主要用途包括:服务提供者可以在不修改业务代码的情况下,为框架或库提供扩展点。允许在运行时动态地插入或更换组件实现,鼓励松耦合的设计原则。。
2026-01-06 14:03:50
765
原创 苦熬三个月没能秋招上岸!只怪我技术太菜!春招必靠它成功上岸!阿里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
1385
原创 这些 SpringBoot 默认配置不改,迟早踩坑!
Spring Boot 的“约定优于配置”确实省心,但省的是开发者的心,不是系统的责任。每一项默认配置背后,其实都藏着设计者的假设和权衡,而这些假设,在我们的业务场景中也许未必成立。这些坑我几乎都踩过,有些甚至反复踩了好几次。愿你读到这里,能少走几步弯路,可不能拿生产事故去交学费。提前优化配置,是对系统负责,也是对自己负责。
2025-12-22 20:26:33
837
原创 零停机更新代码: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
659
原创 MySQL模糊查询再也用不着like+%了!
我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。AGAINST()接收一个要搜索的字符串,以及一个要执行的搜索类型的可选修饰符。上述语句,查询同时包含 'MySQL','database','DBMS' 的行信息,但不包含'DBMS'的行的相关性高于包含'DBMS'的行。
2025-12-22 20:24:40
934
原创 公司新来了一个同事,把权限系统设计的炉火纯青!
举个栗子,对于部门来说,一个部门拥有一万多个员工,这些员工都拥有相同的角色,如果没有用户组,可能需要一个个的授予相关的角色,在拥有了用户组以后,只需要,把这些用户全部划分为一组,然后对该组设置授予角色,就等同于对这些用户授予角色。对于通常的系统而言,存在多个用户具有相同的权限,在分配的时候,要为指定的用户分配相关的权限,修改的时候也要依次的对这几个用户的权限进行修改,有了角色这个权限,在修改权限的时候,只需要对角色进行修改,就可以实现相关的权限的修改。优点:减少工作量,便于理解,增加多级管理,等。
2025-12-22 20:23:11
902
原创 改变习惯性 !=null 判空,只需一秒!
判断一个数据是否为null,可以经过三步,第一步思考属于什么数据类型,第二步根据数据类型选择正确的工具类,第三步,使用正确的工具类进行判断。ObjectUtils 中的isEmpty()这一个方法,分别可以对字符串、数组、Map集合、List集合进行是否等于null的判断。也就是说它只判断了集合的长度,集合的长度为0,就认为集合是空的。=null 的判断,这个bug就解决了。在这个方法中,既有为null的判断,也有isEmpty的判断,聚合了两个判断,我们直接调用它也可以减少我们的工作量。
2025-12-22 20:22:20
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅