C/C++
文章平均质量分 53
江东橘子
这个作者很懒,什么都没留下…
展开
-
国际:什么是程序员的优秀品质
国际:什么是程序员的优秀品质?2008.10.17 来自:CSDN 共有评论(85)条 发表评论 收藏到我的网摘] -->收藏 使用一种特殊的编程语言、编程很牛,单单靠这个并不能说一名程序员/开发者就是优秀程序员/开发者。show_ads_zone(13); 【CSDN编译】使用转载 2008-10-19 00:17:00 · 313 阅读 · 0 评论 -
volatile 和 sig_atomic_tlinux
volatile 和 sig_atomic_tlinux相关 2008-10-07 12:58:56 阅读39 评论0 字号:大中小 订阅 volatile 和 sig_atomic_tvolatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,每次使用时都需要去内存里重新读取它的值,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编原创 2011-06-02 17:01:00 · 558 阅读 · 0 评论 -
sigterm sigint sigkill 区别
我看网上应该有不少搜索这个区别的问题,但是回答的都不全面,其中sigterm与sigint尤其有一点区别比较重要,但大都没有提及,今天我就遇到了这个问题,纠结了20分钟才搞明白咋回事。 首先,对于说这几个信号都是终止程序运行的说法不太准确,因为程序收到信号后,如果不对信号处理,就会导致程序退出,但如果程序捕获信号进行处理,按照它的逻辑,它是不一定会退出的。 在这三个信号中,sigkill是不能被捕获的,程序收到这个信号后,一定会退出。这就是kill -9一定能保证将程序杀死的原因。 下面说一下sigterm转载 2011-06-01 15:40:00 · 2251 阅读 · 0 评论 -
sigprocmask理解
/*int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); 功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。 用法: #include int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); 参数: how:用于指定信号修改的方式,可能原创 2011-06-03 13:37:00 · 751 阅读 · 0 评论 -
sigsuspend的理解
/* sigsuspend的使用 sigprocmask和pause连起来用可以实现sigsuspend的功能;但是还是使用sigsuspend函数,应为sigsuspend是原子操作 */ #include #include #include #include volatile sig_atomic_t quitflag; static void sig_handler(int sign原创 2011-06-03 13:38:00 · 2519 阅读 · 0 评论 -
一个进程仅存在给定类型的一个挂起信号,同一进程同样类型的其他信号不被排队
任何时候,一个进程仅存在给定类型的一个挂起信号,同一进程同样类型的其他信号不被排队,只被简单的丢弃:理解--即使连续发送SIGQUIT信号,进程也只有处理一个SIGQUIT信号。 Please read the picture; It is screen shot from book"Linux kernal"原创 2011-06-03 15:47:00 · 499 阅读 · 0 评论 -
linux 读书笔记
1:管道:×管道可以在同组进程通讯。如果要在不同组进程间用管道通讯,那么要用FIFO。 --数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 --如果没有读进程,那么管道的写操作就会失败 --管道写端和读端的声明:int pipe_fd[2]; pipe()的调用必须在fork之前 --管道的读是在文件的原创 2011-06-09 10:41:00 · 355 阅读 · 0 评论 -
Unix网络编程 提高 TCP I/O 性能的3点经验
用John Nagle算法最小化报文传输延时通过 TCP socket 进行通信时,数据都拆分成了数据块,放到一个TCP报文中为了达到最好的性能,总希望尽可能多的可用数据来填充每个报文已达到为最大报文段长度(maximum segment size 或MSS)。当没有足够的数据来填充 payload 时,TCP 就会采用 Nagle 算法自动将一些小的缓冲区连接到一个报文段中。这样可以通过最小化所原创 2011-06-09 16:09:00 · 690 阅读 · 0 评论 -
linux 读书笔记
1:管道:×管道可以在同组进程通讯。如果要在不同组进程间用管道通讯,那么要用FIFO。 --数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 --如果没有读进程,那么管道的写操作就会失败 --管道写端和读端的声明:int pipe_fd[2]; pipe()的调用必须在fork之前 --管道的读是在文件的原创 2011-06-09 10:42:00 · 385 阅读 · 0 评论 -
linux 读书笔记
1:管道:×管道可以在同组进程通讯。如果要在不同组进程间用管道通讯,那么要用FIFO。 --数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 --如果没有读进程,那么管道的写操作就会失败 --管道写端和读端的声明:int pipe_fd[2]; pipe()的调用必须在fork之前 --管道的读是在文件的原创 2011-06-09 10:42:00 · 319 阅读 · 0 评论 -
Linux线程池
/*解析:这段代码创建了三个线程,10个任务。线程池的结构是CThread_pool,任务的结构是worker,他们都是一个连表。 程序先用pool_init创建拉三个线程。然后每个线程执行函数thread_routine。thread_routine在运行到pthread_cond_wait(&(pool->queue_ready),&(pool->queue_lock));时,等待共享变量被激原创 2011-06-13 15:59:00 · 827 阅读 · 0 评论 -
Linux线程池
/*解析:这段代码创建了三个线程,10个任务。线程池的结构是CThread_pool,任务的结构是worker,他们都是一个连表。 程序先用pool_init创建拉三个线程。然后每个线程执行函数thread_routine。thread_routine在运行到pthread_cond_wait(&(pool->queue_ready),&(pool->queue_lock));时,等待共享变量被激原创 2011-06-13 15:59:00 · 576 阅读 · 0 评论 -
INADDR_ANY的理解
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。 一般来说,在各个系统中均定义成为0值。例如MontiVista Linux中在/usr/inc原创 2011-07-05 15:40:20 · 852 阅读 · 0 评论 -
TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子)
TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子) 每个文件或套接口都有一个访问计数,该访问计数在文件表项中维护,它表示当前指向该文件或套接口的打开的描述字个数。 每个文件,套接口都有一个访问计数器,表示当前指向该文件或套接口的打开的原创 2011-07-05 14:28:44 · 476 阅读 · 0 评论 -
如果你需要对对话框上的一个按钮进行鼠标停靠提示
如果你需要对对话框上的一个按钮进行鼠标停靠提示,那么这么做:1. 在这个对话框的定义部分添加黑体部分:class CMyDlg : public CDialog{……CToolTipCtrl m_tt;……} 2. 在这个对话框的OnInitDialog()函数里,添加黑体部分:BOOL CMyDlg::OnInitDialog(){转载 2008-12-28 21:08:00 · 496 阅读 · 0 评论 -
RichEdit使用大全
RichEdit使用大全 一.常见问题a.可以编译,不能执行的AfxInitRichEdit();b.升级默认的Riched版本(默认的有一些bug),如可在InitInstance中添加LoadLibrary("RICHED20.DLL")最后注意 FreeLibrary 如果是CRichEditView基类的可用BOOL CXXXXXXView::PreCreate转载 2008-12-04 23:07:00 · 617 阅读 · 0 评论 -
用了CFileDialog后File 写文件不能写进去
方法一:FILE 文件打开路径设为绝对路径方法二:setcurrentpath设置路径原创 2008-10-22 22:10:00 · 471 阅读 · 0 评论 -
常见的link问题
VC常见LINK处理方法2008-09-04 12:25在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(原创 2008-10-23 19:38:00 · 592 阅读 · 0 评论 -
VC中的TRACE宏:
VC中的TRACE宏: TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调式也在RELEASE的时候减少代码量。 使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同样还存在TRACE0原创 2008-10-23 19:41:00 · 568 阅读 · 0 评论 -
From 《visual C++ 6.0开发工具与调试》
From 《visual C++ 6.0开发工具与调试》 1、 如何快速地规范代码缩进格式 选中所需要规范的代码,按shift+F8 2、 如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimization原创 2008-10-27 20:37:00 · 1138 阅读 · 1 评论 -
Visual C++ 编译器选项
Visual C++ 编译器选项 选项 作用 /O1 创建小代码 /O2 创建快速代码 /Oa 假设没有别名 /Ob 控制内联展开 /Od 禁用优化 /Og 使用全局优化 /Oi 生成内部函数 /Op 改善浮点数一致性转载 2008-10-27 21:13:00 · 492 阅读 · 0 评论 -
msdn关于Visual C++ 编译器选项的说明
msdn关于Visual C++ 编译器选项的说明:这些选项选择单线程或多线程运行时例程,指示多线程模块是否为 DLL,并选择运行时库的发布版本或调试版本。选项说明/MD定义 _MT 和 _DLL 以便同时从标准 .h 文件中选择运行时例程的多线程特定版本和 DLL 特定版本。此选项还使编译器将库名 MSVCRT.lib 放入 .obj 文件中。 用此选原创 2008-10-27 20:49:00 · 670 阅读 · 0 评论 -
Visual Assist使用详细说明
Visual Assist使用详细说明 var OsObject = ""; if(navigator.userAgent.indexOf("MSIE")>0) { document.write(""); } if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){转载 2008-10-13 19:46:00 · 5401 阅读 · 0 评论 -
VC使用技巧
VC使用技巧(一) Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 1:使用vc开发项目时,常会遇到这种情况: 即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示重新编译连接一次,非常讨厌。这是因为出现了未来文件的缘故。 解决方法:转载 2008-10-14 00:03:00 · 495 阅读 · 0 评论 -
/D "_WINDOWS", /D "_CONSOLE"
1。编译通过,链接报错的问题从报错信息来看,你的入口点函数是WinMain(),但是链接器却在找main(),所以可能是工程的类型建错了。解决办法很简单:打开project->settings, 选择c/c++标签,看下最后一个编辑框的编译选项有没有/D "_CONSOLE"或者/D "_WINDOWS",如果有就去掉。这个原因是不同的工程类型的入口点函数名字不一样。console是main, 而原创 2008-10-27 21:03:00 · 1761 阅读 · 0 评论 -
MFC Map 许多警告
在slt头文件前加上#pragma war1ning(disable: 4786)例如#pragma warning(disable: 4786)#include原创 2008-10-15 18:25:00 · 328 阅读 · 0 评论 -
条件断点
在平时使用编程中我们调试程序一般都要设置断点进行调试。但是设置一般的断点难以调试一些循环次数比较大的代码。从网上看到一篇文章《VC调试入门》再结合自己的实践,懂得了如何设置条件断点。下面我以例子来说明:在下面一段代码中:int sum = 0;for (int i = 0;i { for(int j = 0;j {原创 2008-11-04 21:06:00 · 431 阅读 · 0 评论 -
教你认识动态链接库DLL文件
教你认识动态链接库DLL文件 DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用转载 2008-12-29 18:17:00 · 575 阅读 · 0 评论 -
VC调试篇
难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下:VC调试篇设置为了调试一个程序,首先必须使程序中包含调试信息。一般转载 2008-11-06 17:56:00 · 427 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式原创 2011-07-07 22:12:54 · 264 阅读 · 0 评论