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

Sentinel底层原理(下)

1、概述

Sentinel的核心原理,也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。

Sentinel会为每个资源创建一个处理链条,就是一个责任链,第一次访问这个资源的时候创建,之后就一直复用,所以这个处理链条每个资源有且只有一个。

SphU.entry(…)这行代码背后就会调用责任链来完成对资源的检查逻辑。

这个责任链条中每个处理节点被称为ProcessorSlot,中文意思就是处理器槽
在这里插入图片描述
这个ProcessorSlot有很多实现,但是Sentinel的核心就下面这8个:

  • NodeSelectorSlot
  • ClusterBuilderSlot
  • LogSlot
  • StatisticSlot
  • AuthoritySlot
  • SystemSlot
  • FlowSlot
  • DegradeSlot

这些实现会通过SPI机制加载,然后按照一定的顺序组成一个责任链。

默认情况下,节点是按照如下的顺序进行排序的
在这里插入图片描述
虽然默认就8个,但是如果你想扩展,只要实现ProcessorSlot,按照SPI的规定配置一下就行。

下面就来按照上面节点的处理顺序来好好扒一扒这8个ProcessorSlot。

2、NodeSelectorSlot

这个节点的作用是来设置当前资源对应的入口 的统计Node 。

首先什么是统计Node?

比如就拿上面的例子来说,当/sayHello这个资源的qps超过2的时候,要触发限流。

但是有个疑问,Sentinel是怎么知道/sayHello这个资源的qps是否达到2呢?

当然是需要进行数据统计的,只有通过统计,才知道qps是否达到2,这个进行数据统计的类在Sentinel中叫做Node。
在这里插入图片描述
通过Node这个统计的类就知道有多少请求,成功多少个,失败多少个,qps是多少之类的。底层其实是使用到了滑动窗口算法。

那么什么叫对应的入口?

在Sentinel中,支持同一个资源有不同的访问入口。

只不过一般一个资源就一个入口,比如一个http接口一般只能通过http访问,但是Sentinel支持多入口,你可以不用,但是Sentinel有。

所以NodeSelectorSlot的作用就是选择资源在当前调用入口的统计Node,这样就实现了统计同一个资源在不同入口访问数据。

资源的入口可以在进入资源之前通过ContextUtil.enter(“入口名”, origin)来指定,如果不指定,那么入口名称默认就是sentinel_default_context。

在SpringMVC环境底下,所有的http接口资源,默认的入口都是sentinel_spring_web_context
在这里插入图片描述
入口名称也可以通过控制台看到
在这里插入图片描述

3、ClusterBuilderSlot

ClusterBuilderSlot的作用跟NodeSelectorSlot其实是差不多的,也是用来选择统计Node,但是选择的Node的统计维护跟NodeSelectorSlot不一样。

ClusterBuilderSlot会选择两个统计Node:

  • 第一个统计Node是资源的所有入口的统计数据之和,就是资源访问的总数据
  • 第二个统计Node就是统计资源调用者对资源访问数据

资源调用者很好理解,比如一个http接口资源肯定会被调用,那么调用这个接口的服务或者应用其实就是资源的调用者,但是一般资源的调用者就是指某个服务,后面调用者我可能会以服务来代替。

一个接口可以被很多服务调用,所以一个资源可以很多调用者,而不同调用者都会有单独的一个统计Node,用来分别统计不同调用者对资源的访问数据。

那么如何知道访问资源来自哪个服务(调用者)呢?

也是通过ContextUtil.enter(“入口名”, origin)来指定,这个方法的第二个参数origin就是代表服务名的意思,默认是空。

所以ContextUtil.enter(…)可以同时指定资源的入口和调用者,一个资源一定有入口,因为不指定入口默认就是sentinel_default_context,但是调用者不指定就会没有。

