- 博客(266)
- 资源 (7)
- 收藏
- 关注

原创 每天进步一点点——论fork()函数与Linux中的多线程编程
fork()函数的调用会导致在子进程中除调用线程外的其它线程全都终止执行并消失,因此在多线程的情况下会导致死锁和内存泄露的情况。在进行多线程编程的时候尽量避免fork()的调用,同时在程序在进入main函数之前应避免创建线程,因为这会影响到全局对象的安全初始化。
2014-05-28 10:49:52
39866
1

原创 每天进步一点点——Linux中的线程局部存储(一)
在Linux系统中使用C/C++进行多线程编程时有些数据无需使用锁即可做到快速高效,本文从线程局部存储出发讨论如何高效的实现无锁编程。
2014-05-21 14:25:21
32082
1

原创 每天进步一点点——Linux系统中的时间处理
在程序中时间处理往往是一个麻烦的事,Linux系统提供了很多关于时间处理的函数,我们可以用这些函数来完成我们所需要的功能。本文详细讲解在C/C++开发过程中常用的时间处理函数。
2014-05-14 23:17:46
9476

原创 每天进步一点点——分布式文件系统下的本地缓存
在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memcached、Redis、淘宝的Tair等,二、本地缓存,例如:Facebook的flushcache等,其中本地缓存又可以分为两种:本地磁盘缓存(现在一般都采用读写性能比较优异的SSD来做存储)和本地内存缓存。
2014-04-17 23:13:26
20879
7

原创 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
五分钟让你深入了解分布式系统中常用的一致性哈希算法
2014-04-11 00:21:03
492713
131

原创 每天进步一点点——分布式集群管理
现在很多互联网科技公司,还有一些传统的it公司都在根据自身的业务发展来设计符合实情的分布式系统。虽然,已有很多优秀的开源分布式系统,但是由于需求不同,业务不同,这些只能在设计符合自身需求的分布式系统时用于参考。个人认为,设计一个分布式存储系统并不是太难,主要困难在于如何设计并实现一个可以自动化处理各个节点状态的分布式集群管理系统。分布式系统到现在已经发展了很多年了,有些公司已经部署并上线使用多年,
2014-03-14 23:53:05
16354

原创 每天进步一点点——Linux下的磁盘缓存
前段时间在开发一个使用SSD做缓存的系统,在高速写入数据时会出现大量的磁盘缓存。太多的磁盘缓存如果没有及时的写入磁盘中,在机器出现问题时是非常危险的,这样会导致很多的数据丢失,但是如果实时的将数据刷入磁盘中,这样写入效率有太低了。为了弄明白Linux系统的这种磁盘写入特性,最近深入的学习了一下。 VFS(Virtual File System)的存在使得Linux可以兼容不同的文件系统,
2014-03-12 23:29:37
21717
1

原创 每天进步一点点——leveldb项目实践
leveldb是Google公司开源的高性能Key-Value数据库,在很多开源的项目中就有使用,例如:Chromium,淘宝的Tair,SSDB等。leveldb对于小数据在写入百万个之后读写性能依旧强劲,高效,因此非常适合用于存储小文件,以及一些需要持久化的索引和需要持久化的异步任务。 接触leveldb已经有一段时间了,当初为了找到一款轻量,高性能的数据库用于存储分布式文件系统中的
2014-03-08 00:48:35
22839
1

原创 每天进步一点点——Swift项目实践
于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题,即使是按照官方文档一步一步的操作,由于某些硬件的不同,也会产生一些莫名其妙的问题,不是数据库因为配置不妥导致无法连接,就是swift的认证无法通过,再者就是上传虚拟机镜像时各种的不可用,申请虚拟机
2014-02-25 15:45:03
13568

