自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前缀和算法解析,一维前缀和|二维前缀和题目详细解析

本文详细解析前缀和算法,涵盖一维与二维前缀和的应用。一维前缀和通过预处理数组,将区间求和从O(n)优化至O(1),适用于频繁查询场景;二维前缀和则用于矩阵子区域求和,利用递推公式dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + arr[i][j]构建前缀和矩阵,并通过dp[x2][y2] - dp[x2][y1-1] - dp[x1-1][y2] + dp[x1-1][y1-1]快速计算子矩阵和。文中结合牛客题目,强调画图分析与边界处理(下标从1开始),

2026-11-02 22:24:22 142

原创 二分查找算法详细解析,一个模板直接秒杀!

本文深入解析二分查找算法,从基础原理到进阶应用,强调“二段性”是解题核心——只要能划分出满足与不满足条件的两部分,即可使用二分。文章通过力扣经典题目逐步讲解:从有序数组查值(基础二分),到查找元素首次与末次出现位置(进阶二分),重点剖析边界处理、mid计算方式(防溢出)、循环条件选择等易错点。总结高效模板,只需掌握关键逻辑,即可快速应对复杂变种题,提升解题效率与准确性。

2026-11-02 22:24:01 448

原创 Maven项目,仓库解析,第一个Spring项目

本文介绍了Maven作为Java项目构建工具的核心功能,重点解析了Maven依赖管理机制与仓库体系。通过pom.xml配置依赖坐标(groupId、artifactId、version),可一键导入JAR包,实现自动化依赖管理。文章演示了如何使用Maven中央仓库及阿里云镜像加速下载,并讲解了本地仓库的存储路径与配置方法。最后,结合Spring项目创建,展示了从依赖引入到服务器返回“hello Spring”的完整流程,帮助读者快速体验Spring框架的强大与便捷。

2026-10-29 22:04:16 372

原创 JavaEE进阶:前端基础快速入门

本文为JavaEE进阶专栏首篇,介绍JavaEE(现称Jakarta EE)的基本概念及其与JavaSE的区别。重点解析B/S架构与C/S架构的优劣,强调后端开发需掌握基础前端知识(HTML、CSS、JS)。通过表单标签示例,讲解<form>、method(GET/POST)、name与value属性的作用,说明数据提交机制及避免乱码的实践。最后简述CSS盒子模型,展示div元素的布局应用,为后续项目开发奠定基础。

2026-10-29 21:43:43 331

原创 JVM万字解析|跨平台原理、内存分布、类加载机制、双亲委派模型、垃圾回收机制

本文详解JVM的跨平台原理、内存分布(程序计数器、元数据区、堆、栈)、类加载与双亲委派模型,以及垃圾回收机制。通过对比C++编译直接生成机器码,Java借助JVM实现“一次编写,到处运行”,虽牺牲部分性能但极大提升开发效率。文中结合代码示例解析内存区域存储规则:局部变量在栈,实例成员在堆,静态成员与类信息存于元数据区,帮助开发者理解JVM底层运行机制。

2026-10-28 08:24:13 293

原创 HTTP(三):HTTPS 安全原理|对称加密、非对称加密、中间人攻击与数字证书

本文详解HTTPS如何通过对称加密与非对称加密结合,保障数据安全。针对密钥传输风险,引入非对称加密实现安全密钥交换;为防范中间人攻击,提出使用数字证书由CA机构认证公钥真实性,确保客户端获取的是可信服务器公钥,从而构建完整安全通信链路。

2026-10-28 08:23:55 116

原创 HTTP(二):万字解析HTTP交互的请求、响应报文格式