对于一个http请求来说,Sentinel默认服务名需要放到S-user这个请求头中,所以如果你想知道接口的调用服务,需要在调用方发送请求的时候将服务名设置到S-user请求头中。

当资源所在的服务接收到请求时,Sentinel就会从S-user请求头获取到服务名,之后再通过ContextUtil.enter(“入口名”, “调用者名”)来设置当前资源的调用者
在这里插入图片描述
所以这一节加上上一节,我们知道了一个资源其实有三种维度的统计Node:

  • 分别统计不同入口的访问数据
  • 统计所有入口访问数据之和
  • 分别统计来自某个服务的访问数据

为了方便区分,我来给这三个统计Node取个响亮的名字

不同入口的访问数据就叫他DefaultNode,统计所有入口访问数据之和就叫他ClusterNode,来自某个服务的访问数据就叫他OriginNode。

4、LogSlot

这个Slot没什么好说的,通过名字可以看出来,其实就是用来打印日志的。
在这里插入图片描述
当发生异常,就会打印日志。

5、StatisticSlot

这个Slot就比较重要了,就是用来统计数据的。

前面说的NodeSelectorSlot和ClusterBuilderSlot,他们的作用就是根据资源当前的入口和调用来源来选择对应的统计Node。

而StatisticSlot就是对这些统计Node进行实际的统计,比如加一下资源的访问线程数,资源的请求数量,系统的入口qps,线程数,平均响应时间这些指标等等。

至于cpu使用率、负载指标,Sentinel会启动一个定时任务,每隔1s会去读取一次当前系统的cpu和负载。
在这里插入图片描述

6、AuthoritySlot

Authority是授权的意思,这个Slot的作用是对资源调用者进行授权,就是黑白名单控制。

可以通过控制台来添加授权规则。
在这里插入图片描述
在AuthoritySlot中会去获取资源的调用者,之后会跟授权规则中的资源应用这个选项进行匹配,之后就会出现有以下2种情况:

  • 授权类型是黑名单,匹配上了,说明在黑名单内,那么这个服务就不能访问这个资源,没匹配上就可以访问
  • 授权类型是白名单。匹配上了,说明在白名单内,那么这个服务就可以访问这个资源,没匹配上就不可以访问

7、SystemSlot

这个的作用是根据整个系统运行的统计数据来限流的,防止当前系统负载过高。

它支持入口qps、线程数、响应时间、cpu使用率、负载5个限流的维度。
在这里插入图片描述

8、FlowSlot

这个Slot会根据预设的规则,结合前面的统计出来的实时信息进行流量控制。
在这里插入图片描述
这里我们来好好扒一扒这些配置项的意思。

  • 针对来源,来源就是前面说的调用方,这个配置表明,这个规则适用于哪个调用方,默认是default,就是指规则适用于所有调用方,如果指定了调用方,那么这个规则仅仅对指定的调用方生效。
  • 阈值类型 ,就是限流条件,当资源的qps或者访问的线程数到达设置的单机阈值,就会触发限流。
  • 是否集群 ,这个作用是用来对集群控制的,因为一个服务可能在很多台机器上,而这个的作用就是将整个集群看成一个整体来限流。
  • 流控模式 ,这个流控模式的选项仅仅对阈值类型为qps有效,当阈值类型线程数时无效。

这个配置就比较有意思了,分为直接、关联、链路三种模式:

  • 直接模式的意思就是当资源的ClusterNode统计数据统计达到了阈值,就会触发限流。
  • 关联模式下需要填写关联的资源名称
    在这里插入图片描述
    关联的意思就是当关联资源 的ClusterNode统计的qps达到了设置的阈值时,就会触发当前资源 的限流操作。
  • 链路模式也一样,它需要关联一个入口资源
    在这里插入图片描述
    关联入口的意思就是指,当访问资源的实际入口跟关联入口是一样的时候,就会根据这个入口对应的DefaultNode的统计数据来判断是否需要限流。

