- 博客(35)
- 收藏
- 关注
原创 GCC升级到4.8之后,gdb调试No symbol "XXXXX" in current context问题
将GCC升级到4.8之后,使用旧版本的gdb,在调试时会出现以下2个问题:1. 编译选项设为-g -O0,但是cgdb进去时不在main函数入口处。2. 提示No symbol "XXXXX" in current context以上问题是由于GCC 4.8使用dwarf4(gcc.gnu.org/gcc-4.8/changes.html),而GDB不识别。解决方法有2种:1
2016-05-04 17:24:03
1137
原创 gdb/cgdb调试库函数
1. 编译库文件时,加入了-g选项2. 启动gdb/cgdb时,将源码所在目录加入gdb搜索路径 gdb -d DIR 或 gdb --directory=DIR以调试berkeleyDB为例,bdb库的源码目录为:**/db_version/src3. 或者在启动gdb/cgdb后,用dir命令加入源码所在目录 dir DIR
2015-06-15 17:22:00
1557
转载 Linux Page Cache机制
本文转载自Linux Cache 机制探究经过研究了下Linux相关代码,把对Linux Cache实现的方式做一些总结。相关源码主要在:./fs/fscache/cache.c Cache实现的代码./mm/slab.c SLAB管理器代码./mm/swap.c 缓存替换算法代码./mm/mmap
2015-06-05 21:56:46
14162
原创 Aspera Server端设置
Aspera是一款商用远程文件传输工具,Client端和Server端都需要做一定的配置。下面先介绍CentOS下Aspera Server端的配置步骤:1. 安装Aspera Server,RPM包可以从其官网下载。2. 安装license。用Aspera的license文件覆盖原有的aspera-license文件cp license-file /opt/aspera/etc/
2014-06-04 19:58:07
7582
1
转载 Google File System中文翻译
Google文件系统 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。 1、设计概览 (1)设计想定 GFS与过去的分布式文件系统有很多相同的目标,但GFS的设计受到了当前及预期的应用方面的工作量及技术环境的驱动,这反映了它与早期的文件系统明显不同的设想。这就
2014-05-09 09:41:35
594
转载 MapReduce中文翻译
MapReduce:超大机群上的简单数据处理 摘要MapReduce是一个编程模型,和处理,产生大数据集的相关实现.用户指定一个map函数处理一个key/value对,从而产生中间的key/value对集.然后再指定一个reduce函数合并所有的具有相同中间key的中间value.下面将列举
2014-05-09 09:40:20
990
转载 Redis作者:深度剖析Redis持久化
Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述。文章主要包含三个方面:Redis持久化是如何工作的、这一性能是
2014-04-30 09:56:29
599
原创 Latex使用技巧-论文排版
1. 设置paper尺寸为US Letter Portrait (8.5 x 11 in). ACM的sig-alternate.cls并没有设置page size。如果希望将paper尺寸设置为8.5 x 11 in,在Latex中添加如下命令:% Set letter paper size:\setlength{\paperheight}{11in}\setlength{
2014-03-28 09:43:16
2442
原创 CentOS 6.2上安装cgdb
1. 安装readline, 默认安装目录为/usr/local/lib2. 安装cgdb 说明:如果执行./configure时,提示 configure: error: CGDB requires GNU readline 5.1 or greater to link. 以及出现 configure: error: cgdb needs ncurses/curses to
2013-07-12 16:56:27
4149
转载 vim查找与替换
语法为:[addr]s/源字符串/目的字符串/[option][addr] 表示检索范围,省略时表示当前行。如:“1,20” :表示从第1行到20行;“%” :表示整个文件,同“1,$”;“. ,$” :从当前行到文件尾;2.1,简单替换表达式替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g最后的 “g” 标记表示替换行中的所有匹配点。如果
2013-04-19 08:36:48
656
原创 vim配置及修改vim颜色
1. vim中,默认的终端目录颜色和vim的注释颜色均为蓝色,在黑色背景下,对比不明显,看不清楚。(1). 修改终端目录颜色拷贝/etc/DIR_COLORS文件为当前主目录的 .dir_colorscp /etc/DIR_COLORS ~/.dir_colors2)修改~/.dir_colors中DIR对应的颜色vim ~/.dir_colors将:DIR 01;34(0
2013-04-18 08:59:21
7151
转载 linux tar加压、解压命令
tar [-cxtzvpPf] 文件与目录 ...参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j
2013-04-17 21:01:31
2354
原创 C++虚函数、静态函数的作用
静态函数:1. 函数和变量,声明为静态,在类定义的时候分配了内存空间,存放在静态区,可以被类的多个对象公用。而类中非静态函数和变量,在类实例化时才分配内存空间,存放在栈中,被类的对象独占。2. 静态函数只能调用静态成员变量,不能调用非静态成员变量。3. 变量定义为静态,而被定义为全局变量,可以避免污染全局名字空间。Static关键字的详细说明,参考:C++中Static作用和使用方
2013-04-13 23:06:29
780
转载 linux下的dd命令详解
名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果你想要在线看 manual, 可以试试: dd --help 或是 info dd 如果你想要看看这个版本如何: dd --version 输入或输出 dd if=
2013-04-13 23:05:43
709
转载 linux打patch的方法
作为程序员,了解diff&patch命 令是非常必要的。比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成 员。项目成员通过patch命令可以立刻知道你的意图。有人会说直接传一个新文件不是更简单?不要忘了,一个patch文件尺寸更小传输更快,而且可以明 显的看到都做了哪些修改。保证当前目录是demo名录:
2013-04-13 22:51:03
888
转载 在CentOS上安装Git
CentOS的yum源中没有git,只能自己编译安装,现在记录下编译安装的内容,留给自己备忘。确保已安装了依赖的包yum install curl yum install curl-devel yum install zlib-devel yum install openssl-devel yum install perl yum install cpio yum instal
2013-04-02 15:27:13
709
原创 awk使用总结
1. awk命令格式 awk [options] 'scripts' file 命令选项为: -F fs or --field-separator fs, 指定分隔符 -v var=value or --asign var=value, 给awk指定变量 awk脚本由模式和操作组成:pattern
2012-12-10 09:41:20
574
转载 Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的
2012-11-04 15:33:43
535
原创 理解内存SRAM、DRAM、SDRAM、DDR3、DDR4
SRAM:静态随机访问存储器 一个SRAM存储单元由4个晶体管和2个电阻器组成,利用晶体管的状态切换来存储数据,而不是电容器,因此读数据时不存在漏电问题,不需要刷新操作。但是由于SRAM需要的晶体管数多,因此成本高。DRAM:动态随机访问存储器 一个DRAM存储单元由1个晶体管和1个电容器组成,利用电容量存储电量的多少来存储数据,由于电容器存在漏电问题,因此需要定
2012-10-30 17:22:18
15843
原创 vim打开多个文件
没有打开vim时: 打开的文件上下窗口分布: vim -o file1 file2 打开的文件左右窗口分布: vim -O file1 file2已经打开了vim: 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。
2012-10-28 16:53:11
692
原创 在Linux内核中打印日志时间戳
在编译Linux内核,配置时:make menuconfig ---> Kernel hacking --> show timing information on printks 当选中这个选项后,启动内核,会在日志信息前面加上时间戳。从下面的输出可以看出,时间精确到微秒(us)。 如下:-----------------------------------------
2012-10-24 08:28:21
12829
原创 打印linux内核信息
1. 背景知识linux内核日志分为8个级别,其宏定义如下:#define KERN_EMERG "" /* system is unusable */#define KERN_ALERT "" /* action must be taken immediately */#define KERN_CRIT ""
2012-10-23 09:53:48
2852
转载 CenOS内核编译
第一步:下载内核源码: wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.tar.gz然后解压进入到解压后的目录 # tar -zxvf linux-2.6.29.tar.gz # cd /usr/src/linux-2.6.29第二步:开始编译 清理以前的编译痕迹如果内核源码
2012-10-23 09:03:08
5115
转载 C语言文件的输入输出函数
C语言文件的输入输出函数 C语言提供了两类关于文件的函数。一类称做标准文件函数也称缓冲型文件函数, 这是ANSI标准定义的函数; 另一类叫非标准文件函数, 也称非缓冲型文件函数。这类函数最早公用于UNIX操作系统, 但现在MS-DOS3.0 以上版本的操作系统也可以使用。下面分别进行介绍。标准文件函数 标准文件函数主要包括文件的打开、关闭、读和写等函数。不象BAS
2012-10-21 10:34:13
6477
原创 C++虚函数、静态函数的作用
静态函数:1. 函数和变量,声明为静态,在类定义的时候分配了内存空间,存放在静态区,可以被类的多个对象公用。而类中非静态函数和变量,在类实例化时才分配内存空间,存放在栈中,被类的对象独占。2. 静态函数只能调用静态成员变量,不能调用非静态成员变量。3. 变量定义为静态,而被定义为全局变量,可以避免污染全局名字空间。Static关键字的详细说明,参考:C++中Static作用和使用方
2012-10-21 10:19:58
1014
原创 存储器层次结构
关于存储器层次结构的四个问题:Q1:一个块可以放在什么位置?Q2:如何查找一个块?Q3:当发生缺失时,应该替换哪个块?Q4:写操作时会发生什么?一、Cache的放置(映射规则)、查找、替换和写策略:1. 放置策略(映射规则):直接映射、全相联映射和组相联映射。2. 查找策略:Cache地址划分:标志字段(判断是否命中)+ 索引字段(选择组)+块内偏移(从块中选择需要
2012-10-21 10:05:48
478
转载 单用户模式启动 修改root密码
1、在启动后,通过grub系统引导管理器,选择单用户登陆2、进入系统后,在命令行中输入 init 1 然后回车以grub 系统引导管理器,单用户登录方法在grub 启动后,反复按上下箭头 (注意,此时鼠标要定位在此ctrl+g,不然会不起作用)移动键盘到Linux的启动项;1、按e键;2、然后再通过上下箭头移动键盘到类似下面的一行,也就是kernel的那行:ker
2012-09-18 21:25:09
1367
原创 CentOS上安装Xen虚拟机
1.安装 Xenyum -y install xen kernel-xen xen-lib virt-manager python-virtinstkernel-xen:可以跑 Xen 的 Linux 核心xen:主要的 xen 套件,包括配置文件、启动脚本和一些函数库xen-libs:Xen 所需要的函数库python-virtinst:提供终端安装的软件virt-man
2012-09-04 11:28:07
652
转载 SPLASH2并行测试程序
SPLASH21992年,斯坦福大学推出了Stanford ParalleL Applications for SHared memory(SPLASH),1995年SPLASH第二版问世,被称为SPLASH-2。SPLASH-2使用C语言,由12个程序组成,使用PThread并行方式。SPLASH-2包含4个核心程序:Cholesky:用于将一个稀疏矩阵拆分成一个下三角矩阵和它的
2012-08-28 15:54:41
7226
原创 LaTex使用技巧2:添加中文支持
在LaTex中使用中文,需要添加支持中文的包。具体方法如下:1. 添加CJK中文包: \usepackage{CJK}2. 开始中文环境,使用宋体,只有在这条命令之后才能使用中文: \begin{CJK}{GBK}{song}3. 结束中文环境: \end{CJK} 注:如果需要使用在文档中使用其他的字体,可以使用如
2012-08-21 09:07:24
29166
原创 LaTex使用技巧1:添加参考文献、PDF图片
在LaTex中使用BibTex添加参考文献方法如下:1. 在LaTex文档的\begin{document}下面设置参考文献类型,默认为plain。 \bibliographystyle{plain}2. 在需要引用处,标记引用。LaTex命令为: \cite{引用文章名称} 注:可以通过JabRef,选中引用文章,右键,选择Copy \cite{
2012-08-21 08:50:56
37411
原创 Java Load Generator安装配置
1. 下载Java LoadGenerator源码:https://github.com/mikewied/Memcached-Java-Load-Client2. 编译loadgenerator:#antt3.编译loadgenerator使用的database,这里选择编译memcached: #ant dbcompile-memcached4. Java Loa
2012-07-17 11:36:40
1222
转载 CentOS GCC升级
最近由于需求的原因,需要把目前gcc-4.4.4升级到gcc-4.6.1,考虑到有多台的原因,做了一个脚本自动安装结合批量工具分发。一、安装环境系统版本:centos6.0X64原GCC版本:gcc-4.4.4新GCC版本:gcc-4.6.1二、正式安装1、下载安装的源码:如下需要下载以下包:gcc-4.6.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc
2012-07-07 21:16:45
844
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人