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

OpenStack开源虚拟化平台(一)

目录

    • 一、OpenStack背景介绍
      • (一)OpenStack是什么
      • (二)OpenStack的主要服务
    • 二、计算服务Nova
      • (一)Nova组件介绍
      • (二)Libvirt简介
      • (三)Nova中的RabbitMQ解析


  OpenStack既是一个社区,也是一个项目和一个开源软件,提供了一个部署云的操作平台或工具集。用OpenStack易于构建虚拟计算或存储服务的云,既可以为公有云、私有云,也可以为大云、小云提供可扩展、灵活的云计算。

在这里插入图片描述

一、OpenStack背景介绍

在这里插入图片描述

(一)OpenStack是什么

在这里插入图片描述
  OpenStack是一个管理计算、存储和网络资源的数据中心云计算开放平台,通过一个仪表板,为管理员提供了所有的管理控制,同时通过Web界面为其用户提供资源。

在这里插入图片描述

(二)OpenStack的主要服务

  OpenStack有三个主要的服务成员:计算服务(Nova)、存储服务(Swift)、镜像服务(Glance)。

在这里插入图片描述
1. 计算服务Nova

  Nova是OpenStack云计算架构的控制器,支持OpenStack云内的实例的生命周期所需的所有活动由Nova处理。Nova作为管理平台管理着OpenStack云里的计算资源、网络、授权和扩展需求。但是,Nova不能提供本身的虚拟化功能,相反,它使用Libvint的API来支持虚拟机管理程序交互。Nova通过Web服务接口开放所有功能并兼容亚马逊Web服务的EC2接口。

2. 对象存储服务Swift

  Swift提供的对象存储服务,允许对文件进行存储或者检索(但不通过挂载文件服务器上目录的方式来实现)。对于大部分用户来说,Swift不是必需的,只有存储数量达到一定级别,而且是非结构化数据才有这样的需求。Swift为OpenStack提供了分布式的、最终一致的虚拟对象存储。和亚马逊的Web服务–简单存储服务(S3)类似,通过分布式的存储节点,Swift 有能力存储数士亿计的对象,Swift具有内置冗余、容错管理、存档、流媒体的功能。Swift是高度扩展的。

3. 镜像服务Glance

  它提供了一个虚拟磁盘镜像的目录和存储仓库,可以提供对虚拟机镜像的存储和检索。 这些磁盘镜像广泛应用于Nova组件之中。Glance能进行多个数据中心的镜像管理和租户私有镜像管理。虽然这种服务在技术上是属于可选的,但任何规模的云都可能对该服务有需求。目前Glance的镜像存储,支持本地存储、NFS、Swift、sheepdog和Ceph。OpenStack镜像服务查找和检索虚拟机的镜像系统,它可以被配置为使用以下3个存储后端的任何一个:
(1)OpenStack对象存储到存储镜像。
(2)S3存储直连。
(3)S3存储结合对象存储成为中间级的S3访问。

4. 身份认证服务keystone

  它为OpenStack上的所有服务提供身份验证和授权。它还提供了在特定OpenStack云服务上运行的服务的一个目录。任何系统中,身份认证和授权其实都比较复杂,尤其是Openstack那么庞大的项目,每个组件都需要使用统一认证和授权。

5. 网络管理服务Quantum

  在接口设备之间提供“网络连接即服务”的服务,而这些接口设备主要是由Open Stack的其他服务(如Nova)进行管理的。该服务允许用户创建自己的网络,然后添加网络接口设备。Quantum提供了一个可插拔的体系架构,使其能够支持很多流行的网络供应商和新的网络技术。Quantum后端可以是商业产品或者开源。开源产品支持Openvswitch和Linux bridge。网络设备厂商都在积极参与,让他们的产品支持Quantum,目前思科、锐捷已经实现支持。

6. 存储管理服务Cinder

  Cinder存储管理主要是指虚拟机的存储管理,Swift主要是对象存储管理。目前支持开源和商业化产品sheepdog、Ceph等。
  对于企业来说,使用分布式作为虚拟机的存储,并不能真正节省成本,维护一套分布式存储,成本还是很高的。目前虚拟机的各种高可用、备份的问题,其实都可以把问题交给商业存储厂商来解决。