到这,其实前面说到的一个资源的三种统计维度的数据都用到了,现在应该明白了为什么需要这么多维度的数据,就是为不同维度限流准备的。

9、流控效果

这个就是如果是通过qps来限流,并且达到了限流的条件之后会做什么,如果是线程数,就直接抛出BlockException异常

也有三种方式,快速失败、Warm Up、排队等待

  • 快速失败的意思就是指一旦触发限流了,那么直接抛出BlockException异常
  • Warm Up的作用就是为了防止系统流量突然增加时出现瞬间把系统压垮的情况。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限。
  • 排队等待,很好理解,意思当出现限流了,不是抛异常,而是去排队等待一定时间,其实就是让请求均匀速度通过,内部使用的是传说中的漏桶算法。

10、DegradeSlot

这是整个责任链中最后一个slot,这个slot的作用是用来熔断降级的。

Sentinel支持三种熔断策略:慢调用比例、异常比例 、异常数,通过规则配置也可以看出来。
在这里插入图片描述
熔断器的工作流程大致如下
在这里插入图片描述
Sentinel会为每个设置的规则都创建一个熔断器,熔断器有三种状态,OPEN(打开)、HALF_OPEN(半开)、CLOSED(关闭)

  • 当处于CLOSED状态时,可以访问资源,访问之后会进行慢调用比例、异常比例、异常数的统计,一旦达到了设置的阈值,就会将熔断器的状态设置为OPEN
  • 当处于OPEN状态时,会去判断是否达到了熔断时间,如果没到,拒绝访问,如果到了,那么就将状态改成HALF_OPEN,然后访问资源,访问之后会对访问结果进行判断,符合规则设置的要求,直接将熔断器设置为CLOSED,关闭熔断器,不符合则还是改为OPEN状态
  • 当处于HALF_OPEN状态时,直接拒绝访问资源

一般来说,熔断降级其实是对于服务的调用方来说的。

在项目中会经常调用其它服务或者是第三方接口,而对于这些接口,一旦它们出现不稳定,就有可能导致自身服务长时间等待,从而出现响应延迟等等问题。

此时服务调用方就可基于熔断降级方式解决。

一旦第三方接口响应时间过长,那么就可以使用慢调用比例规则,当出现大量长时间响应的情况,那么就直接熔断,不去请求。

虽然说熔断降级是针对服务的调用方来说,但是Sentinel本身并没有限制熔断降级一定是调用其它的服务。

相关文章:

Sentinel底层原理(下)

1、概述 Sentinel的核心原理,也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。 Sentinel会为每个资源创建一个处理链条,就是一个责任链,第一次访问这个资源的时候创建,之后就一直复用,所以这个处理链条每…...

竞赛选题 疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据全国疫情数据分析与3D可视化 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&#xff0…...

macos 配置ndk环境

选择Android Studio下默认的ndk环境 mac电脑的ndk默认路径一般是 /Users/user_name/Library/Android/sdk/ndk/version_code 其中user_name为自己电脑的用户名,version_code为自己ndk安装的版本号,比如我这里电脑的ndk路径就是 /Users/zhangsan/Libra…...

【linux】进行间通信——共享内存+消息队列+信号量

共享内存消息队列信号量 1.共享内存1.1共享内存的原理1.2共享内存的概念1.3接口的认识1.4实操comm.hppservice.cc (写)clint.cc (读) 1.5共享内存的总结1.6共享内存的内核结构 2.消息队列2.1原理2.2接口 3.信号量3.1信号量是什么3…...

PlantUML基础使用教程

环境搭建 IDEA插件下载 打开IEDA系列IDE,从FIle–>Settings–>Plugins–>Marketplace 进入到插件下载界面,搜索PlantUML,安装PlantUML Integration和PlantUML Parser两个插件,并重启IDE 安装和配置Graphviz 进入官网…...

Redis:新的3种数据类型Bitmaps、HyperLoglog、Geographic

