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

简单网络管理协议(SNMP)入门

目录

概述

SMI(对象命名、数据类型、编码方法)

对象命名

数据类型

编码方法

MIB(版本、分组、对象定义、变量访问)

版本

分组

对象定义

变量访问

SNMP 实现机制与报文分析

协议操作

报文格式

实现机制

验证分析

SNMPv3


概述

简单网络管理协议(SNMP)是一种用于监控和管理网络设备的互联网标准协议。它提供了一种在网络设备之间交换管理信息的方式,使网络管理员能够远程监控和控制网络设备。 SNMP 通常用于管理路由器、交换机、服务器和其他网络设备。

SNMP 定义了一组标准的管理信息,称为管理信息库(MIB),这些信息描述了一个网络设备的各种参数和性能指标。通过使用 SNMP,网络管理软件可以从设备中检索这些信息,并根据需要对其进行修改。

SNMP 协议由三个主要部分组成:

  1. 管理站(Manager):也称为网络管理系统(NMS),是用于监控和管理网络设备的软件应用程序。管理站向代理发送请求,并接收来自代理的响应。

  2. 代理(Agent):驻留在被管理设备上的软件模块,负责收集和存储设备的管理信息,并响应来自管理站的请求。

  3. 管理信息库(MIB):一个由标准对象和变量组成的数据库,用于描述设备的管理信息。 MIB 提供了一种标准化的方式来表示和访问设备的参数和性能指标。

SMI(对象命名、数据类型、编码方法)

SNMP 结构化管理信息(SMI)定义了用于定义 MIB 对象的语法和编码规则。它包括对象命名、数据类型和编码方法。

对象命名

在SMI(Structure of Management Information)中,使用分层命名结构来唯一标识MIB(Management Information Base)对象。每个对象都有一个对象标识符(OID),它由一系列的数字组成,表示对象在MIB中的位置。OID的层次结构类似于域名系统(DNS),其中每个数字表示层次结构中的一个节点。

完善的对象命名应该遵循以下原则:

  1. 唯一性: 每个OID应该是唯一的,以确保在MIB中不会存在冲突或混淆。

  2. 层次结构: OID应该按照层次结构进行命名,类似于树状结构,使得可以清晰地表示对象在MIB中的位置关系。

  3. 可读性: OID应该具有一定的可读性,使得用户能够根据OID理解对象所在的上下文和含义。

  4. 稳定性: OID的命名应该尽可能地稳定,避免频繁更改,以确保系统和应用程序能够稳定地访问和使用MIB中的对象。

例如,一个OID可能是这样构成的:1.3.6.1.2.1.1.1,其中每个数字表示了一个层次结构中的节点,从根节点(1)开始,逐级表示子节点,直到最后一个节点(1)。

数据类型

结构化管理信息 (SMI) 确实定义了一组标准数据类型,用于表示管理信息库 (MIB) 对象的值。这些数据类型为 MIB 中的对象提供结构化和一致的表示形式,并确保不同供应商和设备之间的互操作性。以下是 SMI 定义的一些常见数据类型:

  1. Integer32:表示有符号的 32 位整数。它可以表示从 -2^31 到 2^31-1 的值(包括两者)。

  2. OctetString:表示任意长度的八位字节字符串。它可以包含二进制数据、文本或任何其他格式的数据。

  3. ObjectIdentifier:表示对象标识符 (OID),它是一个分层标识符,用于唯一地标识 MIB 中的对象。 OID 由一系列整数组成,表示对象在 MIB 中的位置。

  4. IPAddress:表示 IPv4 地址。它由四个八位字节组成,每个八位字节的范围为 0 到 255。

  5. Counter32:表示一个 32 位无符号整数,用于计数器或单调递增的值。它通常用于跟踪事件或活动的数量,例如传输的数据包数量。

  6. Gauge32:表示一个 32 位无符号整数,表示单调递增或递减的值,但可以循环。它通常用于表示当前值,例如当前连接数。

  7. TimeTicks:表示自 1970 年 1 月 1 日午夜 (UTC) 以来经过的时间的 32 位无符号整数。它通常用于测量时间间隔或持续时间。

  8. Opaque:表示任意数据类型的任意长度值。它可以包含任何格式的数据,包括二进制数据或文本。

  9. DisplayString:表示用于显示目的的 ASCII 字符串。它旨在包含人类可读的文本,并且可能包含限制或转义字符。

  10. NetworkAddress:表示网络地址。它可以是一个 IPv4 地址、MAC 地址或其他网络协议地址。

