自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络原理-协议

摘要: 网络协议是网络通信中设备必须遵守的规则集合,定义了数据格式和交互方式,确保计算机间有效通信。五元组(源/目的IP、端口及协议)唯一标识网络连接,实现数据精准分发。网络采用分层模型(如TCP/IP五层),各层独立运作、协同处理数据。协议封装与分用过程中,数据逐层添加/解析头部信息,确保端到端传输。核心协议包括HTTP(应用层)、TCP/UDP(传输层)、IP(网络层)等,共同构建互联网通信基础架构。

2025-12-04 16:55:39 879

原创 网络原理-初识

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。⽹络互连:将多台计算机连接在⼀起,完成数据共享。数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。

2025-12-03 17:47:06 800

原创 Java中的Stream

Java Stream摘要 Stream是Java 8引入的函数式数据处理API,它提供了一种声明式、可组合的方式来操作数据源。核心特点包括: 惰性求值:中间操作延迟执行,直到遇到终端操作 内部迭代:自动处理迭代过程,无需显式循环 不可复用:每个流管道只能消费一次 并行支持:通过parallelStream实现自动并行处理 流操作分为三个阶段: 创建流:从集合/数组等数据源生成 中间操作:如filter、map等转换操作 终端操作:如collect、forEach等触发实际计算 相比传统集合操作,Strea

2025-11-25 20:10:46 820 1

原创 23种常见设计模式

本文介绍了Java中的23种设计模式,分为创建型、结构型和行为型三大类。重点解析了5种创建型模式:单例模式确保类只有一个实例;工厂方法模式将对象创建延迟到子类;抽象工厂模式创建相关对象族;建造者模式分离复杂对象的构建过程;原型模式通过拷贝创建新对象。每种模式都配有典型应用场景和Java代码示例,展示了如何实现这些经典设计模式以提高代码的复用性、灵活性和可维护性。

2025-11-22 16:55:48 701

原创 final和static关键字

摘要:本文详细介绍了Java中final和static关键字的使用场景与特性。final可用于修饰变量、方法和类,分别实现常量定义、防止方法重写和禁止继承的功能。static主要用于创建静态变量和方法,这些成员属于类而非实例,具有共享性和长生命周期。文章还探讨了final与不可变性的关系,并对比了final、finally和finalize的区别,以及static变量与实例变量的关键差异。通过代码示例展示了各种使用场景,帮助开发者深入理解这两个关键字的正确用法。

2025-11-22 07:30:00 673

原创 JVM类加载

Java类加载过程及双亲委派机制解析 摘要: Java类加载过程包含加载、链接(验证/准备/解析)、初始化三个阶段。加载阶段获取类字节流并创建Class对象;链接阶段验证安全性、分配内存并转换符号引用;初始化阶段执行静态代码。类加载器采用双亲委派模型,按层次由Bootstrap、Extension、Application三类加载器依次尝试加载,确保核心类安全且避免重复加载。该机制可通过自定义ClassLoader重写findClass()方法打破,适用于热部署等特殊场景。类加载过程实现了代码安全验证与高效内

2025-11-21 17:04:05 937

原创 数据结构-LinkedList与链表

链表与LinkedList摘要 :链表是一种非连续存储的线性数据结构,通过节点间的指针连接解决数组固定大小和连续存储的问题。链表分为单向/双向、带头/不带头、循环/非循环三类。Java的LinkedList采用双向带头循环链表实现,提供了高效的插入删除操作(O(1))。其核心操作方法包括add/remove/get/set等,支持从任意位置操作元素。与ArrayList相比,LinkedList更适合频繁增删场景,但随机访问性能较差(O(n))。使用时可选择空构造或基于现有集合构造LinkedList实例。

2025-11-18 21:53:45 636

原创 Java中的文件操作

摘要:本文介绍了Java文件操作的核心API,包括传统的java.io包和新的java.nio包。详细解析了File类的关键特性:1) 常见属性如路径分隔符;2) 多种构造方法创建文件实例;3) 文件检测方法(exists/isFile等);4) 文件信息获取方法(getPath/length等)。通过代码示例演示了如何创建、检测和获取文件信息,包括路径处理、权限检查和空间管理等功能。这些方法为Java文件处理提供了完整的解决方案。

2025-11-17 16:21:54 937

原创 线程安全的集合类

