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

IO模型分类

IO模型分类

简单了解

阻塞I/O

当用户程序执行read,线程被阻塞,等待两个过程,内核数据准备好和数据从内核态拷贝到用户态。read才返回

非阻塞I/O

非阻塞的read请求在还没准备好数据就返回,期间程序不断轮询内核直到数据准备完成,内核拷贝数据至应用程序缓冲区中,read调用才可以获得结果。

非阻塞的I/O多路复用

避免轮询期间没法做其他事。当内核数据准备好时,以事件通知应用程序进行操作。前半过程不需要程序持续主动去关注处理

上述三个为同步调用,过程都是需要等待

异步I/O

让内核数据准备好和数据从内核拷贝到用户态两个过程都不用等待。

发起aio_read后,立即返回,内核自动将数据从内核空间拷贝到应用程序空间,拷贝过程为异步,不需要主动发起拷贝动作。

完整细分

如阻塞 IO、非阻塞 IO、多路复用 IO、信号驱动 IO、异步 IO

  1. 阻塞 IO(Blocking I/O)

    • 官方定义:在阻塞 IO 模型中,当进程(或线程)调用一个 IO 操作(如readwrite)时,该进程(或线程)会被阻塞,直到 IO 操作完成。这意味着在整个 IO 操作过程中,进程(或线程)会一直等待,不能执行其他任何操作。

    • 主要特点:

      • 简单直接:编程模型简单,易于理解和实现。开发人员不需要考虑复杂的 IO 状态检查和事件处理。

      • 效率较低:在 IO 操作期间,进程(或线程)处于阻塞状态,不能同时处理其他任务。在高并发场景下,大量的线程可能会因为等待 IO 操作而被阻塞,导致资源浪费和性能下降。

    • 主要原理和流程:

      • 当进程(或线程)发起一个 IO 请求(如从文件或网络读取数据)时,操作系统会将这个请求放入内核的 IO 队列中。然后,进程(或线程)会进入阻塞状态,等待内核完成 IO 操作。一旦内核完成数据的读取或写入,它会将数据返回给进程(或线程),同时唤醒被阻塞的进程(或线程),使其继续执行后续的操作。

    • 主要应用场景和用途:

      • 简单的单线程应用:在一些简单的命令行工具或单线程的客户端 - 服务器通信中,当并发请求较少时可以使用。例如,一个简单的本地文件读取程序,只需要读取一个文件的内容,不涉及复杂的并发操作,使用阻塞 IO 就足够了。

      • 传统的同步编程模型:在一些传统的、对性能要求不是特别高的同步编程场景中,如早期的简单网络应用,阻塞 IO 可以满足基本的需求。

  2. 非阻塞 IO(Non - blocking I/O)

    • 官方定义:非阻塞 IO 是指当进程(或线程)调用一个 IO 操作时,如果 IO 操作不能立即完成(如没有数据可读或缓冲区已满无法写入),操作系统不会让进程(或线程)阻塞等待,而是返回一个错误码(表示 IO 操作暂时无法完成),进程(或线程)可以继续执行其他操作,然后在合适的时候再次发起 IO 请求。

    • 主要特点:

      • 需要轮询:由于 IO 操作不会阻塞进程(或线程),为了获取 IO 操作的结果,需要进程(或线程)不断地轮询(检查)IO 操作的状态,这增加了编程的复杂性。

      • 部分提高并发性能:相比于阻塞 IO,非阻塞 IO 可以在等待 IO 操作完成的同时,利用等待时间执行其他任务,一定程度上提高了系统的并发性能,但轮询机制可能会导致 CPU 资源的浪费。

    • 主要原理和流程:

      • 当进程(或线程)发起 IO 请求时,操作系统会立即返回,如果 IO 操作可以立即完成(如缓冲区中有数据可读或有空间可写入),则返回数据或完成写入;如果 IO 操作不能立即完成,则返回一个表示操作暂时无法完成的错误码。进程(或线程)收到这个错误码后,可以先去执行其他任务,然后在后续的某个时间再次发起 IO 请求,直到 IO 操作完成。

    • 主要应用场景和用途:

      • 简单的高并发服务器雏形:在一些简单的高并发服务器设计的早期阶段,可以使用非阻塞 IO 来处理多个客户端的请求。例如,一个简单的网络服务器,通过不断地轮询多个客户端套接字,尝试读取数据,当有数据可读时进行处理,这样可以在一定程度上同时处理多个客户端的请求,但轮询机制可能会消耗大量的 CPU 资源。

      • 结合其他机制提高性能:非阻塞 IO 可以和其他高效的 IO 机制(如多路复用 IO)结合使用,在多路复用的基础上,对于那些偶尔需要快速检查 IO 状态的情况,非阻塞 IO 可以提供更灵活的操作方式。

  3. 多路复用 IO(I/O Multiplexing)

    比较重要更详细可看:

    Select,poll,epoll和IO多路复用和NIO-CSDN博客

    • 官方定义:多路复用 IO 是一种通过一个线程(或进程)来同时处理多个 IO 通道(如文件描述符、套接字等)的 IO 模型。它使用系统调用(如selectpollepoll)来监听多个 IO 通道的状态,当其中任何一个通道有 IO 事件发生(如可读、可写)时,系统调用会返回,然后程序可以对相应的通道进行 IO 操作。

    • 主要特点:

      • 高效利用资源:通过一个线程(或进程)管理多个 IO 通道,减少了线程(或进程)的创建和销毁成本,同时避免了大量线程(或进程)阻塞等待的情况,能够高效地利用系统资源,提高系统的并发处理能力。

      • 事件驱动编程:基于事件驱动,程序只需要关注有事件发生的 IO 通道,不需要像非阻塞 IO 那样不断地轮询每个通道,降低了 CPU 的占用率。

    • 主要原理和流程:

      • 首先,程序将需要监听的多个 IO 通道(通过文件描述符等表示)添加到多路复用器(如selectpollepoll)中。然后,多路复用器会阻塞等待,当其中任何一个通道有 IO 事件发生(如网络套接字上有数据可读、可写或出现异常情况)时,多路复用器会返回,通知程序哪些通道有事件发生。程序收到通知后,就可以对相应的通道进行 IO 操作。

    • 主要应用场景和用途:

      • 高性能网络服务器:在大多数高性能的网络服务器(如 Nginx、Redis 等)中广泛应用。例如,Nginx 使用多路复用 IO 来同时处理大量的客户端连接请求,通过监听多个套接字的可读、可写事件,高效地处理 HTTP 请求和响应,实现高吞吐量和低延迟的网络服务。

      • 需要同时处理多个 IO 源的系统:在任何需要同时处理多个文件、网络连接等 IO 源的场景下,如分布式系统中的节点间通信、数据库服务器处理多个客户端连接等,多路复用 IO 都可以提供高效的 IO 处理方式。

  4. 信号驱动 IO(Signal - driven I/O)

    • 官方定义:信号驱动 IO 是一种 IO 模型,当一个描述符(如文件描述符或套接字)上的 IO 操作可以进行时(如数据到达可读或缓冲区可写),操作系统会向进程发送一个信号,进程收到信号后,再调用相应的 IO 操作函数来处理 IO 事件。

    • 主要特点:

      • 异步通知机制:与阻塞 IO 和非阻塞 IO 不同,信号驱动 IO 不需要进程(或线程)主动去检查 IO 操作的状态,而是由操作系统在 IO 事件发生时主动通知进程(或线程),这种异步通知机制可以提高程序的执行效率。

      • 信号处理复杂性:信号驱动 IO 需要处理信号相关的复杂问题,如信号的捕获、信号处理函数的编写等。信号处理函数的执行上下文和程序的主流程是分开的,可能会涉及到一些并发安全和资源共享的问题。

    • 主要原理和流程:

      • 首先,进程需要使用系统调用(如fcntl)设置描述符的信号驱动属性,告诉操作系统当这个描述符上有 IO 事件发生时发送一个信号。当 IO 事件发生(如数据到达套接字)时,操作系统会向进程发送一个预先定义好的信号(如SIGIO)。进程在收到信号后,会在信号处理函数中调用相应的 IO 操作函数(如readwrite)来处理 IO 事件。

    • 主要应用场景和用途:

      • 实时性要求较高的系统:在一些对实时性要求较高的系统中,如实时数据采集系统、实时通信系统等,信号驱动 IO 可以在数据到达或可发送时及时通知程序进行处理,减少延迟。

      • 需要及时响应 IO 事件的场景:当希望在 IO 事件发生的第一时间就进行处理,而不是通过轮询或其他方式延迟处理的场景下,信号驱动 IO 是一种选择。不过,由于信号处理的复杂性,它在实际应用中不如多路复用 IO 和异步 IO 广泛。

  5. 异步 IO(Asynchronous I/O)

    • 官方定义:异步 IO 是一种 IO 模型,在这种模型中,当进程(或线程)发起一个 IO 操作时,操作会在后台自动进行,进程(或线程)不需要等待 IO 操作完成就可以继续执行其他任务。当 IO 操作完成后,操作系统会通过回调函数、事件通知或其他机制来告知进程(或线程)IO 操作已经完成。

    • 主要特点:

      • 真正的异步执行:与非阻塞 IO 和信号驱动 IO 相比,异步 IO 是真正的异步,进程(或线程)在发起 IO 操作后可以完全不用关心 IO 操作的进度,直到收到操作完成的通知,能够最大限度地提高系统的并发性能和资源利用率。

      • 编程模型较复杂:异步 IO 的编程模型相对复杂,需要使用回调函数、事件循环等机制来处理 IO 完成后的操作,对开发人员的要求较高。

    • 主要原理和流程:

      • 进程(或线程)通过系统调用发起一个异步 IO 操作,操作系统会记录这个操作并在后台执行。在 IO 操作执行期间,进程(或线程)可以继续执行其他任务。当 IO 操作完成后,操作系统会根据程序设置的通知方式(如调用回调函数、发送事件通知等)告知进程(或线程),然后进程(或线程)可以在相应的回调函数或事件处理程序中处理 IO 操作的结果。

    • 主要应用场景和用途:

      • 高性能高并发系统的后端服务:在现代高性能高并发的后端服务(如 Node.js 服务器、一些高性能的分布式存储系统)中广泛应用。例如,Node.js 基于事件驱动和异步 IO 模型,可以高效地处理大量的并发网络请求,在处理数据库查询、文件读写等 IO 操作时,通过异步 IO 方式,使程序能够在等待 IO 操作完成的同时处理其他请求,提高系统的整体性能和响应速度。

      • 需要处理大量并发 IO 操作的复杂应用:在一些需要处理大量并发的文件读写、网络通信等 IO 操作的复杂应用场景下,如大型的云计算平台、大数据处理系统等,异步 IO 可以提供高效的 IO 处理解决方案,充分利用系统资源,提高系统的吞吐量和并发处理能力。

