自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fate_Dream的博客

不断学习借鉴,待羽翼雄厚,展翅高翔!

  • 博客(55)
  • 问答 (1)
  • 收藏
  • 关注

转载 C++11特性:decltype关键字

decltype简介我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值。RTTI会导致运行时效率降低,且在泛型编程

2016-12-30 16:53:42 441

转载 __VA_ARGS__用法

自定义调试信息的输出  调试信息的输出方法有很多种,  例如直接用printf,  或者出错时使用perror, fprintf等将信息直接打印到终端上, 在Qt上面一般使用qDebug,而守护进程则一般是使用syslog将调试信息输出到日志文件中等等...  使用标准的方法打印调试信息有时候不是很方便,  例如Qt编程, 在调试已有的代码时, 我想在打印调试信息的地方, 把代码位

2016-12-30 16:22:48 504

原创 组装字符串

767 //组装字符串,str is char*768 #define GEN_STR(str,...) \769     do{\770         memset(str, 0, sizeof(str));\771         snprintf(str, sizeof(str), __VA_ARGS__);\772     }while(0)773774 //

2016-12-30 16:04:44 658

转载 Linux查找含有某字符串的所有文件

如果你想在当前目录下 查找"hello,world!"字符串,可以这样: grep -rn "hello,world!" * * : 表示当前目录所有文件,也可以是某个文件名-r 是递归查找-n 是显示行号-R 查找所有文件包含子目录-i 忽略大小写下面是一些有意思的命令行参数: grep -i pattern files :不区分大小写地搜索。默认情况

2016-12-30 15:22:27 263

转载 线程安全与可重入函数

线程安全:一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。我们定义四类(有相交的)线程不安全函数。第1类:不保护共享变量的函数将这类线程不安全函数变为线程安全的,相对比较容易:利用像P和V操作这样的同步操作来保护共享变量。这个方法的优点是

2016-12-29 09:28:55 329

原创 printf系列和vprintf系列库函数详解

先从库里面把函数模型弄出来看看:#include  int printf(const char *format, ...);  int fprintf(FILE *stream, const char *format, ...);  int sprintf(char *str, const char *format, ...);  int snprintf(char *str

2016-12-28 13:38:57 2452

转载 【STL】algorithm算法介绍

STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。    STL中算法大致分为四类:        1、非可变序列算法:指不直接修改其所操作的容器内容的算法。        2、可变序列算法:指可以修改它们所操作的容器内容的算法。        3、排序算法:包括对序列进行排序和合并的算法、搜索

2016-12-26 10:00:49 797

转载 algorithm库函数——sort()和partition()

你发现有sort和stable_sort,还有 partition 和stable_partition, 感到奇怪吧。其中的区别是,带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。或许你会问,既然相等,你还管他相对位置呢,也分不清 楚谁是谁了?这里需要弄清楚一个问题,这里的相等,是指你提供的函数表示两个元素相等,并不一定是一摸一样的元素。例如,如果你写一个比较函数:

2016-12-26 09:43:11 882

转载 C++中四种类型转换方式

1.static_cast最常用的类型转换符,在正常状况下的类型转换,如把int转换为float,如:int i;float f; f=(float)i;或者f=static_cast(i);1.基类和子类之间的转换:子类指针转换成父类是指针是安全的;但父类指针转换成子类指针是不安全的。2.基本数据类型转换,如enum,struct,int,char,float等。 

2016-12-23 16:49:32 1164

转载 【STL】multimap

标准库还定义了一个 multimap 容器,它与 map 类似,所不同的是它允许重复键。这个属性使得 multimap 比预想的要更有用:比如在电话簿中相同的人可以有两个以上电话号码,文件系统中可以将多个符号链接映射到相同的物理文件,或DNS服务器可以将几个URLs映射到相同的IP地址。在这些场合,你可以象下面这样:// 注: 伪码 multimap phoneboo

2016-12-23 15:50:39 280

转载 【STL】set

1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让

2016-12-23 14:49:44 292

转载 C++ STL 一般总结

一、一般介绍      STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高

2016-12-23 09:54:24 337

转载 OSI七层模型详解

OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。   一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。

2016-12-22 17:46:36 323

原创 technical words study

eliminate 淘汰,清除subject to 服从...optimizations 优化  optimize aligned 对准的,均衡的tutorial  个别辅导时间; 教程,辅导材料; 使用说明书; 辅导课;decent 正派的; 得体的; (服装等) 相称的,合宜的; 相当好的minor 较小的,少数的,未成年人,选修invoke 祈求,提出...以证明

2016-12-22 14:55:08 487

转载 Specifying Attributes of Variables

The keyword __attribute__ allows you to specify special attributes of variables or structure fields. This keyword is followed by an attribute specification inside double parentheses. Some attributes

2016-12-22 14:40:50 420

转载 Built-in Functions Provided by GCC

GCC provides a large number of built-in functions other than the ones mentioned above. Some of these are for internal use in the processing of exceptions or variable-length argument lists and are not

2016-12-22 14:38:10 2096 1

转载 __builtin_expect详解

