自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wwhhff11

暂无

  • 博客(539)
  • 收藏
  • 关注

原创 keyless

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

2020-02-11 01:59:45 799

原创 一致性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 335

原创 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:36:22 191

转载 golang context 超时控制

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

2019-05-03 11:49:25 11705

原创 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 648

原创 sync.Mutex

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

2019-05-01 12:07:41 118

原创 kafka和nsq相关整理

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

2019-03-30 14:42:59 308

原创 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 1411 1

转载 golang 内存对齐

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

2019-02-20 11:35:20 135

转载 断路器原理

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

2019-02-11 12:01:08 743

原创 令牌桶+漏桶算法

算法原理: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 933

原创 redis 知识点

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

2018-11-24 14:57:46 136

原创 redis内部存储结构

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

2018-11-17 20:42:25 5477

原创 分布式缓存知识整理

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

2018-11-04 20:41:51 187

原创 加密常用

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

2018-10-26 23:37:39 125

原创 csp 并发模型

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

2018-10-07 16:38:15 1657 1

原创 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 4639

原创 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 1838

原创 spp proxy 源码分析

spp proxy demo

2018-06-29 15:16:05 487

原创 spp 源码分析

spp 主要进程分为3类:controllerproxyworker

2018-06-29 15:01:14 1151

原创 c++ 相关知识点整理

ifndef_

2018-06-28 10:53:10 148

原创 spp worker 源码分析

MSEC 开源代码链接简单Demo入口:spp_rpc/src/module/example/simple/echo_example.cpp#include "../comm/tbase/misc.h"#include "defaultctrl.h&amp

2018-06-27 16:08:24 701

原创 选非质数 笔试题

题目描述给出一些不重复的数字,两人轮流选数字,规则要求后一次选的数字,和前一次选的数字不能互质。现在给出小A第一次选的数字X,问在游戏过程中,某个数字Y能否被选出?如果能,请输出两人至少需要选出几个数字?如果不能,请输出-1。简单实现#!/usr/bin/env python# -*- coding: utf-8 -*-# ***************************...

2018-06-04 17:31:11 235

原创 今日头条笔试问题

题目链接可将问题理解拆分为:能否把一个序列,变成两个递增顺序的数组。#!/usr/bin/env python# -*- coding: utf-8 -*-# ***************************************************************************## Copyright (c) 2017 ByteDance.com, ...

2018-05-28 22:27:37 2079 1

原创 golang channel 源码分析

参考链接 Ring Buffer相关理解

2018-05-27 22:21:00 643

原创 Hadoop failed 和 killed 原因

参考链接

2018-05-21 17:21:39 633

原创 redis cluster pipeline问题排查

问题背景:问题代码: r = StrictRedis('10.20.23.45', 3901) print r.get('7551A63C3F2C0EA261AAE2B509ABC782172FE56DF64F64B6CB0B355E5A9D9FB7:u_feed_lt_ad_type_show:0') print r.get('1803D8B45F7371F0D...

2018-05-21 16:16:06 1490

原创 Java CAS 和 synchronized 和 Lock

CAS 机制适用场景:乐观认为并发不高,不需要阻塞,可以不上锁。 特点:不断比较更新,直到成功。缺点:高并发cpu压力大;ABA问题。ABA问题: CAS机制生效的前提是,取出内存中某时刻的数据,而在下时刻比较并替换。 如果在比较之前,数据发生了变化,例如:A->B->A,即A变为B然后又变化A,那么这个数据还是发生了变化,但是CAS还是会成功。Java中CAS...

2018-05-20 21:13:18 2039 2

原创 Mysql in 和 exists 的区别

参考链接

2018-05-20 20:08:45 140

原创 一次Http请求所经过的流程

参考文章

2018-05-19 19:39:37 191

原创 golang goroutine 并发递增

package mainimport ( "sync/atomic" "fmt" "sync")func main() { var wg sync.WaitGroup var a int32 = 0 // goroutine指向的外部变量地址 for i := 1; i < 100; i++ { wg.Add(1) ...

2018-05-18 15:18:14 623

原创 awk 简单使用

参考链接awk '$1>2 {print $1,$2}' test.txt # 第一行大于2awk '$1==2 {print $1,$2}' test.txtawk '$1==2 {print $0}' test.txt # 输出全部文本awk '$2 ~ /th/ {print $0}' test.txt # ~ 表示模式开始。// 中是模式awk '$2 !~ /th/...

2018-05-17 18:01:53 148

原创 go-torch 简单使用

go-torch安装FlameGraph:git clone https://github.com/brendangregg/FlameGraph.git将FlameGraph/flamegraph.pl 加入环境变量$PATHflamegraph.pl -h 测试安装go-torch: 1. go get -v github.com/uber/go-torch修改代码:...

2018-05-17 17:07:22 4021

转载 golang unsafe point

package mainimport ( "fmt" "unsafe")type Entity struct { a byte b byte}func main() { entity := Entity{} fmt.Println(entity) p := unsafe.Pointer(&entity) // 转换成...

2018-05-17 15:34:58 356

原创 golang slice 源码分析

slice 结构定义type slice struct { array unsafe.Pointer len int cap int}创建slice// maxSliceCap returns the maximum capacity for a slice.func maxSliceCap(elemsize uintptr) uintptr...

2018-05-17 14:52:38 1310

原创 redis 持久化、过期策略和淘汰逐出策略

redis 目前支持的持久化方式快照方式: 1. SAVE 模式:保存快照的同时,会停止redis服务,直到快照落地,才会重新开始提供服务。 2. BGSAVE 模式:使用fork的方式拷贝redis内存,fork的同时会导致服务停止,但是间隔比较短,拷贝完内存后,redis重新提供服务,将内存数据落地,因为涉及到内存的拷贝,要求系统拥有和redis占用内存相同大小的空闲内存。快照缺点...

2018-05-17 11:09:04 431

原创 golang 并发原理

参考文章

2018-05-15 16:18:57 441

转载 .git 文件夹分析

参考连接

2018-05-14 17:54:39 477

原创 阻塞非阻塞、同步异步,select、poll和epoll总结

参考文章IO模型阻塞IO非阻塞IOIO多路复用信号驱动IO异步IO其中前4种是同步,第5种是异步在进行网络IO的时候会涉及用户态和内核态,数据会在用户态和内核态发生交换。 整个过程可以分为:用户态等待内核态数据准备好(这个决定是否阻塞和非阻塞)将数据从内核态拷贝到用户态(这个决定同步和异步)阻塞IO: 1. 用户态等待内核态数据可读(阻塞) 2...

2018-05-13 21:55:55 1653 1

原创 腾讯社招笔试加面试

笔试(每题40分钟,不能调试!!!):输出:输入n,输出方阵,n=5时如下0 0 0 0 5 0 0 0 6 4 0 0 7 14 30 8 15 13 29 10 11 12 1n=3时如下0 0 30 4 25 6 1始终调不对,望大佬解决,留下评论。...

2018-05-12 21:40:08 7593 3

空空如也

空空如也

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

TA关注的人

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