相关文章:

IO模型分类

IO模型分类 简单了解 阻塞I/O 当用户程序执行read,线程被阻塞,等待两个过程,内核数据准备好和数据从内核态拷贝到用户态。read才返回 非阻塞I/O 非阻塞的read请求在还没准备好数据就返回,期间程序不断轮询内核直到数据准备完…...

使用API有效率地管理Dynadot域名,查看域名优惠信息

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…...

QT 中 QMessageBox 的简单用法

效果 思路 // 创建一个question弹出对话框,添加两个按钮:Yes和NoQMessageBox *box new QMessageBox(QMessageBox::Question, "提示", "确认删除的信息吗?", QMessageBox::Yes | QMessageBox::No, this);box->button(…...

2024-12-6-sklearn学习(4) 支持向量机 吴楚东南坼,乾坤日夜浮。

文章目录 sklearn学习(4) 支持向量机4.1 分类4.1.1 多元分类4.1.2 得分和概率4.1.3 非均衡问题 4.2 回归4.3 密度估计, 异常(novelty)检测4.4 复杂度4.5 使用诀窍(Tips on Practical Use)4.6 核函数4.6.1 自定义核4.6.1.1 使用 python 函数作为内核4.6.1…...

Linux 正确关机方式详解

在Linux系统中,正确地关机是一个重要的操作,它不仅影响到系统的数据完整性,还可能影响到其他用户的工作。本文将详细介绍Linux系统中的各种关机方式,包括它们的使用场景和具体命令。 为什么需要正确关机 在DOS和Windows系统中&a…...

