自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 金审智控学习打卡:Java 17三大新特性讲解(Record、密封类、模式匹配)

Java 17的模式匹配是“表达式+类型判断+变量提取”的语法糖,解决传统instanceof需手动强转、代码冗余的问题,同时扩展到switch语句,支持类型、常量、空值多维度匹配,增加了代码的简洁性、安全性、灵活性和可读性。语法格式为,对象 instanceof 类型 变量名 [&& 附加条件],若对象为null直接返回false,匹配成功后自动绑定变量,附加条件为过滤逻辑,匹配成功后才执行,可不加。总结,Record能极大简化Java中数据类的开发,让开发者更聚焦于数据本身的定义,同时保证代码的。

2025-11-27 11:28:32 340

原创 TCP/IP协议栈IP报头介绍与版本号获取方式

摘要:该Java代码实现了一个IP报头解析框架,包含抽象基类IPHeader和IPv4/IPv6两个具体子类。抽象类定义了版本号、源/目的IP、转发控制等公共字段,子类分别实现了各自的解析逻辑。IPv4Header处理20字节基础报头,提取长度、协议等字段;IPv6Header解析40字节报头,获取流量类别、流标签等特性。工具类IPHeaderUtils提供版本检测和自动实例化功能,通过首字节识别IP版本并创建对应解析器。代码采用面向对象设计,通过继承实现多态解析,包含严格的数据校验机制。

2025-10-07 16:48:40 163

原创 MySQL数据库系统八股文(基础篇)

本文系统介绍了MySQL数据库入门必备的核心知识点。内容包括:1)MySQL关系型数据模型及其ACID特性;2)SQL语言的四大分类(DDL、DML、DQL、DCL);3)数据库三大范式;4)SQL语句执行流程;5)常用数据类型对比;6)关键语法区别(WHERE/HAVING、DELETE/TRUNCATE/DROP等);7)事务四大特性与隔离级别;8)索引类型及B+树优势。重点解析了CHAR/VARCHAR差异、count用法、主键/外键作用等高频面试问题,为初学者构建系统的MySQL知识框架。

2025-09-25 15:21:13 1161

原创 Java并行计算详解

本文深入探讨了Java并行计算的核心技术与实战应用。主要内容包括:线程基础实现方式(Thread类、Runnable接口、Callable接口)和线程池优化策略;线程安全与同步机制(synchronized、volatile及并发工具类);Fork/Join框架的分治策略和工作窃取机制;Stream API并行处理方法及优化原则。文章通过电商抢购、文件处理等典型场景示例,详细解析了并行计算在提升系统性能中的应用技巧,并给出性能优化建议,为开发者应对多核时代的性能挑战提供了实用指导。

2025-09-04 23:05:29 957 3

原创 数论之普通判别法、埃氏筛与线性筛的应用及其对比

质数筛选算法是数论中的重要课题。文章介绍了三种经典方法:普通判别法(O(√n)时间复杂度,适合单个数字判断)、埃氏筛(O(nloglogn)时间复杂度,适合中等规模筛选)和线性筛(O(n)时间复杂度,最优解)。通过具体算法实现和例题解析(如力扣2761、3618、2523题),对比了各方法的时空复杂度与适用场景。其中线性筛通过最小质因数优化避免了重复筛选,是大规模筛选的首选。文章还提供了算法模板和优化思路,帮助读者掌握从基础到高级的质数处理技术。

2025-08-16 16:10:31 868

原创 LRU缓存淘汰算法的详细介绍与具体实现

LRU(最近最少使用)缓存淘汰策略通过哈希表+双向链表实现O(1)时间复杂度操作。哈希表快速定位节点,双向链表维护访问顺序:最新访问节点置于头部,淘汰尾部最久未使用节点。实现时需处理get和put操作的边界条件:访问时移动节点至头部,插入时若容量不足则淘汰尾部节点。该策略贴合数据访问的局部性特点,广泛应用于操作系统、数据库缓存等场景,在空间有限时能高效保留高频访问数据。典型实现包含初始化缓存容量、节点删除/插入、数据查询更新等核心方法,通过虚拟头尾节点简化链表操作。

