自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

转载 C++ 高性能无锁日志系统

服务器编程中,日志系统需要满足几个条件.高效,日志系统不应占用太多资源.简洁,为了一个简单的日志功能引入大量第三方代码未必值得.线程安全,服务器中各个线程都能同时写出日志.轮替,服务器不出故障是不重启的,半年一年的日志放到一个文件会导致文件过大.及时保存,程序故障导致异常退出,此时需要通过日志诊断问题,不缓冲的日志系统更易用著名的日志库有log4

2015-12-31 13:37:41 2558

转载 文件的多进程读写

一直以为多进程读写文件是安全的,只有fflush和fclose才会真正修改文件内容,诸多开源项目的日志系统也基本都是多线程的,asterisk同样没有为ast_log建立一个专门的日志线程,而是各自调用,通过fflush直接写缓存。但是最近在8032上面发现的一个问题改变了我的看法。 问题描述:    跟踪用户设备时发现网管配置文件snmp.conf出现过几次文件内容丢失的情况

2015-12-30 15:19:40 3203

转载 余弦距离、欧氏距离和杰卡德相似性度量的对比分析

1、余弦距离余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角。余弦定理描述了三角形中任何一个夹角和三个边的关系。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。

2015-12-29 17:25:55 1949

转载 boost install

以下是在ubuntu 7.10 (内核 2.6.22-14)下安装的例子:一、下载最新的 boost 库,下载地址: http://www.boost.org/users/download/二、在适当的位置解压 boost 库,推荐把 boost 库解压到 /usr/local/ 下:$ cd dowload/     # 这个地方替换成你的boost库下载目录$ tar

2015-12-29 11:48:13 561

转载 ubuntu12.04安装svn 更新

1.问题    在Ubuntu12.04上面安装svn,默认的版本是1.6,突然想使用高版本的svn。2.解决办法    1. 在sources.list添加ppa的源,可以在末尾添加如下两行:       deb http://ppa.launchpad.net/svn/ppa/ubuntu precise main        deb-src

2015-12-25 11:44:56 622

转载 配置apt-get高速下载源

今天刚装上Ubuntu Server 12,默认的apt-get源比较慢。更改一下源地址。方法:1、修改源地址:cp /etc/apt/sources.list /etc/apt/sources.list.bakvim /etc/apt/sources.list加入如下内容(中科大的):deb http://mirrors.ustc.edu.cn/ubu

2015-12-25 11:37:47 616

转载 序列化和反序列化

摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系统更

2015-12-24 14:18:32 411

转载 高级语言的编译:链接及装载过程介绍

引言随着越来越多功能强大的高级语言的出现,在服务器计算能力不是瓶颈的条件下,很多同学会选择开发效率高,功能强大的虚拟机支持的高级语言(Java),或者脚本语言(Python,Php)作为实现功能的首选,而不会选择开发效率低,而运行效率高的 C/C++ 作为开发语言。而这些语言一般情况下是运行在虚拟机或者解释器中,而不需要直接跟操作系统直接打交道。虚拟机和解释器相当于为高级语言或者脚

2015-12-24 13:22:09 961 1

转载 Linux strace命令

简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义root@ubuntu:/usr# strac

2015-12-23 16:45:00 342

转载 如何使用strace+pstack利器分析程序性能

引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用

2015-12-23 16:09:35 382

转载 c语言:统计整数二进制表示中1的个数(汉明重量)

问题描述:对于一个字节的无符号整型变量,求其二进制表示中1的个数。第一次见到这个问题应该是icephone第一次例会的时候,问题虽然简单,但也值得深思。后来查阅资料的时候才知道这个问题有个正式的名字叫Hamming_weight,也被一些公司当做面试题。下面通过几个不同阶段的算法,谈谈这个问题。一、逐个数刚刚接触这个问题的时候是上学期

2015-12-22 18:10:04 1283

转载 动态规划算法

一、基本概念    动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略    基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能

2015-12-22 14:22:22 491

转载 计算机科学中最重要的32个算法

计算机科学中最重要的32个算法奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。A* 搜索算法—

2015-12-22 14:08:36 501

转载 CAP理论十二年回顾:"规则"变了

自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于网络的数据共享系统,都最多只能拥有以下三条中的两条:数据一致性(C),等同于所有节点访问同一份最新的数据副本;对数据更新具备高可用性(A);能容忍网络分区(P)。CAP

2015-12-22 13:55:45 535

转载 CAP理论十二年回顾:"规则"变了

自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于网络的数据共享系统,都最多只能拥有以下三条中的两条:数据一致性(C),等同于所有节点访问同一份最新的数据副本;对数据更新具备高可用性(A);能容忍网络分区(P)。CAP

2015-12-22 13:54:40 519

转载 10条命令,一分钟分析Linux性能问题

