![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
核心知识点
文章平均质量分 70
无赖H4
人丑嘴不甜,长得难看又没钱!
展开
-
对称加密和非对称加密
对称加密和非对称加密对称加密非对称加密数字签名CA证书HTTP是一种不安全(嗅探、篡改)的协议所以需要引入HTTPS(HTTP + SSL)对称加密加密密钥 = 解密密钥优点:速度较快,缺点:密钥的传输和保管也是不安全的(可能会有中间人获取)所以还是有可能使用一个不安全的密钥进行传输非对称加密非对称加密:加密密钥!=解密密钥虽然速度较慢,但是不怕密钥泄露如何保证在传输的时候,没有中间人呢?数字签名数字签名,数字摘要——对数据进行哈希,利用相同的数,哈希值一定相同如果签名的值相同原创 2021-07-30 11:00:28 · 735 阅读 · 1 评论 -
初识TCP
TCP -- Transmission Control Protocol可靠性TCP报头确认应答机制TCP协议和UDP协议是运行在传输层的协议,也是为了结局进程间通信的问题,它相对于UDP协议而言,是一种有连接的,可靠的协议。可靠性为什么需要可靠性?因为网络的不可靠,而应用层很多时候需要可靠的传输(核心)什么是可靠性?尽可能的吧数据发送给对方,不丢包如果实在发送不到,至少通知应用层这个错误保证数据的有序到达TCP保证不会收的错误的数据(只能保证无意识的错误,不能防范有意识的篡改)TC原创 2021-07-29 21:58:38 · 752 阅读 · 2 评论 -
初识UDP协议
UDP协议UDP格式UDP特点不可靠无连接可以广播面向数据报性能相对高UDP的缓冲区UDP是在传输层上工作的协议传输层协议:是在主机已经可以和主机建立链接的前提下,实现进程和进程间的通信。UDP格式UDP协议:16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度如果校验和出错,就会直接被丢弃校验和:CRC算法 ——>Hash算法可以判断出数据是否被修改UDP协议首部有一个16位的最大长度,也就是说,一个UDP能传输的最大长度是64K(包含UDP首部)如果需要传输的原创 2021-07-29 15:48:38 · 852 阅读 · 1 评论 -
定时器+线程池
定时器+线程池定时器线程池创建Executors定时器定时器:定时器就像设置一个闹钟,当时间到达后完成某件事情,像JS中的是setTimeout。(JS中的setInterval是每隔多久执行一次)1、我们使用定时器的时候,最主要的是小一个任务Runnable,TimeTask就实现了Runnable接口,所以我们直接创建一个Task。2、设置定时器:Timer timer = new Timer();3、调度:利用timer.schedule()方法设置task和delay;schedule原创 2021-07-10 17:31:44 · 900 阅读 · 5 评论 -
初识阻塞队列
阻塞队列阻塞队列生产者-消费者模型模拟实现阻塞队列阻塞队列阻塞队列表现为通知模式的队列。生产者因为队列满了而阻塞在队列上,直到队列不满时被通知唤醒。java.concurrent.BlockingQueue <E> interface继承自 java.util.Queue <E> 队列concurrent:并发parallel:并行java.util.concurrent juc包ArrayBlockingQueue 数组阻塞队列(循环队列)实现阻塞队列的(w原创 2021-07-08 18:29:55 · 564 阅读 · 1 评论 -
按序打印——wait的再理解
按序打印加锁volatilewaitoj我们提供了一个类:public class Foo {public void first() { print(“first”); }public void second() { print(“second”); }public void third() { print(“third”); }}三个不同的线程 A、B、C 将会共用一个 Foo 实例。一个将会调用 first() 方法一个将会调用 second() 方法还有一个将会调用 third()原创 2021-07-07 09:07:55 · 603 阅读 · 1 评论 -
线程等待机制——wait/notify(notifyAll)
线程等待机制语法waitwait()加锁notify使用场景wait和sleep对比wait、notify、notifyAll属于Object类下的三个普通方法(java中所有对象都具备这三个方法)基本使用规则:对象.wait(),使得线程进入“等待”状态,直到有其他线程,在同一个对象上调用notify/notifyAll()方法语法关于wait和notify的使用规则,必须先对等待的对象,通过synchronized加锁Object o = new Object();//等待唤醒的对象syn原创 2021-07-06 09:20:05 · 1365 阅读 · 2 评论 -
初识单例模式
单例模式饿汉模式懒汉模式单线程版多线程版-性能低多线程版-性能高单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。作为单例模式:原创 2021-07-05 19:03:18 · 550 阅读 · 1 评论 -
volatile关键字
volatile关键字语法作用volatile——脆弱的,易失的语法volatile关键字是变量修饰符,用来修饰变量主要修饰静态属性、属性例如:class ThreadDemo { private volatile int n; public static volatile int a;}作用保护内存可见性(最重要的作用)被volatile修饰的变量不能被缓存,每次读取都必须从主存储中读取,每次写入,必须刷回主存储中保护一定的原子性例如:volatile原创 2021-07-04 19:54:11 · 539 阅读 · 2 评论 -
synchronized
synchronized 关键字-监视器锁monitor locksynchronized语法预备知识synchronized关键字的作用两个线程互斥例子:synchronized 加锁的过程synchronized 释放锁的过程synchronized容易被忽视的地方synchronized的作用synchronized 是一种保护线程安全的机制。synchronized语法修饰任意的方法——方法修饰关键字普通方法 synchronized void m2() {}静态方法 s原创 2021-06-30 17:04:56 · 552 阅读 · 1 评论 -
多线程带来的风险——线程安全
线程安全线程安全原子性常见的操作是原子的常见的不是原子的操作内存可见性JMM代码重排序那些场景下会存在线程安全常见的一些类线程安全多线程代码中往往表现出很强的随机性其主要原因是:线程调度所导致的一个程序是线程安全的概念:程序的运行结果100%符合程序开发的期望为什么会出现线程不安全的情况没有保证原子性存在内存可见性问题由于代码重排序所带来的的问题原子性高级语言中的一条语句往往对应的是很多条指令,例如:n++指令:把n这个变量对应的内存中的数据,加载到寄存器中 ( LOAD)原创 2021-06-29 18:44:33 · 619 阅读 · 0 评论 -
线程初步认识
线程认识线程(Thread)概念什么情况下需要线程创建Java线程Thread的几个常见属性如何创建Java线程start() vs run()Thread类常见的构造方法:线程中断调用方法等待一个线程线程的状态Thread.isXXX()Thread中常见静态方法观察线程状态工具认识线程(Thread)概念线程属于进程的组成(每个进程中至少有一个线程(主线程),也可以有多个线程)线程是os进行调度的最小单位。进程是系统分配资源(包括CPU)的最小单位,线程是系统调度(CPU分配)的最小单位原创 2021-06-28 18:45:44 · 604 阅读 · 1 评论 -
进程的初步认识
进程os定位进程的初步认识关于进程调度/切换时间片并发和并行进程的状态内核态与用户态进程间的通信os定位在计算机的软硬件构架中,操作系统的定位是:一套纯正“管理”的软件(分配资源)进程的初步认识进程是os进程资源分配的最小单位主要表现为硬件资源、文件资源(硬盘资源)os的内存管理1、做到隔离性的空间分配2、线性地址和物理地址之间的转换关于进程调度/切换1、为什么要有进程调度?因为os在进程之间分配CPU2、什么是进程调度?os通过完成一些动作,使得CPU从运行A进程指令原创 2021-06-24 21:53:12 · 591 阅读 · 1 评论