- 博客(45)
- 收藏
- 关注
原创 【网络原理】TCP协议如何实现可靠传输(确认应答和超时重传机制)
主要介绍TCP协议报头格式和TCP可靠传输机制的实现原理,详细讲解确认应答和超时重传机制和策略
2025-04-20 23:58:07
879
原创 【I/O数据流】文件内容操作
介绍了文件内容操作,数据流的基本概念(InputStream和OutputStream)(Reader和Writer),字节流和字符流使用到的类和具体方法,还介绍了Scanner的使用细节,读操作和写操作
2025-04-11 09:24:12
756
5
原创 【多线程】线程安全的集合类
介绍多线程下的安全类,多线程环境中的顺序表,队列,哈希表的使用,对比了HashMap,Hashtable和ConcurrentHashMap三者的区别
2025-04-08 15:24:01
891
原创 【多线程】synchronized锁升级和优化
本文概述了Java中synchronized锁的特性和优化策略。synchronized锁是一种自适应锁,能够在乐观锁和悲观锁、轻量级锁和重量级锁、自旋锁和挂起等待锁之间自动转换,以适应不同的锁竞争情况。它是一种不公平、可重入的锁,但不支持读写锁。文章还介绍了synchronized锁的升级过程,从无锁到偏向锁,再到轻量级锁和重量级锁。此外,还讨论了锁消除和锁粗化两种优化策略,旨在减少锁竞争开销,提高程序的并发性能。
2025-04-02 18:09:58
805
原创 【多线程】锁的策略
特性synchronized锁系统原生锁乐观锁/悲观锁乐观锁/悲观锁自适应悲观锁轻量级锁/重量级锁轻量级锁/重量级锁自适应重量级锁自旋锁/挂起等待锁自旋锁/挂起等待锁自适应挂起等待锁读写锁不是读写锁不是读写锁公平锁/非公平锁非公平锁非公平锁重入性锁/不可重入锁可重入锁不可重入锁。
2025-04-02 09:41:03
954
原创 【多线程】线程池
本文介绍了线程池的概念、实现及应用。线程池是一种通过预先创建并维护一组可复用线程来减少线程创建和销毁开销的技术,广泛应用于多线程编程中。Java中的ThreadPoolExecutor类提供了丰富的线程池功能,包括核心线程数、最大线程数、任务队列、线程工厂和拒绝策略等配置。标准库还提供了Executors工厂类,简化了线程池的使用。线程池的线程数量应根据任务类型(CPU密集型或IO密集型)进行调整。文章还提供了一个简单的自定义线程池实现示例,展示了如何通过阻塞队列和线程列表来管理任务和线程。
2025-04-01 21:04:36
962
1
原创 【多线程】定时器
本文介绍了定时器的概念、用途及Java实现。定时器用于在特定时间或间隔执行任务,如购物订单自动取消、心率检测等。Java中,Timer和TimerTask常用于实现定时功能,TimerTask通过重写run()定义任务,Timer的schedule()方法安排任务执行。文章还探讨了自定义定时器的实现,通过优先级队列存储任务,线程扫描并执行到期任务,使用同步机制确保线程安全。这种模拟定时器为复杂需求提供了灵活的解决方案。
2025-04-01 09:28:04
742
原创 【多线程】单例模式和阻塞队列
本文概述了Java编程中的单例模式和阻塞队列。单例模式通过限制类只能有一个实例来节省资源并简化管理,文章介绍了饿汉模式和懒汉模式两种实现方法,并讨论了线程安全问题。阻塞队列作为生产者-消费者模型的关键组件,通过线程阻塞和唤醒机制实现线程同步。文章还介绍了`BlockingQueue`接口及其方法,并提供了一个模拟生产者-消费者模型的示例代码,展示了阻塞队列的实现和应用。
2025-03-30 13:01:05
824
原创 【多线程】线程安全问题
本文详细探讨了多线程编程中的线程安全问题及其解决方案。线程安全是指程序在多线程环境下能够正确处理共享资源,确保数据的完整性和一致性。线程不安全的原因主要包括线程间的执行方式、多个线程修改同一个变量、操作的非原子性、内存可见性问题以及指令重排序问题。为了解决线程不安全问题,文章介绍了锁机制,通过`synchronized`关键字实现对共享资源的互斥访问,确保同一时间只有一个线程能操作临界区资源。文章还讨论了死锁的产生条件及解决方法,如规定加锁顺序、引入计数器等。此外,`volatile`关键字用于解决内存
2025-03-25 16:03:08
5764
3
原创 计算机操作系统和进程
操作系统是计算机系统的核心软件,负责管理计算机的硬件和软件资源,并为用户和应用程序提供统一的接口。常见的操作系统:Windows,macOS,Linux,Android,iOS,鸿蒙注意:操作系统是一个软件。
2025-03-19 22:52:40
777
1
原创 【Java--数据结构】优先级队列( PriorityQueue)
优先级队列是一种特殊的队列,它在入队时会根据元素的优先级进行排序,优先级最高的元素排在队列的前面,出队时会优先出队优先级最高的元素。核心特点:元素按优先级排序,每次取出优先级最高(或最低)的元素 PriorityQueue类底层使用堆这种数据结构,堆适用于完全二叉树堆是一种特殊的完全二叉树数据结构完全二叉树:除了最后一层外,每一层的节点数都是满的,并且最后一层的节点都靠左排列。堆的分类:(1)最大堆:父节点 ≥ 子节点,根节点为全局最大值。(2)最小堆:父节点 ≤ 子节点,根节点为全局最小值。(1)堆序性:
2025-03-13 22:27:32
1121
1
原创 【Java---数据结构】二叉树(Tree)
分层遍历的思想:在原来分层遍历的基础上, 控制每次进行出队的个数,从而控制入队的个数,得到每层的个数。深度为k的二叉树,第1到k−1层的节点数都达到最大值,而第k层的节点从左到右连续排列,没有空缺。每个节点包含数据部分和指向其左右子节点的指针。孩子兄弟表示法:通过将树中的每个节点的子节点和兄弟节点进行关联,从而实现对树的存储和操作。具有n个节点的完全二叉树,n为偶数--度为1的节点==1,n为奇数--度为1的节点==0。一棵二叉树,其中每个节点的值大于其左子树上所有节点的值,且小于其右子树上所有节点的值。
2025-03-10 22:04:56
973
1
原创 【Java---数据结构】栈和队列【Stack & Queue】
栈(Stack):是一种特殊的线性表,它只能在表的一端(称为栈顶)进行插入和删除操作。可以将栈理解成一摞盘子,只能从上面进行取走,还放在最上面 栈顶:进行插入和删除的位置栈底: 不能进行插入和删除栈顶的元素会发生改变,但是栈底的元素相对来说是固定的特点:后进先出(LIFO):先进入栈的元素,会最后一个取出操作的局部性:栈的操作只涉及栈顶元素,不会影响到栈中的其他元素。 主要操作:其中usedSize表示栈中元素的个数 主要操作: 主要操作:判空,为空则返回null,否则返回栈顶元素
2025-03-07 20:41:44
754
1
原创 【Java---数据结构】链表 LinkedList
(从前往后)while循环中的判断条件表示:是否存在下一个元素,如果存在,则获取迭代器的下一个元素并输出,因为 next 方法,所以在每次调用后进行移动1位。结点一般都是从堆上申请出来,每次在堆上申请的空间,按照一种策略来进行分配,多次申请出来的空间,可能连续,也可能不连续。双向链表是链表的一种,它的每个节点除了存储数据外,还包含两个指针:一个指向前一个节点,另一个指向下一个节点。核心思想:快的比慢的先走了k-1个,然后每次都移动一个, 那么快的到了,满的就是倒数第k个.那么快的到了,慢的一定就在中间。
2025-03-04 21:57:29
737
1
原创 【java--数据结构】顺序表
/增加//扩容usedSize++;注意:1. 在进行增加操作前,需要进行顺序表的判满;2. 如果顺序表没有剩余空间,则需要进行扩容操作3. 增加成功后,不要忘记顺序表元素+13.2.2 指定位置增加//在某个位置增加System.out.println("位置不合适");return;//扩容//必须倒着诺数据i >=pos;注意:1. 判断增加的位置是否合法;2. 增加位置合法,进行顺序表的判满;
2025-02-27 21:26:36
1175
2
原创 java 内部类 !!!
这个拥有完整结构的子部分,只与它所属的外部事物产生关联,作用是服务于它所处的外部事物,为外部事物的功能实现、状态维护等提供必要的支持和帮助,在 Java 中,内部类是将一个类定义在另一个类的内部,作为外部类的一个成员或局部成员。1. 静态内部类可以直接访问外部类的静态成员,但不能直接访问外部类的实例成员。2. 如果外部类和实例内部类中具有相同名称成员时,优先访问的是内部类自己的。2. 外部类访问静态内部类的实例成员时,需要创建静态内部类的对象。4. 要访问实例内部类中成员,必须要创建实例内部类的对象。
2025-02-05 14:35:13
247
2
原创 java 抽象类详解!!!
抽象类是一种不能被实例化的类,它通常作为其他类的基类(父类),为子类提供一个通用的模板或框架。抽象类中可以包含抽象方法和非抽象方法。注意:1. 抽象类也是类,内部可以包含普通方法和属性,甚至构造方法2. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类3. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量。
2025-01-27 00:55:40
446
原创 java类和对象
在java中类的定义要使用关键字classclass 类名{field;// 字段(属性) 或者 成员变量method;//行为 或者 成员方法注意:类中的内容可以称为类的成员,属性用于描述类,行为用于表示类的功能比如:小狗这个类中,名字,年龄和颜色是小狗的属性,小狗的喜欢吃骨头和摇尾巴是小狗的class Dog{//属性/成员变量:定义在方法的外部,类的内部int age;//行为/成员方法System.out.println(name +"喜欢吃骨头");
2025-01-20 21:15:01
774
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人