Java
java 相关知识
AldarLin
不积跬步,无以至千里
展开
-
【多线程】多线程之并发工具类
一、概述jdk 1.5 后,为我们提供的并发工具类有:名称 描述 详细 CountDownLatch 同步计数器 初始化时,传入需要计数的线程等待数,并用 await() 阻塞当前线程,其他线程中可以调用countDown()方法让计数器减一,当计数器为 0 时,则放行 CyclicBarrier 栅栏 让一组线程达到某个屏障被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程才会继续运行 Semaphore 信.原创 2020-08-11 17:51:28 · 1499 阅读 · 0 评论 -
【集合】Queue
一、Queue 概念Queue 是一种先进先出的结构,是线程安全的二、常见的Queue 解析2.2 ArrayBlockingQueue2.2.1 概念ArrayBlockingQueue 是一个数据结构的有界阻塞队列2.2.2 特点线程安全 初始化时必须指定大小2.2.3 常用方法方法名 描述 临界行为 队列尾部添加元素 add 添加一个元素 若队列已满,抛出IIIegaISlabEepeplian 异常 offe...原创 2020-08-11 16:44:37 · 596 阅读 · 0 评论 -
【集合】Map 和 Set
一、Hash1.1什么是 hash哈希是将任意长度的输入通过散列算法,变换成固定长度的输出,这个输出就是哈希值。● 空间压缩这种转换实际是一种空间映射,哈希值的空间通常小于原输入占用的空间● 没有唯一性不同的输入可能转成出同一个哈希值,但不同的哈希值必定对应着不同的输入1.2 哈希冲突(碰撞)哈希冲突即出现输入不同,转换出的哈希值却相同的情况二、Map 集合类2.1 HashMap2.1.1 概念HashMap 是基于哈希表的 Map 接口的非同...原创 2020-08-11 16:41:44 · 881 阅读 · 0 评论 -
【集合】集合基础概念和 List
目录一、集合汇总图二、List、Set、Map、Queue三、ArrayList 和 LinkedList3.1 ArrayList3.2 LinkedList3.3 ArrayList 和 LinkedList 的对比3.4 Vector3.4.1 Vector 介绍3.4.2 ArrayList 和 Vector 对比3.5实现 List 线程安全一、集合汇总图二、List、Set、Map、Queue● ListList 是一个有序的容..原创 2020-08-11 16:37:32 · 413 阅读 · 0 评论 -
【多线程】ThreadLocal
一、ThreadLocal 概述1.1 ThreadLocal 是什么ThreadLocal 会为每一个线程中都创建一个副本,每个线程仅可访问自己内部的副本变量,无法互相访问其他线程的副本变量。本质上是每个线程都有一个 ThreadLocalMap 类型的变量 threadLocals,以设置的 ThreadLocal 对象为 Key,要保存的值为 Value,存储到这个 threadLocals 中。由于每个线程都有自己的 threadLocals,故实现了线程隔离。且 map 中可以记录原创 2020-08-06 10:14:15 · 650 阅读 · 0 评论 -
【JVM】JVM 学习
执行引擎:将 java 语言翻译成机器语言的翻译者# 反编译javap -v StackStruTest.class二、JVM 生命周期# 打印当前程序执行的进程jps三、JVM 发展由于 JIT(即时编译器) 将字节码指令翻译成机器指令,是需要时间的。若只使用 JIT将所有代码先进行编译,则在启动时会发现有明显的卡顿。...原创 2020-08-04 23:54:58 · 130 阅读 · 1 评论 -
【多线程】volatile
一、jvm 内存模型在理解 volatile 之前,先要了解 jvm 内存模型如上图所示,有几个关键点:所有线程的共享变量都存储在主内存中,每个线程都有一个专属于自己的工作内存,每个线程都不会直接操作主内存中的变量,而是将主内存上的变量放进自己的工作内存中,只操作工作内存的数据。 当对工作内存修改完毕后,再将修改后的结果放回到主内存中。 每个线程都只能操作自己工作内存中的变量,无法直接访问其他工作内存的变量 线程间的变量传值只能依赖主内存完成二、volatile 的作用...原创 2020-08-04 18:03:37 · 286 阅读 · 0 评论 -
【多线程】锁机制详解
一、锁概述1.1 概述在多线程环境下,为了让多线程安全地访问和使用共享变量,必须引入锁机制。锁机制即当一个线程持有锁后,其他线程只能进行等待,直到持有锁的线程释放锁,再次重新竞争锁。1.2 三种锁的大类型锁大致可以分为互斥锁、共享锁、读写锁1.2.1 互斥锁(排它锁)互斥锁,即只有一个线程能够访问被互斥锁保护的资源在访问共享对象之前,对其进行加锁操作。在访问完成之后进行解锁操作。加锁后,其他试图加锁的线程会被阻塞,知道当前线程解锁。解锁后,原本等待状态的线程变为就绪状态,重.原创 2020-08-03 18:02:11 · 9101 阅读 · 0 评论 -
【多线程】Timer 和 ScheduledThreadPoolExecutor
一、周期性任务实现1.1 应用在实际应用中,我们需要创建一些延迟性的、周期性的任务,如每隔一小时记录一次日志、每隔一小时统计一次数据等。在 java 中给我们提供了两个实现方式,分别为 Timer 和ScheduledThreadPoolExecutor。1.2 对比1.2.1 两者对比 Timer ScheduledThreadPoolExecutor 线程 只支持单线程 支持多线程 多任务 任务之间互相影响 任务直接隔离 调度...原创 2020-07-31 18:01:41 · 322 阅读 · 0 评论 -
【多线程】线程池详解
一、为什么使用ThreadPoolExecutor二、ThreadPoolExecutor 基本参数原创 2020-07-31 10:56:51 · 569 阅读 · 0 评论 -
【多线程】多线程基础
一、程序、进程、线程、协程● 程序一段静态的代码,一段指令的有序集合,他是一个静态的实体,是应用程序执行的蓝本● 进程进程就是程序的一次动态执行,是一个动态的实体。它拥有自己的生命周期● 线程线程是进程的组成部分。一个进程可以有多个线程,而这多个线程必须依赖于同一个父进程。线程可以拥有自己的堆栈、程序计数器和局部变量,但不能拥有自己独立的系统资源。一个进程下的所有线程,都共享该进程的所有资源。二、线程的实现方式2.1 三种方式对比● 继承 Thread 类描述..原创 2020-07-30 18:03:18 · 570 阅读 · 0 评论 -
【JWT】JWT 实现用户登录控制
目录一、JWT 简介二、JWT 的构成2.1 头部(Header)2.2 载荷 (Payload)2.3 签名2.4 最后生成出的 jwt一、JWT 简介JSON Web Token(JWT) 是一种十分轻巧的规范,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。即 JWT 是用于在客户端和服务器之间传递用户信息的一段 JSON 格式的加密字符串,同时 JWT 可以用于让各个微服务识别用户的身份信息。即 JWT 中封装有用户的身份信息。二、..原创 2020-06-10 23:55:14 · 947 阅读 · 0 评论 -
【Thymeleaf】Thymeleaf 学习笔记
目录一、Thymeleaf 介绍1.1 Thymeleaf 概念1.2 Thyeleaf 特点二、Thymeleaf 使用2.1 基本语法2.2.1 输出文本内容 th:text2.2.2 表单提交 th:action2.2.3 for循环 th:each2.2.4 Map 输出2.2.5 时间输出2.2.6 条件判断2.2.7 定义模块一、Thymeleaf 介绍1.1 Thymeleaf 概念thymeleaf 是一个模板引擎工具,主要用于页面原创 2020-06-06 07:10:03 · 508 阅读 · 0 评论 -
J2EE 学习
一、什么是 J2EE二、 创建 webapp 项目https://www.jianshu.com/p/455c7c11dfb2https://blog.csdn.net/dream_an/article/details/49020211三、 使用原创 2020-07-23 10:24:05 · 404 阅读 · 0 评论