React Portals 有什么用

React Portals是React提供的一种机制,它允许开发者将组件渲染到DOM树中的不同位置,而不受组件层次结构的限制。React Portals的主要用途和优势包括以下几个方面: 用途和优势 处理全局UI元素 React Portals允许将UI元素渲染到应用的根DOM之外…...

光学偏振的基础知识

前言与目录 XXX 目录 一、 二、 三、 一、总结 光的偏振 光具有三个基本特性,即波长、强度和偏振。光的波长很容易理解,以常见的可见光为例,波长范围为380~780nm。光的强度也很容易理解,一束光的强弱可以通过功率的大小来表征…...

小程序 - 计算器

小程序交互练习 - 计算器小程序 目录 计算器 功能描述 准备工作 创建项目 配置导航栏 创建utils目录 math.js文件内容 calc.js文件内容 页面内容 页面样式内容 页面脚本事件 功能截图 总结 计算器 在日常生活中,计算器是人们广泛使用的工具&#xff0…...

软件架构:从传统单体到现代微服务的技术演变

1.引言 在软件开发中,架构设计不仅仅是程序员的技术任务,它更是一个项目成功的关键。无论是小型应用还是大型分布式系统,软件架构都直接影响着系统的可维护性、可扩展性、性能和稳定性。理解软件架构的必要性,能够帮助开发人员做…...

