• 2021.08.04笔记


    epoll水平触发边缘触发

    水平触发LT:可以理解为一直就绪,跟键盘一直按着一样,一直按着一个键就会一直输出该键的键值,LT模式只要是缓冲区没有满就会一直写,只要是缓冲区不为空就会一直读

    边缘触发ET:可理解为单次触发,接收到数据只读一次,缓冲区里有数据,就写一次。

    LT的处理过程:
    . accept一个连接,添加到epoll中监听EPOLLIN事件
    . 当EPOLLIN事件到达时,read fd中的数据并处理
    . 当需要写出数据时,把数据write到fd中;如果数据较大,无法一次性写出,那么在epoll中监听EPOLLOUT事件
    . 当EPOLLOUT事件到达时,继续把数据write到fd中;如果数据写出完毕,那么在epoll中关闭EPOLLOUT事件

    ET的处理过程:
    . accept一个一个连接,添加到epoll中监听EPOLLIN|EPOLLOUT事件
    . 当EPOLLIN事件到达时,read fd中的数据并处理,read需要一直读,直到返回EAGAIN为止
    . 当需要写出数据时,把数据write到fd中,直到数据全部写完,或者write返回EAGAIN
    . 当EPOLLOUT事件到达时,继续把数据write到fd中,直到数据全部写完,或者write返回EAGAIN

    c++与c区别

    首先面向对象和面向过程的区别就挺大的,首先思路就不一样,c语言支持的是 C89 标准,c++支持C99,c++11,14,15等。很多用法很不一样,

    1、c语言函数参数不行有默认值,但是c++就行,但是参数默认值要在参数列表中最右边

    int func(int a = 1,int b);//这样不行
    int func(int a,int b = 2,int c = 3);//可以
    

    2、c语言变量的声明必须在语句的前面,c++随意在任何地方定义变量。

    3、c语言中空结构体没有占用空间,但是c++有占有一个字节,来区别与别的结构体不同。

    4、c语言不支持函数重载,c++支持

    5、malloc、free和new、delete区别

    6、C语言中作用域只有两个:局部,全局。C++中则是有:局部作用域,类作用域,名字空间作用域三种。

    7、c++面向对象 封装 继承 多态

  • 相关阅读:
    MySQL常见问题(包括忘记root密码)
    MySQL运维面试基础题目
    系统根目录可用空间低于20%,清理mysql binary logs日志空间
    服务检测是否正常运行的shell脚本
    CentOS下安装 MySQL5.5
    问题处理--ceph集群告警: pgs inconsistent修复方案
    十、Spring中常用注解-分层整理
    七、SXSSFWorkbook生成大excle,避免内存溢出
    一、FreeMarker实现对js和css压缩
    九、web.xml理解
  • 原文地址:https://www.cnblogs.com/sunnylinry/p/15100918.html
Copyright © 2020-2023  润新知