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

K8s上的监控系统(Grafana)使用和理解说明

Grafana (集成Prometheus On K8s集成)主要步骤说明

客户端指标收集 —— K8s 集群资源等 —— Prometheus 监控数据收集 —— Grafana —— 通过PromQL 进行数据查询 —— 预警告警等通知

  1. Kubernetes集群资源:这包括了CPU、内存、磁盘、网络等各种类型的资源。这些资源被用于运行容器化的应用程序和服务。
  2. Prometheus:Prometheus是一个开源的监控和警报工具,它可以收集、存储和分析时间序列数据。在Kubernetes集群中,Prometheus可以用于收集各种资源的监控数据。
  3. Grafana:Grafana是一个开源的数据可视化工具,它可以将Prometheus收集的数据以图表的形式展示出来。通过Grafana,我们可以更方便地查看和分析监控数据。
  4. PromQL(Prometheus Query Language):PromQL是一种用于查询Prometheus数据的语言。通过PromQL,我们可以更灵活地对监控数据进行查询和分析。
  5. 预警告警等通知:当监控数据达到预设的阈值时,可以通过多种方式发送预警或告警通知。

K8s的Service主要资源清单说明

  • grafana-exporter: Grafana Exporter是一个Prometheus的exporter,用于将Grafana的监控指标导出到Prometheus中,以便进行集中的监控和报警。

  • kube-state-metrics: kube-state-metrics是一个用于收集Kubernetes集群状态指标的服务。它将Kubernetes的API对象转化为Prometheus可用的指标。

  • metrics-server: Metrics Server是一个用于收集和聚合Kubernetes集群内部资源使用情况的组件。它提供了对CPU、内存等资源使用情况的实时监控和查询。

  • prometheus: Prometheus是一个开源的监控系统,用于收集、存储和查询时间序列数据。在Kubernetes中,Prometheus通常用于收集和监控Kubernetes集群的性能指标和应用程序指标。

  • prometheus-prometheus-node-exporter: Prometheus Node Exporter是一个用于监控主机的Prometheus的exporter。它采集和暴露与主机相关的指标,如CPU使用率、内存使用率、磁盘空间等。

Prometheus在K8s上集成说明

K8s 集群资源:

  • 在Kubernetes集群中,我们有多个节点(Node),每个节点都有一定的资源可用。这些资源包括CPU、内存、磁盘和网络等。在监控方面,我们需要了解每个节点的资源使用情况以及集群的整体资源状况。

Prometheus 监控数据收集:

  • Prometheus是一款开源的监控系统,可以收集和存储各种类型的监控数据。在Kubernetes中,我们可以使用Prometheus来收集节点的资源使用情况以及其他相关的指标。

Grafana:

  • Grafana是一款开源的可视化监控工具,可以将数据以直观的方式展示出来。通过连接Prometheus,我们可以在Grafana中创建仪表盘,以便查看和分析收集的监控数据。

通过PromQL 进行数据查询:

  • PromQL是Prometheus的查询语言,可以用来从收集的监控数据中提取有用的信息。使用PromQL,我们可以根据需求进行数据查询、过滤、聚合和计算等操作。

预警告警等通知:

  • 在监控中,我们需要设置预警规则来监测集群资源的使用情况。一旦某个指标达到预先设定的阈值,系统将触发警报通知管理员或其他相关人员,以便及时采取行动。

任务完成过程:

  1. 配置Prometheus: 首先,我们需要在Kubernetes集群中部署和配置Prometheus来收集监控数据。
  2. 配置Grafana: 接下来,我们需要配置Grafana,使其能够连接到Prometheus并展示监控数据。
  3. 创建仪表盘: 在Grafana中创建一个仪表盘,并选择展示我们关心的节点资源等指标。
  4. 使用PromQL查询数据: 根据需求,在Grafana的查询编辑器中使用PromQL进行数据查询和分析。
  5. 设置预警规则: 在Grafana中设置预警规则,定义阈值和触发条件,以便在资源达到警戒线时发送警报通知。
  6. 监控和预警: 监控Prometheus收集的数据,检查节点资源使用情况,当达到预警条件时,系统将触发警报通知管理员或其他相关人员。
  7. 反馈和优化: 不断观察监控数据,根据情况进行优化和调整,以提高集群的性能和稳定性。

