自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 paxos算法学习

paxos算法可以说是大名鼎鼎,一方面是因为它是一个很优秀的分布式一致性算法,另一方面也是由于它的晦涩难懂。今天看到了一个博客(Paxos算法原理与推导)深入浅出的讲了一下这个算法,感觉收获很大,于是借此平台写一下自己对该算法的理解,同时也希望能够通过自己写的过程加深对这个算法的理解。paxos算法的目标一个算法自然要有一个确定性的目标。作为分布式一致性算法,paxos的目标是:能够在集群...

2018-10-05 17:55:51 255

原创 socket I/O机制学习

socket 多路I/O 机制学习socket是不同进程间通信的一种方法,在操作系统看来是一种I/O的接口。之前在计算机网络的课程中学习过socket的基本使用,但是对于其中的细节并不是完全了解,特别是除了同步阻塞模式,对其他I/O模式并不了解。这里简单总结一下不同的I/O模式,然后介绍一下现在业界常用的epoll方法进行多路复用I/O的大致细节。I/O模式常见的I/O模式按照同步/阻塞,分...

2018-10-05 14:14:51 608

原创 hyperledger fabric环境搭建

生成秘钥配置文件:crypto-config.yaml 首先,应该将整个网络的结构在该配置文件中定义好。cryptogen工具将按照网络定义分别为不同的node生成相应的公私钥文件,存放在crypto-config目录下。cryptogen generate --config=./crypto-config.yamlres=$?if [ $res -ne 0 ]; then ec...

2018-09-09 23:22:50 713

原创 常用设计模式概述——单例模式

单例模式单例模式是为了对某一个类,仅可以生成一个对象。主要有两种模式:饿汉模式和懒汉模式。线程安全的懒汉模式:class Singleton{private: static A *ptr = NULL;public: static A* getInstance(){ if(ptr==NULL){ lock(); ...

2018-08-10 22:14:43 161

原创 Peterson算法实现锁的一些认识

今天在思考之前实习的时候,如何在保证顺序的前提下尽可能达到高并发。之前和同事说过想要通过加锁,被提示效率很低。然后今天我就来看了看锁的实现算法,还是学到了很多东西的。基本问题有两个进程P0和P1,需要互斥地访问一段临界区,这里用visit函数来表示。如何控制P0和P1使得满足互斥性?简单求解一个简单的想法是,搞一个长度为2的数组,标记本进程是否需要进入临界区。然后如果检测到另外...

2018-07-29 11:43:52 942

原创 C++类的操作符重载&类型转换

这里总结一下C++里面类的操作符的重载以及类型转换的定义,作为对C++ Primer Plus第11章的总结。操作符重载通过操作符重载,可以直接定义两个类型之间的操作符(加减乘除等)。一个例子是:class Vector{ int x; int y; Vector (int x, int y); Vector operator+(const Vect...

2018-07-26 22:59:38 499

原创 C++的sizeof大全

C++的sizeof是一个操作符,并不是一个函数。在C99引入动态数组之前,sizeof只有在编译期起作用。引入动态数组之后,sizeof有时也在运行时起作用。数组的sizeof数组的sizeof有以下几种情况:int a[10]; // sizeof = 40 int a[]={1,2,3,4,5,6}; // sizeof=24int compute(int a[10]){si...

2018-07-26 21:23:00 135

原创 C++数组作为参数

C++里面把数组当参数这个知识点一直不是很清晰。这次把他明确化了。非引用参数非引用参数的情况还是比较简单的。int compute(int array[4]);int compute(int array[]);int compute(int *array); // 编译器会把上面两个解释成这个以上三种原型都会被编译器解释为指针,因此即使在数组定义里写了长度为4,依然可以传任意长...

2018-07-23 20:59:45 4459

原创 C/C++编译过程

C/C++编译过程面阿里,被问到这个问题。之前从来没有仔细看过,结果回答漏了一个步骤。现在来这里补个课: 编译步骤:预处理、编译、汇编、链接。预处理从源文件到预编译文件 包含:#include #ifdef # define等的处理和替换编译从预编译文件到汇编代码汇编从汇编代码到目标文件链接将多个目标文件链接为可执行文件...

2018-07-23 19:26:15 110

原创 C++ Primer 阅读笔记--const、模板和重载

C++ Primer 阅读笔记准备面试C++岗,把这本书翻出来查漏补缺一下。const变量和const指针之前学c的时候,觉得const貌似没啥用,只会增加很多限制。后来写了CUDA发现,const有时候是可以在编译期发现一些错误,还是很有用的。这次看了C++ primer plus,在const指针上发现自己不熟悉的一点,特此记下来。 const int *a,表示该指针指向的...

2018-07-18 19:46:44 192

翻译 kafka学习笔记

部分翻译自http://kafka.apache.org/documentation/#majordesignelements设计动机高并发的实时日志存储周期性的离线处理低延时消息分发fault tolerance正由于这四点原因,kafka被设计成了partition-consumer式的分布式结构。持久化kafka使用磁盘作为存储介质。虽然磁盘通常被认为存储速度慢...

2018-06-18 14:46:37 189

原创 awk学习

介绍awk是Linux上的一款文本处理器。通过awk,可以实现根据文本执行相应的指令。基本语法$ awk [option] 'pattern {action}' test.txt 基本的用法是读取test.txt中的每一行。对于每一行,对于pattern匹配的文本,执行action。 下面用几个简单的例子介绍该基本用法。示例1——打印文本以下是一个例子:book.tx...

2018-06-02 19:11:38 360

原创 systemd学习

整理systemd相关学习,部分转载自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.htmlsystemd主要用于替代原有的init启动方式,相对init提供了更为全面、强大的系统服务监控、管理和维护功能,摒弃了init仅支持串行执行、功能单一(执行脚本)的缺点。但一定程度上被认为破坏了unix的KISS的设计哲...

2018-05-27 14:14:51 143

空空如也

空空如也

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

TA关注的人

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