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

Linux相关概念和易错知识点(24)(认识信号、信号捕捉)

目录

1.认识信号

(1)后台进程和前台进程

①为什么Ctrl + C能终止前台进程?

②如何终止这个后台程序?

(2)信号、异步和同步

①同步

②异步

(3)信号的处理

2.信号捕捉

(1)signal函数

(2)信号位图(pending)

(3)信号处理函数指针数组(handler)

(4)信号递达、未决、阻塞

(5)block、pending、handler表

(6)默认信号处理的Action


1.认识信号

(1)后台进程和前台进程

当我们使用&结尾时,就意味着程序将被挂到后台执行,bash进程在启动后台进程后依然可以命令行解释。下面是一个例子

./test &启动后台进程,./test启动前台进程。当开始后台进程后,会先显示[1] pid,其中[1]叫做后台进程的作业号。当我们启动前台进程后,终端被前台进程占用,终止前台进程使用Ctrl + C,但后台进程杀不掉。

现在我们的问题是,为什么前台进程用Ctrl + C就能杀掉?如何终止这个后台程序?这就要用到信号的知识了。

①为什么Ctrl + C能终止前台进程?

整体流程:按下键盘Ctrl + C会有信号产生 -> OS接收信号并解读信号 -> OS给进程发送信号 -> 进程接收到信号后退出。整个信号处理和发送的过程都是针对前台进程,因此后台进程不会受到影响。

如何终止这个后台程序?

a.使用kill -9 (PID) 终止,本质上是发送9号信号给对应的进程

b.fg (作业号num,仅数字,不带[ ]) 将后台进程作业号为num的进程放到前台,再操作

除了./test &,我们还可以使用nohup ./test &使得遇到标准输出时专门打印到nohup.out文件(会自动创建)中,不影响前台执行的同时不遗漏信息。这里插一句,标准输出和标准错误流对象都是显示屏,nohup只会打印标准输出,如果程序有错误依然会打印到前台屏幕上,这样做的好处是输出和错误分离,我们可以清晰分辨什么是输出什么是错误。

(2)信号、异步和同步

信号是一种用户、OS、其它进程向目标进程发送异步事件的一种方式。

下面要稍微解释一下异步和同步的区别:

①同步

我们常规遇到的程序几乎就是同步的,同步指的是有计划执行,按原本的逻辑顺序执行的。比如我们的代码都是按照代码的顺序执行的,接受输入,按程序输出。

②异步

异步就是意料之外的,突然发生的,拥有不同执行路线。举个例子,当主程序执行时,如果我们按了Ctrl + C,OS将信号转发给进程后,进程会暂停主程序的执行,转而执行对应信号的相关操作,即退出程序对于主程序流来说,处理信号捕捉执行流就是突然的,意料之外的。

下面是常见的信号,其中1 ~ 31为普通信号,34 ~ 64为实时信号,我们只关注普通信号

其中Ctrl + C对应2号信号,Ctrl + \对应3号信号,9号信号是特殊处理过的信号,无法被捕捉。

我们还可以用man 7 signal查看各种信号的功能,绝大部分信号的功能都是终止信号

识别信号是内置的特性,也就是说进程认识信号,信号的处理方法在信号产生之前就知道和准备好。

(3)信号的处理

进程接收到信号后不一定会立即处理,如果此时进程正在做优先级很高的事情,它就会在合适时处理。因此从信号的产生到信号的处理中间还要进行信号的保存当处理信号时,进程选择执行默认行为,忽略信号,自定义动作。

2.信号捕捉

(1)signal函数

基本格式:(函数指针) signal(int signum, 函数指针 handler)

注意这个函数指针必须是void (int)格式的,否则不兼容

signal函数用于捕捉信号,捕捉到signum信号后执行void(int)格式的自定义函数handler,其中利用了回调函数的知识。

其返回值是返回先前的handler的值,方便我们进行回溯,给了我们机会还原信号处理方法。

下面是一个实例

我们需要体会信号捕捉后执行自定义函数的逻辑是异步的。signal只需设置一次,后续所有的信号2都会执行自己定义的函数。整个主程序就是一个设置信号捕捉(只是设置,程序设置完后不会陷在这里等信号,会继续向后执行),一个死循环。当信号被触发后,主程序流会切换到信号捕捉执行流中,执行完后再返回主程序流。整个过程都是一个进程实现的,并且信号捕捉执行流和主程序流并不是函数调用关系,这是理解异步执行的关键点。

