自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IP协议解析

例如数值5对应20字节(5×4),最大允许15代表60字节(15×4)。承载的上层协议内容(如TCP报文或UDP数据报),长度=总长度 - 头部长度,最大可达65535-20=65495字节。明确标识使用的IP协议版本,填4表示IPv4,填6则为IPv6。标明整个IP数据报的总字节数(含头部和数据),最大值65535字节。发送方为每个原始数据报分配唯一ID,分片后的所有碎片保持相同标识,便于接收端重组。指明上层协议:6对应TCP,17对应UDP,1为ICMP,其他值可查协议号列表。

2025-05-26 16:21:32 277

原创 (每日一道算法题)实现 pow(x, n) 的快速幂解法

此方法高效地处理了所有可能的输入情况,包括大数运算和负数指数,确保了正确性和高效性。

2025-05-25 21:43:52 331

原创 TCP原理解析

TCP(Transmission Control Protocol)是互联网通信中最核心的传输层协议,为应用程序提供可靠、有序的端到端数据传输服务。作为现代网络通信的基石,TCP通过多种机制在保证数据可靠性的同时,尽可能提升传输效率。

2025-05-22 22:58:28 1241

原创 (每日一道算法题)两两交换链表中的节点

递归解法通过分解问题,逐层处理并合并结果,代码简洁但需注意栈空间。迭代解法省去了递归开销,适合处理长链表。理解这两种方法有助于深入掌握链表操作的核心思想。

2025-05-21 17:36:57 295

原创 理解UDP协议

UDP的简单性既是优势也是局限。它适合实时性要求高、允许适度丢包的场景(如在线游戏、直播),但在需要可靠传输时需开发者自行设计保障机制。理解UDP的核心原理,能帮助我们在实际项目中做出更合理的协议选型。

2025-05-19 17:09:14 640

原创 Java网络编程

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据, 也属于网络编程。特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。进程A:编程来获取网络资源进程B:编程来提供网络资源。

2025-05-12 10:39:41 600

原创 网络原理初识

本来想从网络的发展史开始写,之后再写网络的定义啥的,但快写完了才发现,这不课本教材吗,没劲,遂弃之,重撰,删芜就简.写点我认为,对程序员来说真正有用的东西网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

2025-05-08 23:42:14 1174

原创 Java文件I/O操作

​​唯一标识​​:通过文件名和扩展名(如data.txt)区分​​结构化存储​​:数据按特定格式(文本、二进制)组织​​元数据​​:包含创建时间、大小、权限等属性。

2025-05-07 09:53:25 581

原创 Synchronized锁升级机制与优化策略

锁升级的本质是根据线程竞争强度逐步提升锁的“安全等级”,从无锁状态逐步演变为重量级锁,从而在无竞争时减少开销,在高竞争时确保安全性。如果后续有其他线程来竞争该锁(刚才已经在锁对象中记录了当前锁属于哪个线程了, 很容易识别 当前申请锁的线程是不是之前记录的线程), 那就取消原来的偏向锁状态, 进入一般的轻量级锁状态.JVM 将 synchronized 锁分为无锁,偏向锁,轻量级锁,重量级锁状态,会根据情况,进行依次升级.​ 时(如循环体内的同步块),会将锁范围扩展到整个操作序列,避免频繁的锁状态切换。

2025-04-28 15:44:25 866

原创 CAS解析

CAS: 全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等(比较)如果比较相等,将 B 写入 V(交换)返回操作是否成功。CAS是一种原子操作,用于在多线程环境下实现变量的无锁更新,整个过程通过一条CPU指令(如cmpxchg)保证原子性。这段代码并非原子操作,真实场景中,CAS 通过 ​​硬件级原子指令​​(如 x86 的cmpxchg)实现原子性。

2025-04-28 11:19:40 227

原创 常见锁策略

在多线程编程和分布式系统中,​​是保证数据一致性和系统稳定性的核心机制。不同的场景需要匹配不同的锁策略,本文将系统性地解析常见的锁策略及其适用场景(只解释思想,不涉及实现)。

2025-04-27 20:43:25 506

原创 Java线程池详解

Java线程池通过提供高度可定制的并发控制能力。理解每个参数对系统性能的影响(如队列容量与最大线程数的平衡),能够帮助开发者构建出高吞吐、低延迟的线程管理体系。建议根据具体业务场景,结合监控数据动态调整参数,方能发挥线程池的最大效能。

2025-04-27 18:09:07 833

原创 定时器详解

Java定时器是任务调度的核心工具,理解其原理与差异至关重要。对于简单需求,Timer足够便捷;高并发或复杂调度场景建议采用。此外,第三方库如Quartz、Spring Task提供了更强大的分布式调度能力,可根据项目需求扩展。

2025-04-26 17:54:45 346

原创 Java常用API详解

类位于金字塔的最顶端,它是所有Java类的终极父类在Java中,​​并非所有Object类的方法都需要重写​​。是否需要重写取决于具体需求。

2025-04-25 21:49:42 852

原创 阻塞式队列