7. 仪表盘Horizon

  严格意义来说,Horizon不会为OpenStack增加一个功能,更多的是一个演示。对于很多用户来说,了解Open Stack基本都是从Horizon、 dashboard开始。从这个角度来看,它在OpenStack各个项目里显得非常重要。

二、计算服务Nova

  Nova是OpenStack云中的计算组织控制器。Nova处理OpenStack云中实例(instances)生命周期的所有活动。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。
  但是,Nova并不具有虚拟化能力,相反它使用Libvirt API来与被支持的Hypervisors交互。Nova通过一个与Amazon Web Services(AWS)EC2 API兼容的Web Services API来对外提供服务。

(一)Nova组件介绍

1. API Server(Nova-Api)

  API Server对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件。

2. Message Queue(Rabbit MQ Server)

  OpenStack节点之间通过消息队列使用AMQP(Advanced Message Queue Protocol)完成通信。

3. Compute Worker(Nova-Compute)

  Compute Worker管理实例生命周期,通过Message Queue接收实例生命周期管理的请求,并承担操作工作。

4. Network Controller(Nova-Network)

  Network Controller处理主机的网络配置,包括IP地址分配、为项目配置VLAN、实现安全组、配置计算节点网络。

5. Volume Workers(Nova-Volume)

  Volume Workers用来管理基于LVM(Logical Volume Manager)的实例卷。Volume Workers有卷的相关功能,例如新建卷、删除卷、为实例附加卷、为实例分离卷。

6. Scheduler(Nova-Scheduler)

  调度器Scheduler把Nova-API调用映射为OpenStack组件。调度器作为一个Nova-Schedule守护进程运行,通过恰当的调度算法从可用资源池获得一个计算服务。当前Nova-Schedule实现了一些基本的调度算法:随机算法、可用域算法和简单算法。

(二)Libvirt简介

  Nova通过独立的软件管理模块实现XenServer、Hyper-V和VMWare ESX的调用与管理。同时对于其他的Hypervisor,如KVM、LXC、QEMU、UML和Xen则通过Libvirt标准接口统一实现。为了更好地理解在Nova环境下Libvirt如何管理底层的Hypervisor,先要基本了解Libvirt的体系架构与实现方法。

1. 什么是Libvirt

  虚拟云实现的三部曲:虚拟化技术实现→虚拟机管理→集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具,比如启动、停用、配置、连接控制台等。这样在构建云管理的时候就存在两个问题。
(1)如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。
(2)可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去。这样管理平台就需要大幅改动。
  Libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

2. Libvirt主要支持的功能

(1)虚拟机管理:包括不同的领域生命周期操作,支持多种设备类型的热插拔操作。
(2)远程机器支持:只要机器上运行了Libvirt Daemon,所有的Libvirt功能就都可以访问和使用。
(3)存储管理:任何运行了Libvirt Daemon的主机都可以用来管理不同类型的存储,创建不同格式的文件镜像。
(4)网络接口管理:任何运行了Libvirt Daemon的主机都可以用来管理物理和逻辑的网络接口。
(5)虚拟NAT和基于路由的网络:任何运行了Libvirt Daemon的主机都可以用来管理和创建虚拟网络。

3. Libvirt体系结构

没有使用Libvirt的虚拟机管理方式:

在这里插入图片描述
Libvirt API与相关驱动程序的层次结构:

在这里插入图片描述
Libvirt的控制方式有以下两种。
(1)管理位于同一节点上的应用程序和域。管理应用程序通过Libvirt工作,以控制本地域。

在这里插入图片描述
(2)管理位于不同节点上的应用程序和域。该管理应用程序通过一种通用协议从本地Llibvirt连接到远程Libvirt。

在这里插入图片描述

(三)Nova中的RabbitMQ解析

在这里插入图片描述
1. RabbitMQ

