关闭

[置顶] IO多路复用之epoll函数详解

epoll   在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。   相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。   相对于select和poll来说,epoll更加灵活,没有描述符...
阅读(1062) 评论(0)

[置顶] Linux下的进程1——进程概念,进程切换,上下文切换,虚拟地址空间

进程概述  当一个可执行程序在现代系统上运行时,操作系统会提供一种假象——好像系统上只有这个程序在运行,看上去只有这个程序在使用处理器,主存和IO设备。   处理器看上去就像在不间断的一条接一条的执行程序中的指令,即改程序的代码和数据是系统存储器中唯一的对象。这些假象是通过进程的概念来实现的。   进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在...
阅读(2542) 评论(1)

[置顶] C++泛型编程2——类模板,容器适配器,仿函数

模板编译  当编译器遇到一个模板定义时,它并不生成代码。只有当我们实例化出模板的一个特定版本时,编译器才会生成代码。当我们使用模板时,比编译器才生成代码。  这一特性影响了我们如何组织代码以及错误何时被检测到。   通常,当我们调用一个函数时,编译器只需要掌握函数的声明。   类似的,当我们使用一个类类型的对象时,类定义必须是可用的,但成员函数的定义不必已经出现。   因此我们将类定义和函数声...
阅读(834) 评论(0)

[置顶] C++泛型编程1——函数模板实例化,模板参数,重载及特化

在C++中我们都知道引入了函数重载,那么在实际应用过程中:   如果我们想要实现一个加法函数,我们可以写出很简单的代码:   int ADD(int a,int b) {   return a+b; }  上面的函数很简单,但是仔细想一下,这样就实现了加法操作嘛?当我们的实参类型为double,float时,又怎么处理加法呢?   我们可以多定义几个函数   double ADD(doubl...
阅读(1540) 评论(0)

[置顶] 【TCP/IP】TIME_WAIT状态及地址reuse问题,SO_REUSEADDR参数详解

TCP/IP四次挥手  在TCP/IP协议取消连接的时候会进行四次挥手过程:         当某个应用进程主动关闭的时候,该端TCP会发送一个FIN分节,表示数据发送完毕。   接收到这个FIN的对端执行被动关闭,这个FIN由TCP进行确认,他的接受也作为一个文件结束符EOF传递给接收端应用进程,因为FIN的接受意味着接收端应用进程在相应连接上再无额外数据可以接受。   一段时间后,接受...
阅读(1243) 评论(0)

[置顶] 【UNIX网络编程】五种I/O模型,阻塞非阻塞同步异步问题详解

IO复用  在写简单的TCP/IP服务器-客户端程序时,客户端要同时处理两个输入:   标准输入 TCP套接字  在结束的时候,因为客户端正阻塞于标准输入上的read函数,服务器TCP虽然正确的给客户TCP发送了一个FIN,但是既然客户进程正在阻塞于从标准输入读入的过程,他将看不到这个EOF,直到从套接字读时为止。   这样的进程需要一种预先告之内核的能力,使得内核一旦发现进程指定的一个或多个I/...
阅读(1016) 评论(0)

[置顶] 【Linux】终端,进程组,作业,会话及作业控制

终端概念       在UNIX系统中,用用户通过终端登录系统后得到一一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。        默认情况 下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制...
阅读(2733) 评论(0)

[置顶] C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏

上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我在最后分析了虚函数与虚函数表的内存布局,在下一篇详细剖析虚函数及虚函数表的过程中,我发现有关函数重载,函数覆盖,函数重写和函数协变的知识也要理解清楚才能对虚函数表在内存中的布局,对派生类的对象模型以及对多态的实现有更深的理解。 所以这一篇我作为一篇过渡篇,也同时对我以前写过的一篇博文进行一个收尾。在C++继承详解...
阅读(4906) 评论(2)

[置顶] C++多态篇3——虚函数表详解之多继承、虚函数表的打印

在上上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我最后简单了剖析了一下虚函数表以及vptr。 而在上一篇文章C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏中我详细介绍了虚函数的函数重载,函数覆盖以及函数隐藏的问题,其实在那一篇文章中,对单继承的虚函数已经做了十分详细的解答了,如果对前面有兴趣的人可以先看一下那篇文章。 在这一篇中,我...
阅读(5481) 评论(2)

[置顶] C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable

前面我写了几篇关于继承的博文,分别为: c++继承详解之一——继承的三种方式、派生类的对象模型 C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则) C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1) C++继承详解之四——is-a接口继承和has-a实现继承 这几篇博文只涉及到了继承的知识,没有加入虚函数没有涉及到多态的知识,从这篇开始我会更...
阅读(3190) 评论(4)

Linux下Mysql常用命令总结

很久没有写博客啦,大概有一年了,还记得以前找工作前疯狂的总结,后期慢慢的有些懈怠,最近总结了一下自己的问题,觉得博客这个方式是一个很好的学习方式,还是不能丢掉,所以今天又开始写博客啦,如果是师妹师弟看到我的这篇文章,也希望对你们有些帮助。   写这篇文章的初衷是我发现在工作中,总是与mysql打交道,并且即使是同一条命令,随便加个选项其实会变得更加实用方便,本篇文章我会采用持续更新的方式去写,所...
阅读(186) 评论(0)