这些只是 SMI 定义的一些常见数据类型。每个数据类型都有特定的规则和限制,以确保数据的正确编码和解码。通过使用这些标准数据类型,管理员和网络设备可以有效地交换和解释 MIB 对象中的信息。

编码方法

基本编码规则 (Basic Encoding Rules, BER) 是一种用于表示ASN.1定义数据结构的二进制编码规则。BER允许用于表示各种数据类型的机器之间以独立于硬件和软件的方式进行数据交换。

在BER中,每一个数据元素被编码为一个由标识符、长度以及值组成的元组(也被称为类型-长度-值,或TLV):

  1. 类型:描述了数据元素的ASN.1类型。
  2. 长度:描述了值字段的长度。
  3. :包含了实际的数据元素。

整体看来,基本编码规则(BER)提供了一个灵活、强大的机制,用于描述复杂和多样化的数据结构,并使这些结构能够用于在各种机器间进行有效的通讯。尤其是在网络管理领域,BER编码被广泛应用于SNMP(简单网络管理协议),使设备能够在网络上共享关键的管理和性能信息。

MIB(版本、分组、对象定义、变量访问)

管理信息库(MIB)包含一组定义良好的对象,这些对象描述了一个网络设备的管理信息。

版本

MIB(Management Information Base)有多个版本,其中最常见的版本包括SNMPv1、SNMPv2和SNMPv3。每个版本都有自己的MIB模块,其中包含特定于该版本的对象定义和管理信息。

  1. SNMPv1: SNMPv1是最早的SNMP版本之一,它定义了最基本的网络管理功能,包括GET、GETNEXT和SET等操作。SNMPv1的MIB模块包含了一组基本的管理对象,例如系统描述、接口状态、错误统计等。

  2. SNMPv2: SNMPv2是SNMPv1的改进版本,在SNMPv2c(SNMP Community-Based SNMPv2)中引入了一些改进和扩展,如GETBULK等操作。SNMPv2的MIB模块增加了一些新的对象和功能,如更详细的接口描述、更丰富的错误统计等。

  3. SNMPv3: SNMPv3是最新的SNMP版本,它引入了更强大的安全性和认证机制,包括用户认证、数据加密等功能。SNMPv3的MIB模块除了包含SNMPv1和SNMPv2的对象定义外,还增加了一些与安全相关的对象,如用户认证信息、安全策略等。

分组

管理信息库 (MIB) 确实被组织成一组相关的对象,称为分组。这些分组提供了一种分层和有组织的结构,用于管理和访问 MIB 中的对象。每个分组都专注于特定的功能区域或技术领域。以下是 MIB 中一些常见的分组:

  1. 系统分组:系统分组包含与设备本身相关的对象,例如设备名称、硬件版本、软件版本、设备 uptime、联系信息等。它提供有关设备的基本信息。

  2. 接口分组:接口分组包含与设备的网络接口相关的对象。它包括接口状态、接口类型、接口速度、传输和接收的字节数、错误统计信息等。网络管理员可以使用此分组监视和管理设备的网络连接。

  3. IP 分组:IP 分组包含与 IPv4 和 IPv6 相关的对象。它包括 IP 地址、子网掩码、默认网关、路由表、ICMP 统计信息等。此分组对于管理和监视 IP 网络至关重要。

  4. TCP 分组:TCP 分组包含与传输控制协议 (TCP) 相关的对象。它包括 TCP 连接状态、TCP 端口使用情况、重传、连接计时器、TCP 统计信息等。网络管理员可以使用此分组监视和优化 TCP 连接。

  5. UDP 分组:UDP 分组包含与用户数据报协议 (UDP) 相关的对象。它包括 UDP 端口使用情况、UDP 统计信息等。此分组对于管理使用 UDP 的应用程序(例如 DNS 或 DHCP)很有用。

  6. 路由分组:路由分组包含与设备的路由表和路由协议相关的对象。它包括路由表条目、路由协议状态、路由度量、路由更新等。网络管理员可以使用此分组管理和监视网络中的路由。

  7. 桥接分组:桥接分组包含与网络桥接相关的对象。它包括桥接表、生成树协议状态、MAC 地址表、桥接统计信息等。此分组对于管理以太网网络中的桥接设备很有用。

  8. 安全分组:安全分组包含与设备的安全功能相关的对象。它可能包括身份验证、授权、加密、防火墙规则、入侵检测系统 (IDS) 统计信息等。此分组对于管理和监视网络安全至关重要。

  9. 物理分组:物理分组包含与设备的物理组件相关的对象。它可能包括温度传感器读数、风扇速度、电源状态、电压、电流等。此分组有助于监控设备的物理健康状况并进行环境监控。

  10. 通知分组:通知分组包含与 SNMP 通知相关的对象。它定义了设备可以发送的通知类型,例如陷阱消息。网络管理员可以使用此分组配置和接收设备发出的警报和事件。

