02 2012 档案
摘要:墨菲定律主要内容是:事情如果有变坏的可能,不管这种可能性有多小,它总会发生。
阅读全文
摘要:声明时关键字 static extern virtual定义时关键字列表 inline
阅读全文
摘要:1、map insert 用于Map 拷贝的正确方式(end()不需要--) map a map b b.insert(a.begin(), a.end()) 其中倘若出现键值重复的数值,则仅插入不重复的. map insert 插入另一个map时 的效率 看了一下VC中内部实现,也只是取出两个迭代器中间值每个执行insert,所以也没有什么效率优化处理2、map中数据插入删除导致map中数据乱掉 可能是自己定义的key类型中的<操作符重载错误,map中的红黑树要求通过<比较操作可以唯一确定一组key的顺序而不受key传入(即insert)顺序影响。因为Map在查找操作中要求该顺序
阅读全文
摘要:赋值函数需要返回当前被赋值对象的引用(非常量引用)void test(){ int h; int & g = (h = 1);}上面操作并未告警,所以....
阅读全文
摘要:错误信息禁止 源码中 ·隐藏某类错误 /*lint -e725 */ -e(#) ·隐藏下一表达式中的某类错误 /*lint –e(534) */ printf(“it’s all”); !e# ·隐藏本行中的错误 /*lint !e534*/ printf(“it’s all”); -esym(#, Symbol) ·隐藏有关某符号的错误 /*lint –esym(534, printf)*/ printf(“it’s all”); -elib(#) ·隐藏头文件中的某类错误 /*lint –elib(129) */ #include “r0
阅读全文
摘要:按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。 一.基础知识:线程和进程 按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。 无...
阅读全文
摘要:1.微软针对这个问题发布了一个补丁包。下载地址 2.下载之后是一个源码包,解压,编译,生成一个FileTool.dll。 3.将生成的dll拷贝到VC安装目录的“\Common\MSDev98\AddIns\”文件夹下。 4.在AddIns目录下执行命令“regsvr32 File Tool.dll”手动注册dll文件。 5.运行VC6,右击工具栏,选择“自定义…>附加项和宏文件”,选择F...
阅读全文
摘要:函数简介 函数pthread_join用来等待一个线程的结束。函数原型为: extern int pthread_join (pthread_t__th, void **__thread_return); 第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止...
阅读全文
摘要:头文件 #include <pthread.h> 函数原型 pthread_t pthread_self(void); 函数作用:获得线程自身的ID。pthread_t的类型为unsigned long int,所以在打印的时候要使用%lu方式,否则将产生奇怪的结果。 功能 获取当前调用线程的 thread identifier(标识号).
阅读全文
摘要:函数简介pthread_create是UNIX环境创建线程函数头文件#include函数声明int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),...
阅读全文
摘要:BC3提供了使用脚本进行merge的方法,下面是个简单的例子!它让你可以做任意两个目录间的合并,对于版本控制工具的合并功能不强或需要同步两个目录之类的场景很合适! 我用它来解决SVN库内容之间合并的问题。 文件syncMerge.txt的内容(调用方法就是第二行注释符后面的语句,当然得先装BC3!): #svnserve -d -r d:\svn_repository #"C:\Progr...
阅读全文
摘要:为什么(3 个原因)以及如何使用硬(相对于软)CPU 亲和性(affinity) Eli Dow (emdow@us.ibm.com), 软件工程师, IBM Linux Test and Integration Center 简介: 了解 Linux® 2.6 调度器如何处理 CPU 亲和性(affinity)可以帮助您更好地设计用户空间的应用程序。软亲和性(affinity) 意味着进...
阅读全文
摘要:1. 在Linux下,如何确认是多核或多CPU: #cat /proc/cpuinfo 如果有多个类似以下的项目,则为多核或多CPU: processor : 0 ...... processor : 1 2. Linux下,如何看每个CPU的使用率: #top -d 1 之后按下1. 则显示多个CPU Cpu0 : 1.0%us, 3.0%sy, 0.0%ni, 9...
阅读全文
摘要:CPU亲合力就是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行.一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行.在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能.一个CPU的亲合力掩码用一个cpu_set_t结构体来表示一个CPU集合,下面的几个宏分别对这个掩码集进行操作: ·CPU_ZERO() 清空一个集合 ·CPU_SET()与CPU_CLR()分别对将一个给定的CPU号加到一个集合或者从一个集合中去掉. ·CPU_ISSET()检查一个CPU号是否在这个集合中.下面两个函数就是用来设置获取线程CPU
阅读全文
摘要:假设业务模型中耗费cpu的分四种类型,(1)网卡中断(2)1个处理网络收发包进程(3)耗费cpu的n个worker进程(4)其他不太耗费cpu的进程基于1中的 负载均衡是针对进程数,那么(1)(2)大部分时间会出现在cpu0上,(3)的n个进程会随着调度,平均到其他多个cpu上,(4)里的进程也是随着调度分配到各个cpu上;当发生网卡中断的时候,cpu被打断了,处理网卡中断,那么分配到cpu0上的worker进程肯定是运行不了的其他cpu上不是太耗费cpu的进程获得cpu时,就算它的时间片很短,它也是要执行的,那么这个时候,你的worker进程还是被影响到了;按照调度逻辑,一种非常恶劣的情况是
阅读全文
摘要:数组定义时长度可以使用变量不是很清楚了,自己写的是可以的,可能新版本编译器已经支持函数调用时动态分配数组空间了吧,使用g++是编译成功了。 动态长度的栈区数组是C99的特性。在C99之前,在栈区分配动态大小的内存块是使用alloca函数,不过由于不在堆中,分配出来的内存不需要释放滴int len;c
阅读全文
摘要:ACE_UNUSED_ARG() 防止不用的参数变量引起编译警告。ACE_READ_GUARDACE_READ_GUARD_RETURN 用于在进入函数时加锁,退出函数时自动解锁.其中RETURN,用于在加锁失败时返回错误值的. 其内部原理就是:ACE_READ_GUARD定义了一个对象,该对象中包含一个锁,其中构造函数中加锁,析构函数中解锁,所以使用ACE_READ_GUARD可能导致加锁时机不稳定,因为不同编译器/编译参数局部变量初始化时机会可能不同.
阅读全文
摘要:1. 新建用户: adduser [-u uid][-g group][-d home][-s shell] useradd username #默认添加一个同名的组 uersadd -g group_name user_name #创建用户的时候指定用户属于那个用户组 usermod –l new_user_name old_ user_name #修改用户名 passwd username #设置密码2. 删除用户 userdel [-r] user_name 【备注:】使用这条命令的时候,如果不添加”-r”的话,不会删除用户的宿主目录,,要是想删除的话可以手工的去删除该目录。但是你已经确
阅读全文
摘要:BUG:Visual Studio 6.0 中出现错误消息“Setup Was Unable to Create a DCOM User Account”(安装程序无法创建 DCOM 用户帐户)症状当您运行 Visual Studio 6.0 安装程序时,可能会收到下面的错误消息:Setup was unable to create a DCOM user account in order to register <path>\valec.exe此错误消息首先出现,并可能跟随第二条消息,指示安装程序已失败。原因Visual Studio Analyzer 是 Visual Stud
阅读全文
摘要:概述 C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。 下面结合问题分别进行阐述。
阅读全文