<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[buptapple的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/buptapple</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; buptapple]]></copyright><item><title><![CDATA[使用markdown进行代码阅读笔记]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/50196573</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/50196573</guid><author>buptapple</author><pubDate>Sun, 06 Dec 2015 17:47:12 +0800</pubDate><description><![CDATA[1. markdown编辑软件
markdownpad：http://download.youkuaiyun.com/detail/buptapple/9331211

使用GitHub进行渲染来支持代码高亮：选项---markdown---markdown处理器---GitHub风格的Markdown
不要选择离线模式的markdown，因为离线模式只支持代码片段渲染，不支持代码语法高亮。
2. ]]></description><category></category></item><item><title><![CDATA[gperftools的pprof安装]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/49847199</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/49847199</guid><author>buptapple</author><pubDate>Sun, 15 Nov 2015 10:24:37 +0800</pubDate><description><![CDATA[gperftools提供了对内存和cpu的trace功能，trace结果可以通过pprof做可视化展示。这里记录一下pprof工具的相关安装：
1. 基本展示，比如text：
    只需要安装google-perftools就随带安装了pprof，text是默认支持的格式。
    sudo yum install google-perftools.x86_64
2. 图形换展示，比如p]]></description><category></category></item><item><title><![CDATA[linux文件系统文件路径，inode，block号，sector号的相互转换]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/49758081</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/49758081</guid><author>buptapple</author><pubDate>Tue, 10 Nov 2015 12:47:42 +0800</pubDate><description><![CDATA[测试文件：/usr/lib64/libstdc++.so.6.0.8
0. 装载debugfs
    mount -t debugfs none /sys/kernel/debug
1. 正向查找
    a. 根据文件查找inode
    $ls -i /usr/lib64/libstdc++.so.6
    2050380 /usr/lib64/libstdc++.so.6]]></description><category></category></item><item><title><![CDATA[获取当前时间并转为string]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/49276435</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/49276435</guid><author>buptapple</author><pubDate>Tue, 20 Oct 2015 13:56:00 +0800</pubDate><description><![CDATA[#include 
#include 

#include 
#include 
using namespace std;

string getTimeInString()
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    struct tm *ptm = gmtime(&tv.tv_sec);
    string strTim]]></description><category></category></item><item><title><![CDATA[调试libstdc++内部的函数]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/49205995</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/49205995</guid><author>buptapple</author><pubDate>Sat, 17 Oct 2015 18:37:52 +0800</pubDate><description><![CDATA[当libstdc++内部报错的时候一般不会深入调试，更多的是从自身代码来找问题。一方面是标准库出错的可能性较小，另一方面libstdc++的调试也不是很方便，默认的libstdc++不带符号表，stack一般定为不到具体的文件行号，比如：
(gdb) bt
#0  0x0000003ebda30265 in raise () from /lib64/libc.so.6
#1  0x00000]]></description><category></category></item><item><title><![CDATA[解决valgrind线程数不够的错误：no free slots available Increase VG_N_THREADS, rebuild and  try again.]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/48652743</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/48652743</guid><author>buptapple</author><pubDate>Tue, 22 Sep 2015 13:32:23 +0800</pubDate><description><![CDATA[原生valgrind无法检查线程数较多的进程，解决的办法是自行修改源码并编译。
1. 下载最新的valgrind源码包
http://valgrind.org/downloads/current.html
2. 修改VG_N_THREADS的值
测试用的是3.10.1版本，默认是500，现在改为5000
include/pub_tool_threadstate.h:#define VG_]]></description><category></category></item><item><title><![CDATA[获取POSIX线程真实PID/TID]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/40275035</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/40275035</guid><author>buptapple</author><pubDate>Sun, 19 Oct 2014 22:58:14 +0800</pubDate><description><![CDATA[获取POSIX线程真实PID/TID

　　Linux中，每个进程有一个pid，类型pid_t，由getpid()取得。Linux下的POSIX线程也有一个id，类型 pthread_t，由pthread_self()取得，该id由线程维护，其id空间是各个进程独立的（即不同进程中的线程可能有相同的id）。你可 能知道，Linux中的POSIX线程库实现的线程其实也是一个进程（LWP），只是该]]></description><category></category></item><item><title><![CDATA[linux用户态和内核态理解]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/21454167</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/21454167</guid><author>buptapple</author><pubDate>Tue, 18 Mar 2014 13:32:31 +0800</pubDate><description><![CDATA[1、特权级      




Intel x86架构的cpu一共有0～4四个特权级，0级最高，3级最低，硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查。硬件已经提供了一套特权级使用的相关机制，软件自然要好好利用，这属于操作系统要做的事情，对于UNIX/LINUX来说，只使用了0级特权级别和3级特权级。也就是说在UNIX/LINUX系统中，一条工作在0级特权级的指令具有了CP]]></description><category></category></item><item><title><![CDATA[让你的模拟器不再卡：VirtualBox安裝 Android-x86 4.0（可上网）]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/20616891</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/20616891</guid><author>buptapple</author><pubDate>Thu, 06 Mar 2014 11:50:09 +0800</pubDate><description><![CDATA[为什么Android虚拟机比iOS和WP7的虚拟机要慢很多呢？原因如下：


1. Android 模拟器模拟的是 ARM 的体系结构(arm-eabi)，而 iOS 和 WP7 的模拟器的目标体系结构都是 x86 的，另外 iOS 的模拟器中运行的 App 也是编译为 x86 的。这样一来 Android 模拟器需要做一些额外的二进制翻译工作。 
2. Android 模拟器用的是 QE]]></description><category></category></item><item><title><![CDATA[多线程程序中操作的原子性]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/19134827</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/19134827</guid><author>buptapple</author><pubDate>Wed, 12 Feb 2014 22:37:44 +0800</pubDate><description><![CDATA[多线程程序中操作的原子性



0. 背景

原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念，它常常用来实现一些同步机制，同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题：1. 多线程程序中对变量的读写操作是否是原子的？2. 多线程程序中对Bit field（位域）的读写操作是否是线程安全的？3. 程序员该如何使用原子操作？

1. 多线程环境下]]></description><category></category></item><item><title><![CDATA[Name Mangling in C++]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/19042883</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/19042883</guid><author>buptapple</author><pubDate>Mon, 10 Feb 2014 16:52:03 +0800</pubDate><description><![CDATA[摘要：详细介绍了C++中的Name Mangling的原理和gcc中对应的实现，通过程序代码和nm c++filt等工具来验证这些原理。对于详细了解程序的链接过程有一定的帮助。
Name Mangling概述
大型程序是通过多个模块构建而成，模块之间的关系由makefile来描述。对于由C++语言编制的大型程序而言，也是符合这个规则。
程序的构建过程一般为：各个源文件分别编译，形成目标文件。]]></description><category></category></item><item><title><![CDATA[shell 积累]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/17533939</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/17533939</guid><author>buptapple</author><pubDate>Tue, 24 Dec 2013 18:04:39 +0800</pubDate><description><![CDATA[1. shell 函数：http://www.cnblogs.com/chengmo/archive/2010/10/17/1853356.html]]></description><category></category></item><item><title><![CDATA[组合c(m,n)的计算方法]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/17249451</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/17249451</guid><author>buptapple</author><pubDate>Tue, 10 Dec 2013 19:43:33 +0800</pubDate><description><![CDATA[组合c(m,n)的计算方法




问题：求解组合数C(n,m)，即从n个相同物品中取出m个的方案数，由于结果可能非常大，对结果模10007即可。

方案1:

暴力求解，C(n,m)=n*(n-1)*...*(n-m+1)/m!，n

 

[cpp]
int Combination(int n, int m) 
{ 
    const int M = 1000]]></description><category></category></item><item><title><![CDATA[linux 错误机制]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/17242313</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/17242313</guid><author>buptapple</author><pubDate>Tue, 10 Dec 2013 12:23:13 +0800</pubDate><description><![CDATA[Linux错误机制
1,在用户进行文件操作的时候,会出各种各样的错误,比如权限不足,空间不足,找不到文件等,此时需在程序中设置错误捕捉语句,并显示错误.
    在linux中错误定义成了错误号和错误常数,如果发生错误,便宜会返回
    
    在终端上可以用以下命令来查看错误的定义:
    cat /usr/include/asm/errno.h
    如下:
#ifnde]]></description><category></category></item><item><title><![CDATA[使用pssh进行并行批量操作]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/17028179</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/17028179</guid><author>buptapple</author><pubDate>Fri, 29 Nov 2013 18:08:42 +0800</pubDate><description><![CDATA[使用pssh进行并行批量操作

假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是不是同步并行执行.，这类工具比如pdsh，mussh，cssh，dsh等还有这里提到的pssh: 1  安装:
#wget http://peak.telecomm]]></description><category></category></item><item><title><![CDATA[teraSort相关]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/12877801</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/12877801</guid><author>buptapple</author><pubDate>Sat, 19 Oct 2013 23:16:44 +0800</pubDate><description><![CDATA[http://dongxicheng.org/mapreduce/hadoop-terasort-analyse/
http://blog.youkuaiyun.com/yongjian_luo/article/details/9955249

http://www.cnblogs.com/cherish_yimi/archive/2009/10/12/1581666.html

http://so]]></description><category></category></item><item><title><![CDATA[C内存对齐详解 struct对齐]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/12656377</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/12656377</guid><author>buptapple</author><pubDate>Sat, 12 Oct 2013 19:47:39 +0800</pubDate><description><![CDATA[转：http://www.189works.com/article-10322-1.html　　
一、什么是对齐，以及为什么要对齐：
　　1. 现代计算机中内存空间都是按照byte划分的，从理论上讲似乎对任何类型的变量的访问可以从任何地址开始，但实际情况是在访问特定变量的时候经常在特定的内存地址访问，这就需要各类型数据按照一定的规则在空间上排列，而不是顺序的一个接一个的排放，这就是对齐。]]></description><category></category></item><item><title><![CDATA[linux中配置文件积累（screen）]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/12565555</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/12565555</guid><author>buptapple</author><pubDate>Thu, 10 Oct 2013 12:55:01 +0800</pubDate><description><![CDATA[screen：
vbell off
altscreen on
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]']]></description><category></category></item><item><title><![CDATA[RAID介绍]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/12293153</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/12293153</guid><author>buptapple</author><pubDate>Fri, 04 Oct 2013 22:54:40 +0800</pubDate><description><![CDATA[RAID0-6: 深入分析：http://blog.youkuaiyun.com/menogen/article/details/11848973；
RAID知识点全面总结：http://blog.youkuaiyun.com/kkfloat/article/details/9673135]]></description><category></category></item><item><title><![CDATA[python 知识点积累]]></title><link>https://blog.youkuaiyun.com/buptapple/article/details/12233235</link><guid>https://blog.youkuaiyun.com/buptapple/article/details/12233235</guid><author>buptapple</author><pubDate>Wed, 02 Oct 2013 11:12:26 +0800</pubDate><description><![CDATA[传值与传引用：http://hi.baidu.com/isaacli/item/60608cdc46d8de12d78ed040]]></description><category></category></item></channel></rss>