CTF之密码学(rot密码)

ROT加密算法,也被称为Caesar加密,是一种简单的字母替换加密算法。以下是对ROT加密算法的详细介绍: 一、基本原理 ROT加密算法通过将字母表中的每个字母向后(或向前)移动固定的位置来加密文本。选择一个固定的偏移量&…...

linux安装nodejs管理器,并配置node、npm 软链接

一,安装nodejs管理器 注意——不同版本,可能有问题 亲测这个版本,安装后,npm正常使用——v20.10.0 二,配置软链接——快速访问——不要多些空格(会出现invalid option错误) ln -s /www/server…...

Linux 环境下 PostgreSQL 常用命令操作指南

在 Linux 系统中,PostgreSQL 配备了一系列实用命令以进行数据库操作。具体如下: 注意事项:若采用 docker 部署,需预先进入 docker 容器。 进入 docker 容器命令: docker exec -it 容器名 bash 向容器内复制本地文件命…...

Implicit style-content separation using lora

1.Introduction 图像风格化,这个任务涉及根据某些风格参考改编图像的风格,这些参考可以是基于文本或基于图像的,同时保持其内容不变,内容指的是图像的语义信息和结构,而风格通常指的是视觉特征和模式,例如颜色和纹理。这是一个有挑战的任务,因为风格和内容之间的强关联…...

网易博客旧文-----如何在WINDOWS下载安卓(android)源代码并和eclipse做关联

如何在WINDOWS下载安卓(android)源代码并和eclipse做关联 2013-02-05 17:27:16| 分类: 安卓开发 | 标签: |举报 |字号大中小 订阅 编写安卓程序时,有时想看看安卓某些类的实现,但默认情况下环境是不带的。…...

