木西笔记

个人博客

TCP/IP系列(4)-SSL/TSL详解(3)

TLS1.2的握手步骤

概述TLS 握手协议包含如下几步: 交换 Hello 消息, 交换随机数和支持的密码套件列表, 以协商出密码套件和对应的算法。检查会话是否可恢复 交换必要的密码参数以允许 client 和 server 协商预备主密钥 premaster secret 交换证书和密码信息以允许 client 和 server 进行身份认证 从预备主密钥 premaster secret 和交换的随机数中生...

TCP/IP系列(4)-SSL/TSL详解(2)

SSL/TSL详解(2)-TLS层次分类

概述前面章节,我们简单介绍了TLS的秘钥交换的算法。接下来我们来讲一下SSL层。 TLS层SSL层TLS是介于网络层和传输层之间的半层。 协议层分类TLS/SSL 协议位于应用层和传输层 TCP 协议之间。TLS 粗略的划分又可以分为 2 层: 靠近应用层的握手协议 TLS Handshaking Protocols 靠近 TCP 的记录层协议 TLS Record Protocol ...

TCP/IP系列(4)-SSL/TLS详解(1)

SSL/TLS详解(1)--安全规范

概述SSL/TSL 协议SSL(安全套接字层)是一种标准安全协议,用于在在线通信中建立Web服务器和浏览器之间的加密链接。 TLS:(Transport Layer Security): 是SSL协议(Secure Sockets Layer)的升级版,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。现在习惯将这个两个组合在一起称为S...

Thrift框架详解(四)

协议和编解码(2)-TCompactProtocol

概诉上一届主要讨论了Thrift编解码中的二进制协议格式。这是一种比较大众的协议。本节来讨论二进制协议的另一种加强版本。TCompactProtocol 编解码对于二进制编码,经常需要对数据进行压缩以节省空间,varint可以压缩较小的正数,但是对于负数varint反而更浪费空间,zigzag编码可以处理负数,使负数也可以使用varint编码压缩,protobuf和thrift都使用二者结合...

Thrift框架详解(四)

协议和编解码(1)-TBinaryProtocol

概诉本节来讨论thrift 的编解码器。 核心组件整体架构 Thrift的核心组件, 主要包含以下几个方面 IDL服务描述组件,负责完成跨平台和跨语言(针对不同语言完成了Server层和Client代码的生成) TServer和Client,服务端和客户端组件的实现 TProtocal 协议和解编码组件 TTransport 传输组件 TProcessor 服务调用组件,完成对服务实现的调...

系统架构(一)

阿姆达尔定律

概诉阿姆达尔定律 什么是阿姆达尔定律阿姆达尔定律(英语:Amdahl’s law,Amdahl’s argument),一个计算机科学界的经验法则,因吉恩·阿姆达尔(Gene Amdahl)而得名。它代表了处理器平行运算之后效率提升的能力。1967年计算机体系结构专家吉恩.阿姆达尔提出过一个定律阿姆达尔定律,说:在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比。举两个例子说明这...

Thrift框架详解(三)

IDL生成文件详解

概诉上一节,我们已经详解了IDL详细的语法,Thrift 就是根据这个语法,替我们生成目标代码的。下面我们来具体分析一下,生成的代码究竟是什么作用。 准备目录结构我们来看一下代码结构1234567891011121314151617181920├── java│   └── learn│   └── thrift│   ├── bean│   ├── ...

Thrift框架详解(二)

Thrift IDL 详解

概诉前一章节,我们基本入门,了解了 Thrift 的基本用法,这一节继续来分析 Thrift IDL的内容。Thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,然后通过 Thrift 提供的编译器,可以将服务接口编译成不同语言编写的代码,通过这个方式来实现跨语言的功能。 IDL定义的规范 IDL 结构规范123Document ::...

Thrift框架详解(一)

概诉与入门

Thrift 简介Thrift是一个轻量级、跨语言的远程服务调用框架,最初由Facebook开发,后面进入Apache开源项目。它通过自身的IDL中间语言, 并借助代码生成引擎生成各种主流语言的RPC服务端/客户端模板代码。Thrift支持多种不同的编程语言,包括C++、Java、Python、PHP、Ruby等,本系列主要讲述基于Java语言的Thrift的配置方式和具体使用。 Thrif...

JAVA多线程之AQS分析(3)

ReentrantReadWriteLock 读写锁源码分析

基础所谓读写锁,是对访问资源共享锁和排斥锁,一般的重入性语义为:如果对资源加了写锁,其他线程无法再获得写锁与读锁,但是持有写锁的线程,可以对资源加读锁(锁降级);如果一个线程对资源加了读锁,其他线程可以继续加读锁。本文主要分析JDK(1.8+)JCU包中读写锁接口(ReadWriteLock)的重要实现类ReentrantReadWriteLock的细节,来阐述AQS的应用。 样例我们来看一...