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

grafana面板介绍

grafana 快速使用

背景

随着公司业务的不断发展,紧接来的是业务种类的增加、服务器数量的增长、网络环境的越发复杂以及发布更加频繁,从而不可避免地带来了线上事故的增多,因此需要对服务器到应用的全方位监控,提前预警,目前多采用prometheus/Zabbix + grafana的方式来解决这个问题。

Grafana简介

Grafana 是一个可视化工具,简单点说就是用来展示数据的。它和Zabbix、Prometheus 有本质区别,在于它不能解决监控问题,仅用于展示。也就是说,在监控领域,Grafana 需要配合 Zabbix、Prometheus 等工具一起使用,以获取数据源。

官网地址:https://grafana.com/
官方文档:https://grafana.com/docs/grafana/next/
官方模板地址: https://grafana.com/grafana/dashboards/

Grafana 官方还对 Grafana 的适用场景以及基本特征作了介绍:

  • 工业物联网场景数据

    grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。

  • 多租户和多维度的权限控制
    支持多租户的场景·使用Org区分不同的用户,数据源和dashboard进行隔离。多种用户角色·除了支持用户也支持Team的管理。多维度的权限控制,支持org·folder·dashboard三层的权限控制·可满足各种使用场景。

  • 仪表板和可视化
    Grafana支持众多的显示pane!。可帮助您快速构建各类显示效果·满足各类场景的需求、同时通过简单的拖拉缩放即可快速进行排版布局,操作简易方便,支持变量,注释的特性,可方便制作动态panel。同一张dashboard通过动态切换变量更换显示的数据。

  • 数据源和集成
    支持众多的数据源,内置集成Graphite,Prometheus·InfluxDB,MySQL·PostgreSQL和Elasticsearch:等内置插件,另外支持众多的第三方数据源的插件·并可自行进行扩展·方便接入更多的数据来源并进行显示。每种数据源有自己特性化的查询编辑器·帮助用户简单方便掌握各类数据的查询配置。

  • 警报和通知
    Grafana附带内置警报引擎,允许用户设置一定的条件规则到特定panel上。数据刷新警报触发之后,可产生一系列的事件。并内置插件支持显示·同时结合notification通知功能·警报触发之后可自动发送通知·支持的方式众多(例如,Email,Slack,LINE,Telegram,自定义的webhook等)

  • 和Prometheus·Loki集成度高
    Prometheus是一个领先的开源监控解决方案·属于一站式监控告警平台,依赖少、功能齐全。Loki是一个可水平伸缩、高可用、多租户的日志聚合系统。在grafana.上都有高度的集成和方便的使用。

  • 插件化的结构·更易于扩展
    Grafana是插件化的架构·对于panel·data source·app都可以开发插件进行扩展·插件的开发轻量简易·放入指定插件目录下注册即可生效·对于显示效果的增加或是更多数据源的接入都可以轻松解决。

  • 开源社区
    拥有强大的用户社区和活跃的贡献者·它已拥有54个数据源·50个面板·17个应用程序和1732个仪表盘·在github上有25000多次提交,并且Star为35.6K之多·持续更新,快速进版增加新功能。

这里需要留意的是,上面官方列举的数据源都是时序型数据库。这也透露出 Grafana 的另一大适用性:Grafana 一般是配合时序数据库做数据展示的。

Grafana 与 Kibana 的区别

Kibana 是运维圈耳熟能详的后端数据实时展示工具。日常工作中,大家都用 Kibana 结合Logstash、ElasticSearch 等组件一起使用做日志展示、索引、分析的。但Kibana也可以接入其他数据源的,只不过最常见的用法还是展示日志。

Grafana 最早其实应该是 Kibana3 的一个分支。不同的是,Grafana 拥有自己的权限管理和用户管理系统,而 Kibana 没有权限管理系统。Kibana 和 ES 结合紧密,支持强大的ES语法,比较适合做一些多维度的分析和查询,而Grafana更适合用于展示,图形比Kibana美观很多。

简易安装

安装方式有很多,本次采用docker方式

docker run -d --name=grafana -p 3000:3000 grafana/grafana:9.5.7

浏览器访问: http://xx.xx.xx.xx:3000/login(要换成你的IP)

首次登陆账号密码都是:admin

页面按钮功能介绍

搜索

搜索已有的面板

在这里插入图片描述

添加

