- 博客(106)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 金融支付系统高并发架构设计文档
高性能:支持单个账户上千TPS的交易处理能力强一致性:保障资金操作的绝对准确,符合金融级数据一致性要求高可用:系统可用性达到99.99%,具备故障自动转移和恢复能力可审计:完整记录所有资金流向,满足金融监管和审计要求可扩展:支持水平扩展以应对业务增长一切皆流水:系统的唯一真相来源是流水记录,余额是流水的计算结果。宁可慢,不可错:在核心的资金处理路径上,一致性、正确性的优先级远高于性能。性能通过架构(如分库分片)和外围系统异步化来提升。对账是底线。
2025-12-21 17:17:53
907
原创 从 CPU cache 的角度看,递归和非递归实现在性能上有哪些差异?
栈帧分散→ 缓存局部性差函数调用开销→ 寄存器冲刷不可预测的访问模式→ 预取失效缓存行利用率低→ 内存带宽浪费数据连续→ 缓存友好循环局部性→ 预取高效寄存器重用→ 减少内存访问可预测访问模式→ CPU 优化更好经验法则深度 < 50 的小规模递归:影响不大深度 > 1000 或性能敏感:优先用迭代现代编译器能优化简单尾递归实际项目中,先写清晰的递归,性能不足时再改迭代缓存友好的代码不仅是算法正确,更要考虑数据访问模式如何匹配 CPU 缓存架构。
2025-12-20 20:44:49
1022
原创 Java 的静态代理和动态代理
为什么用代理:实现非侵入式增强,符合开闭原则静态代理:需要接口,代码冗余,但性能好JDK动态代理:需要接口,运行时生成代理类CGLIB代理:不需要接口,通过继承实现,但不能代理final类/方法选择建议有接口且性能要求高 → JDK动态代理无接口 → CGLIB简单场景、代理类少 → 静态代理复杂场景、需要灵活配置 → 动态代理代理模式是 Spring、MyBatis 等主流框架的基石,理解代理模式对深入理解 Java 生态至关重要。
2025-12-18 23:44:11
588
原创 关于工程实践的面试问题
数据库Schema变更(新增/修改表结构)的核心驱动力是。,避免因Schema僵化导致业务迭代受阻或性能瓶颈。缓存与数据库的一致性需根据业务场景选择策略,核心是。数据回填(将老数据同步到新Schema)需保证。
2025-12-18 10:21:14
791
原创 MCP 协议详解
一、协议本质:JSON-RPC 2.0 + 约定核心组成MCP 协议 = JSON-RPC 2.0 基础协议 + 特定消息约定 + 传输约定1. JSON-RPC 2.0 基础"jsonrpc": "2.0", // 必填,版本标识"id": 1, // 请求ID,用于匹配响应"method": "tools/list", // 方法名"params": {...} // 参数"id": 1, // 与请求的 id 对应"result": {...} // 成功结果// 或。
2025-12-14 12:39:13
597
原创 设计一个企业知识库 MCP Server
上传、搜索、检索、更新企业文档:基于角色的访问控制(RBAC):Markdown、PDF、Word、HTML、纯文本:文档摘要、翻译、相似文档推荐:操作日志、使用统计:与现有系统(Confluence、Git、SharePoint)集成。
2025-12-14 12:10:22
276
原创 Java 中 new 一个对象的过程是怎么样的?
类加载(首次) → 分配堆内存 → 零值填充 → 设置对象头 → 执行<init>(父类构造+实例赋值+自定义逻辑) → 返回对象引用核心:JVM 先完成“内存层面的对象创建”,再通过构造方法完成“业务层面的初始化”;关键:只有执行完<init>,对象才是合法可用的,否则可能出现字段未初始化的异常。
2025-12-12 12:50:07
777
原创 Java String 中的字符串为什么是 final 的?
设计目标不可变的价值安全性避免敏感数据篡改、哈希表失效、类加载异常性能常量池复用、哈希值缓存、减少拷贝并发安全多线程读取无需同步,天然线程安全设计简洁方法返回新对象,逻辑清晰,避免状态管理的复杂度String的不可变设计是 Java 权衡“安全、性能、易用性”的最优解——牺牲了少量修改灵活性,换来了整个语言生态的稳定性和高效性。
2025-12-12 12:46:34
749
原创 推荐/搜索系统的召回、精排、粗排、打散这四个环节都是做什么的?
召回是**“海选”**——用低成本的方式,从海量数据里捞出一批“可能合格”的候选人。粗排是**“一轮面试”**——快速淘汰明显不相关的内容,减少精排的计算压力。精排是**“终面”**——用最精准的模型,确定用户最可能感兴趣的内容顺序。打散是**“最终调参”**——在不牺牲核心体验的前提下,让推荐结果更丰富,提升用户长期留存。
2025-12-11 21:03:02
615
原创 如何保证服务高可靠?
冗余:任何核心组件都要有备份,消除单点;隔离:故障隔离,避免单点故障扩散;可观测:监控、日志、链路追踪,让问题可被看见;容错:异常有兜底,依赖有熔断,流量有限流;演练:主动注入故障,提升应急能力。高可靠不是一蹴而就的,而是一个持续优化的过程——通过不断发现问题、解决问题、总结经验,让服务的可靠性越来越高。
2025-12-09 23:09:17
932
原创 跟面试官详聊微服务架构该怎么聊?
不要一上来就讲技术,先从业务视角切入,体现你懂微服务的本质:“微服务架构是一种将单体应用按业务域拆分为独立、自治的小型服务的架构模式,每个服务运行在独立进程,通过轻量级通信(如HTTP/GRPC、消息队列)协作。它的核心价值是解耦——解决单体应用‘牵一发而动全身’的问题,支撑业务快速迭代、团队并行开发,同时提升系统的可扩展性和容错性。容器化:用Docker打包服务,保证“一次构建,到处运行”;编排工具:用K8s管理容器集群,实现服务的自动扩缩容、滚动更新(避免发布时服务不可用);配置中心。
2025-12-09 21:16:42
796
原创 微服务架构面试高频问题应答手册
答题思路:先定义微服务的核心是“业务域拆分+独立自治”,再从开发、部署、扩展、容错四个维度对比单体。话术示例微服务是将单体应用按业务域拆分为一系列小型、自治服务的架构模式,每个服务独立运行、独立部署,通过轻量级通信协作。开发维度:单体是一个代码库,团队协作易冲突;微服务每个服务一个代码库,小团队可独立负责,迭代更快。部署维度:单体改一行代码就要全量部署,风险高;微服务支持单个服务独立部署,不影响其他服务。扩展维度:单体只能整体扩容,资源浪费;微服务可针对高负载服务(如订单服务)单独扩容,性价比更高。
2025-12-09 20:01:21
825
原创 Kafka 的 ConsumerCoordinator、GroupCoordinator 和 Group Leader 三个概念的区别是什么?
定义:是 Kafka 集群中某个 Broker 节点承担的角色,每个消费者组(通过group.id标识)会被分配一个固定的 GroupCoordinator,负责管理该组的全生命周期。核心职责成员管理:维护组内消费者的加入/离开状态(接收消费者的JoinGroupLeaveGroup请求)。位移管理:负责存储和管理消费者组的位移信息(默认存储在主题中)。重平衡触发:当组内成员变化(如消费者崩溃、新增)或分区数变化时,触发重平衡(Rebalance)。协调流程。
2025-12-07 23:28:47
806
原创 什么是守护进程?
守护进程是 Linux 系统的“后台核心服务载体”,核心特点是脱离终端、长期后台运行、提供系统级服务。它与普通进程的本质区别是“是否依赖终端”和“生命周期长度”,日常管理主要通过systemd等工具实现启动、停止、开机自启等操作。
2025-11-26 16:53:31
716
原创 synchronized 底层原理
特性描述锁住对象锁是关联在对象上的,通过对象头的 Mark Word 来标识。Monitor是实现互斥的核心机制,负责管理线程的排队和阻塞。锁升级无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁,根据竞争激烈程度动态调整,兼顾了无竞争和高竞争场景下的性能。现代性能在低竞争场景下,的性能与相差无几,因其是 JVM 内置特性,推荐优先使用。
2025-11-26 13:46:10
585
原创 Kafka 线上问题排查完整手册
当Kafka集群出现问题时,运维人员需要快速获取系统状态信息。以下命令可以在最短时间内了解Kafka集群的健康状况,为进一步的深度排查提供重要线索。📊 性能和负载快速评估🚨 故障快速定位🔍 一、Kafka集群状态全面检查📖 Kafka集群架构背景知识Apache Kafka是一个分布式流处理平台,其核心架构包含以下几个关键组件:Broker(代理服务器):Kafka集群中的每个服务器节点都是一个Broker,负责存储数据、处理生产者和消费者请求。一个健康的Kafka集群通常由3个或更
2025-09-13 18:26:38
989
原创 Redis 线上问题排查完整手册
Redis线上出现问题时,首先需要获取基本状态信息。以下命令可以快速了解Redis当前运行状况:📅 一、内存问题深度排查🔍 问题背景与成因Redis内存问题是线上最常见的故障类型,主要包括:出现以下情况时,应重点排查内存问题:第二步:识别和分析大Key第三步:检查过期key和清理策略第四步:分析内存碎片情况💡 解决方案与优化策略立即缓解内存压力长期优化措施⚡ 二、性能问题深度分析🔍 问题背景与成因Redis性能问题通常表现为响应延迟增加,主要原因包括:以下现象提
2025-09-13 14:15:14
979
原创 设计一个 AB 测试平台
客户端层:包括Web客户端、移动客户端和服务端集成。通过SDK或API与平台交互。接入层:负责流量分发和API网关功能,处理认证、限流等。应用服务层:核心业务逻辑,包括实验管理、用户分配、事件收集和分析服务。数据层:存储实验配置、用户数据和事件数据的数据库及缓存系统。辅助服务:提供认证授权、通知、日志等功能支持。本设计提供了一个可扩展、高性能的AB测试平台架构,能够满足企业级应用需求。微服务架构:将系统分解为功能明确的服务,便于独立扩展和维护。高性能分配系统:通过多层缓存和异步处理确保快速的用户分配决策。
2025-09-06 16:03:10
1235
原创 需要晋升后的待遇(无论是薪水还是工作量),但是又觉得走升级之路很没意思、特别磨人,怎么办?
如果前两者暂时都不考虑,那么我们可以重新定义什么是你的“升级”。
2025-09-06 14:25:59
729
原创 LC 单词搜索的一个题解的时间复杂度分析
列),外层双重循环会遍历每个单元格,因此基础遍历次数为。总时间复杂度 = 外层遍历次数 × 单次 DFS 复杂度。的首字符,且每次递归都能探索4个方向,且。的字符串复制开销,此时时间复杂度可优化为。改为传递当前匹配索引,可省去。在最坏情况下(每个单元格都是。一个优化思路是将代码中的。对于每个可能的起点(与。
2025-09-04 14:28:13
428
原创 【算法题】最长相同子串
给定两个字符串,输出最长相同子串。比如输入"abcde“和"acdef",应该输出"cde"。最经典的办法是动态规划,时间复杂度 O(n·m)。
2025-08-27 08:39:36
375
原创 如何处理同事业务交接的尴尬?
我猜老板可能是出于[此处根据和老板谈话的内容猜测,如‘希望我分担一下你的负荷’或‘后续想让我做XX整合’]的考虑。另外,为了能真正把这块业务做好,您看是否需要我之后和[同事姓名]进行一次正式的工作交接?同时,因为我之前和[同事姓名]合作得比较多,关系也不错,我有点担心这个安排会不会让他产生一些误会,以为是我主动争取的。老板把别人的一块业务塞给我了,不是我主动抢的,所以弄得我很尴尬。刚才老板找我,突然把你这块[某某业务]划给我了,我也挺懵的。“老板,关于您把[某某业务]交给我来负责的决定,我想和您聊聊。
2025-08-23 22:13:46
1195
原创 秒杀服务的回调方案
用Redis存储秒杀请求的状态,key为seckill:result:{请求ID},value为JSON格式的结果(如异步处理:通过消息队列 decouple 秒杀请求的接收与处理,避免阻塞。结果缓存:用Redis存储请求状态,支持高并发查询。回调机制:根据流量规模选择轮询/长轮询/WebSocket,确保结果及时通知。用户体验:前端需显示“处理中”状态,避免用户重复点击;结果页清晰反馈成功/失败原因。通过这套方案,既能应对秒杀的高并发压力,又能通过回调机制实时将结果反馈给用户,平衡了性能与体验。
2025-08-22 00:57:38
828
原创 关于 Kafka,为什么由 Group Leader 分配分区,而不是 GroupCoordinator 呢?
如果再让它去解析并执行 Range、RoundRobin、Sticky、CooperativeSticky 乃至用户自定义的分配逻辑,代码复杂度、CPU/内存消耗都会急剧上升。把“如何分”外包给客户端,Coordinator 只需校验结果长度是否正确、然后原子地下发给所有成员即可,实现非常轻量。由客户端 Leader 计算完后,只需把「member → partitions」映射结果回传给 Coordinator,Coordinator 再原样广播给其他成员即可;Broker 保持简单、无状态。
2025-08-17 23:19:45
285
原创 ConsumerCoordinator 的几种状态和 GroupCoordinator 的几种状态的区别是什么?
对比维度ConsumerCoordinator(客户端)GroupCoordinator(服务端)所在位置消费者客户端状态数量4 种5 种状态含义关注消费者自身状态(是否加入、是否 Rebalance)关注整个消费组的状态(是否有成员、是否 Rebalance)状态粒度较粗,面向单个消费者较细,面向整个消费组状态触发由服务端状态变化或本地事件触发由消费者加入、离开、心跳超时等事件触发。
2025-08-17 20:39:39
344
原创 Redis 两种数据持久化方式对比
通过合理配置,Redis 持久化可兼顾。启用混合持久化(Redis 4.0+)两种持久化方式,其核心差异在于。,混合模式是当前最优解。
2025-08-15 01:19:13
1010
原创 间隙锁(Gap Lock)
两条相邻索引记录之间的区间(如索引值10和20之间的间隙);第一条索引记录之前的区间(如小于最小索引值5的间隙);最后一条索引记录之后的区间(如大于最大索引值30的间隙)。例如,表中已有索引值为10、20、30(-∞, 10)(10, 20)(20, 30)(30, +∞)
2025-08-13 00:06:13
590
原创 如何应对心事干扰学习工作?
清空大脑缓存。安排任务、预留“忧虑时间”、放下杂念。利用番茄钟、分解任务、创造环境、建立仪式感。不苛求完美专注,练习觉察并温和拉回注意力。睡眠、运动、饮食、正念。必要时倾诉或寻求专业帮助。你无法阻止飞鸟掠过天空,但可以学会不让它在心头筑巢。内心的纷扰只是暂时的访客,你依然拥有选择专注方向的力量。每一次温柔地把注意力拉回当下,都是对自己耐心的一次见证。你已经走出了寻求改变的第一步,这本身就值得肯定。
2025-07-26 16:30:50
1165
原创 为什么在 Windows 下编译的 C 程序不能在 Linux 下运行?
Windows 可执行文件是 PE(Portable Executable),Linux 只认 ELF(Executable and Linkable Format)。同一份 x86-64 CPU,Windows 程序里调的是 Win32/Win64 ABI(寄存器约定、调用方式、系统调用号),Linux 用的是 System V ABI。(Wine、Proton、QEMU 用户态模拟、虚拟机)把 PE→ELF、Win32→Linux syscall、DLL→.so 全部“同声传译”,程序才能跑。
2025-07-25 12:58:32
228
原创 程序员在 AI 时代的出路与机遇
随着 AI 代码生成工具的崛起,许多程序员感到焦虑,担心自己的工作会被替代。但实际上,AI 时代为程序员带来了新的发展方向和更高层次的价值创造机会。
2025-07-09 20:55:35
358
原创 Senior 工程师的定义:深度专精 vs 高层次视野
"Senior"这个称号在技术领域确实有不同的解读,这个问题触及了技术成长路径的核心矛盾。实际上,卓越的 senior 工程师通常在两个维度上都有所建树,但会根据个人发展路径和组织需求偏重某一方面。
2025-07-09 20:53:58
882
原创 跟领导有隔阂怎么办?
职场关系的改善往往需要时间,保持耐心和专业态度是关键。即使无法成为“朋友”,也能通过互相尊重和高效协作实现共赢。与领导之间存在隔阂是职场中常见的挑战,但通过积极的沟通和行动可以有效改善。避免在领导忙碌或情绪不佳时沟通,可通过预约时间或非正式场合(如午餐)开启对话。若性格或价值观差异较大,可专注于职业目标,将关系维持在“专业合作”层面。尊重领导权威,避免越级汇报或公开质疑决策,可通过私下沟通提出建议。向可信的同事或导师客观描述情况,获取外部建议,避免陷入主观情绪。
2025-05-06 21:46:55
575
原创 Amazon Bedrock 功能
Amazon Bedrock 主要是模型访问和部署服务,而非全面的模型开发平台。它提供了基础模型的简易访问、有限的定制能力和强大的部署功能,但对于从零开始的模型开发和大规模训练,则需要结合 SageMaker 等其他 AWS 服务使用。
2025-03-29 14:54:20
643
springboot + hibernate + gradle结合使用工程
2016-10-24
Unreal 4引擎中,使用BehaviorTree控制AI行为的C++实现
2017-02-15
使用Python的第三方库gTTS访问Google TTS服务
2017-03-28
Protocol Buffers 2.5.0(Windows版)
2016-08-19
hive hcatschema hcatrecord 区别是什么???????
2016-01-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