
C/C++
Michael-H
技术改变世界
展开
-
关于FIN_WAIT1
TCP 关闭连接时的情况:TCP Close看图可知,主动关闭的一方发出 FIN,同时进入 FIN_WAIT1 状态,被动关闭的一方响应 ACK,从而使主动关闭的一方迁移至 FIN_WAIT2 状态,接着被动关闭的一方同样会发出 FIN,主动关闭的一方响应 ACK,同时迁移至 TIME_WAIT 状态。回到开头的问题:FIN_WAIT1 能持续多久?一般情况下,服务器间的 ACK ...转载 2020-01-15 18:48:04 · 1885 阅读 · 0 评论 -
gdb调试多进程程序
1.gdb下调试多进程程序只需要以下几条命令即可 除此之外还可以查看正在调试的进程 info inferiors, 同时也可以将当前正在调试的进程切换到另外一个进程中让其取运行 2.代码调试演示#include<stdio.h>#include<stdlib.h>#include<unistd.h>void...转载 2020-01-09 11:35:50 · 242 阅读 · 0 评论 -
gdb调试当前运行的程序
gdb调试当前运行的程序为什么使用gdb调试正在运行的程序? 因为有时候bug很难复现、或者环境搭建起来比较困难,所以在出现bug的时候可以使用gdb的attach功能调试正在运行的GCC编译出来的程序,注意编译选项要加-g,否则没有符号表。调试步骤? 1. 编译时候带-g选项。 2. 运行程序。 3. ps找到进程号。 4...转载 2020-01-09 11:31:12 · 4125 阅读 · 0 评论 -
linux top命令看到的实存(RES)与虚存(VIRT)分析
linux top命令看到的实存(RES)与虚存(VIRT)分析近期在公司中解决程序使用的内存高问题,将一部分之前无法回收的内存进行了回收,实现降内存效果(降实存)。在统计效果时, QA问是统计RES(实存)还是VIRT(虚存)。在网上学习看了一些博客,这里自己总结一下RES和VIRT的区别。1. 概念VIRT: 1 2 3 1...转载 2020-01-09 09:12:39 · 1613 阅读 · 0 评论 -
谈谈unsigned char,short,int ,long的位长
原文:http://www.cnblogs.com/yqskj/articles/2229480.html最近经常见到这些unsigned char,short,int ,long的定义,有时真的不确定位长是多少,上网查,又话是跟编译器有关,没一个准确答案。于是只好自己找答案,其实用一个最简单地方就可以知道其长度,就是用sizeof函数。于是我写了如下一段:转载 2013-11-29 09:55:12 · 3423 阅读 · 0 评论 -
char 与 unsigned char的本质区别
原文:http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符转载 2013-11-29 10:21:14 · 488 阅读 · 0 评论 -
viso 2003, visio 2007 中大括号的画法
搜了好久没有找到有效的方法,偶然发现了Visio中大括号的位置,拿出来分享下子~转载 2014-02-22 16:00:56 · 6107 阅读 · 0 评论 -
格雷码的实现
问题:产生n位元的所有格雷码。格雷码(Gray Code)是一个数列集合,每个数使用二进位来表示,假设使用n位元来表示每个数字,任两个数之间只有一个位元值不同。例如以下为3位元的格雷码: 000 001 011 010 110 111 101 100 。如果要产生n位元的格雷码,那么格雷码的个数为2^n.假设原始的值从0开始,格雷码产生的规律转载 2014-04-15 14:51:51 · 619 阅读 · 0 评论 -
生成n位格雷码
/* //该程序生成n位的格雷码*/#include using namespace std;#define MAX_BIT 20unsigned int n;//把十进制数转化成对应的二进制void deciTobinary(unsigned int num, char *str) { unsigned int stack[MAX_BIT]; int top = -1;转载 2014-04-15 14:57:01 · 1413 阅读 · 0 评论 -
格雷码与二进制码的转换
geGray Code是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例转载 2014-04-17 13:36:26 · 9916 阅读 · 0 评论 -
getchar用法
键盘输入函数getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:char c;c=getchar();#includevoid main(){char c;printf("input a character\n");c=getchar();putchar(c)转载 2014-04-04 11:00:04 · 1809 阅读 · 0 评论 -
浮点流水线运算
原文:http://www1.hrbust.edu.cn/zuzhijigou/metc/material/zcyl/Chap02/2.6.1.htm浮点加法、减法运算 设有两个浮点数x和y,它们分别为x=2Ex·Mxy=2Ey·My 其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。 两浮点数进行加法和减法的运算规则是转载 2014-03-25 14:45:03 · 11520 阅读 · 1 评论 -
一步一步写算法(之 算法总结)
原创:http://blog.youkuaiyun.com/feixiaoxing/article/details/6993718自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后面的博客补充完整。这里主要是做一个总结,有兴趣的朋友可以好好看看,欢迎大家提出宝贵意见。转载 2014-03-26 15:27:58 · 483 阅读 · 0 评论 -
有限状态机的编程思想
有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM--有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理转载 2014-04-10 10:42:33 · 1614 阅读 · 3 评论 -
实际的状态机编程思想例子
看看小时候玩的5块钱那种最简单的电子表。只有2个按钮就能操作。暂且称为按钮A和按钮B现给出一个完整的功能文字描述:在显示时间时按A,屏幕显示变成日期在显示日期时按A,屏幕显示变成秒钟在显示秒钟时按A,屏幕显示变成时间在显示秒钟时按B,秒钟归0在显示时间时按B,屏幕 时间、日期交替显示。在时间、日期交替显示时按B,屏幕“时”闪烁在“时”闪烁时按B,屏幕“时”加1,转载 2014-04-10 10:40:51 · 891 阅读 · 0 评论 -
ffmpeg Windows下采集摄像头一帧数据,并保存为bmp图片
#include #include #include #include #include #include #include #include #include #define MAX_INPUT_DEVICE_NUM 10#ifdef _WIN32int strcasecmp(const char *s1, const char *s2){ while ((*转载 2014-05-19 09:31:57 · 660 阅读 · 0 评论 -
Visual C++编程实现摄像头视频捕捉
摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例。转载 2014-06-19 10:57:05 · 883 阅读 · 0 评论 -
break和continue的区别
//break是结束整个循环体,continue是结束单次循环比方说:while(x++ < 10){ if(x == 3) { break; } printf("%d\r\n", x);}结果是输出 1 2 就退出了整个while循环但是如果使用continuewhile(x++ < 10){ if(x == 3翻译 2014-10-23 11:03:40 · 427 阅读 · 0 评论 -
C++中的关联容器set用法
定义//define a vector with 20 elements, holding two copies of each number from 0 to 9vector ivec;for(vector::size_type i=0; i!=10; ++i){ ivec.push_back(i); ivec.push_back(i); //转载 2014-11-11 11:54:55 · 594 阅读 · 0 评论 -
关联容器map应用-统计单词出现频率
以下程序实现:从1.txt中读入英文句子,统计每个单词出现的频率,按照字典顺序输出。知识点:关联容器map #includeiostream>#includestring>#includefstream>#include algorithm>#includemap>using namespace std;ifstream & open_fil转载 2014-11-11 11:56:15 · 563 阅读 · 0 评论 -
C++中的关联容器map用法
声明//count number of times each word occurs in the inputmap word_count; //emptymap from string to int //get an iterator to an element in word_countmap::iterator map_it=word_count.begin();//转载 2014-11-11 11:57:21 · 480 阅读 · 0 评论 -
函数指针/函数指针数组
函数指针 就像数组名是指向数组第一个元素的常指针一样,函数名也是指向函数的常指针。可以声明一个指向函数的恶指针变量,并且用这个指针来调用这个函数。一个指向整型的指针指向一个整型变量,一个指向函数的指针必须指向一个有正确返回类型和签名的函数。分析下面两个声明:long* Function (int); //函数的声明long (*funcPtr)(int);// 函数转载 2014-11-11 11:59:19 · 448 阅读 · 0 评论 -
C++ map的基本操作和使用
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint转载 2014-11-11 15:10:59 · 437 阅读 · 1 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。转载 2014-11-17 14:39:16 · 452 阅读 · 0 评论 -
printf格式符%d、%lld、%llx、%u
%d 有符号32位整数%lld 有符号64位证书%llx有符号64位16进制整数%u 无符号32位整数[cpp] view plaincopy#include int main(int argc, char** argv) { long long x = 6222201052963203716原创 2014-11-18 15:59:12 · 47442 阅读 · 2 评论 -
time函数
使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型:使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下:struct tm *gmtime(time_t *ti翻译 2014-12-11 10:29:49 · 511 阅读 · 0 评论 -
printf输出格式
Printf 格式化字符串 Printf格式化整型数值Printf格式化浮点值printf()格式转换的一般形式如下%(flags)(width)(.prec)type以中括号括起来的参数为选择性参数,而%与type则是必要的。底下先介绍type的几种形式整数%d 整数的参数会被转成一有符号的十进制翻译 2014-12-11 15:30:48 · 808 阅读 · 0 评论 -
关于const char*和char*、const char** 和char** 赋值问题
转自:原文根据ANSI C标准的赋值约束条件: 1. 两个操作数都是指向有限定符或无限定符的相容类型的指针。 2. 左边指针所指向的类型必须具有右边指针所指向类型的全部限定符。一、const char*和char* const char*的类型是:“指向一个具有const限定符的char类型的指针”。(不能修改其值)转载 2014-12-12 15:40:31 · 1430 阅读 · 0 评论 -
C语言中如何将数字转换成字符串
发现了一个很好的转换函数吧 char * int_to_char(int a) { char *b; sprintf(b,"%d",a); return b; } 更多,参考:atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整转载 2015-01-20 11:45:31 · 6150 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。转载 2015-05-08 13:56:00 · 434 阅读 · 0 评论 -
map和set异同
节选一:MAP的节点是一对数据. SET的节点是一个数据.Map使用关键值Key来唯一标识每一个成员 map可以重复。set是集合 都属于关联容器 只不过,map的形式 map mymap; set的形式 set myset; set(转载 2015-06-02 15:35:20 · 2295 阅读 · 0 评论 -
SET容器的基本知识
set和map一样属于关联容器,set是集合,map是映射。若元素类型为int,double,string就会自动进行(默认是升序)排序(使用平衡二叉树来实现),使用自定义类型而未定义比较运算符就不能自动排序了。set容器不支持随机访问。函数列表:begin()返回指向第一个元素的迭代器clear()清除所有元素count()返回某个值元素的个数empty()如果集合为原创 2015-06-02 15:45:55 · 576 阅读 · 0 评论 -
htonl(),htons(),inet_addr(),inet_ntoa()函数
htonl() 简述: 将主机的无符号长整形数转换成网络字节顺序。 #include u_long PASCAL FAR htonl( u_long hostlong); hostlong:主机字节顺序表达的32位数。 注释: 本函数将一个32位数从主机字节顺序转换成网络字节顺序。 返回值: htonl()返回一个网络字节顺序的值。 参转载 2015-06-24 11:58:39 · 513 阅读 · 0 评论 -
set集合容器
set集合容器一、原理set集合容器使用一种称为红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,来组织泛化的元素数据。每个节点包含一个取值红色或黑色的颜色域,以利于进行树的平衡处理。作为节点键值的元素的插入,必须确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值。不会将重复的键值插入容器,也不需指定具体的插入位置,而按元素在树中的关联关系转载 2015-06-03 09:16:35 · 422 阅读 · 0 评论 -
C语言str函数系列
常常见到面试时让写str系列函数,用的少,经常忘记,记录一下。1、strcat()此函数原型为 char *strcat(char *dest, const char *src).功能为连接两个字符串,把src连接到dest后面;返回dest地址实现如下[cpp] view plaincopychar转载 2015-06-05 09:05:43 · 721 阅读 · 0 评论 -
TinyXML参照文档
TinyXML参考文档 TinyXML 2.6.2 参考文档 TinyXML是一个简洁的、可以很容易嵌入别的程序的C++ XML解析器。能够做什么 简单地说,TinyXML可以解析一个XML文档,并将此文档编辑成为一个文档对象模型(DOM),可以方便阅读、编辑与保存。 XML(扩展标记语言,eXtensible Markup Language)准许你转载 2015-06-26 15:09:28 · 1425 阅读 · 0 评论 -
一步一步写算法(之链表排序)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 原创 http://blog.youkuaiyun.com/feixiaoxing/article/details/6905260/ 相比较线性表的排序而言,链表排序的内容稍微麻烦一点。一方面,你要考虑数据插入的步骤;另外一方面你也要对指针有所顾虑。要是有一步的内容错了,那么操作系转载 2015-06-08 10:51:50 · 411 阅读 · 0 评论 -
链表的冒泡排序
为了练习一下链表的使用,写了个链表的冒泡排序。冒泡排序,在每次遍历的每个链表数据中找出数据最小或最大的节点和原始链表数据的头节点交换, 交换的过程中要用到,待交换头节点和最大或最小节点的前驱节点。 还要注意带头节点第一个冒泡上来的数和头节点的交换。还要注意头节点就是最小节点的前驱节点的情况。// LinkListSort.cpp : 定义控制台应用程序的入口点。//#include转载 2015-06-08 11:20:31 · 515 阅读 · 0 评论 -
_itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
_itoa功能:把一整数转换为字符串用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,转载 2015-06-10 14:41:52 · 659 阅读 · 0 评论 -
va_start和va_end使用详解
va_start和va_end使用详解 本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的转载 2015-06-10 13:25:38 · 367 阅读 · 0 评论