如何解决通信中的安全问题-数字证书的由来
[TOC]
加密的基础知识。文章里的我是作为黑客出现的。。本文内容直接来源于《我的第一本算法书》去了些图片,做了简化。
在现代互联网社会中,加密技术是不可或缺的。那么对数据进行加密和解密时,计算机会进行哪些处理呢?这一节我们将讲解加密技术的必要性和基本原理。
[TOC]
加密的基础知识。文章里的我是作为黑客出现的。。本文内容直接来源于《我的第一本算法书》去了些图片,做了简化。
在现代互联网社会中,加密技术是不可或缺的。那么对数据进行加密和解密时,计算机会进行哪些处理呢?这一节我们将讲解加密技术的必要性和基本原理。
[TOC]
memcached 有2个版本。需要注意。
特点:
libevent
的时间处理。从上述特点4可见,基于memcached的memcacheq
有个很大的缺点,就是做分布式其实不稳定,如果其中一个服务器down掉,就会丢失消息,这时只能通过重启机器来解决。也就是必须有个监控服务才能保证稳定性。
(1)mc的核心职能是KV内存管理,value存储最大为1M(可修改,改源代码,编译安装),它不支持复杂数据结构(哈希、列表、集合、有序集合等);
(2)mc不支持持久化;
(3)mc支持key过期;
(4)mc持续运行很少会出现内存碎片,速度不会随着服务运行时间降低;
(5)mc使用非阻塞IO复用网络模型,使用监听线程/工作线程的多线程模型;
主要内容来自 潘少 的 gnet开源说。 https://github.com/gocn/opentalk
G: 表示 Goroutine,每个 Goroutine 对应一个 G 结构体,G 存储 Goroutine 的运行堆栈、状态以及任务函数,可重用。G 并非执行体,每个 G 需要绑 定到 P 才能被调度执行。
P: Processor,表示逻辑处理器, 对 G 来说,P 相当于 CPU 核,G 只有绑定到 P(在 P 的 local runq 中)才能被调度。对 M 来说,P 提供了相关的执行 环境(Context),如内存分配状态(mcache),任务队列(G)等,P 的数量决定了系统内最大可并行的 G 的数量(前提:物理 CPU 核数 >= P 的数量),P 的数量由用户设置的 GOMAXPROCS 决定,但是不论 GOMAXPROCS 设置为多大,P 的数量最大为 256。
M: Machine,OS 线程抽象,代表着真正执行计算的资源,在绑定有效的 P 后,进入 schedule 循环;而 schedule 循环的机制大致是从 Global 队列、P 的 Local 队列以及 wait 队列中获取 G,切换到 G 的执行栈上并执行 G 的函数,调用 goexit 做清理工作并回到 M,如此反复。M 并不保留 G 状态,这是 G 可以跨 M 调度的基础,M 的数量是不定的,由 Go Runtime 调整,为了防止创建过多 OS 线程导致系统调度不过来,目前默认最大限制为 10000个。