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

Linux应用开发————多线程的互斥与同步——同步

同步和互斥

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。

条件变量机制

        与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。

        条件的检测是在互斥锁的保护下进行的。如果一个条件为假,个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,线程重新获得互斥锁,需要重新评价条件。

        条件变量分为两部分:条件和变量.条件本身是由互斥量保护的.线程在改变条件状态前先要锁住互斥量,它利用线程间共享的全局变量进行同步的一种机制。

条件变量机制的存在意义

        由于条件变量是用来等待一个条件发生的,在条件未发生之前,会阻塞使用该条件变量的线程,也就是说条件变量允许线程以无竞争的方式等待条件的发生。这样就不需要通过轮询的方式来判断条件大大节省了CPU时间。

条件变量的基本操作

1.初始化条件变量

一般由主线程来初始化一个条件变量,有动态和静态两种初始化方式具体实现:
静态:pthread cond t cond=PTHREAD COND INITIALIZER,

动态:pthread cond init 函数

函数 pthread_cond_init

头文件 #include < pthread.h>

函数原型 int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr);

功能 用来初始化一个条件变量。他使用变量attr所指定的属性来初始化一个条件变量,如果

        参数attr为空,那么它将使用默认的属性来设置所指定的条件变量。

参数 1.cond:条件变量;

        2.attr:条件变量属性。

返回值 成功:返回0;

            失败:返回错误号。

2.通知条件

条件已经满足,发送条件通知。
具体实现:pthread cond signal
pthread cond broadcast

函数 pthread_cond_destroy

头文件 #include < pthread.h>

函数原型 int pthread_cond_destroy(pthread_cond_t *cond);

功能 用来销毁所指定的条件变量,同时将会释放所给它分配的资源。

参数 1.cond:条件变量;

返回值 成功:返回0;

            失败:返回错误号。

3.等待条件成立等待条件变为真,

具体实现: pthread cond wait 函数

函数 pthread_cond_wait

头文件 #include < pthread.h>

函数原型 int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);  

功能 条件变量等待。

参数 1.cond:条件变量;

        2.mutex:互斥锁。

返回值 成功:返回0;

            失败:返回错误号。

4.销毁条件变量

具体实现 pthread cond destory函数

函数 pthread_cond_signal/pthread_cond_broadcast

头文件 #include < pthread.h>

函数原型 int pthread_cond_signal(pthread_cond_t *cond);

               int pthread_cond_broadcast(pthread_cond_t *cond);

功能 当调用pthread_cond_signal时,一个在相同条件变量上阻塞的线程将被解锁。如果同时

        有多个线程阻塞,则由调度策略确定接收通知的线程。如果调用

        pthread_cond_broadcast,则将通知阻塞在这个条件变量上的所有线程。一旦被唤醒,

        线程仍然会要求互斥锁。如果当前没有线程等待通知,则上面两种调用实际上成为一个

        空操作。如果参数cond指向非法地址,则返回EINVAL值。

参数 1.cond:条件变量;

返回值 成功:返回0;

            失败:返回错误号。

信号量机制

        信号量(semaphore)也被成为信号灯。是在多线程环境下用来保证关键代码段不被并发调用,在进入一个关键代码段之前每个线程必须要获取一个信号量,一旦关键代码段执行完成了,拥有信号量的线程必须释放信号量。另外想进入关键代码段的线程必须等待直到拥有信号量的线程释放了信号量。为了完成以上这个过程,就需要创建一个信号量,并且将获取信号量和释放信号量的操作分别放置在关键代码段的开始和结束处。

        例:多个线程都想执行 读取一个文件内容的操作,但同一时刻该操作只能满足一个线程,为了保护读取文件内容的有序操作,就可以使用信号量来保护这段关键代码。

        备注:信号量可以实现线程的同步和互斥,但大多数情况下用于线程间的同步.

信号量用于同步和互斥的基本用法

当信号量用于互斥的情况:几个进程(或线程)往往只设置一个信号量,且将信号量初值设为1。

当信号量用于同步的情况:几个进程(或线程)往往设置多个信号量,且将其中一个信号量初值设为1(通常设置为资源总数)。其他为0