摘要: 本文介绍了多线程环境下使用ArrayList的三种方法:1)使用synchronized或ReentrantLock同步机制;2)通过Collections.synchronizedList创建同步列表;3)使用CopyOnWriteArrayList实现写时复制。重点分析了CopyOnWriteArrayList的优缺点及适用场景(读多写少)。第二部分讲解了三种线程安全队列:ArrayBlockingQueue(基于数组)、LinkedBlockingQueue(基于链表)和PriorityBlo

2025-11-14 20:40:03 569

原创 JUC的常见类

本文介绍了JUC工具包中Callable和Runnable接口的使用方法。Callable接口支持返回结果和抛出异常,而Runnable则不支持。文章详细展示了Runnable的四种实现方式:实现接口、匿名内部类、Lambda表达式和线程池执行。对于Callable,则演示了接口实现、Lambda表达式和线程池执行三种方式,并重点说明了如何使用FutureTask获取异步计算结果。这些方法为Java多线程编程提供了灵活的解决方案。

2025-11-12 20:34:18 454

原创 数据结构(2)

本文系统介绍了数据结构的基本概念和分类体系。主要包括:1) 核心概念部分定义了数据、数据元素、数据项、数据对象等基础术语;2) 逻辑结构的四种类型(集合、线性、树状、图状)及其特征;3) 物理存储的两种方式(顺序存储和链式存储)的优缺点对比。文章通过形象比喻和图形示例,清晰地阐述了数据结构从抽象逻辑关系到具体物理实现的多维度特征,为理解数据结构提供了系统框架。

2025-11-05 20:54:55 924

原创 数据结构-哈希表

本文系统介绍了哈希表的核心原理与应用。首先概述了哈希表作为高效键值存储结构的基本特性,其通过哈希函数实现O(1)时间复杂度操作。重点分析了哈希冲突问题及其解决方案:包括优化哈希函数设计(直接定制法、除留余数法)、调节负载因子,以及开放寻址法(线性/二次探测)和链地址法(哈希桶)两种冲突处理策略。特别阐述了Java中的具体实现类:非线程安全的HashMap、线程安全的Hashtable以及高并发场景下的ConcurrentHashMap,并通过代码示例展示了基本用法。文章还指出JDK1.8+的优化策略,当链表

2025-11-04 21:40:14 1196

原创 常见的锁策略

本文介绍了多种锁策略及其实现原理:1)悲观锁与乐观锁的区别及适用场景;2)重量级锁和轻量级锁的性能差异;3)挂起等待锁与自旋锁的工作机制;4)读写锁的高并发优化;5)可重入锁的实现原理;6)公平锁与非公平锁的区别。重点阐述了synchronized在不同情况下的锁策略转换机制,并通过代码示例展示了自旋锁和可重入锁的具体实现方式,为理解Java并发编程中的锁机制提供了系统性的知识框架。

2025-11-01 16:55:42 822

原创 Java中的原子类

Java原子类通过CAS机制实现线程安全操作,无需加锁。CAS基于硬件指令比较并交换值,解决同步问题但存在ABA风险。AtomicStampedReference通过版本号解决ABA问题,而LongAdder采用分段累加设计,在高并发场景下性能优于AtomicLong。这些类在java.util.concurrent.atomic包中提供高效的原子操作支持。

2025-10-28 10:44:07 667

原创 线程池是什么?

文章摘要: Java线程池通过线程复用提升并发性能,核心机制包括线程管理、任务队列和拒绝策略。ThreadPoolExecutor提供灵活配置参数,而Executors类简化了常见场景的创建。submit()方法支持任务提交与结果获取,采用生产者-消费者模型。工厂模式封装对象创建逻辑,Executors提供四种标准线程池:固定大小、单线程、可缓存和定时任务池,均需正确关闭以释放资源。线程池通过核心/非核心线程动态调整实现高效任务处理。

2025-10-25 11:28:34 997

原创 阻塞队列和计时器

阻塞队列与定时器 阻塞队列是一种线程安全的队列结构,在队列满或空时会阻塞操作线程。Java提供了ArrayBlockingQueue(基于数组)和LinkedBlockingQueue(基于链表)两种实现,主要区别在于锁机制和容量特性。前者使用单锁适合固定容量场景,后者采用分离锁设计提高并发性能。阻塞队列常用于生产者-消费者模型,实现线程间解耦。 定时器用于调度延迟或周期性任务,Java标准库提供Timer类,通过schedule()方法安排TimerTask执行。定时器内部使用优先级队列管理任务,按照执行

2025-10-24 11:04:00 592

原创 多线程后续