在这里插入图片描述
  RabbitMQ是一种处理消息验证、消息转换和消息路由的架构模式,它协调应用程序之间的信息通信,并使得应用程序或者软件模块之间的相互意识最小化,有效实现解耦。
  RabbitMQ适合部署在一个拓扑灵活易扩展的规模化系统环境中,有效保证不同模块、不同节点、不同进程之间消息通信的时效性;RabbitMQ特有的集群HA安全保障能力可以实现信息枢纽中心的系统级备份,同时单节点具备消息恢复能力。

在这里插入图片描述
2. AMQP

  • AMQP是应用层协议的一个开放标准,为面向消息的中间件而设计
  • RabbitMQ是AMQP协议的一个开源实现
  • OpenStack Nova各软件模块通过AMQP协议实现信息通信
  • AMQP协议的设计理念可归纳为基于状态的面向无连接通信系统模式
  • 对于AMQP来讲,消息队列的状态信息决定通信系统的转发路径
  • IP数据包根据路由表实现报文的本地存储与逐级转发

在这里插入图片描述
  “消息”是AMQP实现通信的基本因素,交换器和队列是AMQP的核心要素。
  交换器(Exchange):交换器由消费者应用程序创建,并且可与其他应用程序实现共享服务。接收消息之后通过路由表将消息准确且安全地转发至相应的消息队列。每个交换器通过唯一的Exchange ID进行识别。交换器主要分为三种:
(1)持久交换器:持久交换器并不会因为系统重启或者应用程序终止而消除
(2)临时交换器:驻留在内存中,随着系统的关闭而消失
(3)自动删除交换器:随着宿主应用程序的中止而自动消亡
  队列(Queue):主要用于实现存储与转发交换器发送来的消息,队列同时也具备灵活的生命周期属性配置,可实现队列的持久保存、临时驻留与自动删除。
  消息、队列和交换器是构成AMQP的三个关键组件,任何一个组件的失效都会导致信息通信的中断,因此鉴于三个关键组件的重要性,系统在创建三个组件的同时会打上“Durable”标签,表明在系统重启之后立即恢复业务功能。

  构成AMQP的三个关键要素的工作方式如图所示。

在这里插入图片描述
  三种不同类型的交换器:广播式交换器(Fanout Exchange)、直接式交换器(Direct Exchange)和主题式交换器(Topic Exchange)。

3. Nova中的RabbitMQ应用

在这里插入图片描述
  目前Nova中的各个模块通过RabbitMQ服务器以RPC(远程过程调用)的方式实现通信,而且各模块之间形成松耦合关联关系,在扩展性、安全性以及性能方面均体现优势。以下是三个比较重要的概念。
(1)交换器
  接受消息并且将消息转发给队列。应用程序在它的权限范围之内可以创建、删除、使用和共享交换器实例。交换器可以是持久的、临时的或者自动删除的。
(2)队列
  “消息队列”,它是一个具名缓冲区,它代表一组消费者应用程序保存消息。这些应用程序在它们的权限范围内可以创建、使用、共享消息队列。
(3)绑定
  可以理解为交换器和消息队列之间的一种关系,绑定之后交换器会知道应该把消息发给哪个队列,绑定的关键字称为binding_key。

下面介绍一下RabbitMQ的三种类型的交换器。

1)广播式交换器类型(fanout)

  该类交换器不分析所接收到消息中的Routing Key,默认将消息转发到所有与该交换器绑定的队列中去。广播式交换器转发效率最高,但是安全性较低,消费者应用程序可获取本不属于自己的消息。
  广播交换器是最简单的一种类型,就像我们从字面上理解到的一样,它把所有接收到的消息广播到所有它所知道的队列中去,不论消息的关键字是什么,消息都会被路由到和该交换器绑定的队列中去。

在这里插入图片描述
  在程序中申明一个广播式交换器的代码如下:

channel.exchange_declare(exchange='fanout',type='fanout')