PV原子操作的原理

        前面的信号量也就是操作系统所用到的PV原子操作它广泛用于进程或线程之间的同步和互斥,信号量本身是一个非负整数计数器,而PV原子操作就是对这个整数计数器信号量(sem)的操作

P 操作:

        一次P操作使信sem 减1,如果 sem>=0 进程或者线程具有公共资源的访问权;

V操作:

        一次V操作使信sem 加1,如果 sem<0 进程或者线程就将阻塞,直到sem>=0为止

        当一个进程或者线程需要访问关键代码段(临界区)时,它必须先执行操作原语,使信号量S减1,当完成对临界区访问后,执行V操作来释放占用的临界区,若信号量的初值为1,当一个进程或者线程执行P操作后S变成0,可以访问临界区,在该进程或者线程没有执行V操作之前,其他进程或线程也想访问临界区,也必须执行P操作,从而S就变成-1,因此第二个进程或线程就会被阻塞,直到第一个退出临界区,这时S变为0从而唤醒第二个进程或线程等待系统调度后再进入临界区,当第二个进程或线程访问完后,执行V操作,如果没有其他进程或线程申请进入,S变成初值1。
        也就是说:P(S)操作表示进程(或线程) 申请进入临界区,而V(S)操作表示进程(或线程)退出临界区

信号量相关函数

1.初始化信号量

函数 sem_init

头文件 #include < semaphore.h>

函数原型 int sem_init(sem_t *sem, int pshared, unsigned int value);

功能 初始化一个信号量,设置好它的共享选项,并指定一个整数类型的初始值。

参数 1. sem:指向信号量结构的指针;

        2. pshared:信号量是否可共享。只能为0,表明信号量一个进程的多个线程间共享。

        Linux还没有实现进程间共享信号量。

        3. value: 信号量的初值

返回值 成功:返回0;

            失败:返回-1,错误码存在 errno。

2.等待信号量

函数 sem_wait

头文件 #include < semaphore.h>

函数原型 int sem_wait(sem_t * sem);

功能 阻塞函数。从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始

        做减法。也就是说,如果你对一个值为2的信号量调用sem_wait(),线程将会继续执

        行,结果是信号量的值将减到1。如果对一个值为0的信号量调用sem_wait(),这个函数

        就会等待直到有其它线程增加了这个值使它不再是0为止。如果有两个线程都在

        sem_wait()中等待同一个信号量变成非零值,那么当它被第三个线程增加一个“1”时,等

        待线程中只有一个能够对信号量做减法并继续执行,另一个还将处于等待状态。

参数 1. sem:指向信号量结构的指针;

返回值 成功:返回0;

            失败:返回-1,错误码存在 errno。

3.信号量增加

函数 sem_post

头文件 #include < semaphore.h>

函数原型 int sem_post(sem_t * sem);

功能 给信号量的值加上一个“1”。

参数 1.sem:指向信号量结构的一个指针。

返回值 成功:返回0;

            失败:返回-1,错误原因存于error中。

4.释放信号量

函数 sem_destroy

头文件 #include < semaphore.h>

函数原型 int sem_destroy (sem_t *sem);

功能 释放信号量sem。

参数 1.sem:指向信号量结构的一个指针。

返回值 成功:返回0;

            失败:返回-1。

5.获取信号量的值

函数 sem_getvalue

头文件 #include < semaphore.h>

函数原型 int sem_getvalue(sem_t * sem, int * semval);

功能 获取信号量的值。

参数 1.sem:指向信号量结构的一个指针。

        2.semval:获取的信号量的值放到这个变量地址里,如果有一个或者多个进程或者线程

        当前正在使用sem_wait等待信号量,semval可能会返回两种结果,要么,返回0,要么

        返回一个负值,它的绝对值等于当前正在使用P操作的阻塞的进程或者线程数的总和。

        注意:信号量的值可能在sem_getvalue返回时,已经被更改。

返回值 成功:返回0;

            失败:返回-1。

相关文章:

Linux应用开发————多线程的互斥与同步——同步

同步和互斥 互斥:是指某一资源同时只允许一个访问者对其进行访问&#xff0c;具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序&#xff0c;即访问是无序的。 同步:是指在互斥的基础上(大多数情况)&#xff0c;通过其它机制实现访问者对资源的有序访问。 条件变量机制…...

