- 博客(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关注的人
RSS订阅