自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 得物Java面试被问:反射机制的原理和应用场景

Java反射机制原理及应用摘要 Java反射机制允许程序在运行时动态获取类的完整信息并操作对象,包括获取类元数据、创建实例、调用方法和访问字段等。其核心实现基于Class对象,可通过类名.class、对象.getClass()或Class.forName()等方式获取。反射API提供了操作字段(Field)、方法(Method)和构造器(Constructor)的能力,支持突破访问限制。 主要应用场景包括框架开发(如Spring IOC)、动态代理、注解处理、ORM映射和插件系统等。性能方面,反射调用比直接

2025-12-31 13:48:02 1262

原创 Jackson视图神技:一个DTO干掉N个DTO,告别DTO爆炸问题

本文介绍了JacksonViews技术如何优雅解决API开发中DTO类爆炸的问题。通过定义视图接口和@JsonView注解,可以在单个DTO中实现不同场景下的字段控制:列表页只返回基础字段,详情页展示完整信息,管理员接口包含敏感数据。相比传统多DTO方案,这种方法减少了代码重复,提高了可维护性。文章还分享了视图继承、组合视图、动态视图选择等高级用法,并提出了视图设计的最佳实践,帮助开发者构建更简洁高效的API接口。

2025-12-31 13:24:57 505

原创 汇丰银行Java面试被问:实现一个LRU缓存

本文详细介绍了LRU缓存算法的实现方案,包括:1. 核心原理:基于最近最少使用策略,通过HashMap+双向链表实现O(1)时间复杂度的get/put操作;2. 多种实现方案对比:从最简单的LinkedHashMap到线程安全版本,再到支持TTL的生产级实现;3. 完整生产级实现:包含过期清理、监控统计、线程安全等特性;4. 性能优化建议:如批量操作、读写锁分离等;5. 典型应用场景:数据库查询缓存、会话管理等;6. 与主流缓存库的对比分析。文章通过代码示例展示了不同场景下的最优实践,为开发高性能缓存系统提

2025-12-30 13:43:35 908

原创 Java 字符串三巨头:String、StringBuilder、StringJoiner —— 初学者避坑指南 [特殊字符]

Java字符串操作三巨头:String、StringBuilder和StringJoiner各有特点。String不可变,适合常量使用;StringBuilder可变,适合频繁拼接;StringJoiner专为格式化拼接设计。文章详解了三者的内存机制、性能差异和使用场景,特别指出"+拼接"的性能陷阱,建议根据实际需求选择合适的工具类,避免内存浪费和性能问题。初学者应掌握equals()比较内容、预估StringBuilder容量等技巧,以编写高效优雅的字符串处理代码。

2025-12-30 13:09:17 776

原创 字节跳动Java面试被问:Fork/Join框架的使用场景

Fork/Join框架是Java中处理可分解并行任务的利器,特别适用于递归可分治问题。其主要应用场景包括:大规模数据处理(排序/搜索)、数值计算(矩阵运算/蒙特卡洛模拟)和树形结构遍历。该框架通过工作窃取算法实现高效负载均衡,但需要注意任务粒度设置(避免过小或过大)和适用场景(适合CPU密集型而非I/O密集型任务)。最佳实践包括合理设置阈值、避免阻塞操作、控制递归深度等。相比其他并发工具,Fork/Join在可递归分解的计算密集型任务中表现最优,但对简单并行或I/O密集型任务,建议使用ParallelStr

2025-12-29 14:05:44 974

原创 我带的外包兄弟放弃大厂转正,薪资翻倍入职字节

他说的这些,我何尝不知呢?别说他只来了一年多,我在公司6年了,也没见到一个外包转正的。外包转正,这本身就是一个悖论,可能性十不足一。所以我直接告诉他了外包转正的。

2025-12-29 13:25:49 685

原创 蚂蚁Java面试被问:分布式Session的实现方案

本文系统探讨了分布式Session管理的解决方案。主要内容包括:1)传统单机Session的扩展性问题;2)主流实现方案对比(Redis集中存储、JWT Token、数据库共享、粘性会话);3)Redis方案的优化策略(Pipeline批量操作、增量更新、多级缓存);4)JWT方案的安全实现(双Token机制、滑动过期、黑名单);5)生产环境选型指南,建议根据业务场景选择,高并发推荐Redis方案,无状态架构适用JWT。最佳实践强调控制Session大小、安全防护和监控告警,并展望了Serverless和A