文章摘要: 本文探讨了多线程中的死锁问题及其解决方案。首先分析了死锁形成的两种情况:单线程重复加锁和双线程循环等待锁(如哲学家就餐问题)。接着提出解决死锁的两种方法:避免嵌套锁和约定锁顺序。然后介绍了wait()和notify()方法的作用机制,wait()使线程等待并释放锁,notify()唤醒等待线程但不会立即释放锁。文章通过Java代码示例展示了死锁的形成与解决过程,以及wait/notify的使用方法。最后指出notifyAll()可解决多线程唤醒问题。(149字)

2025-10-17 15:03:12 740 1

原创 线程安全问题和多线程

本文讨论了Java多线程中的线程安全问题及其解决方案。首先通过示例展示了线程不安全现象,当多个线程同时修改共享变量时,结果可能不符合预期。然后分析了线程不安全的原因,包括抢占式调度、共享变量修改、非原子操作等。接着重点介绍了原子性的概念和解决方案,包括使用synchronized关键字加锁和可重入锁机制。最后探讨了内存可见性问题,解释了JMM内存模型的工作机制,并提出使用volatile关键字来确保变量修改的可见性。文章通过具体代码示例演示了这些问题的表现和解决方法。

2025-10-12 12:04:50 641

原创 线程的后续

本文介绍了Java中Thread类的基本用法和常见方法。主要内容包括:1)Thread类的四种构造方法;2)线程的常用属性如后台线程、存活状态、中断状态等;3)线程的六种状态及其转换;4)线程操作方法:join()用于等待线程结束,start()启动线程,interrupt()中断线程。通过代码示例详细展示了如何创建线程、检查线程状态、控制线程执行流程等核心操作,是Java多线程编程的基础知识总结。

2025-10-09 09:55:35 388

原创 进程和线程

本文摘要:文章系统介绍了进程与线程的核心概念。进程是操作系统资源分配的基本单位,通过PCB进行管理,包含进程状态、优先级等关键信息;线程是CPU调度的最小单位,共享进程资源。重点对比了二者的区别:进程独立性高但资源消耗大,线程更轻量但可靠性较低。在Java实现方面,详细讲解了通过继承Thread类、实现Runnable接口等5种创建线程的方法,并分析了不同方式的耦合性差异。文章还涉及并行/并发、分时复用等关键技术原理,为理解多线程编程提供了理论基础。

2025-10-03 16:48:45 330

原创 顺序表(ArrayList)

本文介绍了顺序表的实现原理及Java中的ArrayList使用。顺序表通过物理地址连续存储实现快速索引访问(O(1)),但插入删除效率较低(O(N))。文章详细展示了顺序表的Java实现代码,包括增删改查等基础操作,并提供了异常处理机制。同时讲解了ArrayList的三种构造方法和常用操作API,如add、remove、get、set等,以及判断元素存在、获取子列表等功能。通过List接口引用可以调用ArrayList的所有方法,文章最后总结了ArrayList的优缺点及核心操作方法。

2025-09-19 16:00:06 266

原创 数据结构(1)

摘要:本文介绍了Java编程中的几个重要概念。时间复杂度与空间复杂度描述算法性能,装箱拆箱实现基本类型与包装类转换。泛型支持类型参数化编程,yield用于switch表达式返回值,var实现局部变量类型推断。密封类(sealed)控制继承关系,instanceof用于类型检查与安全转换。这些特性共同提升Java代码的安全性、可读性和灵活性,涵盖JDK5到17的关键语法演进。

2025-09-10 20:39:55 321

原创 String类

String类摘要 String类具有不可变性(JDK9+改用byte[]存储),创建方式包括字面量(常量池)和new对象(堆内存)。常量池优化允许相同内容的对象复用内存地址,intern()方法可手动添加字符串到常量池。核心方法包括:比较(equals/compareTo)、查找(indexOf/contains)、截取分割(substring/split)、转换(toUpperCase/valueOf)和正则处理(matches/replaceAll)。性能优化建议:单次拼接用+,循环拼接用String

2025-08-25 21:46:38 279

原创 内部类和java重要接口

Java内部类与重要接口摘要: 内部类分为四种类型:静态内部类(仅访问外部类静态变量)、成员内部类(可访问所有外部成员)、局部内部类(方法内定义)和匿名内部类(即时实现抽象方法)。Comparable接口实现自然排序,需重写compareTo();Comparator接口提供灵活的外部比较规则,通过compare()实现多条件排序。Cloneable接口标记可克隆类,需重写clone()方法实现浅拷贝。Comparable与Comparator主要区别在于实现位置(内部/外部)和排序规则数量(单一/多规则)

