<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[noitcivnoc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/noitcivnoc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; noitcivnoc]]></copyright><item><title><![CDATA[Linux学习笔记——grep]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/164195762</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/164195762</guid><author>noitcivnoc</author><pubDate>Tue, 01 Sep 2026 19:16:09 +0800</pubDate><description><![CDATA[页面报错 → F12看失败请求 → 找 requestId → grep 日志定位问题。记忆：-i ignore 忽略大小写 ERROR、error、Error等都可找到。记忆：-r recursive  递归搜索目录及其子目录中的文件。记忆：-C  context  显示命中行上下文。grep 用来在文件中搜索包含指定内容的行。记忆：-n  number 显示行号。记忆：-v 反选  显示没有匹配的行。-rin表示 -r -i -n。-i   → 忽略大小写。-n   → 显示行号。]]></description><category></category></item><item><title><![CDATA[单例模式学习笔记]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/159388755</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/159388755</guid><author>noitcivnoc</author><pubDate>Mon, 23 Mar 2026 17:27:13 +0800</pubDate><description><![CDATA[一个类只能有一个实例，并提供全局访问点。有些东西，真的只需要一个。比如配置管理器、线程池、数据库连接池，或者你的日志记录器。在编程里，如果我们不小心 new 出多个实例，可能就会造成资源浪费、状态混乱，甚至程序崩溃。单例模式就是用来避免这种情况的。提示：以下是本篇文章正文内容，下面案例可供参考单例模式的核心就是“保证唯一”。选择哪种实现方式，取决于对延迟加载、线程安全和防反射的要求。简单场景：饿汉式。懒加载 + 线程安全：静态内部类。绝对安全：枚举。]]></description><category></category></item><item><title><![CDATA[线程池保姆级教程：从零开始彻底搞懂它]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/159020176</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/159020176</guid><author>noitcivnoc</author><pubDate>Sat, 14 Mar 2026 00:51:14 +0800</pubDate><description><![CDATA[今天我们要一起学习一个在并发编程中非常重要且实用的概念——线程池。这篇教程是专门为零基础的同学准备的，请放心食用！重点：用 ThreadPoolExecutor 自定义线程池，不用 Executors。线程池是并发编程中非常实用的一把利器，掌握了它，我们就能更高效地处理多线程任务，同时避免资源耗尽的风险。希望这篇保姆级教程对你有所帮助。如果你有任何疑问，欢迎在评论区留言，我们一起讨论。编程路上，我们一起加油！]]></description><category></category></item><item><title><![CDATA[解决IDEA Maven报错：从「内置」到「本地」的完整切换]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158694062</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158694062</guid><author>noitcivnoc</author><pubDate>Thu, 05 Mar 2026 14:31:41 +0800</pubDate><description><![CDATA[摘要：IDEA使用内置Maven时因修改settings.xml失败导致依赖报错。问题根源是IDEA仍使用内置Maven而非本地配置。解决步骤：1)下载本地Maven；2)在IDEA设置中修改Maven home path为本地路径；3)刷新项目。最终成功加载依赖，建议避免修改内置文件。该问题排查耗时2小时，关键点在于检查Maven home path设置。（149字）]]></description><category></category></item><item><title><![CDATA[从零开始：用Java写一个简单的菜品管理系统]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158584186</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158584186</guid><author>noitcivnoc</author><pubDate>Tue, 03 Mar 2026 16:50:08 +0800</pubDate><description><![CDATA[在Java学习过程中，编写一个简单的管理系统是一个很好的练手项目。今天我们就来分享一个基于控制台交互的菜品管理系统，它包含了菜品的增删改查、动态数组扩容等基本功能，非常适合初学者理解面向对象编程、数组操作以及用户交互的设计思路。通过这个小项目，我们实践了Java面向对象编程的基本思想，掌握了数组操作、用户交互、字符串处理等实用技能。初学者可以以此为基础，逐步完善功能，甚至尝试加入GUI界面或数据库连接，向更完整的项目迈进。希望这篇博客对正在学习Java的你有所帮助！]]></description><category></category></item><item><title><![CDATA[Git 安装保姆级教程（一）：从零开始，手把手教你搞定版本控制]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158537842</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158537842</guid><author>noitcivnoc</author><pubDate>Sun, 01 Mar 2026 15:15:57 +0800</pubDate><description><![CDATA[Git 是目前最流行的版本控制工具，它可以帮你记录代码的每一次修改，让你随时回到历史版本，还能方便地和别人协作开发。无论你是写 Java、Python 还是前端代码，学会 Git 都是程序员的基本功。本教程将带你从零开始，一步步完成 Git 的下载、安装、配置，并简单演示如何使用。跟着做，保证你能成功！恭喜你！跟着本教程一步步操作，现在 Git 已经成功安装在电脑上了。🎉 这是我们踏入版本控制世界的第一步，也是成为专业开发者不可或缺的技能。]]></description><category></category></item><item><title><![CDATA[LeetCode 11：盛最多水的容器——双指针法的完美应用]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158224012</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158224012</guid><author>noitcivnoc</author><pubDate>Fri, 20 Feb 2026 01:09:56 +0800</pubDate><description><![CDATA[在计算机科学的世界里，有些问题看似简单，却蕴含着深刻的算法思想。LeetCode 第 11 题「盛最多水的容器」便是这样一道经典题目。它以一个直观的生活场景——选择两根柱子构成容器盛水——作为切入点，考察我们对数组操作、数学建模以及算法优化的综合能力。LeetCode 11 题是一道非常经典的双指针入门题，它简洁而优美地展示了如何通过数学推理优化算法。]]></description><category></category></item><item><title><![CDATA[LeetCode 283. 移动零 —— 双指针法的巧妙应用]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158184185</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158184185</guid><author>noitcivnoc</author><pubDate>Thu, 19 Feb 2026 00:14:52 +0800</pubDate><description><![CDATA[在 LeetCode 上，第 283 题「移动零」是一道非常经典的数组操作题。它看似简单，但考察了我们对数组元素移动的理解，以及对双指针技巧的掌握。本文我们将从暴力解法一步步优化到最优的双指针解法，并深入解析每一步的原理，彻底掌握这道题。原地操作：不允许使用额外数组，只能在原数组上修改，这就要求我们掌握覆盖、交换等基本操作。保持相对顺序：非零元素的顺序不能改变，这意味着我们不能简单地排序或随意移动，必须按原序处理。]]></description><category></category></item><item><title><![CDATA[LeetCode 128：最长连续序列 —— 一次遍历，O(n) 找出最长“连号”]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158102901</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158102901</guid><author>noitcivnoc</author><pubDate>Sun, 15 Feb 2026 23:12:23 +0800</pubDate><description><![CDATA[在 LeetCode 上，第 128 题「最长连续序列」是一道非常经典的算法题，它不仅考察了对数组的灵活处理，更重要的是要求我们在 O(n) 的时间复杂度内解决问题。我们初次接触可能会想到排序，但排序的时间复杂度是 O(n log n)，不符合题目要求。那么如何做到 O(n) 呢？今天我们就来详细拆解这道题的解法，从预备知识到代码实现，彻底掌握它。这道题的精髓在于利用哈希集合的快速查找特性，并结合“只从起点开始统计”的策略，巧妙地避开了排序带来的额外时间开销。]]></description><category></category></item><item><title><![CDATA[LeetCode 49：字母异位词分组 —— 从零开始，彻底吃透这道经典题]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158020294</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158020294</guid><author>noitcivnoc</author><pubDate>Fri, 13 Feb 2026 01:08:24 +0800</pubDate><description><![CDATA[LeetCode 49 题是哈希表专题的经典入门题，解法清晰、代码简洁。把它完全搞懂，不仅能帮我们通过这道题，更能让我们理解“如何将现实问题转化为程序逻辑”的基本方法。这段代码虽然短，但包含了 哈希表、排序、集合转换 等多个知识点。getOrDefault 是让代码更简洁优雅，但不是必须的。核心是找到一组数据的共同标识，这是哈希表分组的通用思想。以后再遇到“根据某个特征分组”的题（比如按频率、按长度、按奇偶），我们就能马上想到用 HashMap 了！]]></description><category></category></item><item><title><![CDATA[LeetCode 1. 两数之和 —— 从暴力破解到哈希表，彻底搞懂 HashMap]]></title><link>https://blog.youkuaiyun.com/noitcivnoc/article/details/158010450</link><guid>https://blog.youkuaiyun.com/noitcivnoc/article/details/158010450</guid><author>noitcivnoc</author><pubDate>Thu, 12 Feb 2026 19:03:54 +0800</pubDate><description><![CDATA[这是 LeetCode 的第一题，也是无数算法学习者梦开始的地方。它看似简单，却隐藏着数据结构中最重要的思想之一：空间换时间。哈希表到底是怎么建立的？为什么它能“瞬间”找到我要的值？Java 里为什么不能写 hashmap[nums[i]] = i？先判断，后插入—— 避免使用同一个元素两次。哈希表的键是数组元素的值，值是下标—— 不要搞反。Java 不能用 [ ] 操作 HashMap—— 记住用 put 和 get。]]></description><category></category></item></channel></rss>