- 博客(90)
- 收藏
- 关注
原创 网络原理(一)应用层协议、传输层UDP/TCP报文格式解析
本文系统讲解网络原理中的应用层协议与传输层(UDP/TCP)报文格式。重点介绍自定义应用层协议的两大核心:通信信息与数据格式,对比行文本、XML、JSON、Protobuf四种格式优劣;深入解析UDP报文结构及其64KB长度限制、校验和机制及适用场景;详述TCP面向字节流特性、报文段首部结构、首部长度压缩设计及可靠性保障机制,强调其在高可靠性需求场景的应用。内容理论性强,适合作为面试与网络调优基础。
2026-10-07 21:37:53
50
原创 网络编程(二)TCP回显服务器与客户端通信详解
本文详解基于TCP协议的网络编程,介绍服务器与客户端的通信流程。核心类为ServerSocket(建立连接)和Socket(数据传输),采用字节流方式进行读写。通过accept()接收客户端连接,利用Scanner和PrintWriter简化输入输出操作,并结合try-with-resources自动释放资源。重点解析了多客户端处理、连接状态判断及数据响应机制,强调TCP的连接性与可靠性,适合初学者理解网络编程基础。
2026-10-07 21:36:29
43
原创 网络编程(一)UDP编程客户端/服务器代码详细解析
本文详解基于UDP协议的网络编程,涵盖客户端与服务器交互流程:创建DatagramSocket绑定端口,使用DatagramPacket封装数据报,实现发送与接收。重点解析数据报的构建、字符串与字节数组的转换,以及回显服务器的实现逻辑。强调UDP无连接、不可靠但高效的特点,适合初学者理解网络通信底层机制。
2026-10-06 10:46:26
206
原创 初识网络通信,网络发展背景,TCP/IP五层模型简介
本文为网络编程系列首篇,概述计算机网络发展史,从阿帕网到互联网普及,再到移动互联网兴起。解析核心概念:IP地址(设备唯一标识)、端口号(应用区分)、协议(通信规则)及五元组(通信关键信息)。介绍TCP/IP五层模型(物理层、数据链路层、网络层、传输层、应用层),并以快递类比各层功能,帮助理解分层设计思想,为后续编程实践奠定基础。
2026-10-06 10:40:22
353
原创 文件IO万字超详细解析,文件系统操作,字节流、字符流使用,文件搜索,文件复制解析
本文介绍了Java中文件IO的基础知识,涵盖文件路径(绝对路径与相对路径)、文件类型(文本文件与二进制文件)的区分,以及通过File类进行文件系统操作,如创建、删除、判断文件存在性等。重点讲解了字节流与字符流对文件读写的核心概念,强调理解路径表示及文件操作方法的重要性,适合JavaEE学习者掌握文件处理基础。
2026-09-17 10:37:51
530
原创 Java线程(八)JUC包中常用类的解析
Java并发编程工具类解析 本文介绍了JUC包中三个核心并发工具类的使用: Callable接口:与Runnable类似但支持返回值,通过FutureTask作为桥梁与Thread配合使用,可以获取线程执行结果。 ReentrantLock:可重入锁,相比synchronized需要手动释放锁,提供更灵活的锁控制,支持尝试获取锁(tryLock)和公平锁模式。 Semaphore信号量:基于计数器的资源管理工具,通过acquire/release方法控制资源访问,当资源耗尽时支持阻塞等待。 这些工具类解决了
2026-09-17 10:37:44
138
原创 Java线程(七):锁策略,锁优化策略,CAS解析
锁策略与优化机制解析 本文深入探讨了Java中的锁策略和优化机制。首先介绍了悲观锁与乐观锁的区别,悲观锁适用于高冲突场景,采用阻塞等待策略;乐观锁适用于低冲突场景,采用忙等自旋策略。随后阐述了重量级锁与轻量级锁的实现差异,以及公平锁与非公平锁的调度规则。文章还分析了可重入锁的特性、读写锁与互斥锁的区别。 在锁优化方面,详细讲解了JVM的锁升级机制(无锁→偏向锁→自旋锁→重量级锁)、锁消除和锁粗化等优化策略。特别强调了CAS(比较并交换)操作的原理及其在原子类实现中的应用。这些内容虽然偏理论,但在面试中经常考
2026-09-16 10:09:08
465
原创 Map&Set(三)哈希函数、哈希表原理、哈希表代码实现超详细解析
本文详解哈希表的底层原理,通过数组与哈希函数结合实现O(1)时间复杂度的增删查操作。重点解析哈希冲突的解决方式——开散列(链地址法)与负载因子控制,并结合代码模拟实现HashMap。同时介绍Java中HashMap的优化策略:链表转红黑树、动态扩容等机制,确保高效性能。适合数据结构学习者深入理解哈希表核心思想。
2026-09-16 09:42:26
265
原创 Map&Set(二),画图详解二叉搜索树的概念和实现代码
本文详解二叉搜索树(BST)的定义、特性及核心操作。二叉搜索树满足左子树所有节点小于根,右子树所有节点大于根,支持高效查找、插入与删除,理想时间复杂度为O(logN),最坏情况退化为O(N)。文中重点解析了删除操作的四种情形:无子节点、仅左子树、仅右子树、双子树,并结合代码实现详细说明。同时介绍了平衡二叉搜索树如AVL树和红黑树的应用背景,为后续进阶学习铺垫基础。
2026-09-15 12:12:02
38
原创 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
141
原创 排序(二)堆排序|快速排序|归并排序 代码原理,非递归写法超详细解析
本文解析堆排序、快速排序与归并排序三大高效排序算法。堆排序基于大堆/小堆,通过建堆与逐次调整实现O(NlogN)时间复杂度,空间复杂度O(1),但为不稳定排序;快速排序采用分治思想,以Hoare法为例,通过双指针分区实现高效排序,平均时间复杂度O(NlogN),是面试高频算法;归并排序则通过分而治之稳定排序,适合大数据量场景。三者均优于基础排序,广泛应用于标准库中。
2026-09-14 12:28:17
193
原创 排序(一)基础排序,插入|希尔|冒泡|直接选择排序详解
本文介绍了四种基础排序算法中的插入排序与希尔排序。插入排序通过维护有序与无序区间,逐个将元素插入到合适位置,时间复杂度为O(N²),空间复杂度O(1),且可实现稳定排序。希尔排序是插入排序的优化,通过分组进行间隔排序(gap逐渐减小),提升效率,尤其在数据基本有序时表现更佳。两者均属内部排序,适合学习排序思维与面试考察。
2026-09-10 21:32:03
97
原创 堆的解析,堆和优先级队列的实现,比较规则制定
本文详解堆与优先级队列的原理及实现。堆是特殊的完全二叉树,分为大根堆和小根堆,通过数组存储,利用父子节点下标关系(左子:2parent+1,右子:2parent+2)高效操作。优先级队列基于堆实现,支持快速插入(offer)和删除最小/最大元素(poll)。核心操作为“向下调整”,从最后一个非叶子结点开始,自后向前调整,确保堆性质。代码实现中,shiftDown方法通过循环比较并交换子节点,最终构建出完整堆结构,时间复杂度为O(n),适用于高效排序与任务调度等场景。
2026-09-10 21:31:11
390
原创 二叉树(四)经典算法题目解析,公共祖先,二叉树构造,非递归遍历
本文解析二叉树7道经典算法题,重点剖析“最近公共祖先”与“根据先序、中序构造二叉树”。前者通过递归判断结点在左右子树的分布,结合返回值逻辑修正错误,实现高效求解;后者利用前序确定根节点,中序划分左右子树,配合双指针控制区间范围,递归构建完整二叉树。题目难度较高,需深入理解递归思想与边界处理,适合进阶练习,提升二叉树综合解题能力。
2026-09-09 21:06:31
417
原创 滑动窗口算法详细解析(8道经典题目)
本文详解滑动窗口算法,通过8道递进题目帮助读者掌握其核心思想。以“长度最小的子数组”为例,对比暴力解法与滑动窗口优化:利用同向双指针,通过“进窗口、判断、出窗口、更新结果”四步循环,实现O(n)时间复杂度。关键在于right不回退,sum通过减去出窗元素快速更新。后续题目如“无重复字符的最长子串”进一步结合哈希表实现高效去重。建议先独立思考再参考代码,提升算法实战能力。
2026-09-09 21:05:58
805
原创 二叉树(三)经典算法题目解析,子树判断,平衡、对称、翻转、遍历二叉树
本文解析了7道经典二叉树算法题,涵盖相同树、子树判断、翻转二叉树及平衡二叉树等核心问题。通过递归思想实现,强调画递归调用图辅助理解。代码均以Java编写,注重逻辑清晰与边界处理,适合初学者掌握二叉树递归解题技巧。
2026-09-08 17:37:20
237
原创 二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
本文详解二叉树基础操作的递归实现,涵盖结点个数统计、第k层结点数计算、树高求解及结点查找等核心功能。重点剖析了递归思路与常见错误(如局部变量重置问题),推荐使用返回值累加的方式避免状态污染,确保多次调用正确性。代码基于Java,结构清晰,适合数据结构初学者掌握递归思想与二叉树遍历技巧。
2026-09-08 17:36:32
424
原创 二叉树(一)树结构基础,先序、中序、后序遍历代码,规律详细解析,看完包懂!
本文系统讲解树结构与二叉树基础,涵盖树的定义、性质(如度、深度、叶子结点等)、表示方法(孩子表示法为主)及二叉树类型(满二叉树、完全二叉树)。重点解析二叉树的三种遍历方式:先序、中序、后序,均基于递归实现,结合代码示例清晰展示遍历逻辑,适合数据结构初学者掌握面试高频考点。
2026-09-07 21:19:00
406
原创 队列的使用,基于数组和基于链表的模拟实现,题目练习
本文介绍了队列的基本概念、特点(先进先出)及两种底层实现方式:链表和数组。通过Java代码模拟实现自定义队列,分别使用链表实现尾插头删的入队与出队操作,并基于数组的ArrayDeque讲解高效队列应用。结合算法题练习,帮助读者掌握队列的核心操作(offer/poll/peek)与实际应用场景,适合数据结构初学者系统学习。
2026-09-07 21:18:29
255
原创 栈的使用、模拟实现、相关经典算法题详细解析
本文详解栈的数据结构及其在Java中的应用,介绍栈的三大核心操作(入栈、出栈、取栈顶),并通过标准库Stack类演示使用方法及异常处理。文章还通过模拟实现自定义栈,展示数组扩容、入栈出栈逻辑,并结合典型算法题分析出栈序列的合理性,帮助读者深入理解栈的特性与应用场景。
2026-09-06 10:21:53
285
原创 链表面试笔试经典题目详细解析,题目多解法,复杂度分析
本文详细解析链表常见面试题:移除指定元素、反转链表及找中间节点。通过画图分析,强调边界情况处理与指针操作细节。移除元素时使用双指针避免遗漏;反转链表注意保存下一节点防止断链;找中间节点采用快慢指针法,高效且易理解。代码均以Java实现,附完整题解与思路剖析,适合数据结构学习者巩固基础。
2026-09-06 10:21:34
217
原创 链表补充练习,双链表的模拟实现
本文介绍了双链表的原理与Java模拟实现,对比单链表增加了prev指针,支持双向遍历,提升了操作灵活性。通过自定义Node节点类和MyDLinkedList类,实现了头插、尾插、中间插入、删除、查找等核心方法,并结合toString和size方法完成测试验证。文章强调双链表空间开销较大,但逻辑更清晰,适合初学者在掌握单链表基础上进阶练习,代码结构清晰,便于理解与扩展。
2026-09-04 20:26:37
235
原创 链表超详细解析,特点介绍,方法使用,底层模拟实现
本文介绍了链表相较于顺序表的优势:空间利用率高、插入效率高。链表通过节点间的引用(next)实现离散存储,支持单向/双向、带头/不带头、循环/非循环等多种形式。重点讲解了Java中LinkedList的常用操作:增(add、addFirst、addLast)、删(remove、removeFirst、removeLast)、改(set)、查(get、contains、indexOf)。结合实例演示,帮助理解链表在实际开发中的应用,推荐读者关注专栏持续学习数据结构知识。
2026-09-04 20:25:45
310
原创 ArrayList 超详细解析:方法使用|发牌程序|杨辉三角|底层模拟实现
<think>我们根据要求,需要生成≤150字的文章摘要。摘要要概括主要内容:数据结构简介,ArrayList特征、方法及模拟实现。需简洁。</think>本文介绍了数据结构概念及Java中的ArrayList顺序表,对比数组差异,详述创建方式、常用增删改查方法(如add、remove等),并预告模拟实现自己的顺序表。内容面向Java学习者,强调集合类使用及代码示例。
2026-09-03 22:26:20
681
原创 包装类和泛型的详细解析
<think>我们根据内容生成摘要,不超过150字。要点:包装类用于泛型等机制,自动装箱拆箱;缓存范围;泛型避免Object转换,类型参数,限制,通配符。概括即可。注意字数。</think>本文介绍了Java包装类与泛型:包装类将8种基本类型转为引用类型,支持自动装箱拆箱,并存在-128~127缓存;泛型通过类型参数避免Object转换的麻烦,可限制类型范围,通配符实现引用灵活指向。为数据结构学习作铺垫。
2026-09-03 22:25:08
237
原创 String类解析(二)可变字符串,经典算法题练习
本文介绍了String类不可变特性及其带来的性能问题,引出可变字符串StringBuilder的使用优势。通过对比String与StringBuilder在大量拼接操作中的效率差异(8ms vs 2382ms),强调了StringBuilder在高频字符串操作中的重要性。随后解析两道经典算法题:找出字符串中第一个唯一字符(利用ASCII码计数)和计算最后一个单词长度(通过split分割),结合String方法进行实战练习,帮助读者巩固基础语法并提升编码效率。
2026-09-02 21:13:16
266
原创 时间复杂度、空间复杂度概念,计算方法解析
摘要 本文是数据结构专栏的开篇,重点介绍算法效率评估的两个核心标准:时间复杂度和空间复杂度。时间复杂度通过重复性操作次数衡量代码执行效率,忽略低次项和系数,关注增长趋势(如O(N²)、O(logN))。文章分析了冒泡排序(最坏O(N²),最好O(N))、二分查找(O(logN))和递归算法(如阶乘O(N)、低效斐波那契O(2^N))的时间复杂度计算,强调对数时间的高效性。所有代码示例采用Java实现,适合配合已更新的JavaSE专栏复习基础知识。
2026-09-02 21:12:00
450
原创 绕过权限检查,访问修改私有属性,反射,枚举,lambda
本文简要介绍Java反射机制,阐述其原理与应用场景。反射允许程序在运行时获取类的信息(如属性、方法、构造器等),实现动态创建对象、访问私有成员等功能,虽能提升代码通用性(如序列化),但属于非常规手段,存在性能损耗与安全风险,不推荐日常开发使用。文中通过实例演示如何通过反射绕过访问权限,实现对私有字段和方法的调用,并强调其仅适用于框架底层开发,普通开发者了解即可。
2026-09-01 21:21:36
160
原创 String类常量池,各种常用方法超详细解析,正则表达式
String类全面解析 本文全面介绍了Java中String类的核心知识点,主要包括: String简介:String是Java标准库内置类,不属于基本类型,创建方式有3种(推荐直接赋值方式) 常量池机制:解释了字符串常量池的原理,通过内存图展示了直接赋值和new创建方式的区别 常用方法详解: equals()方法用于内容比较 compareTo()方法进行字符比较(区分大小写) compareToIgnoreCase()忽略大小写比较 charAt()获取指定位置字符 使用建议:推荐将常量字符串放在equ
2026-09-01 21:20:49
288
原创 Java异常超详细解析,异常捕获和匹配,异常分类,finally
本文详细解析Java异常机制,涵盖异常分类、try-catch-finally使用场景、异常捕获原理及多个catch的匹配规则。通过实例说明编译时异常与运行时异常的区别,强调异常处理对代码健壮性的重要性,并演示如何合理使用异常处理提升程序可维护性。
2026-08-31 18:36:49
203
原创 MySQL数据库JDBC编程(三):三层架构基础解析
这篇文章介绍了MySQL数据库的三层架构设计,主要包括Entity层、Dao层和Service层的功能划分。作者通过学生信息管理系统示例,展示了如何创建实体类、数据访问类和业务逻辑类,并详细说明了各层之间的调用关系。文章还提供了数据库表创建脚本和JDBC工具类代码,强调了分层架构在降低耦合度、提高代码复用性和便于维护方面的优势。最后,作者给出了三层架构的具体实现方案,包括实体类的创建、Dao层的数据访问方法以及Service层的业务逻辑处理。
2026-08-31 18:35:30
314
原创 Java内部类、Object类详细解析
这篇文章介绍了Java中的四种内部类:普通内部类、静态内部类、局部内部类和匿名内部类。作者指出前三种在实际开发中较少使用,重点讲解了日常开发中最常用的匿名内部类。 普通内部类需要先创建外部类实例才能创建内部类实例;静态内部类可以直接创建,但不能访问外部类的非静态属性;局部内部类定义在方法内部,使用范围有限。匿名内部类通过示例展示了如何简化Comparator接口的实现,避免了单独创建比较器类,是实际开发中最常用的内部类形式。 文章风格轻松活泼,强调实用性,指出某些语法仅用于学习考试,实际开发中很少使用。适合
2026-08-12 20:37:38
209
原创 JavaComparable、Comparator、Cloneable接口解析,深拷贝浅拷贝详细解析
本文介绍了Java中Comparable和Comparator接口的使用方法。Comparable接口通过在被比较类中实现compareTo方法定义单一比较规则,适用于可修改源码的情况;Comparator接口则通过单独的比较器类实现compare方法,支持多种比较规则,适用于不可修改源码的场景。文章还提及了Clonable接口的初步概念,展示了如何通过实现接口来扩展类的功能。这些接口的合理使用可以提升代码的灵活性和复用性。
2026-08-12 18:41:49
210
原创 Java抽象类和接口基础超详细解析,看完包懂的,兄弟
本文介绍了Java中抽象类与接口的核心概念及使用场景。抽象类通过abstract关键字定义,可包含抽象方法(无具体实现)和普通方法,其主要作用是强制子类重写抽象方法,实现多态和代码规范。接口(interface)是更纯粹的抽象形式,默认所有方法为public abstract,常用于项目协作和定义规范。文章对比了两者特性:抽象类不能实例化、需被继承,接口更侧重行为约定。实际开发中接口使用频率更高,通常遵循大写I开头、形容词命名等规范。两者都能增强代码可维护性,通过编译器检查减少错误。
2026-08-11 16:37:53
321
原创 Java多态基础全面解析,动态绑定,注意事项,向上和向下转型,看完包懂!
本文介绍了Java中多态的概念、实现方式及注意事项。多态是Java三大特性之一,指一个对象的引用具备多种形态,通过动态绑定机制在运行时确定调用哪个方法版本。实现多态需满足继承、方法重写等条件,并遵守权限、返回值等规则。文章通过父子类实例演示了多态的具体应用,包括向上转型、动态绑定和@Override注解的使用。同时强调了开发中应遵循"开闭原则",即通过扩展而非修改现有代码来实现功能变更。多态是Java项目开发中最核心、高频使用的特性之一。
2026-08-10 11:09:27
433
原创 机试必看:双指针算法经典题目详细解析
本文介绍了三种经典的双指针算法应用场景,通过力扣真题讲解算法实现思路与优化技巧。 移动零:使用cur和dest双指针将数组分为三部分,通过交换操作将零移至末尾,时间复杂度O(n),空间复杂度O(1)。 复写零:通过正向定位+逆向复写策略处理就地修改问题,特别处理末尾零的边界情况,避免数组越界。 快乐数:利用快慢指针判断循环链表特性,快乐数最终会形成全1环,非快乐数形成不含1的环。 每种解法均附有Java实现代码,强调先理解思路再自主实现的学习方法。双指针能有效降低时间复杂度,适用于数组操作和循环检测等问题。
2026-08-10 10:52:54
427
原创 计算机网络笔记(二)电路、报文、分组交换的介绍和性能分析
60年代初美苏冷战持续升级,为了防止核打击后军事指挥的瘫痪,美国军方开始推进世界上第一个计算机网络——阿帕网(APRA)的研发于是,各路大佬就开始研究计算机网络如何搭建,他们想到了参考之前已经搭建的网络例如古代就有的邮政网络,这个网络就是靠驿站,但是驿站中马的数量是固定的,一次只能运送少量的信息,一些不是很急的邮件就要等待前面的信息完全送完后才能运送,不太符合计算机网络的需求,因此可以参考的地方不多那在近代出现的电报网络和电话网络的参考价值大不大呢?
2026-08-08 09:27:54
214
原创 计算机网络笔记(一)计网的概念,功能,组成
计算机网络基础概念与功能摘要 计算机网络是由分散自治的计算机设备通过通信链路(有线/无线)和节点(主机/交换机/路由器)连接的系统,实现资源共享与信息传递。核心组成包括硬件(主机、通信设备)、软件(应用服务)和协议(如TCP/IP)。从工作方式分为边缘部分(用户端)和核心部分(路由网络);逻辑功能划分为通信子网(数据传输)和资源子网(数据处理)。主要功能涵盖:1)数据通信(基础传输);2)资源共享(硬件/软件/数据共享,如云服务);3)分布式处理(多机协作);4)高可靠性(数据多备份);5)负载均衡(任务分
2026-08-08 09:26:28
238
原创 Java线程(六) 线程池与定时器解析与模拟实现
本文介绍了Java线程池和定时器的核心概念与实现。线程池通过预先创建线程池中的线程来减少频繁创建/销毁线程的开销,核心参数包括核心线程数、最大线程数、线程存活时间等。文章详细解析了ThreadPoolExecutor的构造参数,并通过工厂模式创建不同类型的线程池。还通过类比解释了线程池的工作原理,并提供了创建三种常见线程池的代码示例。此外,文章还涉及线程池拒绝策略的处理方式,为JavaEE开发中高效使用线程池提供了实用指导。
2026-04-29 17:18:13
372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