对象定义

MIB 对象定义了网络设备的各种参数和性能指标。每个对象都有一个名称、OID、数据类型、访问控制和描述。名称用于标识对象,OID 唯一标识对象,数据类型指定对象的值类型,访问控制指定对象的读写权限,描述提供了对象的详细说明。

MIB对象包含以下元素:

  1. 名称:每个MIB对象都有一个唯一的名称用来描述该对象,如ifInOctets,表示网络接口最近进入的八进制。

  2. 对象标识符(OID):整个MIB被组织为一个树形结构,每个对象都被分配一个唯一的OID来在树中表示其位置。这些OID以一串数字表示,如1.3.6.1.2.1.2.2.1.10,每一个数字都代表树中的一个级别。

  3. 数据类型:描述MIB对象可能拥有的值的类型。比如,数据类型可能是整数、字符串或者一组特定的预定义值。

  4. 访问控制:确定哪些类型的操作可以应用到对象上。常见的操作包括读(获取一个对象的值)和写(改变一个对象的值)。

  5. 描述:各个MIB对象都应包含一段描述性文字,以解释该对象的作用和使用方式。

MIB对象的集合构成了一个设备或者网络的完整的管理视图。通过查询和更新这些对象,网络管理员可以了解网络设备的状态,进行故障排除,以及优化网络性能。由于MIB基于标准化的SNMP协议,所以它可以支持各种不同厂商和不同类型的设备的网络管理工作,并且使得网络管理工具可以提供一个统一的管理界面,用来管理整个网络。

变量访问

MIB对象可以通过SNMP(Simple Network Management Protocol)协议进行访问和修改。管理站可以通过发送SNMP请求来检索或修改对象的值。SNMP定义了一组标准的协议操作,用于访问和修改MIB对象,主要包括以下几种:

  1. GET(获取): 管理站发送GET请求到代理设备,以获取指定MIB对象的当前值。代理设备在收到请求后,返回该对象的值给管理站。

  2. GETNEXT(获取下一个): 管理站发送GETNEXT请求到代理设备,以获取指定MIB对象的下一个对象的值。代理设备在收到请求后,返回比指定对象OID稍大的对象的值给管理站。

  3. SET(设置): 管理站发送SET请求到代理设备,以设置指定MIB对象的值。代理设备在收到请求后,根据管理站提供的新值来修改相应对象的值,并返回确认信息给管理站。

除了这些基本的操作外,SNMP还定义了其他一些操作,如GETBULK(批量获取)、GETRESPONSE(获取响应)等,以及一些附加的安全机制,如认证和加密,以保护通信的安全性。

SNMP 实现机制与报文分析

协议操作

SNMP 定义了四种基本的协议操作:

  1. GetRequest:

    • 目的:GetRequest 操作用于从 SNMP 代理检索一个或多个特定对象的值。
    • 语法:GetRequest 消息包含一个或多个对象标识符 (OID),表示要检索的对象。
    • 响应:SNMP 代理接收 GetRequest 后,将返回一个 GetResponse 消息,其中包含请求的对象的当前值。
  2. GetNextRequest:

    • 目的:GetNextRequest 操作用于检索下一个顺序对象的值,该对象遵循请求中指定的 OID。它用于迭代或遍历 MIB 树中的对象。
    • 语法:GetNextRequest 消息包含一个 OID,从该 OID 开始搜索下一个对象。
    • 响应:SNMP 代理响应 GetNextRequest 消息,返回一个 GetResponse 消息,其中包含紧随请求 OID 之后的下一个对象的值。
  3. SetRequest:

    • 目的:SetRequest 操作用于在 SNMP 代理中设置或修改一个或多个对象的值。
    • 语法:SetRequest 消息包含一个或多个 OID-值对,表示要设置的对象及其相应的值。
    • 响应:SNMP 代理接收 SetRequest 后,将返回一个 GetResponse 消息,确认设置操作的结果。响应可能包括错误状态,以指示设置操作是否成功。
  4. GetResponse:

    • 目的:GetResponse 操作是 SNMP 代理对 GetRequest、GetNextRequest 或 SetRequest 的响应。
    • 语法:GetResponse 消息包含一个或多个 OID-值对,表示请求的对象及其当前值。
    • 响应:GetResponse 消息是对 GetRequest 或 SetRequest 的直接响应。对于 GetNextRequest,响应可能包含多个 GetResponse 消息,每个消息包含一个 OID-值对。