在这里插入图片描述

  • New dashboards:添加仪表盘
  • Import dashboards:可导入模板仪表板文件或者json(模板地址:https://grafana.com/grafana/dashboards/)
  • Create alert rule:创建告警规则

总览

在这里插入图片描述

Starred

仪表盘收藏:

在这里插入图片描述

仪表盘管理

在这里插入图片描述

Palylist

播放列表

在这里插入图片描述

可以将多个仪表盘添加至播放列表,通过一个大屏循环播放。适合用作数据展示给公众浏览。

Snapshots

快照

在这里插入图片描述

是一种公开共享仪表板,任何人都可以访问,剥离出查询等敏感数据,并不可操作,仅展示某一刻的可见的数据

在这里插入图片描述

探索

以便专注于查询语句编写和数据展示,直到写出有一个有效的查询语句,然后再考虑构建仪表板。减少不必要信息元素的干扰,用于调试和查看数据。

在这里插入图片描述

告警通知

告警规则和告警设置

下面以添加一个webhook告警的例子来讲解,以下步骤存在顺序!!!

Contact point

首先,在Contact point(链接点)添加一个webhook地址,如下:

在这里插入图片描述

在这里插入图片描述

注意这里的告警标题告警内容可以都不添加,不添加得话,grafana返回给webhook得json少两个字段,即titlemessage),他是模板化得一个配置,需要引用外部你用go语言自定义得模板

我们这里先选择不添加!

在这里插入图片描述

grafana返回给webhook的是一个json体,如下:

来源:https://grafana.com/docs/grafana/v9.5/alerting/manage-notifications/webhook-notifier/
{
"receiver": "My Super Webhook",
"status": "firing",
"orgId": 1,
"alerts": [{"status": "firing","labels": {"alertname": "High memory usage","team": "blue","zone": "us-1"},"annotations": {"description": "The system has high memory usage","runbook_url": "https://myrunbook.com/runbook/1234","summary": "This alert was triggered for zone us-1"},"startsAt": "2021-10-12T09:51:03.157076+02:00","endsAt": "0001-01-01T00:00:00Z","generatorURL": "https://play.grafana.org/alerting/1afz29v7z/edit","fingerprint": "c6eadffa33fcdf37","silenceURL": "https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT2%2Cteam%3Dblue%2Czone%3Dus-1","dashboardURL": "","panelURL": "","valueString": "[ metric='' labels={} value=14151.331895396988 ]"},{"status": "firing","labels": {"alertname": "High CPU usage","team": "blue","zone": "eu-1"},"annotations": {"description": "The system has high CPU usage","runbook_url": "https://myrunbook.com/runbook/1234","summary": "This alert was triggered for zone eu-1"},"startsAt": "2021-10-12T09:56:03.157076+02:00","endsAt": "0001-01-01T00:00:00Z","generatorURL": "https://play.grafana.org/alerting/d1rdpdv7k/edit","fingerprint": "bc97ff14869b13e3","silenceURL": "https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT1%2Cteam%3Dblue%2Czone%3Deu-1","dashboardURL": "","panelURL": "","valueString": "[ metric='' labels={} value=47043.702386305304 ]"}
],
"groupLabels": {},
"commonLabels": {"team": "blue"
},
"commonAnnotations": {},
"externalURL": "https://play.grafana.org/",
"version": "1",
"groupKey": "{}:{}",
"truncatedAlerts": 0,
"title": "[FIRING:2]  (blue)",
"state": "alerting",
"message": "**Firing**\n\nLabels:\n - alertname = T2\n - team = blue\n - zone = us-1\nAnnotations:\n - description = This is the alert rule checking the second system\n - runbook_url = https://myrunbook.com\n - summary = This is my summary\nSource: https://play.grafana.org/alerting/1afz29v7z/edit\nSilence: https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT2%2Cteam%3Dblue%2Czone%3Dus-1\n\nLabels:\n - alertname = T1\n - team = blue\n - zone = eu-1\nAnnotations:\nSource: https://play.grafana.org/alerting/d1rdpdv7k/edit\nSilence: https://play.grafana.org/alerting/silence/new?alertmanager=grafana&matchers=alertname%3DT1%2Cteam%3Dblue%2Czone%3Deu-1\n"
}
Notification policies

接下来我们来添加一下告警策略,点击 New nested policy

在这里插入图片描述

在这里插入图片描述

Matching labels指的是打标签,这里可以打多个标签;

Contact point 这里配的是链接点

这两个配置的意思是,告警将会根据标签匹配,如果标签完全匹配,则向链接点发送json数据

Continue matching subsequent sibling nodes: 暂时不清楚

Override grouping:暂时不清楚

