自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Java基础之异常

异常是程序在编译阶段或运行阶段出现的非正常、不符合预期的情况。Java将所有程序错误、异常情况封装成异常对象,统一管理和处理。Throwable:所有错误、异常的顶层父类;Error:系统致命错误,不可处理;RuntimeException:代码逻辑问题,编译不校验,可选处理;受检查异常:外部资源问题,编译强制校验,必须处理。JDK 自带异常(如)无法覆盖所有业务场景(如余额不足、用户不存在),因此需自定义异常。

2026-05-14 09:45:01 86

原创 【JAVA】多线程的入门讲解

资源隔离:进程资源相互独立隔离;线程共享所属进程的全部资源,资源互通。开销成本:进程创建、切换、销毁成本极高;线程是轻量化单元,开销小、效率高。从属关系:一个进程至少自带一个主线程,线程无法脱离进程独立运行。通信方式:进程间通信复杂繁琐;线程可直接共享变量实现通信,简单高效。多线程并发是Java进阶的核心难点,吃透基础之后,大家可以继续深入学习JMM内存模型、AQS原理、锁优化、并发容器等高阶知识,循序渐进吃透整个Java并发体系!

2026-05-11 10:24:40 292

原创 Java IO流基础全面详解:字节流、字符流

IO是Input(输入)和Output(输出)的缩写,Java IO流是一套用于实现程序与外部设备之间数据传输的API体系。外部设备主要包含本地硬盘文件、内存、网络端口、控制台等,IO流的核心作用,就是搭建程序与这些外部设备之间的数据传输通道,完成数据的读取和写入操作。掌握Java IO流,核心只需把握三个核心要点:根据文件类型选择字节流或字符流,追求读写性能优先使用缓冲流,编码不一致出现乱码使用转换流。

2026-05-05 16:52:43 390

原创 [Java]Stream流

在Java开发日常工作中,集合遍历、数据筛选、字段转换、排序去重、统计分组是高频常见操作。在Java8之前,处理这类业务只能通过for循环搭配if判断完成,不仅代码冗余量大,嵌套层级多,后期维护和阅读都很不方便。Java8推出的Stream流式编程,结合Lambda表达式,以声明式编程模式处理集合数据。开发者只需定义数据处理规则,无需手动编写循环迭代逻辑,代码简洁紧凑,业务逻辑清晰直观。本文主要讲解Stream核心概念、常用中间操作和终端操作。

2026-04-25 20:29:11 375

原创 [Java]拓扑排序

在图论算法中,拓扑排序是专门针对有向无环图(DAG) 的经典算法,也是笔试、蓝桥杯、面试高频考点。大学选课:必须先修高数,才能修概率论;工程打包:Maven/Gradle 依赖加载顺序;任务调度:流水线任务先后执行顺序;编译原理:代码文件依赖编译顺序。给定一张有向图,若存在一个顶点序列,使得图中任意一条有向边u→v都满足:u 在序列中一定出现在 v 前面,该序列即为拓扑序,生成该序列的过程就是拓扑排序。关键前提只有有向无环图 (DAG) 才有合法拓扑序;

2026-04-16 08:17:45 365

原创 Java继承详解| 从基础到实战,吃透面向对象核心特性

作为Java面向对象编程(OOP)的三大核心特性之一(封装、继承、多态),继承是实现代码复用、简化开发、构建层次化类结构的关键。很多新手在学习继承时,容易混淆重写与重载、super与this的用法,也常常踩坑访问权限和构造器调用的问题。本文结合实例,从基础概念到实战细节,再到常见坑点,一步步带你吃透Java继承,适合Java初学者和需要巩固基础的开发者。简单来说,继承就是让一个类(子类/派生类)拥有另一个类(父类/基类/超类)的属性和方法,子类无需重复编写父类已有的代码,只需专注于实现自身的专属功能。

2026-04-12 16:54:37 377

原创 Java封装详解| 从原理到实战,吃透每一个核心要点

多数开发者对封装的理解局限于“private修饰属性+getter/setter方法”,这仅为封装的实现形式,而非本质。完整的封装需满足三个核心要点,缺一不可,是理解封装的关键:数据隐藏:隐藏对象的成员变量及内部实现逻辑(如辅助性私有方法),禁止外部类直接访问,避免外部代码随意篡改对象状态。此处的“隐藏”并非完全禁止访问,而是通过访问修饰符控制访问权限,实现合理的权限管控。

2026-04-05 17:35:43 383

原创 最小生成树:Prim和Kruskal算法

