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

Linux/AndroidOS中进程间的通信线程间的同步 - POSIX IPC

1 什么是POSIX?

POSIX(Portable Operating System Interface)即可移植操作系统接口,它是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列标准的总称。以下为你展开介绍:

  • 产生背景:在20世纪80年代,UNIX操作系统存在着多种不同的版本和实现,这些版本之间存在着差异,这给应用程序的移植和开发带来了很大的困难。为了解决这个问题,IEEE计算机协会开始制定POSIX标准,旨在定义一套通用的操作系统接口,使得应用程序能够在不同的UNIX系统上实现高度的可移植性。
  • 主要内容:POSIX标准涵盖了进程管理、文件系统、网络通信、输入输出等多个方面的接口定义。例如,在进程管理方面,定义了创建、终止、等待进程等函数接口;在文件系统方面,规定了文件的打开、关闭、读写等操作的接口规范。
  • 应用场景:POSIX标准广泛应用于各种UNIX类操作系统,如Solaris、FreeBSD、Linux等。许多企业级应用程序、网络服务器软件、数据库管理系统等都是基于POSIX标准开发的,从而确保了这些软件在不同的UNIX系统上具有一致的行为和性能。
  • 意义和影响:POSIX标准的出现,极大地促进了UNIX系统的发展和应用。它使得软件开发者可以更加专注于应用程序的功能实现,而不必过多地考虑不同操作系统之间的差异。同时,POSIX标准也为操作系统的标准化和规范化奠定了基础,推动了操作系统技术的不断进步。

除了UNIX类操作系统,现在也有一些其他操作系统为了实现更好的兼容性和可移植性,也部分支持POSIX标准,使得基于POSIX开发的软件能够在这些系统上运行。

2 POSIX标准是如何发展和演变的?

POSIX标准的发展和演变是一个长期且持续的过程,以下是其主要的发展阶段和关键节点:

  1. 早期的制定(20世纪80年代):20世纪80年代初,IEEE计算机协会下属的一个委员会开始致力于开发一套统一的UNIX系统接口标准,以解决当时UNIX系统版本众多且互不兼容的问题。1983年,IEEE成立了POSIX工作组(IEEE Project 1003),正式启动POSIX标准的制定工作。1988年,POSIX.1标准(IEEE Std 1003.1-1988)发布,它定义了基本的操作系统服务接口,包括进程管理、文件和目录操作、信号处理等,为应用程序在不同UNIX系统间的移植提供了基础。
  2. 扩展与完善(20世纪90年代):1990年,POSIX.2标准发布,该标准主要关注shell和工具,定义了shell命令语言、实用程序的接口和行为规范,如常见的文本处理工具、文件操作工具等。随着网络技术的发展,1995年发布了POSIX.4标准,将实时操作系统功能和交互式用户应用程序接口集成到POSIX标准中,增加了对实时性、异步I/O、消息队列等功能的支持,以满足实时系统和嵌入式系统的需求。
  3. 国际化与整合(20世纪90年代末 - 21世纪初):为了适应全球不同地区和语言的需求,POSIX标准引入了国际化相关的内容,支持多字节字符集、区域设置等功能,使软件能够更好地在不同语言环境下运行。1999年,IEEE将多个POSIX子标准进行整合和修订,发布了IEEE Std 1003.1-1999标准,进一步完善了标准内容,并对一些接口进行了优化和澄清。
  4. 持续更新与适应新技术(21世纪以来):进入21世纪,随着计算机技术的快速发展,新的硬件平台、软件架构和应用场景不断涌现,POSIX标准也持续更新。例如,对多核处理器、云计算、物联网等新兴技术的支持逐渐被纳入标准的考虑范围。同时,POSIX标准与其他国际标准组织(如ISO)合作,使标准在全球范围内得到更广泛的认可和应用。ISO将POSIX标准采纳为国际标准ISO/IEC 9945,进一步推动了POSIX标准的国际化进程。在这一时期,POSIX标准不断修订和更新,以保持其在现代操作系统环境中的适用性和先进性。

如今,POSIX标准仍然在不断发展和演变,以适应不断变化的技术环境和应用需求。 其发展历程反映了操作系统技术的进步以及对软件可移植性、兼容性和功能性的持续追求。

3 Linux/Android遵循POSIX标准

