IO多路复用(epoll)/数据库(sqlite)

embedded/2025/3/10 2:55:44/

1.poll:

          1. poll使用链表管理文件描述符,对监测的文件描述符没有上限限制。
          2. 文件描述符集合在应用层创建,需要实现应用层和内核层的反复拷贝
          3. 需要应用层对集合表进行遍历,寻找到达的事件
          4. 只能工作在水平触发模式(低速模式),不能工作在边沿触发模式(高速模式) 
2.epoll:

         1. epoll使用树形结构(红黑树)管理文件描述符,提高查找效率
         2. 文件描述符集合创建在内核。避免了应用层和内核层的数据拷贝
         3. 向应用层返回到达的IO事件的结合,不需要遍历查找
         4. 可以工作在水平触发模式(低速模式),也可以工作在边沿触发模式(高速模式)

epoll的操作流程:

        1. 创建文件描述符集合 : epoll_create();
        2. 将关注的文件描述符加入到集合:epoll_ctl()
        3. 等待IO事件到达 : epoll_wait();
        4. 根据不同的IO事件处理不同的任务

函数接口:

   1. int epoll_create(int size);
   功能:创建并打开一个epoll的文件描述符结合
   参数:
        size:最多允许监测的文件描述符个数
   返回值:
      成功:返回代表集合的文件描述符
      失败:-1

  2. int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
  功能:对文件描述符集合进行操作
  参数:
        epfd:文件描述符集合
        op:
              EPOLL_CTL_ADD:向集合中添加
              EPOLL_CTL_MOD:修改集合
              EPOLL_CTL_DEL:从集合中删除
        fd:要操作的文件描述符
       event:事件的结构体
  成功:0
  失败:-1

          typedef union epoll_data {
               void        *ptr;
               int          fd;
               uint32_t     u32;
               uint64_t     u64;
           } epoll_data_t;

           struct epoll_event {
               uint32_t     events;      /* Epoll events */  //事件类型
               epoll_data_t data;        /* User data variable */
           };

          events:
          EPOLLIN: 对文件描述符的读事件
          EPOLLOUT:对文件描述符的写事件
          data:
          fd:操作的事件所对应的文件描述符

  3.  int epoll_wait(int epfd, struct epoll_event *events,
                      int maxevents, int timeout);
       功能:开始监测IO事件,并返回监测到的结果
       参数:
                 epfd:监测的文件描述符集合
                 events:保存epoll_wait监测到的到达事件的结果
                 maxevents:最多监测的事件个数
                 timeout:超时时间
                               -1:不设置超时
       返回值:
          成功:返回到达的IO事件的个数
          失败:-1
           0:超时时间到达但没有IO事件

数据库: 数据保存在外存上;程序运行结束时,掉电数据不丢失;是一个专业的管理数据工具

sqlite3:(小型的数据库)

1.sqlite常用的命令:

     .help                    查询手册
     .tables                 查看数据库中的表
     .headers on/off    打开/关闭表头
     .mode column     设置左对齐
     .quit                     退出数据库

2.sqlite支持的SQL(结构化序列语言)语言

 数据类型:
      INTEGER : 整形
      REAL:浮点型
      TEXT:文本字符串类型
      NULL :空

     1. 创建一张表
        create table 表名(列名1 数据类型, 列名2  数据类型, ....);

    2. 插入表格
        insert into 表名 values(值1, 值2, 值3, ...);

    3. 查询数据库中的表
        
        查询表中的所有数据:
        select * from 表名;
        
        查找指定列:
        select 列名1,列名2  from 表名;

       条件查找:
       select * from 表名 where 列名 关系运算符 值;
       关系运算符:
        =
       >
       <
       !=
       >=
       <=
       or  (||)
       and (&&)
       
       模糊查找:
       select * from 表名 where 列名 like "%梅";
       
       % : 可以匹配多个字符
       _  :   只能匹配一个字符
      
      有序查找:
       升序查找:
       select * from 表名 order by 列名 ASC;
      
       降序查找:
       select * from 表名 order by 列名 DESC;

    4. 删除数据
         delete from 表名 where 条件;
      
    5. 修改数据
        update 表名 set 列名=新值,列名=新值 where 条件;
       
    6.  删除表
        drop table 表名


 


http://www.ppmy.cn/embedded/171376.html

相关文章

k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群 部署之前&#xff0c;先简单说下k8s是个啥&#xff1a; 一、k8s简介&#xff1a; k8s&#xff0c;全称&#xff1a;kubernetes&#xff0c;它可以看作是一个分布式系统支撑平台。k8s的作用&#xff1a; 1、故障自愈&#xff1a; k8s这个玩意可以监控容器…

属于网络安全规划重安全性需求

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1.网络安全基本内容 安全包括哪些方面 操作系统内部的安全包括&#xff1a;数据存储安全、应用程序安全、操作系统安全。 此外还有网络安全、物理安全、用户安全…

Vue3 模板引用:打破数据驱动的次元壁(附高阶玩法)

在数据驱动的Vue世界中&#xff0c;模板引用&#xff08;Template Refs&#xff09;是我们与真实DOM对话的秘密通道。本文将带你深入理解这个"逃生舱"的正确打开方式&#xff0c;并分享实战中的高阶技巧。 一、基础入门&#xff1a;建立DOM连接 1. 创建模板引用 &…

风控模型算法面试题集结

特征处理 1. 特征工程的一般步骤什么?什么是特征迭代 特征工程一般包含: 数据获取,分析数据的可用性(覆盖率,准确率,获取容易程度)数据探索,分析数据业务含义,对特征有一个大致了解,同时进行数据质量校验,包含缺失值、异常值和一致性等;特征处理,包含数据处理和…

ubuntu 22.04附加驱动安装NVIDIA显卡驱动重启后无WiFi蓝牙等问题

参考&#xff1a;ubuntu 22.04 更新NVIDIA显卡驱动&#xff0c;重启后无网络图标等系统奇奇怪怪问题 sudo dpkg --get-selections | grep linux查看哪些要跟着旧版本一起装的就装。 或者还可以去清华源找驱动软件包直接离线安装

WordPress开发到底是开发什么?

WordPress 开发主要涉及基于 WordPress 平台构建、定制和扩展网站功能的过程。它不仅仅是简单的网站搭建&#xff0c;而是通过代码和技术实现个性化需求。 以下是 WordPress 开发的核心内容&#xff1a; 1. 主题开发&#xff08;Theme Development&#xff09; 功能&#xff…

【UI自动化框架第五张】AndroidUiAutomation 类功能简介

一、AndroidUiAutomation 类 功能简介 功能&#xff1a; 为 Android 设备提供 UI 自动化操作的工具类&#xff0c;支持连接设备、获取截图、点击、滑动、获取屏幕分辨率和清理资源等功能。 参数&#xff1a; device_id&#xff08;可选&#xff09;&#xff1a;设备 ID&#x…

Springboot快速接入Deepseek

一、必要依赖 pom.xml <!-- SpringBoot Actuator --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- SpringBoot Webflux--> <de…