目录 Bitmaps简介常用命令bitmaps与set比较 HyperLoglog简介命令 Geographic简介命令 Bitmaps 简介 位操作字符串。 现代计算机使用二进制(位)作为信息的基本单位,1个字节等于8位,例如“abc”字符串是有3个字节组成&#xff0c…...

promise时效架构升级方案的实施及落地 | 京东物流技术团队

一、项目背景 为什么需要架构升级 promise时效包含两个子系统:内核时效计算系统(系统核心是时效计算)和组件化时效系统(系统核心是复杂业务处理以及多种时效业务聚合,承接结算下单黄金流程流量)&#xff…...

es的使用方法以及概念

Elasticsearch(简称为ES)是一个开源的搜索引擎,它构建在Lucene搜索引擎之上。它提供了一个分布式、多租户的全文搜索引擎,具有强大的实时分析能力。以下是关于Elasticsearch的一些基本概念和使用方法: 基本概念&#…...

WPF xaml Command用法介绍

WPF (Windows Presentation Foundation) 中的命令设计模式是一种用于分离用户界面逻辑和业务逻辑的方法。在WPF中,这种模式通过命令接口(如 ICommand)实现,使得用户界面组件(如按钮、菜单项等)可以触发不直…...

微信小程序动态生成表单来啦!你再也不需要手写表单了!

dc-vant-form 由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了dc-vant-form,…...

顺序表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…...

【大连民族大学C语言CG题库练习题】——判断一个矩阵是另一个矩阵的子矩阵

【问题描述】 从标准输入中输入一个N&#xff08;N<9&#xff09;阶矩阵和一个M&#xff08;M<N&#xff09;阶矩阵&#xff0c;判断矩阵M是否是N的子矩阵&#xff0c;若是则输出M在N中的起始位置&#xff0c;若不是则输出-1。若矩阵M能与N中某一区域完全相等&#xff0…...

C#WPF控制模板实例

一、控制模板 ControlTemplate(控件模板)不仅是用于来定义控件的外观、样式, 还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 控件模板定义控件的视觉外观,所有的 UI 元素都具有某种外观和行为,例如,Button 具有外观和行为。单击事件或…...

MATLAB Simulink和S7-1200PLC MOBUSTCP通信

MATLAB Simulink和SMART PLC OPC通信详细配置请查看下面文章链接: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读749次,点赞26次,收藏2次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的…...

五、函数的介绍

1、为什么需要函数 (1)当程序足够简单时&#xff0c;一个main函数就可以实现所有功能。随着程序功能的增加、复杂化&#xff0c;超出人的大脑的承受范围&#xff0c;这时一个main函数可能就逻辑不清了。这是就需要把一个大程序分成许多小的模块来组织&#xff0c;于是乎出现了…...

【广州华锐互动VRAR】VR元宇宙技术在气象卫星知识科普中的应用

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;和元宇宙等技术正逐渐走进我们的生活。这些技术为我们提供了一个全新的互动平台&#xff0c;使我们能够以更加直观和生动的方式了解和学习各种知识。在气象天文领域&#xff0c;VR元宇宙技术的应用也日益显现…...

F. Alex‘s whims Codeforces Round 909 (Div. 3) 1899F

Problem - F - Codeforces 题目大意&#xff1a;有q次询问&#xff0c;每次询问给出一个数x&#xff0c;要求构造一棵n个点的树&#xff0c;使得对于每次询问&#xff0c;树上都有一条简单路径的长度等于x&#xff0c;同时每次询问前可以对树进行一次操作&#xff0c;即将一个…...

面试题-5

1.用递归的时候有没有遇到什么问题&#xff1f; 如果一个函数内可以调用函数本身,那么这个就是递归函数 函数内部调用自己 特别注意:写递归必须要有退出条件return 2.如何实现一个深拷贝 深拷贝就是完全拷贝一份新的对象,会在堆内存中开辟新的空间,拷贝的对象被修改后&…...