这些基本的 SNMP 操作使 SNMP 管理器能够监视和管理 SNMP 代理中的对象。管理员可以检索对象的值以获取设备状态或统计信息,也可以设置对象的值以配置设备的行为。

此外,SNMP 还支持其他高级操作,例如 GetBulkRequest,它允许检索一组相关对象的值,以及通知,SNMP 代理可以通过通知向 SNMP 管理器发送异步事件或警报。

报文格式

SNMP报文由两部分组成:报文头和报文体(也被称为PDU,协议数据单元)

  1. 报文头:报文头包含以下主要部分:

    • 版本号:标识SNMP的版本,如1, 2c, 3等。
    • 社区字符串:提供一种简单的安全机制,在SNMPv1和SNMPv2c中使用。其实就像一个密码,只有知道社区字符串的设备才会响应SNMP消息。
  2. **报文体 (PDU)**:PDU包含了执行SNMP操作需要的数据,主要包含以下部分:

    • 请求ID:唯一标识一个SNMP请求,可以用来将请求和响应匹配起来。
    • 错误状态和索引:用于SNMP响应,标识请求处理过程中的错误信息。
    • 变量绑定:又称varbind列表,它是一个或多个字段的序列,每个字段包含一个MIB对象的OID和相应的值。

SNMP PDU的具体类型和结构取决于其操作类型,例如Get、Get-Next、Set或Trap等。

实现机制

SNMP协议可以通过UDP(User Datagram Protocol)或TCP(Transmission Control Protocol)传输协议来实现。管理站和代理之间使用客户端-服务器模式进行通信。具体实现机制如下:

  1. UDP实现: 在UDP实现中,SNMP消息被封装在UDP数据包中进行传输。UDP是一种无连接的传输协议,它提供了简单的数据传输服务,适用于快速而简单的通信场景。SNMP使用UDP作为其默认的传输层协议,这是因为UDP的轻量级和低开销特性,使其在网络管理中具有较高的效率。

  2. TCP实现: 尽管SNMP的常规实现使用UDP,但在一些特殊情况下,也可以使用TCP来传输SNMP消息。TCP是一种可靠的、面向连接的传输协议,它提供了数据的可靠传输和流控制功能。使用TCP作为传输协议可以提供更可靠的通信,适用于对数据传输的完整性要求较高的情况。

在SNMP通信中,管理站作为客户端发送请求,代理作为服务器接收请求并响应。管理站通过构建SNMP消息,将请求发送到代理的SNMP引擎,代理接收到请求后进行处理,并根据请求类型执行相应的操作,然后将响应消息返回给管理站。

验证分析

