初识HTTP2.0

HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。由互联网
工程任务组(IETF) 的Hypertext Transfer Protocol Bis (httpbis) 工作小组进行开发。该组织于2014年12月将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。HTTP/2标准于2015年5月以RFC 7540正式发表。

彻底搞懂HTTPS的加密原理

HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我当年学习它的时候也废了挺大功夫。

对称与非对称加密、数字签名、数字证书等,在学习过程中,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了HTTPS的加密机制。

本文以问题的形式逐步展开,一步步解开HTTPS的面纱,希望能帮助你彻底搞懂HTTPS。

as-if-serial规则和happens-before规则

我们知道为了提高并行度,优化程序性能,编译器和处理器会对代码进行指令重排序。但为了不改变程序的执行结果,尽可能地提高程序执行的并行度,我们需要了解as-if-serial规则和happens-before规则。

并发

对象在内存中的内存布局

对象的内存布局HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: Mark Word(标记字段):对象的Mark Word部分占4个字节,其内容是一系列的标记位,比如轻量级锁的标记位,偏向锁标记位等等。 Kla...
Java

为什么AQS底层是CAS + volatile

CAS操作和volatile简述CAS操作CAS是什么?CAS是compare and swap的缩写,从字面上理解就是比较并更新;主要是通过 处理器的指令 来保证操作的原子性 。 CAS 操作包含三个操作数: 内存位置(V) 预期原值(A) 更新值(B) 简单来说: 从内存位置V上取到存储的值,将值和预期值A进行比较,如果值和预期值A的结果相等,那么我们就把新值B更新到内存位置V上...
并发

Synchronized与ReentrantLock

Java 里面,最基本的互斥同步手段就是 synchronized 关键字,这是一种块结构( Block Structured )的同步语法。还有就是 Java 类库中新提供了 java. util.concurrent 包,其中的 java.util.concurrent.locks.Lock 接口便成了 Java 另一 全新的互斥 同步手段。

并发

两个线程交替打印数字和字母

  1. 使用LockSupportpark()unpark() 方法
  2. 使用wait()notify()方法
并发

Java如何开启线程?怎么保证线程安全?

线程和进程的区别进程是操作系统进行资源分配的最小单元。线程是操作系统进行任务调度分配的最小单元,线程隶属于进程。 如何开启线程? 继承Thread类,重写run方法。 实现Runnable接口, 实现run方法。 实现Callable接口, 实现call方法。通过FutureTask创建一个线程,获取到线程执行的返回值。 通过线程池来开启线程。 怎么保证线程安全?加锁 JVM提供的锁...
并发

聊聊对关系型数据库和非关系型数据库的理解

关系型数据库关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织 优点 易于维护:都是使用表结构,格式一致; 使用方便:SQL语言通用,可用于复杂查询; 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点 读写性能比较差,尤其是海量数据的高效率读写; 固定的表结构,灵活度稍欠; 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈...

同一线程组下的线程,一个线程的异常会影响其他线程运行么?

当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行! 一个线程溢出后,进程里的其他线程还能照常运行。 同一线程组下的线程,一个线程出现异常不会影响其他线程的运行。