车载以太网-ARP

文章目录 车载以太网ARP协议ARP协议帧格式ARP报文示例ARP报文完整流程ARP流程报文示例ARP协议测试 车载以太网ARP协议 车载以太网ARP协议是指在车载以太网中使用的ARP协议。ARP&#xff08;Address Resolution Protocol&#xff09;是一种用于将IP地址解析为MAC地址的协议。在…...

Kafka学习笔记(三)

目录 第5章 Kafka监控&#xff08;Kafka Eagle&#xff09;5.2 修改kafka启动命令5.2 上传压缩包5.3 解压到本地5.4 进入刚才解压的目录5.5 将kafka-eagle-web-1.3.7-bin.tar.gz解压至/opt/module5.6 修改名称5.7 给启动文件执行权限5.8 修改配置文件5.9 添加环境变量5.10 启动…...

JVM-HotSpot虚拟机对象探秘

目录 一、对象的实例化 &#xff08;一&#xff09;创建对象的方式 &#xff08;二&#xff09;创建对象的步骤 二、对象的内存布局 &#xff08;一&#xff09;对象头 &#xff08;二&#xff09;实例数据 &#xff08;三&#xff09;对齐填充 三、 对象的访问定位 &…...

大模型技术的发展:开源和闭源,究竟谁强谁弱又该何去何从?

一、开源和闭源的优劣势比较 开源和闭源软件都有各自的优劣势&#xff0c;具体比较如下&#xff1a; 安全性&#xff1a;闭源软件的安全性相对较高&#xff0c;因为其源代码不公开&#xff0c;攻击者难以找到漏洞进行攻击。而开源软件由于源代码公开&#xff0c;容易被攻击者发…...

Python学习笔记--自定义元类

四、自定义元类 到现在&#xff0c;我们已经知道元类是什么鬼东西了。 那么&#xff0c;从始至终我们还不知道元类到底有啥用。 只是了解了一下元类。 在了解它有啥用的时候&#xff0c;我们先来了解下怎么自定义元类。 因为只有了解了怎么自定义才能更好的理解它的作用。…...

软件测试 —— 常见的自动化测试架构!

一个自动化测试架构就是一个集成体系&#xff0c;其中定义了一个特殊软件产品的自动化测试规则。这一体系中包含测试功能函数库、测试数据源、测试对象识别标准&#xff0c;以及各种可重用的模块。这些组件作为小的构建模块&#xff0c;被组合起来代表某种商业流程。自动化测试…...

Python 的 @lru_cache() 装饰器

在 Python 标准库的 functools 模块中&#xff0c;有个 lru_cache 装饰器&#xff0c;用于为一个函数添加缓存系统&#xff1a; 存储函数的输入和对应的输出当函数被调用&#xff0c;并且给出了已经缓存过的输入&#xff0c;那么函数不会再运行&#xff0c;而是直接从缓存中获…...

Swift制作打包framework

新建framework项目 设置生成fat包&#xff0c;包括模拟器x86_64和arm64 Buliding Settings -> Architectures -> Build Active Architecture Only 设置为NO 设置打包环境&#xff0c;选择release edit Scheme -> run -> Build configuration 设置为 Release 设置…...

无线WiFi安全渗透与攻防(N.2)WPA渗透-使用airolib-ng创建彩虹表加速

WPA渗透-使用airolib-ng创建彩虹表加速 WPA渗透-使用airolib-ng创建彩虹表加速1.什么是彩虹表?2.渗透wifi1.创建数据库名2.将字典导入数据库3.生成渗透wifi密码的PMK4.生成需要渗透wifi的彩虹表5.渗透wifiWPA渗透-使用airolib-ng创建彩虹表加速 1.什么是彩虹表? 彩虹表是一…...

整形数据和浮点型数据在内存中的存储差别