通过以上步骤,我们可以完成对Kubernetes集群资源的监控和预警工作,并且能够根据需要查询和分析监控数据,从而保障集群的正常运行。监控和预警的过程将帮助我们在集群出现问题之前及时发现并解决,提供更好的可用性和稳定性。

PromQL 常用说明

PromQL(Prometheus Query Language)是一种用于查询和分析Prometheus监控系统中的数据的查询语言。以下是一些常见的PromQL查询语句说明:

  1. 基本指标查询:使用<metric_name>来查询指定指标的时间序列数据。例如,http_requests_total表示查询http_requests_total指标的时间序列数据。
  2. 指标筛选:可以使用{<label_name>=<label_value>}来筛选具有特定标签值的时间序列。例如,http_requests_total{job="api-server"}表示筛选出标签job值为api-serverhttp_requests_total指标的时间序列数据。
  3. 范围查询:可以使用[<start_time>:<end_time>]来指定查询的时间范围。时间可以使用Unix时间戳或时间表达式表示。例如,http_requests_total[1618168800:1618172400]表示查询在2021年4月12日10:00到11:00之间的http_requests_total指标的时间序列数据。
  4. 聚合函数:可以使用聚合函数对时间序列数据进行聚合计算。例如,sum(http_requests_total)计算所有时间序列数据的总和值,avg(http_requests_total)计算平均值,max(http_requests_total)计算最大值等。
  5. 算术运算符:可以使用算术运算符对时间序列数据进行计算。例如,http_requests_total{job="api-server"} / http_requests_total{job="web-server"}表示计算api-serverweb-server两个时间序列的比值。
  6. 警报规则:可以使用警报规则来基于一定的查询条件触发报警操作。例如,alertmanager_notifications表示查询所有触发了报警的时间序列数据。

Prometheus 日志服务写入日志不同阶段

Prometheus 的日志写入的过程
(write block) — (Head GC completed) — (Creating checkpoint) — (WAL checkpoint complete)

  • 数据一致性:日志写入过程被划分为几个阶段,每个阶段都有特定的任务。首先,write-block阶段将数据块写入内存中,然后Head GC completed表示垃圾收集阶段完成了,这个阶段确保了不再使用的内存被释放,从而维持系统的有效性。Creating checkpoint表示正在创建一个检查点,这个检查点包含了此时间点的系统状态信息。当WAL checkpoint complete表示日志的写入已经完成并创建了一个检查点。这个阶段确保了所有的数据变动都被记录下来,并且在系统发生故障时可以恢复到之前的状态,从而保证了数据的一致性。
  • 数据可靠性:通过这种构成结构,Prometheus服务器也保证了数据的可靠性。在创建检查点之后,系统会将所有的数据变动都写入到Write-Ahead Log(WAL)中。这个日志是持久化的,也就是说,即使系统发生故障,这些数据变动也会被保留下来,不会丢失。因此,通过这种构成结构,Prometheus服务器确保了数据的可靠性。
  • 系统稳定性:除了数据一致性和可靠性之外,这种构成结构也有助于保证系统的稳定性。在垃圾收集阶段,如果遇到系统资源不足或者内存泄漏等问题,垃圾收集机制会自动调整,以保证系统的正常运行。同时,在创建检查点和写入WAL的过程中,如果出现错误或者异常情况,系统也会自动处理,以保证系统的稳定性。

Prometheus 监控介绍

Prometheus是一套开源的监控系统,它主要用于可靠地记录时间序列数据。为了实现日志数据的可靠性和一致性,以及保持系统的稳定性,Prometheus采用了以下几种技术和方法:

  1. 内存管理:Prometheus使用Go语言编写,这是一种内存管理友好的语言。Prometheus本身也有一套内存管理机制,它能够有效地管理内存,避免内存泄漏和内存溢出等问题。此外,Prometheus还使用了一种缓冲区机制,它能够将日志数据先写入内存中的缓冲区,然后再批量写入磁盘,从而提高了写入性能和可靠性。
  2. 持久化存储:Prometheus使用了一种名为Write-Ahead Log(WAL)的持久化存储机制,来保证日志数据的可靠性和一致性。WAL是一种日志文件,它记录了所有对数据的修改操作。当系统发生故障或崩溃时,Prometheus可以通过回滚WAL来恢复数据。此外,WAL还支持按时间顺序进行截断操作,以减小存储空间的使用量。
  3. 检查点(Checkpoint):Prometheus通过定期创建检查点来保证数据的一致性和可恢复性。检查点是一组元数据,它记录了当前系统的状态信息,包括数据存储的位置和时间等。当系统发生故障时,可以使用检查点来恢复数据。Prometheus会定期创建检查点,并将最后一个检查点作为日志数据的基准点,从而保证数据的一致性和可恢复性。
  4. 分布式架构:Prometheus还支持分布式架构,它可以将数据分散到多个节点上进行存储和管理。这种分布式架构可以提高系统的可靠性和稳定性,因为即使单个节点发生故障,其他节点仍然可以继续提供服务。此外,分布式架构还可以提高数据的一致性和完整性,因为每个节点都可以访问和处理数据,从而减少了单点故障的可能性。

