头文件定义的类与so中同名类的大小不同导致的奇葩问题

昨天晚上临下班之际,终于把程序编译成功了。开开心心的运行,结果,遇到了神奇的bug,接下来花了n个小时去解决这个神奇的bug。     下面是我调试的时候,对奇葩问题的截图。            &nbs...

如何实时查看tcp的发送缓冲区和接收缓冲区堆积的大小

对于发送缓冲区和接收缓冲区的总的大小,我们可以使用套接字选项分别获得。 ...

wireshark中的TCP window Full

TCP window Full,直接看名字,就是提示tcp的窗口已满,主要是用于发送方告知接收方,发送完这份数据后,窗口已满。那么,发送方怎么知道接收方的窗口已满呢??很简单,因为发送方知道接收端此时的窗口大小是多少,然后根据本次要发送的数据,就可以确认,窗口是否已满。 TCP zero window,TCP窗口为空。这是接收端通知发送端,我本地的接收窗口大小...

内联产生的奇怪问题

今天在写代码时,遇到个因为内联而产生的奇怪问题。代码如下: ...

boost中使用Asio,对端关闭时回调函数被调用两次的问题

在使用boost的asio实现异步网络服务器时,对每一个连接的socket注册回调函数。当对端关闭时,本地的读回调函数得到调用,在关闭socket之后,读回调函数再次得到调用。网上查了下资料,发现这类的中文资料不多,而英文的资料,针对的也不是出现这个问题的描述。所以在这里做个记录。     来源于...

IO多路复用之select结合源码剖析

   select ,同步IO多路复用。select调用后,会调用内核中的sys_select的系统调用方法中。而sys_select的方法,定义于 /fs/select.c文件内。 ...

IPC进程通信之消息队列详解

IPC,interprocess communication,进程间通信。主要有管道,命名管道(也叫FIFO),消息队列,信号量,域套接字,共享内存等方式。在这里,我只介绍消息队列、     Linux中,消息队列的操作,主要有msgget、msgctl、msgsnd,msgrcv等方法。具体的可以通过man 查看具体的细节。我这里说的,其...

Linux下尝试性能分析之top和free命令

    一般提起性能分析时,一般都会有几个维度。一个是CPU,一个是IO。  首先分析,当一个进程cpu占用很高时,怎么分析排查? 步骤:      1.使用命令,ps -mp pid -o THREAD,tid,time 查看进...

mmap文件映射更新文件与直接IO的性能对比

 使用文件映射,将文件的一部分内容映射到内存中,然后直接操作内存的数据。这种方式是肯定要优于直接写文件的IO操作。但具体的对比数值自己之前一直没有做过。现在来看看是怎么个对比结果。 对比结果 试验1:     实验体:文件大小1G。文件内的值都是某个结构体的对象。 ...

g++编译时动态库的搜索路径问题

今天使用g++编译,有用到mysql的动态库。但是遇到如下的报错: ...