自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 https加密过程(SSL握手)

SSL握手流程 https在http的基础上多了SSL加密层。https的加密过程也就是SSL的握手过程。 为什么要有MAC密钥 MAC密钥相当于数据校验,是为了保证数据完整性而存在的。SSL将数据流分割成记录,每条记录都会附上一个MAC,然后再对“记录+MAC值”进行加密。比如客户端要向服务端发送数据,对于数据的每个记录,客户端都会用它的MAC密钥Mc对记录进行一次MAC计算生成一个MAC值,然后再用它的加密密钥Ec对“记录+MAC值”进行加密。不过需要注意SSL记录的类型、版本、长度不会参与加密。

2020-10-10 15:40:38 1082

原创 【Java学习笔记】多线程 Part 5 - 线程池

多线程 Part 4 - 线程池两种线程模型1. 用户线程ULT2. 内核线程KLT为什么要有线程池 两种线程模型 1. 用户线程ULT 由用户程序实现,不依赖于操作系统。不需要用户态与核心态的切换,速度快。内核对用户线程无感知,线程阻塞则进程阻塞。 2. 内核线程KLT 由操作系统管理,线程阻塞不会引起进程阻塞。在多处理器下,多线程在多处理器上并行运行。效率比用户线程低。JVM基本用的是KLT。从Java创建的线程会1:1的对应到内核,然后由CPU调度执行。 为什么要有线程池 创建线程和销毁线程都是很耗资

2020-10-05 17:57:13 750 2

原创 【Java学习笔记】多线程 Part 7 - CountDownLatch

CountDownLatch一、CountDownLatch简述二、代码示例1. 基本应用2. 跑步比赛三、源码分析(基于Java 8)1. new CountDownLatch()2. countDown()3. await()四、CountDownLatch 和 join 有区别吗 一、CountDownLatch简述 CountDownLatch是JUC下的其中一个辅助类。 当有某个事务需要在其他一些事务执完成之后再执行,我们就可以使用CountDownLatch来完成这个工作。 Coun

2020-10-04 09:32:01 258

原创 【Java学习笔记】多线程 Part 4 - Condition

多线程 Part 4 - Condition一、Condition基本用法二、源码分析1. await() 被唤醒前2. signal()3. await() 被唤醒后三、await() & signal 流程图 一、Condition基本用法 Condition和Lock一样来自JUC,一般都会和Lock连用,并且方式和synchronized非常相似。 等待 唤醒 synchronized wait() notify() Lock condition.await() con

2020-09-20 16:20:46 247

原创 【Java学习笔记】多线程 Part 3 - ReentrantLock

多线程 Part 3 - ReentrantLock1. ReentrantLock 加锁原理2. ReentrantLock 解锁原理3. ReentrantLock 处理中断 1. ReentrantLock 加锁原理 简单测试一下两个线程分别给count变量做加1操作20000次 class Process implements Runnable { int count = 0; private ReentrantLock lock = new ReentrantLock(); public

2020-09-19 06:03:51 311

原创 【Java学习笔记】多线程 Part 2 - synchronized

多线程一、基本概念二、线程的3种创建方式1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口 一、基本概念 程序是指令和数据的有序集合,其本身没有任何运行的含义 进程是程序的一次执行过程,是系统资源分配和拥有的单位 线程是CPU调度和分配的基本单位 线程和进程都可并发执行 线程的划分尺度远小于进程,是多线程比多进程并发性更高 不同进程间不会共享逻辑地址空间 进程中的线程共享堆区,但各自维持自己的栈 main()称之为主线程,为系统的入口,用于执行整个程序 二、线程的3种创

2020-09-18 18:29:12 408

原创 【Java学习笔记】多线程 Part 1 - 多线程基础

多线程基础一、基本概念二、线程的3种创建方式1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口小结三、线程状态四、线程停止五、线程礼让 yield六、守护线程 daemon 一、基本概念 程序是指令和数据的有序集合,其本身没有任何运行的含义 进程是程序的一次执行过程,是系统资源分配和拥有的单位 线程是CPU调度和分配的基本单位 线程和进程都可并发执行 线程的划分尺度远小于进程,是多线程比多进程并发性更高 不同进程间不会共享逻辑地址空间 进程中的线程共享堆区,但各自维持自己

2020-09-17 16:36:06 355

原创 【Java学习笔记】代理模式

代理模式一、静态代理模式角色分析老套租房例子静态代理模式的优点静态代理模式的缺点二、动态代理模式还是租房的例子动态代理的优点 一、静态代理模式 角色分析 抽象角色:一般使用接口或抽象类来解决 真实角色:被代理的角色 代理角色:代理真实角色,一般会有附属操作 客户:访问代理对象的人 老套租房例子 租房是抽象角色 public interface Rent { void rent(); } 房东是真实角色,房东现在只要管自己租房别的什么都不用管 public class Host impleme

2020-09-14 15:18:09 83

原创 【Java学习笔记】单例模式

单例模式一、单例模式的作用二、应用场景三、分类1. 饿汉式2. 静态内部类3. 懒汉式4. 枚举四、总结 一、单例模式的作用 通过单例模式可以保证系统中一个类只有一个实例 二、应用场景 主要应用在资源共享控制资源之间交流 数据库连接池 日志应用 应用配置 线程池 三、分类 1. 饿汉式 定义变量的时候就直接初始化 但容易浪费空间 //饿汉式 public class Hungry { //饿汉式可能会浪费空间 private Hungry() { } private fina

2020-09-14 12:26:29 534

原创 【Java学习笔记】工厂模式

工厂模式简单工厂模式 作用: 实现创建者和调用者的分离。原本我们是用new来创建新对象,而现在我们用一个工厂类来代替创建新对象的工作,讲调用者与实现类解耦(当实现类发生改变时,调用者的代码不需要做任何改变)。 //没有用工厂模式的时候 public class Consumer { public static void main(String[] args) { Car vmw = new Vmw(); Car tesla = new Tesla(); } } 分类: 简单工厂模式 工厂方法

2020-09-14 08:23:27 147

空空如也

空空如也

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

TA关注的人

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