【人工智能】深度解剖利用人工智能MSA模型

目录 情感分析的应用一、概述二、研究背景三、主要贡献四、模型结构和代码五、数据集介绍六、性能展示七、复现过程 情感分析的应用 近年来社交媒体的空前发展以及配备高质量摄像头的智能手机的出现&#xff0c;我们见证了多模态数据的爆炸性增长&#xff0c;如电影、短视频等…...

Java 环境配置 + IntelliJ IDEA 使用指南

文章目录 一、Java 程序的运行必须经过3 个步骤&#xff1a;编写、编译、运行&#xff08;1&#xff09;Java 和 JavaScript 的区别&#xff08;2&#xff09;JDK、JRE、JVM 的关系&#xff08;3&#xff09;是否需要 Maven&#xff1f; 二、软件下载2.1、JDK下载与安装 —— 是…...

兴业周报|楼市新政效果显著~单周成交破5亿~

香山清琴山庄丙19号&#xff08;独栋别墅&#xff09; 稀缺房源&#xff1a;标的物为京城少有的独栋别墅&#xff0c;在连续的 “限墅令” 及相关容积L限制政策下&#xff0c;市场上独栋别墅的新增供应不断减少。 环境优美&#xff1a;香山清琴山庄依山而筑&#xff0c;错落有…...

学习笔记063——通过使用 aspose-words 将 Word 转 PDF 时,遇到的字体改变以及乱码问题

文章目录 1、问题描述&#xff1a;2、解决方法&#xff1a; 1、问题描述&#xff1a; Java项目中&#xff0c;有个需要将word转pdf的需求。本人通过使用aspose-words来转换的。在Windows中&#xff0c;转换是完全正常的。但是当部署到服务器时&#xff0c;会出现转换生成的pdf…...

人工智能导论学习笔记

目录 一、概要 二、人工智能基础知识 智能 人工智能 人工智能三要素 人工智能发展历程 人工智能的三次浪潮 人工智能行业发展现状 人工智能技术水平现状 人工智能技术层级 人工智能应用开发周期 机器学习的流程 一、概要 《人工智能导论(通识版)》张大斌 田恒义 许…...

FCOS: Fully Convolutional One-Stage Object Detection——全卷积一阶段目标检测

FCOS&#xff08;Fully Convolutional One-Stage Object Detector&#xff09;是一种全卷积的单阶段目标检测器&#xff0c;旨在通过消除锚点&#xff08;anchor&#xff09;的使用&#xff0c;简化目标检测的流程。以下是FCOS的主要特点和组成部分&#xff1a; 1. 无锚点设计…...

《Java核心技术I》映射条目的原子更新

映射条目的原子更新 ConcurrentHashMap只有部分原子更新。 JavaAPI提供了一些新方法&#xff0c;例如&#xff1a;compute方法可以提供一个键和一个计算新值的函数。 map.compute(word,(k,v)->v null ? 1 : v1) 注释&#xff1a;ConcurrentHashMap中不允许有null值。很…...

微信小程序介绍-以及写项目流程(重要)

前言&#xff1a;本篇文章介绍微信小程序以及项目介绍&#xff1a; 文章介绍&#xff1a;介绍了微信小程序常用的指令、组件、api。tips&#xff1a;最好按照官方文档来进行学习&#xff0c;大致可以我的目录来学习&#xff0c;对于写项目是没有问题的 微信小程序官方文档https…...

241207-通过Docker部署Wiki.JS并设置ElasticSearch进行中文搜索

A. 最终效果 B. 配置文件 version: "3" services:wiki:image: ghcr.io/requarks/wiki:2container_name: wikijsports:- "3000:3000"volumes:- /home/lgk/Projects/WikiJS/config:/configenvironment:- DB_TYPEpostgres- DB_HOSTdatabase- DB_PORT5432- DB…...

yum 离线软件安装

适用范围 支持YUM软件管理的操作系统&#xff1a; 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统&#xff0c;包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【jvm】垃圾回收的优点和原理

