03 2012 档案

换行符的前世今生
摘要:换行(\n)就是光标下移一行却不会移到这一行的开头,回车(\r)就是回到当前行的开头却不向下移一行。 Enter键按下后会执行\n\r这样就是我们看到的一般意义的回车了,所以用16进制文件查看方式看一个文本,就会在行尾发现"\n\r"。 程序调试时换行符时是\r\n。 Tab是制表符,就是"\t",作用是预留8个字符的显示宽度,用于对齐。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有 阅读全文

posted @ 2012-03-29 17:16 陈朋 阅读(237) 评论(0) 推荐(0)

调试时遇到的2个小问题
摘要:1、调试时控制台一闪而过。Ctrl + F5然后再逐步调试即可。2、程序跳入汇编窗口。今天调试程序的时候,加断点后程序之间跳入到汇编窗口,怎么也无法逐行调试,这时要将工程重新生成一下。重新逐步运行即可。 阅读全文

posted @ 2012-03-29 17:14 陈朋 阅读(250) 评论(0) 推荐(0)

关于文件读写
摘要:Windows对文件的读写提供了很丰富的操作手段,如:1. FILE *fp, fstearm...; (C/C++)2. CFile, CStdioFile...; (MFC)3. CreateFile, ReadFile...;(API)...在处理一般的文件(文本/非文本),这些足够了。然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再用一般手段处理,系统就显的力不从心了要把文件读出,再写进,耗费的是CPU利用率与内存以及IO的频繁操作。这显然是令用户难以忍受的为了解决这个吃内存,占CPU,以及IO瓶颈,windows核心编程提供了内存映射文件技术(Maping Fil 阅读全文

posted @ 2012-03-28 12:48 陈朋 阅读(391) 评论(0) 推荐(0)

Socket编程
摘要:Socket编程很简单。因为不管用什么语言、什么环境编写,都是那几个固定的步骤。Socket可以通过TCP\IP和UDP两种方式实现。TCP\IP tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:客户端向服务器发送一个SYN J服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1客户端再想服务器发一个确认ACK K+1 当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻.. 阅读全文

posted @ 2012-03-27 17:28 陈朋 阅读(468) 评论(0) 推荐(0)

文件open函数的参数
摘要:这里曾遇到过O_TRUNC 这个参数,当时没看明白啥意思,后来弄了个例子,英文不好的桑不起啊。 int _open(char *pathname,int access)为读或写打开一个文件, 按后按access来确定是读文件还是写文件,access值见下表 ┌──────┬────────────────────┐ │access值 │意义 │ ├──────┼────────────────────┤ │O_RDONLY │读文件 │ │O_WRONLY │写文件 │ │O_RDWR │即读也写 │ │O_NOINHERIT │若文件没有... 阅读全文

posted @ 2012-03-27 16:59 陈朋 阅读(2776) 评论(0) 推荐(0)

Linux 文件IO理解
摘要:linux文件IO操作可以分为两种:1.带缓存的文件IO操作,包括fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等2.不带缓存的文件IO操作,包括open, close, read, write, getc, getchar, putc, putchar 等两者的区别:1.带缓存的io操作是在标准C里面定义的(可移植),而不带缓存的io操作是POSIX中定义的(不可移植),属于系统调用。带缓存的实际上是在不带缓存的基础之上封装了一层,维护了一个输入输出缓冲区,使之能跨 阅读全文

posted @ 2012-03-27 16:56 陈朋 阅读(713) 评论(0) 推荐(0)

关于函数中内存操作
摘要:1、传址申请内存问题。看下面一个例子。struct complex_t //复数{ int real; //实数 int imag; //虚数};int create(complex_t *p, unsigned int n){ p = new complex_t[n]; //申请n个complex if(p == NULL) return -1; else return 0;}然后在main函数中调用该函数:complex_t *comps = NULL;if(create(comps, 10) < 0) //调用函数{ printf("create failed\n&quo 阅读全文

posted @ 2012-03-14 17:30 陈朋 阅读(275) 评论(0) 推荐(0)

深拷贝与浅拷贝
摘要:1.深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。考虑以下写法intsource =int.MaxValue;//(1)初始化源对象为整数的最大值2,147,483,647intdest = source;//(2)赋值,内部执行深拷贝dest = 1024;//(3)对拷贝对象进行赋值source = 2048;//(4)对源对象进行赋值首先(2)中将source赋给dest,执行了深拷贝动作,其时dest和source的值是一样的 阅读全文

posted @ 2012-03-10 16:59 陈朋 阅读(239) 评论(0) 推荐(0)