2025-12-28 17:22:30 1209

原创 apache POI 万字总结:满足你对报表一切幻想

本文分享了使用Apache POI处理Excel报表的技术实践。通过对比POI与其他工具(如FastExcel、Python库等)的功能特性,作者选择POI作为解决方案,因其全面支持xls/xlsx格式、样式设置、公式计算、数据验证等功能。文章详细介绍了POI的基础操作、样式设置、多级表头、公式处理、数据验证、图表生成等核心功能,并针对安全防护和大文件处理提供了优化方案。最后强调技术选型需结合实际需求,POI的强大功能使其成为处理复杂Excel任务的理想选择。

2025-12-28 14:46:04 919

原创 贝壳一面:年轻代回收频率太高,如何定位?

JVM年轻代GC频繁的优化指南:通过GC日志、jstat等工具监控GC频率,分析对象分配情况。常见优化方案包括调整Eden区大小(-XX:NewRatio)、减少短命对象创建、使用对象池、优化Survivor区比例(-XX:SurvivorRatio)以及避免过多软引用。这些措施可有效降低GC频率,提升系统性能。

2025-12-26 15:12:39 563

原创 得物Java面试被问:Fork/Join框架的使用场景

Fork/Join框架适用于可递归分解、计算密集型的任务,包括大规模数值计算(如排序、矩阵运算)、科学仿真、数据处理(日志分析、图像处理)、递归问题(组合优化、分治算法)等场景。其核心特点是任务可拆分、子任务独立、结果可合并,但不适合IO密集型或强依赖任务。使用需注意任务粒度控制、负载均衡和性能调优,避免过度拆分和资源竞争。该框架相比传统线程池更适合处理递归任务,但需根据具体场景选择合适的并发方案。

2025-12-26 14:59:00 1226

原创 蚂蚁Java面试被问:注解的工作原理及如何自定义注解

本文系统介绍了Java注解的核心概念与应用。主要内容包括:1)注解本质是继承Annotation的接口,分为标记、单值和完整三类;2)元注解详解(@Target、@Retention、@Documented等);3)注解处理机制(编译时、运行时和字节码操作);4)四大实战场景(验证、AOP、ORM和配置);5)高级特性与最佳实践(性能优化、安全考虑和新特性结合)。文章强调应根据需求选择合适保留策略,避免过度设计,并提供了缓存反射、APT处理等优化建议,指导开发者合理运用注解提升代码质量。

2025-12-25 14:16:25 962

原创 接口开发,咱得整得“优雅”点

本文介绍了一套优雅的Java接口开发方案,包含签名认证、数据加密、IP白名单、限流保护、参数校验等13项核心功能。通过SpringBoot3.x项目骨架,提供可直接使用的代码模板,涵盖接口安全(防篡改、防泄露)、稳定性(幂等设计、异步处理)、可维护性(统一日志、异常处理)等生产级需求。方案强调"优雅开发"理念,旨在减少重复工作、降低系统风险,同时给出JMeter压测建议和Knife4j文档工具,帮助开发者构建高可靠、易维护的API服务。

2025-12-25 13:12:22 683

原创 阿里Java面试被问:.Java 8中Stream API的常用操作和性能考量

本文系统介绍了Java Stream API的核心概念与实用技巧。主要内容包括:1) Stream的创建方式(集合、数组、无限流等);2) 中间操作(过滤、映射、排序)和终端操作(匹配、归约、收集);3) 高级特性如并行流处理和无限流;4) 性能优化策略(操作顺序、避免装箱、并行调优);5) 常见陷阱与解决方案。文章通过大量代码示例展示了Stream在数据处理中的优势,并提供了性能测试数据和使用建议,强调Stream在提升代码可读性和维护性方面的价值,同时指出其适用场景与限制。

2025-12-24 15:56:43 1167

原创 你见过最菜的 Java 后端应届生是什么样的?八年老鸟盘点那些 “基础不牢,地动山摇” 的操作

本文总结了一位8年经验的Java开发者带应届生时遇到的典型问题:1. 基础API盲区:如String空值处理不当、循环查数据库导致性能问题;2. SQL编写缺陷:无分页查询、SELECT*滥用、索引缺失;3. 代码规范缺失:命名混乱、硬编码、无注释;4. 并发意识薄弱:使用线程不安全集合;5. 调试能力不足:仅依赖打印日志。文章指出应届生常见问题是"踩坑不反思",建议重点补足Java集合、SQL优化等基础,培养规范编码习惯,掌握调试技巧。通过真实案例解析,旨在帮助新人避免成为"

