自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fei的专栏

C/C++/Go Linux/Web 全栈之路

  • 博客(26)
  • 资源 (9)
  • 收藏
  • 关注

转载 一致性哈希算法及其在分布式系统中的应用

摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大

2016-01-17 17:10:49 627

转载 Consistent Hashing一致性哈希库libconhash的使用与实现

闲着没事看了看一致性哈希,找了个开源库libconhash看看如何实现。整过过程非常清晰,代码也非常易懂,注释也非常全,带sample,简直就是开源库的典范!!libconhash的sourceforge下载地址From wikipedia一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对K/n 个关键字重新映射,其中 K是关键

2016-01-17 17:52:09 2757 1

转载 基于一致性hash算法(consistent hashing)的使用详解

1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中

2016-01-17 16:26:53 1206

转载 基于一致性hash算法 C++语言的实现详解

在《基于一致性hash算法(consistent hashing)的使用详解》一文中已经介绍了一致性hash的基本原理,本文将会对其具体实现细节进行描述,并用c++语言对一致性hash进行了简单的实现。 一致性hash算法实现有两个关键问题需要解决,一个是用于结点存储和查找的数据结构的选择,另一个是结点hash算法的选择。首先来谈一下一致性hash算法中用于存储结点的数据结构。通过了解

2016-01-17 16:22:36 1135

转载 Upgrading from ZeroMQ v2.2 to ZeroMQ v3.2

Compatible Changes These changes don't impact existing application code directly:Pub-sub filtering is now done at the publisher side instead of subscriber side. This improves performan

2016-01-14 23:19:10 657

转载 分布式文件系统下的本地缓存

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23970017    在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统(算法优化所带来的的效果可能远远不如缓存带来的优化效果)。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memcached、Redis、淘宝的Tair等,二、本地缓存

2016-01-13 22:34:42 1204

转载 leveldb项目实践

转载请说明出处:http://blog.csdn.net/cywosp/article/details/20746879    leveldb是Google公司开源的高性能Key-Value数据库,在很多开源的项目中就有使用,例如:Chromium,淘宝的Tair,SSDB等。leveldb对于小数据在写入百万个之后读写性能依旧强劲,高效,因此非常适合用于存储小文件,以及一些需

2016-01-13 22:32:22 995

转载 leveldb资料整理

leveldb介绍 http://code.google.com/p/leveldb/ http://en.wikipedia.org/wiki/LevelDB http://highscalability.com/blog/2011/8/10/leveldb-fast-and-lightweight-keyvalue-database-from-the-auth.html htt

2016-01-13 22:31:17 596

转载 Nginx、LVS及HAProxy负载均衡软件的优缺点详解

Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型

2016-01-13 22:27:19 465

转载 leveldb之简单测试

1. 最新版下载地址https://code.google.com/p/leveldb/downloads/list2. 放到linux系统中解压并编译,其实编译leveldb很简单,解压下载包之后进入目录直接执行make即可。编译完成之后会在当前目录生成几个文件:   libleveldb.a libleveldb.so libleveldb.so.1 libleve

2016-01-13 22:25:54 1575

转载 负载均衡调度算法大全

