楼兰天边云 楼兰天边云
关注数: 18 粉丝数: 57 发帖数: 3,560 关注贴吧数: 265
常在河边走,终于碰上了严重的内存泄漏。。。 在此记录下,也提醒其他常在河边走的c/c++童鞋 服务端数据库接口,长连接数据库,客户端并发操作(查询)超过60多个并发就会报如下错误 in UnionCheckError:: --- db2 error report begin --- 20110402105607::[UserErr][5030014][-10009] SQLSTATE: 57011 20110402105607::[UserErr][5030014][-10009] NATIVE: -954 20110402105607::[UserErr][5030014][-10009] MESSAGE: [IBM][CLI Driver][DB2/AIX64] SQL0954C   Not enough storage is available in the application heap to process the statement.   SQLSTATE=57011 20110402105607::[UserErr][5030014][-10009] in UnionCheckError:: --- db2 error report End --- google后说是DB2数据库设置的应用程序堆太小 $ db2 get db cfg for cmbkmcdb | grep APPLHEAPSZ Default application heap (4KB)          (APPLHEAPSZ) = 256 APPLHEAPSZ为256, $ db2 update db cfg for CMBKMCDB using APPLHEAPSZ 4096 改成4096后仍同样错误。 之前的接口使用DB2 ESQL写的,由于要bind,客户觉得麻烦让我们改成CLI的,服务端结构应该没什么问题,原来ESQL的接口我们测时服务端能承受几千并发也不会报SQL0954C SQLSTATE=57011 最初没有怀疑是内存泄漏,因为种种迹象都表明是数据库问题。 这个问题很可恶,造成服务端无法操作数据库提供服务,而且服务端程序也没有core 。。。 然后一点点小量的测试,无意中看了下程序的内存占用,才发现每测试一次内存占用就涨一点,这才缓然大悟。。。然后从上午开始手工检查代码(因为AIX上似乎没有顺手的检查内存泄漏的工具,valgrind要依赖一大堆东西没有时间折腾。。。) 。。。 。。。 。。。 最终在 int UnionFreeStmtHandle() {     //SQLFreeHandle(SQL_HANDLE_STMT, stmt_handle);     if (SQL_NULL_HSTMT == stmt_handle || SQL_NULL_HSTMT == stmt_handle1)         return 0;     ……     在此执行真正的释放动作     …… } UnionFreeStmtHandle是释放stmt_handle的并不是释放stmt_handle1的,释放stmt_handle的时候stmt_handle1一般都是SQL_NULL_HSTMT,然后没有释放stmt_handle就return 0;,从此爆发。。。
老大叫出的几个C面试题,给大家练练手吧。。。 C基础 1. 结构体赋值的方法: 2. 有一个常量字符串char *str1 = “Hello”;请写出为其动态分配内存空间的语句(使用纯C),如果是char *str1 = “abcdefghijkl”;呢? 3. 返回数组指针的函数指针。 请写出如下声明:一个函数指针,它指向的函数有三个整形参数,该函数返回一个指向大小为20的字符数组指针。 4. 描述如下声明: int(*((*thisdeclare)[10]))(int a, int b, int (*)(char *)); 5. 编译时限制一般指什么?和运行时限制有什么区别?运行时限制又是指那些? 6. K&RC和ANSI C有什么区别?典型的函数形参的申明形式的区别?混用的后果。 7. ANSIC中的#pragma是什么? 8. 数组和指针 下面的写法是否有错?为何? 文件1: int mango[100]; 文件2: extern int *mango; 9. API和ABI的区别? 动态链接主要目的是什么? 10. cc命令行指定一个宏定义的方法? 11. Linux下可执行文件格式是什么?Windows下呢? 12. 代码 char arr[3][128]; … int fun_1(char **p) { … } func_1(arr); 是否有问题?如果有问题如何改正? 13. 函数返回数组的方法,请按你的方法写一个简单的函数。如何使用返回的数组? 14. 请写出如下程序的运行结果,并解释之。 #include<stdio.h> int main(void) {         int i;         int a[10];         for (i = 0; i <= 10; ++i) {                 a[i] = 0;                 printf("%d\n", i);         }         return 0; }
传奇编程高手 Bill Joy Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBNTCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时BBN和DARPA签了巨额合同开发TCP/IPStack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。
马云:“我不会在网络游戏投一分钱,我不想看到我的儿子在我做的游 如果说当初他说的回报是指现在的财富的话,这个回报的确很惊人。而我得到的回报是,我成为了阿里巴巴中国事业部总经理。正在这个时候,家里又后院起火———我们开始管不住儿子了。   儿子,应该也算是阿里巴巴的“牺牲品”。他1992年出生,跟我们的事业同龄。那时,我们家一挤就是30多号人开会,满屋子烟雾缭绕像个毒气室,儿子关在房里不能出来。   吃饭的时候跟我们一起吃工作餐,这样一来,儿子就长得越来越像他爸爸,瘦骨伶仃,像根火柴棍支起一个大脑袋。后来我们越来越忙,儿子4岁入托,一扔就是5天,周末才接回家来。   如今终于算是大功告成了,儿子也10来岁了。或许是受了马云的熏陶,他对网络格外有兴趣,很快就学会了玩网络游戏,上瘾了,跟着同学泡在网吧舍不得回家。马云对儿子展开了说服教育,可在12岁的儿子面前,能言善辩的他败下阵来。儿子只回了一句话:“你们都不在家,我回来了也是一个人无聊,还不如呆在网吧里!”   马云这次真急了,当天晚上就跟我商量:“你辞职吧,我们家现在比阿里巴巴更需要你。你离开阿里巴巴,少的只是一份薪水;可你不回家,儿子将来变坏了,多少钱都拉不回来。儿子跟钱,挑一样,你要哪个?”看儿子变成这样,我也着急,但是我心里却不平衡:刚结婚的时候我本来就是打算做个贤妻良母的,结果被他“骗”进了阿里巴巴;好不容易现在功成名就了,又让我辞职回家做全职太太。他拿我当什么?一颗棋子!      我辞职以后,对儿子的游戏沉迷阻击正式拉开,第一枪是马云打响的。那时正是暑假,他给儿子200块钱,让他去和同学玩电脑游戏,玩上三天三夜再回来,但回来的时候必须回答一个问题———找出一个玩游戏的好处。过了三天,儿子回来了,先猛吃了一顿又大睡了一觉,这才去汇报心得:“又累又困又饿,身上哪儿都不舒服,钱花光了,但是没想到什么好处。”“那你还玩?还玩得舍不得回家?”儿子没话说了。加上我的看管,儿子于是慢慢就淡出了网络游戏。   那时正是网络游戏圈钱的时候,盛大、网易都推出了新游戏,按照马云的作风,他是不会放过任何赚钱的机会的。但是他硬是没有去做网络游戏,他在董事会上这么说:“我不会在网络游戏投一分钱,我不想看到我的儿子在我做的游戏里面沉迷!”   儿子从小学到初中,我没接送过他,都是自己背个书包去挤公共汽车。现在,辞职回家的我每天早上做好早饭,和儿子一起吃,再开车送他去学校。接着,我马上去农贸市场买菜,回家以后两荤一素一汤地搭配好,配上餐后水果,用一个分成三层的小食盒装着,然后去儿子的学校门口等他中午放学。   我辞职回家半年后,儿子的成绩在班上升了17个位置。班主任也说他不仅学习提高了,就连在班上的人缘都变好了,他越来越开朗、爱笑、宽容,从以前的内向学生变成了一个阳光少年! 马云:“我不会在网络游戏投一分钱,我不想看到我的儿子在我做的游戏里面沉迷!”
1 下一页