Override general timings:这个很重要!!!!!这个涉及到报警的频率

其中它包括3个参数,分别为Group wait,Group interval,Repeat interval

  1. Group wait(分组等待时间):当多个告警条件同时满足时,Grafana会将这些告警分组,而Group wait表示在触发第一个告警后,等待其他告警条件满足的时间。举个例子,假设你有一个监控系统,同时监控服务器的CPU和内存使用率。如果设置了Group wait为5分钟,当CPU使用率和内存使用率同时超过阈值时,Grafana会等待5分钟,看是否还有其他告警条件满足。如果在这5分钟内没有其他告警条件满足,Grafana会触发告警。

  2. Group interval(分组间隔时间):当多个告警条件同时满足且Group wait时间过去后,Grafana会触发告警并将这些告警分组。Group interval表示在触发第一个告警后,等待下一组告警的时间间隔。继续上面的例子,假设设置了Group interval为10分钟,当CPU使用率和内存使用率同时超过阈值并且Group wait时间过去后,Grafana会触发告警并将它们分组。然后,Grafana会等待10分钟,看是否还有其他告警条件满足。如果在这10分钟内有新的告警条件满足,它们会被添加到同一组告警中。

  3. Repeat interval(重复间隔时间):当告警被触发后,Repeat interval表示在发送第一次告警通知后,等待下一次发送告警通知的时间间隔。举个例子,假设设置了Repeat interval为1小时,当某个告警触发后,Grafana会立即发送一次告警通知。然后,它会等待1小时,再次发送告警通知。这样的重复通知可以帮助确保持续关注并及时处理问题。

    假设你有一个监控系统,用于监控公司的服务器。你设置了一个告警规则,当服务器的CPU使用率超过90%时,触发告警通知。同时,你将Repeat interval设置为30分钟。

    现在假设某个服务器的CPU使用率超过了90%,Grafana会立即发送一次告警通知,通知相关人员服务器出现了问题。然后,Grafana会等待30分钟,再次检查服务器的CPU使用率。

    如果在这30分钟内,服务器的CPU使用率仍然超过90%,Grafana会再次发送告警通知,提醒相关人员问题仍然存在。然后,Grafana会再次等待30分钟,继续检查服务器的CPU使用率。

    这个过程会一直重复下去,直到服务器的CPU使用率低于90%或者告警被关闭。每次重复间隔过后,Grafana都会重新检查服务器的状态,并决定是否发送新的告警通知。

对于这些字段的定义,官网地址如下:通知策略 |Grafana 文档
在这里插入图片描述

Mute timings:是否定期去执行

Alert rules

添加告警规则,找到你想添加告警的报表,来进行添加。

在这里插入图片描述

然后进去之后是下图这个页面

在这里插入图片描述

这里需要注意的地方是统计方式,你选择的函数不一样,就会导致计算结果不一样!

各个函数的含义,官方示意为:

地址:Queries and conditions | Grafana documentation

在这里插入图片描述

简单来说就是:

  1. Math:Math 选项允许您对数据进行数学运算。这可以用于执行各种统计任务,例如求平均值、求和、求积等。例如,您可以使用 Math 选项计算一个特定指标的移动平均值,以便更好地了解其趋势。
  2. Reduce:Reduce 选项允许您对数据进行聚合操作,即将多个数据点合并成一个或几个数据点。这可以用于计算总和、平均值、中位数等统计量。例如,您可以使用 Reduce 选项计算一个特定时间段内所有数据点的总和,以便了解该指标的整体表现。
  3. Classic conditions:Classic conditions 选项允许您根据特定条件过滤数据。这可以用于识别符合特定标准的数据点。例如,您可以使用 Classic conditions 选项过滤出所有温度超过特定阈值的数据点,以便更好地了解哪些设备可能存在问题。
  4. Resample:Resample 选项允许您对数据进行重新采样,即根据指定的时间间隔对数据进行聚合或平均。这可以用于降低数据点的数量,以便更好地理解数据的总体趋势。例如,您可以使用 Resample 选项将每秒的数据点减少到每分钟的平均值,以便更方便地进行数据分析。
  5. Threshold:Threshold 选项允许您设置阈值,以便识别超出特定范围的数据点。这可以用于检测异常情况或识别潜在的问题。例如,您可以使用 Threshold 选项设置一个阈值,当温度超过该阈值时,系统将自动发出警报,以便您能够及时发现并解决问题。