简单网络管理协议 (SNMP) 确实提供了一种验证机制,称为社区字符串,用于确保管理站和代理之间的通信的安全性。以下是 SNMP 中社区字符串验证的更多细节:

  1. 社区字符串:

    • 社区字符串是 SNMP 协议中的一个文本字符串,充当密码,用于验证管理站和代理之间的通信。
    • 在 SNMPv1 和 SNMPv2 中,社区字符串是明文传输的,这意味着它们以纯文本形式发送,没有加密或保护。
  2. SNMPv1 和 SNMPv2 中的社区字符串:

    • 在 SNMPv1 和 SNMPv2 中,有两个常见的社区字符串:“公共”和“私有”。
    • “公共”社区字符串用于未经身份验证的访问,通常用于读取对象。任何知道社区字符串的人都可以检索 SNMP 代理中的对象信息。
    • “私有”社区字符串用于受保护的访问,通常用于写入对象或执行敏感操作。它旨在提供某种程度的保护,但仍然容易受到攻击,因为社区字符串是明文传输的。
  3. SNMPv3 中的增强安全性:

    • SNMPv3 引入了增强的安全功能,以解决 SNMPv1 和 SNMPv2 中社区字符串的局限性。
    • SNMPv3 使用用户身份验证、消息完整性检查和加密来确保通信的安全性。它支持多种安全模型,包括基于用户名/密码的身份验证以及基于密钥的身份验证。
    • 在 SNMPv3 中,社区字符串的概念被用户名和安全密钥所取代。用户名用于身份验证,而安全密钥用于加密和完整性保护。
  4. SNMPv3 安全功能:

    • 身份验证:SNMPv3 支持多种身份验证机制,包括 MD5 和 SHA 散列算法,以确保通信双方的身份。
    • 完整性检查:SNMPv3 使用消息完整性检查来检测消息在传输过程中是否被篡改。
    • 加密:SNMPv3 支持数据加密,以保护敏感信息。它可以使用各种加密算法,例如 AES(高级加密标准)或 3DES(三重数据加密标准)。
    • 安全性级别:SNMPv3 定义了三个安全级别:无身份验证、无完整性保护和无加密;身份验证和完整性保护;以及身份验证、完整性保护和加密。
  5. 实施最佳实践:

    • 对于需要更高安全性的敏感应用程序,建议使用 SNMPv3。它提供更好的保护,防止未经授权的访问和数据篡改。
    • 定期更改社区字符串(对于 SNMPv1 和 SNMPv2)或 SNMPv3 凭据,以防止未经授权的访问。
    • 限制对 SNMP 服务的访问,仅允许受信任的管理站访问 SNMP 代理。
    • 实施访问控制列表 (ACL) 或防火墙规则,以进一步限制对 SNMP 端口(通常为 UDP 端口 161)的访问。

SNMPv3

SNMPv3是SNMP的最新版本,并且特别注重安全性和远程配置的改进。其主要特性包括:

  1. 安全性:SNMPv3使用了安全用户安全模型(USM)来提供认证和加密。认证可以保证一个消息确实来自声称的发送者,加密则可以保证报文的内容不被读取和篡改。SNMPv3支持两种认证方式:HMAC-MD5-96和HMAC-SHA-96,还支持一种加密方式:CBC-DES。

  2. 远程配置:SNMPv3中的代理设备具有管理信息库(MIB)结构,允许网络管理员在远程就可以执行配置以及管理工作。管理员可以在远程查看消息统计、设备权限等信息。

  3. 可访问性:SNMPv3的另一个重要特性是提供了对IPv6的原生支持,这是在当前IPv4地址逐渐用尽的情况下非常重要的一个步骤。

总的来说,SNMPv3提供了一个更安全、更强大的工具用于监控和管理网络设备。对于网络管理员来说,理解和掌握SNMPv3对于确保网络操作的高效和安全至关重要。

相关文章:

简单网络管理协议(SNMP)入门

目录 概述 SMI(对象命名、数据类型、编码方法) 对象命名 数据类型 编码方法 MIB(版本、分组、对象定义、变量访问) 版本 分组 对象定义 变量访问 SNMP 实现机制与报文分析 协议操作 报文格式 实现机制 验证分析 SN…...

leetcode解题思路分析(一百五十七)1366 - 1372 题

通过投票对团队排名 现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。 排名规则如下: 参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在…...

药物代谢动力学学习笔记