POSIX.1b 实时扩展定义了一组 IPC 机制,这些 IPC 机制被统称为 POSIX IPC。这三种 POSIX IPC机制具体如下。

  • 消息队列可以用来在进程间传递消息。消息边界被保留了下来,这样读者和写者就以消息为单位(与管道提供的无分隔符的字节流是不同的)进行通信了。POSIX 消息队列允许给每个消息赋一个优先级,这样在队列中优先级较高的消息会排在优先级较低的消息前面。
  • 信号量允许多个进程同步各自的动作。POSIX 信号量是一个由内核维护的整数,其值永远都不会小于 0。POSIX信号量在用法上很简单:它们是逐个分配的,并且在单个信号量上只能使用两个操作来将信号量的值加 1 或减 1。
  • 共享内存使得多个进程能够共享同一块内存区域。POSIX共享内存提供了一种快速 IPC。一个进程一旦更新了共享内存之后,所发生的变更立即对共享同一区域的其他进程可见。

本文将对各个 POSIX IPC 工具进行概述,并着重介绍它们的共有特性。

4 API概述

三种 POSIX IPC 机制拥有很多共有特性。下表对它们的 API 进行了总结。
在这里插入图片描述

4.1 IPC 对象名字

要访问一个 POSIX IPC 对象就必须要通过某种方式来识别出它。在 Linux 上,POSIX 共享内存和消息队列对象的名字的最大长度为 NAME_MAX(255)个字符,而信号量的名字的最大长度要少 4 个字符,这是因为实现会在信号量名字前面加上字符串 sem. 。

4.2 创建或打开 IPC 对象

每种 IPC 机制都有一个关联的 open 调用(mq_open()、sem_open()以及 shm_open()),它与用于打开文件的传统的 UNIX open()系统调用类似。给定一个 IPC 对象名,IPC open 调用会完成下列两个任务中的一个。

  • 使用给定的名字创建一个新对象,打开该对象并返回该对象的一个句柄。
  • 打开一个既有对象并返回该对象的一个句柄。

IPC open 调用返回的句柄与传统的 open()系统调用返回的文件描述符类似——它在后续的调用中被用来引用该对象。

IPC open 调用返回的句柄的类型依赖于对象的类型。对于消息队列来讲返回的是一个消息队列描述符,其类型为 mqd_t。对于信号量来讲,返回的是一个类型为 sem_t *的指针。对于共享内存来讲返回的是一个文件描述符。

所有 IPC open 调用都至少接收三个参数——name、oflag 以及 mode,如下面的shm_open()调用所示:

fd = shm_open("/mymem", O_CREAT|O_RDWR, S_IRUSR|S_IWUSR);

这些参数与传统的 UNIX open()系统调用接收的参数类似。name 参数标识出了待创建或待打开的对象。oflag 参数是一个位掩码,在这个参数中至少可以包含下列几种标记。

  • O_CREAT
    如果对象不存在,那么就创建一个对象。如果没有指定这个标记并且对象不存在,那么就返回一个错误(ENOENT)。
  • O_EXCL
    如果同时也指定了 O_CREAT 并且对象已经存在,那么就返回一个错误(EEXIST)。这两步——检查是否存在和创建——是原子操作。这个标记在不指定 O_CREAT 时是不起作用的。

根据对象的类型,oflag 还可能会包含 O_RDONLY、O_WRONLY、 O_RDWR 这三个值中的一个,其含义与它们在 open()中含义相同。

剩下的参数 mode 是一个位掩码,它指定了在对象被创建时(即指定了 O_CREAT 并且对象不存在)施加于新对象之上的权限。mode 参数能取的值与其在文件上的取值一样。与 open()系统调用一样,mode 中的权限掩码会根据进程的 umask取掩码。新 IPC对象的所有权和组所有权将根据发起这个 IPC open 调用的进程的有效用户 ID 和组 ID 来确定。

4.3 关闭 IPC 对象

对于 POSIX 消息队列和信号量来讲,存在一个 IPC close 调用来表明调用进程已经使用完该对象,系统可以释放之前与该对象关联的所有资源了。POSIX 共享内存对象的关闭则是通过使用 munmap()解除映射来完成的。

IPC 对象在进程终止或执行 exec()时会自动被关闭。

4.4 IPC 对象权限

IPC 对象上的权限掩码与文件上的权限掩码是一样的。访问一个 IPC 对象的权限与访问文件的权限是类似的,但对于 POSIX IPC 对象来讲,执行权限是没有意义的。

4.5 IPC 对象删除和对象持久性