在学习算法前,我们必须先搞懂:到底什么是最小生成树?前置基础概念无向图:图中的边没有方向,顶点 A 到 B 和 B 到 A 是同一条边。连通图:图中任意两个顶点之间,都存在至少一条路径可以到达。带权图:每条边都有一个权值。树:连通且无环的图,n 个顶点的树,恰好有 n-1 条边。生成树是什么?一个带权无向连通图的生成树:包含图中所有的顶点只有 n-1 条边,保持图的连通性,且没有环。简单说:把图 “修剪” 成一棵树,保留所有顶点,不多不少刚好 n-1 条边。

2026-03-26 09:23:57 454

原创 C 语言算法:通俗易懂讲透单调栈

刷题的时候,我们经常遇到一类问题:找右边第一个比它大的数、求柱状图最大面积、接雨水。如果用双重循环暴力做,时间复杂度是 O (n²),数据一大就会超时。而 单调栈,就是专门解决这类问题的常用算法,代码不长、思路清晰,能把时间复杂度降到 O (n),在蓝桥杯、算法笔试里出现频率很高。这篇文章结合 C 语言代码,从原理、实现、例题、做题技巧四个方面,带你学好单调栈。简单说:栈里的元素,始终保持单调递增或单调递减。单调递增栈:从栈底到栈顶,元素越来越大单调递减栈:从栈底到栈顶,元素越来越小。

2026-03-22 13:08:08 425

原创 [C语言]背包问题:从原理到代码,吃透经典动态规划

背包问题作为动态规划的入门经典题型,万变不离其宗,核心都是在有限背包容量下,通过状态转移实现价值最大化。本文详解的01 背包、完全背包、多重背包,是最基础也最常用的三类模板,吃透三者的逻辑差异和代码写法,足以应对绝大多数背包类题目。01 背包是根基,每件物品仅可选一次,必须逆序遍历背包容量,避免重复选取;完全背包是延伸,物品可无限选取,只需将遍历顺序改为正序,其余逻辑与 01 背包完全一致;多重背包则是二者的结合,每件物品有固定选取上限,通过三层循环枚举数量,本质是带数量约束的 01 背包变种。

2026-03-15 16:34:53 407

原创 [C语言] 回溯算法的使用

回溯算法是一种基于递归的「试错 - 回退」算法,核心逻辑可以类比为走迷宫:当你走到死胡同时,不会继续往前,而是退回到上一个岔路口,选择另一条未走过的路继续尝试,直到找到出口或遍历完所有路径。所有回溯问题,都可以拆解为三个不可缺少的核心要素,这是解题的关键:路径(Path):已经做出的选择,也就是当前递归深度下,已经选好的元素集合(比如全排列中已经选好的数字)选择列表(Choice List):当前步骤中可以做出的选择(也就是还能选哪些元素)终止条件(End Condition):到达决策树底层,无法再

2026-03-08 16:44:57 377

原创 二叉搜索树详解:从原理到实战

核心定义二叉搜索树是一种有序二叉树,满足以下性质:左子树中所有节点的值 < 根节点的值右子树中所有节点的值 > 根节点的值左、右子树也必须是二叉搜索树关键特性中序遍历结果为升序序列查找、插入、删除操作的时间复杂度:O (h)(h 为树的高度)#include <stdbool.h> // 用于bool类型(C99及以上)// 二叉搜索树节点结构体int val;} TreeNode;// 新建节点(封装内存分配)

2025-12-14 17:36:40 405

原创 C 语言二叉树的深度搜索与广度搜索全解析

我们从二叉树的基础结构出发,详细讲解了深度优先搜索的前、中、后序遍历(递归 + 迭代)和广度优先的层序遍历,并通过 C 语言代码完成了实战实现。递归遍历:逻辑简洁,符合遍历定义,但递归深度过深时可能出现栈溢出;迭代遍历:通过栈(DFS)或队列(BFS)模拟递归过程,空间复杂度更可控;DFS:优先深探,前序关注根节点优先,中序对二叉搜索树有序,后序常用于子树相关操作;BFS:按层遍历,适合层级相关的问题(如求树的深度、找某一层的节点)。

2025-12-07 12:07:27 946

原创 C 语言前缀和与差分

前缀和数组pre_sum,其中pre_sum[i]表示原数组arr中前 i 个元素的和(注意:通常前缀和数组下标从 1 开始,避免边界判断)。公式推导差分数组diff,其中diff[i]表示原数组arr中arr[i]与arr[i-1]的差值(同样下标从 1 开始,diff[1] = arr[0],diff[i] = arr[i-1] - arr[i-2] for i>=2)。

2025-11-30 11:53:50 545

原创 栈和队列的互转