(2)信号位图(pending)

进程如何记录下信号?信号是1 ~ 31连续的数字(31个信号),因此我们用位图中的前31位表示,哪一位为1就表示收到了哪一个信号。因此,2-SIGINT本质就是宏,表示位图,这个位图是uint32_t signalbits,它存在于PCB中进程接收信号的本质是OS修改目标进程PCB中的信号位图signalbits,将对应位数0 -> 1。

操作系统是进程的唯一管理者,只有OS有权力修改位图。无论以什么方式向进程发送信号,最终都是先发给OS,再让OS发送(写入)信号。

(3)信号处理函数指针数组(handler)

在信号处理函数调用上,进程需要一个函数指针数组sighandler_t arr[32],进程会先查位图,找到要处理的信号编号后会先-1,后用数字对应下标调用函数。

我们的捕捉信号操作(调用signal函数)本质上就是修改这张函数指针数组的指向,将函数指针的值改成自定义函数的地址。其中有2个地址很特殊,一个是0(SIG_IGN强转)一个是1(SIG_DFL强转。很显然,进程会对这两个“地址”进行特殊处理,为0时捕捉信号后就会忽略,为1时重置信号处理为默认操作。

信号捕捉后三种处理:忽略、默认、自定义

(4)信号递达、未决、阻塞

信号递达:实际执行信号的处理动作称为信号递达

信号未决:信号从产生到递达之间的状态(被存储的状态)叫信号未决

信号阻塞:信号一直处于未决,不进行递达时叫信号阻塞

注意信号未决的定义,当信号被阻塞时也叫信号未决。

信号产生 -> 信号未决(保存,在合适的时候递达) -> 信号递达(信号处理)就是信号处理的流程。阻塞信号是一种操作,进程可以选择阻塞某个信号,这样就算相应信号产生,进程虽然一定会把进程进行保存,但信号永远不会递达,除非我们解除阻塞。

注意阻塞和忽略是不同的,忽略是一种递达时的处理方式,而阻塞信号后信号不可能递达,它们之间根本没有关系。

(5)block、pending、handler表

接下来我们要联系前面的知识,利用三张表让信号处理的流程动起来。

当进程接收到信号后,会修改pending表,当将要处理信号时,进程先查看block表对应信号是否被阻塞,如果没有被阻塞就根据handler执行操作,如果被阻塞就不执行操作。

再次强调,处理信号是一个异步的执行流,它和主程序执行流占用同一个进程,也就是说当执行信号处理时,主执行流没有进行任何指令推进,进程会选择将整个信号处理完后再回到主执行流

但这就又带来了一个问题,当正处于信号处理执行流时,如果进程又收到了该信号应该怎么办?所以为防止冲突,当处于信号处理执行流时,对应信号block会被设为1,当执行完后block恢复。同时,我们还需知道pending表在处理信号前就会将1 -> 0,这样能分清处理信号期间有没有收到新的信号,且最多收到一次(就算多次触发,pending都为1)

也就是说,当信号处理执行时,进程可以接收信号修改pending,但由于block不会和原执行流冲突,当原信号处理执行流结束后,block变为0,再处理起冲突期间接收到的同一信号。

(6)默认信号处理的Action

当选择默认处理时,我们会看到大多数信号的处理方式是终止进程,也有少数是忽略。

man 7 signal可以查看所有信号的默认处理(Action)

Ign是忽略,Term是正常终止,不需要debug。还有一个Action是Core—特殊处理(核心转储)。Core会在当前目录形成文件pid.core,在进程崩溃的时候将进程在内存中的部分信息保存起来,在gdb里面输入core-file(core文件名)就可以事后调试如果是子进程出错呢?父进程wait到的status的第八个bit位core dump就标识了是否生成core文件。

ulimit -a查看core信息,我们可以使用ulimit -c 10240(文件大小限制)打开Core功能


如果终止信号的Action是core,并且core文件大小限制不为0,就代表着会生成文件,core文件名字不一定完全一致,根据系统而定。
 

相关文章:

Linux相关概念和易错知识点(24)(认识信号、信号捕捉)

目录 1.认识信号 (1)后台进程和前台进程 ①为什么Ctrl C能终止前台进程? ②如何终止这个后台程序? (2)信号、异步和同步 ①同步 ②异步 (3)信号的处理 2.信号捕捉 &#x…...

Scala的导入

//导入 //(1) 创建包:在src上右键,新建软件包 //(2)填写包名:小写 //(3)在包上右键,创建类。自动加入包名 //(4)导入。import 包名.类名 //导入多个类 //import jh.yuanlixueyuan.bigdata.scala03.{A,B,C} //导入包下的所有的类 /…...

strace,tcmalloc,asan使用

1、strace使用 1.1、编译strace strace开源库 解压strace-4.21.tar.xz 编译./configure --hostarm-ca9-linux-gnueabihf --prefix~/out make&&make install 1.2、参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息…...

C++中多态性在实际项目中的应用场景;C++中面向对象编程实现数据隐藏的方法

1. C中多态性在实际项目中的应用场景 C中多态性是面向对象编程中的一个重要概念,它允许我们在使用基类指针或引用的情况下,调用派生类对象的特定方法。这种灵活性使得多态性在实际项目中有着广泛的应用场景,具体包括但不限于以下几个方面&am…...

【QT常用技术讲解】使用QMovie+QLabel播放gif动态图片,实现“正在加载”功能(源代码在资源中下载)

前言 界面在实现事件等待时,通过会显示一个转圈圈的动态图片,表示“正在加载”,事件完成之后关闭图片,QT中可以使用QMovieQLabel完成gif动态图片的播放及关闭的效果。 效果图 功能讲解 1、加载动画 void MainWindow::addloadgi…...

iPhone苹果相册视频怎么提取音频?

在数字时代,视频已成为我们记录生活、分享故事的重要方式。然而,有时候我们只想保留视频中的音频部分,比如一段动人的背景音乐或是一段珍贵的对话。那么,苹果相册视频怎么提取音频呢?本文将介绍三种简单且实用的方法&a…...

【PyTorch】动态调整学习率 torch.optim.lr_scheduler.StepLR 调度器

文章目录 1. torch.optim.lr_scheduler.StepLR 官方文档详解2. 使用示例2.1 官方提供使用示例2.2 自己写代码测试方法2.2.1 get_last_lr() 方法2.2.2 state_dict() 方法2.2.3 load_state_dict() 保存和加载调度器 3. 思考3.1 为什么需要state_dict()3.2 get_lr() 与 get_last_l…...

完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最…...

在销售管理中,客户跟进时会出现什么问题?如何解决?

客户跟进表是销售工作中重要的一部分,用于记录与客户的每次沟通、执行计划和合作动态。然而,在实际使用中,客户跟进表经常会出现一些问题,导致效率低下甚至客户流失。本文就从常见问题出发,一一提供措施,让…...

【代码随想录|动态规划】

一、动态规划理论基础 |、动态规划包含题目类型 (1)背包问题 (2)打家劫舍 (3)股票问题 (4)子序列问题 ||、做一道题需要掌握(动态规划5步曲)&#xff1…...

时间敏感网络与工业通信的融合:光路科技电力专用交换机和TSN工业交换机亮相EP电力展

12月7日,第三十一届中国国际电力设备及技术展览会(EP Shanghai 2024)暨上海国际储能技术应用展览会在上海新国际博览中心圆满落幕。本届展会以“数字能源赋能新质生产力”为主题,系统地呈现了电力设备行业在技术融合、转型升级及上…...

初识Linux · 系统编程done

目录 前言: 死锁 可重入函数 读写锁 自旋锁 前言: 本文作为Linux系统编程的收尾工作,介绍的是些零碎的概念,比如死锁,可重入函数,自旋锁,读写锁等,其中死锁概念要重要些&#…...

JavaScript函数式编程: 实现不可变数据结构

# JavaScript函数式编程: 实现不可变数据结构 什么是不可变数据结构 在计算机编程中,不可变数据结构指的是数据一旦创建就不可更改或者修改。这意味着我们不能在原始数据上进行增删改操作,而是需要创建一个新的数据结构来代替原始数据进行操作。 为什么要…...

union find算法 c++

1.原理参考 labuladong-fucking-algorithm/算法思维系列/UnionFind算法详解.md at master jiajunhua/labuladong-fucking-algorithm GitHub 2.初级模式 #include <iostream>class UF {public:// 记录连通分量/* 构造函数&#xff0c;n 为图的节点总数 */UF(int n) {…...

路径规划 | 改进的人工势场法APF算法进行路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 改进的人工势场法&#xff08;APF&#xff09;路径规划算法 在路径规划中&#xff0c;人工势场法&#xff08;APF&#xff09;是一种常见的方法&#xff0c;但传统的APF算法容易陷入局部极小值&#xff0c;导致路径规…...

ES语句——DSL(kibana语句)

一、查询操作 查看当前索引的数据结构 _mapping Get ai-open-log*/_mapping 查询当前索引下的文档数以及分片信息 _count Get ai-open-log*/_count { "count": 12345, //当前索引下的文档总数 "_shards": { //分片信息 "total&…...

y3编辑器教学5:触发器2 案例演示

文章目录 一、探索1.1 ECA1.1.1 ECA的定义1.1.2 使用触发器实现瞬间移动效果 1.2 变量1.2.1 什么是变量1.2.2 使用变量存储碎片收集数量并展现 1.3 if语句&#xff08;魔法效果挂接&#xff09;1.3.1 地形设置1.3.2 编写能量灌注逻辑1.3.3 编写能量灌注后&#xff0c;实现传送逻…...

MVC配置文件及位置

配置文件位置 默认位置 WEB-INF目录下&#xff0c;文件名&#xff1a;<servlet-name>-servlet.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.…...

【razor】echo搭配relay功能分析

echo 要搭配relay 实现作者说relay在linux上跑,可以模拟丢包、延迟目前没看到如何模拟。relay监听9200,有俩作用 echopeer1 发relay,replay 把peer1的包给peer2 ,实现p2p能力。 接收端:采集后发送发给relay的 接收端的地址就是自己,的地址就是本地的9200,因此是让relay接…...

C++类的运算符重载

目标 让自定义的类直接使用运算符运算 代码 头文件及类定义 #include <iostream>using namespace std; class Complex {int rel;int vir; public:void show(){cout <<"("<<this->rel<<","<<this->vir<<&quo…...

Motionface RTASR 离线实时语音识别直播字幕使用教程

软件使用场景&#xff1a; 直播、视频会议、课堂教学等需要实时字幕的场景。 1&#xff1a;系统要求 软件运行支持32位/64位windows 10/11系统&#xff0c;其他硬件要求无&#xff0c;无显卡也能实时识别字幕。 2&#xff1a;下载安装 链接:百度网盘 请输入提取码 提取码&#…...

【论文阅读】相似误差订正方法在风电短期风速预报中的应用研究

文章目录 概述&#xff1a;摘要1. 引言2. 相似误差订正算法&#xff08;核心&#xff09;3. 订正实验3.1 相似因子选取3.2 相似样本数试验3.3 时间窗时长实验 4. 订正结果分析4.1 评估指标对比4.2 风速曲线对比4.3 分风速段订正效果评估4.4 风速频率统计 5. 结论与讨论 概述&am…...

learn-(Uni-app)输入框u-search父子组件与input输入框(防抖与搜索触发)

1.父子组件u-search &#xff08;1&#xff09;父组件 <!-- 父组件 --> <template> <div><searchBar change"change" search"search"></searchBar> </div> </template> <script> // 子组件搜索 import…...

UNIX数据恢复—UNIX系统常见故障问题和数据恢复方案

UNIX系统常见故障表现&#xff1a; 1、存储结构出错&#xff1b; 2、数据删除&#xff1b; 3、文件系统格式化&#xff1b; 4、其他原因数据丢失。 UNIX系统常见故障解决方案&#xff1a; 1、检测UNIX系统故障涉及的设备是否存在硬件故障&#xff0c;如果存在硬件故障&#xf…...

c#动态更新替换json节点

需求项目json作为主模板&#xff0c;会应用到多个子模版&#xff0c;当后续项目变更只需要修改主模板中节点&#xff0c;并且能够动态更新到原来的子模版中去。 主模板示例&#xff1a; {"A": {"A1": "","A2": false,"A3"…...

kubernetes的可靠性测试或者故障测试有哪些?

kubernetes的可靠性测试或者故障测试有哪些? 在 Kubernetes (K8s) 集群中,可靠性测试和故障性测试旨在确保系统能够稳定运行并具备应对各种故障的能力。这些测试主要针对集群的组件、应用程序和基础设施。以下是详细的测试内容和方法: 一、可靠性测试 1. 高可用性测试 目…...

datax和datax-web打包成docker运行

概述 datax和datax-web从一台机器迁移到另一台时&#xff0c;要重新搭建一套运行环境&#xff0c;比较麻烦&#xff1b;打包成docker镜像后迁移就方便多了; 因为我的mysql版本是8&#xff0c;需要在datax的read和write中手动添加8的jdbc驱动 所以我先各自下载好了datax和data…...

ThreadLocal原理解析

ThreadLocal原理解析 本篇将带大家了解ThreadLocal的使用方法&#xff0c;并且深度剖析其原理和作用&#xff0c;通过阅读源码的方式&#xff0c;进一步了解其内部原理 ThreadLocal 是 Java 提供的一个工具类&#xff0c;用于为每个线程维护一个独立的变量副本。每个线程可以访…...

Android 分析 Activity 与 Fragment 的区别,部分使用的差异

一、基本概念 Activity&#xff1a;Activity 是应用中单独一个界面的一个组件&#xff0c;通常一个 Activity 对应一个界面&#xff08;或屏幕&#xff09;。Activity 控制了一个应用界面的生命周期&#xff0c;并且能够处理用户的输入和交互。 Fragment&#xff1a;Fragment …...

前端(Ajax)

1.客户端请求 向https://jsonplaceholder.typicode.com/users发送get请求 const xhr new XMLHttpRequest();console.log(xhr.readyState);xhr.open(get, https://jsonplaceholder.typicode.com/users)console.log(xhr.readyState);xhr.send();console.log(xhr.readyState);xh…...

【C++】约瑟夫环问题:深度解析与高级优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言约瑟夫环问题&#xff1a;深度解析与高级优化&#x1f4af;题目描述&#x1f4af;解决方案详解直接模拟法&#xff08;基于 C 实现&#xff09;代码解析示例执行过程 &#x1f4af;高级优…...

总结拓展十七:SAP 采购订单行项目“交货“页签解析

《 SAP采购订单行项目“交货”页签字段解析》 在 SAP 系统的采购流程中&#xff0c;采购订单行项目的“交货”页签承载着关键的信息&#xff0c;其中的字段更是对整个交货环节的精准描述和把控的重要元素。理解和正确解析这些字段&#xff0c;对于确保采购流程的顺利进行、优化…...

作业Day2: 多文件编译; 思维导图

目录 ①文件代码 及其所需头文件分析 main.c文件 1.h文件 1.c文件 ②运行结果&#xff1a; ③代码分析 结构体成员 数据类型的设定&#xff1a; 信息录入函数 信息删除 成绩排序 信息显示 自定义初始化函数 ④思维导图&#xff1a;​编辑 ①文件代码 及其所需头文…...

Kioptrix Level 1通关攻略

目录 修改靶机Kioptrix:Level 1 的网络模式 探测靶机IP地址 得到端口信息 扫描TCP端口 扫描UDP端口 脚本扫描 指纹探测 漏洞探测 目录枚举扫描 发现利用脚本 执行exp链接shell 修改靶机Kioptrix:Level 1 的网络模式 Kioptrix: Level 1靶机的默认网络模式是桥接&#x…...

01 下载opencv并配置vs开发环境

01 下载opencv并配置vs开发环境 01 下载windows版本的opencv 下载地址&#xff1a;点击 ​​ WIndows版本的是编译好的代码。 当然国外网站下载很慢&#xff0c;可以通过我分享的网盘链接下载 opencv-4.10.0-windows.exe https://www.alipan.com/s/wV7z4YsmXgN 点击链接保…...

Ubuntu22.04 docker如何发布镜像(和用git差不多)

在dockerhub上创建远程仓库&#xff1a;https://hub.docker.com/ 将本地镜像打tag&#xff0c;并修改成可以上传到 dockerhub 的形式 # 查看本地镜像# 修改镜像 ## docker tag 镜像名称:标签 新的镜像名称&#xff08;要和远程仓库dockerhub上的一致&#xff09;:新的标签pus…...

【Golang】——Gin 框架中的模板渲染详解

Gin 框架支持动态网页开发&#xff0c;能够通过模板渲染结合数据生成动态页面。在这篇文章中&#xff0c;我们将一步步学习如何在 Gin 框架中配置模板、渲染动态数据&#xff0c;并结合静态资源文件创建一个功能完整的动态网站。 文章目录 1. 什么是模板渲染&#xff1f; 1.1 概…...

React的局限性是什么?

性能&#xff1a; 虚拟 DOM 虽然提高了渲染性能&#xff0c;但在某些情况下可能会造成性能瓶颈&#xff0c;尤其是在处理大量数据或复杂更新时。对于非UI任务&#xff08;如计算密集型操作&#xff09;&#xff0c;React 本身并不擅长。 学习曲线&#xff1a; 对于初学者来说&a…...

【Vulkan入门】09-CreateFrameBuffer

目录 先叨叨git信息关键代码VulkanEnv::FindHostVisitbaleMemoryTypeIndex()TestPipeLine::CreateFramebuffers() 与网上大多数文章不同&#xff0c;其他文章基本上都使用窗口框架&#xff08;X11、GLFW、WSL等&#xff09;提供的surface来显示Vulkan渲染出的图像。我认为那样会…...

罗技键鼠更换新台式机无蓝牙通过接收器安装

优联驱动下载&#xff1a; http://support.logitech.com.cn/zh_cn/software/unifying &#xff08;下载安装后按照步骤一步步操作&#xff0c;匹配后即可使用&#xff09; 向京东客服反馈后提供的驱动下载安装连接 有问题欢迎评论沟通~...

深入了解Modbus TCP协议:介绍、原理解析与应用示例

深入了解Modbus TCP协议&#xff1a;介绍、原理解析与应用示例 在工业自动化领域&#xff0c;设备之间的通信与数据交换至关重要。Modbus协议作为一种经典的通信协议&#xff0c;因其简单、开放和易于实现的特点&#xff0c;被广泛应用于各种工业设备之间的数据传输。而Modbus…...

vue2 项目中实现动态代理,服务器上通过nginx部署 实现动态代理

一、前言&&原理 前言&#xff1a;vue2 项目中&#xff0c;请求接口是从表格的当前获取的&#xff0c;也就是接口ip:端口号:路经不确定&#xff0c;要实现点击表格当前行请求对应的接口 实现原理&#xff1a;将实际要请求的ip等信息存在请求头中&#xff0c;用的时候再…...

OpenGL 几何着色器高级应用

几何着色器高级应用 概念回顾 几何着色器(Geometry Shader)是 OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心功能是基于输入的图元(如点、线或三角形),生成新的图元,或对输入的图元进行修改。 几何着色器的执行是以图元…...

QT JSON文件解析

参考博客 https://blog.csdn.net/cpp_learner/article/details/118421096 1 打开文件&#xff0c;读取全部内容 QFile file("../Json/js.json"); if (!file.open(QFile::ReadOnly | QFile::Text)) {qDebug() << "cant open error!";return; }// 读…...

c++中string字符串与其他类型的转换

一、string 转换成其他类型 1、转换为整数 使用std::stoi&#xff08;适用于int&#xff09;、std::stol&#xff08;适用于long&#xff09;、std::stoll&#xff08;适用于long long&#xff09;、std::stoul&#xff08;适用于unsigned long&#xff09;和std::stoull&…...

aws(学习笔记第十七课) SQS Amazon Simple Queue Service服务

aws(学习笔记第十七课) SQS Amazon Simple Queue Service服务 学习内容&#xff1a; 使用SQS Amazon Simple Queue Service服务整体代码&#xff08;nodejs的通常工程&#xff09;代码动作 1. 使用SQS Amazon Simple Queue Service服务 利用应用程序来学习SQS 创建S3$ aws s…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)

1.问题描述&#xff1a; 在AGC中&#xff0c;推送服务的消息回执新建成功后&#xff0c;有一个有效期 1&#xff0c;这个有效期是什么意思&#xff0c;过期后&#xff0c;会影响什么呢&#xff1f; 2&#xff0c;这个有效期是否可以修改成一直不过期&#xff1f; 解决方案&…...

mysql 的 binlog 原理

binlog的作用:binlog的三种格式Statement-Based Replication (SBR)&#xff1a;Row-Based Replication (RBR)&#xff1a;Mixed-Based Replication (MBR)&#xff1a; 总结&#xff1a;如何选择:如何配置binlog? binlog的作用: 数据恢复: 如果mysql的数据丢失了,又没有备份数…...

Android显示系统(10)- SurfaceFlinger内部结构

一、前言: 之前讲述了native层如何使用SurfaceFlinger,我们只是看到了简单的API调用,从本文开始,我们逐步进行SurfaceFlinger内部结构的分析。话不多说,莱茨狗~ 二、类图: 2.1、总体架构: 先看下SurfaceFlinger的关键成员和我们BootAnimation侧关键成员如何对应起来…...

独家首发 | 基于多级注意力机制的并行预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD变体分解效果最好算法——CEEMDAN&#xff08;五&#xff09;-CSDN博客 拒绝信息泄露&#xff01;VMD滚动分…...