与打开文件一样,POSIX IPC 对象也有引用计数——内核会维护对象上的打开引用计数
每个 IPC 对象都有一个对应的 unlink 调用,其操作类似于应用于文件的传统的 unlink()系统调用。unlink 调用会立即删除对象的名字,然后在所有进程使用完对象(即当引用计数等于 0 时)之后销毁该对象。

  • 对于消息队列和信号量来讲,这意味着当所有进程都关闭对象之后对象会被销毁;
  • 对于共享内存来讲,当所有进程都使用 munmap()解除与对象之间的映射关系之后就会销毁该对象。

当一个对象被断开链接之后,指定同一个对象名的 IPC open 调用将会引用一个新对象(在不指定 O_CREAT 时会失败)。
POSIX IPC 对象拥有内核持久性。对象一旦被创建,就会一直存在直到被断开链接或系统被关闭。这样一个进程就能够创建一个对象、修改其状态,然后退出并将对象留给在后面某个时刻启动的一些进程访问。

4.6 通过命令行列出和删除 POSIX IPC 对象

Linux系统上, IPC 对象是在一个挂载在根目录(/)下某处的真实或虚拟文件系统中实现的,因此可以使用标准的 ls 和rm 命令来列出和删除 IPC 对象。
在 Linux 上,POSIX IPC 对象位于挂载在设置了粘滞位的目录下的虚拟文件系统中。这个位是一个受限的删除标记,设置该位表示非特权进程只能够断开它自己拥有的POSIX IPC 对象的链接。

4.7 在 Linux 上编译使用 POSIX IPC 的程序

在 Linux 上,使用 POSIX IPC 机制的程序必须要与实时库 librt 链接起来,这可以通过在cc 命令中指定–lrt 选项来完成。

4.8 何为粘滞位

在Linux系统中,粘滞位(sticky bit)是文件和目录的一种特殊权限位。它有着独特的作用和表现,以下为你详细介绍:

  1. 基本概念:粘滞位是文件权限中的特殊标志之一,在传统的读(r)、写(w)、执行(x)权限基础上额外存在。可以使用 ls -l 命令查看目录或文件权限时,若其他用户的执行权限位置上显示为 t(本来执行权限位是 x,有粘滞位时显示 t,若没有执行权限,显示为 T),就表示该目录或文件设置了粘滞位。
  2. 作用原理:对于普通文件,粘滞位作用不大。但对于目录而言,粘滞位的作用非常重要。当一个目录设置了粘滞位后,只有该目录的所有者、文件的所有者或者超级用户(root)才有权删除或重命名该目录下的文件。即使其他用户对该目录有写入权限,也不能删除或重命名不属于自己的文件。例如,在 /tmp 目录(通常都设置了粘滞位)下,多个用户都可以创建文件,但每个用户只能删除或重命名自己创建的文件,而不能删除其他用户的文件。这样可以防止用户误删或恶意删除他人的文件,保证了目录中文件的安全性。
  3. 设置和取消:可以使用 chmod 命令来设置或取消粘滞位。例如,要给目录 test 设置粘滞位,可以使用命令 chmod o+t test;如果要取消 test 目录的粘滞位,则使用命令 chmod o-t test。其中,o 表示其他用户,+t 表示添加粘滞位,-t 表示去除粘滞位。
  4. 应用场景:除了 /tmp 目录外,一些公共可写的目录(如共享的临时文件存储目录等)也可能会设置粘滞位,以确保在多用户环境下文件的安全性和管理的有序性。

粘滞位是Linux系统中用于增强目录安全性和文件管理的重要权限机制,在多用户环境中起着关键作用。

相关文章:

Linux/AndroidOS中进程间的通信线程间的同步 - POSIX IPC

1 什么是POSIX? POSIX(Portable Operating System Interface)即可移植操作系统接口,它是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列标准的总称。以下为你展开介绍: 产生背景:在…...

5.2创新架构

