6 wanhf11

尚未进行身份认证

我要认证

无。

等级
TA的排名 4k+

keyless

Keyless了解SSL加解密分为两个阶段:非对称加解密(预主密钥交换)和对称加解密(数据传输加解密)。SSL的握手过程,实质是先使用非对称加解密算法来交换数据,然后经计算得出相同的对称加解密所需的会话密钥。常规握手主要流程如下:(1)客户端发送client hello,携带支持的SSL握手版本和加密套件、client random随机数等信息。(2)服务端根据收到的client ...

2020-02-11 01:59:45

一致性hash实现源码分析

开源地址github.com/lafikl/consistent代码例子var hosts = []string{ "host1", "host2", "host3",}var c = consistent.New()func init() { for _, host := range hosts { c.Add(host) }}func Test_Remov...

2019-11-24 21:32:20

sync Pool 代码阅读

Pool结构体type Pool struct { noCopy noCopy local unsafe.Pointer // local fixed-size per-P pool, actual type is [P]poolLocal localSize uintptr // size of the local array // New optionall...

2019-10-07 23:14:47

golang context 超时控制

https://www.ddhigh.com/2019/01/02/golang-timeout-context.html

2019-05-03 11:49:25

fasthttp 协程池实现分析

fasthttp workerpool 源码:https://github.com/valyala/fasthttp/blob/master/workerpool.go特点:workerchan 后进先出定时清除workerChan源码简单分析workerpool struct 定义:type workerPool struct { WorkerFunc ServeHandle...

2019-05-02 20:10:45

sync.Mutex

公平锁:锁有两种模式:正常模式、饥饿模式正常模式下,维护一个先进先出的goroutine的等待队列,并且唤醒的goroutine需要和新的goroutine一起竞争,容易发送锁饥饿。饥饿模式下,锁的所有权从锁的释放直接给到等待队列的头部,不参与任何竞争。正常模式性能比饥饿模式高,因为一个goroutine有多次机会触发获取锁;饥饿模式防止尾部延迟。正常模式->饥饿模式条件:1:某...

2019-05-01 12:07:41

kafka和nsq相关整理

一个topic多个partition,一个partition一主多从,leader承担所有的读写,然后同步到follower。每个partition分布在不同server,一个partition只能被同组的一个consumer消费,所以一个topic在多个partition的情况下是无法保证有序的,理论上consumer的数量不能大于partition的数量。某个消息只有当所有followe...

2019-03-30 14:42:59

golang 布隆过滤器实现源码分析

golang 布隆过滤器“github.com/willf/bloom”源码分析结构体定义,m和k,通过README可以知道,m是数组集合大小,而k是hash函数个数// member of a set.type BloomFilter struct { m uint k uint b *bitset.BitSet}// New creates a new...

2019-03-24 12:15:46

golang 内存对齐

https://blog.csdn.net/u010824081/article/details/77924114

2019-02-20 11:35:20

断路器原理

https://www.cnblogs.com/zsy/p/5183752.html

2019-02-11 12:01:08

令牌桶+漏桶算法

算法原理:http://en.wikipedia.org/wiki/Token_buckethttps://baike.baidu.com/item/令牌桶算法代码实现参考:https://github.com/juju/ratelimit/blob/master/ratelimit.go代码解析:定义:type Bucket struct { clock Clock // 第...

2019-02-11 11:23:22

redis 知识点

redis 事务保证命令执行原子型,一般都是set命令,不支持回滚。要么客户端应用处理回滚,要么重试保证成功实现方式:cas乐观锁redis 单机处理逻辑redis服务端内部处理命令是单线程的客户端会并发请求某个key并发请求如何到单线程处理:1. 找到可处理的请求:通过多路复用框架实现(epoll、evport、kqueue和select),在以上实现在宿主都找不到,才会选用...

2018-11-24 14:57:46

redis内部存储结构

redis支持的几种数据结构字符串列表setsort-setmapredisobj 存储结构结构定义:typedef struct redisObject { unsigned type:4; // 刚刚好32 bits,对象的类型,字符串/列表/集合/哈希表 unsigned encoding:4; // 编码的方式,Redis 为了节省空间,提供多种方式来保存一个...

2018-11-17 20:42:25

分布式缓存知识整理

并发和并行的区别并发:一个cpu同时执行多个线程,只有一个线程执行,其余线程处于挂起。并行:多个cpu同时执行多个线程。大体意思:并发是同一时刻多个事件发生,并行是一段时间内多个事件发生。CAP理论c:一致性a:可用性p:分区容忍性常见类型:ca(传统单点数据库),cp(传统数据库分布式事务,分布式锁),ap(dns,web缓存)数据库ACID理论BASE理论...

2018-11-04 20:41:51

加密常用

对称加密(加密解密秘钥相同)分为:块加密(分组加密,对数据进行划分分组进行加密)流加密(序列加密)ecb 不安全参考:https://my.oschina.net/liudiwu/blog/281949...

2018-10-26 23:37:39

csp 并发模型

channel:channel一种个安全的双端队列,任何任务只要持有channel的引用,就可以向一端加入消息,也可以向一端删除消息,消息的消费者和生产者不清楚对方是谁。channel分为无缓冲和有缓冲,无缓冲会同步阻塞,即每次生产消息都会阻塞到消费者将消息消费;有缓冲的不会立刻阻塞。关闭channel:向关闭的channel读数据会是nil,向关闭的channel写数据会被弃用。chan...

2018-10-07 16:38:15

golang json interface 反序列化

问题代码package mainimport ( "fmt" "reflect")type A struct { B int C string}func test(a interface{}) { fmt.Println(&a) fmt.Println(reflect.TypeOf(&a))}func t...

2018-07-03 23:06:44

golang 动态new interface{}

package mainimport ( "fmt" "reflect")type A struct{ AA int AB string}func test(a interface{}){ t := reflect.TypeOf(a) v:= reflect.New(t).Elem() w:= reflect.New(t).E...

2018-07-03 18:45:30

spp proxy 源码分析

spp proxy demo

2018-06-29 15:16:05

spp 源码分析

spp 主要进程分为3类:controllerproxyworker

2018-06-29 15:01:14

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。