栈(LIFO:后进先出)和队列(FIFO:先进先出是两种核心线性数据结构,其互相转化的本质是通过 “结构组合” 或 “操作适配”,用一种结构的特性模拟另一种结构的核心行为。核心转化逻辑(本质)转化目标核心矛盾解决思路用栈实现队列栈→队列)栈 “后进先出” vs 队列 “先进先出”用队列实现栈(队列→栈)队列 “先进先出” vs 栈 “后进先出”单队列轮转:让队尾元素(最后入队)变队首(优先出队)(一)用栈实现队列入队栈(inStack):仅负责接收新元素(push操作);

2025-11-23 13:51:52 993

原创 C语言中滑动窗口的实现

定长 vs 不定长窗口对比特性定长滑动窗口不定长滑动窗口窗口大小固定(k)动态调整(扩张 / 收缩)指针移动left 与 right 同步移动right 扩张,left 按需收缩适用场景固定长度的子串 / 子数组问题满足条件的最长 / 最短子串问题核心操作加入右元素 → 移除左元素扩张 → 校验 → 收缩核心优化点复用窗口状态:避免每次重新计算子区间的总和 / 字符状态,降低时间复杂度。边界处理:注意 left 和 right 的取值范围,避免数组越界。

2025-11-23 11:44:27 891

原创 用数列和链表模拟栈和队列

在实现栈之前,我们先简单了解下栈是什么?栈是一种仅允许在一端(栈顶)进行插入(进栈)和删除(出栈)操作的线性数据结构,核心特性是“后进先出(LIFO,Last In First Out)”。核心关键点操作受限:仅栈顶可执行数据操作,另一端(栈底)固定不可直接访问。逻辑特性:最后进入栈的元素,会最先被取出(类似叠盘子,最后叠的先拿)。存储形式:可通过数组(顺序栈)或链表(链式栈)实现,本质是线性结构的受限应用。接下来将分别用数组和链表来实现栈。栈和队列是两种操作受限的线性数据结构。

2025-11-14 18:45:13 888

原创 链表的五种反转方法

栈辅助法就是利用了**“先进后出”**的特性,用空间换时间,先 push 整个链表,再 pop 整个链表,将链表反转。递归反转链表简单来说:从链表末尾开始,先搞定最后两个的反转,再一步步往前反转每个节点与它后面已反转链表的关系。链表的反转是链表使用的一个重要操作,接下来本文将介绍 5 种反转方法。遍历原链表时,先抓牢原链表的“下一个节点”(避免断链);新头前移到当前节点(新链表变长),原头后移继续处理。把当前节点“掰弯”,让它指向新头(接入新链表);指向原链表的尾节点(即反转链表的头节点)。

2025-11-13 09:29:45 828

原创 [C语言]文件操作

类别函数功能打开 / 关闭打开和关闭文件格式化读写格式化输入输出字符读写单个字符读写字符串读写字符串读写二进制读写二进制数据读写指针操作移动和获取文件指针位置。

2025-11-09 17:12:52 585

原创 【算法】二分法的详解

在C语言中,二分法是一种在有序数组中查找特定元素的高效搜索算法,核心思想是通过不断将搜索区间一分为二,逐步缩小范围,最终定位目标值。关键思想为:1. 数据必须有序(即单调)2. 每次寻找目标数据时更新边界(即不断一分为二)二分法是一种基于“缩小区间”的高效算法,核心逻辑是通过每次排除一半无效范围,将问题规模从 n 缩减到 log2核心特点前提条件:查找类:数据需有序(升序/降序);逼近类:函数需连续且区间两端值异号。时间复杂度: O(log n) (远优于顺序遍历的 O(n) )

2025-10-28 21:01:02 1335

原创 内存对齐和大小端储存的初了解

本文介绍了结构体(struct)和共用体(union)的内存特点。结构体各成员独立占用内存,存在内存对齐规则,总大小为各成员内存之和(含填充);共用体则是成员共享内存,大小为最大成员内存(需对齐)。还通过共用体示例演示了大小端存储的差异:大端存储高位字节在低地址,小端存储反之。例如数字0x1234,大端存储为0x12、0x34,小端为0x34、0x12。

2025-10-26 19:59:38 942

原创 格式规范与内存对齐

本文摘要: 代码规范方面,强调统一缩进(4空格或Tab)、命名规范(蛇形、帕斯卡等)、括号与空格使用规则(运算符前后加空格等)以及注释要求(单行//、多行/* */)。结构体和共用体内存管理上,结构体采用内存叠加与对齐,总大小为成员之和加填充;共用体共享内存,大小为最大成员尺寸。重点讲解了内存对齐规则:结构体成员需按自身大小对齐,整体需按最大成员对齐;共用体直接按最大成员对齐。通过示例说明了不同数据类型的对齐计算方式。

2025-10-26 17:39:15 911

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除