原创 每天进步一点点——swift对象副本修复之简单理解
一直以来都在使用openstack的swift来做分布式存储,至于为什么使用其来做存储在这里就不说明(网上搜搜其的优点就知道了),随着项目的步步深入,越来越多的问题也随之而来。在项目进行的过程中对swift的理解也越来越多,swift的核心代码行并不是太多,而且也十分容易理解。下面通过实验来理解swift Object的副本修复功能(swift版本为1.9.1)。一. swift的
2013-10-18 11:26:26
13216

翻译 C++ Pirate: Lambda vs Bind
Lambda 与 Bind的性能比较先让我们看看下面函数:template void do_test_loop(Function func, const uint64_t upper_limit = 1000000000ULL){ for (uint64_t i = 0; i < upper_limit; ++i) func(i);} 该函数
2013-07-19 13:49:32
3732

翻译 atomic, spinlock and mutex性能比较
atomic, spinlock and mutex性能比较转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/8987593我非常好奇于不同同步原理的性能,于是对atomic, spinlock和mutex做了如下实验来比较:1. 无同步的情况#include #include volatile int value
2013-05-29 08:57:07
13327

原创 Linux中用C++通过管道来获取命令行输出的内容
Linux中用C++通过管道来获取命令行输出的内容转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/8980898 使用C++时,有些时候我们可以通过管道的方法来获取所执行的命令所输出的内容。具体做法如下: 首先你需要确定你所执行的命令所输出的内容的格式(不同的操作系统相同的命令所输出来的内容格式可能会不一致)。我们来举
2013-05-27 17:27:07
10432