愿所有美好如期而遇 我们先来看代码&#xff0c;猜猜结果是什么呢&#xff1f; int main() {//以整型数据的方式存储int n 10;float* m (float*)&n;//以整型数据的方式读取printf("%d\n", n);//以浮点型数据的方式2读取printf("%f\n", *m);printf(&…...

【Python基础篇】运算符

博主&#xff1a;&#x1f44d;不许代码码上红 欢迎&#xff1a;&#x1f40b;点赞、收藏、关注、评论。 格言&#xff1a; 大鹏一日同风起&#xff0c;扶摇直上九万里。 文章目录 一 Python中的运算符二 算术运算符1 Python所有算术运算符的说明2 Python算术运算符的所有操作…...

开启数据库审计 db,extended级别或os级别)并将审计文件存放到/opt/oracle/audit/下

文章目录 1、登录到数据库2、查看审计状态3、创建审计目录4、启用审计5、设置审计文件路径6、再次查看结果 1、登录到数据库 使用SQL*Plus或者其他Oracle数据库客户端登录到数据库。 sqlplus / as sysdba;2、查看审计状态 show parameter audit;目前是DB状态&#xff0c;并且…...

02.webpack中多文件打包

1.module,chunk,bundle的区别 moudle - 各个源码文件&#xff0c;webpack中一切皆是模块chunk - 多模块合并成的&#xff0c;如entry, import(), splitChunkbundle - 最终的输出文件 2.多文件打包配置 2.1 webpack.common.js const path require(path) const HtmlWebpackPl…...

IEEE Standard for SystemVerilog Chapter 22. Compiler directives

22.1 General 此子句描述以下编译器指令&#xff08;按字母顺序列出&#xff09;&#xff1a; __FILE__ [22.13] __LINE__ [22.13] begin_keywords [22.14] celldefine [22.10] default_net…...

机器学习中的独立和同分布 (IID):假设和影响

一、介绍 在机器学习中&#xff0c;独立和同分布 &#xff08;IID&#xff09; 的概念在数据分析、模型训练和评估的各个方面都起着至关重要的作用。IID 假设是确保许多机器学习算法和统计技术的可靠性和有效性的基础。本文探讨了 IID 在机器学习中的重要性、其假设及其对模型开…...

PTP软硬件时间戳

软硬件时间戳 抄袭来源&#xff1a;http://www.bdtime.com.cn/pinlv/4296.html PTP 是一种网络协议&#xff0c;用于在计算机网络中进行时钟校准和时间同步。硬件时间戳和软件时间戳是在实现 PTP 时常见的两种方式&#xff0c;它们在精度、可靠性、实时性以及资源消耗等方面存…...

使用ADS进行serdes仿真时,Tx_Diff中EQ的设置对发送端波形的影响。

研究并记录一下ADS仿真中Tx_Diff的EQ设置。原理图如下&#xff1a; 最上面是选择均衡方法Choose equalization method&#xff1a;Specify FIR taps&#xff0c;Specify de-emphasis和none。 当选择Specify de-emphasis选项时&#xff0c;下方可以输入去加重具体的dB值&#x…...

数据库迁移(DBeaver版本)

最近需要做一个数据库迁移&#xff0c; 测试环境开发的差不多了&#xff0c;需要将脚本迁移到生产。 中间了试了一些工具&#xff0c;比如Jetbrain出品的datagrip&#xff0c;这个数据库工具平时还是很好用的&#xff0c;但是数据迁移感觉不是那么好用&#xff0c;所以还是用到…...

【c++STL常见排序算法sort,merge,random_shuffle,reverse】

文章目录 C STL 常见排序算法详解1. sort 算法2. merge 算法3. random_shuffle 算法4. reverse 算法 C STL 常见排序算法详解 1. sort 算法 功能&#xff1a;sort 用于对容器内的元素进行升序排序。示例代码&#xff1a;#include <iostream> #include <algorithm>…...