一、MoE(Mixture of Experts,混合专家模型) 了解混合专家模型架构,与 Dense 架构相比有什么优劣 是一种提升大模型推理效率和参数利用率的关键技术 核心思想:在模型中增加多个“专家模块”(Experts&#x…...

驱动开发系列57 - Linux Graphics QXL显卡驱动代码分析(四)显示区域更新

一:概述 前面在介绍了显示模式设置(分辨率,刷新率)之后,本文继续分析下,显示区域的绘制,详细看看虚拟机的画面是如何由QXL显卡绘制出来的。 二:相关数据结构介绍 struct qxl_moni…...

疗愈服务预约小程序源码介绍

基于ThinkPHP、FastAdmin和UniApp开发的疗愈服务预约小程序源码,这款小程序在功能设计和用户体验上都表现出色,为疗愈行业提供了一种全新的服务模式。 该小程序源码采用了ThinkPHP作为后端框架,保证了系统的稳定性和高效性。同时&#xff0c…...

力扣118,1920题解

记录 2525.5.6 题目: 思路: 用一个二维数组dp[numRows][numRows]保存每一次动态规划的结果 1.令dp[0][0]1(第一列) 2.找规律 3.得到如下规律(以下情况均为列数大于1) if(col0){ dp[row][col]1 } else { dp[row][col]dp[row-1][col-1]dp[row-1][col] }…...

电池热管理CFD解决方案,为新能源汽车筑安全防线

在全球能源结构加速转型的大背景下,新能源汽车产业异军突起,成为可持续发展的重要驱动力。而作为新能源汽车 “心脏” 的电池系统,其热管理技术的优劣,直接决定了车辆的安全性、续航里程和使用寿命。电池在充放电过程中会产生大量…...

(一)毛子整洁架构(Domain Layer/Repository Pattern/Result Pattern/Error Pattern)

文章目录 项目地址一、整洁架构概念1.1 各个分层的功能1. Domain核心部件2. Application Layer3. Infrastructure layer3. Presenetation layer1.2 项目数据库二、Domain Layer2.1 Apartments 实体1. Current Value Obj2. Money Value Obj3. Apartment 类2.2 User 实体1. User类…...

XSS ..

Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏) - 白小雨 - 博客园跨站脚本攻击(XSS)主要是攻击者通过注入恶意脚本到网页中,当用户访问该页面时,恶意脚本会在用户的浏览器中执行…...

Github Action部署node项目

Github Action部署node项目 个人学习的时候,作为前端感觉这个CICD基本流程还是有必要了解的,这里记录一下Github Action部署node项目的流程,也算是一个学习的过程 首先肯定是要有一个可运行的node项目 编写部署文件 部署文件放置在.githu…...

高频面试题:设计秒杀系统,用Redis+Lua解决超卖

高频面试题:设计秒杀系统,用RedisLua解决超卖 **1. 问题背景****2. 解决方案:Redis Lua****为什么选择Redis Lua?****核心代码逻辑****Java调用示例(Spring Boot)** **3. 方案优势****4. 面试回答话术***…...

2、Kafka Replica机制与ISR、HW、LEO、AR、OSR详解

Kafka 作为分布式高可用消息队列,其副本(Replica)机制是实现高可靠性和数据一致性的核心。本文将系统介绍 Kafka 的 Replica 机制,并详细解释 ISR、HW、LEO、AR、OSR 等关键概念。 一、Kafka Replica机制概述 在分布式系统中&am…...

生成式 AI:从工具革命到智能体觉醒,2025 年的质变与突破

在上海胸科医院的手术室里,一束全息投影正精准勾勒出患者肺部的三维血管模型。主刀医生手持机械臂的瞬间,AI 导航系统已同步完成 200 次路径演算,将毫米级误差控制在 0.3 毫米以内 —— 这个真实发生在 2025 年的临床场景,标志着生…...

安卓基础(拖拽)