本文详解HTTP请求报文中的URL与Method,解析其组成结构及实际应用。URL包含协议、域名、端口、路径、查询参数(?后键值对)和锚点(#),用于定位资源并传递参数;查询字符串需进行URL编码以避免特殊字符干扰。Method中,GET用于获取资源,数据通过URL传递,无请求体;POST用于提交数据,常携带请求体(如上传文件),适合敏感或大量数据传输。结合Fiddler抓包实例,说明前端与后端问题排查的依据:请求错误→前端问题,响应错误→后端问题,显示异常→前端逻辑问题。

2026-10-27 09:01:50 334

原创 HTTP(一):Fiddler下载、抓包请求响应解析

本文介绍了HTTP协议的基本概念及其实现原理,重点讲解如何使用Fiddler抓包工具捕获和分析客户端与服务器之间的HTTP请求与响应。通过实例演示了清空列表、强制刷新以获取完整资源的过程,并解析了请求/响应报文的结构(首行、头、空行、正文),同时说明了浏览器缓存机制对资源加载的影响,以及数据压缩(如Brotli)在减少带宽消耗中的作用。适合初学者理解HTTP通信流程。

2026-10-27 09:01:35 214

原创 网络原理(五)数据链路层数据帧报文格式解析

本文介绍数据链路层的核心内容。数据链路层使用数据帧传输数据,包含源/目的MAC地址、类型字段(如0800表示IPv4)、数据部分(最大1500字节)及CRC校验。MAC地址为48位唯一标识,用于设备识别,常用于设备绑定。常见协议包括以太网(IEEE 802.3)和WiFi(IEEE 802.11)。文中详解了ARP(已知IP查MAC)与RARP(已知MAC查IP)机制,以及交换机通过自学习构建MAC转发表实现高效转发。

2026-10-10 08:28:10 217

原创 网络原理(四)网络层解析,IP报文结构、NAT机制、网段划分、路由选择详细解析

本文详解网络层核心协议IP的报文结构,涵盖版本、首部长度、TTL、源/目的IP等字段,并解析拆包与路由机制。重点介绍NAT(网络地址转换)技术如何解决IPv4地址枯竭问题:通过内网IP与公网IP共享,实现多设备共用一个外网IP。运营商路由器利用端口号维护映射表,区分不同设备通信,确保数据正确转发。同时说明了内网IP范围及实际应用中的连通性限制。

2026-10-10 08:26:04 1002

原创 网络原理(三)TCP通信十大核心机制解析

本文详解TCP的七大核心机制:滑动窗口(提升传输效率,支持快速重传)、流量控制(基于接收缓冲区大小调节发送速率)、拥塞控制(通过慢启动、拥塞避免等动态调整窗口大小)、延时应答(减少ACK泛滥,优化性能)、捎带应答、面向字节流及定时器管理。结合报文格式解析,全面揭示TCP如何在保证可靠性的同时实现高效通信。

2026-10-09 08:27:03 774

原创 网络原理(二)三次握手、四次挥手

本文详细解析TCP三次握手与四次挥手机制。三次握手确保双方通信链路畅通、发送接收能力正常,并协商起始序号,防止历史数据干扰;四次挥手则有序断开连接,因服务器处理逻辑可能延迟,难以合并中间两次交互。两者均为网络编程核心知识点,理解其原理对掌握TCP可靠性至关重要。

2026-10-09 08:25:30 340

原创 网络原理(一)应用层协议、DNS、传输层UDP/TCP报文格式解析

本文系统讲解网络原理中的应用层协议与传输层(UDP/TCP)报文格式。重点介绍自定义应用层协议的两大核心:通信信息与数据格式,对比行文本、XML、JSON、Protobuf四种格式优劣;深入解析UDP报文结构及其64KB长度限制、校验和机制及适用场景;详述TCP面向字节流特性、报文段首部结构、首部长度压缩设计及可靠性保障机制,强调其在高可靠性需求场景的应用。内容理论性强,适合作为面试与网络调优基础。

2026-10-07 21:37:53 331

原创 网络编程(二)TCP回显服务器与客户端通信详解

本文详解基于TCP协议的网络编程,介绍服务器与客户端的通信流程。核心类为ServerSocket(建立连接)和Socket(数据传输),采用字节流方式进行读写。通过accept()接收客户端连接,利用Scanner和PrintWriter简化输入输出操作,并结合try-with-resources自动释放资源。重点解析了多客户端处理、连接状态判断及数据响应机制,强调TCP的连接性与可靠性,适合初学者理解网络编程基础。

2026-10-07 21:36:29 213

原创 网络编程(一)UDP编程客户端/服务器代码详细解析

本文详解基于UDP协议的网络编程,涵盖客户端与服务器交互流程:创建DatagramSocket绑定端口,使用DatagramPacket封装数据报,实现发送与接收。重点解析数据报的构建、字符串与字节数组的转换,以及回显服务器的实现逻辑。强调UDP无连接、不可靠但高效的特点,适合初学者理解网络通信底层机制。

2026-10-06 10:46:26 240

原创 初识网络通信,网络发展背景,TCP/IP五层模型简介

本文为网络编程系列首篇,概述计算机网络发展史,从阿帕网到互联网普及,再到移动互联网兴起。解析核心概念:IP地址(设备唯一标识)、端口号(应用区分)、协议(通信规则)及五元组(通信关键信息)。介绍TCP/IP五层模型(物理层、数据链路层、网络层、传输层、应用层),并以快递类比各层功能,帮助理解分层设计思想,为后续编程实践奠定基础。

2026-10-06 10:40:22 388

原创 文件IO万字超详细解析,文件系统操作,字节流、字符流使用,文件搜索,文件复制解析

本文介绍了Java中文件IO的基础知识,涵盖文件路径(绝对路径与相对路径)、文件类型(文本文件与二进制文件)的区分,以及通过File类进行文件系统操作,如创建、删除、判断文件存在性等。重点讲解了字节流与字符流对文件读写的核心概念,强调理解路径表示及文件操作方法的重要性,适合JavaEE学习者掌握文件处理基础。

2026-09-17 10:37:51 552

原创 Java线程(八)JUC包中常用类的解析

Java并发编程工具类解析 本文介绍了JUC包中三个核心并发工具类的使用: Callable接口:与Runnable类似但支持返回值,通过FutureTask作为桥梁与Thread配合使用,可以获取线程执行结果。 ReentrantLock:可重入锁,相比synchronized需要手动释放锁,提供更灵活的锁控制,支持尝试获取锁(tryLock)和公平锁模式。 Semaphore信号量:基于计数器的资源管理工具,通过acquire/release方法控制资源访问,当资源耗尽时支持阻塞等待。 这些工具类解决了

2026-09-17 10:37:44 145

原创 Java线程(七):锁策略,锁优化策略,CAS解析

锁策略与优化机制解析 本文深入探讨了Java中的锁策略和优化机制。首先介绍了悲观锁与乐观锁的区别,悲观锁适用于高冲突场景,采用阻塞等待策略;乐观锁适用于低冲突场景,采用忙等自旋策略。随后阐述了重量级锁与轻量级锁的实现差异,以及公平锁与非公平锁的调度规则。文章还分析了可重入锁的特性、读写锁与互斥锁的区别。 在锁优化方面,详细讲解了JVM的锁升级机制(无锁→偏向锁→自旋锁→重量级锁)、锁消除和锁粗化等优化策略。特别强调了CAS(比较并交换)操作的原理及其在原子类实现中的应用。这些内容虽然偏理论,但在面试中经常考

2026-09-16 10:09:08 471

原创 Map&Set(三)哈希函数、哈希表原理、哈希表代码实现超详细解析

本文详解哈希表的底层原理,通过数组与哈希函数结合实现O(1)时间复杂度的增删查操作。重点解析哈希冲突的解决方式——开散列(链地址法)与负载因子控制,并结合代码模拟实现HashMap。同时介绍Java中HashMap的优化策略:链表转红黑树、动态扩容等机制,确保高效性能。适合数据结构学习者深入理解哈希表核心思想。

2026-09-16 09:42:26 272

原创 Map&Set(二),画图详解二叉搜索树的概念和实现代码

本文详解二叉搜索树(BST)的定义、特性及核心操作。二叉搜索树满足左子树所有节点小于根,右子树所有节点大于根,支持高效查找、插入与删除,理想时间复杂度为O(logN),最坏情况退化为O(N)。文中重点解析了删除操作的四种情形:无子节点、仅左子树、仅右子树、双子树,并结合代码实现详细说明。同时介绍了平衡二叉搜索树如AVL树和红黑树的应用背景,为后续进阶学习铺垫基础。

2026-09-15 12:12:02 43

原创 Map&Set(一)Map、Set使用,经典算法题目解析

本文介绍了Java中Set与Map的基礎用法。Set具有無序、去重、快速查找特性,常用實現類為HashSet與TreeSet;Map則存儲鍵值對(key-value),支持映射查詢,實現類為HashMap與TreeMap。兩者均基於哈希表或二叉搜索樹,適用於去重、查重、映射等場景,是算法面試高频考點。文中通過代碼示例演示了add、contains、remove、put、get等操作,並強調其無序性與唯一性特徵。

2026-09-15 08:51:54 147

原创 排序(二)堆排序|快速排序|归并排序 代码原理,非递归写法超详细解析

本文解析堆排序、快速排序与归并排序三大高效排序算法。堆排序基于大堆/小堆,通过建堆与逐次调整实现O(NlogN)时间复杂度,空间复杂度O(1),但为不稳定排序;快速排序采用分治思想,以Hoare法为例,通过双指针分区实现高效排序,平均时间复杂度O(NlogN),是面试高频算法;归并排序则通过分而治之稳定排序,适合大数据量场景。三者均优于基础排序,广泛应用于标准库中。

2026-09-14 12:28:17 202

原创 排序(一)基础排序,插入|希尔|冒泡|直接选择排序详解

本文介绍了四种基础排序算法中的插入排序与希尔排序。插入排序通过维护有序与无序区间,逐个将元素插入到合适位置,时间复杂度为O(N²),空间复杂度O(1),且可实现稳定排序。希尔排序是插入排序的优化,通过分组进行间隔排序(gap逐渐减小),提升效率,尤其在数据基本有序时表现更佳。两者均属内部排序,适合学习排序思维与面试考察。

2026-09-10 21:32:03 103

原创 堆的解析,堆和优先级队列的实现,比较规则制定

本文详解堆与优先级队列的原理及实现。堆是特殊的完全二叉树,分为大根堆和小根堆,通过数组存储,利用父子节点下标关系(左子:2parent+1,右子:2parent+2)高效操作。优先级队列基于堆实现,支持快速插入(offer)和删除最小/最大元素(poll)。核心操作为“向下调整”,从最后一个非叶子结点开始,自后向前调整,确保堆性质。代码实现中,shiftDown方法通过循环比较并交换子节点,最终构建出完整堆结构,时间复杂度为O(n),适用于高效排序与任务调度等场景。

2026-09-10 21:31:11 396

原创 二叉树(四)经典算法题目解析,公共祖先,二叉树构造,非递归遍历

本文解析二叉树7道经典算法题,重点剖析“最近公共祖先”与“根据先序、中序构造二叉树”。前者通过递归判断结点在左右子树的分布,结合返回值逻辑修正错误,实现高效求解;后者利用前序确定根节点,中序划分左右子树,配合双指针控制区间范围,递归构建完整二叉树。题目难度较高,需深入理解递归思想与边界处理,适合进阶练习,提升二叉树综合解题能力。

2026-09-09 21:06:31 424

原创 滑动窗口算法详细解析(8道经典题目)

本文详解滑动窗口算法,通过8道递进题目帮助读者掌握其核心思想。以“长度最小的子数组”为例,对比暴力解法与滑动窗口优化:利用同向双指针,通过“进窗口、判断、出窗口、更新结果”四步循环,实现O(n)时间复杂度。关键在于right不回退,sum通过减去出窗元素快速更新。后续题目如“无重复字符的最长子串”进一步结合哈希表实现高效去重。建议先独立思考再参考代码,提升算法实战能力。

2026-09-09 21:05:58 810

原创 二叉树(三)经典算法题目解析,子树判断,平衡、对称、翻转、遍历二叉树

本文解析了7道经典二叉树算法题,涵盖相同树、子树判断、翻转二叉树及平衡二叉树等核心问题。通过递归思想实现,强调画递归调用图辅助理解。代码均以Java编写,注重逻辑清晰与边界处理,适合初学者掌握二叉树递归解题技巧。

2026-09-08 17:37:20 240

原创 二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树

本文详解二叉树基础操作的递归实现,涵盖结点个数统计、第k层结点数计算、树高求解及结点查找等核心功能。重点剖析了递归思路与常见错误(如局部变量重置问题),推荐使用返回值累加的方式避免状态污染,确保多次调用正确性。代码基于Java,结构清晰,适合数据结构初学者掌握递归思想与二叉树遍历技巧。

2026-09-08 17:36:32 428

原创 二叉树(一)树结构基础,先序、中序、后序遍历代码,规律详细解析,看完包懂!

本文系统讲解树结构与二叉树基础,涵盖树的定义、性质(如度、深度、叶子结点等)、表示方法(孩子表示法为主)及二叉树类型(满二叉树、完全二叉树)。重点解析二叉树的三种遍历方式:先序、中序、后序,均基于递归实现,结合代码示例清晰展示遍历逻辑,适合数据结构初学者掌握面试高频考点。

2026-09-07 21:19:00 411

原创 队列的使用,基于数组和基于链表的模拟实现,题目练习

本文介绍了队列的基本概念、特点(先进先出)及两种底层实现方式:链表和数组。通过Java代码模拟实现自定义队列,分别使用链表实现尾插头删的入队与出队操作,并基于数组的ArrayDeque讲解高效队列应用。结合算法题练习,帮助读者掌握队列的核心操作(offer/poll/peek)与实际应用场景,适合数据结构初学者系统学习。

2026-09-07 21:18:29 256

原创 栈的使用、模拟实现、相关经典算法题详细解析

本文详解栈的数据结构及其在Java中的应用,介绍栈的三大核心操作(入栈、出栈、取栈顶),并通过标准库Stack类演示使用方法及异常处理。文章还通过模拟实现自定义栈,展示数组扩容、入栈出栈逻辑,并结合典型算法题分析出栈序列的合理性,帮助读者深入理解栈的特性与应用场景。

2026-09-06 10:21:53 286

原创 链表面试笔试经典题目详细解析,题目多解法,复杂度分析

本文详细解析链表常见面试题:移除指定元素、反转链表及找中间节点。通过画图分析,强调边界情况处理与指针操作细节。移除元素时使用双指针避免遗漏;反转链表注意保存下一节点防止断链;找中间节点采用快慢指针法,高效且易理解。代码均以Java实现,附完整题解与思路剖析,适合数据结构学习者巩固基础。

2026-09-06 10:21:34 218

原创 链表补充练习,双链表的模拟实现

本文介绍了双链表的原理与Java模拟实现,对比单链表增加了prev指针,支持双向遍历,提升了操作灵活性。通过自定义Node节点类和MyDLinkedList类,实现了头插、尾插、中间插入、删除、查找等核心方法,并结合toString和size方法完成测试验证。文章强调双链表空间开销较大,但逻辑更清晰,适合初学者在掌握单链表基础上进阶练习,代码结构清晰,便于理解与扩展。

2026-09-04 20:26:37 238

原创 链表超详细解析,特点介绍,方法使用,底层模拟实现

本文介绍了链表相较于顺序表的优势:空间利用率高、插入效率高。链表通过节点间的引用(next)实现离散存储,支持单向/双向、带头/不带头、循环/非循环等多种形式。重点讲解了Java中LinkedList的常用操作:增(add、addFirst、addLast)、删(remove、removeFirst、removeLast)、改(set)、查(get、contains、indexOf)。结合实例演示,帮助理解链表在实际开发中的应用,推荐读者关注专栏持续学习数据结构知识。

2026-09-04 20:25:45 314

原创 ArrayList 超详细解析:方法使用|发牌程序|杨辉三角|底层模拟实现

<think>我们根据要求,需要生成≤150字的文章摘要。摘要要概括主要内容:数据结构简介,ArrayList特征、方法及模拟实现。需简洁。</think>本文介绍了数据结构概念及Java中的ArrayList顺序表,对比数组差异,详述创建方式、常用增删改查方法(如add、remove等),并预告模拟实现自己的顺序表。内容面向Java学习者,强调集合类使用及代码示例。

2026-09-03 22:26:20 696

原创 包装类和泛型的详细解析

<think>我们根据内容生成摘要,不超过150字。要点:包装类用于泛型等机制,自动装箱拆箱;缓存范围;泛型避免Object转换,类型参数,限制,通配符。概括即可。注意字数。</think>本文介绍了Java包装类与泛型:包装类将8种基本类型转为引用类型,支持自动装箱拆箱,并存在-128~127缓存;泛型通过类型参数避免Object转换的麻烦,可限制类型范围,通配符实现引用灵活指向。为数据结构学习作铺垫。

2026-09-03 22:25:08 239

原创 String类解析(二)可变字符串,经典算法题练习

本文介绍了String类不可变特性及其带来的性能问题,引出可变字符串StringBuilder的使用优势。通过对比String与StringBuilder在大量拼接操作中的效率差异(8ms vs 2382ms),强调了StringBuilder在高频字符串操作中的重要性。随后解析两道经典算法题:找出字符串中第一个唯一字符(利用ASCII码计数)和计算最后一个单词长度(通过split分割),结合String方法进行实战练习,帮助读者巩固基础语法并提升编码效率。

2026-09-02 21:13:16 267

原创 时间复杂度、空间复杂度概念,计算方法解析

摘要 本文是数据结构专栏的开篇,重点介绍算法效率评估的两个核心标准:时间复杂度和空间复杂度。时间复杂度通过重复性操作次数衡量代码执行效率,忽略低次项和系数,关注增长趋势(如O(N²)、O(logN))。文章分析了冒泡排序(最坏O(N²),最好O(N))、二分查找(O(logN))和递归算法(如阶乘O(N)、低效斐波那契O(2^N))的时间复杂度计算,强调对数时间的高效性。所有代码示例采用Java实现,适合配合已更新的JavaSE专栏复习基础知识。

2026-09-02 21:12:00 451

原创 绕过权限检查,访问修改私有属性,反射,枚举,lambda

本文简要介绍Java反射机制,阐述其原理与应用场景。反射允许程序在运行时获取类的信息(如属性、方法、构造器等),实现动态创建对象、访问私有成员等功能,虽能提升代码通用性(如序列化),但属于非常规手段,存在性能损耗与安全风险,不推荐日常开发使用。文中通过实例演示如何通过反射绕过访问权限,实现对私有字段和方法的调用,并强调其仅适用于框架底层开发,普通开发者了解即可。

2026-09-01 21:21:36 161

空空如也

空空如也

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

TA关注的人

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