比如过年一家人一起包饺子. 一般都是有明确分工, 比如一个人负责擀饺子皮, 其他人负责包. 擀饺 子皮的人就是 "生产者", 包饺子的人就是 "消费者". 擀饺子皮的人不关心包饺子的人是谁(能包就行, 无论是手工包, 借助工具, 还是机器包), 包饺子的人 也不关心擀饺子皮的人是谁(有饺子皮就行, 无论是用擀面杖擀的, 还是拿罐头瓶擀, 还是直接从超 市买的).它通过内置的等待/唤醒机制,自动管理线程的阻塞和唤醒,极大简化了多线程协作的复杂度。2) 阻塞队列也能使生产者和消费者之间 解耦.

2025-04-23 20:12:01 866

原创 Java多线程编程初阶指南

实现方式代码行数可复用性灵活性推荐指数继承Thread5-10低差★☆☆☆☆常规Runnable6-8高中★★★☆☆匿名内部类3-5低高★★★★☆Lambda表达式1-3中极高★★★★★​核心定义​​:当多个线程并发访问共享资源时,程序仍能保持正确行为的状态​​黄金准则​原子性(Atomicity)保证可见性(Visibility)保证有序性(Ordering)保证使用没有共享资源的模型适用共享资源只读,不写的模型不需要写共享资源的模型。

2025-04-22 23:17:08 1382

原创 Java命名规则

在 Java 项目中,命名规则遵循一定的约定俗成规范,目的是提高代码可读性和团队协作效率。

2025-04-17 20:42:49 568

原创 Java内部类详解

​​成员内部类​​:定义在类的成员位置,无static修饰​​静态内部类​​:定义在类的成员位置,有static修饰​​局部内部类​​:定义在方法内部​​匿名内部类​​:没有名字的局部内部类,常用于简化代码什么时候该用内部类?​// 成员变量和方法特点:属于外部类对象(需依赖外部类实例存在)可直接访问外部类所有成员(包括private)不能定义静态成员(JDK16+允许静态变量)// 静态/非静态成员属于外部类本身只能直接访问外部类的静态成员可包含静态成员。

2025-04-16 20:53:10 599

原创 Java接口深度解析

​​基础语法:​// 接口声明// 常量(默认 public static final)String CONSTANT = "接口常量";// 抽象方法(默认 public abstract,可省略修饰符)// 默认方法(Java 8+,有方法体)System.out.println("默认方法实现");// 静态方法(Java 8+,通过接口名直接调用)System.out.println("静态方法实现");// 实现接口的类// 必须实现抽象方法@Override。

2025-04-11 21:03:59 435

原创 Java抽象类与抽象方法详解

​​设计意图​​:当多个子类具有共性行为但具体实现不同时,通过抽象类强制规范子类的实现格式。​​典型场景​// 定义抽象图形类// 抽象方法:计算面积(无法确定具体实现)// 具体子类实现@Override// 圆形面积计算@Override// 矩形面积计算强制约束​包含抽象方法的类 ​​必须声明为抽象类​​子类 ​​必须实现所有抽象方法​​(除非子类也是抽象类)​​语法规则​[访问修饰符] abstract 返回值类型 方法名(参数列表);示例说明​。

2025-04-10 22:42:23 355

原创 Java代码块详解:分类、作用与最佳实践

