- 博客(316)
- 收藏
- 关注
原创 Redis Cluster Configure
bdrq:在集群中,如果master挂掉,那么slave将被提升为master, master再次启动是,会变成slavenutcracker1.编译nutcracker$ CFLAGS="-ggdb3 -O0" ./configure --enable-debug=full$ make$ sudo make install2.Config nutcrackeralph
2014-12-25 09:39:14
2664
原创 Riak Core Guide 3
Learn Riak Core Step By Step 3Riak Core, Conflict Resolution这一章主要描述最终一致性和如何实现强一致性。Object非重重要的一个数据结构:rts_obj : #rts_obj | not_found record( rts_obj, { val :: #incr |
2014-12-01 01:06:59
4008
2
原创 Riak VClock
Riak VClock关于向量时钟的概念,在这里就多讲了,大家可以参照一下Dynamo的论文了解一下,向量时钟在分布式主要用于解决一致性性问题,可以和CRDTs一起看。下面的源代码是参照riak中的,就是把它翻译为elixir格式而已,基本不变。时钟主要出现的情况有网络分区和并行更新。这样只会丢掉一些向量时钟的信息,即数据更新过程的信息,但是不会丢掉实实在在的数据。
2014-11-12 00:48:27
2946
翻译 Riak Core Guide 2
Learn Riak Core Step By Step 2Riak Core, The CoordinatorWhat is a Coordinator?顾名思义, Coordinator即使一个协调者,主要工作就是用来协调进来的请求。它强行执行N, R, and W的一致性语义,并且执行想read repair的anti-entropy 服务。足药用在分布式集群中,当出现冲
2014-10-14 22:01:51
3139
原创 ARP局域网攻击
/*linux 、unix 下简单的ARP局域网攻击 */ p style="text-align: left;">#include#include#include#include#include#include#include#include#define ARP_LEN 30 //ARP帧头字节数void mac_str( char *mac,
2014-10-13 23:48:15
2382
原创 ping
ICMP Structure在linux gnu c library 中函数icmp的定义 1 struct icmp2 {3 u_int8_t icmp_type; /* type of message, see below */4 u_int8_t icmp_code; /* type sub code */
2014-10-13 23:41:26
2462
原创 进程控制编程
1.Get the process ID#include #include vpid_t getpid(void)获取本进程ID。vpid_t getppid(void)获取父进程ID。2.Create processA:fork#includepid_t fork(void)功能:创建子进程f
2014-10-13 23:39:01
1748
原创 TCP 传输协议
TCP 传输协议 TCP 连接建立协议 名词解释:序号用来标识 从TCP发端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。 主要字段解释:① 32 位序列号:该序列号有自己随机产生 , 用于ACK的确认 ,这个字段一致存在② 32 位确认序列号:等于上次已成功接收到数据字节序号加1,并且只有AC
2014-10-13 23:36:48
1972
原创 TCP洪水攻击
TCP洪水攻击 下面的程序是根据网友 ssffz1 改编的 ,修改后得效果不是很好,但作为学习还是可以说得过去,请支持原创http://bbs.chinaunix.net/thread-2145439-1-1.html改写的源代码 http://www.kuaipan.cn/file/id_51649056203605134.htm原始的源代码 http
2014-10-13 23:34:49
3014
原创 linux 编译jsoncpp
下载scons 在这里http://www.scons.org/解压 tar -zxvf scons-2.0.1.tar.gz设定环境变量# export MYSCONS=解压的路径# export SCONS_LIB_DIR=$MYSCONS/engine开始编译jsoncpp# cd jsoncpp-src-0.5.0结果有一些错误 也可能是早期的版本是如
2014-10-13 23:29:04
1786
原创 unix下的I/O——阻塞,非阻塞,同步,异步
前4种模型的主要区别在于第一阶段,因为它们的第二阶段都是一样的:在数据从内核缓冲区拷贝到进程缓冲区期间,进程阻塞与recvfrom这个系统调用中。参考 Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking”。Stevens一共提出了五种 IO Model:
2014-10-13 23:25:48
1993
原创 关于uboot.map 文件的作用
用make命令编译时自动生成的,里面包含所有的函数逻辑地址.printf("0x%x\n", function_name); /* 这个逻辑地址,可以在u-boot.map里找到对应的函数名,用于是debug查错,相当好,例如函数指针. */实际上,kernel开发,也常常用syste.map文件.LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttex
2014-10-13 23:24:45
1947
原创 Clojure
#Clojure在Clojure中,任何函数调用都需要用括号将其包起来。括号里 的第一个元素是函数名,剩下的是参数。user=> ( println "Give Me Some Clojure!")Give Me Some Clojure!niluser=> (-1)ClassCastException java.lang.Long cannot be cast to c
2014-10-09 00:52:58
3310
原创 elixir quote, macro
Quote , quote and Macro1 引用与去引用elixir可以被自己的数据结构表示出来。在这一章,我们将会学习到这种数据结构是怎样子的,该如果去撰写它们。这一章的学习跟宏有关,下一章我们将会更深入的学习。1.1 引用elixir代码块用三元素的元祖来表示。列如sum(1, 2, 3)函数调用,内部可以表示为:{:sum, [], [1
2014-10-07 18:22:42
2683
翻译 cowboy rest
REST Flowcharts这章节将通过一些列不同的流程图来介绍REST处理状态机。一个请求主要有四条路线,一个是方法OPTIONS, 一个是方法GET和HEAD;一个是PUT,POST和PATCH,最后一个是DELETE。所有的路径都是从“Start”开始,如果资源存在,除了OPTIONS路径,其他全部路径都经过“Content negotiation”并且可选“Cond
2014-10-07 18:17:37
2957
原创 cowboy 基础使用
CowboyInitialization首先, init函数会被调用,所有的处理都会调用该函数。如果使用rest处理当前的请求,那么这个函数必须返回upgrade[init({tcp, http}, Req, Opts) -> {upgrade, protocol, cowboy_test}.cowboy会转为REST协议来开始执行状态机,如果rest_init
2014-10-07 18:14:48
2931
原创 PoolBoy
PoolBoy source code :https://github.com/devinus/poolboyCheckoutready({checkout, Block, Timeout}, {FromPid, _}=From, State) -> #state{supervisor = Sup, workers = Wo
2014-09-04 10:21:55
3293
原创 avl树 golang实现
package mainimport ("fmt")type DataType inttype Node AVLTreeNodetype AVLTree *AVLTreeNodetype AVLTreeNode struct {key DataTypehigh intleft *AVLTreeNoderight *AVLT
2014-08-25 23:37:49
3250
原创 a simple erlang process pool analysis
a simple erlang process pool analysis
2014-08-10 23:48:59
1251
翻译 a little riak book
a little riak book 的无聊总结#!/bin/bash# Riak HTTP interface stays true to their intent: 1xx Informational, 2xx Success,# 3xx Further Action, 4xx Client Error, 5xx Server Error### putPORT=10
2014-06-24 21:15:10
1165
原创 拜占庭
拜占庭问题-----》主要是忠诚的将军如何在意见上达到一致,其他的叛徒将军不考虑,其他条件不考虑。 条件有两个:IC1:所有忠诚的副官遵守相同的命令。(协议的制定)IC2:如果发送命令的将军是忠诚的,那么所有忠诚的副官遵守司令(发出命令的将军)的命令。 特别提示:发送命令的每次只有一个将军,将其命令发送给n-1个副官。M代表叛国者的个数,因为将军总数为n,所有副官总数为
2014-03-16 23:39:26
971
原创 Paxos -- 介绍
最经在弄论文,zk的原理还是不太明白,听说zk这些协调系统都是基于Paxos算法演变出来,看来得先理解Paxos算法才行。下面是本人根据网上资料对Paxos做的总结,希望对和我一样的菜鸟有点好处(错了,来吐槽吧,文明点)Paxos 的理解困境 1 Paxos究竟在解决什么问题?2 Paxos如何在分布式存储系统中应用?3 Paxos算法的核心思想是什么
2014-03-13 23:08:34
2027
转载 vim教程
1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了
2014-03-11 20:55:03
1173
原创 erlang 之时钟
今天来看一下erlang中的时钟如何实现的:-module(timeout).-export([sleep/1,flush_buffer/0]).%%%睡眠函数sleep(Time) -> receive after Time -> true end.%%%清空邮箱flush_buffer() -> receive AnyMessage ->
2014-03-09 00:54:10
1803
原创 golang consistent hash 菜鸟分析
一直找集群的算法,刚好golang上面有一个适合。下面作为菜鸟来分析一下// Copyright (C) 2012 Numerotron Inc.// Use of this source code is governed by an MIT-style license// that can be found in the LICENSE file.// Package consist
2014-02-12 16:04:54
4221
原创 erlang 基础
Erlang变量在Eelang中一个变量的范围是在相同函数中变量被绑定后的任意位置。Case unsafe(X) →case X of one → Y = true ;_ → Z =false ;end,Y.这是一种不好的变成习惯。Y可能没有被定义。下面是安全使用变量的理想方法,对应的变量只绑定一次,而变量的值由一个case语句决定。Case 是一种匹配的方
2014-02-11 01:11:42
1020
原创 erlang --进程生成测试
下班了,写个程序先其中进程之间的消息传递如图erlang code-module(myring).-export([start/1,start_proc/2]).start(Num) -> start_proc(Num,self()).start_proc(0,Pid) -> receive ok -> ok end, Pid ! ok ;
2014-01-17 18:30:27
879
原创 erlang -- timeout 的简单使用
今天晚上有点晚了,不过还是坚持每一天写一个程序!下面的时超时器 : 建设A要想db进程发送一个信息,然后在规定的时间内等待消息的返回,那么A可以设置一个超时器,注意的是在发送消息之前,得先清空消息队列,要不然等译接到的消息可能db还没发送之前的了read(Key) -> flush(), db | {self(),{read,Key}}, receive {re
2014-01-17 00:55:28
1112
原创 erlang 之 echo 服务器
简单实现了一个echo 服务器-module(echo).-export([start/0,loop/0]).start() -> Pid = spawn(echo,loop,[]), Pid ! {self(),'Hello Word'}, receive {Pid,Msg} -> io:format('~w~n',[Msg]) end, Pid ! st
2014-01-16 01:05:24
1553
原创 erlang 并发编程
最近上班比较忙,没时间学习erlang ,实在对不起自己啊,以前一直在找erlang相关的教程,终于找到一个了,这个网站是前几天才开始运行的,以后的文章可能都是来自于那里,网站是http://www.erlang-cn.com ,大家忙没事多学习!并发编程一:-module(tut15).-export([start/0,ping/2,pong/0]).ping(0,Pong_
2014-01-11 22:08:04
1799
原创 erlang 简单的树操作
下面是一个简单非平衡的二叉树的操作-module(tree).-export([test1/0]).lookup(Key,nil) -> not_found;lookup(Key,{Key,Value,_,_}) -> {found,Value};lookup(Key,{Key1,_,Smaller,_}) when Key lookup(Key,Smaller);l
2014-01-08 00:10:56
1029
原创 erlang 之简单密码加密
这些程序主要是来之 连城 翻译的一个书里面的代码-module(encode).-export([encode/2]).encode(Pin.Password) -> Code = {nil,nil,nil,nil,nil,nil,nil,nil,nil, nil,nil,nil,nil,nil,nil,nil,nil,nil, nil,nil,nil,nil,nil,n
2013-12-30 00:20:10
1289
原创 erlang 之简单的Diction实现
最近在看学erlang ,看到了字典这个demo ,把程序Copy出来和大家分享一下-module (diction).-export([new/0,lookup/2,add/3,delete/2]).new() -> [].lookup(Key , [{Key,Value}|Rest]) -> {value,Value};lookup(Key,[Pair|Rest])
2013-12-30 00:17:27
1165
原创 常用的排序算法
#include #include /*算法的分类排序算法插入排序(直接插入排序、希尔排序)选择排序(简单选择排序、堆排序)归并排序基数排序*/////////////////////////////////////////////////////////////*堆排序*//***@param A[] 完全二叉树*@param i 看中的那个父结点*@param
2013-11-10 23:38:46
1094
原创 限制服务器最大并发连接数(47)
限制服务器最大并发连接数(MuduoManual.pdf P108)用Timing wheel踢掉空闲连接(MuduoManual.pdf P122)Timing wheel echo.h#ifndef MUDUO_EXAMPLES_IDLECONNECTION_ECHO_H#define MUDUO_EXAMPLES_IDLECONNECTION_ECHO_
2013-11-08 10:58:53
3191
原创 muduo实现简单了聊天功能(44-45)
聊天服务器(MuduoManual.pdf P66)examples/asio/chat/server.cc 单线程 examples/asio/chat/server_threaded.cc,多线程TcpServer,并用mutex来保护共享数据 examples/asio/chat/server_threaded_efficient.cc,借shared_ptr实现copy
2013-11-08 10:58:11
2975
原创 四个 服务器设计模型(42)
五个简单TCP协议(MuduoManual.pdf P50)muduo库网络模型使用示例(sudoku求解服务器MuduoManual.pdf P35 )reactor(一个IO线程)reactor + threadpool (一个IO + 多个计算线程)multiple reactor (多个IO线程)one loop per thread + thread po
2013-11-08 10:57:50
5560
原创 文件传输服务器(43)
文件传输(MuduoManual.pdf P57)examples/filetransfer/download.ccexamples/filetransfer/download2.ccexamples/filetransfer/download3.cctests/Filetransfer_test.cc单线程模式之一次性发完一个文件#includ
2013-11-08 10:57:20
1665
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人