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

再看《肖申克的救赎》,我才真正明白了人为什么要读书

《肖申克的救赎》用安迪在监狱中的经历阐释读书的意义:丰富的知识让他在绝境中找到自救的工具,利用金融、地质、法律等学识赢得尊重、获取资源,最终凿通地下通道逃离牢笼。书籍提供答案、拓宽认知、抵御体制化,让人即使身处囚禁也能保持精神自由。作者借此指出,人生每一次阅读都是为未来埋下的“彩蛋”,没有白读的书,只有在关键时刻绽放的力量。

自定义持久层框架(仿MyBatis)

本文介绍了一个仿 MyBatis 的持久层框架实现思路。首先在使用端准备 sqlMapConfig.xml(存放数据源)和 Mapper.xml(定义 SQL 与唯一标识),并建立实体类。框架端通过 Resources 将配置文件读取为流,使用 dom4j 解析后封装到 Configuration(保存 DataSource 与 Map\<statementId, MappedStatement\>)和 MappedStatement(保存 id、resultType、parameterType、sql)中。SqlSessionFactoryBuilder 负责构建 Configuration 并生成 DefaultSqlSessionFactory,openSession() 返回 SqlSession 实例,提供 selectList、selectOne 等 CRUD 方法,内部基于 JDBC 完成数据库操作。整体采用 Builder、Factory、Proxy 等设计模式,并给出完整的 Maven 依赖、数据库建表脚本及代码示例,展示了从配置解析到会话执行的完整流程。

插入排序

插入排序将数组划分为已排序区和未排序区,逐个取出未排序首元素并在已排序区找到合适位置插入。实现思路是遍历数组,用临时变量保存待插入值,向左移动比它大的元素,直至定位插入点。代码示例展示了每轮的数组变化。优化措施是在遇到比待插入小的元素时立即停止比较,并直接移动而非交换。插入排序是稳定算法,最坏时间复杂度为O(n²),在近乎有序的情况下可降至O(n)。

5. 最长回文子串

本文介绍了求解“最长回文子串”问题的实现思路与代码。给定字符串 s,要求在其中找出最长的回文子串。核心算法采用中心扩展法:遍历可能的回文中心(包括字符本身和字符间的空隙),分别向左右两侧扩展,只要左右字符相等即继续扩展,并记录长度最大的子串。代码实现中,循环遍历 2·len‑1 个中心位置,通过 left、right 指针进行扩展比较,最终返回最长回文子串 result。示例输入 "babad"、"cbbd"、"a"、"ac" 均得到正确输出。

LinkedList常用API详解

本文系统梳理了 Java LinkedList 常用 API 的功能与实现细节,重点包括:peek/peekFirst/peekLast 用于获取头、首、尾元素但不删除;poll/pollFirst/pollLast 用于获取并删除相应元素;offer/offerFirst/offerLast 用于在链表尾部、头部或末尾插入新元素。文中通过示例代码演示了这些方法的调用顺序及运行结果,直观展示了 LinkedList 在元素访问、删除和添加方面的行为,帮助读者快速掌握其常用操作。

647. 回文子串

本文介绍了 LeetCode 647 “回文子串”问题:统计字符串中所有回文子串的数量,子串位置不同即视为不同。通过中心扩展法遍历 2·n‑1 个可能的中心,分别向左右扩展,只要左右字符相等即计数并继续扩展,最终返回计数结果。代码实现简洁,时间复杂度 O(n²),空间复杂度 O(1)。

322. 零钱兑换

本文介绍 LeetCode 322 “零钱兑换”问题:给定硬币面额数组和目标金额,求凑成该金额的最少硬币数,若不可达返回‑1。实现采用自底向上的动态规划,创建长度为 amount+1 的数组 target,初始化为 amount+1(视作不可达),target[0]=0。遍历每个金额 i,尝试所有硬币 coin,若 i‑coin≥0,则更新 target[i]=min(target[i], target[i‑coin]+1)。最终若 target[amount]仍为初始值则返回‑1,否则返回该最小值。代码示例展示了完整实现及测试用例。

1324.竖直打印单词

本文介绍了 LeetCode 1324 “竖直打印单词”题目及其 Java 实现。给定一个由空格分隔的字符串,要求按单词出现顺序垂直排列并返回字符串列表,列末尾不能有多余空格。实现思路:先用 `split(" ")` 将句子拆分为单词数组,遍历求出最长单词长度 `maxLength`;随后逐行(从第 0 行到 `maxLength‑1`)构建 `StringBuilder`,若当前单词在该行有字符则追加,否则追加空格。完成一行后从右向左寻找最后一个非空格字符,截取子串去除尾随空格后加入结果列表。代码示例包括 `printVertically` 方法及主函数演示。

集合工具类Collections详解

Collections 是 JDK java.util 包下的集合工具类,提供一系列静态方法,帮助对 List、Collection 等进行排序(reverse、shuffle、sort、swap)、查找(binarySearch、max、min、frequency)、填充(fill)等常用操作。它还能通过 synchronizedXxx 返回线程安全的包装集合,避免 ArrayList、HashMap 的并发问题;提供 empty、singleton、unmodifiable 等创建不可变集合的工厂方法;以及 addAll、disjoint 等实用工具。文章通过代码实例演示了这些方法的使用效果,并指出应深入源码了解实现细节,使用 Collections 能提升编码水平,避免自行实现低效代码。