当用户长按或拖拽某个视图(如按钮、图片)时,需要提供视觉反馈(即阴影)。这行代码通常在拖拽事件的处理逻辑中,例如: view.setOnLongClickListener(v -> {// 创建拖拽阴影DragShadowBuilder …...

IoTDB磁盘I/O性能监控与优化指南

一、磁盘I/O性能观测核心指标 在现代计算机系统中,磁盘I/O性能对整体系统表现至关重要。为有效监控和优化磁盘I/O性能,需关注以下核心指标: ‌I/O读写延迟‌:衡量从发起I/O请求到接收响应的时间间隔。‌IOPS(Input/O…...

java每日精进 5.06【框架之功能权限】

0.概述 0.1 整体架构概述 这个RBAC权限系统基于Spring Security和Token认证机制,主要包含以下核心组件: 用户-角色-菜单的多对多关系模型 基于Token的认证流程 细粒度的权限控制(菜单权限、按钮权限) 灵活的权限配置方式 1…...

静态NAT

实验需求 PC1和PC2通过静态NAT去访问服务器 实验拓扑 图13-1 静态NAT 实验步骤 步骤1&#xff1a;IP地址的配置 PC1的配置 PC2的配置 R1的配置 <Huawei>system-view [Huawei]undo info-center enable [Huawei]sysname R1 [R1]interface g0/0/0 [R1-GigabitEt…...

RabbitMQ-api开发

前言 MQ就是接收并转发消息 核心概念 admin是用户 每个虚拟机上都有多个交换机 快速入门 引入依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.22.0</version></dependen…...

const MachineTree getMachineTree() ; MachineTree getMachineTree() const; 区别?

这两个函数声明在语法和语义上有明显的区别&#xff0c;它们的用途和行为也不同。让我们逐一分析它们的区别&#xff1a; 1. const MachineTree &getMachineTree(); 这个函数声明表示&#xff1a; 返回类型&#xff1a;const MachineTree &&#xff0c;即返回一个 M…...

使用DevTools工具调试前端页面,便捷脚本,鸿蒙调试webView

参考官方文章 便捷脚本 创建文本&#xff0c;复制修改后缀为bat 建立bat文件 echo off setlocal enabledelayedexpansion:: Initialize port number and PID list set PORT9222 set PID_LIST:: Get the list of all forwarded ports and PIDs for /f "tokens2,5 delims…...

浏览器存储 Cookie,Local Storage和Session Storage

什么是Cookie&#xff1f; 存储容量&#xff1a;一般限制在 4KB 以内。数据有效期&#xff1a;可以设置过期时间&#xff0c;若未设置&#xff0c;则在浏览器关闭时失效。数据共享&#xff1a;在同一域名下&#xff0c;不同页面可以共享cookie数据。并且在每次 HTTP 请求时&am…...

校内周赛题(思维题)

这次周赛的题目没有什么很难的代码实现&#xff0c;基本上都是对思路的把握。 与君共勉&#x1f339; 选取x个数&#xff0c;看能不能使得这x个数相加的结果是奇数。 如果x是偶数&#xff0c;他的分布肯定是一个奇数一个偶数若干个两两配对的奇数若干个两两配对的偶数。 如果…...

在 GitLab 中部署Python定时任务

在 GitLab 中部署定时任务(如每天早8点运行Python脚本并存储结果)可以通过 GitLab CI/CD 结合 计划任务(Scheduled Pipelines) 实现。以下是详细步骤和准备工作: 1. 准备工作 (1) 项目结构准备 确保项目包含: Python脚本(如 main.py):执行核心算法逻辑。 结果存储模…...

学习黑客Windows权限体系

已思考 24 秒 借着 Week 2 Day 4 的号角&#xff0c;我们把权限系统这条「双持长枪」摆上擂台&#xff1a;一边是 Windows DACL/icacls&#xff0c;另一边是 Linux sudoers。你将看到二者在授权语法、常见配置漏洞与提权打法上的一一对照——尤其关注 可写服务&#xff08;Wr…...

DXFViewer进行中2 -> 直线 解析+渲染 ✅已完成

DXFViewer进行中 : -&#xff1e;封装OpenGL -&#xff1e; 解析DXF直线-CSDN博客https://blog.csdn.net/qq_25547755/article/details/147723906 上篇博文 解析dxf直线635条 1. DXFViewer.h #pragma once #include "Application.h" #include <stdio.h> #inc…...

当智能科技遇上医疗行业会帮助疫苗如何方便管理呢?

​ 随着科技的发展&#xff0c;智能科技在医疗行业的应用日益广泛&#xff0c;在疫苗管理方面&#xff0c;温湿度监控设备的安装可以简化管理流程&#xff0c;提高监测效率&#xff0c;降低疫苗损坏的风险。 疫苗管理面临着诸多挑战和需求。疫苗的存储、运输、接种等环节都…...

Excel 数据 可视化 + 自动化!Excel 对比软件

各位Excel小能手们&#xff01;你们有没有过要对比两个Excel表格数据差异&#xff0c;却看得眼睛都花了的经历&#xff1f;其实啊&#xff0c;现在有专门的Excel文件比较软件能帮咱解决这大难题。这软件就是用来快速找出两个或多个Excel表格数据不同之处&#xff0c;还能把修改…...

Selenium模拟人类行为,操作网页的方法(全)

看到有朋友评论问&#xff0c;用selenium怎么模仿人类行为&#xff0c;去操作网页的页面呢&#xff1f; 我想了想&#xff0c;这确实是一个很大的点&#xff0c;不应该是一段代码能解决的&#xff0c; 就像是,如果让程序模拟人类的行为。例如模拟人类买菜&#xff0c;做饭&am…...

LVS负载均衡群集解析:理解LVS-NAT的工作原理

目录 一、LVS群集应用基础 1.群集技术概述 2.LVS虚拟服务器 3.NFS共享存储服务 二、案例&#xff1a;地址转换模式&#xff08;LVS-NAT&#xff09; 1.资源清单 2.修改主机名 3.配置负载调度器&#xff08;LVS上&#xff09; 4.配置节点服务器(web1、web2) 5.测试LVS…...

Leetcode Hot 100最长连续序列

题目描述 思路 思路1 我们对数组进行排序&#xff0c;通过遍历数组&#xff0c;如果前一个数组的值1等于当前数组的值&#xff0c;计数count&#xff0c;如果中断了&#xff0c;计算当前最大连续长度的值ans&#xff0c;并且统计值count重新置为1&#xff0c;最后返回count与…...

【东枫科技】代理英伟达产品:交换机系统

文章目录 总体详细&#xff1a;NVIDIA Spectrum SN5000详细&#xff1a;NVIDIA Spectrum SN2100详细&#xff1a;NVIDIA Spectrum SN4700详细&#xff1a;NVIDIA Spectrum SN2010详细&#xff1a;NVIDIA Spectrum SN4600详细&#xff1a;NVIDIA Spectrum SN3700详细&#xff1a…...

[前端]Javascript获取元素宽度

元素宽度属性对比示意图 ---------------------------------- | 外边距&#xff08;margin&#xff09; | -------------------------------- | | 边框&#xff08;border&#xff09; | | | -------------------------- | | | …...

MySQL + Qwen3-0.5B + Flask + Dify 工作流部署指南

1. 安装MySQL和PyMySQL 安装MySQL # 在Ubuntu/Debian上安装 sudo apt update sudo apt install mysql-server sudo mysql_secure_installation# 启动MySQL服务 sudo systemctl start mysql sudo systemctl enable mysql 安装PyMySQL pip install pymysql 使用 apt 安装 My…...

项目三 - 任务3:学生多态方式喂养宠物

在本次实战中&#xff0c;我们通过创建动物类及其子类&#xff08;猫、狗、鸟&#xff09;&#xff0c;并设计学生类的喂养方法&#xff0c;深入学习了Java中的多态和方法重载。学生类通过重载方式为每种动物提供专门的喂养方法&#xff0c;而通过多态方式则仅用一个方法即可喂…...

TypeScript速成

1、类型推断 这里的str已经推断为string类型&#xff0c;不能像JavaScript一样直接给str赋值number类型 2、类型注解 let str:stringabc 或者 let str:string strabc 3、类型断言 因为typescript会判定这个item可能为undefined类型&#xff0c;但是我们人为可以确定item一…...

CompletableFuture的底层ForkJoinPool

什么是 ForkJoinPool&#xff1f;它和普通线程池&#xff08;ThreadPoolExecutor&#xff09;有什么区别&#xff1f; 答案要点&#xff1a; ForkJoinPool 是 Java 7 引入的线程池&#xff0c;专为 分治任务 设计&#xff0c;支持递归任务拆分&#xff08;Fork&#xff09;和…...

高等数学第五章---定积分(§5.1定积分的概念、性质和应用)

5.1 定积分的概念及性质 一、引例 在学习定积分之前&#xff0c;我们先通过两个具体的例子来感受其思想和方法。 例1 曲边梯形的面积 定义&#xff1a;曲边梯形 由连续曲线 y f ( x ) y f(x) yf(x)&#xff08;假设 f ( x ) ≥ 0 f(x) \ge 0 f(x)≥0 在所讨论的区间上&…...

Java基础学完,继续深耕(0506)SQL--多表关系

多表关系 一对多(多对一) 一对一 多对多 一对多 场景&#xff1a;部门与员工的关系 &#xff08;一个部门下有多个员工&#xff09;。 实现&#xff1a;在数据库表中多的一方&#xff0c;添加字段&#xff0c;来关联一的一方的主键。 现在只是在语法上关联了&#xff0c;…...

python打卡day17

聚类的基础知识 知识点 聚类的指标聚类常见算法&#xff1a;kmeans聚类、dbscan聚类、层次聚类三种算法对应的流程 实际在论文中聚类的策略不一定是针对所有特征&#xff0c;可以针对其中几个可以解释的特征进行聚类&#xff0c;得到聚类后的类别&#xff0c;这样后续进行解释也…...

洛谷---P1629 邮递员送信

题目描述 有一个邮递员要送东西&#xff0c;邮局在节点 1。他总共要送 n−1 样东西&#xff0c;其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙&#xff0c;因此所有的道路都是单行的&#xff0c;共有 m 条道路。这个邮递员每次只能带一样东西&#xff0c;并且运…...

第11次:用户注册(简要版)

1、定义模板 在templates文件夹下边新建register.html&#xff0c;代码如下&#xff1a; <html lang"en"> <head><meta charset"UTF-8"><title>注册</title> </head> <body><!--{%是模板标签&#xff0c; …...

【IP101】图像特征提取技术:从传统方法到深度学习的完整指南

&#x1f31f; 特征提取魔法指南 &#x1f3a8; 在图像处理的世界里&#xff0c;特征提取就像是寻找图像的"指纹"&#xff0c;让我们能够识别和理解图像的独特性。让我们一起来探索这些神奇的特征提取术吧&#xff01; &#x1f4da; 目录 基础概念 - 特征的"体…...

对windows的简单介绍

目录 一、Windows 操作系统概述 1. 定义与定位 2. 核心目标 二、历史与版本演变 1. 早期阶段&#xff08;1985–1995&#xff09; 2. NT 内核时代&#xff08;1996–2009&#xff09; 3. 现代操作系统&#xff08;2012–至今&#xff09; 三、系统架构与技术特性 1. 内…...

Waymo公司正在加快其位于亚利桑那州新工厂的无人驾驶出租车(robotaxi)生产进度

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

JavaSE核心知识点01基础语法01-03(流程控制:顺序、分支、循环)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点01基础语法01-03&#xff0…...

信息论01:从通信到理论的飞跃

信息论01&#xff1a;从通信到理论的飞跃 1. 信息论的诞生与发展 1.1 前信息论时代&#xff08;1920s之前&#xff09; 信息与消息的混淆&#xff1a;传统认知中将信息等同于消息本身先驱者奠基&#xff1a; 哈里奈奎斯特 (1924)&#xff1a;提出《影响电报速度的某些因素》…...

Pandas 的透视与逆透视

目录 1. 透视 1.1 pivot 1.2 pivot_table 2.逆透视 1. 透视 透视是长表变宽表。 pivot() 和 pivot_table()两个函数都可以做到&#xff0c;后者可以聚合前者不行。 特性df.pivot()df.pivot_table()重复值处理要求索引和列的组合唯一&#xff0c;否则报错 ValueError允许…...

AI大模型驱动的智能座舱研发体系重构

随着AI大模型&#xff08;如LLM、多模态模型&#xff09;的快速发展&#xff0c;传统智能座舱研发流程面临巨大挑战。传统座舱研发以需求驱动、功能固定、架构封闭为特点&#xff0c;而AI大模型的引入使得座舱系统向自主决策、动态适应、持续进化的方向发展。 因此思考并提出一…...

【东枫科技】代理英伟达产品:DPU

NVIDIA BlueField-3 DPU 400Gb/s 基础设施计算平台 NVIDIA BlueField -3 数据处理单元 (DPU) 是第三代基础设施计算平台&#xff0c;使企业能够构建从云端到核心数据中心再到边缘的软件定义、硬件加速的 IT 基础设施。借助 400Gb/s 以太网或 NDR 400Gb/s InfiniBand 网络连接…...

【KWDB 创作者计划】一文掌握KWDB的时序表管理

前言 本文是在对时序数据库有一定了解&#xff0c;并且KWDB的数据库操作了解后进行学习的文章安排&#xff0c;如果对时序数据库与KWDB的数据库操作还不怎么了解的可以查阅官网的文档进行提前学习&#xff0c;当有了这些基础后&#xff0c;本文就是对时序数据表的一个管理操作…...

《算法导论(第4版)》阅读笔记:p9-p9

《算法导论(第4版)》学习第 6 天&#xff0c;p9-p9 总结&#xff0c;总计 1 页。 一、技术总结 1. data structure A data structure is a way to store and organize data in order to facilitate access and modifications(数据结构是一种存储和组织数据的方式&#xff0c…...