2025-12-24 14:00:19 893

原创 饿了吗Java面试被问:Redis的持久化策略对比(RDBVS AOF)

Redis持久化策略深度对比:RDB与AOF的核心差异在于RDB通过定时快照实现二进制全量备份,文件小恢复快但可能丢失数据;AOF则记录所有写操作命令,数据更安全但恢复较慢。生产环境推荐Redis 4.0+的混合持久化模式,结合两者优势。配置需根据业务需求权衡数据安全性与性能,关键指标需持续监控,并定期测试恢复流程。最终选型应基于业务容忍度,通常混合模式是最佳平衡方案。

2025-12-23 13:30:01 755

原创 项目终于用上了 Spring 状态机,太优雅了!

摘要:本文详细介绍了状态模式的设计原理及应用场景。状态模式通过将不同状态抽象为独立类,避免了复杂的条件判断,提升了代码可维护性和扩展性。文章以用户登录状态和订单状态流转为例,展示了状态模式的具体实现,包括Spring状态机的应用。同时分析了状态模式与责任链模式、策略模式的异同,并总结了其优缺点:结构清晰但可能导致类膨胀,对开闭原则支持不足。通过源码分析展示了JSF框架中状态模式的应用实例,为处理复杂状态转换提供了有效解决方案。

2025-12-23 13:14:05 1017

原创 虾皮Java面试被问:Spring MVC的工作流程

SpringMVC核心架构及工作流程解析 SpringMVC采用前端控制器模式,以DispatcherServlet为核心组件,协调七大核心组件完成请求处理。工作流程分为四个阶段: 请求接收与分发:DispatcherServlet接收请求后,通过HandlerMapping找到处理器,并由HandlerAdapter适配执行。 请求处理与执行:执行拦截器预处理后,通过参数解析器处理请求参数,执行控制器方法,再经返回值处理器处理结果。 视图渲染与响应:ViewResolver解析视图名称,View完成最终渲

2025-12-22 14:12:44 776

原创 SpringBoot + MQTT 如何实现取货就走的智能售货柜系统

1.异步处理:结算流程异步化,用户无需等待2.三重校验:视觉+重量+事件记录,确保准确率3.实时通信:MQTT保证设备与后台实时通信4.缓存优化:Redis提升系统响应速度5.异常容错:完善的异常处理机制这种系统完美融合了物联网、云计算、移动支付等前沿技术,为用户提供了拿了就走的无感购物体验,代表了零售行业数字化转型的最新成果。作者:刘大华链接:https://juejin.cn/post/7579093412332109834来源:稀土掘金著作权归作者所有。

2025-12-22 13:34:44 926

原创 京东Java面试被问:垃圾收集算法(标记-清除、复制、标记-整理)的比较

本文深度对比了三种主流垃圾收集算法:标记-清除、复制和标记-整理。标记-清除算法实现简单但会产生内存碎片;复制算法高效无碎片但空间利用率低;标记-整理算法空间利用率高但暂停时间长。文章详细分析了各算法的原理、内存布局变化、优缺点及典型应用场景(如CMS使用标记-清除,新生代使用复制算法)。现代GC算法趋向融合与演进,如G1采用分区域策略,ZGC实现并发整理。选择算法需综合考虑对象生命周期、硬件资源和SLA要求,不同场景下应选用适合的组合方案(如低延迟场景推荐G1/ZGC)。理解这些基础算法是进行JVM调优的

2025-12-21 14:17:42 936

原创 用 Go 写个“端口扫描器”,100 行代码扫描你家路由器?(别慌,只是看看谁在开门!)

本文介绍了一个用Go语言实现的高并发TCP端口扫描器。作者从对路由器端口的好奇出发,采用生产者-消费者模型,通过goroutine和channel实现高效并发扫描。核心代码仅100行左右,包含端口任务分发、超时连接检测、结果记录等功能。文章详细解析了goroutine、channel、WaitGroup等Go并发特性,并强调扫描工具应合法使用。该工具可扩展支持端口范围、服务识别等功能,展现了Go在网络编程中的优势。

2025-12-21 13:44:43 531

原创 京东Java面试被问:Fork/Join框架的使用场景