Qt入门9——绘图

基本概念 虽然Qt已经内置了很多的控件,但是不能保证现有控件就可以应对所有场景. 很多时候我们需要更强的"DIY"能力; Qt 提供了画图相关的API,可以允许我们在窗口上绘制任意的图形形状,来完成更复杂的界面设计。 绘图api核心类: 类说明QPaint…...

漫画之家系统:Spring Boot框架下的漫画版权保护

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...

K8S服务突然中断无法访问:报The node had condition: [DiskPressure]异常

一、背景 程序在运行过程中,突然无法访问,发现后台接口也无法访问;查看kuboard,发现报如下异常:The node had condition: [DiskPressure]. 继续查看磁盘使用率,发现系统盘使用率已经高达93%。问题前后呼应…...

5.11【机器学习】

先是对图像进行划分 划分完后, 顺序读取文件夹,在文件夹里顺序读取图片, 卷积层又称为滤波器,通道是说滤波器的个数,黑白通道数为1,RGB通道个数为3 在输入层,对于输入层而言,滤波…...

JavaWeb开发12

登陆拦截 会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应 会话跟踪:一种维护浏览器状态的方法,服务器需要识…...

《乌合之众》笔记

1.集体会降智,会互相传染 2.群体是无名氏,因此没必要承担责任。约束个人的责任感消失 3.有意识人格的消失,无意识人格的得势,思想和感情因为暗示和互相传染而转向一个共同的方向,以及立刻把暗示的观念转化为行动的倾…...