STM32/N32G455国民科技芯片驱动DS1302时钟---笔记

这次来分享一下DS1302时钟IC&#xff0c;之前听说过这个IC&#xff0c;但是一直没搞过&#xff0c;用了半天时间就明白了原理和驱动&#xff0c;说明还是很简单的。 注&#xff1a;首先来区分一下DS1302和RTC时钟有什么不同&#xff0c;为什么不直接用RTC呢&#xff1f; RTC不…...

基于PLC的污水厌氧处理控制系统(论文+源码)

1. 系统设计 污水厌氧由进水系统通过粗格栅和清污机进行初步排除大块杂质物体以及漂浮物等&#xff0c;到达除砂池中。在除砂池系统中细格栅进一步净化污水厌氧中的细小颗粒物体&#xff0c;将污水厌氧中的细小沙粒滤除后进入氧化沟反应池。在该氧化沟系统中进行生化处理&…...

Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件

文章目录 前言NetworkAnimatorAnimator的Trigger属性服务器权威模式&#xff08;Server Authoritative Mode&#xff09;客户端权威模式 (Owner Authoritative Mode)学习文档 前言 这个组件是NetCode常用的组件之一&#xff0c;NetworkAnimator跟NetworkTransform一样&#xf…...

iceoryx之Roudi

目录...

.Net(C#)常用转换byte转uint32、byte转float等

1、byte转String Encoding.ASCII.GetString(byte[]); 2、base64string转byte byte[]Base64Decoder.Decoder.GetDecoded(string); 3、byte转UInt16 方法一 (UInt16)(bytes[0] * 256 bytes[1]) 方法二 (UInt16)((bytes[0] << 8) | bytes[1]); 方法三 字节序要对…...

windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白&#xff0c;就研究了一下&#xff0c;网上找了一下很多都说是什么图标缓存有问题&#xff0c;试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志&#xff0c;查了一下说是文件属性里面设置加密之后就会…...

【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池

【Linux系统编程十九】&#xff1a;匿名管道原理/模拟实现进程池 一.进程通信理解二.通信实现原理三.系统接口四.五大特性与四种情况五.应用场景--进程池 一.进程通信理解 什么是通信&#xff1f; 通信其实就是一个进程想把数据给另一个进程&#xff0c;但因为进程具有独立性…...

【全网首发】2023年NOIP真题

目录 前言 真题 结尾 前言 NOIP题目了解一下&#xff0c;后续有可能会出讲解&#xff0c;题目全部来自于洛谷 真题 第一题&#xff1a;词典 第二题&#xff1a;三值逻辑 第三题&#xff1a;双序列扩展 第四题&#xff1a; 天天爱打卡 结尾 大家可以把你的预期分数打在评论…...

【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统

一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程&#xff0c;了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…...

Pandas+Matplotlib 数据分析

利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质&#xff0c; 以及数据间或属性间的关系&#xff0c;可以轻易地让人看图释义。用户通过探索图&#xff08;Exploratory Graph&#xff09;可以了解数据的…...

k8s ingress高级用法一

前面的文章中&#xff0c;我们讲述了ingress的基础应用&#xff0c;接下来继续讲解ingress的一些高级用法 一、ingress限流 在实际的生产环境中&#xff0c;有时间我们需要对服务进行限流&#xff0c;避免单位时间内访问次数过多&#xff0c;常用的一些限流的参数如下&#x…...

C语言--从键盘输入10个数字放在数组中,并输出

用scanf读取数字的时候要注意&#xff0c;可以输入一个数字&#xff0c;按一下回车&#xff0c;输入一个数字&#xff0c;按一下回车&#xff0c;也可以一次性输入完10个数据。&#xff08;中间可以用空格隔开&#xff0c;系统会自动识别&#xff09; 输出一:每按下一个数字&am…...

SSL加密

小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…...