自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用curl进行https通信遇到的问题总结

问题一:使用curl时提示找不到client.key,提示错误:curl: (35) NSS: client certificate not found: client.crt解决方法:打开-v提示以下问题:修改后通过,提示其他错误问题二:使用curl时提示以下错误:curl: (58) unable to load client key: -8178 (SEC_ERROR_BAD_KEY)解决方法:主要是因为证书是通过openssl生成的,而服务器上安装了NSS,导致c

2021-01-12 15:46:56 4112

原创 ssl连接过程中session复用失败的原因

最近在开发过程中,遇到了一次https访问失败的场景,场景描述:在chrome浏览器访问我们的https后端时,如果长时间没有更新请求的话,再次刷新该请求将会返回连接失败的错误,必须重启浏览器方能正常访问,在 safri浏览器下不会出现这个问题,chrome浏览器端显示的错误码为ERR_SSL_VERSION_INTERFERENCE,在网上检索该错误的通用解决方法(https://merab...

2019-01-10 21:21:42 4969

原创 以太坊源码分析之 P2P网络(六、p2p连接控制与消息处理(下))

区块链特辑 :https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!这是p2p网络系列文章的最后一篇,前面很多篇主要都是在描述p2p的底层实现,那么p2p在整个系统中处于什么位置和提供什么功能,都将会在本篇进行一部分的总结,首先我们看下host相关代码,来了解p2p的运行模式,然后再去了解capacit...

2018-09-13 16:31:04 908 6

原创 以太坊源码分析之 P2P网络(五、p2p连接控制与消息处理(中))

区块链特辑 :https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!承继前篇, 前一篇介绍了连接底层的一些细节,包括socket,握手等详细步骤,等待握手完成后,会调用startPeerSession抛向上层,这个时候连接表明已经建立了,从代码里面,为了表征这种连接的建立,会再定义一些数据结构来表达这种...

2018-09-06 10:05:14 716

原创 以太坊源码分析之 P2P网络(三、UDP底层通信)

区块链特辑 :https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!这周工作有点小忙,部门区块链基础平台的开发开始进入节奏了,和上一篇间隔间隔有点久了,以后还是要坚持,不能刚开始就犯毛病了。上篇讲的是以太坊p2p网络的一个重点部分——节点发现,在介绍的时候提过,节点发现是通过udp的方式来进行的,这一篇就介...

2018-07-16 11:45:44 1611

原创 以太坊源码分析之 P2P网络(二、节点发现流程)

上一篇文章简单介绍了下一些基础的类型定义,从这一篇开始我们将描述p2p网络的更多细节。从关于节点的定义来看,其实不同定义是有不同含义的,Node代表的是一个孤立的节点,这个节点不代表我们和他会建立连接,而Peer是肯定会去连接的,但是不代表一定会建立出连接,只有建立连接以后才会生成session,在session上才进行了以太坊的数据的交换。对于了解p2p系统的人来说,肯定对区块链p2p底层有一种...

2018-07-05 15:41:02 1702

原创 以太坊源码分析之 P2P网络(一、基础类或类型描述)

从这篇开始,我们将会围绕着以太坊和eos的源码对一个区块链平台系统的不同组成展开进一步的源码级分析,之所以选择P2P开始我们的征程,主要有两个原因,一是我们部门目前正在进行内部区块链平台的开发,我本人正好负责了其中p2p及网络部分的研发任务,二是p2p作为区块链底层通信的重要组成部分,对于无论公链还是联盟链都有着极其重要的作用,但是p2p网络和其他组件的耦合度恰恰是最少的,从p2p网络开始,有利于...

2018-07-04 00:37:35 966 3

原创 区块链特辑

最近刚转岗从事区块链相关的研发工作,因此对区块链开始了探索学习阶段,在学习过程中,发现对于开源代码的研读大多处于初级阶段,而且很容易存在两种情况,一是描述简单,只介绍功能没有详细的结构,二是持续性不够,往往都是写了两三篇之后就停滞了,因此我想借自己学习的机会,将这些进行整理并广而告之,为区块链的学习者构建更好更方便的学习渠道。这个特辑将记录我的博客中所有关于区块链相关的文章,后续每新增一篇文章...

2018-07-02 01:24:35 454

原创 redis命令解析之set类型

号外号外,新建Redis交流讨论群:332160890,欢迎加入!!集合类型的编码方式:OBJ_ENCODING_HT(SET)和OBJ_ENCODING_INTSET(INTSET)1、saddCommand(client *c)使用:SADD  key value [value …]说明:添加数据到key对应的set中,如果key对应set不存在,则新建2、sremCo

2017-04-09 17:57:20 356

原创 redis命令解析之list类型

号外号外,新建Redis交流讨论群:332160890,欢迎加入!!链表类型的编码方式为:OBJ_ENCODING_QUICKLIST1、lpushCommand(client *c)使用:LPUSH  key value  [value …]说明:将一个或者多个value插入到key对应的链表的表头,如果不存在,则新建一个链表2、rpushCommand(client *

2017-03-28 14:42:01 319

原创 redis命令解析之hash类型

号外号外,新建Redis交流讨论群:332160890,欢迎加入!!哈希类型的两种编码方式:OBJ_ENCODING_HT和OBJ_ENCODING_ZIPLIST1、hsetCommand(client *c)使用:HSET  key field  value说明:如果key对应的哈希表不存在,则创建一个,然后再在该哈希表中插入field=> value键值对,如果该fi

2017-03-25 16:51:29 364

原创 redis持久化之AOF

号外号外,新建Redis交流讨论群:332160890,欢迎加入!!一、说明1.1AOF相关配置项配置项作用aof_rewrite_perc百分比阈值,当aof的增量超过这个阈值时,开始aof的rewrite操作aof_rewrite_min_size当aof的文件大小超过该值时

2017-03-24 16:09:12 637

原创 redis命令解析之string类型

号外号外,新建Redis交流讨论群:332160890,欢迎加入!!redis的字符串string类型的编码有三种:OBJ_ENCODING_RAWOBJ_ENCODING_INTOBJ_ENCODING_EMBSTR1、setCommand(client *c)使用:SET  key value  [NX]  [XX] [EX  ]

2017-03-23 17:39:06 369

原创 redis之intset

类型介绍intset是一个整型的数据集合,这里面的结构比较简单,实际上就是一个整型数组,在添加过程中,同样给该数组按照数据大小排序,这点在查找的时候比较容易,比较符合缓存的特点,另外,这里面同样给数据按照类型进行了区分,也是为了节省内容空间人为增加了程序的复杂度,但是回报还不错,实际操作过程中,许多情况下数据是同类型的,这样避免了都是用64位整型来保存数据;代码分析自定义类型t

2016-09-06 23:20:15 371

原创 redis之zmalloc

zmalloc介绍这部分是用来申请内存的,之所以单独成了一部分在于redis希望能够将不同系统提供的api统一起来,另外还有一部分系统无法获取malloc数目,因此在这里也进行了一部分的封装;这部分内容很简单,实际上就是malloc, calloc, realloc, free几个操作的变形代码分析使用变量used_memory,已使用的内存数; malloc_thread_sa

2016-08-31 17:46:04 1057

原创 APUE第三章 文件IO

前言:前面提到,UNIX的哲学是一切皆文件,文件的活动过程便是进程,整本APUE都是围绕文件和进程来阐述的,围绕文件必然是创建、增减、删除、关闭,其中增减便是IO的操作,IO是唯一的难点;进程同样如此,同样是创建、执行、退出的过程,进程的运行周期难免与文件交互,此时交互的过程就可以是前面提到的步骤,同时进程还可能与其他进程交互,这里面涉及的便是进程间通信;到此为止,本书的重点内容就算完了,看似多么

2016-08-31 01:11:29 882 1

原创 redis之adlist

类型介绍这部分是redis自定义的链表类型,该链表为双向链表,可以自定义存储类型,另外可以自定义释放、拷贝、对比函数等功能,提供的操作也比较丰富,包括创建、添加、插入、删除、索引等步骤,还拥有迭代器功能。代码分析自定义类型链表节点,双向链表typedef struct listNode { struct listNode *prev; struct listNo

2016-08-29 23:26:17 1200

原创 redis之sds

类型介绍代码分析自定义类型struct sdshdr { //包含头信息的字符串结构体 unsigned int len; //申请的字符串长度 unsigned int free; //当前空闲的内存字节数 char buf[]; //真实存放字符串内容的地方 };定义变量代码分解sdsnewlen,根据字符串和初始长度新建一个sds

2016-07-04 00:02:33 699

原创 redis之ziplist

类型介绍代码分析自定义类型typedef struct zlentry { unsigned int prevrawlensize, prevrawlen; unsigned int lensize, len; unsigned int headersize; unsigned char encoding; unsigned char *p;}

2016-06-28 19:23:37 367

原创 redis之zipmap

类型介绍代码分析变量ZIPMAP_BIGLEN, zipmap的最大长度 ZIPMAP_END, zipmap的结束符 ZIPMAP_VALUE_MAX_FREE, zipmap的free部分最大长度函数zipmapNew,新建一个zipmap;unsigned char *zipmapNew(void) { unsigned char *zm = zmallo

2016-06-25 17:17:31 1030

原创 redis之dict

代码分析自定义类型typedef struct dictEntry { void *key; //键值 union { void *val; //自定义类型 uint64_t u64; int64_t s64; double d; } v; struct dictEntry *next;

2016-06-23 13:54:45 369

原创 memcached的LRU部分

LRU部分的功能介绍LRU部分的整体逻辑LRU部分的代码分解1、start_lru_maintainer_thread函数,;int start_lru_maintainer_thread(void) { int ret; pthread_mutex_lock(&lru_maintainer_lock); do_run_lru_maintainer_t

2016-06-18 15:05:41 1506

原创 memcached学习的整体流程

整体流程的介绍memcached的整体结构采用的是多线程框架,这也是为什么memcached中很多锁的原因,我个人对这一点不是很喜欢,一是因为看起来很复杂,二是感觉性能也会因此而受到影响;memcached的多线程框架采用的是一对多的策略,其中主线程主要用来监听新的网络连接,工作线程用来处理请求,主线程和工作线程是通过管道pipe来实现的。 在每个请求过程中,请求以及响应的过程都是通过一个状

2016-06-18 11:53:53 494

原创 memcached学习之item部分

item部分的功能介绍item部分是memcached的存储结构,所有的读写修改等操作都是通过对item的处理来进行的,另外对于缓存来说,其能够使用的内存空间是有限的,如果将请求数少或者过期的数据清理后将内存腾出来也是必备的一个功能,这里面memcached的策略主要就是LRU方式和lazy expiration方法,这篇里面只会涉及lazy expiration方法;不考虑LRU方法的原因是

2016-06-16 18:37:11 1285

原创 memcached学习之slabs部分

slabs部分的功能介绍slabs部分的整体逻辑slabs部分的代码分解自定义类型typedef struct { //chunk_size, 单个数据块的大小 unsigned int size; /* sizes of items */ //单个slab中包含的item数量,其实也就是chunk的数目 unsigned int pe

2016-06-15 15:12:46 974

原创 memcached学习之assoc部分

assoc部分的功能介绍这部分主要是一个hash表(hash函数采用Jenkins_hash),用于保存item数据的地址,主要是用来快速查找item信息,这是因为一般情况下缓存或存储数据库的读写频率是不一样的,读频率会很大,这样如果每次都采用遍历操作,会严重影响性能。其实这种做法和DB是很相似的地方,只不过真正的DB采用的树结构,这里由于在内存中存储,不涉及磁盘等细节,采用hash能够更加简

2016-06-14 13:36:56 1424

原创 memcached学习之总览

题记兴之所起,应立马辅以行动,方得始终。最近工作不是那么忙了,想找几份开源代码来提高下自己,一来可以提高下自己的知识面,二来可以学习良好的代码风格。因为之前的工作稍微了解过缓存系统,因此想借这次机会好好学习下缓存系统的设计以及构造,这里主要是想学习下memcached和redis两个系统,作为服务端缓存软件的佼佼者,它们都有着良好的性能以及优秀的代码架构,在接下来的时间里面,我想对两份源码阅读

2016-06-12 20:54:26 324

翻译 MapReduce: Simplified Data Processing on Large Clusters

题记:这是我确定自己未来深入学习的三个技术方向之一分布式开发的首篇文章,大家都知道谷歌的这三篇文章实际上成为分布式开发至关重要的论文,我想从源头了解下分布式这部分的背景知识以及发展过程,我并不打算去学习hadoop的具体代码细节,因为毕竟现在有更加适合大规模运算的spark可以运用,同时spark还比较适合机器学习这方面,而这方面同样也是我以后想继续的方向之一,因此在熟悉完这三篇文章之后,我的重点

2016-04-16 17:14:44 7254

原创 APUE第一章 UNIX基础知识

前语:本人是半路出家做程序员,实际上应付平时工作中的业务还可以,但是基础知识实在薄弱,当然也跟中国计算机教育有关系,平时跟同事聊天,实际上就算是科班出身,对于计算机本身的了解也知之甚少,因此在毕业两周年到来的时候,给自己确定了以后的技术学习方向,同时也决定了将基础部分补充起来,特来CSDN开这个专题,去学习程序员圣经般著作—《UNIX高级环境编程》,这本书也是被某个同事经常提起,书本比较厚,但是不

2016-04-16 12:19:03 718

空空如也

空空如也

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

TA关注的人

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