然后,报警就可以配置成功了,你可以观察一下是否报警,如果报警有延迟,或者没有到达预期时间,建议调节一下Override general timings 的三个指标!!

Silences

此处功能是告警抑制功能

有这么一个场景,一个项目出现问题后,会一直报警,然后你想在1天内,或者1个月内不想收到他的报警(报错一直未解决),就可以使用此功能!

我在项目中的应用是,项目每次通过jenkins发布的时候,不想让他告警(因为这个是正常的项目迭代,不是异常告警),就可以使用此功能!

在这里插入图片描述

相关的API接口如下:Swagger Editor

delete

/api/alertmanager/grafana/api/v2/silence/{SilenceId}

get

/api/alertmanager/grafana/api/v2/silence/{SilenceId}
/api/alertmanager/grafana/api/v2/silences

post

/api/alertmanager/grafana/api/v2/silences
{"comment": "string","createdBy": "string","endsAt": "2023-11-18T06:46:52.218Z","id": "string","matchers": [{"isEqual": true,"isRegex": true,"name": "string","value": "string"}],"startsAt": "2023-11-18T06:46:52.218Z"
}

如果有权限的话,需要增加header

如下

curl --location 'http://xxxxx/api/alertmanager/grafana/api/v2/silences' --header 'Authorization:Bearer glsa_xxxxbreEfWjpyrlMxxxxbNII1_31530b12' --header 'Content-Type:application/json' --data '{"startsAt":"2023-08-15T07:18:20.968Z","endsAt":"2023-08-15T09:18:20.968Z","comment":"created2023-08-1515:18","createdBy":"admin","matchers":[{"name":"project","value":"xxx","isEqual":true,"isRegex":true}]}'

权限在grafana列表页面的Administration-Service accounts中配置

踩坑点

grafana日志后台一直报错 database is locked

lvl=eror msg="failed to look up user based on cookie" logger=context error="database is locked"

原因:表示 sqlite 数据库存在问题。如果数据库在崩溃后处于不一致状态,或者磁盘出现问题,则可能会发生这种情况

解决方案:

Grafana Logs “database is locked” · Issue #16638 · grafana/grafana (github.com)

k8s方式:

在默认配置/etc/grafana/grafana.ini添加

[database]
type=sqlite3
cache_mode = shared

下面这种方式我没是成功:

在这里插入图片描述

还有一个方案也没有试成功:

“database is locked” - unable to use grafana anymore 😦 - General - Grafana Labs Community Forums

sqlite3 grafana.db '.clone grafana-new.db'
mv grafana.db grafana-old.db
mv grafana-new.db grafana.db

参考文献

Grafana 是什么_请叫我王运维的博客-CSDN博客_grafana

分分钟搞定Grafana(图文详解)_奔跑中的小猿的博客-CSDN博客_grafana

【精选】Grafana入门使用_W1nk的博客-CSDN博客

Prometheus+Grafana基础介绍及搭建使用_正在努力的小杰的博客-CSDN博客

相关文章:

grafana面板介绍

grafana 快速使用 背景 随着公司业务的不断发展,紧接来的是业务种类的增加、服务器数量的增长、网络环境的越发复杂以及发布更加频繁,从而不可避免地带来了线上事故的增多,因此需要对服务器到应用的全方位监控,提前预警&#xf…...

实验三 循环结构程序设计(Python)

第1关:打印图形 zm=input("") #代码开始#代码结束def print_pattern(letter):if not letter.isalpha() or not letter.isupper():print("请输入大写字母")returnstart_char = Aend_char = letterfor i in range(ord(start_char), ord(end_char) + 1):spa…...

Flutter笔记:目录与文件存储以及在Flutter中的使用(上)

Flutter笔记 目录与文件存储以及在Flutter中的使用(上) 文件系统基础知识与路径操作 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:h…...

注意了!申请流量卡时地址一定不要填写学校,不好下卡哦!

当我们在网上购买流量卡时,都会要求让填写准确的收货地址,但是对于收货地址你填对了吗? ​  很多朋友在提交流量卡申请之后,往往会被运营商拒审,对于拒审的原因除了比较常见的信息填写有有误、涉及禁发地区、重复申…...

minio使用shell上传文件

minio使用shell上传文件 前言1. 编写调用脚本2.测试脚本上传3.候选脚本 前言 业务场景需要实现,服务器文件上传至存储服务。一种方式是安装minio的linux客户端,另一种方式是通过调用minio的api接口实现文件上传。后一种方式不需要依赖minio的客户端使用…...

LeetCode538. Convert BST to Greater Tree