一、基本概念 二、经典房室模型 三、非线性药物代谢动力学 四、非房室模型 五、药代动力学与药效动力学 六、生物等效性评价 七、生物样品分析方法 基本概念 生物样品:生物机体的全血、血浆、血清、粪便、尿液或其他组织的样品 特异性,specificity&…...

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作(保姆级教学) 以下是git的工作原理,觉得繁琐的可以跳过不看 Workspace:工作区 (平时存放代码的地方) Index / Stage:暂存区(用于临时存放存放你的改动,事实上就是一个文件&…...

保研面试408复习 3——操作系统

文章目录 1、操作系统一、进程有哪几种状态,状态之间的转换、二、调度策略a.处理机调度分为三级:b.调度算法 标记文字记忆,加粗文字注意,普通文字理解。 为什么越写越少? 问就是在打瓦。(bushi) 1、操作系统 一、进程…...

【代码随想录37期】Day02 有序数组的平方、长度最小的子数组、螺旋矩阵Ⅱ(施工中)

有序数组的平方 977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; v1.0:直接暴力 4分半做出来&#xff0c;用sort api class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> result;for(int i 0; i<…...

通俗的理解网关的概念的用途(三):你的数据包是如何到达下一层的

其实&#xff0c;这一章我写不好&#xff0c;因为这其中会涉及到一些计算和一些广播等概念&#xff0c;本人不善于此项。在此略述&#xff0c;可以参考。 每台设备的不同连接在获得有效的IP地址后&#xff0c;会根据IP地址的规则和掩码的规则&#xff0c;在操作系统和交换机&a…...

基于Springboot的校运会管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校运会管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…...

USP技术提升大语言模型的零样本学习能力

大语言模型&#xff08;LLMs&#xff09;在零样本和少样本学习能力上取得了显著进展&#xff0c;这通常通过上下文学习&#xff08;in-context learning, ICL&#xff09;和提示&#xff08;prompting&#xff09;来实现。然而&#xff0c;零样本性能通常较弱&#xff0c;因为缺…...

前端安全防护实战:XSS、CSRF防御与同源策略详解(react 案例)

前端安全防护实战中&#xff0c;主要涉及三个方面&#xff1a;XSS (Cross-Site Scripting) 攻击的防御、CSRF (Cross-Site Request Forgery) 攻击的防御&#xff0c;以及浏览器的同源策略。以下是这三个方面的详细说明&#xff1a; XSS 防御详解 XSS 概述 XSS攻击是一种让攻…...

2024C题生物质和煤共热解问题的研究 详细思路

背景 随着全球能源需求的不断增长和对可再生能源的追求&#xff0c;生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源&#xff0c;源自植物和动物的有机物质&#xff0c;而煤则是一种化石燃料。** 在共热解过程中&#xff0c;生物质和煤在高温和缺氧…...

智慧旅游引领未来风尚,科技助力旅行更精彩:科技的力量推动旅游业创新发展,为旅行者带来更加便捷、高效和智能的旅行服务

目录 一、引言 二、智慧旅游的概念与特点 &#xff08;一&#xff09;智慧旅游的概念 &#xff08;二&#xff09;智慧旅游的特点 三、科技推动旅游业创新发展 &#xff08;一&#xff09;大数据技术的应用 &#xff08;二&#xff09;人工智能技术的应用 &#xff08;…...

十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理&#xff0c;我们需要重点去掌握的是Tomcat的高内聚低耦合的设计&#xff0c;以及责任链模式&#xff0c;以及Tomcat NIO编程模式&#xff0c;这些是Tomcat比较核心的点&#xff0c;本篇文章我们将对Tomcat的参数做一…...

JVM调优—减少FullGC

背景 最近负责了一个审批流程新项目&#xff0c;带领了几个小伙伴&#xff0c;哼哧哼哧的干了3个月左右&#xff0c;终于在三月底完美上线了&#xff0c;好消息是线上客户用的很丝滑&#xff0c;除了几个非常规的业务提单之外&#xff0c;几乎没有什么大的问题&#xff0c;但是…...

力扣 256. 粉刷房子 LCR 091. 粉刷房子 python AC

动态规划 class Solution:def minCost(self, costs):row, col len(costs), 3dp [[0] * col for _ in range(row 1)]for i in range(1, row 1):for j in range(col):dp[i][j] costs[i - 1][j - 1]if j 0:dp[i][j] min(dp[i - 1][1], dp[i - 1][2])elif j 1:dp[i][j] m…...

C++STL细节,底层实现,面试题04

文章目录 19. STL19.1. 序列容器19.1.1. vector19.1.1.1. 底层实现和特点19.1.1.2. 常用函数19.1.1.3. emplace_back() vs push_back() 19.1.2. array19.1.2.1. 底层实现和特点19.1.2.2. 常用函数 19.1.3. deque19.1.3.1. 底层实现和特点19.1.3.2. 常用函数 19.1.4 list19.1.4.…...

Linux查看Oracle数据库的环境变量

Linux查看Oracle数据库的环境变量 在Linux上查看Oracle数据库的环境变量&#xff0c;通常涉及检查当前shell会话中已设置的环境变量。这些环境变量可能包括ORACLE_HOME、ORACLE_SID、PATH&#xff08;可能包含Oracle二进制文件的路径&#xff09;等。 以下是几种方法来查看这…...

pg数据库学习知识要点分析-1

知识要点1 对象标识OID 在PostgreSQL内部&#xff0c;所有的数据库对象都通过相应的对象标识符&#xff08;object identifier&#xff0c;oid&#xff09;进行管理&#xff0c;这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中&#xf…...

【Web】CTFSHOW 七夕杯 题解

目录 web签到 easy_calc easy_cmd web签到 CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了 也可以打临时文件RCE import requestsurl "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.c…...

react native 设置屏幕锁定

原生配置 android 在android/app/src/main/AndroidManifest.xml在这个文件里的入口activity里添加 android:screenOrientation"portrait" <activityandroid:name".MainActivity"android:label"string/app_name" …...

探索 IPv6 协议:互联网的新一代寻址

目录 一.概述 IPv4 的问题和 IPv6 的新特性 IPv6 协议体系 二.IPv6 寻址架构&#xff1a;巨大的地址空间与灵活的寻址模式 IPv6 寻址概述 地址表示方法 地址前缀与地址类型标识 单播地址 任播地址 多播地址 特殊的 IPv6 地址 IPv6 主机与路由器寻址 地址分配 三.I…...

Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。

背景&#xff1a;电脑资源管理器崩溃卡死&#xff0c;强行断电重启&#xff0c;结果虚拟机打不开了&#xff0c;提示打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。 删除lck文件&#xff1a;失败vmware-vdiskmanager修复 &#xff1a;提示无法修复最终用 VMFS Recovery挂载…...

202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山

202466读书笔记|《一天一首古诗词》——借问梅花何处落&#xff0c;风吹一夜满关山 上册下册 《一天一首古诗词》作者李锡琴&#xff0c;蛮早前加入书架的已购买书籍&#xff0c;这次刚好有点时间&#xff0c;利用起来读完。 赏析没有细看&#xff0c;只读了诗词部分&#xff0…...

如何调用本地ollama的http请求接口

http://127.0.0.1:11434/api/generate 使用http post请求&#xff0c;参数 { "model": "qwen", "prompt": "为什么天空是蓝色?", "stream": false } 返回结果如下&#xff1a; {"model": "qwen",…...

【C】190 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中&#xff0c;没有无符号整数类型。在这种情况下&#xff0c;输入和输出都将被指定为有符号整数类型&#xff0c;并且不应影响您的实现&#xff0c;因…...

蓝桥杯备战5.图书管理员

[NOIP2017]图书管理员 (nowcoder.com) #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e510,M1e310; int a[N]; int n,q; int check(int l,int x) {int tmppow(10,l);for(int i1;i<n;i){if(a[i]%tmpx){cout<&…...

微型显示器可以实时监测大脑活动

美国团队开发基于LED的设备&#xff0c;以可视化大脑活动&#xff0c;在脑外科手术中指导神经外科医生 来自加州大学圣地亚哥分校和马萨诸塞州总医院的工程师和医生开发了一种薄膜显示设备&#xff0c;该设备结合了电极网格和特殊的GaN LED&#xff0c;可以在手术过程中实时跟…...

移动端适配方案

移动端适配 方案 1&#xff1a;rem html font-size 方案 2&#xff1a;vw rem html font-size rem 是相对于 html 元素的 font-size 来设置的单位&#xff0c;通过在不同屏幕尺寸下动态修改 html 元素的 font-size 可达到适配效果 在开发中&#xff0c;我们只需要考虑两个…...

【Ajax零基础教程】-----第一课 Ajax简介

一、什么是ajax ajax即 Asynchronous javascript And XML (异步 javaScript 和 XML) 是一种创建交互式&#xff0c;快速动态应用的网页开发技术&#xff0c;无需重新加载整个网页的情况下&#xff0c;能够更新页面局部数据的技术。 二、为什么使用Ajax 通过在后台与服务器进行少…...

大型医疗挂号微服务“马上好医”医疗项目(5)Swagger的使用

Swagger的简单介绍 Swagger 是一个 RESTful 接口文档的规范和工具集&#xff0c;它的目标是统一 RESTful 接口文档的格式和规范。在开发过程中&#xff0c;接口文档是非常重要的一环&#xff0c;它不仅方便开发者查看和理解接口的功能和参数&#xff0c;还能帮助前后端开发协同…...