当你登录到一台存在性能问题的Linux服务器上时,在头一分钟,你会检查什么?我们看看Netflix的性能工程师是怎么做的。Netflix大量使用EC2 Linux服务器,很多时候是用一些较为高层的工具做云或实例层次的分析。不过有时仍然需要登录到某个实例上,运行一些标准的Linux性能工具。在最开始的一分钟内,可以先利用手头的标准Linux

2015-12-22 13:19:37 1476

转载 多线程、多进程写同一日志情况下的日志库中 I/O 的选型

文件描述符与 inode 相关背景知识出自《The Linux Programming Interface》多线程有上面的背景知识可知,多线程情况下写同一文件用的是同一个【文件偏移量】,因此只要单条写日志操作是原子操作,就不会出现日志混乱的情况。系统 I/O系统 I/O write() 不带应用层缓冲(进程级别缓冲),因此只要保证单条日志操作

2015-12-21 18:25:45 1117

转载 国内互联网公司的开源项目及github地址汇总

阿里阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分。有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件,例如 MetaQ(分布式消息系统)、dubbo(RPC框架)、cobar(数据库中间件),或者是Java世界的工具,例如druid、fastjson。都说国内Java公司的技术架构大部分来自阿里系,我觉得一方面来自阿里员工,一方面也可以来自阿里的开源

2015-12-21 11:42:06 550

转载 Mysql中间件研究(Atlas,cobar,TDDL)

http://www.th7.cn/db/mysql/201406/59016.shtmlmysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。Atlas

2015-12-21 10:13:29 541

转载 [译]详解C++右值引用

C++0x标准出来很长时间了,引入了很多牛逼的特性[1]。其中一个便是右值引用,Thomas Becker的文章[2]很全面的介绍了这个特性,读后有如醍醐灌顶,翻译在此以便深入理解。目录概述move语义右值引用强制move语义右值引用是右值吗?move语义与编译器优化完美转发:问题完美转发:解决方案Rvalue References And

2015-12-17 11:11:02 447

转载 分布式一致性Paxos算法学习笔记

http://www.cnblogs.com/ychellboy/tag/paxos/

2015-12-14 17:53:51 465

转载 Paxos算法

维基百科,自由的百科全书Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的“La”)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。[1]目录  [隐藏] 1问题和假设2算法2.1算法的提出与证明2.2算法的内容2.2.1决议的提出与批准2.2.2实例2.2.2.1

2015-12-14 17:49:10 453

转载 linux rsync介绍

【1】 rsync介绍Rsync(Remote Synchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并不是每次都整份传送,它只传送两台计算机之间所备份的资料不同的部分,因此速度相当快。Rsync的优点如下:1、可以镜像保存整个目录树和文件系统。2

2015-12-14 13:51:16 317

转载 gettid 和pthread_self的区别

Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,

2015-12-14 13:31:30 459

转载 CentOS开启coredump转储并生成core文件的配置

在CentOS或者suse等Linux系统中默认是关闭coredump核心转储的,也就不会产生core文件。由于在C/C++开发中会用到gdb调试,所以需要开启coredump功能。下面是具体的配置命令,可以保存为一个简单的shell脚本执行。#!/bin/bash### Filename: coredumpshell.sh### Description: enable coredump

2015-12-10 10:40:54 6843

转载 让CentOS默认生成core dump 当前用户

CentOS中默认设置了ulimit -c 0也就是默认程序不生成core dump,这样很麻烦,每次启动程序前都要让用户先执行一次ulimit -c ulimited,有时候用户忘记则不生成core,很不利于错误分析,所以研究了下如何让系统默认就生成core.在网上找了部分资料,看到了CentOS 5中ulimit值调整并永久生效的方法http://www.sunchis.com

2015-12-10 10:39:40 1542

转载 GCC编译器选项及优化提示

哦,忘了说一声,"-O2"已经启用绝大多数安全的优化选项了,所以其实你不必对那一堆选项发愁。先说说"-O3"在"-O2"基础上增加的几项,你可以按需添加(还算比较安全):[gcc-3.4.4]-finline-functions 允许编译器选择某些简单的函数在其被调用处展开-fweb 为每个web结构体分配一个伪寄存器-frename-registers 试图驱除代码中的假依赖

2015-12-05 13:55:49 1812

转载 __pthread_once 源码解析

想到这个主题,也是由于最近在写自己的开源代码时,发现使用的singleton类是线程不安全的,虽然在应用主线程都已确保了初始化的正确性,但从一个通用库的角度来讲,这么做就无法保证使用者不出问题,也限制了自由度,pthread_once就是解决这个问题的一个良方,不过首先我们还是先从一些基本的singleton实现说起。网上关于singleton类的实现真是一搜一箩筐,从最简单的说起(注:为

2015-12-02 19:06:32 1153

空空如也

空空如也

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

TA关注的人

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