2)直接式交换器类型(direct)

  直接式交换器的转发效率较高,安全性较好,但是缺乏灵活性,系统配置量较大。相对广播交换器来说,直接交换器可以给我们带来更多的灵活性。
  直接交换器的路由算法很简单:一个消息的routing_key完全匹配一个队列的binding_key,就将这个消息路由到该队列。绑定的关键字将队列和交换器绑定到一起。当消息的routing_key和多个绑定关键字匹配时消息可能会被发送到多个队列中。

在这里插入图片描述
3)主题式交换器(Topic Exchange)

在这里插入图片描述
  Nova基于RabbitMQ实现两种RPC调用:RPC.CALL基于请求与响应方式,RPC.CAST只是提供单向请求。
  Nova的各个模块在逻辑功能上可以划分为两种:Invoker模块主要功能是向消息队列中发送系统请求消息,如Nova-API和Nova-Scheduler;Worker模块从消息队列中获取Invoker模块发送的系统请求消息以及向Invoker模块回复系统响应消息,如Nova-Compute、Nova-Volume和Nova-Network。

在这里插入图片描述

交换器和队列之间的通信关系

在这里插入图片描述

RPC.CALL的调用流程

  (1)Invoker端生成一个Topic消息生产者和一个Direct消息消费者。其中,Topic消息生产者发送系统请求消息到Topic交换器,Direct消息消费者等待响应消息。
  (2)Topic交换器根据消息的Routing Key转发消息,Topic消费者从相应的消息队列中接收消息,并传递给负责执行相关任务的Worker。
  (3)Worker根据请求消息执行完任务之后,分配一个Direct消息生产者,Direct消息生产者将响应消息发送到Direct交换器。
  (4)Direct交换器根据响应消息的Routing Key转发至相应的消息队列,Direct消费者接收并把它传递给Invoker。

  RPC.CAST的远程调用流程与RPC.CALL类似,只是缺少了系统消息响应流程。

在这里插入图片描述

RPC.CAST的远程调用流程

相关文章:

OpenStack开源虚拟化平台(一)

目录 一、OpenStack背景介绍(一)OpenStack是什么(二)OpenStack的主要服务 二、计算服务Nova(一)Nova组件介绍(二)Libvirt简介(三)Nova中的RabbitMQ解析 OpenS…...