特性局部代码块构造代码块静态代码块执行次数每次方法调用每次new对象类加载一次存储位置栈内存堆内存方法区是否可抛异常可处理可处理需捕获或终止加载访问权限仅限方法内部可访问实例变量仅访问静态成员理解静态代码块的 ​​一次性初始化​​ 机制避免构造代码块的 ​​滥用风险​​认识局部代码块的 ​​历史局限性​​在实际开发中,建议结合IDE的代码分析工具(如IntelliJ IDEA的。

2025-04-10 21:44:47 639

原创 Java权限修饰符深度解析

Java提供四种访问控制修饰符,按访问范围从宽到窄排序如下:​​访问范围​​:所有类均可访问​​使用场景​​:​​示例​​: ​​访问范围​​:​​使用场景​​:​​示例​​: ​​访问范围​​:仅同包类可见​​使用场景​​:​​示例​​: ​​访问范围​​:仅本类可见​​使用场景​​:​​示例​​: 2. 构造函数访问控制 ​​最小化公开元素​​ 优先使用最严格的访问级别(推荐顺序): → 默认 → → ​​数据封装原则​​​​ 3.接口方法

2025-04-10 21:22:00 451

原创 Java final关键字规范说明

​:声明为。

2025-04-10 21:01:06 311

原创 解析Java包核心知识

​:唯一标识一个类,避免同名类冲突(如同时使用。​,用于分类管理不同功能的Java类(如。

2025-04-10 20:46:06 251

原创 递归(实践版)

这篇博客我不会写太多细节,我只做一件事,那就是教你如何写好一个递归.二叉树的后序遍历归并排序。

2025-04-02 22:57:52 198

原创 (每日一道算法题)字符串解码

利用栈处理嵌套解码问题,能够有效管理不同层次的字符串和重复次数。此方法直观且高效,适用于大部分嵌套结构解析场景。

2025-03-31 22:04:52 372

原创 (每日一道算法题)最长回文子串

中心扩展法通过利用回文串的对称性,高效地解决了最长回文子串问题。其核心思想是从每个可能的中心向两侧扩展,寻找最大回文。相比于动态规划等其他方法,中心扩展法在空间复杂度上更具优势,且代码简洁易懂。

2025-03-27 23:20:50 317

原创 (每日一道算法题) K 个一组翻转链表

本解法通过头插法实现每组的翻转,利用虚拟头节点简化连接逻辑,通过前驱指针维护各组之间的连接。思路清晰,代码简洁高效。适用于对链表操作较为熟悉的开发者,重点在于理解头插法的翻转逻辑和指针的更新策略。

2025-03-26 21:09:43 433

原创 (每日一道算法题)合并 K 个升序链表

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。链表数组如下:1->4->5,1->3->4,2->6将它们合并到一个有序链表中得到。

2025-03-25 21:02:37 287

原创 (每日一道算法题)两数相加

该解法通过逐位相加并维护进位,高效处理了逆序链表的相加问题。使用哑节点简化了链表操作,确保代码简洁且鲁棒性强。通过合理处理边界条件(如链表长度不同、最终进位),保证了算法的正确性。

2025-03-25 11:20:22 231

原创 (每日一道算法题)翻转对

​降序排序的必要性:保证右子数组元素从前往后递增,使得统计时能利用有序性快速定位。​独立统计阶段:必须在合并前单独统计,避免遗漏可能的翻转对。​防止整数溢出:比较时使用long类型(如。

2025-03-23 21:36:24 914

原创 (每日一道算法题)交易逆序对的总数

在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录record,返回其中存在的「交易逆序对」总数。8交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。

2025-03-21 20:24:55 405

原创 (每日一道算法题)排序数组

​稳定时间复杂度:无论输入数据如何分布,始终保证 O(n log n)​天然稳定性:保持相等元素的原始顺序(本题虽不要求,但属于重要特性)​分治结构:适合处理大规模数据,且易于并行优化与快速排序相比,避免了最坏情况 O(n²) 的风险;与堆排序相比,具有更好的缓存局部性。

2025-03-21 10:56:55 341

原创 Java多态:三大特性解析与实战应用

定义:多态指“对象的多种形态”。它允许不同类的对象对同一消息作出不同响应,如同一操作作用于不同的对象时产生不同的行为。通俗比喻狗调用叫()方法会输出“汪汪”猫调用叫()方法会输出“喵喵”同一个行为(叫),不同对象(狗/猫)表现不同,这就是多态。类型​编译时多态:方法重载(Overload)​运行时多态:方法重写(Override)

2025-03-18 17:17:45 340

原创 Java继承中的成员变量,成员方法,构造方法访问特点详解

父类静态块 → 子类静态块 → 父类实例块 → 父类构造方法 → 子类实例块 → 子类构造方法。,该操作由编译器在子类构造方法首行隐式插入。,且必须是子类构造方法的第一条语句。,但可通过方法重载实现不同参数构造。当需要调用父类有参构造时,必须。示例:父类无无参构造时的处理。Parent.变量名。

2025-03-17 17:02:36 350

原创 (每日一道算法题)数组中的第 k 个最大的元素

给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。

2025-03-16 11:26:07 366

原创 (每日一道算法题)数青蛙

给你一个字符串,它表示不同青蛙发出的蛙鸣声(字符串"croak")的组合。由于同一时间可以有多只青蛙呱呱作响,所以中会混合多个“croak”。请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。要想发出蛙鸣 "croak",青蛙必须输出这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串不是由若干有效的 "croak" 字符混合而成,请返回-1。1一只青蛙 “呱呱” 两次2最少需要两只青蛙,“呱呱” 声用黑体标注第一只青蛙 "croak"第二只青蛙 "croak-1。

2025-03-13 21:49:26 923

原创 Java继承机制深度解析:子类如何继承父类及内存原理解析

Java的继承机制通过内存预分配和权限分层控制,实现了代码复用与安全性的平衡。避免因权限问题导致的诡异Bug(如误认为子类不包含父类私有变量)优化代码结构(例如合理选择protected或final修饰符)深入掌握多态的实现原理(虚方法表与动态绑定)下次面对继承问题时,不妨从内存布局的视角重新审视,或许会有豁然开朗的体验!

2025-03-12 22:55:40 1101 2

原创 Java继承详解:核心特性与实战指南

java的继承机制通过。

2025-03-12 17:36:04 412

原创 深入理解Java中的static关键字及其内存原理

/ 静态变量(类变量)// 实例变量​共享性:所有实例共享同一存储空间(Config.ENV​生命周期:类加载时初始化,程序结束时销毁​存储位置:JDK8+存放在元空间(MetaSpace),旧版本在方法区​调用方式:推荐类名.方法名()(如​访问限制:静态方法中无法使用this,不能直接访问实例成员深入理解static关键字需要把握其"类级别共享"的本质特征,同时要警惕滥用可能带来的内存问题和并发风险。

2025-03-10 23:11:40 473

Java常用API详解

Java常用API详解

2025-04-25

空空如也

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

TA关注的人

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