Fork/Join框架是Java中用于并行处理递归可分治任务的高效工具。其核心思想是"分而治之",通过Fork拆分任务、并行执行、Join合并结果,配合工作窃取算法实现负载均衡。主要适用于六大场景:大数据集计算(如数组求和)、复杂递归算法(如并行快排)、大规模数据处理(如文件统计)、图像处理、机器学习及Web请求聚合。最佳实践包括合理设置任务阈值、避免共享状态、正确处理异常,并可通过CountedCompleter处理复杂依赖。相比传统线程池,Fork/Join在计算密集型任务上能获得3

2025-12-19 15:00:35 1300

原创 同志们,我去外包了

《外包打工记:技术面试与工作心得》 摘要:本文记录了一位程序员回老家发展后入职外包公司的经历。作者分享了近期面试中的趣事,如制造业公司询问"亿级流量"处理等不切实际的问题。重点总结了工作中实用的代码技巧:1)使用LocalDate处理日期;2)StringUtils字符串填充方法;3)日期操作的最佳实践。SQL方面介绍了日期函数(TRUNC、LAST_DAY等)和左连接与内连接的区别。文章以自嘲口吻展现了外包程序员的学习历程,既包含实用技术点,也反映了职场中的无奈与成长。

2025-12-19 14:17:08 459

原创 米哈游Java后端面试被问:Spring Boot Starter的制作原理

Redis持久化机制对比分析 Redis提供RDB和AOF两种持久化方式:RDB通过定时生成内存快照实现高效备份,文件小恢复快但可能丢失数据;AOF记录每个写操作保证数据安全,但文件较大恢复慢。生产环境建议:1)根据业务需求选择,缓存系统可用RDB,交易系统需AOF;2)Redis4.0+推荐混合持久化,兼顾恢复速度和数据安全;3)监控持久化状态,定期进行恢复演练;4)大内存实例需考虑fork性能影响。最佳实践是混合使用RDB快照和AOF增量命令,配合合理备份策略。

2025-12-18 13:59:21 1051 1

原创 有点意思!Java8后最有用新特性排行榜!

本文梳理了JDK8之后的长期支持版本(11/17/21/25)的新特性,并评选出最受欢迎的三个功能:Record类型(JDK17)简化数据载体类的创建;虚拟线程(JDK21)显著提升并发性能;增强版switch语法(持续演进)。作者指出JDK更新诚意不足,新特性数量和质量均令人失望,尤其JDK25几乎无实质更新。文章邀请读者参与讨论其他有价值的新特性排名,并附带了个人技术站点资源。整体反映了开发者对Java新版本创新乏力的不满情绪。

2025-12-18 13:28:08 266

原创 米哈游Java面试被问:线上Full GC频繁,如何定位?CMS并发失败怎么办?

摘要:本文系统性地讲解了线上FullGC频繁问题的排查与解决方案。首先介绍了完整的排查流程,包括监控工具链、四步定位法和常见原因对应表。重点分析了CMS并发失败的原理和四种典型场景,并给出针对性优化方案。通过电商大促、内存泄漏等实战案例,展示了参数调优技巧。针对不同场景提供了CMS到G1的迁移指南,并详细阐述了应急处理流程。最后提出长期预防的开发规范和GC选择建议,强调对于新系统推荐使用G1或ZGC,老系统可结合实际情况优化或迁移。全文以"及早发现、准确定位、快速解决"为核心思路,为JV

2025-12-17 13:34:10 970

原创 搞懂 Java 中的 VO、BO、PO、DTO、DO:一个八年 Java 开发的踩坑与总结

本文总结了Java开发中VO、BO、PO、DTO、DO等数据对象的使用场景和区别。PO是数据库映射对象,DO封装业务逻辑,DTO用于数据传输,BO整合服务层数据,VO负责前端展示。作者通过8年实战经验指出:PO必须严格对应表结构,DO要包含业务方法,DTO要过滤敏感字段,VO需格式化数据。建议使用MapStruct自动转换对象,统一命名规范,小项目可灵活处理但大项目必须严格区分。核心原则是让每个对象专注单一职责,避免后期维护困难。

2025-12-17 13:07:32 662

原创 淘宝Java面试被问:Atomic原子类的实现原理

