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

理解计算机系统_并发编程(5)_基于线程的并发(二):线程api和基于线程的并发服务器

前言
       

        以<深入理解计算机系统>(以下称“本书”)内容为基础,对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定

引入

        接续上一篇理解计算机系统_并发编程(4)_基于线程的并发(一):线程基础-CSDN博客

Posix线程简介

        概念:Posix线程是在C程序中处理线程的一个标准接口.而且在所有Linux系统上都可用.Pthreads定义了大约60个函数,允许程序创建,杀死和回收线程,与对等线程安全地共享数据,还可以通知对等线程系统状态地变化.

        ---解读:有api可以用是让人兴奋的,代码要写起来.

一个简单的Pthreads程序

        主函数(代表主线程)创建一个对等线程,然后等待他的终止.当主线程检测到对等线程终止后,他就通过调用exit终止该进程.

hello.c内容

#include"csapp.h"
void *thread(void *vargp);int main(){pthread_t tid;Pthread_create(&tid,NULL,thread,NULL); //生成对等线程Pthread_join(tid,NULL);                //等待对等线程终止exit(0);                               //终止当前进程中所有线程
}void *thread(void *vargp){printf("Hello,world!\n");return NULL;
}

        ---解读:从示例代码可以看出:线程和任务是分离的.主程序只管线程的生成和终止.任务由函数thread给出.二者之间的联系在Pthread_create()函数里,两个参数分别传入了函数名thread和代表参数vargp的NULL.---"分离"是构建程序时常用的方法.他的优点是便于模块化代码,也便于分工.

任务函数的分析

        本书原话:线程的代码和本地数据被封装在一个线程例程(thread routine)中.正如第二行里的原型所示,每个线程例程都以一个通用指针作为输入,并返回一个通用指针.如果想传递多个参数给线程例程,那么你应该将参数放到一个结构中,并传递一个指向该结构的指针.相似地,如果想要线程例程返回多个参数,你可以返回一个指向一个结构的指针. ---斜体字部分有解释

        ---解读:通用指针可以表示的数据,理论上是无限的.他可以指向一个结构(或结构数组),结构里面再扩展数据.

        这里有一个疑问:"线程例程返回多个参数,可以返回一个指向一个结构的指针",问题是线程例程的返回值在哪里?主函数中并没有接收.

        解决方案:输入参数和返回值放进一个结构(vargp)里.  举个例子,声明一个结构表示结果和参数

typedef struct{struct result* res;struct argument* arg;
}res_arg;

        给Pthread_create传第4个参数时传入struct res_arg*类型的数据.形参和返回值的数据分别由struct result和struct argument定义.

        这种写法的思路是用形参指针接收函数返回值.笔者以前写过:理解计算机系统_网络编程(4)_套接字api-CSDN博客

线程API        

创建线程pthread_create() 

        函数原型如下

typedef void *(func)(void *);int pthread_create(pthread_t *tid,pthread_attr_t *attr,func *f, void *arg);    //成功返回值为0,出错为非0

         ---解读:函数等于任务,用函数指针func表示,然后把函数指针和参数指针传入pthread_create()函数的第3个和第4个形参中,表示函数被放入线程tid中运行.

        第1个参数tid理解为生成一个线程ID.结合主函数来看:定义一个pthread_t变量,传入地址给函数.当pthread_create()返回时,参数tid包含新创建线程的ID.---黑体字是原话,佐证

        第2个参数attr改变新创建线程的默认属性.本书认为改变这些属性超出学习范围,调用时总传入NULL

获得自己的线程ID函数pthread_self()

        函数原型

pthread_t pthread_self(void);
//返回调用者的线程ID

        显然获得自己的线程必须在生成线程号之后---必须先调用pthread_create()

终止线程

        一个线程的终止的方式:

        1.当顶层的线程例程返回时,线程会隐式地终止. ---任务执行后所在线程自动终止,不需要干预

        2.通过调用pthread_exit函数,线程会显式地终止.函数原型如下:

void pthread_exit(void *thread_return);
//不返回

        3.某个对等线程调用Linux的exit函数,该函数终止进程以及所有与该进程相关的线程.

        4.另一个对等线程通过以当前ID作为参数调用pthread_cancel函数来终止当前进程.

        ---解读:笔者认为以上方法没有多少应用场景,

        比如第4条,让一个线程终止另一个线程,意义何在?第3条调用exit函数,相当于强制退出所有线程和进程.第2条由主线程调用后等待并终止,和示例程序中主线程调用exit的意思是相同的,多了一个thread_return可以设置一些数据,而这个工作可以留到"回收已终止线程的资源"里去做.

        综上所述,暂时不用多看,用示例里的写法即可.如果有遇到相应场景再来查.

回收已终止线程的资源pthread_join()函数

        函数原型

int pthread_join(pthread_t tid,void **thread_return);
//成功返回0,出错则为非0

        ---解读:函数会阻塞,直到线程终止,回收已终止线程的资源.有两点说明

        1>必须指定线程ID,这点和进程中的wait函数不一样,先执行完的子进程调用wait   

         2>将线程例程返回的通用(void *)指针赋值为thread_return指向的位置.这里解决了上面标题"任务函数的分析"提出的疑问:线程任务运行的返回值去了哪里?线程返回的结构指针,被另一个双重指针接收.

分离线程pthread_detach()函数

        线程分离detach和线程结合join是相对的.

         本书原话:一个可结合的线程能够被其他线程收回和杀死.在被其他线程回收之前,他的内存资源(例如栈)是不释放的.相反,一个分离的线程是不能被其他线程回收或杀死,他的内存资源在他终止时由系统自动释放.

        函数原型

int pthread_detach(pthread_t tid);
//若成功返回0,出错返回非0

         同时,线程能够以pthread_self()为参数调用来分离自己.

        ---解读:线程资源面临释放问题,join和detach二选一.两者对比如下:

        join显式释放资源,并接收线程任务返回值(也是显式).

        detach自动释放资源,暂时没看见接收线程任务返回值的地方(如果需要接收,可以把输入参数和返回值放进一个结构(vargp)里),写法上detach相对简单一点(见本书P695"基于线程的并发服务器"代码)

初始化线程pthread_once()函数(略)

基于线程的并发echo服务器   

       本书P695中间echoservert.c,这里代码在之前基础上稍作了修改.还是不难看懂,

        注意:

        1>第21行代码可以和第8行合并,写到第8行

int *connfdp=Malloc(sizeof(int));

        2>第22行,第23行和第30行结合看,把已连接描述符connfd(int类型)先作为指针传入pthread_create,然后在thread函数中,先强转为int型指针,再提取出描述符的写法.

        3>第31行线程资源回收调用了detach()函数,在任务中先分离自己,自动回收资源

        4>后面讲了出错的原因是"竞争"

小结

        线程api的一点理解

        

相关文章:

理解计算机系统_并发编程(5)_基于线程的并发(二):线程api和基于线程的并发服务器

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续上一篇理解计算机系统_并发编程(4)_基于线程的并发(一…...

java刷题基础知识

List<int[]> merged new ArrayList<int[]>(); return merged.toArray(new int[merged.size()][]); 表示一个存储 int[] 类型元素的列表&#xff0c;list灵活支持扩展&#xff0c;因为不知道最后有几个区间&#xff0c;所以用list&#xff0c;最后toArray返回成数组…...

MATLAB语音情感识别神经网络方法

在MATLAB中使用神经网络进行语音情感识别通常涉及以下步骤&#xff1a;数据准备、特征提取、神经网络模型构建、训练与评估。以下是详细说明和示例代码&#xff1a; 1. 数据准备 数据集&#xff1a;推荐使用公开情感语音数据集&#xff08;如RAVDESS、CREMA-D、EMODB等&#x…...

PostgreSQL 服务器信号函数

PostgreSQL 服务器信号函数 PostgreSQL 提供了一组服务器信号函数&#xff08;Server Signaling Functions&#xff09;&#xff0c;允许数据库管理员向 PostgreSQL 服务器进程发送特定信号以控制服务器行为。这些函数提供了对数据库服务器的精细控制能力。 一、核心信号函数…...

流动式起重机Q2的培训内容有哪些?

流动式起重机 Q2 的培训内容主要分为理论知识和实际操作两部分&#xff0c;具体如下&#xff1a; 理论知识 基础理论知识&#xff1a;涵盖机械原理、液压原理、电气原理等内容&#xff0c;帮助学员理解起重机的基本工作原理。例如&#xff0c;通过机械原理知识&#xff0c;学员…...

虹科应用 | 探索PCAN卡与医疗机器人的革命性结合

随着医疗技术的不断进步&#xff0c;医疗机器人在提高手术精度、减少感染风险以及提升患者护理质量方面发挥着越来越重要的作用。医疗机器人的精确操作依赖于稳定且高效的数据通信系统&#xff0c;虹科提供的PCAN四通道mini PCIe转CAN FD卡&#xff0c;正是为了满足这一需求而设…...

Linux系统编程---Signal信号集

0、前言 在上一篇博客笔记文章中&#xff0c;对Linux进程间通信的信号进行了讲解&#xff0c;本章将接着上一篇文章的内容&#xff0c;继续对Linux进程间通信中信号部分的信号集这个小知识点进行梳理。 如果有对Linux系统编程有不了解的地方&#xff0c;欢迎查阅博主的Linux系统…...

上电单次复位触发电路

SA1相当于是另外一个触发信号&#xff0c;S2A是手动触发信号&#xff0c;当S1A和S2A开关都断开时,示波器A入口所连接线路为上拉状态&#xff0c;高电平为3V。 当S2A闭合&#xff0c;相当于手动拉低&#xff0c;可以用于唤醒单片机之类的。 当S1A闭合&#xff0c;模拟电源接入&…...

talk-linux 不同用户之间终端通信

好的&#xff01;下面是一个完整的指南和脚本&#xff0c;用于在两台 Linux 主机上配置并使用 talk 聊天功能&#xff08;假设它们在同一个局域网内&#xff09;。 ⸻ &#x1f9fe; 一、需求说明 我们需要在两台主机上&#xff1a; 1. 安装 talk 和 talkd 2. 启用 talkd 服…...

QGIS 将 Shapefile 导入 PostGIS 数据库

一、背景介绍&#xff1a;QGIS、PostgreSQL 和 PostGIS 的关系和用途 在开始动手操作之前&#xff0c;我们先简单了解一下 QGIS、PostgreSQL 和 PostGIS 之间的关系及其用途。 QGIS&#xff08;Quantum GIS&#xff09;&#xff1a;一款开源免费的桌面地理信息系统&#xff0…...

《内网渗透测试:绕过最新防火墙策略》

内网渗透测试是检验企业网络安全防御体系有效性的核心手段&#xff0c;而现代防火墙策略的持续演进&#xff08;如零信任架构、AI流量分析、深度包检测&#xff09;对攻击者提出了更高挑战。本文系统解析2024年新型防火墙的防护机制&#xff0c;聚焦协议隐蔽隧道、上下文感知绕…...

CSS结构性伪类、UI伪类与动态伪类全解析:从文档结构到交互状态的精准选择

一、结构性伪类选择器&#xff1a;文档树中的位置导航器 结构性伪类选择器是CSS中基于元素在HTML文档树中的层级关系、位置索引或结构特征进行匹配的一类选择器。它们无需依赖具体的类名或ID&#xff0c;仅通过文档结构即可精准定位元素&#xff0c;是实现响应式布局和复杂文档…...

【大模型LLM学习】MiniCPM的注意力机制学习

【大模型LLM学习】MiniCPM的注意力机制学习 前言1 Preliminary1.1 MHA1.2 KV-cache 2 GQAGQA的MiniCPM实现 3 MLAMLA的MiniCPM-3-4b的实现 TODO 前言 之前MiniCPM3-4B是最早达到gpt-3.5能力的端侧小模型&#xff0c;其注意力机制使用了MLA。本来想借着MiniCPM从MHA过到MLA的&am…...

stm32之PWR、WDG

目录 1.PWR1.1 简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.5.1 模式选择1.5.2 睡眠模式1.5.3 停止模式1.5.4 待机模式 1.6 实验1.6.1 修改主频1.6.2 睡眠模式串口发送接收1.6.3 停止模式对射式红外传感器计次1.6.4 待机模式实时时钟 2.看门狗…...

分布式任务调度XXL-Job

​ XXL-Job 是一款轻量级、分布式的任务调度平台&#xff0c;其核心设计解决了传统任务调度&#xff08;如Quartz&#xff09;在分布式场景下的‌任务分片‌、‌高可用‌、‌可视化管控‌等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解 一、主流任务…...

内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册

内存泄漏与OOM崩溃根治方案&#xff1a;JVM与原生内存池差异化排查手册 一、问题描述与快速解决方案 1. 核心问题分类 内存泄漏&#xff08;Memory Leak&#xff09; 现象&#xff1a;应用运行时间越长&#xff0c;内存占用持续攀升&#xff0c;GC回收效率下降&#xff0c;最…...

火山引擎发展初始

火山引擎是字节跳动旗下的云计算服务品牌&#xff0c;其云服务业务的启动和正式商业化时间线如下&#xff1a; 1. **初期探索&#xff08;2020年之前&#xff09;** 字节跳动在早期为支持自身业务&#xff08;如抖音、今日头条等&#xff09;构建了强大的基础设施和技术中…...

使用光标测量,使用 TDR 测量 pH 和 fF

时域反射计 &#xff08;TDR&#xff09; 是一种通常用于测量印刷电路板 &#xff08;PCB&#xff09; 测试试样和电缆阻抗的仪器。TDR 对于测量过孔和元件焊盘的电感和电容、探针尖端电容和电感&#xff0c;甚至寄生电感收发器耦合电容器也非常有用。这也是验证仿真或提取您自…...

mybatisplus 集成逻辑删除

一开始&#xff0c;没去查资料&#xff0c;后面要被AI气死了&#xff0c;先看它的的话 一开始&#xff0c;看ai的描述&#xff0c;我还以为&#xff0c;不需要改数据库&#xff0c;mybatis-puls自动拦截集成就可以实现逻辑删除&#xff0c;c&#xff0c;最后还是要给数据库加一…...

ABAP+旧数据接管的会计年度未确定

导资产主数据时&#xff0c;报错旧数据接管的会计年度未确定 是因为程序里面使用了下列函数AISCO_CALCULATE_FIRST_DAY&#xff0c;输入公司代码&#xff0c;获取会计年度&#xff0c;这个数据是在后台表T093C表中取数的&#xff0c;通过SE16N可以看到后台表数据没有数&#xf…...

KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?

问题描述如下&#xff1a;您好&#xff0c;遇到一点问题请帮忙支持一下&#xff1a; KT148A 这颗芯片&#xff0c; 我们上电后发码很难触发播放&#xff0c; 但用镊子将4pin PB0对地短接触发一下&#xff0c;再发码就很正常&#xff0c;这是什么原因&#xff1f; 根据现象来看…...

【大模型】DeepResearcher:通用智能体通过强化学习探索优化

DeepResearcher&#xff1a;通过强化学习在真实环境中扩展深度研究 一、引言二、技术原理&#xff08;一&#xff09;强化学习与深度研究代理&#xff08;二&#xff09;认知行为的出现&#xff08;三&#xff09;模型架构 三、实战运行方式&#xff08;一&#xff09;环境搭建…...

SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别

SpringBoot 2.x 在模块中创建 src/main/resources/META-INF/spring.factories 文件 文件内容如下&#xff1a; org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.xxx.xxx.yourfilejava1,\com.xxx.xxx.yourfilejava2 SpringBoot 3.x 在模块中创建 src/m…...

NY164NY165美光固态闪存NY166NY172

美光NY系列固态闪存深度解析&#xff1a;技术、体验与行业洞察 一、技术架构与核心特性解析 美光NY系列&#xff08;NY164/NY165/NY166/NY172&#xff09;作为面向企业级市场的固态闪存产品&#xff0c;其技术设计聚焦高可靠性与性能优化。从架构上看&#xff0c;该系列可能采…...

Spring Boot中HTTP连接池的配置与优化实践

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、HTTP连接池的核心价值 在微服务架构和分布式系统场景中&#xff0c;HTTP客户端频繁创建/断开连接会产生显著的性能损耗。通过连接池技术可以实现&#x…...

【docker】--镜像管理

文章目录 拉取镜像启动镜像为容器连接容器法一法二 保存镜像加载镜像镜像打标签移除镜像 拉取镜像 docker pull mysql:8.0.42启动镜像为容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 连接容器 法一 docker e…...

Logisim实验--华科计算机组成原理(保姆级教程) 头歌-存储系统设计实验(汉字库存储芯片扩展实验、MIPS寄存器文件设计)

汉字库存储芯片扩展实验 电路一&#xff1a; 电路二&#xff1a;电路和译码器设置。 两个电路的分线器设计&#xff1a; 只要把电路正确连接就能提交了&#xff0c;但要看到正确的实验结果就想要进行如下操作&#xff1a; 打开参考电路&#xff0c;我要做的就是将每个存储器内…...

Hapi.js知识框架

一、Hapi.js 基础 1. 核心概念 企业级Node.js框架&#xff1a;由Walmart团队创建&#xff0c;现由社区维护 配置驱动&#xff1a;强调声明式配置而非中间件 插件架构&#xff1a;高度模块化设计 安全优先&#xff1a;内置安全最佳实践 丰富的生态系统&#xff1a;官方维护…...

Baklib知识中台架构与智能引擎实践

知识中台架构设计实践 在数字化转型进程中&#xff0c;Baklib基于企业级知识管理需求&#xff0c;构建了模块化分层架构的知识中台体系。该架构采用数据湖仓融合技术&#xff0c;通过统一元数据管理打通业务系统间的信息壁垒&#xff0c;形成覆盖数据采集、清洗、标注的全链路…...

传输层协议UDP

传输层 负责数据能够从发送端传输接收端 . 再谈端口号 端口号 (Port) 标识了一个主机上进行通信的不同的应用程序 ; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一…...

在Java中实现Parcelable接口和Serializable接口有什么区别?

在 Java 中&#xff0c;Parcelable 和 Serializable 接口都用于对象的序列化和反序列化&#xff0c;但它们的实现方式、性能和使用场景有很大区别。以下是它们的核心对比&#xff1a; 1. 实现方式 Serializable 是 Java 原生接口&#xff0c;只需声明 implements Serializable…...

MinIO WebUI 页面使用

上传文件到桶&#xff0c;选择Share 如果桶是pulic权限&#xff0c;则可以有以下两种方式访问到该对象文件&#xff1a; http://ip:9001/api/v1/download-shared-object/aHR0cDovLzEyNy4wLjAuMTo5MDAwL3dhcmVob3VzZS9wYWltb24vRmxpbmstTG9nby5wbmc_WC1BbXotQWxnb3JpdGhtPUFXU…...

Python | Dashboard制作

运行环境&#xff1a;jupyter notebook (python 3.12.7) Pyecharts 1.安装pyecharts !pip install pyecharts 验证安装是否成功&#xff1a; from pyecharts import __version__ print("Pyecharts版本:", __version__) # 应显示1.x以上版本 2.运行基础版代码&am…...

视频编辑软件无限音频、视频、图文轨

威力导演APP的特色功能包括无限音频、视频、图文轨&#xff0c;以及上百种二/三维特技转场、音/视频滤镜和多种音视频混编输出。此外&#xff0c;它还支持实时高清HDV格式、模拟信号输出&#xff0c;并具有DV25、DVACM、DV、HDV输入和输出等功能。在视频编辑领域&#xff0c;威…...

HttpSession 的运行原理

HttpSession 的运行原理&#xff08;基于 Java Web&#xff09; HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制&#xff0c;它的核心作用是跟踪用户状态&#xff08;如登录信息、购物车数据等&#xff09;。 1. HttpSession 的基本概念 会话&#xff0…...

Axure应用交互设计:表格跟随菜单移动效果(超长表单)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅 Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:表格跟随菜单移动 主要内容:表格交互设计、动态面板嵌套、拖动时事件、移动动作 应用场景…...

Flannel vxlan模式的优缺点

VXLAN 模式的特点、优缺点 优点 高性能&#xff1a;VXLAN 利用内核态处理封装/解封装&#xff0c;性能优于用户态方案&#xff08;如 UDP&#xff09;&#xff0c;适合大规模集群。网络隔离&#xff1a;通过 VNI&#xff08;VXLAN Network Identifier&#xff0c;24 位&#…...

中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布

近日&#xff0c;国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告&#xff08;2025年第10号&#xff09;&#xff0c;GB/T 28168—2025《信息技术 中间件 消息中间件技术要求》国家标准正式发布&#xff0c;并将于2025年11月1日正式实施。中电金信作…...

AcroForm 格式化文本(域)字段

概述 Acrobat提供了两个事件(脚本位置)来处理文本字段格式化:Keystroke(更改)事件和 Format事件。这两个事件可以共同控制输入到字段中的数据的格式以及文本字段中显示数据的外观。本文中涉及的所有脚本以及更多示例都包含在FormattingExamples.pdf文件中。 Keystroke事…...

机器学习——聚类算法练习题

一、 随机创建不同二维数据集作为训练集 &#xff0c;并结合k-means算法将其聚类 &#xff0c;你可以尝试分别聚类不同数量的簇 &#xff0c;并观察聚类 效果&#xff1a; 聚类参数n_cluster传值不同 &#xff0c;得到的聚类结果不同 代码展示&#xff1a; from sklearn.da…...

U-BOOT

使用正点原子已经移植好的U-BOOT编译完成后拷贝到SD卡中烧写到板子上中&#xff0c;将开发板设为SD卡启动模式&#xff0c;上电启动开发板&#xff1b;打开 MobaXterm 终端模拟软件&#xff0c;设置好串口参数连接开发板 USB 调试串口&#xff0c;最后按核心板上的 PS_RST 复位…...

JVM之虚拟机运行

虚拟机运行快速复习 try-catch&#xff1a;catch-异常表栈展开&#xff0c;finally-代码复制异常表兜底 类的生命周期&#xff1a;加载&#xff0c;连接&#xff08;验证&#xff0c;准备&#xff0c;解析&#xff09;&#xff0c;初始化&#xff0c;使用&#xff0c;卸载 类…...

玩转ChatGPT:DeepSeek实战(统一所在地格式)

一、写在前面 前段时间去交流&#xff0c;又被问到一个实际问题&#xff1a; 在组织全区活动时&#xff0c;我们设计了一份签到表&#xff0c;其中包含“所在单位地区”一列&#xff0c;目的是希望按地级市&#xff08;如南宁市、柳州市等&#xff09;对参与者进行分组&#…...

蓝桥杯题库经典题型

1、数列排序&#xff08;数组 排序&#xff09; 问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 输入格式 第一行为一个整数n。 第二行包含n个整数&#xff0c;为待排序的数&#xff0c;每个整数的绝对值小于10000。 输出格式 输出…...

极限学习机进行电厂相关数据预测

使用极限学习机&#xff08;Extreme Learning Machine, ELM&#xff09;进行电厂相关数据预测的详细步骤和MATLAB代码示例。假设任务是预测电厂发电量或设备状态&#xff08;如温度、压力&#xff09;&#xff0c;代码包含数据预处理、ELM模型构建、训练与预测全过程。 1. 数据…...

【Axure视频教程】中继器表格间批量控制和传值

今天教大家在Axure中制作中继器表格间批量控制和传值的原型模板&#xff0c;效果包括&#xff1a; 选中和取消选中——点击表格中的多选按钮可以选中或取消选中该行内容&#xff1b; 全选和全部取消选中——点击表头左上角的多选按钮可以选中或取消选中表格的所有内容&#xf…...

Axure高级交互设计:文本框循环赋值实现新增、修改和查看

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅本专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:文本框循环赋值 主要内容:使用设置文本动作实现文本框、文字标签的读取与赋值 应…...

Springboot之类路径扫描

SpringBoot框架中默认提供的扫描类为&#xff1a;ClassPathBeanDefinitionScanner。 webFlux框架中借助RepositoryComponentProvider扫描符合条件的Repository。 public class ClassPathScanningCandidateComponentProvider{private final List<TypeFilter> includeFilt…...

是 OpenCV 的 CUDA 模块中用于在 GPU 上对图像或矩阵进行转置操作函数cv::cuda::transpose

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::transpose 是 OpenCV 的 CUDA 模块中的一个函数&#xff0c;用于在 GPU 上对图像或矩阵进行转置操作&#xff08;Transpose&#xff0…...

2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 推荐刷题方法&#xff1a; 一、适合人群二、本期训练时间三、如何参加四、七日集训第1期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、逻辑分析第3天、逻辑分析第4天第5天第6天第7天 六、集训总结国内直接使用最新o3、o4-mini-high、GP…...