36 归档分页
370 留言互动
4 核心专题

NC53 删除链表的倒数第n个节点

本文介绍了在单链表中删除倒数第 n 个节点的实现思路与代码。要求空间复杂度 O(1) 且时间复杂度 O(n)。采用快慢指针(双指针)技巧:先让快指针先前进 n 步,若此时已到链表末尾则删除头节点;否则同步移动快慢指针直至快指针到达末尾,慢指针的下一个即为待删除节点,将其跳过即可。文中给出完整的 Java 实现并说明了边界条件的处理。

NC52 有效括号序列

本文介绍了判断仅含 '('、')'、'{'、'}'、'['、']' 六类字符的字符串是否为合法括号序列的问题,要求时间、空间复杂度均为 O(n)。核心思路是使用栈:遍历字符时,遇左括号将对应的右括号压入栈;遇右括号时检查栈顶是否匹配并弹出,若不匹配或栈为空则返回 false。遍历结束后,栈为空即为合法序列。代码实现基于 Java 的 `Stack<Character>`,通过上述方式实现了 O(n) 的解法。

NC3 链表中环的入口结点

本文介绍了在长度不超过 10000 的单链表中检测环并找出环入口节点的方法。要求空间 O(1)、时间 O(n)。通过快慢指针判断是否存在环,若相遇则说明有环;随后让一个指针回到链表头,与相遇点同步前进,首次相遇即为环入口。代码实现包括 `hasCycle` 用于返回相遇节点,`EntryNodeOfLoop` 返回环入口,若无环返回 null。示例演示了有环、无环以及单节点环的情况。

NC22 合并两个有序的数组

本文介绍了在 NowCoder 上的 NC22 题目——将有序整数数组 B 合并到已预留足够空间的有序数组 A 中,使 A 成为整体升序。要求在 A 的前 m 位已有序,B 的前 n 位已有序,且不返回新数组,只需在原 A 中完成合并。文章给出示例说明输入输出,并提供了 Java 实现:使用双指针遍历 A、B,比较取较小元素填入新建的临时数组 sorted,遍历结束后将 sorted 内容拷贝回 A,实现了在 O(m+n) 时间、O(m+n) 额外空间下的合并。

NC4 判断链表中是否有环

本文介绍了判断单链表是否存在环的问题,要求空间 O(1)、时间 O(n)。通过 Floyd 快慢指针法实现:若链表为空直接返回 false;否则让快指针每次走两步、慢指针走一步,若两指针相遇则说明有环,遍历至末尾仍未相遇则无环。文中提供了题目描述、示例及完整 Java 实现代码。

Spring Boot IOC架构落地与最佳实践

Spring Boot IOC是微服务松耦合的基石,文章先阐述容器层次、启动流程及 Bean 的完整生命周期,推荐构造器注入并结合 @Profile、@Conditional 实现环境化配置。进一步解析单例、原型、请求等多种作用域及线程安全设计,展示工厂模式在多实现支付服务中的使用。最后介绍延迟加载、循环依赖处理及监控、健康检查等生产实践,提供落地指南与最佳实践。

Spring Boot AOP架构落地与最佳实践

Spring Boot AOP通过切面把日志、性能监控、权限校验等横切关注点模块化,提升代码可维护性。文章先介绍 AOP 基础概念及 Spring Boot 的自动配置方式,随后给出日志、性能、授权等实战切面实现示例,并演示自定义注解、ThreadLocal、CGLIB 代理等技术细节。最佳实践包括按功能划分切面目录、使用 @Order 控制执行顺序、优化切点表达式、防止性能损耗以及统一异常处理和缓存切面。最后结合分布式链路追踪和异步执行,提供在生产环境中落地 AOP 的完整方案。

从A标签跳转后JS失效?我踩过的坑和填坑方法

在博客列表页通过普通 `<a>` 跳转到文章详情时,页面加载正常但灯箱、复制按钮等 JS 功能失效,刷新或直接访问 URL 则一切正常。原因是浏览器在普通跳转时可能复用旧的 JS 环境或缓存页面,导致新页面的脚本未完整重新执行。临时解决办法是给链接加 `target="_self"`,强制完整加载;更根本的做法是改进 JS 初始化时机:在 `DOMContentLoaded`、`load`、`pageshow` 等事件中检查关键元素是否已出现,必要时使用 `setTimeout` 或 `Promise` 等方式等待后再调用 `initLightbox、initCopyButton` 等函数;文中还提供了基于 `PageManager` 的完整初始化管理器,能够在页面恢复、前进/后退等场景下安全重置并逐个等待所需元素。经验教训包括:不要盲目信任 `DOMContentLoaded`,要防御性地检查 DOM,了解浏览器缓存机制,并可考虑使用 `MutationObserver` 监听 DOM 变化。

OpenCodeAI 从入门到精通:全方位终端AI编程助手指南

OpenCodeAI 是面向终端的 AI 编程助手,采用本地客户端 + 云端模型服务的混合架构,能够读取、修改项目文件并在安全沙箱中执行操作,实现 AI 结对编程。文中详述了跨 macOS、Windows、Linux 的安装方法(Homebrew、Scoop、脚本、包管理器等),以及桌面版的图形化特性。随后提供 API 密钥获取、环境变量或配置文件安全存储的最佳实践,并给出国内模型(智谱 GLM、DeepSeek)以及多模型并存的配置示例。项目初始化通过 `opencode init` 自动生成上下文、忽略文件和模型偏好。核心功能以 Plan 模式为例,展示 AI 分析代码、制定实现计划、用户审查后执行的完整工作流,帮助完成如邮箱验证等复杂任务。全文覆盖概念、架构、安装、配置、使用全链路,帮助开发者快速上手并在命令行中高效利用 AI 编程。