文章目录 一、题目二、题解 一、题目 Given the root of a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus the sum of all keys greater than the original key in BST. As a remin…...

iPaaS和RPA,企业自动化应该如何选择?

全球著名的咨询调查机构Gartner在2022年初再次发布了《2022年12大技术趋势》报告。 Gartner是全球最具权威的IT研究与顾问咨询公司,成立于1979年,在界定及分析那些决定了商业进程的发展趋势与技术方面,它拥有二十年以上的丰富经验&#xff0c…...

AI实践与学习1_Milvus向量数据库实践与原理分析

前言 随着NLP预训练模型(大模型)以及多模态研究领域的发展,向量数据库被使用的越来越多。 在XOP亿级题库业务背景下,对于试题召回搜索单单靠着ES集群已经出现性能瓶颈,因此需要预研其他技术方案提高试题搜索召回率。…...

3Dexcite deltgen 2022x 新功能

3DEXCITE DELTAGEN 2022x 现已发布,此次新版发布包含 DELTAGEN 2022x,DELTAGEN MARKETING SUITE 2022x,DELTAGEN XPLORE 2022x,以及软件开发工具包 SDK FOR DELTAGEN 2022x 版本。赶快来获取最新 DG 版本,了解新增内容…...

代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形

代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形 文章链接:柱状图中最大的矩形 视频链接:柱状图中最大的矩形 1. LeetCode 84. 柱状图中最大的矩形 1.1 思路 本题是给一个数组形象得画出图后求矩形的最大面积是多少。本题和42. 接雨水…...

【2023云栖】陈守元:阿里云开源大数据产品年度发布

本文根据 2023 云栖大会演讲实录整理而成,演讲信息如下: 演讲人:陈守元 | 阿里云计算平台事业部开源大数据产品总监 演讲主题:阿里云开源大数据产品年度发布 随着云计算的不断发展,未来数据处理和应用的趋势将围绕C…...

Element UI 禁用数字输入框组件添加鼠标滚动事件

Element UI 禁用数字输入框组件添加鼠标滚动事件 <el-input type"number" mousewheel.native.prevent DOMMouseScroll.native.prevent :min"0" onkeyup"this.valuethis.value.match(/\d\.?\d{0,2}/);"v-model"form.threeYearDevelop…...

担忧CentOS停服?KeyarchOS系统来支撑

担忧CentOS停服&#xff1f;KeyarchOS系统来支撑 近年发生的“微软黑屏门”、“微软操作系统停更”等安全事件&#xff0c;敲响了我国 IT 产业的警钟&#xff0c;建立由我国主导的 IT 产业生态尤为迫切。对此&#xff0c;我国信息技术应用创新行业乘势而起&#xff0c;旨在通过…...

聚观早报 |联想集团Q2财季业绩;小鹏汽车Q3营收

【聚观365】11月17日消息 联想集团Q2财季业绩 小鹏汽车Q3营收 微软发布两款自研AI芯片 FAA批准SpaceX再次发射星际飞船 2023 OPPO开发者大会 联想集团Q2财季业绩 全球数字经济领导企业联想集团公布截至2023年9月30日的2023/24财年第二财季业绩&#xff1a;整体营收达到10…...

SAP ABAP权限控制中常用TCODE

权限控制中的几个TCODE 1.创建新的权限对象并在程序中使用 利用SU21创建权限对象Z_TEST&#xff0c;在程序中检查授权。 检查的代码如下&#xff1a; AUTHORITY-CHECK OBJECT ‘Z_TEST’ID ‘ACTION’ FIELD ‘44′ID ‘BUKRS’ FIELD DUMMY .IF sy-subrc NE 0.MESSAGE e00…...

云计算赛项容器云2023搭建

部署容器云平台[5 分] 使 用 OpenStack 私 有 云 平 台 创 建 两 台 云 主 机 &#xff0c; 云 主 机 类 型 使 用 4vCPU/12G/100G 类型&#xff0c;分别作为 Kubernetes 集群的 Master 节点和 node 节点&#xff0c; 然后完成 Kubernetes 集群的部署&#xff0c;并完成 Istio …...

11.1 文件拷贝移动与删除

在编程中&#xff0c;针对磁盘与目录的操作也是非常重要的&#xff0c;本章将重点介绍如何实现针对文件目录与磁盘的操作方法&#xff0c;其中包括了删除文件&#xff0c;文件拷贝&#xff0c;文件读写&#xff0c;目录遍历输出&#xff0c;遍历磁盘容量信息&#xff0c;磁盘格…...

