cfi网络安全 网络安全hcip
目录
RIP (路由信息协议)
算法
开销
版本
开销值的计算方式
RIPV1和RIPV2的区别
RIP的数据包
Request(请求)包
Reponse(应答)包
RIP的特征
周期更新
RIP的计时器
1,周期更新计时器
2,失效计时器
3,垃圾回收计时器
RIP的核心思想(算法)---Bellman-Ford算法
Bellman-Ford算法
RIP的环路问题 ---- 异步周期更新导致
1,15跳的开销限制(开销值不断叠加,自动破环)
2,触发更新
3,水平分割
4,毒性逆转
RIP的基本配置
1,启动RIP进程
2,版本选择
3,宣告
沉默接口
RIPV1与RIPV2的区别
1、RIPV1数据包内容
2、RIPV2数据包内容
重发布
RIPV1和RIPV2互通的方法:
RIP的拓展配置
1,RIPV2的手工认证
2,RIPV2的手工汇总
汇总的优点:
3,加快收敛
4,缺省路由
RIP的路由控制
1、通过修改优先级影响RIP的选路
2、通过修改开销值影响RIP的选路
1、抓取流量修改开销值允许该流量通过
2、抓取流量使得该流量禁止通过
单播邻居
沉默接口
RIP (路由信息协议)
算法
贝尔曼-福特算法 --- 灵魂
开销
RIP以跳数作为开销值。RIP存在一个15跳工作半径。当路由的开销值达到16跳时,则认为该路径不可达。
版本
RIPV1,RIPV2 --- IPV4领域
RIPNG --- IPV6领域
RIP协议在传递信息时仅需要携带两个参数,一个是目标网段信息,一个是开销值。
开销值的计算方式
COST = 本地路由表中该网段的开销值 + 1
RIPV1和RIPV2的区别
1,RIPV1是有类别的路由协议,RIPV2是无类别的路由协议。
RIPV1在传递目标网段信息的时候不携带子网掩码,RIPV2在传递目标网段信息时携带子网掩码因为这个原因,导致RIPV1不支持非连续子网网络。以及VLSM和CIDR
2,RIPV1采用广播的形式进行邻居间的通信,RIPV2采用组播(224.0.0.9)的形式进行邻居间的通信。
但凡是224.0.0.X开头的组播地址都称为本地链路组播,其特点是这类组播的TTL值为1。这类信息仅能在一个广播域内进行传播。
RIPV1和RIPV2都是基于UDP的520端口进行通信
RIPNG是基于UDP的521端口进行通信
3,RIPV2支持手动认证和手工汇总,RIPV1不支持。
RIP的数据包
Request(请求)包
当RIP运行后将立即发出,希望尽快从邻居处获取未知网段的路由信息。
Reponse(应答)包
携带路由信息的数据报。
RIP的特征
RIP在收敛完成之后,依然会每隔30S发一次Reponse(应答)包,我们把RIP的这种现象称为RIP的周期更新。 ---- 一方面,弥补自身没有保活机制,另一方面弥补自身没有确认机制。
周期更新
异步周期更新 --- 30S即周期更新计时器。为了确保异步周期更新,RIP并没有严格按照30S的更新周期来执行,而是在该时间上增加了一个小的偏移量±5S。
RIP的计时器
1,周期更新计时器
默认30S
2,失效计时器
180S --- 当一条路由信息180S未刷新,则RIP将判定该路由失效。(路由器将会把该路由从全局路由表中删除,还会保存在缓存中,并且将其开销值置为16,之后周期更新时依然携带。---带毒传输)
3,垃圾回收计时器
120S --- 失效路由在120S内将继续发出,进行带毒传输。当该计时器归零后。将该路由信息彻底删除。
RIP的核心思想(算法)---Bellman-Ford算法
Bellman-Ford算法
1,AR2发送2.0网段的信息给AR1,如果,AR1本身并不存在该网段的路由信息,则将直接刷新到本地的路由表中。
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.0/24 RIP 100 1 D 12.0.0.2 G0/0/0
2,AR2发送2.0网段的信息给AR1,如果,R1本身存在该网段的路由信息, 且下一跳就是AR2。则将AR2发来的信息刷新到路由表中。
3,AR2发送2.0网段的信息给AR1,如果,R1本身存在该网段的路由信息, 但是下一跳不是AR2,则比较开销值,如果,本地路由的开销值大于AR2发来的开销值,则将AR2发来的信息刷新到路由表中。
4,AR2发送2.0网段的信息给AR1,如果,R1本身存在该网段的路由信息, 但是下一跳不是AR2,则比较开销值,如果,本地路由的开销值小于AR2发来的开销值,则不刷新路由条目。
RIP的环路问题 ---- 异步周期更新导致
1,15跳的开销限制(开销值不断叠加,自动破环)
2,触发更新
当拓扑结构发生变化的第一时间,将该变更信息传递出去
3,水平分割
从哪个接口学到的信息,将不再从哪个接口发出去。
4,毒性逆转
从哪个接口学到的信息,依然可以从这个接口发出去,但是必须带毒(将COST改为16)
在一台路由器上,水平分割和毒性逆转只能二选其一,华为设备默 认开启的是水平分割机制。但如果同时开启水平分割和毒性逆转,华为设 备将按照毒性逆转来执行。
RIP的基本配置
1,启动RIP进程
[r1]rip 1 --- 进程号,仅具有本地意义
[r1-rip-1]
2,版本选择
[r1-rip-1]version 2
3,宣告
要求:1,所有直连网段都需要宣告
2,必须按照主类来进行宣告
命令配置:[r1-rip-1]network 12.0.0.0
目的:1,激活接口 --- 只有激活的接口才能收发RIP的数据
2,发布路由 --- 只有激活接口对应的网段路由信息才能被发布
沉默接口
将一个接口配置为沉默接口之后,将只接受不发送RIP数据包
[r1-rip-1]silent-interface GigabitEthernet 0/0/0
RIPV1与RIPV2的区别
RIPV1和RIPV2是不兼容的,不能互通
1、RIPV1数据包内容
Command --- 表示RIP数据包的类型 --- Requset -- 1
Response -- 2
Version --- 版本 --- V1 --- 1;V2 --- 2
路由条目信息 --- 一个RIP数据包中最多可以携带25跳路由信息。
Address Family ---- 地址族标识符;IP --- 2
目标网段 + 开销值
交换机泛洪的条件 --- 1,广播帧;2,组播帧;3,未知单播帧
RFC --- 行业技术汇编 3171 --- RIP
2、RIPV2数据包内容
Command --- 表示RIP数据包的类型 --- Requset ---1
Response -- 2
Version --- 版本 --- V1 -- 1;V2 --- 2
路由条目信息 --- 一个RIP数据包中最多可以携带25跳路由信息。
Address Family --- 地址族标识符;IP --- 2
Route tag --- 路由标签 --- 可以给流量打标记
目标网段 + 子网掩码 + 开销值
Next hop(下一跳) --- 一般情况下,下一跳字段均为0.0.0.0。如果存在选路不佳的情况,则下一跳字段中将携带最佳下一跳的地址。
RIPV2的下一跳问题
主要为了应对一些选路不佳的情况,他可以直接指定下一跳而不是按照算法算出来的下一跳。
重发布
因为不同的路由协议的运行原理和对路由的理解都不相同,所以,不同的路由协议之间存在信息隔离。想让不同的协议的路由信息互通, 我们可以在运行不同协议的边界设备上,将不同路由协议之间进行转换 --- 重发布 --- 路由器将一种路由协议通过另一种路由协议的方式传播出去。
配置命令:[r1-rip-1]import-route static
RIPV1和RIPV2互通的方法:
1,重发布
2,[r3-GigabitEthernet0/0/0]rip version 2 --- 在接口上执行该命令,可以让该接口发送的RIP信息均按照RIPV2的规则来传递和接收。
RIP的拓展配置
1,RIPV2的手工认证
因为RIPV2并没有给认证预留空间,所以,在进行认证之后,认证数据将会占用一条路由条目的空间,导致,进行认证的RIP数据包中最多只能携带24条路由条目信息。
配置命令:[r1-GigabitEthernet0/0/0]rip authentication-mode simple cipher 123456
2,RIPV2的手工汇总
汇总后将立即抑制明细路由,将明细路由的开销值改为16,进行带毒传输。
配置命令:[r1-GigabitEthernet0/0/0]rip summary-address 192.168.0.0 255.255.252.0
注意,汇总之后不要忘记添加空接口路由进行防环。
汇总的优点:
1,可以减少路由条目数量,提高转发效率
2,可以防止路由表翻滚,确保网络的稳定性
3,加快收敛
减少计时器时间
配置命令:[r1-rip-1]timers rip 30 180 120 --- 注意,不要改变计时器之间的倍数关系
4,缺省路由
配置命令:[r3-rip-1]default-route originate --- 在边界路由器上下 发,将使边界设备作为缺省源,所有内网设备将自动生成一条缺省路由指向边界方向。但注意,边界设备上的缺省信息必须手工 配置。
[r3-GigabitEthernet0/0/0]rip summary-address 0.0.0.0 0.0.0.0 --- 在边界路由器连接内网接口上下发汇总信息。
RIP的路由控制
1、通过修改优先级影响RIP的选路
[r1-rip-1]preference 150 --- 将RIP默认优先级修改为150(仅影响本地路由表) ---- 仅适用于不同协议之间进行比较选路
2、通过修改开销值影响RIP的选路
1,在RIP中,不允许将开销值修改变小,主要是因为RIP存在15跳的限制,如果随意将开销值改小,则将导致15跳限制形同虚设。所以,RIP在进行开销值修改时,只能将开销值改大。
2,在开销值改大时,也可以从两个方向入手修改。
如果选择在出方向修改,则修改的是路由传递时的增加值。
如果选择在入方向修改,则修改效果是直接在本地路由表开销值的基础上增加。
如果需要进行精准控制,就是对某个网段的路由信息中的开销值进行调整,我们可以使用ACL列表对该网段流量进行抓取,之后针对抓取流量进行开销值的修改。
1、抓取流量修改开销值允许该流量通过
1,创建ACL列表,抓取对应网段流量
[r2]acl 2000
[r2-acl-basic-2000]rule permit source 4.4.4.0 0
2,在接口上修改开销值
[r2-GigabitEthernet0/0/0]rip metricout 2000 10 --- 出方向修改
[r1-GigabitEthernet0/0/0]rip metricin 2000 3 --- 入方向修改路由过滤 --- 也属于路由控制的一种,我们可以过滤掉某些路由信息,这样从一开始,就不去加表。
路由过滤也可以分为入方向(影响自己)和出方向(影响别人)在华为设备中,进行路由过滤需要用到过滤列表 --- filter-policy过滤列表本身是高阶列表,但是因为自身并不具备过滤功能,所以需 要调用ACL列表,并且依赖ACL列表的过滤功能。
2、抓取流量使得该流量禁止通过
1,创建ACL列表,抓取并过滤路由信息
[r2]acl 2001
[r2-acl-basic-2001]
[r2-acl-basic-2001]rule deny source 4.4.4.0 0
[r2-acl-basic-2001]rule permit source any --- 一定要加,因为华为设备ACL列表末尾并不是隐含了一条允许所有的规则,只是对未匹配到的流量不做处理。如果不加这一条,则将会过滤掉所有路由信息。
2,通过过滤列表对路由信息进行过滤
[r2-rip-1]filter-policy 2001 export GigabitEthernet0/0/0 --- 在出方向调用过滤列表
[r1-rip-1]filter-policy 2001 import --- 在入方向进行调用
单播邻居
[r1-rip-1]peer 10.0.0.2
单播邻居的配置方法(注意,邻居之间必须互相指定对方为自己的单播邻居才行)
邻居之间将以单播的形式发送路由信息,但是,组播或者广播信息也同时会发送所以,单播邻居需要和沉默接口一起使用才能达到其效果。(如果存在多个路由器需要相互指定)
沉默接口
1,只收数据不发数据;
2,沉默接口的效果只影响组播或者广播包,但是,对单播包没有影响
网络安全学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
最后
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施
,从而减少由网络安全而带来的经济损失
相关文章:
cfi网络安全 网络安全hcip
目录 RIP (路由信息协议) 算法 开销 版本 开销值的计算方式 RIPV1和RIPV2的区别 RIP的数据包 Request(请求)包 Reponse(应答)包 RIP的特征 周期更新 RIP的计时器 1,周期更新计时器 2,失效计时器 3,垃圾回收计时器 RIP的核心思…...
HTML 基础
一、HTML 基本结构 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>页面标题</title> </head> <body><!-- 可见内容区域 --> </body> </html><!DOCTYPE html>:声明…...
数据结构与算法:归并排序
目录 归并排序的基本思想 归并排序的特性总结 代码 归并排序的非递归版 归并排序的基本思想 归并排序是建立在归并操作上的一种有效的排序算法。改算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列…...
Tweak Power:全方位电脑系统优化的高效工具
在日常使用电脑时,系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行,许多人会选择系统优化工具。然而,国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时,…...
stm32中分析UART中IDLE,RXNE,TC,TXE这些标志位的作用
下面将基于 STM32 标准库,结合之前提到的不同应用场景,给出使用 TXE、TC、IDLE 和 RXNE 标志位的代码示例及分析。 1. 连续数据发送(使用 TXE) 应用场景 向外部设备连续发送大量数据,如向显示屏发送显示数据、向传感…...
代码随想录算法训练营第十天,150.逆波兰表达式求值,239.滑动窗口最大值,347.前K个高频元素
今日内容:150.逆波兰表达式求值,239.滑动窗口最大值,347.前K个高频元素,栈与队列总结 心得:昨天休息了一天,栈与队列的题都比较典型,之前也是恶补过堆栈的知识,所以做起来相对kmp好一…...
【python】Flask web框架
文章目录 一、Flask 简介二、核心组件解析2.1 路由系统2. 模板引擎 (Jinja2)2.3 表单处理与请求上下文 三、现代开发实践3.1 应用工厂模式3.2 异步处理支持 四、安全最佳实践五、性能优化策略六、扩展生态精选七、部署方案对比 一、Flask 简介 Flask 是基于 Python 的微型 Web…...
Node.js:快速启动你的第一个Web服务器
Node.js 全面入门指南 文章目录 Node.js 全面入门指南一 安装Node.js1. Windows2. MacOS/Linux 二 配置开发环境1. VSCode集成 三 第一个Node.js程序1. 创建你的第一个Node.js程序 四 使用Express框架1. 快速搭建服务器 一 安装Node.js 1. Windows 以下是Windows环境下Node.j…...
3-003:在 MySQL 中建索引时需要注意哪些事项?
在 MySQL 中创建索引时,需要注意以下事项,以确保索引高效且合理: 1. 选择合适的索引类型 主键索引(PRIMARY KEY):每个表只能有一个,默认是聚簇索引。唯一索引(UNIQUE)&…...
基于WPF的雷达上位机系统开发实践
一、雷达上位机系统概述 1.1 系统功能需求 现代雷达上位机系统通常需要实现以下核心功能模块: 数据采集与解析 支持多种通信协议(TCP/IP、UDP、RS422等) 实时解析雷达原始数据(目标距离、方位、速度、RCS等) 典型数…...
版本号标识
Visual Studio 16 2019 是 Microsoft Visual Studio 2019 的版本号标识。具体来说: Visual Studio 是微软提供的一款集成开发环境(IDE),用于开发各种应用程序,如桌面软件、Web 应用、移动应用等,支持多种编…...
计算机考研C语言
C语言程序设计从入门到精通【2025完整版】考研复试 嵌入式 计算机二级 软考 专升本也适用_哔哩哔哩_bilibili 1、第一个C程序 helloC #include <stdio.h>int main(){printf("hehe");return 0;}每个C语言程序不管有多少行代码,都是从main函数开始执…...
STM32 内置的通讯协议
数据是以帧为单位发的 USART和UART的区别就是有没有同步功能 同步是两端设备有时钟连接,异步是没时钟连接,靠约定号的频率(波特率)接收发送数据 RTS和CTS是用来给外界发送已“可接收”或“可发送”信号的,一般用不到…...
QT:串口上位机
创建工程 布局UI界面 设置名称 设置数据 设置波特率 波特率默认9600 设置数据位 数据位默认8 设置停止位 设置校验位 调整串口设置、接收设置、发送设置为Group Box 修改配置 QT core gui serialport 代码详解 mianwindow.h 首先在mianwindow.h当中定义一个串口指…...
f QT测试
# 添加 Qt Test 模块,用于支持单元测试功能 QT testlib# 添加 Qt 的核心模块和 GUI 模块,这是构建 Qt 应用程序的基础模块 QT core gui# 如果 Qt 的主版本号大于 4,则添加 widgets 模块。 # 这是因为 Qt Widgets 模块是从 Qt 5 开始引…...
vue3在ts中动态添加DOM(1、使用render函数,2、使用tsx)
1、使用render函数和h函数 h函数创建虚拟节点(VNode),render函数实现虚拟节点生成真实DOM元素 实现添加一个el-button按钮 <script setup lang"ts"> import { ElButton } from "element-plus"; //需要在页面中引…...
C++基础(VScode环境安装)
MinGW Distro - nuwen.net 安装完成之后我们打开刚刚的安装路径,找到并打开MinGW -> bin,进入bin文件夹之后点一下这里,右键复制路径 之后我们进入设置,搜索“环境变量”,选择“编辑系统环境变量” 按WinR,输入cmd࿰…...
MySQL:SQL优化实际案例解析(持续更新)
文章目录 一、MySQL:SQL优化1、时间格式化问题(字符串)2、in/inner join的问题 一、MySQL:SQL优化 1、时间格式化问题(字符串) -- 优化前 SELECT * FROM test_table WHERE date_format( begin_time, %Y-%…...
代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus适用场景和工作方式
在 Swift 开发中,在 Swift 开发中,代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus 主要用于 组件之间的通信,但它们的适用场景和工作方式有…...
力扣第585题
with t as (select *, count(tiv_2015) over(partition by tiv_2015) cnt1 , count(*) over(partition by lat,lon) cnt2 from insurance) select round(sum(tiv_2016),2) tiv_2016 from t where cnt1>1 and cnt21; 以上代码的思路: ①明确查询需求:…...
C++学习——顺序表(四)
文章目录 前言一、最大连续1的个数二、差的绝对值为K的数对数目三、数组中两元素的最大乘积四、数组元素和与数字和的绝对值的差五、K个元素的最大和六、等差三元组的数目七、移除元素 前言 本文为《C学习》的第14篇文章,今天通过Leetcode的几道题来熟悉顺序表的大…...
java虚拟机(JVM)以及各种参数详解
Java 虚拟机(JVM)提供了许多参数来调整其行为和性能,以便更好地适应不同的应用场景。理解和使用这些参数对于优化 Java 应用程序的性能非常重要。以下是一些常用的 JVM 参数及其详细说明: 1. 内存管理参数 -Xms<size>&…...
Android电量与流量优化
Android电量与流量优化 一、电量优化基础 1.1 电量消耗原理 Android设备的电量消耗主要来源于以下几个方面: 屏幕显示:屏幕是耗电量最大的硬件之一,尤其是高亮度和高刷新率的屏幕。CPU处理:CPU执行计算任务时会消耗大量电量,尤其是高负载运算。网络通信:移动数据、Wi-…...
机器人运动学与动力学
在当今科技飞速发展的时代,机器人已逐渐渗透到我们生活的方方面面,从工业生产线上的高效作业,到医疗领域的精准辅助,再到家庭服务的贴心陪伴,机器人技术的广泛应用正深刻改变着我们的生活和工作方式。而在机器人技术的…...
【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
1、HTML排版标签 标签名 标签含义 单/双标签 h1~h6 …...
Linux的TTY子系统(TTY框架)的重要结构体termios的`c_iflag`字段的BRKINT选项和IGNBRK选项的含义【详解串口的BREAK信号】
引言 要搞清楚结构体termios的c_iflag字段的BRKINT选项和IGNBRK选项的含义,首先要搞清楚BREAK信号的含义。其实当你搞清楚BREAK信号后,结构体termios的c_iflag字段的BRKINT选项和IGNBRK选项的含义你也就自然知道了。 1. 什么是 BREAK 信号?…...
YashanDB认证,YCA证书认证教程,免费证书,内含真题考试题库及答案——五分钟速成
目录 一.账号及平台注册登录流程 二.登录进行设备调试核验 三.考试(考完获取分数) 四.获取证书 五.题库及答案 一.账号及平台注册登录流程 1-点击这里进行账号注册(首次学习必须先注册,有账号之后可以直接在2号链接登录&#…...
网络爬虫-1:发送请求+维持会话+代理设置/超时设置
1.基于get发送请求 2.基于post发送请求 3.维持会话 4.代理设置/超时设置 一.基于get发送请求 1.获取网页源码1 使用json库中的json.loads(),将json格式的字符串变为Python的字典形式 以下通过http://httpbin.org/get网址进行基本练习操作 import requests import json urlh…...
VSCode 配置优化指南:打造极致高效的前端开发环境
VSCode 配置优化指南:打造极致高效的前端开发环境 一、基础环境配置:让开发更流畅 1. 性能优化设置 // settings.json {"files.autoSave": "afterDelay", // 自动保存(延迟1秒)"files.exclud…...
【实战-解决方案】Webpack 打包后很多js方法报错:not defined
问题分析 在不打包的情况下,方法(如 checkLoginStatus、filterSites、initProgressBar 等)可以正常运行,而经过 Webpack 打包后报 is not defined 错误,通常有以下几个可能的原因: 全局变量丢失 在 Webpac…...
第16届计算智能与软件工程国际研讨会(CISE 2026)
第16届计算智能与软件工程国际研讨会(CISE 2026) The 16th Intl Conference on Computational Intelligence and Software Engineering(CISE 2026) 时间:2026年1月9-11日 地点:中国 三亚 邮箱投稿:editor1academicx.org 检索࿱…...
laravel中 添加公共/通用 方法/函数
一,现在app 下面创建Common目录,然后在创建Common.php 文件 二,修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…...
Android 自定义View之底部导航栏
文章目录 Android 自定义View之底部导航栏概述代码定义TabIndex定义Tab定义TabView定义NavigationBarFragmentSwitchHelper管理类使用 源码下载 Android 自定义View之底部导航栏 概述 封装一个通用的底部导航栏控件。 代码 定义TabIndex Retention(AnnotationRetention.SOU…...
[Kubernetes] 7控制平面组件
1. 调度 kube- scheduler what 负责分配调度pod到集群节点监听kube-apiserver,查询未分配node的pod根据调度策略分配这些pod(更新pod的nodename)需要考虑的因素: 公平调度,资源有效利用,QoS,affinity, an…...
定时器Tim输出比较(output compare)
输出比较OC(Output Compare) 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道,高级定时器的前3个通道额外拥有死区生…...
Linux Shell 脚本编程极简入门指南
一、学习前提准备 ✅ 环境要求: Linux系统(Ubuntu/CentOS等)或 WSL (Windows用户) 任意文本编辑器(推荐VSCode/Vim) 基础命令行操作能力 🔍 验证环境: # 查看系统默认Shell echo $SHELL #…...
C++:二分习题
1. 借教室 503. 借教室 - AcWing题库 在大学期间,经常需要租借教室。 大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。 教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海…...
【AIGC】计算机视觉-YOLO系列家族
YOLO系列家族 (1)YOLO发展史(2) YOLOX(3) YOLOv6(4) YOLOv7(5) YOLOv8(6) YOLOv9(7)YOLOv10(8&…...
浅谈SSE爬虫
什么是SSE SSE(Server-Sent Events,服务器推送事件)是一种用于在Web应用程序中实现单向实时数据传输的技术。它允许服务器通过HTTP连接向客户端(通常是浏览器)推送更新的数据,而无需客户端主动请求。 目前主流的大模型 就是采用的 SSE,想deepseek、chatgpt、通以千问。…...
Goland如何玩依赖注入——基于gone@v2创建一个service
经过多天的工作,终于把gone2的beta版本发布出去了。在v2版本中,做了很多更新,最大的改进是将一些不必要的概念给隐藏起来了,提供了Provider机制…… 文章目录 1. 安装**gonectr**2.创建项目2.1 项目结构 2.2 简单说明3. 启动项目…...
rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64
在我在Linux中安装离线CAN工具时,出现了一个问题, rootwanghuo:~# rpm -ivh can-uilts-v2019.00.0-alt1.aarch64.rpm error: Failed dependencies:rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64 意思是尝试安装 can-uilts-v20…...
处理Java中的异常
处理Java中的异常 在 Java 中,异常处理是通过 try-catch-finally 语句来实现的。Java 提供了一种强大的机制,用于捕捉和处理程序运行中的各种错误和异常。通过这种方式,你可以有效地捕捉到可能导致程序崩溃的错误,并做出相应的处…...
mac 苍穹外卖 前端环境配置
博主的 mac 是 m2。 结合以下两篇,成功配置前端环境。 macOS 配置苍穹外卖前端环境_macbook怎么nginx下载外卖-CSDN博客 苍穹外卖-Mac配置前端开发环境_sudo 启动 nginx 有什么区别-CSDN博客 一、安装nginx 我使用的是 homebrew,homebrew 的安装请自…...
前端系统测试(单元、集成、数据|性能|回归)
有关前端测试的面试题 系统测试 首先,功能测试部分。根据资料,单元测试是验证最小可测试单元的正确性,比如函数或组件。都提到了单元测试的重要性,强调其在开发早期发现问题,并通过自动化提高效率。需要整合我搜索到的资料中的观点,比如单元测试的方法(接口测试、路径覆…...
Python:函数式编程
函数式编程(Functional Programming, FP)是一种编程范式,强调通过纯函数、不可变数据和声明式风格来构建程序。Python 虽然不是纯函数式语言,但提供了丰富的函数式编程工具。(简单来说是,函数约等于模块功能࿰…...
Spring Boot中@Valid 与 @Validated 注解的详解
Spring Boot中Valid 与 Validated 注解的详解 引言 在Spring Boot应用中,参数校验是确保数据完整性和一致性的重要手段。Valid和Validated注解是Spring Boot中用于参数校验的两个核心注解。本文将详细介绍这两个注解的用法、区别以及代码样例。 Valid注解 功能介…...
[动手学习深度学习]12.权重衰退
1.介绍 权重衰退是常见的处理过拟合的方法 控制模型容量方法 把模型控制的比较小,即里面参数比较少使参数选择范围小 约束就是正则项 每个特征的权重都大会导致模型复杂,从而导致过拟合。 控制权重矩阵范数可以使得减少一些特征的权重,甚至…...
JVM内存结构笔记04-字符串常量池
文章目录 定义字符串常量池的位置JDK 1.7 为什么要将字符串常量池移动到堆中? StringTable案例1案例2案例3 String.intern()案例4案例5案例6总结 StringTable 垃圾回收案例1.创建100个字符串(不会触发垃圾回收)2.创建10000个字符串(触发垃圾回收) StringTable 性能调…...
STM32 HAL库实战:高效整合DMA与ADC开发指南
STM32 HAL库实战:高效整合DMA与ADC开发指南 一、DMA与ADC基础介绍 1. DMA:解放CPU的“数据搬运工” DMA(Direct Memory Access) 是STM32中用于在外设与内存之间直接传输数据的硬件模块。其核心优势在于无需CPU干预,…...
c语言闯算法--常用技巧
双指针 类别: 同向快慢指针 异常情况,慢指针才动 双向指针 视情况,左右指针动 最长无重复子串 int max(int a, int b){if(a < b){return b;}else{return a;} } int lengthOfLongestSubstring(char* s) {int count[300];for(int i 0; i …...