随笔分类 - java web
摘要:[TOC] 线程池 1. 并发队列:阻塞队列和非阻塞队列 区别如下: 入队: 非阻塞队列:当队列中满了的时候,放入数据,数据丢失 阻塞队列:当队列满了的时候,进行等待,什么时候队列中有出队的数据,那么第 11 个再放进入 出队: 非阻塞队列:如果现在队列中没有元素,取数据,得到的是 null 阻塞队
阅读全文
摘要:[TOC] Lambda 表达式 1. 为何需要 Lambda 表达式 在 Java 中, 我们无法发将函数作为参数传递给一个方法,也无法声明返回一个函数的方法 在 JavaScript 中,函数参数是一个函数,返回值是另一个函数的情况是非常常见的;JavaScript 是一门非常经典的函数式语言
阅读全文
摘要:[TOC] LinkedList 源码分析 1. 链表介绍 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储
阅读全文
摘要:[TOC] ArrayList 源码分析 1. 数组介绍 数组是数据结构中很基本的结构,很多编程语言都内置数组。 在 Java 中当创建数组时会在内存中划分一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将
阅读全文
摘要:[TOC] Junit 学习笔记 1. 编写测试用例时需要注意 1. 测试方法上必须使用 进行修饰 2. 测试方法必须使用 进行修饰,不能带任何参数 3. 新建一个车源代码目录来存放我们的测试代码 4. 测试类的包应该和被测试类保持一致 5. 测试单元中的每个方法必须可以独立测试,测试方向间不能有任
阅读全文
摘要:[TOC] Idea 使用 Junit4 进行单元测试 1. Junit4 依赖安装 Idea 默认使用 作为测试框架,我们将其更改为 Junit4。 2. 编写测试代码 编写一个简单的加减乘除工具类,代码如下: Calculate.java 新建 test 目录,Idea 自动生成的测试类将自动放
阅读全文
摘要:Java 定时器 1. 概述 Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部利用了一个后台线程 TimerThread 有计划地执行指定任务。 Timer :是一个实用工具类,该类用来调度一个线程(schedule a thread) ,使它可以在将来某一时刻执
阅读全文
摘要:生产者和消费者模型 1. 什么是生产者和消费者模型 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。 再具体一点: 1. 生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 2. 如果缓冲区已经满了
阅读全文
摘要:等待和通知 API 类提供了一套等待/通知的 API,它由 3 个 wait()、一个 notify() 和一个 notifyAll() 方法组成。wait() 方法等待某个条件成立,当这个条件成立时,notify() 和 notifyAll() 方法通知处于等待中的线程。 :导致当前线程一直处于等
阅读全文
摘要:转载自 "https://www.jianshu.com/p/19f9ce1d82a4" 继承 Thread 类 run() 方法 VS start() 方法: run() 方法:普通的成员方法 start() 方法:负责启动一个新的线程,并调用 run() 方法 因此启动线程,需要使用 start
阅读全文
摘要:synchronized(修饰方法和代码块) 1. 含义 synchronized 是同步锁,用来实现互斥同步。 在 Java 中,关键字 synchronized 可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作)。 synchroniz
阅读全文
摘要:[TOC] volatile 关键字(修饰变量) 1. 含义 是一种比 关键字更轻量级的同步机制,访问 变量时,不会执行加锁操作。 2. 作用 volatile 是一个类型修饰符(type specifier)。 volatile 的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求
阅读全文
摘要:[TOC] 并发三大特性 原子性、可见性、有序性 1. 原子性 含义 一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行。 在 Java 中,对 基本数据类型的变量 的 读取 和 赋值 操作是原子性操作。 重要 不采取任何的原子性保障措施的自增操作并不是原子性的。 如何保证原
阅读全文
摘要:Thread 和 Runnable 1. 简介 Java 主要是通过 类以及 接口实现线程机制的。 1. 类为底层操作系统的线程体系架构提供一套统一接口 2. 接口为关联 对象的线程提供执行代码 2. 创建 Thread 和 Runnable 对象 2.1 创建 Runnable 对象 创建 Run
阅读全文
摘要:附:更这个系列感觉自己像是又挖了一个坑🌚,不过趁自己刚好工作不太忙,有空闲期,静下心来研究学习源码也是一件很值得做的事,自己尽量会把这个坑填完😂。 [TOC] Java 集合源码分析(一)HashMap 1. 概要 HashMap 作为我们经常使用的 Java 集合工具类,无论是学习研究,帮助自
阅读全文
摘要:《深入理解 Java 虚拟机》学习 Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种虚拟机规范 2. 目的 缓存一致性 在硬件中,为了解决处理器与内存的速度矛盾,在两者之间使用了高速缓存,但也引入了新的
阅读全文
摘要:《深入理解 Java 虚拟机》学习 类加载机制 1. 概述 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。 2. 类加载的时机 2.1 类的生命周期: 加载 连接(验证 准备 解析)
阅读全文
摘要:《深入理解 java 虚拟机》学习 内存分配 1. Minor GC 和 Full GC 区别 概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具 备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。 老年代 GC (Major
阅读全文
摘要:《深入理解 Java 虚拟机》学习 垃圾收集器 1. Serial 收集器(新生代) 含义: 单线程收集器。 缺点: 进行垃圾收集时,必须暂停其他所有的工作线程。 优点: 简单而高效。 示例: 2. ParNew 收集器(新生代) 含义: Serial 收集器的多线程版本,使用多条线程进行垃圾收集。
阅读全文
摘要:《深入理解 Java 虚拟机》学习 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管
阅读全文

浙公网安备 33010602011771号