socket编程选项——setsockopt和getsockopt

头文件:#include #include setsockopt函数原型: int setsockopt(int sockfd, int level, int optname, const void* optival, socklen_t optlen); 功能:  用于任意类型、任意状态套接口的设置选项值. 参数: sockf...
阅读(558) 评论(0)

服务器编程——gethostbyname函数

使用这个函数,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);  这个函数的传入值是域名或者主机名,例如”www.google.com”,”wpc”等等。   传出值,是一个hostent的结构(如下)。   如果函数调用失败,将返回NULL。...
阅读(445) 评论(0)

boost库智能指针,循环引用,定置删除器详解

智能指针用于指向存放在堆,即动态分配对象指针的类,用于对指针所指向的对象生存期的控制,防止内存泄露。   boost库中的智能指针定义在namespace boost中,包括:   shared_ptr   weak_ptr   scoped_ptr   shared_arr   scoped_arrauto_ptr  auto_ ptr是在std库中的,不在boost库中,但是auto...
阅读(880) 评论(0)

计算机网络

HTTPGet和Post答:get和post都是http协议中与服务器交互的方法。   url地址用于描述一个网络上的资源,而get,post,put,delete等方法就对应着这个资源的查,改,增,删四个操作。   Get方法一般用于获取/查询资源信息。   Post一般用于更新资源信息。   二者区别为:   1.Get提交的数据会放在URL后,以问号?分隔URL和传输数据,参数以&相...
阅读(278) 评论(0)

C/C++

C与C++的区别答:C是结构化语言,重点在于算法和数据结构。   C++是面向对象的语言。首先要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题。   最大的区别在于,解决问题的思想方法不一样。const与define答:define只是用来做文本替换,他的生命周期止于编译器,存在于程序的代码段,在实际程序中只是一个常数,一个命令的参数,没有实际的存在。   const常量存在于程序...
阅读(336) 评论(0)

select,poll,epoll优缺点及比较

在之前我已经分析了这三个函数,请看我之前的文章: IO多路复用之select函数详解 IO多路复用之poll函数详解 IO多路复用之epoll函数详解   这篇文章只总结优缺点,以便面试时回答。select优点1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而poll是毫秒。select缺点1) 单个进程...
阅读(3655) 评论(0)

IO多路复用之poll函数详解

poll  poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。   poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。poll函数  函数格式如下所示:...
阅读(1277) 评论(0)

IO多路复用之select函数详解

IO复用   我们首先来看看服务器编程的模型,客户端发来的请求服务端会产生一个进程来对其进行服务,每当来一个客户请求就产生一个进程来服务,然而进程不可能无限制的产生,因此为了解决大量客户端访问的问题,引入了IO复用技术。   即:一个进程可以同时对多个客户请求进行服务。   也就是说IO复用的“介质”是进程(准确的说复用的是select和poll,因为进程也是靠调用select和poll来实...
阅读(2189) 评论(0)

Linux下的进程3——进程创建,文件替换,进程程序替换

进程标识  每个进程都有一个非负整型标识唯一的进程ID。因为进程ID标识符总是唯一的,常将其用作其他标识符的一部分以保证其唯一性。   虽然是唯一的,但是进程ID是可复用的,当一个进程终止后,其进程ID就称为复用的候选者,大多数UNIX系统实现延迟复用算法,使得赋予新建进程的ID不同于最近终止进程所使用的ID,这防止了将新进程误认为是使用同一ID的某一个已终止的进程。   系统中有一些专用进程。...
阅读(739) 评论(0)

Linux下的进程2——进程的内存映像,进程PCB,task_struct详解

进程的内存映像  Linux下C程序生成主要由四个步骤组成:  预编译 编译 汇编 链接  编译器gcc经过预编译,编译,汇编三个步骤将源程序文件转换成目标文件。   如果程序有多个目标文件或程序中使用了库函数,则编译器还需要将所有目标文件及所需的库文件链接起来,最后生成可执行程序。   当程序执行时,操作系统可将可执行程序复制到内存中.   程序转为进程通常需要以下步骤: 内核将程序读入内存...
阅读(744) 评论(0)

数据结构

ps:这部分请一定关注时间复杂度的计算和算法的优化,因为在面试中都会要求计算时间复杂度和不断优化你写的算法1.线性表1. 顺序表和链表的优缺点,它们分别在什么场景下使用? 2. 求一个单链表中节点个数 3. 删除一个无头单链表的非尾节点 4. 在无头单链表的一个节点前插入一个节点 5. 单链表实现约瑟夫环 6. 逆置单链表 7. 单链表排序 8...
阅读(278) 评论(0)
68条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:78161次
    • 积分:1441
    • 等级:
    • 排名:千里之外
    • 原创:64篇
    • 转载:4篇
    • 译文:0篇
    • 评论:11条
    最新评论