编程知识及技巧
文章平均质量分 83
AstrayLinux
菜鸟,菜鸟!
展开
-
cout 格式化输出
cout 格式化输出将 cout 的 flag 保存到变量, 以便修改后的恢复ostream::fmtflags old=cout.flag() ;//无参将返回当前flag 值cout.flag(old) ; // 恢复到原先保存的值将 bool 值以 literals 输出cout "numeric:"true"or"falseendl;转载 2011-11-19 19:32:21 · 714 阅读 · 0 评论 -
c++ 虚函数机制 效率问题
今天在c++坛子里瞎逛,看到精华坛里在讨论“为什么虚函数效率低”的问题,××楼主回答面试官说“跟cpu流水线执行效率有关” ××某人回答“因为虚函数需要一次间接的寻址... 而一般的函数可以在编译时定位到函数的地址,虚函数(动态类型调用)是要根据某个指针定位到函数的地址. ” ×ד虚函数有个虚函数表,而且会传一个index索引~!会间接寻址!”×ד流水线执行的话,转载 2012-12-18 21:18:53 · 1056 阅读 · 0 评论 -
遇到多线程问题,关于MyDownload
最近用一个网上的下载类,MyDownload里面有多线程下载的部分,一开始开三个线程,偶尔会出现崩溃。下面是下载线程UINT CHttpGet::ThreadDownLoad(void* pParam){ CHttpSect *pInfo=(CHttpSect*)pParam; SOCKET hSocket; if(pInfo->bProxyMode){ hSocket=C原创 2012-12-10 18:51:07 · 1049 阅读 · 0 评论 -
string大小写转换函数
最近被多线程+野指针折磨ING…… C++中没有string直接转换大小写的函数,需要自己实现。一般来讲,可以用stl的algorithm实现:#include #include #include #include using namespace std;int main(){ string s = "ddkfjsldjl";转载 2012-11-21 20:24:15 · 2360 阅读 · 0 评论 -
五种应该避免的代码注释
在酷壳,有很多文章都提到了代码注释,如:《十条不错的编程观点》、《优质代码的十诫》、《整洁代码的4个提示》、《惹恼程序员的十件事》等等。今天,某国外的程序员在这里列举五种应该避免的程序注释,我觉得比较有道理,但我觉得有少数几个观点也并不绝对。所以,我把原文的这五种应该避免的程序注释罗列在下面,并放上原作者和我的个人观点作为比较。希望对大家有用。一、自恋型注释(注:原文为Proud,我觉得“转载 2012-07-15 18:59:34 · 877 阅读 · 1 评论 -
6个变态的C语言Hello World程序
下面的六个程序片段主要完成这些事情:输出Hello, World 混乱C语言的源代码 下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello1.c #define _________ } #define ________putchar #define _______ main #define _(a转载 2012-07-15 18:48:11 · 1130 阅读 · 2 评论 -
如何加密/混乱C源代码
之前发表了《6个变态的C语言Hello World程序》[酷壳链接] [CSDN链接],主要是是像大家展示了一些C语言的变态玩法。也向大家展示了一下程序是可以写得让人看不懂的,在那篇文章中,可以看到很多人的留言,很多人都觉得很好玩,是的,那本来是用来供朋友们“消遣作乐”,供娱乐娱东而已,不必太过认真。不过,通过这种极端的写法,大家可以看到源代码都可以写得那么复杂难懂的。大家也许在赞叹之余一笑了转载 2012-07-15 19:06:02 · 892 阅读 · 0 评论 -
malloc申请大内存报错分析
每个进程会有4G的虚拟地址空间, malloc得到的的地址都是虚拟地址, 并且当malloc的时候, 操作系统并不会将实际的内存分配给进程的, 所以malloc只会占用进程自身的虚拟地址空间。我以前也做过申请内存的测试,并且写了一个短文:操作系统: Redhat Linux AS5 32bit服务器内存: 4G服务器类型: I32最近写搜索引擎, 因为创建索引需要大量的转载 2012-06-20 09:03:57 · 2024 阅读 · 0 评论 -
例解 autoconf 和 automake 生成 Makefile 文件
引子无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。但是如果通过查阅ma转载 2012-03-19 10:41:08 · 505 阅读 · 0 评论 -
各种数转换成字符串
关键字:float转化成字符串double转化成字符串int 转化成字符串貌似不少人都不清楚这个问题。。。。今天去百度知道里逛,发觉有个人问怎么把浮点数转化成字符串,居然4个人的回答都不对。。。。。为了避免杯具继续,在这里说明一下可行的方案吧。。。一个是printf的字符串版本。本来printf是格式化打印,不过许多人都不明白“格式化”具体是什么意思-转载 2012-03-06 10:45:34 · 713 阅读 · 0 评论 -
perror简介
表头文件头文件 #include #include//注意 不可以掉了这个头文件,perror是包含在这个文件里的//perror表头文件完善版定义函数 void perror(const char *s); perror ("open_port");函数说明 perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出转载 2012-03-05 11:18:05 · 1215 阅读 · 0 评论 -
Linux C 动态内存分配 malloc及相关内容
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte): 该函转载 2012-02-28 22:28:08 · 1064 阅读 · 0 评论 -
GNU as汇编简介 (AT&T语法)
一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地转载 2012-02-28 12:51:28 · 9283 阅读 · 3 评论 -
as86汇编语言
名称 as86 - as86-8086..80386处理器的汇编程序概要格式 as86 [-0123agjuw] [-lm[list]] [-n name] [-o obj] [-b[bin]] [-s sym] [-t textseg] src as86_encap prog.s prog.v [prefix_] [as86 options]描述 as86是转载 2012-02-28 12:46:57 · 5939 阅读 · 2 评论 -
epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2012-02-22 08:41:22 · 517 阅读 · 0 评论 -
设置recv的超时
在TCP连接中,recv等函数默认为阻塞模式(block),即直到有数据到来之前函数不会返回,而我们有时则需要一种超时机制使其在一定时间后返回而不管是否有数据到来,这里我们就会用到setsockopt()函数: int setsockopt(int s, int level, int optname, void* optval, socklen_t* optlen); 这里转载 2013-03-01 09:37:01 · 19651 阅读 · 0 评论