当前位置: 首页 > news >正文

自学嵌入式第29天-----epoll、sqlite3

1. 正确选择触发模式(ET 和 LT)

  • 水平触发(LT):默认模式,只要文件描述符处于就绪状态,epoll_wait 会持续通知。适合大多数场景,编程简单。

  • 边缘触发(ET):只在状态变化时通知一次,适合高性能场景,但需要确保一次性处理完所有数据,否则可能丢失事件。

  • 注意

    • 在 ET 模式下,必须循环读取或写入数据,直到返回 EAGAIN 或 EWOULDBLOCK

    • 如果未处理完数据,epoll_wait 不会再通知,可能导致事件丢失。


2. 正确处理事件

  • 事件类型

    • EPOLLIN:数据可读。

    • EPOLLOUT:数据可写。

    • EPOLLERR:发生错误。

    • EPOLLHUP:对端关闭连接。

  • 注意

    • 必须处理 EPOLLERR 和 EPOLLHUP 事件,否则可能导致程序异常。

    • 在 EPOLLIN 事件中,确保读取所有数据(特别是在 ET 模式下)。

    • 在 EPOLLOUT 事件中,避免频繁触发(可以通过动态添加/删除 EPOLLOUT 事件来优化)。

3. 文件描述符管理

  • 添加/修改/删除文件描述符

    • 使用 epoll_ctl 的 EPOLL_CTL_ADDEPOLL_CTL_MOD 和 EPOLL_CTL_DEL 操作。

    • 确保文件描述符有效,避免重复添加或遗漏删除。

  • 注意

    • 文件描述符关闭后,必须从 epoll 实例中删除,否则可能导致未定义行为。

    • 在多线程环境中,文件描述符的管理需要加锁保护。


      sqlite3:

      sqlite3 xxx.db
      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 表名;


      3. sqlite提供的C API接口

相关文章:

自学嵌入式第29天-----epoll、sqlite3

1. 正确选择触发模式&#xff08;ET 和 LT&#xff09; 水平触发&#xff08;LT&#xff09;&#xff1a;默认模式&#xff0c;只要文件描述符处于就绪状态&#xff0c;epoll_wait 会持续通知。适合大多数场景&#xff0c;编程简单。 边缘触发&#xff08;ET&#xff09;&…...

工作学习笔记:HarmonyOS 核心术语速查表(v14 实战版)

作为在 HarmonyOS 开发一线摸爬滚打的工程师&#xff0c;笔者在 v14 版本迭代中整理了这份带血的实战术语表。 一、架构基础术语速查 A 系列术语 术语官方定义笔者解读&#xff08;v14 实战版&#xff09;开发陷阱 & 解决方案abc 文件ArkCompiler 生成的字节码文件打包时…...

解决AWS EC2实例无法使用IAM角色登录AWS CLI

问题背景 有时&#xff0c;我们希望一台AWS EC2实例&#xff0c;即云服务器&#xff0c;能够使用AWS CLI访问AWS管理控制台资源。 例如&#xff0c;这里&#xff0c;我们想让它能够列出所有IAM用户组。 aws iam list-groups于是&#xff0c;我们使用下面的命令&#xff0c;在…...

Java核心语法:从变量到控制流

一、变量与数据类型&#xff08;对比Python/C特性&#xff09; 1. 变量声明三要素 // Java&#xff08;强类型语言&#xff0c;需显式声明类型&#xff09; int age 25; String name "CSDN"; // Python&#xff08;动态类型&#xff09; age 25 name …...

manus是什么?能干啥?

Manus哪儿来的&#xff1f; ​ Manus是一款由中国团队Monica.im于2025年3月5日发布的通用型AI代理&#xff08;AI Agent&#xff09;产品&#xff0c;旨在通过自主思考、系统规划和灵活工具调用&#xff0c;帮助用户完成各种复杂任务&#xff0c;从而解放用户的时间与创…...

大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)

前言 如果你对这篇文章可感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 当前的大型语言模型训练大致可以分为如下三个阶段&#xff1a; Pre-train&#xff1a;根据大量可获得的文本资料&#…...

Elasticsearch 2025/3/7

高性能分布式搜索引擎。 数据库模糊搜索比较慢&#xff0c;但用搜索引擎快多了。 下面是一些搜索引擎排名 Lucene是一个Java语言的搜索引擎类库&#xff08;一个工具包&#xff09;&#xff0c;apache公司的顶级项目。 优势&#xff1a;易扩展、高性能&#xff08;基于倒排索引…...

