自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(184)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++对象内存模型

C语言中数据和处理数据的函数是分别定义,各个处理数据的函数实现相应各种算法。但是C++提供了类,可以实现较好的数据和处理数据的算法的封装性,这种封装性相比较C语言而言会带来一些成本,这主要受制于是C++对象为支持相应特性而实现的内存模型。 C++中分别有static和nonstatic两种数据成员,有static、nonstatic、virtual三种成员函数。对于一个类的对象的内存布局方式主要经

2016-05-12 20:12:42 4533

原创 “Rotate sorted array”系列问题

给定一个排序的数组,进行数组旋转之后引出了一系列的问题,这里将遇到的相关问题做一个总结,并给出解决方法,备用所需。有序数组旋转操作这个问题是所有系列问题的起始,给一个有序数组,使用这个操作进行旋转,得到的数组就可以以之为其他问题的基础进行引申。 Rotate an array of n elements to the right by k steps. For example, with

2016-05-05 23:46:23 555

原创 函数对象与整形操作元函数

函数对象C++的STL大量算法实现中有许多需要进行运算的参数,如sort算法进行比较的方式、power进行运算的操作等。这些参数虽然可以使用一个函数指针的方式,将用户定义的特定操作以指针方式传入,但是函数指针不能满足抽象性的要求,而且无法与其他组件进行复杂的配接,因此诞生了函数对象。函数对象行为类似函数的一种对象,就实现来看,就是一个重载了函数运行操作符(operator())的类。 STL的函数

2016-04-28 14:15:02 768

原创 Palindrome Linked-List

Given a singly linked list, determine if it is a palindrome.题目要求能在O(1)的空间和O(n)的时间内完成。基本思路如下: 1. 找到链表的中点元素,从中点元素开始reverse后半部分 2. 依次比较第一个和最后一个,并进行循环直到达到中点 3. 将后半部分再进行依次reverse恢复其中中点元素需要根据节点数是奇数还是偶数进行

2016-04-13 15:18:35 457

原创 House Robber 完整版

这是一个从简到繁的步进题目组。House Robber I第一个是一维很简单的线性状态转换,题目如下: You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping

2016-04-12 17:55:27 657

原创 LeetCode [Symmetric Tree]