redhat下使用CentOS yum源,并安装docker

一、安装yum源 1.卸载yum # 查看系统自身安装的yum软件包 rpm -qa | grep yum # 卸载软yum件包 rpm -e 软件包名称 --nodeps #可以使用简称如 rpm -e yum-* --nodeps2. 安装yum [rootbogon ~]# rpm -ivh --nodeps https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Pa…...

基于单片机体温脉搏检测控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20传感器检测体温。 3、红外对接管采集心率值送到液晶1602显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() { write_com(0x38); //显示…...

MyBatis-Plus逻辑删@TableLogic

MyBatis-Plus逻辑删除指&#xff0c;在数据库中删除数据时&#xff0c;并没有真正的删除&#xff0c;而是更改指定字段的值&#xff0c;这个字段的值可以为0或1&#xff0c;0代表未删除&#xff0c;1代表已删除&#xff0c;所以delete操作实际上是update操作,查询操作也是要加w…...

本地私域线上线下 线上和线下的小程序

私域商城是一种新型的零售模式&#xff0c;它将传统的线下实体店与线上渠道相结合&#xff0c;通过会员、营销、效率等方式&#xff0c;为消费者提供更加便利和高效的购物体验。私域商城的发展趋势表明&#xff0c;它将成为未来零售业的重要模式&#xff0c;引领零售业的创新和…...

【前端学java】java中的Object类(8)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…...

TensorFlow实战教程(二十六)-什么是生成对抗网络GAN?基础原理和代码普及

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了Keras实现经典的深度学习文本分类算法,包括LSTM、BiLSTM、BiLSTM+Attention和CNN、TextCNN。这篇文章将详细介绍生成对抗网络GAN的基础知识,包括什么是GAN、常用算法(CGAN、DCGAN、…...

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven依赖管理,版本号管理,继承和聚合

第一章 Maven的依赖管理 1.1 依赖范围 依赖语法&#xff1a;<scope> compile【默认值】&#xff1a;在main、test、Tomcat【服务器】下均有效。test&#xff1a;只能在test目录下有效 junit provided&#xff1a;在main、test下均有效&#xff0c;Tomcat【服务器】无效…...

OpenVPN Connect使用连接公网VPN服务器实现内网穿透

安装并运行OpenVPN Connect 点击AGREE 添加配置.OVPN文件 点击连接 连接成功 两个内网主机通过公网VPN穿透...

Redis(集合Set和有序集合SortedSet)

SET集合中的元素是不允许重复的&#xff0c;SET中的命令都是以S开头的。 使用SADD 在集合中添加元素&#xff0c;使用SMEMBERS查看元素。 当添加重复元素时&#xff0c;会返回0代表添加失败&#xff0c;查询还是就Redis一个元素。 使用SISMEMBER查询元素是否在集合中&#xff…...

黔院长 | 《黄帝内经》——奇病论!

世界之大&#xff0c;无奇不有&#xff0c;就连病症也是如此&#xff0c;近年更是新增各类奇形怪状的疾病&#xff0c;今天就带大家一同走进《黄帝内经》的奇病篇&#xff0c;一起了解部分罕见的疾病及其特征&#xff01; “奇病论”当中提到&#xff0c;有些妇女怀孕到第九个月…...

手撕单链表(C语言)

目录 1.单链表的物理结构 2.头文件的实现 3.SList.c文件的实现 3.1尾插、创建节点 3.2打印 3.3头插 3.4尾删 3.5头删 3.6查找 3.7指定位置之前插入数据 3.8指定位置之后插入数据 3.9删除指定位置节点 3.10删除pos之后的节点 3.11销毁链表 4 所有的代码 1.单链表的物理结构 众所…...

60 权限提升-MYMSORA等SQL数据库提权

目录 数据库应用提权在权限提升中的意义WEB或本地环境如何探针数据库应用数据库提权权限用户密码收集等方法目前数据库提权对应的技术及方法等 演示案例Mysql数据库提权演示-脚本&MSF1.UDF提权知识点: (基于MYSQL调用命令执行函数&#xff09;读取数据库存储或备份文件 (了…...

【C++上层应用】2. 预处理器

文章目录 【 1. #define 预处理 】【 2. #ifdef、#if 条件编译 】2.1 #ifdef2.2 #if2.3 实例 【 3. # 和 ## 预处理 】3.1 # 替换预处理3.2 ## 连接预处理 【 4. 预定义宏 】 预处理器是一些指令&#xff0c;指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是…...