c++
wu936754331
好人一个
展开
-
进程与线程
一.进程与线程的区别进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线原创 2015-10-18 22:07:10 · 359 阅读 · 0 评论 -
Linux下编译、链接和装载
编译过程在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。一个简单的hello word程序编译过程如下:1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.转载 2015-11-12 14:22:29 · 393 阅读 · 0 评论 -
linux性能分析工具总结(初级工具篇)
1.uptimeuptime命令是用来查询linux系统负载的!用法:直接输入uptime即可.另外还有一个参数 -V(大写),是用来查询版本的procps是一个实用程序包,主要包括ps top kill等程序主要用来显示与控制一些系统信息,进程状态之类的内容。以下显示输入uptime的信息:04:03:58 up 10 days, 13:19, 1原创 2015-10-27 09:43:38 · 4044 阅读 · 0 评论 -
sizeof和C++类的问题
1.sizeof一个空类大小是多 12.sizeof一个带构造和析构函数的类 13.sizeof一个虚函数的类 4转载 2015-10-13 22:16:11 · 361 阅读 · 0 评论 -
各种排序算法比较
排序算法汇总总结一、插入排序 直接插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。转载 2015-10-31 08:00:36 · 508 阅读 · 0 评论 -
STL容器效率比较
1、vector变长一维数组,连续存放的内存块,有保留内存,堆中分配内存;支持[]操作,高效率的随机访问;在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低;vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很多时间;注:需要高效的随即存取,而不在乎插入和删除使用vector。 2、list双向转载 2015-10-31 08:06:17 · 534 阅读 · 0 评论 -
红黑树实现Map
红黑树是一种类平衡树, 但它不是高度的平衡树, 但平衡的效果已经很好了. 为什么不用 AVL 树作为底层实现, 那是因为 AVL 树是高度平衡的树, 而每一次对树的修改, 都要 rebalance, 这里的开销会比红黑树大. 红黑树插入只要两次旋转, 删除至多三次旋转. 但不可否认的是, AVL 树搜索的效率是非常稳定的. 选取红黑树, 我认为是一种折中的方案红黑树是一种比较宽泛化的平转载 2015-10-31 08:16:50 · 3527 阅读 · 1 评论 -
C++中的单例模式其实也不简单
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2015-11-18 10:38:13 · 1112 阅读 · 0 评论 -
isten函数的backlog参数解释
Listen函数的原型是:int listen(int socket, int backlog);此函数用于建立tcp连接时监听系统的某一个端口。第一个参数比较好理解,是调用listen之前创建的socket的句柄,第二个参数单从名称不好理解,从linux的man资料来看的解释是tcp半连接队列的大小,至于何为半连接队列则没有做进一步说明,这里详细解释一下第二个参数backlog的含义。说转载 2015-11-18 10:14:46 · 492 阅读 · 0 评论 -
网络后台开发面试题
1.C++模板的作用。 将算法与具体对象分离,与类型无关,通用,节省精力2.socket编程,如果client断电了,服务器如何快速知道???有以下几个技术:使用定时器(适合有数据流动的情况); 使用socket选项SO_KEEPALIVE(适合没有数据流动的情况); 3.fork()一子进程程后 父进程癿全局变量能不能使用转载 2015-11-12 15:24:09 · 758 阅读 · 0 评论 -
宏定义:得到一个field在结构体(struct type)中的偏移量
//OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。#define OFFSET(s, m) ((size_t) &((s *)0)->m)转自:http://hi.baidu.com/tian_20032242/blog/item/77fd7afa5ffcc29d59ee90ba.html#define OFFSETOF(转载 2015-11-12 15:11:08 · 1095 阅读 · 0 评论 -
tcpdump常用命令
按照2G一个报文存储网卡流量命令如下:tcpdump -i eth0 -s 0 tcp port 80 -w test.pcap -C 2000合并数据包命令如下:mergecap.exe -a D:/*.pcap -w d:/test.pcap tcpdump 命令详解:名称 (NAME)tcpdump - 转储网络上的数据流 总转载 2015-10-18 20:56:35 · 626 阅读 · 0 评论 -
g++参数介绍
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件 预处理器cpp2.将预处理后的文件不转换成汇编语言,生成文件.s 编译器egcs3.有汇编变为目标代码(机器代码)生成.o的文件 汇编器as4.连接目标代码,生成可执行程序转载 2015-10-21 10:09:27 · 367 阅读 · 0 评论 -
值得推荐的C/C++框架和库
值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.转载 2015-10-20 11:39:05 · 518 阅读 · 0 评论 -
Makefile自动生成工具-----autotools的使用(详细)
相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用。很多GNULinux的的软件都是用它生成Makefile的,包括我们非常熟悉的Linux内核源代码。 1、准备: 需要工具 autoscan aclocal autoheader转载 2015-10-21 18:09:52 · 1122 阅读 · 0 评论 -
使用VS2013+VisualGDB开发Linux程序图文教程
Linux程序开发变得越来越多,越来越多的程序、产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要。但是对于习惯了Windows下的开发,使用了VS这个宇宙第一IDE后,觉得Linux下的纯命令行开发调试,还是有些不习惯,效率有些低(大神除外)。那么能不能用VS来开发调试Linux程序呢,经过各种查找,找到了VisualGDB这个神奇的插件,通过VS转载 2015-10-21 15:37:08 · 5250 阅读 · 0 评论 -
socket的发送与接收缓冲区
应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应用数据,而tcp/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用数据(tcp数据报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送数据的速度存在差异,所以,一部分应用数据被组织成tcp数据报之后,会缓存在tcp socket的发送缓存队列中,等待网络空闲时转载 2015-10-22 17:23:53 · 11362 阅读 · 0 评论 -
Linux服务器性能测试工具介绍
前言作为服务器开发人员,对性能应该非常的敏感,在服务器设计和编码时就应该充分考虑到性能问题,但如果写出来的程序,或者已经存在的程序在运行中出现了性能问题,我们又如何下手去找出问题并解决呢?这不仅靠的是经验,还需要借助一些工具来辅助分析。本文将以一个实例为样本,介绍几款linux下常用的性能分析工具的使用以及各自的优缺点,请注意如无特别说明,本文出现的环境均为linux环境。Linux下转载 2015-10-23 14:08:57 · 3984 阅读 · 0 评论 -
linux后台开发常用调试工具
一、编译阶段nm 获取二进制文件包含的符号信息strings 获取二进制文件包含的字符串常量strip 去除二进制文件包含的符号readelf 显示目标文件详细信息objdump 尽可能反汇编出源代码addr2line 根转载 2015-10-23 14:35:24 · 1140 阅读 · 0 评论 -
Strcat,strcpy,strcmp,Strlen函数原型
1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{ char * address = strDest; //该语句若放在assert之后,编译出错 assert((strDest != NULL)转载 2015-11-18 18:28:17 · 573 阅读 · 0 评论