发行基础:热销商品榜单

转载自官方文件 ------------------ 热销商品榜单 Steam 在整个商店范围内有各种热销商品榜单&#xff0c;最醒目的莫过于 Steam 主页上的榜单了。 您也可以在浏览单个标签、主题、类型时找到针对某个游戏类别的热销商品榜单。 主页热销商品榜单 该榜单出现在 Steam 主页上…...

实战案例分享:Android WLAN Hal层移植(MTK+QCA6696)

本文将详细介绍基于MTK平台&#xff0c;适配高通&#xff08;Qualcomm&#xff09;QCA6696芯片的Android WLAN HAL层的移植过程&#xff0c;包括HIDL接口定义、Wi-Fi驱动移植以及wpa_supplicant适配过程&#xff0c;涵盖STA与AP模式的常见问题与解决方法。 1. HIDL接口简介 HID…...

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…...

微前端框架 Qiankun 的应用及问题分析

一、Qiankun 的核心应用场景与优势 多技术栈共存与灵活集成 Qiankun 支持主应用与子应用使用不同技术栈&#xff08;如 Vue、React、Angular 等&#xff09;&#xff0c;通过 HTML Entry 方式接入子应用&#xff0c;无需深度改造子应用即可实现集成&#xff0c;降低了技术迁移成…...

设计模式-结构型模式-适配器模式

概述 适配器模式 : Adapter Pattern 是一种结构型设计模式. 作用 &#xff1a; 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 实现思路 &#xff1a; 适配器模式通过将一个类的接口转换成客户希望的另外一个接口来实现这一点。 这里的“接口”指的是类所提供的…...

6. 机器人实现远程遥控(具身智能机器人套件)

1. 启动控制脚本 远程作到 Raspberry Pi 中&#xff0c;并运行以下脚本&#xff1a; conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot登录笔记本电脑上&#xff0c;同时运行以下脚本&#xff1a; conda ac…...

多模态知识图谱融合

1.Knowledge Graphs Meet Multi-Modal Learning: A Comprehensive Survey 1.1多模态实体对齐 1.2多模态实体链接 研究进展&#...

windows 平台如何点击网页上的url ,会打开远程桌面连接服务器

你可以使用自定义协议方案&#xff08;Protocol Scheme&#xff09;实现网页上点击URL后自动启动远程桌面连接&#xff08;mstsc&#xff09;&#xff0c;参考你提供的C代码思路&#xff0c;如下实现&#xff1a; 第一步&#xff1a;注册自定义协议 使用类似openmstsc://协议…...

基于Spark的热门动漫推荐数据分析与可视化系统的设计与实现(采用Python语言Django框架,Hadoop,spider爬虫等技术实现)

基于Hadoop的热门动漫推荐数据分析与可视化系统 基于Django的热门动漫推荐数据分析与可视化系统 1. 开发工具和实现技术 Pycharm, Python3.7&#xff0c;Django框架&#xff0c;Hadoop&#xff0c;Spark&#xff0c;Hive&#xff0c;spider爬虫&#xff08;爬取动漫之家的动…...

8. 机器人模型训练与评估(具身智能机器人套件)

1. 训练 使用python lerobot/scripts/train.py可以进行机器人控制模型训练&#xff0c;一般需要几个小时&#xff0c;可以在outputs/train/act_lekiwi_test/checkpoints查看锚点数据&#xff0c;下面为一组示例参数&#xff1a; python lerobot/scripts/train.py \--dataset.…...

计算机网络-服务器模型

一.服务器模型 1.支持多客户端访问 //单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 注&#xff1a;该模式remvform为阻塞态&#xff0c;服务器将等待接收数据 2..支持多客户端同时访问 (并发能力) socket…...

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1…...

OSPF网络类型:NBMA与P2MP

一、NBMA网络 NBMA网络的特点 连接方式&#xff1a; 支持多台设备连接到同一个网络段&#xff0c;但网络本身不支持广播或组播。典型例子&#xff1a;帧中继、ATM。 DR/BDR选举&#xff1a; 由于网络不支持广播&#xff0c;OSPF需要手动配置邻居。 仍然会选举DR&#xff08…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...