C++ | Leetcode C++题解之第207题课程表

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<vector<int>> edges;vector<int> indeg;public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {edges.resize(numCourses);indeg.resize(numCo…...

vue3中的自定义指令

全局自定义指令 假设我们要创建一个全局指令v-highlight&#xff0c;用于高亮显示元素。这个指令将接受一个颜色参数&#xff0c;并有一个可选的修饰符bold来决定是否加粗文本。 首先&#xff0c;在创建Vue应用时定义这个指令&#xff1a;&#xff08;这里可以将指令抽离成单…...

Postman接口测试工具的原理及应用详解(一)

本系列文章简介&#xff1a; 在当今软件开发的世界中&#xff0c;接口测试作为保证软件质量的重要一环&#xff0c;其重要性不言而喻。随着前后端分离开发模式的普及&#xff0c;接口测试已成为连接前后端开发的桥梁&#xff0c;确保前后端之间的数据交互准确无误。在这样的背景…...

C++ initializer_list类型推导

目录 initializer_list C自动类型推断 auto typeid decltype initializer_list<T> C支持统一初始化{ }&#xff0c;出现了一个新的类型initializer_list<T>&#xff0c;一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。 class…...

造一个交互式3D火山数据可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建交互式 3D 火山数据可视化 应用场景 本代码用于将火山数据库中的数据可视化&#xff0c;展示火山的高度、类型和状态。可用于地质学研究、教育和数据探索。 基本功能 该代码使用 Plotly…...

【网络安全】一文带你了解什么是【CSRF攻击】

CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种网络攻击方式&#xff0c;它利用已认证用户在受信任网站上的身份&#xff0c;诱使用户在不知情的情况下执行恶意操作。具体来说&#xff0c;攻击者通过各种方式&#xff08;如发送恶意链…...

短视频电商源码如何选择

在数字时代的浪潮下&#xff0c;短视频电商以其直观、生动、互动性强的特点&#xff0c;迅速崛起成为电商行业的一股新势力。对于有志于进军短视频电商领域的创业者来说&#xff0c;选择一款合适的短视频电商源码至关重要。本文将从多个角度探讨如何选择短视频电商源码&#xf…...

444444

356前期...

初识LangChain的快速入门指南

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…...

OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!

市面上有很多植物识别的 App&#xff0c;通过对植物的叶片、花朵、果实等特征进行准确的识别&#xff0c;从而确定植物的种类、名称。但动物识别的 App 却十分有限&#xff0c;这使我们很难区分一些外形相似的动物&#xff0c;例如小浣熊和小熊猫。 左侧为小浣熊&#xff0c;右…...

24 年程序员各岗位薪资待遇汇总(最新)

大家好&#xff0c;我是程序员鱼皮。今天分享 24 年 6 月最新的程序员各岗位薪资待遇汇总。 数据是从哪儿来的呢&#xff1f;其实很简单&#xff0c;BOSS 直聘上有一个免费的薪酬查询工具&#xff0c;只要认证成为招聘者就能直接看&#xff0c;便于招聘者了解市场&#xff0c;…...

Android SurfaceFlinger——系统动画服务启动(十四)

在了解了 SurfaceFlinger、HWC、OpenGL ES 和 EGL 等相关概念和基础信息后,我们通过系统动画的调用流程引入更多的内容。 一、解析init.rc 开机就启动进程,肯定就要从 rc 文件开始。负责开机动画的进程是 bootanimation。 1、bootanim.rc 源码位置:/frameworks/base/cmds…...

VaRest插件常用节点以及Http请求数据

1.解析json &#xff08;1&#xff09;Construct Json Object&#xff1a;构建json对象 &#xff08;2&#xff09;Decode Json&#xff1a;解析json 将string转换为json &#xff08;3&#xff09;Encode json&#xff1a;将json转换为string &#xff08;4&#xff09;Get S…...

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作&#xff0c;但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题&#xff0c;第二阶段是进行模拟一个简易线程库&#xff08;为了加深对于C库封装linux原生线程的理解&#xff09;&#xff0c;第三阶段就是互斥。 目录 线程id…...

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…...

主流分布式消息中间件RabbitMQ、RocketMQ

分布式消息中间件在现代分布式系统中起着至关重要的作用。以下是一些主流的分布式消息中间件&#xff1a; 1. Apache Kafka - 特点&#xff1a;高吞吐量、低延迟、持久化、水平可扩展、分布式日志系统。 - 使用场景&#xff1a;日志收集与处理、实时流处理、事件驱动架构、大数…...

【Unity Linux】模型导致的Unity项目崩溃

模型需勾选Strip Bones。如不勾选&#xff0c;则开启项目崩溃。 也可以删除有问题模型的.meta文件。 &#xff08;Unity默认会自动勾选&#xff0c;所以不会崩溃&#xff09; 或打开.meta文件&#xff0c;将optimizeBones的值&#xff0c;由0改为1。&#xff08;对应面板上的…...

22222

12212...

大数据领域的常用开发语言详解

大数据开发语言主要包括以下几个&#xff0c;以下是它们在大数据开发领域的优缺点和应用场景的详细说明&#xff1a; 1. Java 优点&#xff1a; 跨平台性&#xff1a;Java的“一次编写&#xff0c;到处运行”的特性使得其可以轻松地运行在多个操作系统上。面向对象&#xff…...

SpringBoot设置自动跳转前端界面

一般情况下&#xff0c;我们的Application启动文件的内容为一行的运行代码&#xff0c;默认启动项目以后不会自动跳转到我们的前端页面 public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} 这里我的可以通过设置文件的内容&#…...

vue3前端解析大数据返给的数据格式

# xxx&#xff1a;111111111111111\n\n## 2222&#xff1a;\n- 99999999。\n- 564566556。\n- ", npm install marked import {marked} from markedmarked(# xxx&#xff1a;111111111111111\n\n## 2222&#xff1a;\n- 99999999。\n- 564566556。\n-)//就可以解析成 《…...

Incremental Player Build

*未解决&#xff0c;仅作记录 Unity 版本 2021.3.15f1 问题 Unity 发布webgl 平台卡在Incremental Player Build 界面。 解决 未找到明确原因&#xff0c;简化工程路径后发布成功。...

快钱支付股东全部股权已被质押!

根据近期工商信息&#xff0c;第三方支付机构快钱支付清算信息有限公司&#xff08;简称“快钱支付”&#xff09;实际控股方快钱金融服务&#xff08;上海&#xff09;有限公司&#xff08;简称“快钱金融”&#xff09;&#xff0c;作为出质股权标的企业&#xff0c;被出质给…...

【鸿蒙学习笔记】数据类型

官方文档&#xff1a;ArkTS语言介绍 目录标题 声明变量声明常量数据类型 缺&#xff1a;byte charNumber类型 short int long float doubleBoolean类型 booleanString类型Void类型Object类型Array类型Enum类型Union类型Aliases类型 [代码总结] 声明变量 let hi: string hel…...

SAP实现特别总账的凭证预制

SAP实现特别总账的凭证预制 仔细理解只有”其他”的特殊总帐标识才可预制凭证这句话. F-29/f-48不可预制。F-29/f-48预制时出现错误消息号 FP 030&#xff0c;提示特殊总帐标志类型“汇票和”预付定金“的特别总帐标志的过帐代码不能预制&#xff0c;这是系统写死的&#xff…...

鸿蒙 HarmonyOs 动画效果 快速入门

一、理论 1.1 animation属性 名称参数类型必填描述durationnumber否设置动画时长&#xff0c;默认值&#xff1a;1000&#xff0c;单位&#xff1a;毫秒temponumber否动画播放速度。数值越大&#xff0c;速度越快&#xff0c;默认为1curvestring | Curve否 设置动画曲线。 默…...

PyTorch学习之 torch.squeeze 函数

PyTorch学习之 torch.squeeze 函数 一、功能 torch.squeeze 的主要作用是从给定的张量 input 中移除所有尺寸为1的维度。 二、基本语法 torch.squeeze(input, dimNone)三、参数说明 input (Tensor): 输入的张量。dim (int, 可选): 指定要移除的尺寸为1的维度 如果未指定&am…...

达梦数据库系列—17. 主备集群搭建-实时主备

目录 配置实时主备 1、环境说明 2、数据准备 脱机备份、脱机还原方式 联机备份、脱机还原方式 3、配置主库 3.1 配置 dm.ini 3.2 配置 dmmal.ini 3.3 配置 dmarch.ini 3.4 配置 dmwatcher.ini 3.5 启动主库为mount 3.6 设置 OGUID 3.7 修改数据库模式 4、配置备库…...

【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类

GANDALF&#xff1a;主动学习 图注意力变换器 变分自编码器&#xff0c;改善多标签图像分类 提出背景子解法1&#xff1a;多标签信息样本的选择子解法2&#xff1a;生成信息丰富且非冗余的合成样本 例子&#xff1a;胸部X射线图像分析传统方法的操作和局限GaNDLF方法的优势 工…...

Linux 权限介绍

文章目录 Linux 权限介绍权限类型权限的数字表示查看文件信息修改权限相关指令 Linux 权限介绍 在 Linux 系统中&#xff0c;权限管理是非常重要的一部分&#xff0c;它确保了系统的安全性和文件的合理访问。 权限类型 [ r ]代表可读&#xff08;read&#xff09;&#xff1…...

kernel header解析

一、kernel header定义&#xff1a; aarch64 kernel header u32 code0; /* Executable code */ u32 code1; /* Executable code */ u64 text_offset; /* Image load offset, little endian */ u64 image_size; /* Effective Image size, little…...

MQ运行时遇到的问题

遇到的问题描述&#xff1a;我在绑定通道的时候发现了通道绑定失败&#xff0c; 原因&#xff1a; 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的&#xff0c;导致后面的代码再去进行注册的时候并没有实现那个类型 解决&#xff1a; 更改代码&#xff0…...

EDI是什么?与ERP有何关系

EDI的发展过程 电子数据交换&#xff08;Electronic Data Interchange&#xff0c;EDI&#xff09;是一种通过电子方式传输商业文件的技术。EDI的历史可以追溯到20世纪60年代&#xff0c;当时企业开始使用计算机进行数据处理。最早的EDI系统是为解决大型企业间的信息交换问题而…...

【MotionCap】在wsl2 ubuntu20.04构建及运行

https://github.com/MVIG-SJTU/AlphaPose/issues/1157conda create -n alphapose python=3.7 -y conda activate alphapose conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1...

iptables 防火墙(二)

iptables 防火墙&#xff08;二&#xff09; 一、SNAT 策略及应用SNAT 策略概述SNAT 策略的应用 二、DNAT 策略及应用DNAT 策略概述 三、规则的导出、导入规则的备份及还原iptables-save 命令iptables-restore 命令 使用 iptables 服务 四、使用防火墙脚本防火墙脚本的构成防火…...

【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】

目录 第一步&#xff1a;基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 1.1.2 控制流 1.1.3 函数和模块 1.2 安装PyCharm 1.2.1 下载并安装 第二步&#xff1a;数据科学基础 2.1 安装必备库 2.1.1 使用pip安装 2.2 数据操作 2.2.1 Pandas基础操作 2.2.2 Nu…...

idea Error running ‘Application‘

1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…...

数据结构和顺序表

什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。数据的逻辑结…...

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…...

TCP和UDP

目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...

类与对象的创建

1.类是一种抽象的数据类型&#xff0c;他是对某一类事务整体描述/定义&#xff0c;但是并不能代表某一个具体的事物 eg&#xff1a;动物&#xff0c;植物&#xff0c;手机&#xff0c;电脑... Person类&#xff0c;Pet类&#xff0c;Car类&#xff0c;这些类都是用来描述、定义…...

基于单片机的 LED 照明灯智能调光系统设计

摘  要&#xff1a; 社会经济的不断发展&#xff0c;推动了智能化生活的进程&#xff0c;智能调光技术开始广泛应用在生活中&#xff0c;人们也逐渐提高了灯光亮灯率等的要求。基于此&#xff0c;笔者主要设计了基于单片机的 LED 照明灯智能调光系统&#xff0c;希望能够为相关…...

客户满意度调查方法有哪些

用户满意度调查作为改进用户体验工作中重要的一项活动&#xff0c;可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查&#xff0c;但是在调查方式上不清楚该用那种方式&#xff1f;另外还要考虑预算&#xff0c;民安智库&#xff08;公众满意度调…...

为什么企业应用开发,c++干不过java?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C/C这种东西&#xff0c;根本…...

基于盲信号处理的声音分离——最小化增益的ICA算法

基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声&#xff0c;为了使得分离后的信号与原信号的比值最小时&#xff0c;叫做增益最小。当增益越小时&#xff0c;分离后噪声越小&#xff0c;分离信号越接近原信号&#xff0c;分离算法的效果越好。这是…...

自动化代码规范检查--Sonarqube部署

参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...

基于uni-app与图鸟UI的移动应用模板构建研究

摘要 随着移动互联网技术的迅猛发展&#xff0c;移动端应用已成为企业展示形象、提供服务的重要窗口。本文基于uni-app框架和图鸟UI设计&#xff0c;深入探讨了如何高效构建覆盖多个领域的移动端应用模板。通过对商城、办公、投票、生活服务等多种类型模板的详细介绍&#xff…...

AI智能在Type-C领域的应用

随着科技的飞速发展&#xff0c;Type-C接口凭借其卓越的性能和广泛的应用场景&#xff0c;已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起&#xff0c;为Type-C领域带来了革命性的变革&#xff0c;推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…...

WIN32核心编程 - 数据类型 错误处理 字符处理

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 数据类型 基本数据类型 Win32基本数据类型 错误处理 C语言中的错误处理 C中的错误处理 Win32中的错误处理 字符处理 C/C WIN32 字符处理 数据类型 基本数据类型 C/C语言定义了一系列…...

C++ 和C#的差别

首先把眼睛瞪大&#xff0c;然后憋住一口气&#xff0c;读下去&#xff1a; 1、CPP 就是C plus plus的缩写&#xff0c;中国大陆的程序员圈子中通常被读做"C加加"&#xff0c;而西方的程序员通常读做"C plus plus"&#xff0c;它是一种使用非常广泛的计算…...

gdb-dashboard:用Python重塑GDB调试体验

gdb-dashboard&#xff1b;一目了然的GDB调试&#xff0c;尽在掌控之中- 精选真开源&#xff0c;释放新价值。 概览 gdb-dashboard是一个用Python编写的模块化视觉界面&#xff0c;为GNU Debugger&#xff08;GDB&#xff09;提供了一个现代化的工作空间。它通过集成多个面板和…...

三大常用集合

1.Set集合 在Java中&#xff0c;Set是一种集合类型&#xff0c;它是一种不允许包含重复元素的集合&#xff0c;每个元素在Set中是唯一的。Set接口的常用实现类有HashSet、TreeSet和LinkedHashSet。以下是关于Set集合的一些重要特点和用法&#xff1a; 特点&#xff1a; 不允…...

《后端程序猿 · 基于 Lettuce 实现缓存容错策略》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;如需交流&#xff…...

【echarts】拖拽滑块dataZoom-slider自定义样式,简单适配移动端

电脑端 移动端 代码片段 dataZoom: [{type: inside,start: 0,end: 100},{type: slider,backgroundColor: #F2F5F9,fillerColor: #BFCCE3,height: 13, // 设置slider的高度为15start: 0,end: 100,right: 60,left: 60,bottom: 15,handleIcon:path://M30.9,53.2C16.8,53.2,5.3,41.…...

超长期特别国债成险资“必选项”,与地方债利差或成配置干扰因素

21世纪经济报道记者叶麦穗 广州报道 超长期特别国债火热出圈,不仅成为个人投资的香饽饽,保险资金对其的配置热情也持续升温。目前,在20年期、30年期超长期特别国债发行中,多家保险机构已入场认购。对于险资配置超长期特别国债的原因,主流观点认为,在“资产荒”的当下,安…...

HAL库使用FreeRTOS实时操作系统时配置时基源(TimeBase Source)

需要另外的定时器&#xff0c;用systic的时候生成项目会有警告 https://blog.51cto.com/u_16213579/10967728...

【技术】汉诺塔的递归问题解析及多语言实现

汉诺塔的递归问题解析及多语言实现 汉诺塔&#xff08;Hanoi Tower&#xff09;问题是一个非常经典的递归问题。它起源于一个古老的传说&#xff1a;有三个柱子和64个大小不一的金盘&#xff0c;开始时这些金盘按从小到大的顺序放在柱子A上&#xff0c;目标是在柱子B上按同样的…...

数据清洗(ETL)案例实操

文章目录 数据清洗&#xff08;ETL&#xff09;概述案例需求和分析代码实现和结果分析 数据清洗&#xff08;ETL&#xff09;概述 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&…...

科学技术创新杂志科学技术创新杂志社科学技术创新编辑部2024年第10期目录

科技创新 单桩穿越岩溶发育地层力学特征与溶洞处置措施研究 刘飞; 1-7《科学技术创新》投稿&#xff1a;cnqikantg126.com 基于多目标优化的中低压配电网电力规划研究 向星山;杨承俊;张寒月; 8-11 激光雷达测绘技术在工程测绘中的应用研究 张军伟;闫宏昌; 12-15 …...

k8s cephfs(动态pvc)

官方参考文档&#xff1a;GitHub - ceph/ceph-csi at v3.9.0 测试版本 Ceph Version Ceph CSI Version Container Orchestrator Name Version Tested v17.2.7 v3.9.0 Kubernetes v1.25.6 安装Ceph-csi Step 1 Download GitHub - ceph/ceph-csi at v3.9.0 rootsd-k8s…...