12 2011 档案
摘要:来源: iteye发布时间: 2011-12-29 09:38原文链接 Brad Feld 的一篇文章 The Rise of Developeronomics 中提到了“10倍效率的开发者(10x developer)”的概念(伟大的开发者的效率往往比一般的开发者高很多,而不只是一点点),Adam Loving 在读了之后受到启发,并向多位大牛(Ben Sharpe、Collin Watson 和 Jonathan Locke)询问如何成为“10倍效率的开发者”,最后得到了以下的答案。 1. 只做需要做的工作Only do the work that needs to be done使用..
阅读全文
摘要:线程终止的三种方式:1. 线程只是从启动例程中返回,返回值是线程的退出码;2. 线程调用了pthread_exit函数;3. 线程可以北同一进程中的其他线程取消。**************************************************************转载自:http://hi.baidu.com/ganss/blog/item/ff7799f97a87de58242df24c.html1 线程取消的定义一般情况下,线程在其主体函数退出的时候会自动终止,但同时也可以因为接收到另一个线程发来的终止(取消)请求而强制终止。2 线程取消的语义1. 线程取消的方法是向
阅读全文
摘要:来源《鸟哥的linux私房菜》top:动态观察程序的变化?[root@linux ~]# top [-d] | top [-bnp] 参数: -d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒; -b :以批次的方式执行 top ,还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为档案。 -n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。 -p :指定某些个 PID 来进行观察监测而已。 在 top 执行过程当中可以使用的按键指令: ? :显示在 top 当中可以输入的按键指令; P :以 CPU 的使用资源排序显示; M :以 Memor
阅读全文
摘要:C++的精英化趋势与两个关键缺陷分类: 理想流 C++ 毕业生 2011-12-14 精英化趋势C++是一门引起无数争议的语言。眼下最常听到的声音则是C++将趋于没落,会被某某语言取代。我很怀疑这种论调的起点是商业宣传,C++的真实趋势应该是越来越倾向于精英化。精英化是指在可用可不用C++的领域中,C++将逐渐退出,而所有剩下必须用C++的领域通常都是附加值比较高,难度较高的领域,比如:操作系统,数据库,大型网站后端等。这一过程造成的现象就是在TIOBE上,C++的份额逐步下降。但就像经济上挤泡沫一样,这倒不是C++衰落了,而是原本人们对C++的期望过高了。早在1995年,美国的调查机构就曾经
阅读全文
摘要:我们编程时常常想统计一下自己写过多少行代码了,这时候该怎么办呢?虽然Vim等编辑器中有代码行数显示,但是不能一个个打开然后加起来吧?这个时候需要用到wc这个工具,呵呵,别看名字不怎么样,功能可是很强大的哦。用法:当前目录下:wc -l *.c *.h当前目录及子目录:find . -name *.c |xargs wc -lfind . -name *.cpp | xargs wc -lfind . -name *.h |xargs wc -l转自:http://www.cnblogs.com/hoys/archive/2011/06/03/2071923.html
阅读全文
摘要:Shellcoding for Linux and Windows Tutorialhttp://www.vividmachines.com/shellcode/shellcode.htmlhttp://www.safemode.org/files/zillion/shellcode/doc/Writing_shellcode.html
阅读全文
摘要:linux下的三种可执行文件格式的比较本 文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF 文件加载过程以揭示可执行文件内容与加载运行操作之间的关系。随后依此讨论了此三种文件格式,并着重讨论 ELF 文件的动态连接机制,其间也穿插了对各种文件格式优缺点的评
阅读全文
摘要:作者: guolin6315发布时间: 2011-12-07 14:01原文链接 1、 分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2、 一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向..
阅读全文
摘要:首先说明一下头文件、库文件、库函数这三个概念的区别。头文件:即后缀为.h的文件,在其中对变量和函数原型进行了声明。库文件:提供有库函数的文件。一种是静态连接的后缀为.a的文件,在程序编译时连接;一种是共享库,文件后缀为.so,在程序运行的时候才进行连接。库函数:在库文件里提供的函数。下面,我们用一个实例介绍一下怎么样创建库文件以及怎么样应用库文件。文件1:mymath.h#ifndefMYMATH_H#defineMYMATH_Hintxiangjia(inta,intb);intxiangjia(inta,intb);#endif文件2:xiangjia.cintxiangjia(inta,
阅读全文
摘要:RHEL对于我们来说最大的好处是,RedHat有较为完整严格的QA测试过程,可以保证发行版质量;与硬件厂商有紧密的合作关系,可以保证硬件兼容性;有一批内核Hacker,可以保证新问题不断得到解决。自从用了RHEL,腰不酸了,腿不疼了,一口气能上机房五楼——相比2003年那时候用的Red Hat Linux6.2/7.3,现在OS层面的问题已经很少让我们头痛了,不是么? 至于选择服务器Linux发行版的替代品,我认为,首先得明确我们的标准。当下Linux发行版种类繁多,就像满地奔走的plmm们,你选哪一个做gf比较合适,总得有个标准才好筛选。若是随便抓一个来,难保将来不会后患无穷。 言归正传,.
阅读全文
摘要:http://library.linode.com/lamp-guides/debian-6-squeeze
阅读全文
摘要:UNIX 家族总是为用户提供了丰富的工具。UNIX 是一个工具财宝箱,有了这些工具,您不仅可以完成具有创造性的工作,还可以在深入研究该操作系统的同时得到教育和娱乐。strace(用来跟踪任何程序的系统调用)和 GDB 调试工具(用来在受控的环境中运行程序的功能齐全的调试工具)是实现这个目标的两个有价值的工具。UNIX 的设计由大量的函数调用(称为系统调用)组成,其中包括一些简单的任务,如在屏幕上显示字符串来设置任务优先级。所有的 UNIX 程序都是通过调用操作系统提供的这些底层服务来完成它们的任务,使用 strace 工具,您可以清楚地看到这些调用过程及其使用的参数。通过这种方式,您可以操作这
阅读全文
摘要:本文详细讲述linux下的strace命令的用法。strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。 下面记录几个常用 option . 1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程 2 -o xxx.txt 输出到某个文件。 3 -e execve 只记录 execve 这类系统调用 ————————————————— 进程无法启动,软件运行速度突然变慢,程序的”SegmentFault...
阅读全文
摘要:你是否有一个多年都不碰一碰的网站?或者你是否完全避免了互联网的花车?好,现在又到了你踏上国际旅程的时候了——或者是第一次。以下是原因所在: 1)客户群: 年轻的成年人和未成年人在互联网上消耗的时间比他们看电视的时间还多。而且值得注意的是,当他们在寻找一种产品或者一项服务时他们更多地借助互联网而不是黄页。工程师和其他的商界人士在研究开发产品时将互联网作为一个重要的信息源。无论你视哪一个群体作为你的目标客户,你都需要出现在互联网上。 2) 实用性: 网站每周七天,每天24小时都可以使用,因此当你的潜在客户需要时你的信息总在网络上。 3) 成本效益高:创建和维护一个网站只需要相对较低的费...
阅读全文
摘要:用GDB调试程序(10)──查看运行时数据(1)在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print <expr> print /<f> <expr><expr>是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),<f>是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。 一、表达式print和许多GDB的命令一样,可以接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,既然
阅读全文
摘要:一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。2)可重入函数:不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。如果必须访问全局变量,记住利用互斥信号量来保护全局
阅读全文
摘要:linux多线程编程的七条准则准则1:不依赖于信号收发的设计。原文。给其它进程以及自己发送异步信号并改变处理流程的设计不要做。不要把信号和线程一起使用,这将使得程序动作的预测和调试变得困难。准则2:要知道信号处理函数中可以做哪些处理。原文。在sigaction()函数登记的信号处理函数中可以做的处理是被严格限定的。仅允许:局部变量的相关处理volatile sig_atomic_t类型的全局变量操作调用异步信号安全的相关函数volatile提示编译器对此变量不要进行优化处理,因为优化后代码可能导致程序语句的顺序混乱。sig_atomic_t类型变量表示只需要一条机器指令就可以执行完成,这样保证
阅读全文
摘要:Valgrind 使用简单说明--检查内存泄露调不尽的内存泄露,用不完的Valgrind(一个介绍程序调试的精彩讲解:http://www.ibm.com/developerworks/cn/linux/l-pow-debug/)Valgrind 介绍 Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的
阅读全文
摘要:应用 Valgrind 发现 Linux 程序的内存问题杨 经 (cdlyangj@cn.ibm.com), 软件工程师, IBM杨经,他的技术兴趣包括自动化测试与linux系统管理。目前是IBM中国系统与技术实验室(CSTL)的软件工程师,从事中小型企业(SME)服务器的测试工作,可以通过cdlyangj@cn.ibm.com与他联系。简介:如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在。有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题。掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开
阅读全文
摘要:如果调用栈在__lll_mutex_lock_wait, 基本上可以说是死锁了。如果有__lll_mutex_lock_wait () from /lib/tls/libc.so.6 并且 _L_mutex_lock_2507 , 可以断定内存出现问题了。可能是某个类已经释放了,还是用那个类的锁导致的。如果出现 __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 并且L_mutex_lock_35 (),可能是死锁了。1) 如果是内存错误,可以使用valgrind检查。2) 如果是死锁,可以使用pstack 或者 gdb的情况下使用 t
阅读全文
摘要:一、多线程调试 多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。 thread <ID> 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。 off 不锁定任何线程,也就是所有线程都执行,这是默认值。
阅读全文
摘要:在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的。什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个c
阅读全文
摘要:#[reporter]debugin@playmp3_by_list!#[reporter]reporter_event_pth ##cmd_data.my_msg_type=1!#[reporter]RUN_INFO: START station 6*** glibc detected *** double free or corruption (out): 0x0000000000515d20 ***#[reporter]SignalHander(signal:6)(pid:19025)#[reporter]SignalHander(signal:6)(pid:19025)#[report
阅读全文
摘要:查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。以下来自linux 2.4.20-18的内核代码中的/usr/include/asm/errno.h#ifndef _I386_ERRNO_H#define _I386_ERRNO_H#define EPERM 1 /* O.
阅读全文
摘要:使用C/C++语言开发程序时,当程序crash的时候产生coredump文件对于调试程序是很有帮助的。在RedhatLinux系统中默认是不生成coredump文件的,这是因为在/etc/profile文件中有这样一行ulimit-S-c0>/dev/null2>&1如何打开coredump呢?最简单的方法是用户在自己的~/.bash_profile中加入ulimit-S-cunlimited>/dev/null2>&1,这样设置后允许当前用户生成没有大小限制的coredump文件。此外还有两种系统级修改生成coredump的方法。第一种方法是修改/et
阅读全文
摘要:抓内存错误时,挂gdb运行程序,总是碰到Program received signal SIG32, Real-time event 32.的问题,程序总是被挂起,然后就需要不停的c(continue),很麻烦 解决方法:在进入gdb之后,运行程序之前,输入handle SIG32 nostop命令,可以让程序接收到sig32信号时,不挂起*** glibc detected *** ./server: double free or corruption (!prev): 0x08a03b88 ***http://topic.csdn.net/u/20090812/15/43cae1c5-9.
阅读全文
摘要:C程序设计中,内存操作相关的错误可以说是最常见,同时也是非常隐蔽的一类错误。这类错误往往导致程序莫名其妙地崩溃、耗尽系统资源,或是形成严重的安全弱点。在 FreeBSD,以及多数其他 BSD 派生的系统中,重复 free() 在默认情况下都会导致 C 函数库调用 abort() 终止程序。除了 malloc(3) 函数族本身的设计之外,这也是一项非常重要的安全特性。与此相反,包括 *BSD 在内的多数系统的 C 函数库并不对堆进行审计,也就是说,从 API 设计者的观点来看,内存泄漏并不被认为是非常严重的程序设计问题。为什么会有这样的区别呢?事实上,内存泄漏同样可以导致比较严重的问题,例如响应
阅读全文
摘要:WAMP是指在Windows服务器上使用Apache、MySQL和PHP的集成安装环境,可以快速安装配置Web服务器,一般说来,大家都习惯于将Apache、MySQL、PHP架设在Linux系统下,但是,不可否认的是Windows也有其优点,就是易用,界面友好,软件丰富,操作起来非常方面,因此对新手来说在Windows平台下使用Apache、MySQL、PHP也确实是一个不错的选择。下面我将介绍几款在Windows下可以使用的WAMP集成环境。 XAMPP - XAMPP是一款具有中文说明的功能全面的集成环境,XAMPP并不仅仅针对Windows,而是一个适用于Linux、Windows...
阅读全文
摘要:我依然记得当我完成学业时,我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久我就意识到,还有很多事是我所不了解的。 在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。 0. 我们总是错的 开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。 理解并接受...
阅读全文
摘要:生活形形色色,充满新鲜诱惑的东西数不胜数。但很多人就是因为自己没钱而将这些梦想扼杀在自己的脑海中。其实,只要你学会整理生活,就会发生一切都变得轻而易举。无论你的工资有多少,无论你的花销有多大,记得这些,你就是个快乐的人。 第一份:用来做生活费。 第二份:用来交朋友,扩大你的人际圈。 你的电话费可以用掉100元。每个月可以请客两次,每次150元。请谁呢?记住,请比你有思想的人,比你更有钱的人,和你需要感激的人。 每个月,坚持请客,一年下来,你的朋友圈应该已经为你产生价值了,你的声望、影响力、附加价值正在提升,形象又好,又大方。 第三份:用来学习,每个月可以有50元—...
阅读全文
摘要:http://article.yeeyan.org/view/184220/150437原文作者乔纳森·丹尼可(JonathanDanylko)是一位自由职业的Web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。 我会持续更新这些经验,我可能还会有
阅读全文
摘要:from:http://hi.baidu.com/walfer/blog/item/fa649f457276f53e86947302.html我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD18) SIGCONT 19) SIG
阅读全文

浙公网安备 33010602011771号