2025-08-01 23:27:30 1127

原创 # BFS算法例题讲解 #

本文介绍了广度优先搜索(BFS)算法及其在二叉树和矩阵问题中的应用。主要内容包括:1. BFS核心思想是逐层遍历,适合解决最短路径、层次遍历等问题;2. 通过LeetCode 102题演示二叉树层序遍历的实现,使用队列按层处理节点;3. 通过LeetCode 199题展示如何获取二叉树右视图,即每层最右侧节点;4. 通过LeetCode 542题讲解多源BFS在01矩阵中的应用,计算每个1到最近0的距离。文章详细分析了各题目的解决思路、代码实现和复杂度分析,帮助读者掌握BFS算法在不同场景下的应用技巧。

2025-07-18 17:33:31 996 1

原创 项目篇:手机号校验系统

本项目是一个基于MVC架构的手机号校验系统,主要功能包括: 系统架构 采用MVC设计模式,分为模型层(数据处理)、视图层(用户交互)和控制器层(业务逻辑) 核心功能 支持中国大陆及港澳台手机号校验 提供号码归属地查询和运营商识别 实现手机号脱敏处理(中间4位替换为*号) 支持批量文件处理和报告生成 技术特点 使用正则表达式进行号码格式验证 通过前缀匹配识别运营商和归属地 生成详细的校验报告(包含有效/无效号码统计) 支持报告文件保存功能 适用场景 用户信息管理系统 数据质量控制 批量号码校验场景 该系统实现

2025-06-05 17:49:46 728 1

原创 *** HashMap与Hashtable的经典区别与联系

摘要:HashMap与Hashtable在Java中都是哈希表实现,但存在关键差异:1)数据结构:HashMap采用数组+链表+红黑树(JDK8+),Hashtable仅数组+链表;2)线程安全:Hashtable通过synchronized实现线程安全,HashMap非线程安全;3)null支持:HashMap允许null键值,Hashtable禁止;4)扩容机制:HashMap双倍扩容(2^n),Hashtable双倍加1;5)索引计算:HashMap使用位运算,Hashtable采用取模;6)插入方式

2025-05-29 22:47:07 1040

原创 LeetCode好题分享:接雨水系列(面试高频题)

本文介绍了LeetCode中两道经典题目及其解法: 盛最多水的容器(第11题): 使用双指针+贪心算法 左右指针分别从数组两端向中间移动 每次移动较矮的指针以寻找更大面积 时间复杂度O(n),空间复杂度O(1) 接雨水(第42题): 介绍了三种解法: (1) 动态规划: 预处理左右最大高度数组 计算每个位置的水量差 时间复杂度O(n),空间复杂度O(n) (2) 单调栈: 维护递减栈来定位凹槽 计算中间柱子的储水量 时间复杂度O(n),空间复杂度O(n) (3) 双指针: 优化空间到O(1) 根据左右指针高

2025-05-24 14:45:19 1180

原创 LinkedList增删改查方法的源码详解

本文深入解析了Java中LinkedList的核心实现原理。首先介绍了其基于双向链表的数据结构,包含头尾节点指针和size计数。然后详细分析了关键操作:添加操作(尾部插入O(1)/指定位置插入O(n))、删除操作(按位置/元素删除O(n))、修改和查询操作(O(n)),以及队列/栈操作(poll/pop)。特别说明了节点链接的维护逻辑和二分遍历优化。最后通过表格总结了各操作的时间复杂度,指出LinkedList适合频繁增删但随机访问性能较差的场景,为开发者合理选择集合类提供了理论依据。

2025-05-13 14:51:26 1094

原创 ArrayList增删改查方法的源码详解

本文深入解析Java ArrayList核心实现机制。1)构造方法:使用DEFAULT_CAPACITY=10初始化容量,无参构造时指向空数组;2)动态扩容:按1.5倍增长(oldCapacity+(oldCapacity>>1)),使用Arrays.copyOf复制数据;3)关键操作:添加元素时检查扩容,指定位置插入需移动元素;删除操作涉及元素移位和置空;4)内存优化:trimToSize()释放多余空间,将数组缩容至实际元素数量。文章通过源码分析揭示了ArrayList高效的动态数组实现原理