Prometheus 在日志数据的可靠性,一致性和稳定性的说明

数据源可靠性:Prometheus 提供了多种数据采集方式,包括主动采集和被动采集。其中,主动采集是通过 Prometheus 提供的客户端库进行,可以确保采集到实时的监控数据。被动采集是通过 HTTP、文件等方式接收各类应用和系统的指标数据。这样的设计可以确保从不同数据源采集到完整和准确的数据,并且在采集过程中提供弹性和容错机制,以防止数据丢失。

数据存储可靠性:Prometheus 使用自身内置的时间序列数据库来存储采集到的监控数据。该数据库使用持久化存储来保证数据的持久性和可靠性。在写入过程中,Prometheus 会确保数据的持久性,即使在处理大量数据写入的情况下也能保持一致性。同时,Prometheus 还提供了数据备份和恢复机制,以防止任何意外情况导致数据丢失。

一致性:Prometheus 使用基于推模型的数据采集机制,即通过轮询和拉取的方式获取监控数据。这种方式可以确保数据的时效性和一致性,因为每个目标(如应用程序、主机等)都可以按照自己的节奏提供监控数据,而不会受到 Prometheus 的推送速率限制。此外,Prometheus 还支持分布式架构,可以在多个节点上运行,确保高可用性和负载均衡。

系统稳定性:为了保持系统的稳定性,Prometheus 提供了多种机制。首先,它支持自动发现和标记目标,这意味着当新的应用程序或主机启动时,Prometheus 可以自动进行配置和监控。其次,Prometheus 提供了告警功能,允许用户定义和触发自定义的告警规则。这样,可以及时发现系统故障或异常,并进行相应的处理。另外,Prometheus 还支持水平扩展,通过增加新的节点来满足更高的数据处理需求,以保持系统的稳定性。

java客户端库使用(io.prometheus.client)

io.prometheus.client 是一个Java客户端库,用于在Java应用程序中采集和暴露指标数据给Prometheus监控系统。作为一名Prometheus专家,下面是我对io.prometheus.client包的作用的解释:

  1. 数据采集:io.prometheus.client提供了一系列的类和方法,使开发人员能够轻松地在Java应用程序中定义和采集指标数据。通过使用该包提供的Metircs类和相关注解,可以将自定义的指标数据与Java应用程序的不同组件(如方法、类、HTTP请求等)相关联,并定期采集和汇总这些数据。
  2. 指标暴露:io.prometheus.client可以将采集到的指标数据以Prometheus的数据格式进行暴露。通过使用该包提供的HTTP服务器,可以在应用程序中启动一个用于提供指标数据的HTTP端点。Prometheus监控系统可以通过定期访问这个端点来收集指标数据。
  3. 指标类型:io.prometheus.client支持Prometheus支持的多种指标类型,包括计数器(Counter)、直方图(Histogram)、摘要(Summary)和测量(Gauge)。这些指标类型对于不同类型的指标数据提供了灵活性和准确性。
  4. 标签支持:io.prometheus.client允许为指标数据设置标签(Labels),以便更好地分类和标识指标。标签可以用于指定指标数据的不同维度,使得Prometheus可以更精确地查询和聚合指标数据。
  5. 自动发现:io.prometheus.client还支持自动发现机制,可以在应用程序运行时自动注册和发现指标数据。这样,当新的应用程序实例启动时,Prometheus可以自动识别和监控这些实例的指标数据。

