Frank

Frank

HTTPS过程

> TLDR:使用非对称加密传输一个对称密钥K,让服务器和客户端都得知。然后两边都使用这个对称密钥K来加密解密收发数据。因为传输密钥K是用非对称加密方式,很难破解比较安全。而具体传输数据则是用对称加密方式,加快传输速度。两全其美。 HTTPS HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。 完整HTTPS请求过程: 1. 浏览器请求一个url,找到服务器,向服务器发起一个HTTPS请求。 2. 服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端。 3. 浏览器检查CA证书是不是由可以信赖的CA机构颁发的,确认证书有效和此证书是此网站的。如果不是,给客户端发一个警告,询问是否继续访问。 4. 如果是,客户端使用公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器 5. 服务器用自己的私匙解密了你发送的钥匙。然后用这把对称加密的钥匙给你请求的URL链接解密。 6. 服务器用你发
6 min read

强类型,弱类型,动态,静态

本文非原创,是下列一系列文章的集合,帮助理解。 Answer 1 https://www.zhihu.com/question/19918532/answer/21647195 类型系统的一些概念,众说纷纭,使用上也比较乱。有些东西,甚至不好严格定义。以下算学术界的一种相对“严格”的说法。 1. 先定义一些基础概念 Program Errors * trapped errors。导致程序终止执行,如除0,Java中数组越界访问 * untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址 Forbidden Behaviours 语言设计时,可以定义一组forbidden behaviors. 它必须包括所有untrapped errors, 但可能包含trapped errors. Well behaved、ill behaved * well
6 min read

Python GIL锁(施工中)

1/对于一组cpu密集型任务(即假设了他们都在几乎100%用cpu无IO阻塞),总运行时间就是 每个任务的cpu执行时间求和,没有其他的。【要降低总时间,必须给更多的cpu核心,所有任务并行跑,至于选择多进程或多线程,都可以,区别是多线程开销更小多进程更安全,本来应该选多线程。但是python特殊点,由于gil, 所以多核心多线程近似等价于多核心单线程,还有额外的线程调度颠簸的开销。所以python选多进程】 【但是从用户角度】 即使是单核使用多进程,不能减少总cpu执行时间,但是时间片轮转能让所有任务都能得到调度,用户体验较好(因为如果是单线程,那下一个任务就只能等待上一个任务全部完成才能开始,) 如果是多核,每个核上跑一个任务,如果假设这些任务之间几乎是独立的(就是很少有竞争共享变量这种交互),那么就是纯粹意义上的并行。所以大家建议 设置进程数小于等于核心数,避免进程大于核心数 需要做cpu切换进程调度开销。 2/对于一组io密集型任务,每个任务的运行时间是 cpu计算时间+io时间(io时完全不需要cpu, 它就是纯粹等待数据传输直至完成,所以将它挂起剥夺cpu它还是在io等待
5 min read

知识体系与博文梳理

文章一多,就需要梳理一下体系,有助巩固吸收,也方便查找。 * 操作系统 * 什么是阻塞,非阻塞,同步,异步? [https://hanzhu.dev/shi-yao-shi-zu-sai-fei-zu-sai-tong-bu-yi-bu/] * Linux * Linux中的/etc/passwd和/etc/shadow [https://hanzhu.dev/linuxzhong-etc-passwdhe-etc-shadow/] * [Linux]SSH无法远程登录问题常用排查技巧 [https://hanzhu.dev/linux-sshwu-fa-yuan-cheng-deng-lu-wen-ti-chang-yong-pai-cha/] * [Linux]sssd实现登录验证以及对应用户home directory的overwrite [https://hanzhu.dev/sssd-shi-xian-deng-lu-yan-zheng/] * [Linux
1 min read

Golang编解码JSON与HTTP请求

本文基于实际工作加之诸多前辈的博文结晶拼合而来,由以下部分组成: 1. 概念 2. 解码 2.1 解析到结构体 2.2 解析到interface 2.3 SimpleJSON 3. 编码 4. json.NewEncoder与json.NewDecoder 5. HTTP请求 文里的例子可以直接在the go playground里跑,已测试。https://play.golang.org/ 概念 JSON语法 先来明确一下JSON语法: 1. JSON语法是JavaScript语法的子集。JSON语法是JavaScript对象表示法语法的子集。 * 数据在名称/值对中 * 数据由逗号分隔 * 大括号保存对象 * 中括号保存数组 2. JSON data is written as name/value
13 min read

Subscribe to 隅

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe