- 博客(29)
- 收藏
- 关注
转载 map 对key 或 value排序
按KEY排序:我们借助map提供的参数接口,为它指定相应Compare类,就可以实现对map按Key排序,是在创建map并不断的向其中添加元素的过程中就会完成排序。该如何实现Map的按Value排序呢? 第一反应是利用stl中提供的sort算法实现,这个想法是好的,不幸的是,sort算法有个限制,利用sort算法只能对序列容器进行排序,就是线性的(如vect
2016-09-06 09:49:38 300
转载 三次握手 resend
三次握手的第三个ACK包丢了——客户端认为连接建立,写数据时,会触发RST 当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server; 如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒
2016-08-25 20:26:18 247
转载 operator ++
The difference lies in what signature you choose for your overload(s) of operator ++.Cited from the relevant article on this subject in the C++ FAQ (go there for more details):class Number
2016-08-24 23:33:47 370
转载 const iterator 和const_iterator区别
如果你传递过来一个const类型的容器,那么只能用const_iterator来遍历。void Method(const vectorint> vInt){ vectorint>::const_iterator iter;}简单示例 vectorint> ivec; vectorint>::const_iterator citer1 = ivec.
2016-08-23 16:38:38 317
转载 iterator做形参传值,而不是传引用。
在STL中,我们能见到很多函数的形参都是iterator的传值,而不是传引用。你会不会问,为什么不是传引用,传引用不是效率更高吗?这是因为我们通常这么用:void print_vector(vector::iterator beg, vector::itertor end);while(beg != end) { cout print_vecto
2016-08-23 16:33:37 2695
转载 TCP短连接长连接
1. TCP短连接我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊
2016-08-16 15:57:46 187
转载 fsync的性能问题,与fdatasync
fsync的性能问题,与fdatasync除了同步文件的修改内容(脏页),fsync还会同步文件的描述信息(metadata,包括size、访问时间st_atime & st_mtime等等),因为文件的数据和metadata通常存在硬盘的不同地方,因此fsync至少需要两次IO写操作,fsync的man page这样说:"Unfortunately fsync() will
2016-08-12 11:03:14 1614
原创 read copy update
In computer operating systems, read-copy-update (RCU) is a synchronization mechanism implementing a kind of mutual exclusion[note 1] that can sometimes be used as an alternative to a readers-w
2016-08-12 03:33:23 263
转载 Linux写时拷贝技术(copy-on-write)
Linux写时拷贝技术(copy-on-write)源于网上资料COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取
2016-08-12 03:25:19 200
转载 C/C++ 可变参数
为了解决这些问题,我们首先要解释cdecl调用约定(参见论调用约定),所有使用不定参数的函数必须是使用cdecl(全局函数)或者this call(类成员函数)调用约定。该约定对于参数传递规定如下:参数从右向左入栈(也就是如果你调用f(a,b,c),则c先入栈,然后是b,最后是a入栈)调用者负责清理堆栈在设计具有不定参数列表的函数的时候,我们有两种方法来确定到底多少参数会被传递
2016-07-29 12:45:18 195
转载 java 动态绑定
Java的动态绑定机制【放假了,温习一下Java。程序员啊,就是要不停的学习啊!】Java的动态绑定又称为运行时绑定。意思就是说,程序会在运行的时候自动选择调用哪儿个方法。一、动态绑定的过程: 例子:1 public class Son extends Father2 Son son = new Son();3 son.method(); 1.
2016-07-29 12:28:15 274
转载 子类父类 成员同名
子类和父类中同名成员的问题如果创建父类对象来访问父类中的这个成员,那无话可说。如果创建子类对象,此时创建的子类对象会继承父类中可继承的公有部分,也就是说这个子类对象既包含了子类新增的内容,又包含了父类继承的内容。这时问题便来了?继承的那个同名的成员和子类中声明的那个成员分别如何访问呢。答:子类中的成员在子类函数中可以直接用名称访问,如果他是public的,还可以用子
2016-07-29 12:22:04 1544
转载 g++
一、gcc 编译流程1.预处理-Pre-Processinggcc -E test.c -o test.i //.i文件 2.编译-Compilinggcc -S test.i -o test.s //.s文件 3.汇编-Assembling //.o文件gcc -c test.s -o test.o 4.链
2016-07-28 15:58:43 234
转载 Extern templates
A template specialization can be explicitly declared as a way to suppress multiple instantiations. For example: #include "MyVector.h" extern template class MyVector; // Suppresses implicit ins
2016-07-28 15:24:29 373
转载 out-line virtual function
If a class is defined in a header file and has a vtable (either it has virtual methods or it derives from classes with virtual methods), it must always have at least one out-of-line virtual method i
2016-07-28 15:07:45 824
转载 inline static varaible
void doSomething(){ static int value ;}You must realise that the static variable inside the function, simply put, a global variable hidden to all but the function's scope, meaning that only t
2016-07-28 14:33:37 222
转载 extern用法详解(转)
extern用法详解(转) 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:ext
2016-07-28 09:27:42 160
转载 boost::noncopyable
今日粗看boost的代码,发现很多类都继承noncopyable,以下是noncopyable的代码:class noncopyable { protected: noncopyable() {} ~noncopyable() {} private: // emphasize the following members are private
2016-07-20 09:59:11 310
转载 socket tcp/ip
socket中TCP的三次握手建立连接详解我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:客户端向服务器发送一个SYN J服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1客户端再想服务器发一个确认ACK K+1只有就完了三次握手,但是这个三次握手发生在socket的那几个函数中呢?请看下图:图1、socket中发
2016-05-04 09:46:02 325
转载 new对象加括号与不加的区别
加括号与不加的区别 (1)加括号 1. 若括号为空,即无实参项,那么理解为调用默认构造函数; 2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或默认复合构造函数。 (2)不加括号 调用默认构造函数,或默认复合构造函数。
2016-04-27 11:44:20 310
转载 查找文件
Linux:which 查看可执行文件的位置。whereis 查看文件的位置。 (windows 下 where)locate 配合数据库查看文件位置。find 实际搜寻硬盘查询文件名称。which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行
2016-04-26 11:15:50 208
转载 vector::reserve && vector::resize
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 r
2016-04-22 11:53:31 170
转载 sql执行顺序
sql执行顺序SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返
2016-04-21 11:47:29 174
转载 C++ string split trim
//注意:当字符串为空时,也会返回一个空字符串void split(std::string& s, std::string& delim,std::vector* ret){ size_t last = 0; size_t index=s.find_first_of(delim,last); while (index!=std::string::npos) { ret->push_
2016-04-07 10:54:14 258
转载 C++静态成员
Ordinarily, class static members may not be initialized in the class body. However,we can provide in-class initializers for static members that have const integraltype and must do so for static
2016-04-05 10:52:25 252
转载 文件重定向
“i&j”的效果都是把j的指向复制给i。“echo hero >hero.txt 2>&1”这句的意思是,无论是标准输出还是标准错误输出都会被重定向到hero.txt中,具体过程:1的指向由con转为 hero.txt,“2>&1”是把1的指向复制给2,此时2的指向也变为了hero.txt,因此1和2都会被重定向到hero.txt 中。注意:1是符号“>”的默认句柄数字代号。在修改
2016-03-30 11:29:56 302
转载 bat文件语法
帮助:/?command /?查看对应command的帮助,这个无论何时都是最权威的。注释:::命令,echo off命令程序中的注释是相当有用的,行注释在行首加上::,例子如下::这是一个注释。@echo off的意思是此命令后的命令在执行的时候,不显示命令本身。变量:set命令set var="c:\a.txt"echo %var%输
2016-03-30 09:46:10 444
转载 理解 __declspec(dllexport)和__declspec(dllimport)
考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。二者使用同一个头文件,作为接口,怎么办呢?#ifndef DLL_H#define DLL_H#ifdef DLL_EXPORTS
2016-03-28 16:59:25 491
转载 SQL中Group By的使用
Rain Man怀仁怀朴,唯真唯实。博客园首页博问闪存新随笔联系订阅管理随笔-178 文章-0 评论-314 SQL中Group By的使用1、概述2、原始表3、简单Group By4、Group By 和 Order By5、Group By中Select指
2016-03-28 15:21:01 544
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人