[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板

目录 X-CMD 发布 v0.4.15📃Changelog📦 env|pkg🪞 mirror📑 pb🎨 theme|starship|ohmyposh🤖 chat📝 man✅ 升级指南 X-CMD 发布 v0.4.15 📃Changelog 📦 env|pkg 新增…...

Vue前端开发-路由跳转及带参数跳转

在Vue 3中,由于没有实例化对象this,因此,无法通过this去访问 $route对象,而是通过导入一个名为 useRouter 的方法,执行这个方法后,返回一个路由对象,通过这个路由对象就可以获取到当前路由中的信…...

AI赋能:构建安全可信的智能电子档案库

在档案的政策与法规上,《中华人民共和国档案法》2020年修订新增,对电子档案的合法要件、地位和作用、安全管理要求和信息化系统建设等方面作出了明确规定,保障数字资源的安全保存和有效利用。 日前,国家档案局令第22号公布《电子…...

时间序列绘图1

用到的包 #时间序列预测 library(forecast) #数据可视化 library(ggplot2) #包含《Forecasting: Principles and Practice》第三版中使用的数据集和函数 library(fpp3)时间序列图 #提取1990年及以后的零售贸易职位的数据,并选择月份和就业人数 us_employment |>…...

云计算.运维.面试题

1、计算机能直接识别的语言( C )。 A、汇编语言 B、自然语言 C、机器语言 D、高级语言 2、应用软件是指( D )。 A、所有能够使用的软件 B、能被各应用单位共同使用的某种软件 C、所有计算机上都应使用的基本软件D、专门为某一应用目的而编制的软件 3、计算机的显示器是一…...

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML(三)Bootstrap5列表组全解析 前言(一)HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…...

黑马程序员MybatisPlus/Docker相关内容

Day01 MP相关知识 1. mp配置类: 2.条件构造器: 具体的实现例子: ①QuerryWapper: ②LambdaQueryWrapper: 3.MP的自定义SQL 4.MP的Service层的实现 5.IService下的Lambda查询 原SQL语句的写法: Lambda 查询语句的…...

01_Node.js入门 (黑马)

01_Node.js入门 知识点自测 从 index.js 出发&#xff0c;访问到 student/data.json 的相对路径如何写? A&#xff1a;../public/teacher/data.json B&#xff1a;./public/student/data.json C&#xff1a;../student/data.json <details><summary>答案</sum…...

在Java中使用Apache POI导入导出Excel(六)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;五&#xff09; 使用Apache POI组件操作Excel&#xff08;六&#xff09; 43、隐藏和取消隐藏行 使用 Excel&#xff0c;可以通过选择该行&#xff08;或行&#xff09;来隐藏工作表…...

黑马微服务开发与实战学习笔记_MybatisPlus_P2核心功能

系列博客目录 文章目录 系列博客目录Part1:条件构造器案例 基于QueryWrapper的查询案例 基于UpdateWrapper的查询条件构造器的用法总结 Part2:自定义SQL案例1案例2解决方案 Part3:IService接口IService接口基本用法实战案例准备工作开始基本用法实战IService的Lambda查询实战 批…...

华为云域名网站修改DNS服务器教程

修改单个域名的DNS服务器 登录域名注册控制台。 进入“域名列表”页面。 在域名列表中,单击“域名”列的待修改DNS服务器的域名。 进入域名信息页面。 图1 域名信息 在域名信息页面,单击“DNS服务器”后的“修改”,进入“修改DNS服务器”页面。 图2 修改DNS服务器 在…...

Redis 基础、Redis 应用

Redis 基础 什么是 Redis&#xff1f; Redis &#xff08;REmote DIctionary Server&#xff09;是一个基于 C 语言开发的开源 NoSQL 数据库&#xff08;BSD 许可&#xff09;。与传统数据库不同的是&#xff0c;Redis 的数据是保存在内存中的&#xff08;内存数据库&#xf…...

三分钟掌握MySQL-MVCC底层原理

MVCC介绍 mvcc是mysql为了解决脏读、不可重复读等事务之间读写问题而诞生的&#xff1b;它替代了一些场景下的低效锁&#xff0c;在保证隔离性的基础上&#xff0c;提升了读取效率和并发性。 MVCC实现 在mysql中mvcc是基于mysql的undo log和readview来实现的。 undo log 在…...

CSS 快速上手

目录 一. CSS概念 二. CSS语法 1. 基本语法规范 2. CSS的三种引入方式 (1) 行内样式 (2) 内部样式表 (3) 外部样式表 3. CSS选择器 (1) 标签选择器 (2) 类选择器 (3) id选择器 (4) 通配符选择器 (5) 复合选择器 <1> 空格 <2> 没有空格 <3> &q…...

51c视觉~YOLO~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12512597 1、Yolo8 1.1、检测PCB元件 技术世界正在以惊人的速度发展&#xff0c;而这种转变的核心是一个革命性的工具 — 计算机视觉。它最有趣的应用之一是电子印刷电路板 &#xff08;PCB&#xff09; 的检测和分析。本文…...

深入浅出:PHP函数的定义与使用

文章目录 前言什么是函数定义函数语法示例 调用函数示例 参数传递按值传递示例按引用传递示例默认参数示例可变数量的参数示例 返回值示例 变量作用域全局作用域示例局部作用域示例静态作用域示例 匿名函数示例闭包示例 递归函数示例 内置函数常见内置函数示例 用户自定义函数示…...

前端调试实践

作者&#xff1a;效能研发部 黄泽平 前言 在日常调试问题中&#xff0c;相信我们很多人都是用console去排查相关的问题&#xff0c;虽然问题也可以排查出来&#xff0c;但是有时它的效率并不高。这篇文章主要讲解关于断点和一些日常调试技巧的内容&#xff0c;方便你在日后调…...

芯科科技突破性超低功耗Wi-Fi 6和低功耗蓝牙5.4模块加速设备部署

致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;今日宣布推出SiWx917Y超低功耗Wi-Fi 6和低功耗蓝牙&#xff08;Bluetooth LE&#xff09;5.4模块。 作为成功的第二代无线开发平台的新产品&…...

Matlab自学笔记四十三:使用函数拆分日期时间型数据的子信息:年、月、日、时、分、秒

使用函数拆分日期时间型数据的子信息&#xff1a;年、月、日、时、分、秒&#xff0c;函数包括年year&#xff0c;季度quarter&#xff0c;月month&#xff0c;周week&#xff0c;日day&#xff0c;时hour&#xff0c;分minute&#xff0c;秒second&#xff0c;年月日ymd&#…...

【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处?

【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处&#xff1f; 重要性&#xff1a;★★★ &#x1f4af; NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化…...

【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、SessionPage &#xff08;一&#xff09;SessionPage 模块的基本功能 &#xff08;二&#xff09;基本使…...

python查找大文件

完整代码,不仅会捕获错误,还会输出大于 1MB 文件的大小(以 MB 为单位),并跳过访问受限或已删除的文件。 代码 import os# 查找当前目录及子目录下大于 1MB 的文件,并输出文件大小 for root, dirs, files in os.walk(.):for name in files:...

秒懂:使用js验证hash, content hash , chunk hash的区别

一、使用js验证hash, content hash , chunk hash的区别 1、计算一般的 Hash&#xff08;以简单字符串为例&#xff09; 使用crypto-js库来进行哈希计算&#xff0c;需提前引入npm install crypto-js库。 crypto-js&#xff1a; 是一个JavaScript加密算法库&#xff0c;用于实…...

RabbitMQ消息可靠性保证机制6--可靠性分析

在使用消息中间件的过程中&#xff0c;难免会出现消息错误或者消息丢失等异常情况。这个时候就需要有一个良好的机制来跟踪记录消息的过程&#xff08;轨迹溯源&#xff09;&#xff0c;帮助我们排查问题。 在RabbitMQ中可以使用Firehose实现消息的跟踪&#xff0c;Firehose可…...

【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)