目录 1. 说明2. 优点3. 原理3.1 发现无用对象3.2 回收无用对象所占用的内存 4. 回收算法4.1 标记-清除算法4.2 复制算法4.3 标记-整理算法4.4 分代收集算法 1. 说明 1.JVM&#xff08;Java虚拟机&#xff09;垃圾回收是Java语言的一大特性&#xff0c;它自动管理内存&#xff…...

LeetCode322. 零钱兑换(2024冬季每日一题 28)

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

LearnOpenGL学习(高级OpenGL --> 帧缓冲,立方体贴图,高级数据)

完整代码见&#xff1a;zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 帧缓冲 帧缓冲&#xff08;FrameBuffer&#xff09;是所有屏幕缓冲&#xff08;包括颜色缓冲&#xff0c;深度缓冲&#xff0c;模板缓冲&#xff09;的集合。它被存储在GPU内存中&#xff0c;我们可以定义…...

mysql笔记——索引

索引 InnoDB采用了B树索引结构。 相比于二叉树&#xff0c;层级更少&#xff0c;搜索效率高。 B树中叶子节点和非叶节点都会存储数据&#xff0c;导致段页式存储中一页存储的键值减少&#xff0c;指针也会减少&#xff0c;要同样保存大量数据&#xff0c;只能增加树的高度&a…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述&#xff1a; useReducer() 常用于管理复杂的状态更新逻辑&#xff0c;特别是在状态更新依赖于多个条件或动作时&#xff0c;useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

高效备考 Oracle 19c OCM 的建议

满足报考条件 考生需要先获得 19c OCP&#xff08;Oracle Certified Professional&#xff09;认证&#xff0c;并完成 Oracle 官方认可的 OCP 培训课程 制定学习计划 规划学习时间&#xff1a;根据考试时间和自己的日常安排&#xff0c;制定详细的学习计划&#xff0c;合理分配…...

01-Chromedriver下载与配置(mac)

下载地址&#xff1a; 这里我用的最后一个&#xff0c;根据自己chrome浏览器选择相应的版本号即可 ChromeDriver官网下载地址&#xff1a;https://sites.google.com/chromium.org/driver/downloads ChromeDriver官网最新版下载地址&#xff1a;https://googlechromelabs.git…...

网站流量和用户行为深度分析

关于网站流量数据集的探索 import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.subplots as sp import matplotlib.pyplot as plt import seaborn as sns file_path /home/mw/input/webs4651/website_wata.csv data pd.rea…...

centOS7如何配置阿里云或者腾讯云yum源

众所周知&#xff0c;CentOS很多版本目前已经不再维护了&#xff0c;原本的在线yum源已经无法使用&#xff0c;所以需要我们配置其他的yum源。目前腾讯云或者阿里云的yum源都可以正常使用&#xff0c;所以本文教大家如何配置阿里云/腾讯云在线yum源。 阿里云yum源配置&#xf…...

洗鞋小程序(源码+文档+部署+讲解)

本文将深入解析“洗鞋小程序”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 为洗鞋提供服务&#xff0c;包含小程序和管理端。 本项目名称为洗鞋小程序&#xff0c;是一个基于小程序的在线洗鞋平台。该系统提供下单、订单管…...

MySQL|通过JSON_UNQUOTE实现MySQL中JSON数据的干净提取

文章目录 语法使用示例注意事项 JSON_UNQUOTE() 是 MySQL 中用于处理 JSON 数据类型的一个函数。它的主要作用是从 JSON 字符串中移除最外层的引号&#xff0c;这对于从 JSON 对象或数组中提取字符串值特别有用。 语法 JSON_UNQUOTE(json_string)json_string: 这是你想要去掉引…...

动态规划part01

文章参考来源代码随想录 理论基础 适用范围&#xff1a; 如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 与贪心算法的区别&#xff1a; 动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪心&#xff0c;贪心没有状态推…...

生活大爆炸版石头剪刀布(洛谷P1328)

生活大爆炸版石头剪刀布(洛谷P1328) [NOIP2014 提高组] 前言&#xff1a; 由于洛谷发布题解有限制&#xff0c;所以在CSDN上发布洛谷题解。 所有题解均是Java语言, 但是思路是相同的 每篇都是刷题日常&#xff0c;尽量讲清楚算法逻辑。 希望有问题还请大佬们指导&#xff01; …...