总之,io.prometheus.client是一个强大而灵活的Java客户端库,用于在Java应用程序中采集和暴露指标数据。通过使用该库,开发人员可以更方便地将应用程序的关键指标与Prometheus监控系统集成,从而更好地理解和监控应用程序的性能和健康状况。


On the other hand

  • Client Metrics Collection: Various metrics from the Kubernetes cluster, such as resource usage and performance data, are collected from the client nodes using appropriate tools or mechanisms.
  • Kubernetes Cluster Resources: The collected data includes information about the resources utilized by the Kubernetes cluster, such as CPU, memory, storage, and network usage.
  • Prometheus Monitoring Data Collection: Prometheus, a popular monitoring and alerting tool, is used to collect the metrics from the Kubernetes cluster. Prometheus is designed to scrape and store time-series data.
  • Grafana Integration: Grafana, a visualization platform, is integrated with Prometheus to create interactive and visually appealing dashboards. Grafana provides a user-friendly interface for data exploration and visualization.
  • Data Querying with PromQL: PromQL, the query language used by Prometheus, is utilized to query the collected data for specific metrics or time ranges. PromQL allows users to perform complex queries and obtain meaningful insights from the data.
  • Alerting and Notifications: Grafana can be configured to set up alerts and notifications based on predefined thresholds or conditions. When certain metrics cross the specified limit, alerts are triggered, and notifications (via email, Slack, etc.) are sent to responsible parties or teams.

相关文章:

K8s上的监控系统(Grafana)使用和理解说明

Grafana (集成Prometheus On K8s集成)主要步骤说明 客户端指标收集 —— K8s 集群资源等 —— Prometheus 监控数据收集 —— Grafana —— 通过PromQL 进行数据查询 —— 预警告警等通知 Kubernetes集群资源&#xff1a;这包括了CPU、内存、磁盘、网络等各种类型的资源。这些资…...

【netty从入门到放弃】netty转发tcp数据到多客户端

目录 创建数据库表xml实体类启动类线程类客户端代码handlecontroller类缓存tcp链接 接到一个需求&#xff0c;需要实现转发通讯模块tcp数据其他的服务器&#xff0c;也就是转发tcp数据到多客户端 任务拆解: 首先需要建立多客户端&#xff0c;每个客户端有一个独立的clientId和…...

Linux | gdb的基本使用

目录 前言 一、调试文件的生成 二、调试指令 1、选择调试文件 2、查看代码 3、运行代码 4、断点 5、打印与常显示 6、其他 总结 前言 前面我们学习了如何使用gcc/g来进行对代码进行编译&#xff0c;本章我们将使用gdb来对代码进行调试&#xff0c;学习本章的前提是有…...

C++之this指针

前言 C中对象模型和this指针是面向对象编程中的重要概念。对象模型描述了对象在内存中的布局和行为&#xff0c;包括成员变量、成员函数的存储方式和访问权限。this指针是一个隐含的指针&#xff0c;指向当前对象的地址&#xff0c;用于在成员函数中引用当前对象的成员变量和成…...

大模型,重构自动驾驶

文&#xff5c;刘俊宏 编&#xff5c;王一粟 大模型如何重构自动驾驶&#xff1f;答案已经逐渐露出水面。 “在大数据、大模型为特征&#xff0c;以数据驱动为开发模式的自动驾驶3.0时代&#xff0c;自动驾驶大模型将在车端、云端上实现一个统一的端到端的平台管理。”毫末智…...

Jmeter执行接口自动化测试-如何初始化清空旧数据

需求分析&#xff1a; 每次执行完自动化测试&#xff0c;我们不会执行删除接口把数据删除&#xff0c;而需要留着手工测试&#xff0c;此时会导致下次执行测试有旧数据我们手工可能也会新增数据&#xff0c;导致下次执行自动化测试有旧数据 下面介绍两种清空数据的方法 一、通过…...

dashboard报错 错误:无法获取网络列表、dashboard报错 错误:无法获取云主机列表 解决流程

文章目录 错误说明dashboard上报错底层命令报错查看日志message日志httpd报错日志错误日志分析开始解决测试底层命令dashboard错误说明 dashboard上报错 首先,dashboard上无论是管理员还是其他项目,均无法获取云主机和网络信息,具体报错如下...

C语言中的3种注释方法

