程序感悟
文章平均质量分 67
BlueSoal
这个作者很懒,什么都没留下…
展开
-
编程心得 ---- 内存管理
编程心得 ---- 内存管理 在编写内存管理方面的程序时,遇到需要分配大块的内存空间,然后将该大内存空间分成若干等长的小内存块。程序中需要对这些小块进行读写和删除,其中每个小内存块可以分配给不同的使用者。那么如何快速找到没有分配的内存块以及收回不使用的内存块是性能瓶颈的关键所在。 很显然,简单的可以使用bool数组来标记每块小内存块的使用情况,但是在查找没有分配的内存块时只能通过for原创 2005-08-09 11:49:00 · 2169 阅读 · 0 评论 -
英文大小写引起的性能问题
英文大小写引起的性能问题 最近在做的一个项目中要实现字母大小写无关比较,很自然的使用标准c库中的函数tolower(),但是由于使用次数很多,对输入的字符数组每个都要使用一次,经过性能测试,发现使用tolower函数的性能只有不使用该函数的的三分之一。 察看了一下tolower函数的源码,发现其对MT有加锁互斥操作,而做的项目正后生成的是MT库,因此性能上会有问题。因此参考tolo原创 2006-09-16 13:27:00 · 3082 阅读 · 1 评论 -
Windows多线程技术研究(四):跨平台线程API
Windows多线程技术研究(四):跨平台线程API 线程是跟操作系统有关系的,所以Windows和Linux下线程的API有些差别,为了实现线程跨平台,于是整理了下面两个文件,Thread.h和Thread.cpp。用来实现跨平台线程API。 TestMain.cpp文件是测试跨平原创 2006-03-23 21:02:00 · 2907 阅读 · 0 评论 -
Windows多线程技术研究(三):线程API
Windows多线程技术研究(三):线程API 介绍完线程的基本概念后,接下来描述在windows下如何创建线程,以及相应的使用多线程一些基本API。 使用CreateThread()函数来创建一个线程。其函数原型为: HANDLE CreateThread ( LPSECURITY_ATTRIBUTES原创 2006-03-23 20:41:00 · 4697 阅读 · 0 评论 -
unsigned vs. signed in C/C++
unsigned vs. signed in C/C++ 在使用C/C++编程时,无符号数据类型和有符号数据类型是肯定会混合使用的。如DWORD和int数据类型。一般在使用for循环时,或者if判断时,如果编程习惯不好或者稍微马虎时,就会出现问题。如下例: DWORD i = 0; int j = -1; if (j printf("all right!/原创 2005-09-19 10:58:00 · 1770 阅读 · 0 评论 -
编程随记 ---- 拼包程序(四)
编程随记 ---- 拼包程序(四) 正当自我感觉很好的时候,老大让我测试一下主干网捕获下来的数据。一测之后,才发觉自己写的程序根本无法使用。捕获的数据少的可怜,甚至几乎为零。测试使我彻底冷静下来。原来拼包程序并不是如我想象中的那么简单。其复杂度来源于拼包程序的应用环境----主干网。 主干网的流量达到了G级别的量级。也就是说每秒钟至少有几G的流量。而其中30%的数据是有效数据,也就原创 2005-09-12 20:04:00 · 3315 阅读 · 2 评论 -
编程随记 ---- 拼包程序(三)
编程随记 ---- 拼包程序(三) 显然拼包程序主要考虑性能和正确性。显然正确性应该放在第一位,所以先保证程序的正确性,再在此基础上考虑怎样提高性能。 根据上面所描述的,基本上就能把拼包程序写出来了。为每个socket保留一个缓存区,显然每个连接应该有两个缓存区,一个方向一个。每次收到一个数据包:1、判断是否是现有保存的连接,是转2;否转32、状态为接收数据:察看其标志位,如果是SYN原创 2005-09-08 21:25:00 · 3156 阅读 · 0 评论 -
编程随记 ---- 拼包程序(二)
编程随记 ---- 拼包程序(二) 找来了Richard Stevens的经典著作《TCP/IP祥解 卷1:协议》仔细的翻阅TCP和IP协议部分。从而发现截获到的数据包前面包含若干头:wpcap Header + Ethernet Header + IP Header + TCP Header + Data前面已经分析了wpcap的头部。由于只需要分析TCP数据包,所以以太网包头部只需解析一原创 2005-09-04 19:40:00 · 3189 阅读 · 0 评论 -
编程随记 ---- 拼包程序(一)
编程随记 ---- 拼包程序(一) 六月中旬的某一天,老大的一封邮件把我招进了实验室,开始研究和项目为主的实验室生活。 刚进去,彼此互不熟悉。老大就让我编写一个拼包程序,以此来瞧瞧我的编程能力。给我讲了功能之后,还给了我一个工程框架。让我以此作为基础和环境来coding。 为了给我一些压力,老大还给了一个性能要求,每秒处理50MB数据包。而且不能用winpcap,只能自己分析包,原创 2005-08-19 15:02:00 · 2771 阅读 · 0 评论 -
atoi函数不同平台的实现问题
atoi函数不同平台的实现问题 工程中要通过文件得到数值,想当然的就使用了atoi这个函数。在Windows下使用,没什么问题。但是一移植到Linux下,问题就出来了,发现得到的数总是不对劲。用gdb跟踪一下,发现大于2147483647的数均返回2147483647这个值。又在Windows下debug了一下,发现得到的数值正常,能够得到大于2147483647的数。 这就比较有原创 2006-06-04 18:08:00 · 4705 阅读 · 0 评论