2025-05-08 22:35:22 1207

原创 深入Java BigInteger:解锁大整数计算的无限可能(超详细版,带你秒懂)

摘要:本文介绍了Java中BigInteger类在处理超大整数计算中的应用。首先分析了传统数据类型的局限性,以及BigInteger通过动态数组实现任意精度运算的原理。然后详细讲解了类型转换方法、常用运算操作(加减乘除模比较),并通过三个算法题案例(蓝桥杯竞赛题和LeetCode路径问题)展示了BigInteger的实际应用场景。文章特别强调了BigInteger在密码学、科学计算等领域的价值,以及在解决大数阶乘、模运算等问题时的独特优势。最后指出虽然BigInteger功能强大,但在使用中仍需考虑性能因素

2025-04-28 20:00:22 912 6

原创 算法篇 :基于最大子序列和问题的深度思考与反复优化

本文探讨了最大子序列和问题的四种解法及性能分析。通过对比时间复杂度从O(N^3)到O(N)的四种算法,发现线性算法效率最优。重点介绍了暴力解法(O(N^3)、O(N^2))、分治策略(O(NlogN))和动态规划(O(N))的实现原理,其中动态规划仅需一次遍历,时空复杂度均为最优。实验数据显示,算法效率随输入规模增大差异显著,线性算法最适合处理大规模数据。该问题在金融分析、信号处理等领域有重要应用价值。

2025-03-18 19:53:37 1168

原创 Java :堆排序的实现(结尾附完整源码)

堆排序是一种基于二叉堆的高效排序算法,时间复杂度为O(nlogn)。其核心思想是将待排序数组构建成大顶堆,然后反复交换堆顶与末尾元素,逐步缩小堆范围并重新调整堆结构,最终实现有序排列。算法实现分为三个关键步骤:1)构建初始大顶堆;2)交换堆顶与末尾元素;3)调整剩余元素维持堆性质。主要优势包括原地排序(空间复杂度O(1))和稳定的性能表现。示例演示了将数组[3,8,6,9,2,1,5,4,7]通过堆排序变为有序序列的过程。

2025-03-10 18:28:57 690 2

原创 力扣:LCR 123. 图书整理 I

文章摘要:题目要求将链表形式的书单倒序排列。解法分两步:先遍历链表计算长度,再创建等长数组,倒序存储节点值。时间复杂度O(n)(两次线性遍历),空间复杂度O(n)(需存储结果数组)。该方法逻辑清晰,通过简单循环实现高效倒序,适合处理链表数据。示例输入[3,6,4,1]输出为[1,4,6,3]。

2025-02-20 17:23:59 812

原创 矩阵初步(Java语言实现)

本文介绍了矩阵的三种基本运算及其Java实现:1)矩阵加法要求同型矩阵对应元素相加;2)矩阵乘法要求前矩阵列数等于后矩阵行数,结果矩阵元素为行列点积之和;3)矩阵转置即交换行列位置。每种运算都给出了定义、实现思路和完整的Java类代码,包含参数校验、核心计算逻辑和输出方法。代码结构清晰,通过Matrix类封装了矩阵属性和运算方法,实现了矩阵的创建、运算和打印功能。

2025-02-09 16:41:07 524 1

原创 Java语言中的简单图形打印

本文介绍了两种图形输出题型的解法。题型一要求输出直角三角形,提供了两种思路:1)通过控制空格和星号的数量逐行打印;2)利用坐标关系判断星号位置。题型二要求输出菱形边缘,同样给出两种方案:1)将图形分为上下两部分分别处理,通过数学计算确定星号位置;2)将图形划分为四个象限,分别建立直线方程确定星号坐标。两种题型都提供了完整的Java代码实现,展示了不同的算法思维解决图形输出问题。

2025-01-14 13:13:37 1046 4

空空如也

空空如也

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

TA关注的人

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