- 博客(237)
- 资源 (1)
- 收藏
- 关注
原创 【面试场景题】dubbo可以使用自定义的序列化协议吗
格式:协议名称=实现类全路径-- 服务提供者配置 --> < dubbo: protocol name = " dubbo " serialization = " custom " /> <!-- 或在服务级别指定 --> < dubbo: service interface = " com.example.DemoService " ref = " demoService " serialization = " custom " /> <!
2025-08-29 22:12:31
210
原创 【面试场景题】怎么做业务领域划分
访谈业务专家:了解核心业务流程(如电商的“下单→支付→发货→收货”)、业务规则(如“库存不足时不能下单”)、痛点(如“促销活动需快速上线”)。绘制业务流程图:用泳道图、活动图等工具,明确“谁(角色)在什么场景下做什么操作”(如用户、商家、仓库管理员的操作流程)。识别业务实体与事件:记录核心业务对象(如“订单”“商品”“用户”)和关键事件(如“订单创建”“支付成功”“库存扣减”),这些是领域划分的基础。
2025-08-29 21:58:31
356
原创 【面试场景题】三阶段事务提交比两阶段事务提交的优势是什么
维度两阶段提交(2PC)三阶段提交(3PC)阻塞风险高(参与者无超时机制,可能永久阻塞)低(各阶段有超时策略,自动决策)资源锁定时间长(从准备阶段开始锁定)短(仅在预提交阶段锁定)容错能力弱(协调者故障易导致数据不一致)强(超时自动处理,减少对协调者的依赖)事务一致性保障依赖协调者的可靠性,存在脑裂风险通过状态拆分和超时,降低脑裂影响3PC通过拆分阶段、引入超时、减少阻塞,解决了2PC在分布式事务中的核心痛点,尤其在大规模分布式系统中,能显著提升事务的可靠性和系统的可用性。
2025-08-29 21:17:53
190
原创 【面试场景题】为什么你们公司要使用spring框架?
通过IoC解耦组件、AOP分离横切逻辑、声明式事务简化数据一致性管理,同时提供丰富的生态和标准化规范。这些特性使得Spring既能解决企业级应用的技术复杂性,又能提升团队协作效率,因此成为企业开发的首选框架。对于中小型项目,Spring Boot(基于Spring的简化版)可进一步降低配置成本,实现“开箱即用”;对于大型分布式系统,Spring Cloud生态可提供完整的微服务解决方案。
2025-08-29 20:35:04
544
原创 Spring Boot自动装配机制的原理
创建自动配置类:定义一个标注的类,使用注解控制生效条件,通过@Bean注册组件。绑定配置属性:通过定义配置类,绑定应用配置文件中的属性。注册自动配置类:在项目的文件中,添加自定义自动配置类的全路径。通过触发,借助加载预设的自动配置类,结合条件注解动态筛选,最终将符合条件的Bean注册到Spring容器。这一机制实现了“约定大于配置”,大幅简化了Spring应用的初始化流程,同时保留了通过自定义配置覆盖默认行为的灵活性。
2025-08-29 20:16:00
542
原创 Java有几种文件拷贝方式,哪一种效率最高?
效率最高的方式是使用NIO的或,尤其适合大文件拷贝。日常开发中,推荐使用(Java 7+),它兼顾了效率与代码简洁性,底层同样依赖的零拷贝机制。
2025-08-28 21:02:45
199
原创 Mybatis中缓存机制的理解以及优缺点
MyBatis 缓存机制通过一级缓存和二级缓存的配合,有效提升了查询性能,但也存在缓存一致性、分布式兼容等问题。实际使用中需根据业务场景合理配置,权衡性能与数据准确性,避免滥用缓存导致的隐性问题。
2025-08-28 20:56:56
577
原创 【面试场景题】为什么有些公司禁止使用@Transactional声明式事务?
禁止使用并非否定其价值,而是权衡便捷性与风险后的选择。在大型团队或复杂项目中,开发者水平参差不齐,的隐性陷阱可能导致难以排查的生产问题(如数据不一致、性能瓶颈)。而编程式事务虽然代码更繁琐,但能通过显式控制降低风险,提升代码的可维护性和稳定性。当然,很多公司并非完全禁止,而是限制其使用场景(如仅允许在简单、无嵌套的业务中使用),并辅以严格的代码审查(如检查事务范围、异常处理、传播行为配置等),以平衡开发效率与系统稳定性。
2025-08-28 20:47:02
471
原创 【面试场景题】电商首页、商品列表、商品详情页怎么提高访问性能
是用户访问的核心路径,但其数据特性(静态/动态、实时性、数据量)和访问模式(高频/低频、筛选/固定)差异较大,需结合页面特性设计分层优化方案。列表页用户常做“筛选(分类、价格、品牌)”“排序(销量、价格)”,数据动态性强,核心是“搜索引擎+缓存筛选结果”。详情页需展示“商品静态信息(描述、图片)”和“实时信息(库存、价格、销量)”,核心是“静态缓存+实时数据分离”。两方面展开,覆盖从前端到后端、从缓存到数据库的全链路优化。(行业标准:首屏<2秒),核心是“静态化+缓存预热”。首页是电商流量入口,
2025-08-28 00:04:07
739
原创 volitale伪共享问题及解决方案
伪共享是CPU缓存机制导致的性能问题,根源在于CPU缓存行(Cache Line)CPU缓存以「缓存行」为最小存储单位(通常64字节),一个缓存行可以存储多个变量。当多个线程同时操作不同变量,但这些变量恰好位于同一缓存行时,会触发缓存一致性协议(如MESI),导致缓存行频繁失效和刷新,大幅降低性能。无关变量共享了同一个缓存行,引发了不必要的缓存竞争,这就是伪共享。伪共享是缓存行机制导致的性能问题,与变量是否为volatile无关,但volatile会加剧其影响。解决核心。
2025-08-27 23:40:10
412
原创 如何通过arthas打印某个方法的具体执行耗时
(TimeTunnel)命令可以记录方法的调用信息,包括入参、返回值和执行耗时,便于后续分析。命令可以追踪方法的调用路径,并打印每个子方法的执行时间,适合分析方法内部的耗时分布。命令用于监控方法的执行情况,包括调用次数、成功次数、失败次数、平均耗时、最大耗时等。通过这些命令,可以快速定位方法的执行耗时,分析性能瓶颈。命令来打印某个方法的具体执行耗时,其中。更适合查看方法的调用链路和各环节耗时,适合统计方法的执行耗时分布。在Arthas中,可以使用。执行后会记录每次调用,通过。表示对应方法的执行耗时。
2025-08-26 22:44:27
362
原创 重写BeanFactory初始化方法并行加载Bean
在Spring中,Bean的初始化默认是单线程的,这主要是为了保证Bean之间的依赖关系正确处理。但对于一些初始化耗时长且依赖关系简单的Bean,我们可以通过扩展Spring的BeanFactory来实现并行初始化,通过自定义BeanFactory和扩展ApplicationContext来实现对特定Bean的并行处理,从而提高启动速度。这种方式可以显著提高包含多个耗时初始化Bean的Spring应用的启动速度,特别是当这些Bean之间没有复杂依赖关系时效果更佳。
2025-08-26 22:39:10
695
原创 spring如何通过实现BeanPostProcessor接口计算并打印每一个bean的加载耗时
通过这种方式,你可以很方便地监控Spring容器中所有Bean的初始化性能,识别出初始化耗时较长的Bean,为性能优化提供依据。接口计算并打印每个Bean的加载耗时,我们可以利用该接口的两个回调方法记录Bean初始化前后的时间戳,然后计算时间差。要在Spring中通过。
2025-08-26 22:25:17
481
原创 【面试场景题】如何使用redis记录上亿用户连续登录天数?
(1个bit表示1个用户的登录状态),大幅节省内存(1亿用户每天仅需约12MB内存)。实际使用时,可结合用户ID映射(如将非连续ID映射为连续数字)进一步优化Bitmap的空间利用率。使用Redis的Bitmap记录上亿用户连续登录天数,核心是利用Bitmap的。
2025-08-25 21:27:00
319
原创 【面试场景题】调用三方支付接口,怎么防止错付或者多付
源头锁定(订单+金额)→ 过程防篡改(签名)→ 重复拦截(幂等)→ 状态闭环(校验+查询)→ 异常兜底(日志+监控)”。每个环节需同时考虑“业务逻辑”和“三方平台规则”,确保与微信、支付宝等支付平台的交互严格符合规范,同时通过后端校验规避前端和网络层面的风险。最终实现目标:即使前端被篡改、网络异常、回调重复,也能确保“订单金额正确、同一订单不重复扣款、支付状态准确”。
2025-08-25 21:08:26
653
原创 【面试场景题】什么是单点登录
单点登录的核心是通过认证中心统一管理身份,并通过“全局Token”实现多系统间的信任传递。统一的认证中心(SSO服务器);安全的认证凭证(Token);应用系统与认证中心的信任机制。通过SSO,既能提升用户体验,又能简化系统的身份管理,是大型系统架构中的常见设计。
2025-08-25 20:22:13
867
原创 介绍大根堆&小根堆
堆的本质是“完全二叉树”(除最后一层外,每一层节点数均满;类型核心规则(父子节点关系)关键特征小根堆(Min-Heap)任意父节点的值≤其左右子节点的值整个堆的最小值一定在根节点大根堆(Max-Heap)任意父节点的值≥其左右子节点的值整个堆的最大值一定在根节点小根堆和大根堆是“完全二叉树+固定父子优先级”的结合,核心价值是O(1)获取极值、O(log n)插入/删除,效率远高于数组(O(n)查找极值);
2025-08-15 22:30:13
748
原创 介绍TCP的拥塞控制
TCP拥塞控制的本质是“试探-反馈-调整通过“慢启动”快速接近网络容量;通过“拥塞避免”平稳提升吞吐量;通过“超时/快速重传”检测拥塞,并快速退避;通过“快速恢复”减少拥塞后的性能损失。这一机制让TCP能自适应不同网络环境(如家庭宽带、数据中心、跨洋链路),在可靠性与吞吐量之间取得平衡,是互联网稳定运行的核心保障之一。
2025-08-15 22:04:06
745
原创 AMQP协议介绍
AMQP通过标准化的组件(交换机、队列、绑定)和可靠机制,为分布式系统提供了灵活、可互操作的消息传递方案。其核心价值在于解耦生产者与消费者,并支持复杂路由和高可靠性,是企业级消息中间件的主流协议之一。
2025-08-15 20:15:27
878
原创 列式存储与行式存储:核心区别、优缺点及代表数据库
数据存储的最小单元是“字段(Column)”,多个字段构成“行(Row)”(即一条完整记录)。两种存储的根本区别在于,优先连续存储“行”还是“列”。存储类型核心组织逻辑示例(存储3条用户记录:ID、Name、Age)行式存储按“行”连续存储,一条记录的所有字段紧凑排列1:Tom:20 → 2:Jerry:22 → 3:Alice:18(每条记录的ID/Name/Age连续存)列式存储按“列”连续存储,同一字段的所有值紧凑排列ID列:1→2→3;Name列:Tom→Jerry→Alice;
2025-08-15 18:08:09
891
原创 redis怎么做rehash的
Redis的rehash是通过渐进式迁移基于负载因子触发,动态扩容或缩容。使用两个哈希表(ht[0]和ht[1]),逐步迁移元素。迁移期间正常处理请求,兼顾效率与可用性。这种设计使Redis在面对大规模数据时,仍能维持高效的哈希表操作性能。
2025-08-15 12:44:38
494
原创 redis6的多线程原理
Redis 6.0 的多线程是**“单线程命令执行 + 多线程网络 I/O”**的混合模型,核心是通过并行处理网络数据读写突破 I/O 瓶颈,同时保留单线程命令执行的简单性和安全性。这种设计在高并发场景下可提升 2-3 倍的吞吐量,尤其适合大流量、多连接的 Redis 部署。
2025-08-15 10:24:21
967
原创 mysql查询中的filesort是指什么
filesort是 MySQL 对查询结果进行排序的机制,当无法利用索引排序时触发。分为内存排序(快速排序)和磁盘排序(归并排序),磁盘排序性能较差。优化关键是创建包含“筛选+排序”字段的联合索引,让排序通过索引完成,避免filesort。通过EXPLAIN分析查询计划,及时发现filesort并优化,是提升排序查询性能的核心手段。
2025-08-14 23:18:15
809
原创 介绍java中atomic及相关类
atomic包提供的原子类通过 CAS 操作实现了高效的线程安全,适合简单值的并发更新场景,性能优于传统锁机制。但需注意其局限性:仅适用于单一变量操作,复杂场景仍需结合锁或其他并发工具。实际开发中,应根据业务复杂度选择合适的并发方案。
2025-08-14 20:28:28
571
原创 hashmap和concurrentHashmap是否允许null值和null健
集合类是否允许 null 键是否允许 null 值核心原因HashMap允许(仅一个)允许(多个)单线程场景,无需处理并发歧义不允许不允许多线程场景,避免返回值歧义实际开发中,若需在并发场景中使用类似“空值”的标记,可使用一个特殊的占位符对象(如)替代null,避免。
2025-08-14 19:32:53
384
原创 CompletableFuture介绍及使用方式
默认使用// 使用自定义线程池执行任务// 任务逻辑return "结果";用runAsync()提交异步任务;用实现链式操作;用handle()处理异常;用allOf()anyOf()组合多任务。它避免了传统Future的阻塞问题,让异步代码更简洁、易维护,尤其适合高并发场景下的任务编排。
2025-08-13 23:06:43
639
原创 Synchronized锁的使用方式
使用专门的锁对象(如Object实例),避免与其他同步方法/代码块共享锁,减少锁竞争。// 自定义锁对象(推荐使用private final修饰,避免被修改)// 同步代码块,锁为自定义对象lock// 临界区代码实例方法:控制同一实例的方法级同步,简单直接。静态方法:控制类级别的同步,适用于静态资源的并发访问。代码块:粒度更细,可自定义锁对象,灵活性最高,推荐优先使用。合理选择使用方式,可在保证线程安全的同时,减少性能损耗。
2025-08-13 22:54:33
790
原创 数据库连接池如何进行空闲管理
Druid通过定期检查和空闲阈值控制管理空闲连接,删除时机取决于等配置。若使用被删除的连接报错,核心是通过强化空闲检查、对齐数据库超时配置、必要时开启,确保应用获取的连接始终有效。
2025-08-13 22:02:05
606
原创 【面试场景题】异地多活改造方案
基于代理商的精细化路由策略,实现请求的精准分发分区存储与双向同步结合,平衡数据一致性与性能多层次健康检测与自动切换机制,保证系统高可用完善的灰度发布与回滚机制,降低实施风险该方案可实现单个可用区故障时,业务自动切换至其他可用区,将故障影响降至最低,显著提升系统的稳定性和可用性。
2025-08-10 23:01:45
606
原创 【面试场景题】微博热点新闻系统设计方案
本方案通过分层架构和微服务拆分,实现了热点新闻系统的核心功能,重点解决了:实时热点计算:基于 Flink 的分钟级热度更新高并发互动:Redis 缓存 + 异步持久化,支撑百万级用户同时操作复杂评论系统:MongoDB 存储 + 热门评论预筛选,平衡性能与体验系统可根据业务增长平滑扩展,同时通过防作弊机制和容灾设计保障稳定性,适合支撑微博级别的热点新闻场景。
2025-08-09 23:23:38
993
原创 【面试题】cookie和session 的区别
Cookie是服务器发送给客户端(浏览器)的小型文本文件,由客户端(浏览器)保存。每次客户端向服务器发送请求时,会自动携带对应的Cookie(除非设置了不发送)。Session是服务器为每个用户(会话)创建的内存对象(或存储在数据库、Redis等介质中),数据保存在服务器端。服务器通过一个唯一标识(通常是Session ID)与客户端关联,而Session ID通常通过Cookie传递(也可通过URL重写等方式)。Cookie:轻量、存储在客户端、适合非敏感数据,受大小限制,安全性较低。
2025-08-09 23:03:32
366
原创 【面试场景题】通过LinkedHashMap来实现LRU与LFU
策略核心逻辑LinkedHashMap的作用实现复杂度LRU淘汰最久未访问元素利用维护访问顺序,重写实现自动淘汰简单LFU淘汰访问次数最少(同次数则最久未访问)的元素作为频率分组内的容器,维护同频率元素的访问顺序较复杂(需额外结构跟踪频率)LRU实现简单、性能好,适合大多数场景;LFU更精准但实现复杂,适合对访问频率敏感的场景。
2025-08-09 22:02:41
890
原创 【面试场景题】用户表垂直拆分
现在有一张用户表有150个字段,包括套餐状态、实名状态、第三方登录token、手机号用户名等基本信息,希望基于不同业务维度拆分成几个小一些的表,字段少一点,便于维护。请帮忙出一个拆分方案,需要考虑到拆分过程的风险、监控、测试、灰度、回滚等方面。通过以上方案,可在保证业务连续性的前提下,安全地完成用户表的拆分,提升系统可维护性和扩展性。拆分过程中需特别注意数据一致性和性能影响,通过充分的测试和灰度验证降低风险。
2025-08-08 09:27:01
576
原创 【面试场景题】文档权限系统如何设计
用户(User):系统中的独立账号(如员工、外部访客),唯一标识为user_id。文档(Document):被管控的资源,可是单个文件、文件夹(含层级关系),唯一标识为doc_id,需记录parent_id(父级文档/文件夹,用于层级权限继承)和owner_id(所有者,默认拥有最高权限)。角色(Role):预定义的权限集合(如“所有者”“编辑者”“查看者”),简化批量授权,唯一标识为role_id。用户组(UserGroup):用户的集合(如“产品部”“项目A团队”),支持按组授权,唯一标识为。
2025-08-07 14:33:52
833
原创 【面试场景题】电商秒杀系统的库存管理设计实战
该方案通过“接入层限流→应用层排队→缓存层预扣减→数据库层兜底”的分层设计,既保证了10万QPS下的系统稳定性,又通过Redis原子操作+数据库乐观锁解决了超卖问题。同时,结合异步化、容错机制和防刷策略,兼顾了用户体验与业务安全,可满足秒杀场景的核心需求。
2025-08-06 23:43:06
915
原创 【面试场景题】日志去重与统计系统设计
该方案通过“分治+分布式”解决大数据量问题,通过“磁盘辅助+二次分片”优化内存,通过“流处理框架”支持实时统计,兼顾了效率、容错性和资源限制,符合实际生产场景的工程落地需求。
2025-08-05 23:51:42
557
原创 什么叫湖仓一体
湖仓一体不是数据湖和数据仓库的简单叠加,而是通过技术创新(如事务支持、元数据统一)实现的“1+1>2”的融合架构。它解决了传统数据管理中“数据割裂、场景受限、成本高昂”的痛点,成为企业在“数据驱动”时代的核心数据基础设施。“一个能存所有数据、能做所有分析、还不贵的超级数据中心”。
2025-08-02 22:39:37
833
原创 什么是doris
Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称,能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于这些优势,Apache Doris 非常适合用于报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等场景。用户可以基于 Doris 构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
2025-08-01 23:29:07
1012
清华大学《DeepSeek从入门到精通》PDF-0积分免费下载
2025-02-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人