摘要:Atomic原子类基于CAS(Compare-And-Swap)实现无锁并发,通过CPU级原子指令和volatile保证可见性。核心机制包括:1)Unsafe类提供硬件级CAS操作;2)原子类家族(基础类、数组类、引用类等)满足不同场景;3)AtomicStampedReference解决ABA问题。JDK8+增强包括LongAdder分段累加和函数式更新。使用时需注意:高竞争场景选LongAdder,复杂操作仍需锁,避免伪共享和过度创建对象。Atomic结合CAS+volatile+Unsafe成为

2025-12-16 13:24:43 1389

原创 开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:深度解析 Wire 依赖注入集成实践

GoWindAdmin(风行)框架深度集成Google Wire实现企业级依赖注入方案。该方案通过编译期代码生成方式,以Provider和Injector为核心概念,构建"原子级→模块聚合级→应用级"的分层依赖管理体系。框架采用独立providers目录设计,严格遵循分层依赖原则,实现业务代码与DI配置解耦。实践表明,该方案能有效降低维护成本、杜绝循环依赖、支持增量开发,显著提升企业级中后台系统的稳定性和开发效率。Wire的无反射特性和编译期校验机制,配合框架的分层ProviderSet

2025-12-16 13:04:13 865

原创 小红书Java面试被问:java创建对象有哪些方式?

摘要:Java中创建对象主要有五种方式:1)new关键字直接调用构造器;2)反射机制动态创建;3)clone()方法复制对象;4)反序列化恢复对象;5)工厂/Builder模式封装创建逻辑。不同方式各有特点:new最常用,反射支持动态加载,clone实现对象复制,反序列化不调用构造器,工厂模式提升代码可读性。理解这些方式有助于掌握Java对象生命周期,应对单例破坏、深浅拷贝等进阶问题。(149字)

2025-12-15 14:44:56 1313

原创 Java泛型符号T、E、K、V、?总混用?5分钟彻底讲透,别再搞错了!

泛型符号解析:T、E、K、V、?的区别 泛型是Java中的"类型占位符",用于编写通用代码。常见符号及其含义: T(Type):通用类型,如Box<T>,适用于任意类型。 E(Element):集合中的元素类型,如List<E>。 K/V(Key/Value):专用于Map的键值对,如Map<K,V>。 ?(通配符):表示未知类型,如List<?>,可接受任何类型但限制操作。 这些符号是约定俗成的写法,增强代码可读性。实际开发中,T和E可互

2025-12-15 14:35:40 451

原创 京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?

ZGC通过染色指针技术革新内存管理,将GC元数据存储在指针高位而非对象头中,实现并发标记和重定位。其核心技术包括:1)64位指针重新分配42位地址+4位元数据;2)多重映射技术使同一物理内存对应多个虚拟地址视图;3)采用读屏障而非传统写屏障,在对象加载时检查指针颜色并触发相应操作。这种设计实现了亚毫秒级GC停顿,特别适合TB级大堆场景,体现了"以空间换时间"和"将复杂度从运行时移至装载时"的先进思想。

2025-12-12 14:04:37 914

原创 递归:不止是 “自己调用自己”,看完这篇秒懂

摘要:递归是一种通过方法调用自身解决问题的编程技术。文章通过俄罗斯套娃类比递归原理,讲解递归三要素:递归公式、终止条件和正确方向。结合阶乘计算、猴子吃桃和文件搜索三个案例,演示递归的实际应用。同时对比递归与迭代的优缺点,指出递归适合处理层次结构问题但需注意栈溢出风险。最后强调掌握递归能提升解决复杂问题的能力,但简单问题建议使用迭代。

2025-12-12 13:47:22 711

原创 华为Java面试被问:SQL执行顺序

SQL查询执行顺序完全指南:从基础到优化 本文详细解析了SQL查询的8个关键执行阶段:1)FROM/JOIN加载数据源;2)WHERE行级过滤;3)GROUPBY分组聚合;4)HAVING组级过滤;5)SELECT列投影;6)DISTINCT去重;7)ORDERBY排序;8)LIMIT/OFFSET分页。重点阐述了WHERE与HAVING的区别、GROUPBY分组机制、SELECT别名使用时机等核心概念,并通过优化案例展示了执行顺序对查询性能的重要影响。同时比较了MySQL与PostgreSQL在执行标准上

2025-12-11 13:32:19 2561 2

原创 scala中的Array

