`
文章列表
转自:http://www.linuxidc.com/Linux/2012-06/63754.htm Valgrind通常用来成分析程序性能及程序中的内存泄露错误   一 Valgrind工具集简绍 Valgrind包含下列工具:     1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。     2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。     3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。     4、helgrind:用于检查多线程程序的竞态条件。     5、massif:堆 ...
转自:http://www.cnblogs.com/zhenjing/archive/2010/10/27/1862458.html 1. gdb attach [pid] -- debug a running process 2. valgrind-- a suite of tools for debugging and profiling programs Very powerful tool to debug linux program,just for x86 platform 3. strace -trace system calls and signals In the ...

boost安装

1.下载站:http://sourceforge.net/projects/boost/files/boost/1.48.0/2.安装 tar -xzvf boost_1_48_0.tar.g -C ~/source cd source/boost_1_48_0/ ./bootstrap.sh sudo ./bjam --layout=versioned --build-type=complete --too
转自:http://blog.csdn.net/solstice/article/details/3066268 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。 boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式。 Scott Meyers的Effective C++ 3rd ed.第35条款提到了以boost::function和boost:b ...
编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x  的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种竞态条件是 C++ 多线程编程面临的基本问题,可以借助 boost 的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。   本文源自我在 
转自:http://blog.csdn.net/Solstice/article/details/5307710 本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型,归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序。 文中的“多线程服务器”是指运行在 Linux 操作系统上的独占式网络应用程序。硬件平台为 Intel x64 系列的多核 CPU,单路或双路 SMP 服务器(每台机器一共拥有四个核或八个核,十几 GB 内存),机器之间用百兆或千兆以太网连接。这大概是目前民用 PC 服务器的主流配置。 本文不涉及 Windows 系统,不涉及人 ...
Introduction The purpose of this document is to share some ideas that I've developed over the years about how to develop a certain kind of application for which the term "server" is only a weak approximation. More accurately, I'll be writing about a broad class of programs that are design ...
转自:http://www.kegel.com/c10k.html#kio The C10K problem [Help save the best Linux news source on the web -- subscribe to Linux Weekly News!] It's time for web servers to handle ten thousand clients simultaneously, don't you think? After all, the web is a big place now. And computers are big, too ...
linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知. 以代码来说明问题: 首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用的都是ET模式,而且接收缓冲区是5字节的,也就是每次只接 ...
转自:http://blog.csdn.net/anonymalias/article/details/9938865 前面已经讨论过Linux下个各种进程间的通信方式:管道,FIFO,消息队列,他们的共同特点就是通过内核来进行通信(假设POSIX消息队列也是在内核中实现的,因为POSIX标准并没有限定它的实现方式)。向管道,FIFO,消息队列写入数据需要把数据从进程复制到内核,从这些IPC读取数据的时候又需要把数据从内核复制到进程。所以这种IPC方式往往需要2次在进程和内核之间进行数据的复制,即进程间的通信必须借助内核来传递。如下图所示:
概述: VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式。 1.bridged(桥接模式)   在这种模式下,VMW ...
链接动态库 如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LDLIBRARYPATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本添加如下语句:LDLIBRARYPATH =/work/lib:$(LDLIBRARYPATH)。并且LDLIBRARYPATH路径优先于 ...
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。        基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看  # ldd /bin/ls linux-vdso.so.1 => (0x00007fff597ff000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00000036c2e00000) librt
 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading shared libraries”这样的错误,这是典型的因为需要的动态库不在动态链接器ld.so的搜索路径设置当中导致的。         具体说来,动态链接器ld.so按照下面的顺序来搜索需要的动态共享库: 1.ELF可执行文件中动态段中DT_RPATH所指定的路径。这实际上是通过一种不算很常用,却比较实用的方法所设置的:编译目标代码时,可以对gcc加入链接参数“-Wl,-rpath”指定动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 3./etc/l ...
抓包工具比较好用的有两个,一个是 snort ,一个是 tcpdump ,这次不说 snort 了,觉得这个工具虽然很强 大,但是比较复杂,还是 tcpdump 比较简单。 tcpdump windows 、 linux 版本均有。 linux
Global site tag (gtag.js) - Google Analytics