C语言中的3种注释方法 2021年8月28日星期六席锦 在用C语言编程时&#xff0c;常用的注释方式有如下几种&#xff1a; (1)单行注释 // … (2)多行注释 /* … */ (3)条件编译注释 #if 0…#endif (1)(2)在入门教程中比较常见。 对于(1) 【单行注释 // …】&#xff0c;注释只能显示…...

20款VS Code实用插件推荐

前言&#xff1a; VS Code是一个轻量级但功能强大的源代码编辑器&#xff0c;轻量级指的是下载下来的VS Code其实就是一个简单的编辑器&#xff0c;强大指的是支持多种语言的环境插件拓展&#xff0c;也正是因为这种支持插件式安装环境开发让VS Code成为了开发语言工具中的霸主…...

攻防世界web篇-robots

打开网址后&#xff0c;发现是一个空白页面的网页 但是&#xff0c;这个题目是robots&#xff0c;所以就联想到robots.txt这个目录&#xff0c;于是我就试了一下 注意&#xff1a;这里有个php的文件&#xff0c;这个应该就是一个目录文件 当输入后&#xff0c;直接回车&#…...

6 个可解锁部分 GPT-4 功能的 Chrome 扩展(无需支付 ChatGPT Plus 费用)

在过去的几个月里&#xff0c;我广泛探索了 ChatGPT 的所有可用插件。在此期间&#xff0c;我发现了一些令人惊叹的插件&#xff0c;它们改进了我使用 ChatGPT 的方式&#xff0c;但现在&#xff0c;我将透露一些您需要了解的内容。 借助 Chrome 扩展程序&#xff0c;所有 Chat…...

centos 7.9 安装sshpass

1.作用 sshpass是一个用于非交互式SSH密码验证的实用程序。它可以用于自动输入密码以进行SSH登录&#xff0c;从而简化了自动化脚本和批处理作业中的SSH连接过程。 sshpass命令可以与ssh命令一起使用&#xff0c;通过在命令行中提供密码参数来执行远程命令。以下是一个示例命…...

CompletableFuture多任务异步,获取返回值,汇总结果

线程池异步的基础知识 详情见&#xff1a;https://blog.csdn.net/sinat_32502451/article/details/133039624 线程池执行多任务&#xff0c;获取返回值 线程池的 submit()方法&#xff0c;可以提交任务&#xff0c;并返回 Future接口。 而 future.get()&#xff0c;可以获取…...

Linux上Qt和Opencv人脸识别项目学习路线(嵌入式/C++)

本文将介绍Linux人脸识别项目的开发流程, 只作简略介绍所需知识点及大致流程。 注&#xff1a;若需详细教程请联系作者&#xff08;见文末&#xff09;。 一、基本开发环境搭建 1.1 安装虚拟机Ubuntu 虚拟机采用的是VMware&#xff0c;需要下载VMware安装包、ubuntu系统镜像…...

spring 源码阅读之@Configuration解析

Configuration解析 Configuration注解用于标识一个类是配置类&#xff0c;用于声明和组织Bean定义&#xff0c;首先Configuration本身也是一个Component&#xff0c;在其注解定义上标有Component Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Co…...

Java Web 33道面试题汇总

更多面试合集在:https://javaxiaobear.cn 1、http 的长连接和短连接? HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名…...

设计模式记录

设计模式 抽象工厂模式单例模式要实现一个单例&#xff0c;需要关注的点有下面几个: 抽象工厂模式 PHP工厂模式是一种可扩展、可维护和可重复使用的方法&#xff0c;旨在提供通用接口&#xff0c;用于创建对象。工厂模式的主要组成部分包括抽象工厂、具体工厂、抽象产品和具体产…...

Java设计模式之亨元模式(Flyweight Pattern)

亨元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享对象来最大限度地减少内存使用和提高性能。该模式适用于需要创建大量相似对象的情况&#xff0c;其中许多对象具有相同的状态。通过共享相同的状态&#xff0c;亨元模式可以减少…...

正点原子嵌入式linux驱动开发——Linux中断

不管是单片机裸机实验还是Linux下的驱动实验&#xff0c;中断都是频繁使用的功能&#xff0c;在裸机中使用中断需要做一大堆的工作&#xff0c;比如配置寄存器&#xff0c;使能IRQ等等。但是Linux内核提供了完善的中断框架&#xff0c;只需要申请中断&#xff0c;然后注册中断处…...

基于Jaya优化算法的电力系统最优潮流研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...