召田最帅boy

20.有效的括号

算法

本文介绍了判断仅含括号字符的字符串是否有效的问题。要求左括号必须被对应类型且顺序正确的右括号闭合。给出示例并说明输入长度上限为10⁴。解法使用栈:遍历字符,遇左括号压入对应的右括号,遇右括号时检查栈顶是否匹配并弹出,若不匹配或栈空则返回false。遍历结束后栈为空即为有效。代码实现简洁高效,时间复杂度 O(n),空间复杂度 O(n)。

1108. IP 地址无效化

算法

本文介绍了 LeetCode 1108 题 “IP 地址无效化”。要求将给定的有效 IPv4 地址中的每个点号(.)替换为字符串 “[.]”,返回处理后的结果。文中给出两例输入输出示范,并提供了 Java 实现:遍历地址字符,遇到 ‘.’ 时追加 “[.]”,否则直接追加原字符,最终返回构建的字符串。该解法时间复杂度 O(n),空间复杂度 O(n)。

遍历HashMap的几种方式及效率对比

Java

本文通过两套含100万条记录的HashMap(键为连续整数和等差数列)实验,对比了六种遍历方式的耗时。结果显示:①键值简单时查找更快;②在大数据量下,遍历key + value时使用entrySet(尤其for‑each)比keySet效率更高;③仅需value时直接遍历values最快;④在遍历key时,keySet的iterator 与 for‑each 性能相当,而entrySet 反而慢于keySet。综合建议:获取键值对优先使用entrySet,获取单纯值使用values,键本身简单时性能更佳。

面试现场【MySQL篇】

面试

文章介绍MySQL主从架构的概念、优势及应用,详细阐述基于 binlog 的复制流程及主从一致性保障,比较主主、主从、主备的区别,分析导致主从延迟的硬件、事务、网络等因素并给出相应优化措施,最后列举双机主备、一主一从、一主多从、MariaDB 多主集群以及基于中间件的高可用方案,帮助读者构建可靠的数据库高可用环境。

面试现场【JVM篇】

面试

本文系统梳理了 JVM 面试常见要点,包括运行时内存结构(程序计数器、虚拟机栈、本地方法栈、堆、方法区、直接内存),垃圾回收原理(引用计数、根可达、GC Roots 分类),四种引用类型,分代收集假设与记忆集,标记‑清除、复制、整理三大算法及 STW、Safe‑point、OopMap 的作用。随后简介了 Serial、ParNew、Parallel Scavenge、Parallel Old、CMS、G1 等主流收集器的特点与适用场景,并简述对象栈上分配、内存布局、类加载双亲委派等概念,为面试提供完整参考。

面试现场【综合篇】

面试

本篇面试指南围绕系统设计与实现展开,涵盖项目亮点、零拷贝原理、五大IO模型及NIO与多路复用区别、Future阻塞获取结果机制、ReentrantLock 与 synchronized 的实现与差异、AQS、乐观/悲观锁、Paxos 协议、B+树特性、TCP 拥塞控制、JVM 实践、数据库分库分表及其缺点、分布式事务(TCC)方案、RocketMQ 消息可靠性保证,以及常见算法题。通过概念阐释与实现细节,帮助读者系统复习面试热点。

Synchronized详解

Java

synchronized 用于对共享可变资源实现互斥访问,其本质是对象的 monitor 锁。JVM 将 synchronized 编译为 monitorenter/monitorexit 指令,进入对象的 Monitor 并在退出时释放。每个对象的 Mark Word 保存锁状态,锁可在无锁、偏向锁、轻量级锁和重量级锁之间单向升级;为降低竞争开销,JVM 进一步提供锁粗化、锁消除、偏向锁、轻量级锁、自旋等优化。通过这些机制,synchronized 在 JDK 1.5 以后已能与显式 Lock 的并发性能基本持平。

看一遍就理解:零拷贝详解

算法

零拷贝是一种 I/O 优化技术,避免 CPU 在用户态与内核态之间复制数据,从而减少上下文切换和拷贝次数。传统读写需四次切换、四次拷贝;零拷贝利用虚拟内存映射或 DMA 直接在内核缓冲区与网络/磁盘之间传输数据。实现方式包括 mmap+write、sendfile,以及支持 DMA scatter/gather 的 sendfile,后者实现真正的全 DMA 零拷贝。Java NIO 通过 MappedByteBuffer(映射 mmap)和 FileChannel 的 transferTo/transferFrom(封装 sendfile)提供相应 API,广泛用于 Kafka、RocketMQ 等高性能系统。

聊聊幂等设计

框架与微服务

幂等指一次或多次请求产生相同副作用,常用于防止超时重试导致的重复操作。为保证幂等,需要为每个请求生成全局唯一ID(如UUID、Snowflake),并在业务层通过唯一索引、主键冲突、状态机、独立防重表、token、悲观/乐观锁、分布式锁等八种方式实现过滤重复。接口超时可先查询结果或直接重试前提是下游提供幂等保障。文中还说明了 HTTP 方法的幂等性:GET、HEAD、OPTIONS、DELETE、PUT 为幂等,POST 不具幂等。