Java 基础核心复习笔记 (Day 05) —— Map体系深度解析
Java 基础核心复习笔记 (Day 05) —— Map 体系深度解析1. HashMap:王者归来HashMap 是 Java 中使用频率最高的键值对容器。理解它,是理解 Java 集合框架的关键。 1.1 底层结构 (JDK 1.7 vs JDK 1.8) JDK 1.7: 数组 + 链表。 Entry 数组。即使哈希冲突了,也只是拉一条链表。 缺点:如果黑客故意构造 hash 冲突,链表会变得无限长,查询退化为 O(n)。 JDK 1.8: 数组 + 链表 + 红黑树。 当链表长度 > 8 且 数组长度 >= 64 时,链表会转为 红黑树。 优点:查询效率从 O(n) 提升到 O(log n)。 🛠️ 图解:HashMap 内存结构 (JDK 1.8) 123456789101112 [Node[] table 数组] +-----+-----+-----+-----+Index: | 0 | 1 | 2 | ... | +--+--+--+--+--+--+-----+ ...
Java 基础核心复习笔记 (Day 04) —— 异常、反射与动态代理深度解析
Java 基础核心复习笔记 (Day 04) —— 异常、反射与动态代理深度解析1. 异常体系 (Exception Hierarchy)Java 的异常机制不仅是为了报错,更是为了让程序在出错时能“软着陆”。 1.1 核心图解:Throwable 家族123456789101112131415 [ Throwable ] / \ [ Error ] [ Exception ] | |OutOfMemoryError (Checked Exception)StackOverflowError |NoClassDefFoundError IOException ClassNotFoundException SQLException | [ RuntimeException ...
Vibecoding 实录:从本地实验到 GitHub 云端全自动化
Vibecoding 实录:从本地实验到 GitHub 云端全自动化前言:什么是 Vibecoding?在 2026 年,编程的 Vibe(氛围/直觉)变了。我们不再纠结于具体的语法细节,而是通过 OpenCode 这样的 AI Agent,将想法(Vibe)直接转化为现实。这篇笔记记录了我利用 Skills(本地技能)和 MCP(模型上下文协议)从零构建一个“赛博朋克 LeetCode 面试助手聊天室”的全过程。 📅 实验一:操控 AI 的“手” (Experiment A: Local Skills)核心工具:OpenCode (Model: Big Pickle) 今日目标:对项目进行全盘扫描与审计。 1. 执行指令 “请帮我扫描当前 chatroom 目录,读取 main.py 和 templates/index.html,分析代码行数并生成 project_structure.md。” 2. 实验成果 Skill 调用:AI 成功调用了文件读取与扫描技能。 代码统计:项目包含 6 个文件,总代码量 603 行。 main.py: 111 行 (FastA...
OpenCode (AI Agent) 实战全纪录:从入门到部署
OpenCode (AI Agent) 实战全纪录:从入门到部署日期: 2026年2月5日工具: OpenCode (CLI Agent)核心模型: Big Pickle (官方免费模型) / GLM-4.7目标: 零代码基础构建一个局域网即时聊天室 1. 工具背景 名称: OpenCode (opencode.ai) 定位: 开源 AI 编程 Agent,直接对标 Claude Code。 特点: 支持 CLI (命令行) 和 IDE 插件。 免费/低成本: 内置 Big Pickle、GLM-4.7 等免费模型,支持接入 DeepSeek。 Agent 能力: 能自动规划任务、创建文件、安装依赖、修复 Bug。 2. 安装与环境配置安装步骤使用 npm 全局安装: 1npm install -g opencode-ai 遇到的问题与解决方案问题 A: PowerShell 权限报错 现象: 提示 在此系统上禁止运行脚本。 解决: 修改执行策略。 1Set-ExecutionPolicy RemoteSigned -Scope Current...
Java 基础核心复习笔记day03
Java 基础核心复习笔记 (Day 03) —— 集合框架源码解析与实战1. 集合框架总览 (The Big Picture)Java 集合框架主要分为两大派系:Collection (单列集合) 和 Map (双列/键值对集合)。 1.1 List, Set, Queue, Map 的核心区别 接口 核心特性 典型实现 现实类比 List (列表) 有序、可重复 ArrayList, LinkedList 排队领号:有序号,张三可以领完再领一次。 Set (集合) 无序、唯一 HashSet, TreeSet 一袋弹珠:倒出来是乱的,且不能有两个完全一样的弹珠。 Queue (队列) 有序、先入先出 ArrayDeque, PriorityQueue 海底捞排队:先来的先吃,插队(优先级)看情况。 Map (映射) 键值对、Key 唯一 HashMap, TreeMap 字典/查户口:身份证号(Key)是唯一的,对应一个人(Value)。 1.2 集合框架继承关系全图12345678910111213141516171819202...
Java 基础核心复习笔记day02
Java 基础核心复习笔记 (Day 02) —— 面向对象与字符串深度(图形化版)1. 面向对象核心 (OOP Core)1.1 构造方法 (Constructor)构造方法是对象初始化的入口。 特点: 名字必须与类名完全一致。 没有返回值类型,连 void 都不能写(写了 void 就变成普通方法了)。 自动执行:new 对象时 JVM 自动调用。 🛠️ 图解:对象初始化流程 1234567891011121314151617用户代码: Dog myDog = new Dog("Buddy"); | +-----------------v-----------------+ | 1. 在堆内存开辟空间 (Heap Alloc) | +-----------------+-----------------+ | +-----------------v-----------------+ | 2...
Java 基础核心复习笔记day01
1. 核心概念与生态1.1 JDK, JRE, JVM 的包含关系大厂不仅仅问定义,更看重你对“运行环境”的理解。 123456789101112131415+--------------------------------------------------------------------------------+| JDK (Java Development Kit) || || +--------------------------------------------------------------------------+ || | JRE (Java Runtime Environment) | || | ...
数组技巧:前缀和 (Prefix Sum Algorithm)
在算法面试中,数组区间求和是一个非常高频的操作。如果仅仅使用暴力循环,当查询次数非常多时,程序很容易超时。 今天我们来学习一种**“空间换时间”**的核心技巧——前缀和(Prefix Sum)。它能将区间查询的时间复杂度从 $O(N)$ 降维打击到 $O(1)$,是解决子数组问题的“瑞士军刀”。 LeetCode 303. 区域和检索 - 数组不可变(Easy)题目链接:https://leetcode.cn/problems/range-sum-query-immutable/ 标签:数组 | 前缀和 | 设计 所属模块:数组技巧 最后复习日期:2026-02-01 1. 题目描述给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的和,其中 left <= right。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象。 int sumRange(int i, int j) 返回数组 nums 中索引 left 和...
双指针进阶:相向与扩散 (Opposite Direction & Center Expansion)
在攻克了 数组原地修改 (同向快慢指针) 之后,双指针算法还有两块重要的拼图:“左右指针”(相向而行)和 “中心扩散”(背向而行)。 这两类技巧常用于解决字符串反转、有序数组搜索以及回文串查找等问题,是字节跳动等大厂面试中极高频的考点。 LeetCode 83. 删除排序链表中的重复元素(Easy)题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 标签:链表 | 双指针 | 原地修改 所属模块:链表与双指针 最后复习日期:2026-02-01 复习次数:1 掌握程度:🌟🌟🌟(初次整理) 1. 题目描述给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 输入:head = [1,1,2,3,3] 输出:[1,2,3] 约束条件:链表长度范围 [0, 300],题目数据保证链表已经按升序排列。 2. 核心框架 / 套路归纳 这题本质是 同向快慢指针(Fast-Slow Pointers) 问题,是数组去重逻辑在链表...
Hexo 博客魔改每日记录-04:断舍离!拥抱 Hexo 7 原生图片渲染方案
前言: 做技术的都知道,依赖越少,系统越稳。之前为了让 Markdown 图片在本地和线上都能显示,我尝试了各种第三方插件,结果却陷入了“版本冲突”和“路径诡异”的泥潭。 既然我们已经升级到了 Hexo 7,为什么不利用它强大的原生能力呢?今天,我们彻底卸载冗余插件,回归官方原生的图片渲染方案。 一、 环境准备:清理与配置在开始写作之前,我们需要先调整好 Hexo 的“底层逻辑”,让它学会自己找图片。 1.1 第一步:卸载旧插件必须把那个坏掉的、或者引起冲突的老插件删掉,防止它干扰官方渲染器。 在博客根目录终端执行: 1npm uninstall hexo-asset-image 1.2 第二步:修改 _config.yml打开博客根目录下的 _config.yml,在相应位置修改或加入以下配置,开启官方渲染器的“资源文件夹”支持: 1234567# 1. 基础开关:让 Hexo 创建文章时自动生成同名文件夹post_asset_folder: true# 2. 渲染增强:告诉官方渲染器去同名文件夹找图marked: prependRoot: true postAsse...










