摘要:
指针和数组指针和数组是一样的吗? 经常可以看到“数组就是指针”、“数组名就是常量指针”这些说法,但真的是这样吗?让我们先看一下指针和数组的定义。 1. 指针 根据C99标准,指针的定义如下:A pointer type may be derived from a function type o... 阅读全文
摘要:
虚函数表是在什么时期建立的? 最近参加阿里巴巴公司的内推,面试官问了“虚函数表是在什么时期建立的?”。因为以前对虚函数表的理解不够多,所以就根据程序构建(Build)的四个过程(预编译、编译、汇编和链接),推导出虚函数表应该是在编译期确定的,原因如下: 1)预编译器主要处理那些源代码文件中的以“... 阅读全文
摘要:
函数指针 函数指针是指向函数调用地址的指针。它和函数名究竟有什么关系呢?且看下文。且看一小程序 首先,先请看下边程序: 1 #include 2 #include 3 using namespace std; 4 5 void func(string s) 6 { 7 cout ... 阅读全文
摘要:
注意,这里所说的堆区和栈区指的是(虚拟)内存区域,跟数据结构中的堆栈不一样。栈区和堆区概念 栈区(stack)—— 由编译器自动分配释放,存放局部变量的值、函数调用所需要维护的信息等。 栈区必须满足这样一条规则:先入栈的数据后出栈(First In Last Out, FILO)。 堆区(h... 阅读全文
摘要:
线程池简介 线程池是可以用来在后台执行多个任务的线程集合。这使主线程可以自由地异步执行其他任务。线程池通常用于服务器应用程序。每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会占用主线程,也不会延迟后续请求的处理。一旦池中的某个线程完成任务,它将返回到等待线程队列中,等待被再次... 阅读全文
摘要:
备注:现在对于 YouCompleteMe 的安装应采用更为简单的方法,即利用 Vundle 来安装这个插件。具体方法可见: Vundle 主页 YouCompleteMe 主页 而 .vimrc 的设置如下即可: 1 " Vundle Setting 2 3 set nocomp... 阅读全文
摘要:
本文将简要介绍智能指针shared_ptr和unique_ptr,并简单实现基于引用计数的智能指针。使用智能指针的缘由 1. 考虑下边的简单代码:1 int main()2 {3 int *ptr = new int(0);4 return 0;5 } 就如上边程序,我们有可... 阅读全文
摘要:
这篇是继前三篇并发服务器--01(基于进程派生)、并发服务器--02(基于I/O复用——运用Select函数)和并发服务器--02(基于I/O复用——运用epoll技术)的第4篇关于并发服务器的博文。 关于Linux上多线程详情请参看前一博文Linux多线程编程初探。 本文相对就简陋一点了,... 阅读全文
摘要:
本文承接自上一博文I/O复用——运用Select函数。epoll介绍 epoll是在2.6内核中提出的。和select类似,它也是一种I/O复用技术,是之前的select和poll的增强版本。 Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per ... 阅读全文
摘要:
I/O模型 Unix/Linux下有5中可用的I/O模型:阻塞式I/O非阻塞式I/OI/O复用(select、poll、epoll和pselect)信号驱动式I/O(SIGIO)异步I/O(POSIX的aio_系列的函数) 关于这五种详细介绍可参考《UNIX网络编程 卷1》或网上博文。I/O复用... 阅读全文