阅读目录轮循(Round Robin)加权轮循(Weighted Round Robin)最少连接数(Least Connection)最少连接数慢启动时间(Least Connection Slow Start Time)加权最少连接(Weighted Least Connection)基于代理的自适应负载均衡(Agent Based Adaptive Balancing)固定权重(Fi

2016-01-13 22:20:29 3443

转载 Consistent hashing

What is libconhashlibconhash is a consistent hashing library which can be compiled both on Windows and Linux platforms, with the following features:High performance and easy to use, libconhash

2016-01-13 22:18:08 603

转载 五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正

2016-01-13 22:10:19 662

转载 我所熟悉的网站负载均衡技术

DNS轮循  DNS轮循是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术。但其具有明显的缺点:一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。DNS负载均衡采用的是简单的轮循负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求

2016-01-13 21:41:34 497

转载 C++中重载、重写(覆盖)和隐藏的区别实例分析

这篇文章主要介绍了C++中重载、重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下本文实例讲述了C++中重载、重写(覆盖)和隐藏的区别,对于C++面向对象程序设计来说是非常重要的概念。具体分析如下:1.重载:重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列

2016-01-10 16:00:03 466

转载 zmq中zmq_poll()函数介绍

zmq中zmq_poll()函数介绍功能: 查看指定的多个socket上哪些socket发生了指定的事件, 事件有:ZMQ_POLLIN: 有消息到来ZMQ_POLLOUT: 当前无阻塞可以发送消息ZMQ_POLLERR: 只对标准socket有效, 对zmq socket无效 该函数的返回值n:n>0: n个socket上都有事件发生n=0: 超时发生n=

2016-01-09 21:05:38 5384

转载 C++拷贝构造函数(深拷贝,浅拷贝)

C++拷贝构造函数(深拷贝,浅拷贝)对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {

2016-01-09 20:38:15 440

原创 TCP Socket和ZeroMQ socket的区别

• ZeroMQ sockets are asynchronous.zmq套接字是异步的• They may implement particular patterns.可以实现特定模式• TCP sockets are one-to-one whereas ZeroMQ sockets are many-to-many.However, you could i

2016-01-09 20:34:52 6410

转载 深拷贝和浅拷贝

C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:class Rect{private:int width;int height;};Rect rect1;Rect rect2(rect1);  // 使

2016-01-09 20:07:11 375

转载 select、poll、epoll使用小结

Linux上可以使用不同的I/O模型,我们可以通过下图了解常用的I/O模型:同步和异步模型,以及阻塞和非阻塞模型,本文主要分析其中的异步阻塞模型。一、select使用这个模型中配置的是非阻塞I/O,然后使用阻塞select系统调用来确定一个I/O描述符何时有操作。使用select调用可以为多个描述符提供通知,对于每个提示符,我们可以请求描述符的可写,可读以及是否发生错误

2016-01-07 22:40:08 638

原创 【leetcode】107. Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For example:Given binary tree {3,9,20,#,#,15,7},

2016-01-05 22:42:29 630

转载 const、volatile、mutable的用法

const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue;    //nValue是co

2016-01-03 23:25:30 512

转载 STL vector用法介绍

介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能

2016-01-03 23:22:51 403

原创 [leetcode]101.Symmetric Tree

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree is symmetric: 1 / \ 2 2 / \ / \3 4 4 3But the f

2016-01-03 23:09:36 472

转载 malloc 和alloc及calloc的区别

malloc() 函数和calloc()函数的主要区别是前者不能初始化所分配的内存空间,而后者能。如果由malloc()函数分配的内存空间原来没有被使用过,则其中 的每一位可能都是0;反之,如果这部分内存空间曾经被分配、释放和重新分配,则其中可能遗留各种各样的数据。也就是说,使用malloc()函数的程序开 始时(内存空间还没有被重新分配)能正常运行,但经过一段时间后(内存空间已被重新分配)可能会

2016-01-01 16:21:32 863

转载 二维数组和二维指针

二维数组和二维指针题号题目答案解析1以下程序的输出结果是______。main(){  int  i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];   for(i=0;i}A、52 B、51 C、53 D、97本

2016-01-01 15:54:52 3559

Go Programming Blueprints - Mat Ryer - 2015 (1).pdf

Go Programming Blueprints - Mat Ryer - 2015 (1).pdf

2015-11-26

The-Golang-Standard-Library-by-Example-master.zip

The-Golang-Standard-Library-by-Example-master.zip

2015-11-26

Effective Go (中文版).pdf

Effective Go (中文版).pdf

2015-11-26

利用剪贴板实现进程之间的通信

该程序包括一个发送端和一个接收端窗口,发送端窗口将数据放到剪贴板中,然后接收端窗口就可以从剪贴板将数据读出,进而实现了两个进程之间的通信

2010-10-15

使用多线程模拟火车站售票系统

程序模拟了火车站售票系统,程序中使用了多线程的实现方法,并用多种方法实现了线程的同步,麻雀虽小,五脏俱全。

2010-10-09

空空如也

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

TA关注的人

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