2025-08-24 20:43:01 291

原创 多态(2)

本文介绍了Java面向对象编程中的多态特性及其相关概念。主要内容包括:1)多态的定义和实现方式,通过方法重写实现不同子类对同一方法的不同表现;2)方法重写的注意事项,如不能是静态方法、访问权限限制等;3)向下转型的操作方法和必要性,强调使用instanceof进行类型检查;4)抽象类的特点和使用场景,包含抽象方法的定义规则;5)接口的特性与实现,包括默认方法、多继承实现方式等。文章通过代码示例展示了这些概念的具体应用,帮助理解Java的多态机制和面向对象设计原则。

2025-08-23 21:04:59 358

原创 继承后续和多态(1)

摘要:本文介绍了Java继承和多态的核心概念。在继承部分,重点讲解了继承条件(is-a关系)、方法重载与重写的区别、super关键字的使用以及父子类构造方法的执行顺序。多态部分主要阐述了向上转型的三种实现方式及其局限性,并详细解释了动态绑定的实现机制(需父类引用子类对象并调用重写方法)。文章通过代码示例展示了相关语法规则,如方法重载的条件(方法名相同、参数列表不同)、方法重写的限制(访问权限、final/static修饰等),并对比了重载与重写的关键差异。

2025-07-14 15:24:22 236

原创 类、封装和继承

本文介绍了Java中类的封装和继承两大核心概念。在封装方面,详细讲解了类的基本结构(成员变量、构造方法、方法)、访问修饰符、static关键字用法以及封装的好处。在继承方面,说明了extends关键字的使用方式,子类如何继承父类属性和方法,以及super关键字访问父类成员的方法。文章还包含代码块执行顺序、静态与非静态方法的调用规则等重要知识点,并通过具体代码示例进行演示,帮助理解面向对象编程的核心思想。

2025-07-04 16:13:18 303

原创 结构体、关键字typedef和联合体

如果嵌套了结构体的情况,嵌套结构体成员对其到自己成员中最大对齐数的整数处,结构体大小就是所有最大对其数(含嵌套结构体中成员的对齐数)的整数倍。对齐数=编译器默认的一个对齐数与该成员变量大小的较小值。(VS中默认值为8)从第二个成员变量开始都要对齐到某个对齐数的整数倍的地址处。结构体的第一个成员对齐结构体起始偏移量为0的地址处。写一个程序,判断当前机器是大端还是小端?结构体总大小为最大对齐数的整数倍。注意:结构体传参最好传递地址。关键字:struct。关键字:union。

2025-07-01 14:56:45 337

原创 数组和递归

总结:递归胜在简洁性与问题契合度,迭代赢在效率与可控性。实际开发需根据问题规模、性能需求及可维护性权衡选择,必要时结合优化策略。数列示例:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …注意:数组只要初始化了,可以忽略数组大小,数组大小会根据初始化的内容来判断。注意事项‌: ‌不可返回局部变量的地址‌(函数结束后局部变量会被销毁)。注意:每一次函数调用都会向栈区申请内存空间,因此会溢出。注意:二维数组只能忽略行数,不能忽略列数。计算第n个斐波那契数。

2025-06-22 14:40:04 773

原创 扫雷游戏(9*9)

3区域,边角处会有识别不到的格子,因此需要11。

2025-05-27 17:21:00 148

原创 猜数字游戏(C语言)

(2)玩家猜数字,猜大猜小电脑会反馈,直到猜出为止。(1)电脑自动生成1~100随机数。

2025-05-17 16:02:30 316

原创 关机程序(c语言)

printf("请注意,你的电脑将在1分钟内关机,如果输入:我是猪,就取消关机\n");//input 是地址,不用加&if(strcmp(input,"我是猪")==0)printf("字符串不相等\n");printf("字符串相等\n");printf("\n已跳出所有循环\n");会导致代码难以维护(俗称"面条代码")。label: // 标签定义。

2025-05-07 12:51:54 1548

原创 自我介绍和c语言初识

C语言是由一条一条语句构成的,也可以说是由函数构成,它支持三种结构:顺序语句、选择语句、循环语句。#include <stdio.h> // 预处理指令。int main(void) // 主函数入口。:操作系统内核(Linux/Windows)、驱动程序。编出一个自己的游戏,成为一个优秀后端开发者。:数据库、编译器、网络协议栈。:以函数为基本执行单元。:单片机、IoT设备。

2025-04-19 14:45:24 556 1

空空如也

空空如也

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

TA关注的人

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