自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的各种遍历

二叉树的遍历一般有如下几种,先序遍历(根->左->右),中序遍历(左->根->右),后序遍历(左->右->根),层序遍历。各种遍历的实现都有递归和非递归方式,下面分别描述。假设二叉树定义如下type TreeNode struct { Val int Left *TreeNode Right *TreeNode}一、递归实现先序遍...

2020-04-29 10:32:12 912

原创 理解SSL/TLS系列 (五)握手协议

一、概述握手协议的职责是生成通信过程所需的共享密钥和进行身份认证。这部分使用无密码套件,为防止数据被窃听,通过公钥密码或 Diffie-Hellman 密钥交换技术通信。 密码规格变更协议,用于密码切换的同步,是在握手协议之后的协议。握手协议过程中使用的协议是“不加密”这一密码套件,握手协议完成后则使用协商好的密码套件。 警告协议,当发生错误时使用该协议通知通信对方,如握手过程中发生异常...

2020-04-22 15:21:59 3320 1

原创 理解SSL/TLS系列 (四) 记录协议

TLS 在实现上分为记录协议和 握手协议两层,位于下层的记录协议负责进行加密传输,而位于上层的握手协议则负责其他操作,握手协议又包含四个子协议: 握手协议 (handshake protocol)、更改加密规范协议 (change cipher spec protocol)、应用数据协议 (application data protocol) 和警告协议 (alert protocol)。...

2020-04-21 20:52:00 12537

原创 理解SSL/TLS系列 (三) 证书和PKI

一、为什么需要证书在上一篇文章中我们谈到了数字签名,数字签名可以识别篡改或者发送者身份是否被伪装,也就是验证消息的完整性,还可以对消息进行认证。还可以防止抵赖。也谈到了数字签名无法抵御中间人攻击,那么什么是中间人攻击呢?如图所示,攻击者位于发送者和接收者中间,对发送者伪装成接收者,对接收者伪装成发送者。以此来进行欺上瞒下。这里的关键问题就是发送者Alice没办法确认收到的公钥就是...

2020-04-21 20:51:40 2112

原创 理解SSL/TLS系列(二) 密码学基础知识

要理解SSL/TLS协议,需要一些密码学知识,这篇文章简要介绍密码学相关基础知识。一、加密与解密如图,发送者Alice向接收者Bob发送消息,如果将消息直接进行发送,那么很可能被一个心怀恶意的窃听者Eve窃听消息。这样Eve就知道了消息的内容。为了不让别人看到消息内容,Alice决定对消息进行加密之后再发送出去。加密之前的消息称为明文,加密之后的消息称为密文。我们看到明文可以理解其...

2020-04-21 20:50:55 851 1

原创 理解SSL/TLS系列(一) 概述

一、SSL/TLS的目标互联网协议在设计之初 ,往往很少考虑安全问题,这在早期参与人数很少时也许不是太大的问题,但现在所有人都可以使用互联网,这种方式便土崩瓦解。比如广泛使用的http协议便存在以下问题:通信内容明文传输,很容易被第三方截获 不能保证传输内容的完整性,容易被第三方篡改 不能认证通信双方的身份SSL和TLS都是加密协议,旨在基于不安全的基础设施提供安全通信,但安全也不是...

2020-04-21 20:50:08 557

原创 聊聊TCP

TCP(Transmission Control Protocol 传输控制协议协议)现在是如此广泛的被使用,其重要性不言而喻,然而他又是一个超级复杂的协议,也是每个程序员必备的基本功,在此记录我的一些理解。本篇文章不仅告诉你tcp是怎么样的,还努力告诉你为什么是这样的。TCP的目标首先我们需要搞明白TCP协议设计的目标是什么,只有这样我们才能更好的理解其协议内容。我认为其目标主要包括:可

2017-11-27 17:22:09 790

原创 返回值优化

mark一下代码 后续补充,要点是gcc编译器的rvo优化和-fno-elide-constructors编译参数/* * ===================================================================================== * * Filename: test.cpp * * Description

2016-05-29 23:05:36 331

原创 linux内核container_of宏获取结构体地址

linux内核container_of宏/* * ===================================================================================== * * Filename: contion_of.cpp * * Description: * * Version: 1.0

2016-05-29 22:59:26 480

转载 LevelDb日知录

文章来自朗格科技http://www.samecity.com/LevelDb日知录之一:初识LevelDb            说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师,为数甚少的Google

2015-09-29 09:12:13 342

原创 Linux下core文件的生成和使用

什么是core文件当程序异常终止时,内核有可能把该程序当前的内存信息映射到core文件里,以方便程序员定位问题。也就是说core文件是进程异常终止时的一个内存镜像,可以用gdb来打开core文件,协助分析程序问题。core文件说明时候产生

2015-09-26 15:19:02 2923

空空如也

空空如也

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

TA关注的人

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