关闭

C++ 对象的内存布局

C++ 对象的内存布局   2008-11-14 作者:陈皓 来源:csdn   前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简...
阅读(273) 评论(0)

双缓冲消息队列-减少锁竞争

在网络应用服务器端, 为了性能和防止阻塞, 经常会把逻辑处理和I/O处理分离: I/O网络线程处理I/O事件: 数据包的接收和发送, 连接的建立和维护等. 逻辑线程要对收到的数据包进行逻辑处理. 通常网络线程和逻辑线程之间是通过数据包队列来交换信息, 简单来说就是一个生产者-消费者模式. 这个队列是多个线程在共享访问必须加锁, 意味着每次访问都要加锁。如何更好的如何减少锁竞争次数呢 ?...
阅读(412) 评论(0)

bitset 用法整理

构造函数 bitset b;  b有n位,每位都为0.参数n可以为一个表达式. 如bitset b0;则"b0"为"00000";   bitset b(unsigned long u);  b有n位,并用u赋值;如果u超过n位,则顶端被截除 如:bitsetb0(...
阅读(301) 评论(0)

引用unp解释socket在什么情况下可读?

A socket is ready for reading if any of the following four conditions is true: a. The number of bytes of data in the socket receive buffer...
阅读(1368) 评论(0)

寻找最大的K个数 (C语言实现)

题目:100亿个整数,求最大的1万个数,并说出算法的时间复杂度   算法:如果把100亿个数全部读入内存,需要100 0000 0000 * 4B 大约40G的内存,这显然是不现实的。 我们可以在内存中维护一个大小为10000的最小堆,每次从文件读一个数,与最小堆的堆顶元素...
阅读(499) 评论(0)

讨论const的实现机制

说实话 我感觉 const 的实现应该和 宏类似。 例如 const int i = 10; 当代码中有引用到 i 的地方 就直接用 10 这个常数替换掉, 只是相对宏会做一次类型安全检测,发现类型不对会进行报错。 如果是这样实现的话,那const就应该是在编译期展开...
阅读(1027) 评论(0)

OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。

这个是某论坛版主的答案 #define OFFSETOF(s, m) ({s s1;(void*)(&s1)-(void*)(&s1->m);}) /*gcc*/ s s1;  声明一个结构体s的变量 (void*)(&s1) 获得s1的地址 (voi...
阅读(476) 评论(0)

volatile的作用

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:     1). 并行设...
阅读(237) 评论(0)

TCP三次握手及原理

TCP/IP是很多的不同的协议组成,实际上是一个协议组,TCP用户数据报表协议(也称作TCP传输控制协议,Transport Control Protocol。可靠的主机到主机层协议。这里要先强调一下,传输控制协议是OSI网络的第四层的叫法,TCP传输控制协议是TCP/IP传输的...
阅读(250) 评论(0)

TCP协议三次握手过程分析

TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledge...
阅读(297) 评论(0)
    个人资料
    • 访问:7655次
    • 积分:109
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档