【GOOD】DeGEM

ICLR2025 under review 看到不错的想法&#xff0c;学习一下 Decoupled Graph Energy-based Model for Node Out-of-Distribution Detection on Heterophilic Graphs &#x1f431;&#x1f436;图上的OOD检测的工作是比较少的&#xff0c;相比于图像数据&#xff0c;图结构数…...

jenkins邮件的配置详解

Jenkins邮件的配置涉及多个步骤和细节,以下是详细的配置指南: 一、前期准备 确定邮件服务:明确Jenkins将要使用的邮件服务,如QQ邮箱、163邮箱、公司邮箱(基于Microsoft 365或Exchange Server)等。获取SMTP配置信息:根据邮件服务类型,获取相应的SMTP服务器地址、端口号…...

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库&#xff0c;有了这个库&#xff0c;就可以在flask应用中应用websocket协议&#xff0c;帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库&#xff0c;都能与服务器建立长连接…...

每日一题 LCR 097. 不同的子序列

LCR 097. 不同的子序列 使用动态规划就可以解决&#xff0c;重点是知道 动态规划的状态是如何转移的 class Solution { public:int numDistinct(string s, string t) {int ns s.size();int nt t.size();vector<vector<long>> dp(ns1,vector<long>(nt1,0)…...

合并区间C和C++的区别、布尔、整型、浮点、指针类型和0做比较、malloc、calloc、realloc的区别

56. 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每个区间的左元素排序&#xff0c;这样每个区间的左边界就固定了&#xff0c;所以之后考虑相邻的//区间是否是相交的就行 类似与栈的…...

设计模式-外观模式

背景 有一个家庭影院&#xff0c;有DVD播放器&#xff0c;投影仪&#xff0c;屏幕&#xff0c;音响&#xff0c;爆米花机&#xff0c;每一个设备都有一个遥控器。 传统思路&#xff1a; 创建一个客户端类&#xff0c;在这个类中创建所有设备的相关对象&#xff08;遥控器&am…...

嵌入式驱动开发详解14(SPI驱动架构实现)

文章目录 前言SPI简介SPI介绍SPI工作模式SPI特点 驱动开发驱动架构SPI控制器驱动SPI设备驱动SPI 设备和驱动匹配过程SPI其他相关API函数 参考文献 前言 SPI 是很常用的串行通信协议&#xff0c;可以通过 SPI 来连接众多的传感器&#xff0c;相比 I2C 接 口&#xff0c;SPI 接口…...

【保姆级系列:思科模拟器安装下载汉化教程大全】

文章目录 概述Packet Tracer下载Packet Tracer安装Packet Tracer使用EVE-NG下载&#xff1a;EVE-NG安装&#xff1a;EVE-NG使用&#xff1a; 概述 思科在网络界的地位是众所周知的。如果说在中美科技战中&#xff0c;华为代表CHN&#xff0c;那么思科就代表US&#xff0c;依然…...

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题(中职组)

2024 一带一路暨金砖国家技能发展与技术创新大赛【网络安全防护治理实战技能赛项】样题&#xff08;中职组&#xff09; 1.基础设置和安全强化&#xff08;xxx 分&#xff09;1.3. 任务内容: 2.安全监测和预警&#xff08;xxx 分&#xff09;2.1. 任务一&#xff1a;建立目录安…...

QT 中基于 TCP 的网络通信

基础 基于 TCP 的套接字通信需要用到两个类&#xff1a; 1&#xff09;QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客户端建立连接。 2&#xff09;QTcpSocket&#xff1a;通信的套接字类&#xff0c;客户端、服务器端都需要使用。 这两个套接字通信类…...

React Native 速度提升 550%

React Native 爱好者们!🌟 您准备好听一些激动人心的消息了吗?React Native 刚刚发布了其最大的更新之一:一种全新的架构,彻底改变了我们构建移动应用程序的方式。如果您想知道这对您的项目和开发体验意味着什么,请继续关注!我们正在深入探讨这个改变游戏规则的事物;您…...

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…...

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