题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).判断一棵二叉树是否是镜像的,主要思路是基于对当前节点的判断之后进行递归,对于非递归方式暂未实现。代码如下: bool isSymmetric(TreeNode* root) {

2016-04-06 17:15:08 415

原创 使用模版元编程实现C和C++中复杂类型声明的语义化

背景C和C++中提供的基本类型总共有13中,定义在limit头文件中。如下://整数类型boolchar | signed char | unsigned charshort | unsigned shortint | unsigned intlong | unsigned long//浮点类型floatdoublelong double除此之外,C++还定义了两种新的长整数类型:l

2016-03-30 22:27:09 750

转载 Linux makefile教程

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写m

2016-03-30 17:42:42 582

原创 模版元编程之——Type Traits

元编程之中有两种元数据,一种是类型数据,这里的type traits就是对类型数据的操作或者称为计算。这种技术在STL的设计中使用的非常广泛。本质上是借用C++模版提供的模版形参推导和特化两种机制来实现的。迭代器迭代器是联系算法与容器的桥梁,二者彼此独立设计,都使用泛型方法实现。迭代器就是联系他们的胶着剂。以经典的交换函数swap来入手:这个函数是一个模版函数,接收两个迭代器模版参数,将他们所指之物

2016-03-29 22:54:00 709

原创 模版元初识

C++提供的模版语法,在语言层面上带来了巨大的灵活性,当然也无意中加深了C++学习的难度。模版特性的引入,得到发展的模版元编程,重新刷新了发明模版时对它的认识。1998年在德国的泛型编程研讨会上,Dave见到了使用C++模版实现的Lisp语言。以此为基础,发展了Boost元编程库:第一个设计用于将编译期C++从一个特别的“模版技巧”集合转变为正规的、易于理解的软件范例程序库。从最初的仅限于快速科学数

2016-03-28 21:47:38 494

原创 Linux硬件信息查看工具

1. lshw 和 lshw-GTK, lscpuapt-get install lshw lshw-gtk 2. hardinfoapt-get install hardinfo3. 获取usb信息root@ubuntu:/dev# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 D

2016-03-02 21:18:53 826

原创 C++11标准库chrono

chrono是C++11新加入的方便时间日期操作的标准库,它既是相应的头文件名称,也是std命名空间下的一个子命名空间,所有时间日期相关定义均在std::chrono命名空间下。通过这个新的标准库,可以非常方便进行时间日期相关操作。 chrono库主要包含了三种类型:duration, time_point 和 clock。Duration(时间间隔)chrono库中用一个duration模板类,

2016-01-13 19:35:36 3103

原创 C++模版总结(2/2)

在上一篇博文http://blog.csdn.net/u010487568/article/details/50471592中对C++的模版相关点做了总结,主要包括对模版和泛型编程的理解,对模版的定义与实例化相关内容,本文针对模版更高阶的内容进行一个总结,包括模版编译、模版多功能性、模版特化等内容。模版编译编译器在看到模版定义时不产生代码,这与看到类定义不产生代码一样,只会在看到用模版产生类并使用了

2016-01-07 20:43:36 732

原创 C++模版总结(1/2)

STL是C++中泛型编程(GP)的经典,而语言支持的模版语法是进行泛型编程的基础。泛型编程是C++实现编译时多态性的一种最重要的方式。这里对C++语言的模版相关点进行一个总结,作为对深入理解泛型编程思想的基础。所谓模版(template)是一种蓝图或者公式,用来创建类或者函数。从抽象层次上看 - 类是对现实世界中同一类别有相同或相似特点的真实对象的一种抽象,定义相关数据成员,提供相关操作接口,通过

2016-01-06 20:42:30 895

原创 C++中各种new/delete总结

C++语言提供了三种关于new、delete的操作或者概念,这三种分别体现了C++语言对内存进行操作的不同层次,深入理解这三种情形,对于不论是个人开发中对内存进行管理或者是阅读其他代码都是一个基础。特在此进行总结。 凡是涉及到对内存进行操作的时候,如果新开始配置,那么对其进行细化都可以分为三个步骤: 1. 分配一段原始内存,其上可以存储任意类型的数据对象(也就是可以理解为对应的指针类型是void

2015-12-18 15:53:15 1730

原创 C++ bitset类型

bitset是C++标准库的一种处理二进制位集的模板类,简化了位集的处理,使用指定的模版参数类型size_t,在声明bitset类型时只能使用字面量常量或者const变量作为模版参数。使用时必须包含bitset头文件 ,其模板类声明定义如下,私有继承自内部实现的基类。template<size_t _Nb> class bitset : private _Base_bitset<_Nb>{..

2015-12-11 20:50:23 1322

原创 C++标准库——时间相关

1. time.h和ctime功能:提供了跨平台支持的时间处理函数,满足了一半通用的时间处理相关操作。1.time.hC语言中的原生支持的跨平台时间和日期处理函数以及类型定义。之所以强调快平台,就是因为这些函数和类型定义的通用性。 类型定义:typedef long time_t; //定义了当前时间和日期到1970年1月1日的秒数typedef long clock_t; //时钟的滴答

2015-12-08 11:36:40 959

原创 C++标准库——cmath,climits,limits

1. cmath功能:cmath头文件是原生支持的内建数学函数。 这是C++对C语言中的math.h头文件的一个封装,充分考虑了不同类型进行处理的效率问题,undefine了所有C语言的全局数学函数,同时将所有函数在std命名空间内进行了封装。是标准C++风格的头文件。 类似定义如下:...#include <math.h>...#undef ceil...std{... usin

2015-12-04 20:18:34 2458

转载 C++标准库——简介

C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 cname形式的标准头文件【 complex例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 cname形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名,但是

2015-12-01 14:39:44 619

原创 C++标准库——iomanip

1.功能用来对输入输出操作的格式进行更加方便的控制,在ios_base基类的基础上将每一种格式的设置和删除都进行了函数级的同名封装,提供了全局的调用接口函数,支持在运算符“<<”和“>>”上的多次使用,配合ios_base实例的控制。是I/O流控制头文件,就像C里面的格式化输出一样。 如果在一次输出过程中需要混杂多种格式,使用ios_base的成员函数来处理就显得很不方便。STL另提供了ioman

2015-12-01 12:53:39 3267

原创 Linux命令备忘实例(17)——cURL

cURL是Linux下进行网络访问的功能超级强大的工具,对于一般网络访问,使用wget命令基本都能完成,但是cURL比wget更胜一筹。首先,支持http、https、ftp等多个协议,同时对http协议中POST、COOKIE、认证、部分下载文件、referer、扩展头、限速、文件大小限制、进度条等多方面的控制和配置,能在命令行完成几乎所有细节操作,是进行网络相关任务的必备工具。下面是cURL 7

2015-11-28 11:15:16 1620

原创 C++ string操作汇总

C++ string与C字符串转换1、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()

2015-11-06 12:55:06 771

原创 最大子数组问题

这是一个经典算法设计题目,虽然很早就见过这个问题,理解过原理,但一直没有实际实现过,一个算法在实际实现的过程中总是会遇到一些没有实现的时候想不到的问题。在这里,通过三种不同的方式的实现,来体会算法设计的思想和降低程序运行实际的巧妙之处。题目回顾输入:一个n个元素的数组,数组元素有正数和负数输出:一个或多个连续元素组成的子数组,这个子数组的元素之和是原数组所有子数组中最大的。变换:假

2015-10-31 11:50:19 665

原创 Linux命令备忘实例(16)——awk(2/2)

前一篇介绍了awk的基本命令格式,以及提供的脚本编程环境的基本内容,这里接着将awk脚本环境提供的高级内容整理于此。1.数组对于比较复杂的脚本处理,awk提供了一维数组这种数据结构,这大大扩展了awk脚本的功能范围。数组将索引都视为字符串,类似一般脚本语言中的关联数组。A[1]和A[“1”]是访问同一个元素。 初始时,数组为空,对于元素添加直接使用访问同样的语法,如果对于索引的元素不存在就添加了元

2015-10-15 23:29:02 683

原创 Linux命令备忘实例(15)——awk(1/2)

awk是以三位发明这个工具的人的名字的首字母组合而成的,这个工具用来进行文本处理非常强大,可以进行行列操作,而且本身就是具有很多内建功能,可以看成awk提供了一种类似于C语言强大的语言子集,从简单的文本处理到任意复杂的处理基本都可以写出脚本来进行处理。本文首先对awk的基本结构和功能进行总结。1. 命令结构awk的基本使用如下:awk [-F value] [-f file] [-v var=va

2015-10-13 23:47:28 719

原创 Linux命令备忘实例(14)——sed

sed是UNIX下非常重要的文本处理工具,是stream editor(流编辑器)的缩写。这个命令配合正则表达式能够处理非常强大的文本操作功能。其中众所周知的用法就是文本替换。1.概览sed [option] 'script'/scriptfile inputfile sed可以替换给定文本中的字符串,利用正则表达式进行匹配。2.实例特性1.基本替换$ sed 's/pattern/replac

2015-09-28 23:45:45 765

原创 单链表的反转(非递归与递归版本)

这是Leetcode的上的一道题目:Reverse a singly linked list.Hint:A linked list can be reversed either iteratively or recursively. Could you implement both?题目要求时间复杂度为O(n),而且空间复杂度为常数级。这就必须对单链表一次遍历并且进行反序。

2015-09-23 15:52:58 1197

原创 Linux命令备忘实例(13)——文件操作

1.生成任意大小文件——dd如果为了测试程序,需要生成包含随机数据的文件时,需要使用指定大小的文件作为输入,或者时分割文件等。创建特定大小的文件最简单的方法就是dd命令。 dd命令克隆给定的输入内容,然后输出一份副本到输出。stdin、设备文件、普通文件都可以作为dd的输入;stdout、设备文件、普通文件也都可以作为dd的输出。user@ubuntu:~$ dd if=/dev/zero of=

2015-09-23 00:05:12 751

原创 Linux命令备忘实例(12)——文件管理

1.ls这是在Linux系统中使用最广的命令了,用来列举给定目录下的文件,默认为当前目录。通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息。1.概览格式:ls [选项] [目录名]常用参数: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -A 同-a,但不列出“.”(表示当前目录)和“..”(表示当

2015-09-17 23:24:32 744

原创 Linux命令备忘实例(11)——首尾获取

在备忘4中记录的获取内容命令是直接输出文件内容的方式,非常直白地全部输出文件内容。如果遇到文件内容太大,直接输出的方式肯定比不适合,特别是遇到只需要查看首尾内容的情况,使用haed和tail就是方便这种内容的查看:适合输出文件内容的前n行或者后n行,也可以输出除了前n行或者后n行之外的内容。 另外在处理大体积文件时,对于可以翻页获取也是一种有效的方式,more和less就是用来进行翻页获取文件内容

2015-09-15 23:22:52 806

原创 itoa函数的递归实现(二级指针实现)

问题提出《C Programming Language》书中在递归这一节预留了两个使用递归实现的函数,其中itoa函数是用来将一个整数转换为一个字符串。书中已有使用循环实现的版本,但是直接得到的是反序的结果,需要最后调用reverse函数。而递归版本则可以避免这个问题。 首先使用原接口void itoa(int n, char s[])进行实现,发现递归调用的时候总是错误,输出的结果只能得到整数n

2015-09-14 15:04:53 904

原创 Linux命令备忘实例(10)——目录管理

Linux整个系统就是一个目录树结构,每个目录也是一个文件进行保存的,占用大小为4K的一个文件节点(node)。存在两种目录路径的表示方法: - 相对路径:路径从当前所在位置开始,进行相对的计算。 - 绝对路径:以根目录“/”开始,写出所有经过的目录路径。目录管理主要涉及如下几个方面:目录的切换、目录显示、目录创建与删除、权限设置等。1.cdchange directory的缩写,功能就是改变目

2015-09-11 00:25:56 604

原创 Linux命令备忘实例(9)——参数代换xargs

管道命令可以将stdout重定向到stdin,但是对于只能接受命令行参数的形式接收数据的命令,无法通过stdin接收数据。此时就需要将stdin转换为后续命令的命令行参数。xargs就是实现这个功能的命令:擅长将stdin的数据转换为命令行参数,也可以将单行或多行文本输入转换为其他格式。 一般编写shell命令都追求单行命令,使用管道符进行连接,如果后续命令需要以命令行参数接收数据,那么xargs

2015-09-09 00:05:13 788

原创 Linux命令备忘实例(8)——文件校验、分割与临时文件

1.md5sum、sha1sum文件特别是网络传输的文件,出于各种原因,数据可能在传输中丢失bit位从而导致文件损坏。为了保证数据完整和正确,需要使用特定工具进行完整性测试和校验。校验和就是用来从文件中生成校验和密钥,利用这个校验和密钥核实文件。最广泛使用的就是md5sum和sha1sum两种校验和技术。1.概览 使用时,需要将生成的校验和结果保存到文件中。然后使用-c选项进行校验。默认为文本模式

2015-09-08 00:01:53 839

原创 Linux命令备忘实例(7)——双向重定向与字符操作

1.tee(双向重定向)管道符或者“>”操作符都是单向的数据流,为了在数据流处理的国中将某段信息保存到文件,同时希望这个数据流继续输出到后续的命令,那么tee就是为了完成这样的工作情景。 tee相当于一个分流器,将数据流分送到文件和stdout。 这个命令的选项也很简单,-a是用来指定以追加的方式写入到文件,-i选项用来指定写入文件时忽略外部中断的信号。user@ubuntu:~$ echo

2015-09-07 22:55:30 1211

原创 Linux命令备忘实例(6)——排序和基本统计命令

同文本文件打交道的过程中,会遇到各种各样的与重复和顺序相关的任务,比较常用的就是sort、uniq,然后对文本的基本统计就是wc这个工具了。sort命令能够对文件和stdin进行各种排序,uniq一般与sort结合使用来提取单一的行。sort和uniq结合能够用来查找重复数据。1.sort1.概览sort按照指定的参数进行排序,支持按照数字排序和字典顺序排序。 排序的选项如下: 其中选项“-

2015-09-06 23:21:19 883

原创 Linux命令备忘实例(5)——切取命令

切取,顾名思义就是切割和取出满足我们需求的数据。这里的分类是个人使用后的一个人为划分,只是个人的一个理解。一般地,在使用shell命令处理和分析数据后,需要取出我们需要的部分,或者经由分析关键词取出需要的行。1.cutcut就是英文中的“切”,之所以这样命名,主要是这个命令是按照列来进行切分的,然后可以从待处理文件中取出指定的列(或者是字段、字符)。1.概览 cut主要是对类似表格排布的文件(如c

2015-09-05 00:21:35 1187

原创 Linux命令备忘实例(4)——获取内容

Linux中的所有内容都是以文件的方式表示的,会有很多需求需要我们获取文件的内容,查看部分或者全部内容。当然最直接方式就是使用编辑器打开文件查看,比如vim、vi、emacs等。这里主要关注的是shell命令中获取文件内容的部分。1.catcat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示。 1.命令概览 在文件内容比较

2015-09-04 00:08:20 676

原创 Linux命令备忘实例(3)——数学运算

bash命令中,对于直接的算术操作的支持比较欠缺,但是有多个命令可以实现算术操作。对于基本的算术操作,可以使用let、(( ))、[ ]、expr执行,只支持基本整数操作;当需要进行高级操作,比如浮点数,进制转换时,可以使用bc这个工具。1.基本整数运算1.let使用普通的赋值方法定义数值时,由于默认的都为字符串,因此可以使用let命令进行算术运算。使用let命令时,变量名前不需要加$符号。而且,支

2015-09-02 22:03:46 811

原创 Linux命令备忘实例(2)——变量

1.设定规则变量的等号两边不能有空格符变量名称只能为数字或英文字母,不能以数字开头双引号内的变量可替换为其值,单引号内的变量为纯文本可以使用反引号`命令`或者$(命令)的方式将内部命令的返回值赋给变量变量扩增与赋值时,直接堆砌:$a=$a“ ”$b某个变量需要在其他子程序执行时使用,可以用export使变量变为环境变量大写字母变量为系统默认变量,自定义变量用小写取消变量使用:unse

2015-09-01 23:53:39 745

php5重量版手册

详细说明和函数分类,非常适合及时查询,中文版翻译校正,手册有很多实例,而且注明了出处,可以线上交流。

2013-04-28

Sublime Text 2

最好用的编辑器,功能丰富,插件齐全,安装源码包,给linux系统装上吧~

2014-08-30

空空如也

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

TA关注的人

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