- 博客(31)
- 资源 (2)
- 收藏
- 关注
转载 Linux shell 的字符串截取
Linux 的字符串截取很有用。有八种方法。假设有变量 var=http://www.aaa.com/123.htm.1. # 号截取,删除左边字符,保留右边字符。复制代码代码如下:echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://
2015-12-02 12:03:48
544
原创 GCC编译器局部变量地址分配为什么总是从低地址向高地址增加?
如题,使用GCC编译器时发现,局部变量的地址总是从低地址向高地址分配,而dev c中局部变量却是从高地址向低地址分配的?“栈分配的方向是从高地址向低地址分配,但在变量内部地址是从低地址向高地址增长。”一直都是这样理解的,以为所有编译器都是按照这种方式来分配变量地址的。但是gcc却不是,我用的版本是4.8.4.原因:GCC的堆栈保护技术—— canary的使用。使用的原因是为了防止某些溢
2015-11-23 17:26:26
4937
原创 记录一次剁手的"sudo rm -rf /bin"(误删linux /bin目录)
服务器系统:ubuntu12.04.1-server64位如题,使用普通用户权限:sudo rm -rf /bin删除了服务器上的整个/bin目录,由于/bin下安装有许多系统软件,所以直接导致ls的等命令无法使用。另外,注意linux下有一些系统的内置命令,如cd。这些内置命令都还是可以用的。遇到这样的问题,第一反应还是有点慌的,因为删的不是自己的系统文件,而是整个实
2015-07-25 12:18:42
12172
转载 浅析格式化串漏洞
作者:isno (isno@sina.com) -----------------目录------------------- 一.前言 二.基础知识简介 三.格式化串漏洞原理 (1)参数
2015-07-21 17:50:56
1644
转载 vim的visual模式
在可视化模式下,可以对一个文本块的整体进行操作。例如,首先高亮选中一部分文本,然后用d命令删除这个文本块。可视化模式的好处在于,你可以在做改动之前,就看到操作将影响的文本。可视化模式可以分为以下三种:用v命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。用V命令进入的行可视化模式(Linewise visual mode)。文本选择是
2015-07-17 15:15:45
908
转载 c++11 内存模型解读
关于乱序首先需要明确一个普遍存在,但却未必人人都注意到的事实:程序并不总是按照源码中的顺序被执行的,此谓之乱序,乱序产生的原因可能有好几种:编译器出于优化的目的,在编译阶段将源码的顺序进行交换。程序执行期间,指令流水被 cpu 乱序执行。cache 的分层及刷新策略使得有时候某些写,读操作的顺序被重排。以上乱序现象虽然来源不同,但从源码的角度,对上层应用程序来说,他们的效果
2015-05-25 11:14:53
1787
转载 C++中的默认函数与default和delete用法
一、类中的默认函数 a.类中默认的成员函数 1.默认构造函数 2.默认析构函数 3.拷贝构造函数 4.拷贝赋值函数 5.移动构造函数 6.移动拷贝函数 b.类中自定义的操作符函数 1.operator 2.operator& 3.operator&& 4.operator* 5.operator
2015-05-25 08:36:16
2004
原创 C++顺序容器的capacity和reserve方法
verctor容器这样的顺序容器在内存的存储空间是连续的,而其后面的存储空间可能被其他数据占用,当在需要添加新的元素时,vector就需要重新分配存储空间以连续存储原来元素和新添加的元素。 为了使vector实现快速的内存分配,其实际分配的容量要比当前所需的空间多一点。vector容器的capacity和reserve方法使程序员可以与vectro容器的内存分配的实现部分交互工作。c
2015-05-07 20:39:37
1324
原创 迭代器的算数运算
支持随机访问的迭代器才可以使用:iter+n,iter-n,iter-iter的操作。如vector。list和map这类不支持以上三种操作,因为它们不支持随机访问,因此它们只支持自增和自减操作。那么,要想计算list和map的两个iterator之间的距离怎么办?答案是使用distance()。distance的原型如下:std::distancetemplate
2015-05-07 20:37:56
2067
转载 vim文本替换
vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行
2015-04-16 20:07:25
518
原创 ubuntu下安装apache http server
在ubuntu下。下载了apache http server直接编译安装的话,configure时会出现“APR not found ”的错误,是因为其所依赖的软件包没有安装。安装过程一步步理清依赖关系,正确使用命令行选项,安装apache http server会变得很简单。PS:Apache http server 需要依赖 apr、apr-util、pcre,所以要先下载和安装这
2015-04-14 15:20:25
950
原创 ubuntu下挂载win7共享目录
1.在win7下设置共享目录:在d盘新建一个文件夹share,右键选择设置共享,“选择与其共享的用户”,选择everyone。建好后:\\ZQ-PC\share就是其位置,ZQ-PC是我的机器名。2.在unbutu下挂载刚才建立的共享文件夹1)在unbutu的/mnt下建立win share文件夹:mkdir /mnt/winshare;2)在win7的
2015-04-14 11:11:25
2311
转载 左值表达式 右值表达式(C/C++)
何谓对象?这里所说的对象是广义上的,而不仅仅是狭义的类/对象(class/object)。在C/C++中,所谓的对象指的是执行环境中一块存储区域(a region of storage),该存储区域中的内容则代表了该对象的值(value)。注意到我们这里所说的"代表",对于一个对象,如果我们需要取出它的值,那么我们需要通过一定的类型(type)来引用它。使用不同
2015-01-19 17:43:59
5929
原创 ubuntu12.04-64位系统上安装s2e过程
S2E工具适用平台: host OS: 64位ubuntu12.04或者64位Mac OS guest OS:To run S2E, you need a QEMU-compatible virtual machine disk image. S2E can run any x86 operating system inside the VM.任何X86的OS都可以。
2014-09-25 21:46:45
1473
原创 ubuntu12.04-32位,安装KLEE及使用工具过程中遇到的问题
安装klee出现的问题:前面都没有错,最后make check时出现:make[1]: *** [check-local] Error 1网上查说make check运行时可能需要root权限。不对,make check不过对后面执行没有影响。不要KLEE运行的第一个小例子:使用klee_make_symbolic()函数来标明一个函数是符号变量
2014-09-23 10:07:17
2474
原创 ubuntu下安装KLEE方法
虾米原文地址:http://thread.gmane.org/gmane.comp.compilers.llvm.klee/923cd ~sudo apt-get -y install g++ curl dejagnu subversion bison flexmkdir workcd workwget http://llvm.org/releases/
2014-09-15 14:51:04
2125
转载 do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个
2014-06-05 14:23:22
538
原创 ubuntu下查看源代码工具:ctags+taglist,另加understand
ctags直接apt-get就行,安装完后在需要的目录下,踩踏个
2014-06-05 10:47:30
3102
原创 关于C语言中宏定义的高级运用
1、# (stringizing)字符串化操作符。其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。如:#define example(instr) printf("the input string is:/t%s/n",#instr)#define example1(instr) #instr
2014-06-01 10:41:18
4908
转载 linux系统下可以屏幕取词的词典安装
点评:linux并不缺少词典软件、但是缺少词库、所有的词典软件都需要,自己下载安装词库、所以找词库成了一件麻烦的事情,下面与大家分享下Ubuntu安装英汉词典步骤,感兴趣的朋友可以参考下Ubuntu安装英汉词典linux并不缺少词典软件、但是缺少词库、所有的词典软件都需要 自己下载安装词库、所以找词库成了一件麻烦的事情。 1.安装stardict:apt-get insta
2014-05-05 11:10:29
4664
原创 定制ubuntu13.10
1.启动时中文字符菜单修改:在isolinux/目录下修改isolinux.cfg(我的上一篇博文详细介绍) 2. info( 安装时的标题): 在目录 .disk/info里修改。注意,在终端下ll就能看见.disk目录。注意,这个标题若是改成中文的,在试用时会需要用户名和密码,我也不清楚是为什么。本来开始我改的中文,后来只能用拼音代替了。 3. initrd.lz(控制启动换面
2014-04-10 15:53:33
669
原创 定制ubuntu13.10中文字符菜单
定制步骤:注意:我是在linux系统下完成定制的,但是后面碰到了问题,最后解决了(linux下还是可以的,只是下面有一步麻烦一点点)。但是总结一下,最好还是在windows下做吧。下载的ubuntu-13.10的镜像文件然后从里面提取的需要的文件(但是事实证明只需要下载一个isolinux包就可以了,因为它就是一个小型的linux系统)。下面就说我是如何利用这个镜像文件做出中文
2014-03-20 10:09:39
1482
原创 ubuntu下vi配置,解决按上下健等出现字母问题
首先要明确ubuntu下的编辑器是vi,不是vim。vim是vi的加强版,完全兼容vi,且有很多使得用户更易于使用的新特性。所以要想vi编辑器更好用,一般先把它升级为vim吧。使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母在网上找了个方法 问题已经解决 分享一下:只要依次执行以下两个命令即可完美解决Ubuntu下vi编辑器方向键变字母的问题。一.执行命令
2014-03-13 15:32:04
2242
转载 bit_vector位向量容器
一、原理bit_vector位向量容器是一个bit位元素的序列容器,具有vector容器一样的成员函数,常用于硬件端口的控制。区别于vector的一个重要特性是bit_vector更节省内存空间,一个元素只占用一个bit,而不是一个字节。bit_vector用vector作后缀名,实际与vector并没有任何关联。bit_vector容器的每个元素是一个 bit 位值,取 0 或
2013-12-25 20:29:33
957
转载 Vim快速选中、删除、复制引号或括号中的内容
最近刚刚发现了一些VIM中,快速对引号或括号等标点内的内容进行选中、删除、复制操作的超级技巧,感觉非常实用。可以极大的提高编辑效率。以下命令可以对标点内的内容进行操作。ci'、ci"、ci(、ci[、ci{、cidi'、di"、di(或dib、di[、di{或diB、diyi'、yi"、yi(、yi[、yi{、yivi'、vi"、vi(、vi[、vi{、vi另外如果把上面的
2013-12-23 21:37:18
681
转载 内存中堆和栈的区别
一、预备知识:程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack): 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) :一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static
2013-12-12 14:53:10
581
转载 typeid详解
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dynam
2013-11-28 11:25:21
615
原创 C++中基类和派生类的protcted成员的理解
看到《C++ primer》中文第4版的475页时,不懂protected成员的使用范围,特别是对这句: 派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。怎么读都觉得别扭,于是自己编程试了一下,可能对protected成员的使用情况未考虑周全,但是也能反映一些问题。代码的解释:基类为 shape,
2013-11-25 22:53:37
1342
转载 struct 和union的区别
C/C++的数据类型包括基本数据类型和非基本数据类型,基本数据类型就是整型、实型等,非基本数据类型也称为构造数据类型,包括数组类型、结构体类型和共用体类型。其中结构体类型和共用体类型分别通过关键字struct和union来声明或定义。 所谓构造数据类型,就是通过基本类型构造出来的类型嘛,因此构造数据类型的特点就是其中包含有多个元素,想想数组就明白了。数组中可以存放多个元素,但是每个元素的类型
2013-11-22 10:29:18
1190
原创 VEX IR
基本数据类型:/* Always 8 bits. */typedef unsigned char UChar;typedef signed char Char;typedef char HChar; /* signfulness depends on host */ /
2013-11-21 11:11:49
35821
翻译:Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation
2013-12-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人