目录 一、MongoDB数据库原理 二、MongoDB数据库和集合基本操作&#xff08;增删改查&#xff09; 三、MongoDB数据库的文档基本操作&#xff08;增删改&#xff09; 四、学习笔记 往期文章&#xff1a;【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客 一、MongoDB数据…...

IDL学习笔记(二)IDL处理卫星数据

IDL处理卫星数据 HDF文件数据集属性通用属性 常用HDF4操作函数常用的HDF5操作函数读取HDF文件的一般步骤 HDF4文件读取-----数据信息查询HDF4文件读取示例-----目标数据TIFF输出提取modis产品中数据&#xff0c;与某一点经纬度最接近的点有效结果&#xff0c;并按每行内容为日期…...

用点云信息来进行监督目标检测

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 概述问题分析Making Lift-splat work well is hard深度不准确深度过拟合不准确的BEV语义 模型总体框架显性深度监督 深度细化模块演示效果核心…...

Python编写api接口读取电商商品详情数据示例

以下是一个使用 Python 的 Flask 框架来编写一个简单的 API 接口&#xff0c;用于读取模拟的电商商品详情数据的示例代码。这里假设商品详情数据是存储在一个简单的字典中模拟数据库存储&#xff0c;实际应用中你需要连接真正的数据库&#xff08;如 MySQL、MongoDB 等&#xf…...

用纯 CSS 实现网格背景

是不是在日常开发中经常遇到实现网格的需求&#xff0c;网格通常对网页中展示的元素能起到很好的定位和对齐作用。 这里介绍如何只通过 CSS 来实现这个需求&#xff1f; 使用背景图​ 这里我们的背景图使用 SVG 来创建&#xff0c;首先&#xff0c;创建绘出一个正方形&#xff…...

CNN+LSTM+AM研究方向初尝试

CNNLSTMAM研究方向初尝试 简单介绍 CNN CNN 的基本结构 卷积层&#xff08;Convolutional Layer&#xff09;&#xff1a; 该层通过卷积操作提取输入数据的特征。卷积操作使用多个卷积核&#xff08;滤波器&#xff09;对输入图像进行局部感知&#xff0c;从而识别出边缘、纹…...