Scala中的数组分为不可变数组(Array)和可变数组(ArrayBuffer)。不可变数组创建后长度固定,支持元素访问、长度获取等操作;可变数组可动态增删元素,需导入ArrayBuffer。数组常用操作包括映射(map)、过滤(filter)、搜索(contains/indexOf)和切片(slice)等。多维数组可通过Array.ofDim或grouped方法创建。数组在内存中连续存储,访问速度快,适合需要高效随机访问的场景。

2025-12-11 13:25:09 297

原创 宇树Java面试被问:HashMap为什么线程不安全?

HashMap线程不安全问题主要体现在多线程环境下可能出现数据丢失、死循环和size计数不准确等严重问题。主要原因包括:1)并发put操作导致数据覆盖;2)JDK1.7扩容时链表成环引发死循环;3)非原子操作导致size计数错误。解决方案推荐使用ConcurrentHashMap,它通过CAS+synchronized机制保证线程安全。开发者应充分理解HashMap的并发缺陷,避免在生产环境中直接使用非线程安全的HashMap,这是Java并发编程的重要基础。

2025-12-10 13:42:16 1360

原创 .NET进阶——深入理解委托(1)委托入门

C#委托是一种方法容器,允许将方法作为参数传递、存储和调用。文章介绍了委托的四种创建方式:显式创建、方法组转换、匿名方法和Lambda表达式。委托的核心价值在于解耦调用方和方法实现,典型应用包括事件处理和回调机制。系统内置了Action(无返回值)和Func(有返回值)两种泛型委托,简化了常见场景的使用。通过"房产中介"的类比,文章生动解释了委托作为"方法代言人"的本质,使其可以像变量一样传递和批量调用。委托特别适用于需要动态指定方法或实现回调的场景。

2025-12-10 13:33:14 560

原创 美团Java面试被问:AOF和RDB相比优缺点

Redis持久化方式对比与选型策略 Redis提供RDB和AOF两种持久化方式,各具特点:RDB通过定时快照实现高效持久化,恢复速度快但可能丢失数据;AOF记录所有写操作,数据安全性高但恢复较慢。技术实现上,RDB采用二进制压缩存储,AOF使用文本协议格式。生产环境中,建议根据业务需求选择配置:追求性能可选用RDB,注重数据安全应配置AOF,Redis 4.0+推荐使用混合持久化模式。关键场景需制定灾难恢复方案,如文件损坏修复和多级备份策略。选型时应综合考虑性能、数据安全、恢复时间等因素,金融级业务建议采用

2025-12-09 13:32:10 929

原创 有人敲门,开水开了,电话响了,孩子哭了,你先顾谁?

本文通过生活场景类比,生动讲解了Java多线程优先级的概念和应用。当多个任务同时发生时(如孩子哭、开水开、电话响、有人敲门),我们可以像CPU调度线程一样设置优先级。文章详细介绍了Thread.setPriority()方法的使用,同时指出线程优先级仅是建议而非绝对。为避免线程饥饿问题,推荐使用线程池、任务队列等更可靠的解决方案。实际开发中,建议采用不同优先级的线程池处理不同类型任务,通过队列控制执行顺序,并配合异步编程提高响应性。最后强调多线程编程需要根据具体场景选择合适策略,平衡简单性、可靠性和性能。

2025-12-09 13:24:58 576

原创 京东Java面试被问:Spring拦截器和过滤器区别

本文对比分析了Spring中的过滤器(Filter)和拦截器(Interceptor)。过滤器属于Servlet规范,作用于Servlet容器层面,处理所有请求;拦截器是Spring框架提供,作用于Controller层面。主要区别体现在:执行顺序上过滤器包裹拦截器;作用范围上过滤器处理所有请求而拦截器仅处理Controller请求;依赖关系上拦截器可直接使用Spring Bean而过滤器不能。应用场景上,过滤器适合处理编码、跨域等基础功能,拦截器适合权限控制、日志记录等业务功能。文章通过代码示例和流程图详

2025-12-08 13:31:25 712

原创 美团二面:KAFKA能保证顺序读顺序写吗?

摘要:Kafka通过分区内顺序读写保证消息有序性,但跨分区不保证全局顺序。生产者需使用相同key路由到同一分区、开启幂等性(enable.idempotence=true)或设置max.in.flight.requests.per.connection=1确保严格有序。消费者应单线程处理分区消息,避免乱序提交。全局顺序需业务层实现,如单分区、按key有序或引入外部排序机制。配置建议包括启用幂等、acks=all及合理分区策略。

2025-12-08 13:22:40 298

空空如也

空空如也

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

TA关注的人

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