- 博客(47)
- 收藏
- 关注
原创 如何开启第一次开源贡献之路?
开源”(Open Source)是指一种软件开发和分发的模式,其核心特点是源代码公开,允许任何人查看、使用、修改和分发该软件。这种模式强调透明、协作、社区驱动和自由共享。做开源不是一蹴而就的,它一般是一个非常漫长的过程,如果你是以一种非常功利的心态,沉不下心去好好沉淀这个项目,那大概率也是竹篮打水一场空。如果你拥抱开源,开源也会拥抱你。如果你能长期耕耘在一个社区,为其长期做贡献,那么可能就会从一个contributor任命为committer,甚至PMC。不过这都是后话了。
2025-12-26 14:22:50
699
原创 Reasoning + Acting: ReAct范式与ReAct Agent
它的核心逻辑是一个四元组的循环:Thought (思考) → Action (行动) → Observation (观察) →迭代核心组件分解:Thought (推理):模型对当前任务进行分析,计划下一步要做什么(例如:“我需要查询当前的股价”)。Action (行动):模型决定调用哪个外部工具(Tool/Function Calling),并给出参数(例如:调用Observation (观察):模型接收外部工具返回的真实结果(例如:“Apple 股价为 190 美元”)。迭代。
2025-12-25 13:44:14
556
原创 逃出结构化思维:从向量,向量数据库到RAG
在数学上,向量是有大小和方向的量。但在 AI 工程中,向量(Embedding)是非结构化数据(文本、图片、音频)在多维空间中的数值映射因此,定义是:数据(如一句话、一张图)经过深度学习模型(Embedding Model)计算后,转化成的一串浮点数数组“苹果”“梨子”“卡车”核心逻辑:空间距离代表语义相似度简单来说呢,就是在这个多维空间里,含义相近的词,坐标距离就近如果两个数据在语义上很像(比如“猫”和“小猫”),它们转换成的向量在数学空间里的距离就会非常近。
2025-12-24 21:51:56
1033
原创 LLM参数: Temperature 与 Top-p解析
是“整形师”,它拉伸或压缩概率分布,决定模型是保守还是激进。Top-p是“保安”,它划定一个动态的安全圈,把那些概率极低的不靠谱选项拒之门外。理解了这两个参数,你就掌握了通往大模型潜意识的钥匙。
2025-12-21 14:37:22
990
原创 面试官问Redis主从延迟导致脏数据读怎么解决?
场景示例推荐策略强一致性余额、库存扣减、订单状态强制读主库 (Master)最终一致性用户昵称、非实时排行榜、历史记录读从库 + 监控/重试高敏感度秒杀资格、配置开关使用WAIT命令或分布式锁梳理业务。将必须强一致的读请求(如金额),在代码层面指定直接读 Master。这是最稳妥的。检查是否有BigKey阻塞了同步链路。如果必须读从库且要求较高一致性,实现一个简单的监控熔断机制(通过 Java/Go 定时检查 Offset),自动隔离高延迟的从节点。
2025-12-20 13:02:56
588
原创 虚拟内存与寻址方式解析(面试版)
这张图表展示了三种寻址方式的对比方式单位大小碎片类型寻址复杂度适用场景段式不定(按逻辑)外部碎片中早期系统,便于共享保护页式固定(如 4KB)内部碎片低(硬件易实现)现代主流 OS(Linux)段页式固定内部碎片高(多次查表)复杂系统架构在日常后端开发,哪里有内存管理与寻址的知识运用呢?GC 与 内存整理:Java 的 GC 算法(如 G1, ZGC)在处理堆内存时,实际上是在整理虚拟内存。
2025-12-19 20:16:16
618
原创 数据库大事务有什么危害(面试版)
涉及大量数据或者资源的修改(如一次update几十万行数据)执行时间很长(几秒,几分钟甚至更久)包含大量未提交更改(undolog非常大)那么简单来说就是事务的粒度太大,导致一个事务执行时间太长,数据库压力太大。大事务 = 高风险操作。它不仅占用锁、内存、I/O、日志空间,还会阻塞并发、拖慢复制、延长恢复时间,严重时可导致数据库雪崩或服务瘫痪。因此,在生产环境中应严格避免大事务,坚持“小事务、快提交”的原则。对于批量数据处理任务,务必采用分批提交 + 限流 + 监控的策略。
2025-12-18 12:58:42
1156
原创 一站式了解数据库三大范式(库表设计基础)
在实际的数据库设计中,通常会努力达到 3NF。然而,有时为了提高查询性能,可能会故意违反 3NF,采用反范式设计。为业务做出的妥协是可以理解的我推荐大家可以利用DDD领域驱动设计的维度去结合三大范式来进行库表设计,比如在订单领域,地址就可以是订单表的列,可以冗余。在用户领域,地址就应该是一个实体,可以进行增删改查和独立的业务意义,有完整的生命周期。简单来说,就是在用户领域,地址应该被设置成一个单独ID的表,而在订单领域,地址只是一个值对象(无生命周期,下单即固化,类似于快照)
2025-12-16 15:23:07
919
原创 一站式了解http1.1,http2.0和http3.0
好的,总结http1.1和http2.0的区别主要集中在四个点,协议格式,连接复用,头部压缩和服务器主动推送,主要的优化是集中在应用层的。我们可以先记住这四个点,随后就可以展开来讲,内容都非常好理解。特性HTTP/1.1HTTP/2.0传输格式纯文本二进制 (Frames)并发模型多个 TCP 连接,存在队头阻塞单 TCP 连接,多路复用Header纯文本,冗余传输HPACK 压缩推送能力无 (依赖资源内联等 Hack 手段)服务端推送安全性明文/TLS 均可事实标准要求必须基于。
2025-12-15 11:22:49
540
原创 一站式了解长轮询,SSE和WebSocket
特性Long Polling (长轮询)WebSocket通信方向双向 (伪)单向全双工协议HTTPHTTPTCP (经 HTTP 握手)数据格式任意文本 (UTF-8)二进制 / 文本开销高 (Header重复发送)低 (长连接)极低(轻量帧头)实现难度中等简单复杂浏览器限制无HTTP/1.1 限制 6 个连接无明显限制这三个知识点是后台面试经常问到的,如果你的简历经历是带有高性能网络通信服务器等背景的(IM)等等,那则是必须要会回答的❤️。
2025-12-14 19:28:12
542
原创 RocketMQ如何防止消息丢失?
好的我们从三个方面分层分析了RocketMQ是如何保证消息不丢失的。对于消息队列的这些消息问题,我们一般都是要从这三方面去考量噢,面试最好也是这样分层次给面试官回答,这样印象分会大大增加❤️。
2025-12-13 19:45:01
930
原创 JDK动态代理为什么基于接口而不基于类?
在面试中很多时候会回答到JDK动态代理的相关问题,那么我们都知道JDK动态代理是基于接口的,如果被代理类没有实现某个接口,则无法使用JDK动态代理,而只能选择CGLIB代理。那么JDK动态代理为什么得基于接口,而不能兼容基于类呢?下面我们一起来讨论一下这个问题。我们知道Java不支持多继承(不能同时继承两个类),而是能通过实现接口的方式实现多继承的这种形式。而这就是JDK动态代理基于接口,而不能基于类的原因。JDK 动态代理是通过 在运行期生成一个 “实现目标接口的类”,该代理类的父类始终是 ,不是你的目
2025-12-12 11:39:14
322
原创 分布式锁的常见实现方式
高并发、性能敏感强一致性、可靠性优先→ ZooKeeper 或 Etcd避免重复造轮子→ 优先使用成熟客户端(如 Redisson)注意锁的超时、可重入、死锁、续期等问题。
2025-12-11 14:13:41
654
原创 Spring AOP底层实现(面试版)
通过动态代理(JDK 或 CGLIB)在运行时为目标 Bean 生成代理对象,并在方法调用前后织入切面逻辑,从而实现非侵入式的功能增强。这种设计既保持了代码的清晰性,又实现了关注点分离,是 Spring 框架解耦思想的重要体现。
2025-12-10 15:33:50
975
原创 seata的JacksonUndoLogParser回滚SerialArray类型的序列化和反序列化解析
是 Seata 自定义的一个类(),用于封装 JDBC 中的。因为原生baseType:数组元素的 JDBC 类型(如:数组元素的 SQL 类型名(如"INTEGER"或"VARCHAR"elements:实际的数组元素(Object[]这样就能把数据库中的数组字段纳入 undo log,支持回滚。先自定义一个序列化器,继承,并重写里面三个方法。支持多态序列化当 Jackson 启用了(Seata 默认开启),会先写入类型标识(如@class字段)确保反序列化时能正确识别这是而不是普通 Map。
2025-11-16 21:41:49
1203
原创 一站式了解SPI机制
Java 的 SPI(Service Provider Interface)机制,这是 Java 提供的一种服务发现机制,用于实现模块化设计和插件化扩展。是 Java 提供的一种为某个接口寻找服务实现的机制。通俗点说,就是一种“面向接口编程 + 动态加载实现类”的机制例如,MySQL 驱动以及其他数据库驱动(如 PostgreSQL 等)确实利用了 Java 的 SPI机制来实现 JDBC API 中定义的标准接口,并提供具体的驱动实现。
2025-06-28 15:08:07
1121
原创 一站式了解双亲委派机制
双亲委派机制是Java虚拟机(JVM)中的一种类加载机制,用于确保类的加载过程的安全性和一致性。其解决的核心问题是一个类到底是由谁来加载的问题。简单点来说,就是类加载器要进行加载类任务时,首先会自底向上查找该类是否被加载过,再由顶向下进行加载。自下向上查找是否有加载过就可以避免重复加载问题,加载过就直接返回。如果该类没有加载过,就由最上方的加载器开始判定该类是否在加载目录中,如果不是就让下一个进行加载创建一个自定义类加载器并重写方法,可以直接控制类的加载过程,从而打破双亲委派机制。
2025-06-27 15:37:51
2205
原创 一站式讲解Java类的生命周期
这就是Java类的生命周期相关内容了如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-26 14:41:48
794
原创 一站式了解RocketMQ如何解决消息堆积问题
解决消息堆积问题常用方法就是上面说的这些啦,当然从RocketMQ仪表盘监测消息消费情况也是很重要的如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-24 14:17:51
1293
原创 一站式了解RocketMQ如何实现顺序消息
RocketMQ中的顺序消息分为全局顺序消息和分区顺序消息。这就是RocketMQ实现顺序消息的解析如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-23 15:16:32
1095
原创 一站式了解CDN
Nginx更侧重于作为高效的Web服务器或反向代理服务器,可以直接处理静态资源请求,也可以配置缓存策略减轻后端服务器的压力。CDN则专注于在全球范围内优化静态资源的分发,通过利用其广泛的节点网络减少延迟,同时也能有效分散源站的负载压力。两者可以结合使用,例如,Nginx可以作为源站服务器处理动态请求和部分静态资源,而CDN则用来加速静态资源的全球分发和服务,以此达到最佳的性能和可靠性这就是相关CDN的解析如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-22 14:16:01
1112
原创 一站式了解责任链模式
上面说了这么多,那么责任链模式定义到底是什么呢?责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。请求沿着一条链传递,直到有一个对象处理它为止。这就是责任链模式的解析,我们下次再见。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-21 13:51:15
1363
原创 一站式了解单例模式
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。使用单例模式的场景有哪些呢?数据库连接池日志记录器(Logger)配置管理器线程池缓存服务这些对象只需要一个实例,避免重复创建造成资源浪费或状态不一致。这就是单例模式的解析,我们下次再见。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-11 12:35:09
608
原创 面试官拷打我线程池,我这样回答....
方法是否推荐说明实现接口推荐灵活、可控,适合生产环境使用 Guava 的推荐更加简洁,依赖第三方库默认线程工厂不推荐名称不直观,不利于排查问题对Java线程池的理解和使用,是每位Java程序员的必备技能。这是后端面试常问的问题,建议各位结合自己的项目进行回答,面试官问你的优化方法也可以有更多的思路。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-10 12:43:59
1175
原创 面试官问:Redis和MySQL数据一致,为什么还需要MySQL?
上面的叙述说明,真正的业务,像MySQL一样的关系型数据库和像Redis一样的分布式缓存并不是互相矛盾,互相排斥的,而是相互互补,相互合作的关系。两者有各自的优点,可以根据具体业务结合来使用。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-09 08:00:00
932
原创 想为Seata社区进行贡献?这几点你需要了解
这就是一些进行seata开源时会踩到的一些坑,希望对你有所帮助。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-08 08:00:00
633
原创 面试回答喜欢用构造器注入,面试官很满意...
虽然说构造器注入十分推荐使用,但还是要具体情况具体实践,因为构造器注入也有其不足之处,比如要可选依赖时,这种情况更适合使用 setter 注入。如果依赖过多,构造器参数列表会变得冗长,影响可读性等问题,也可以尝试用字段注入或者Builder模式优化。总之一句话,具体情况具体实践!如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-07 08:00:00
686
原创 面试官问我:库存预扣减之后,用户订单超时之后怎么补偿库存?我的方案让他满意...
实际业务不一定要按照上面的方案执行,可以根据实际来组合使用(●’◡’●)。如果你有更多方案或者文章中有错漏之处,请在评论区提出帮助笔者勘误,祝你拿到更好的offer!
2025-06-06 07:00:00
2305
原创 一站式了解本地缓存Guava(内含面试点)
在后端开发中或者面试中,我们经常会谈到多级缓存这个概念,那么这里就要来说一说缓存的分类了。缓存分为本地缓存和分布式缓存(数据库缓存已经被废弃了),本地缓存常见的有Guava,Ehcache,Caffeine,分布式缓存常见的有Redis,Memcached。那么我们今天主要来聊聊本地缓存Guava。
2025-06-05 08:00:00
2456
原创 一站式了解CompletableFuture的用法基础(保姆版[特殊字符])
在后端开发中,我们经常会使用线程池来异步执行任务,但是如果要进行异步编排任务可犯了难。线程池可不能按照一定顺序来执行相应任务,所以今天我们来讲讲Java8引入的,位于`java.util.concurrent`包下的CompletableFuture。
2025-06-04 08:00:00
1265
原创 一站式了解BASE理论
由于CAP理论的严格性,我们急需一种构建高可用,可扩展的分布式互联网应用的指导原则,于是出现了BASE理论。BASE理论强调系统的可用性和最终一致性,而不是强一致性。下面让我们一起了解一下
2025-06-02 13:21:11
678
原创 ACID是什么?在InnoDB中如何实现的?
ACID是数据库管理系统(DBMS)为了确保事务处理可靠而必须具备的四个基本属性的缩写。原子性(Atomicity):指整个数据库操作要么全部完成,要么全部不进行。如果在操作过程中发生了错误,那么所有已经执行的操作都会被回滚到操作前的状态,就像这些操作从未发生过一样。一致性(Consistency):确保数据库从一个一致状态转换到另一个一致状态。这意味着事务必须将数据库从一种有效状态带到另一种有效状态,不能违反任何完整性约束条件。隔离性(Isolation)
2025-06-01 14:45:17
972
原创 你真的懂得 & ,&&和 |,|| 吗?
平时在后端开发或者在做算法题中,我们经常用到&,&&和|,||这两个符号,但是你真的了解清楚这四个符号的作用和误区了吗?本文带你一站式搞懂。
2025-05-29 13:55:52
549
原创 一次关于Nacos配置中心的问题记录与解决
报错一:Unable to load config data from nacos;报错二:No spring.config.import set;这里有解决方法
2025-05-28 15:00:50
1678
原创 一站式解决Redis缓存三问题
如今互联网开发,多用Redis作为缓存,为数据库分担访问压力。使用缓存也是设计一个高并发,高可用的系统的必备选项。但是使用缓存也带来了一系列问题,增加了系统的复杂度和维护难度,给后端开发人员带来了不少的挑战。常见的问题有如何保证缓存与数据库数据的一致性,缓存三问题等。我们今天就来聊聊如何解决Redis的缓存三问题。
2025-05-27 14:29:29
843
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