在GTK+2.0源码中有很多这样的宏:G_LIKELY和G_UNLIKELY。比如下面这段代码:if (G_LIKELY (acat == 1))     /* allocate through magazine layer */    {      ThreadMemory *tmem = thread_memory_from_self();      guint ix

2016-12-22 13:29:43 823 1

转载 Common Predefined Macros

The common predefined macros are GNU C extensions. They are available with the same meanings regardless of the machine or operating system on which you are using GNU C or GNU Fortran. Their names all

2016-12-22 11:14:57 344

转载 __attribute__详解

GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 __attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attr

2016-12-22 10:39:43 887

转载 gcc的__attribute__编译属性

要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除返回值外,不会通过其它(如全局变量、指针)对函数外部产生任何影响。但这里我们比较感兴趣的是对代

2016-12-22 09:39:19 4530

原创 关于宏的一些实际偷巧伎俩

通常我们都知道宏就是在预编译的时候进行原封不动的替换,所以对于一些函数有较大的相似度时,我们可以使用宏去进行一些取巧。 1.#define PB_BEGIN(sqlstr, item_list, item_type, name) \ 89 { \ 90 MYSQL_RES *res;\ 91 MYSQL_ROW row;\ 92 this->db->id=

2016-12-22 09:25:49 376

转载 MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

案一:使用ignore关键字如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下复制代码1 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999

2016-12-21 16:18:36 363

转载 __stdcall、__cdcel和__fastcall三者的区

__stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。如下图所示,可以在IDE环境中设定所有函数默认的调用协议,还可以在函数定义时单独设定本函数的调用协议。调用协议常用场合__stdcall:Windows API默认的函数调用协议。__cdecl:C/C++默

2016-12-21 15:21:31 318

转载 strftime函数

strftime,是一种计算机函数,strftime() 函数根据区域设置格式化本地时间/日期,函数的功能将时间格式化,或者说格式化一个时间字符串。头文件:time.h123456size_t strftime(char *strDest,size_t maxsize,

2016-12-21 14:16:26 950

转载 do{...}while(0)的作用与意义

linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错:举

2016-12-21 14:11:00 371

原创 vim插件的放置位置

比如经常使用的: backupdir bundle bundle.tar.bz2 colors comm_tags comm.vim cpp_src cpp_tags mtags_comm snippets syntax都要直接放置在.vim的根目录下(不可以再创建子目录,将上面的插件放在里面,否则就算在.vimrc中更改路径也会出错!)==[201]==[HJK/home/H

2016-12-21 11:29:32 1232

转载 Ctags 的安装与使用(使用命令详解)

『插件介绍』Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。『下载和安装』一、我是使用apt-get安装的:sudo apt-get install ctags二、下载源码安装(网上提

2016-12-21 10:33:05 689

转载 mysql sql语句大全

mysql sql语句大全1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevi

2016-12-21 10:26:22 318

转载 mysql API

MYSQL这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL函数。 MYSQL_RES这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。从查询返回的信息在本章下文称为结果集合。MYSQL_ROW这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。(如果字段值可能包含二进制

2016-12-21 10:01:36 367

转载 【STL】algorithm

algorithm库函数集合:不修改内容的序列操作:adjacent_find查找两个相邻(Adjacent)的等价(Identical)元素all_ofC++11检测在给定范围中是否所有元素都满足给定的条件any_ofC++11检测在给定范围中是否存在元素满足给定条件count

2016-12-21 09:31:29 1264

转载 linux指令大全

cat cdchmod chowncp cut名称:cat使用权限:所有使用者使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonb

2016-12-20 17:23:55 823

转载 google protobuf使用

http://www.cnblogs.com/youxin/p/4073703.htmlIf you get the source from github, you need to generate the configure script first:$ ./autogen.shThis will download gtest source (which is

2016-12-20 14:01:01 4256

转载 【STL】vector

Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include

2016-12-19 17:46:48 285

转载 【STL】list基础

各个容器有很多的相似性。先学好一个,其它的就好办了。先从基础开始。先看看他们的分类吧标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。非标准关联容器hash_set、hash_multiset、hash_m

2016-12-19 17:38:14 274

转载 Protocol Buffer

message.h#include namespace google::protobufDefines Message, the abstract interface implemented by non-lite protocol message objects.Although it's possible to implement this interfac

2016-12-19 15:37:00 1165

转载 inline函数的一些总结

我们看下面的函数,函数体中只有一行语句:     double Average(double total, int number){       return total/number;      }  定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,

2016-12-19 11:09:52 346

转载 Protocol Buffer的C++入门教程

http://blog.csdn.net/k346k346/article/details/51754431

2016-12-17 19:55:47 1127

转载 Google Protocol Buffer 的使用和原理

http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

2016-12-17 19:37:30 343

转载 c++中explicit关键字详解

http://www.cnblogs.com/ymy124/p/3632634.html

2016-12-17 16:16:20 284

转载 c++ 中 pair 的 使用方法

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下:template pair make_

2016-12-17 15:09:02 4051 1

空空如也

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

TA关注的人

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