Next.js优化教程:优化字体加载

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 更多有关Next.js教程&#xff0c;请查阅&#xff1a; 前言 1. 字体加载的常见问题 1.1 什么是 FOIT 和 FOUT&#xff1f; 1.2 字体优化的核心目标 2. Next.js 字体优…...

功能篇:springboot中全局异常

在Java应用程序中实现全局异常处理是确保应用健壮性和用户体验良好性的重要一步。通过全局异常处理&#xff0c;你可以集中管理所有未捕获的异常&#xff0c;并以统一的方式响应它们。对于Web应用程序&#xff08;如使用Spring框架的应用&#xff09;&#xff0c;通常会创建一个…...

【go 】 select case 的用法

文章目录 1. 基本使用&#xff1a;监听多个通道&#xff0c;会阻塞2.带默认分支&#xff1a;非阻塞操作3. 永远监听多个通道4. 超时机制5. 关闭通道的处理6. context的关闭判断 相关文章&#xff1a; 【go】select 语句case的随机性 【go】 select case 超时机制(time.After)示…...

出海服务器可以用国内云防护吗

随着企业国际化进程的加速&#xff0c;越来越多的企业选择将业务部署到海外服务器上&#xff0c;以便更贴近国际市场。然而&#xff0c;海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时&#xff0c;是否可以借助国内的云服务器来进行有效的防护呢…...

前端权限控制

前端权限控制 一、路由权限&#xff08;控制页面访问&#xff09; vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...

计算机组成原理(二):指令跳转

指令跳转&#xff08;Instruction Jump&#xff09;是计算机程序控制流的重要组成部分&#xff0c;通过改变程序的执行顺序实现循环、条件分支和函数调用等功能。 基本概念 跳转指令主要用来修改**程序计数器&#xff08;Program Counter, PC&#xff09;**的值&#xff0c;使…...

LoViT: 用于手术阶段识别的长视频Transformer|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 LoViT: Long Video Transformer for surgical phase recognition LoViT: 用于手术阶段识别的长视频Transformer 01 文献速递介绍 快速发展的手术数据科学&#xff08;SDS&#xff09;领域旨在通过先进利用手术室&#xff08;OR&#xff09;内医疗设备采集的数据…...

【传感器技术】第4章 力敏传感器,弹性敏感元件的基本特性,应变式压力传感器,电阻应变片的温度补偿,压阻式压力传感器,压电式压力传感器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

linux之vim

一、模式转换命令 vim主要有三种模式&#xff1a;命令模式&#xff08;Normal Mode&#xff09;、输入模式&#xff08;Insert Mode&#xff09;和底线命令模式&#xff08;Command-Line Mode&#xff09;。 从命令模式切换到输入模式&#xff1a;i&#xff1a;在当前光标所在…...

【LeetCode】每日一题 2024_12_9 判断国际象棋棋盘中一个格子的颜色(找规律)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;判断国际象棋棋盘中一个格子的颜色 最近力扣一直在出棋盘类的题目&#xff0c;这个月已经出了 9 天了&#xff0c;我倒要看看他是不是真能出一个月 代码与解题思路 先读题&#xff1a;题…...

HCL虚拟环境搭建并且支持ssh远程访问

1.连接设备 新建设备和host主机&#xff0c;连线&#xff0c;host主机选择本地网卡&#xff08;不选host-only网卡&#xff09; 2.启动设备&#xff0c;打开终端&#xff0c;按ctrlc 3.执行命令 <H3C>system-view [H3C]int g0/0 [H3C-GigabitEthernet0/0]ip address …...

批量验证指定漏洞思路和流程

免责申明 本文仅是用于学习研究POC的地址收集与漏洞验证原理,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安…...

首次打开韦东山提供的Ubuntu-18.04镜像后,该做哪些事?

目录 01-测试有无网络02-配置最基本的嵌入式开发环境(安装tftp-nfs等)03-缩短关机强制结束进行时间04-关闭软件的自动更新05-未完待续... 01-测试有无网络 ping www.baidu.com 02-配置最基本的嵌入式开发环境(安装tftp-nfs等) 需要安装 tftp&#xff0c;nfs&#xff0c;vim …...