原创 整数类型转换成string的几种方法
整数类型转换成string的几种方法 转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/8980633 最近遇到了要将整数类型转化成string的问题,网上搜罗了一下,总结了几种方法。如下:方法一:templatestatic size_t Convert (char buf[], const T valu
2013-05-27 16:50:51
16606

原创 C++11 多线程中的call once
转贴请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/8968655 在多线程的环境下,有些时候我们不需要某给函数被调用多次或者某些变量被初始化多次,它们仅仅只需要被调用一次或者初始化一次即可。很多时候我们为了初始化某些数据会写出如下代码,这些代码在单线程中是没有任何问题的,但是在多线程中就会出现不可预知的问题。bool init
2013-05-24 10:31:31
10933

原创 C++ STL相关容器详解
vector:一种随机访问的数组类型,他提供了对数组元素的快速、随机访问,以及在序列尾部快速、随机的插入和删除操作。它在需要时可以改变其大小,也就是说大小可变的向量,比较灵活。可取代C++语言本身提供的传统数组。提供随机存储能力。操作尾端元素的速度最快。由于所有元素占用连续空间,所以一旦进行插入或者删除动作,有可能使原本的某些 iterators失效。list:这是
2012-03-14 17:49:38
3354

原创 C++ string 字符串的下标和子串函数
可以用assign()函数来设置字符串的元素,也可以用下标运算符[]和成员函数at()来检索字符串中的某个字符或修改字符串中的某个字符。 assign()函数的主要语法如下所示: //将str的内容赋值给string对象 string& assign ( const string& str ); //将str的内容从pos开始取n个赋值给string对
2012-02-22 00:08:02
23538

原创 C++ string类中的字符串查找
C++ string类中的字符串查找 类string提供了大量查找功能和搜索功能,其中比较常用的查找和搜索函数是find()函数、find_first_not_of()函数、find_first_of()函数、find_last_not_of()函数、find_last_of()函数、rfind()等。 find()函数的语法如下所示: (1)
2012-02-21 17:20:10
119235

原创 两个有序链表(相邻元素可能相同)找出他们交集,并把结果放到另一链表中
两个有序链表(相邻元素可能相同),找出他们的交集,并把结果放到另一链表中,代码如下:typedef struct Node* pNode; struct Node{ int val; struct Node *next;};pNode merge(pNode head1, pNode head2){ pNode head = NULL; pNode
2012-02-18 00:25:27
4317

转载 Linux服务器性能评估与优化
一、影响Linux服务器性能的因素 1. 操作系统级 Ø CPUØ 内存Ø 磁盘I/O带宽Ø 网络I/O带宽 2. 程序应用级 二、系统性
2011-08-28 00:31:27
1664

转载 企业文件服务器搭建案例
6.9 章节案例在本章案例讲解中通过4个模拟项目对Samba的功能进行演示,其中第一个案例模拟一个企业中服务器全部基于RHEL5.x,客户端在访问Samba服务器时,用户认证及所有用户行为控制全部通过RHEL5.x完成。第二个案例模拟一个异构环境,在企业中已使用微软的Wi
2011-08-13 01:08:18
10976
原创 点滴记录——使用Ganglia监控Openstack Swift状态
本文简单讲述如何使用Ganglia监控Openstack Swift的状态
2014-12-31 23:27:20
5430
原创 点滴记录——CentOS 6.4中使用virtualenv安装swift
CentOS 6.4中使用virtualenv安装openstack swift,避免服务器中的其他python库与swift的依赖库相冲突
2014-12-25 18:24:53
5179
原创 点滴记录——Linux Mysql数据库误删root用户
在Linux中有时安装Mysql会出现没有root用户的状况,或者说root账户被从mysql.user表中误删除,这样就导致很多权限无法控制。解决办法是重新创建root用户,并授予所有权限,具体方法如下:1. 修改/etc/my.conf文件,添加skip-grant-tables[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/
2014-12-25 14:19:00
7868
原创 点滴记录——VirtrualBox使用已存在的镜像创建虚拟机
再将一个已经存在的虚拟机镜像拷贝为另一个新的虚拟机镜像后,要将该新的镜像添加到新的虚拟机中时会出现错误提示,从而导致不能创建虚拟机。例如有'D:\App\VirtualBox VMs\CentOS_6.5_One\CentOS_6.5_One.vmdk' 镜像拷贝成'D:\App\VirtualBox VMs\CentOS_6.5_Three\CentOS_6.5_Three.vmdk' 后,将其
2014-11-29 23:17:45
12445
原创 点滴记录——Ubuntu 自动挂载windows分区
1. 使用命令ls -al /dev/disk/by-uuid查看所有磁盘分区的UUIDlrwxrwxrwx 1 root root 10 11月 19 09:55 00080497000DE3CF -> ../../sda5lrwxrwxrwx 1 root root 10 11月 19 09:55 000A0FEA000DC472 -> ../../sda6lrwxrwxrwx
2014-11-20 23:06:56
2907
原创 Swift开启StatsD后出现上传数据出现返回503的Bug
Openstack的Swift开启StatsD功能后出现上传数据返回503的Bug分析及解决办法
2014-11-04 11:12:39
4253
原创 每天进步一点点——Ganglia的Python扩展模块开发
使用python开发Ganglia自定义的集群监控信息,快速了解集群健康状态,从开发metric开始
2014-09-30 23:01:49
8693
1
原创 每天进步一点点——求最大子序列和问题
假设有如下整数数组 -10 5 0 8 -1 10 -10 100 -1 求其最大的子序列和。从该数组我们可以知道其子序列和最大的序列为5 0 8 -1 10 -10 100且等于112。(为方便起见,如果数组全是负数则最大和为0)
2014-08-11 15:29:57
3414
原创 使用C语言判断栈的方向
这一问题主要是如何判读出先后入栈的变量的地址大小,比如有a, b两个变量一先一后被定义,如果a的地址大于b的地址,则说明是以低地址方向增长的,反之,往高地址方向增长。
2014-07-29 14:58:41
4237
2
原创 每天进步一点点——负载均衡之数据链路层
快速理解分布式集群中使用最为广泛的负载均衡技术——数据链路层负载均衡,这种负载均衡模式在分布式面试考题中常常被问到。
2014-07-23 07:15:40
11777
3
network-manager
2013-05-17
Linux 网络编程
2010-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人