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

Prometheus监控实战之Blackbox_exporter黑盒监测

1 Blackbox_exporter应用场景

blackbox_exporter是Prometheus官方提供的exporter之一,可以提供HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。

1.1 HTTP 测试

定义 Request Header信息

判断 Http status / Http Respones Header / Http Body内容

1.2 TCP 测试

业务组件端口状态监听

应用层协议定义与监听

1.3 ICMP 测试

主机探活机制

1.4 POST 测试

接口联通性

1.5 SSL证书过期时间

2 Blackbox_exporter安装

下载地址:https://prometheus.io/download/

2.1 下载安装包

# wget ​ ​https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz​​

2.2 解压并重命名

# tar xf blackbox_exporter-0.22.0.linux-amd64.tar.gz# mv blackbox_exporter-0.22.0.linux-amd64 /usr/local/blackbox_exporter

2.3 授权

# chown -R root.root /usr/local/blackbox_exporter

2.4 使用systemd进行管理blackbox_exporter服务

# cat >/etc/systemd/system/blackbox_exporter.service <<EOF[Unit]Description=Blackbox ExporterWants=network-online.targetAfter=network-online.target[Service]User=rootExecStart=/usr/local/blackbox_exporter/blackbox_exporter --config.file=/usr/local/blackbox_exporter/blackbox.ymlRestart=on-failureWantedBy=default.targetEOF

2.5 添加开机自启动

# systemctl daemon-reload# systemctl enable blackbox_exporterCreated symlink from /etc/systemd/system/default.target.wants/blackbox_exporter.service to /etc/systemd/system/blackbox_exporter.service.

2.6 启动Blackbox_exporter

# systemctl start blackbox_exporter

3 blackbox.yml配置文件详解

官方解释: ​ ​https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md

3.1 默认配置

运行blackbox exporter时,需要用户提供探针的配置信息,这些配置信息可能是以下几种信息:

  • 自定义的HTTP头信息
  • 探测时需要的一些 TSL(秘钥证书) 配置
  • 探针本身的验证行为

在 blackbox exporter每一个探针配置称为一个 module,并且以YAML配置文件的形式提供给blackbox exporter,每一个module主要包含以下配置内容:

  • 探针类型(prober)
  • 验证访问超时时间(timeout)
  • 当前探针的具体配置项

3.1.1 探针类型: http https tcp dns icmp

prober: <prober_string>

必选

3.1.2 超时时间

[timeout: <duration>]

默认单位:秒

3.1.3 探针的详细配置,最多只能配置其中一个

[ http: <http_probe> ][ tcp: <tcp_probe> ][ dns: <dns_probe> ][ icmp: <icmp_probe> ]

3.2 <http_probe>可配置参数

3.2.1 此探针接受的状态代码

[ valid_status_codes: <int>, ... | default = 2xx ]

默认为2xx。

3.2.2 此探针接受的HTTP版本

[ valid_http_versions: <string>, ... ]

3.2.3 探针将使用的HTTP方法

[ method: <string> | default = "GET" ]

3.2.4 为探针设置的HTTP标头

headers:
[ <string>: <string> ... ]

3.2.5 探针是否将遵循任何重定向

[ no_follow_redirects: <boolean> | default = false ]

3.2.6 如果存在SSL,则探测失败

[ fail_if_ssl: <boolean> | default = false ]

3.2.7 如果不存在SSL,则探测失败

[ fail_if_not_ssl: <boolean> | default = false ]

3.2.8 如果响应主体与正则表达式匹配,则探测失败

fail_if_body_matches_regexp:[ - <regex>, ... ]

3.2.9 如果响应主体与正则表达式不匹配,则探测失败

fail_if_body_not_matches_regexp:[ - <regex>, ... ]

3.2.10 如果响应头与正则表达式匹配,则探测失败。对于具有多个值的标头,如果*至少一个*匹配,则失败

fail_if_header_matches:[ - <http_header_match_spec>, ... ]

3.2.11 如果响应头与正则表达式不匹配,则探测失败。对于具有多个值的标头,如果* none *不匹配,则失败

fail_if_header_not_matches:[ - <http_header_match_spec>, ... ]

3.2.12 HTTP探针的TLS协议的配置

tls_config:[ <tls_config> ]

3.2.13 目标的HTTP基本身份验证凭据

basic_auth:[ username: <string> ][ password: <secret> ]

3.2.14 目标的承载令牌

[ bearer_token: <secret> ]

3.2.15 目标的承载令牌文件

[ bearer_token_file: <filename> ]

3.2.16 用于连接到目标的HTTP代理服务器。

[ proxy_url: <string> ]

3.2.17 HTTP探针的IP协议(ip4,ip6)

[ preferred_ip_protocol: <string> | default = "ip6" ]
[ ip_protocol_fallback: <boolean> | default = true ]

3.2.18 探针中使用的HTTP请求的主体。

body: [ <string> ]<http_header_match_spec>header: <string>,regexp: <regex>,[ allow_missing: <boolean> | default = false ]

4 常用几种应用场景

4.1 HTTP检测(监控网站状态)

4.1.1 blackbox配置

# vim http_code.yamlmodules:http_2xx:prober: httphttp:method: GEThttp_post_2xx:prober: httphttp:method: POST

4.1.2 Prometheus配置

  - job_name: 'blackbox_http_2xx'metrics_path: /probeparams:module: [http_2xx]static_configs:- targets:- https://www.baidu.com- https://www.yangxingzhen.comrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#blackbox exporter 所在节点replacement: 10.10.50.24:9115

针对每1个探针服务(如http_2xx)定义一个采集任务,并且直接将任务的采集目标定义为我们需要探测的站点。在采集样本数据之前通过relabel_configs对采集任务进行动态设置。

  • 根据Target实例的地址,写入__param_target 标签中,__param_<name>形式的标签表示,在采集任务时会在请求目标地址中添加<name>参数,等同于params的设置;
  • 获取__param_target的值,并覆写到instance标签中;
  • 覆写Target实例的__address__标签值为BlockBox Exporter实例的访问地址。

4.1.3 Prometheus热加载配置文件

# curl -X POST http://10.10.50.24:9090/-/reload

4.1.4 访问blackbox_exporter

浏览器输入http://10.10.50.24:9115

4.1.5 访问Prometheus的UI查看下targets

浏览器输入http://10.10.50.24:9090

 查询数据

4.1.6  定义HTTP请求

HTTP服务通常会以不同的形式对外展现,有些可能就是一些简单的网页,而有些则可能是一些基于REST的API服务。对于不同类型的HTTP的探测需要管理员能够对HTTP探针的行为进行更多的自定义设置,包括:HTTP请求方法、HTTP头信息、请求参数等。对于某些启用了安全认证的服务还需要能够对HTTP探测设置相应的Auth支持。对于HTTPS类型的服务还需要能够对证书进行自定义设置。

如下所示,这里通过method定义了探测时使用的请求方法,对于一些需要请求参数的服务,还可以通过headers定义相关的请求头信息,使用body定义请求内容:

1)blackbox.yaml

# vim /usr/local/blackbox_exporter/blackbox.ymlmodules:http_2xx:prober: httphttp:method: GEThttp_post_2xx:prober: httptimeout: 5shttp:method: POSTheaders:Content-Type: application/jsonbody: '{"user_login": "admin" "user_pass": "Aa123456"}'
# systemctl restart blackbox_exporter 

2)prometheus配置:

# 添加以下内容- job_name: 'blackbox_http_post_2xx'metrics_path: /probeparams:module: [http_post_2xx]static_configs:- targets:- http://10.10.50.24:30080/wp-login.phprelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#blackbox exporter 所在节点replacement: 10.10.50.24:9115

3)保存配置并热加载配置文件

# curl -X POST ​ ​http://10.10.50.24:9090/-/reload

4)访问Prometheus的UI查看下targets,浏览器输入http://10.10.50.24:9090

查询数据

5)如果HTTP服务启用了安全认证,Blockbox Exporter内置了对basic_auth的支持,可以直接设置相关的认证信息即可: 

http_basic_auth_example:prober: httptimeout: 5shttp:method: POSTheaders:Host: "login.example.com"basic_auth:username: "username"password: "mysecret"

 6)对于使用了Bear Token的服务也可以通过bearer_token配置项直接指定令牌字符串,或者通过bearer_token_file指定令牌文件。

7)对于一些启用了HTTPS的服务,但是需要自定义证书的服务,可以通过tls_config指定相关的证书信息:

http_custom_ca_example:prober: httphttp:method: GETtls_config:ca_file: "/certs/my_cert.crt"

8)自定义探针

在默认情况下HTTP探针只会对HTTP返回状态码进行校验,如果状态码为2XX(200 <= StatusCode < 300)则表示探测成功,并且探针返回的指标probe_success值为1。

如果用户需要指定HTTP返回状态码,或者对HTTP版本有特殊要求,如下所示,可以使用valid_http_versions和valid_status_codes进行定义:

http_2xx_example:prober: httptimeout: 5shttp:valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [200,301,302]

默认情况下,Blockbox返回的样本数据中也会包含指标probe_http_ssl,用于表明当前探针是否使用了SSL:

# HELP probe_http_ssl Indicates if SSL was used for the final redirect# TYPE probe_http_ssl gaugeprobe_http_ssl 0

而如果用户对于HTTP服务是否启用SSL有强制的标准。则可以使用fail_if_ssl和fail_if_not_ssl进行配置。fail_if_ssl为true时,表示如果站点启用了SSL则探针失败,反之成功。fail_if_not_ssl刚好相反。

http_2xx_example:prober: httptimeout: 5shttp:valid_status_codes: []method: GETno_follow_redirects: falsefail_if_ssl: falsefail_if_not_ssl: false

除了基于HTTP状态码,HTTP协议版本以及是否启用SSL作为控制探针探测行为成功与否的标准以外,还可以匹配HTTP服务的响应内容。使用fail_if_matches_regexp和fail_if_not_matches_regexp用户可以定义一组正则表达式,用于验证HTTP返回内容是否符合或者不符合正则表达式的内容。

http_2xx_example:prober: httptimeout: 5shttp:method: GETfail_if_matches_regexp:- "Could not connect to database"fail_if_not_matches_regexp:- "Download the latest version here"

4.2 TCP(监控主机端口存活状态)

4.2.1 检测端口是否存活,在blackbox.yml 配置文件中使用的配置是tcp_connect模块

# vim /usr/local/blackbox_exporter/blackbox.yml# 添加以下内容tcp_connect:timeout: 5sprober: tcp

4.2.2 添加Prometheus配置

# vim /usr/local/prometheus/prometheus.yml# 添加以下内容- job_name: 'blackbox_check_ports'metrics_path: /probeparams:module: [tcp_connect]static_configs:- targets:- 10.10.50.24:9115- 10.10.50.24:9090relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#blackbox exporter 所在节点replacement: 10.10.50.24:9115

4.2.3 Prometheus热加载配置文件

# curl -X POST ​ ​http://10.10.50.24:9090/-/reload

4.2.4 访问Prometheus的UI查看下targets

浏览器输入http://10.10.50.24:9090

查询数据

4.3 ICMP 测试(主机探活)

4.3.1 通过 ping(icmp) 检测服务器的存活,在blackbox.yml使用的配置是icmp模块

# vim /usr/local/blackbox_exporter/blackbox.yml# 添加以下内容icmp:prober: icmptimeout: 5sicmp:ttl: 5

4.3.2 添加Prometheus配置 

# vim /usr/local/prometheus/prometheus.yml# 添加以下内容- job_name: 'blackbox_check_hosts'metrics_path: /probeparams:module: [icmp]static_configs:- targets:- 10.10.50.24- 10.10.50.23relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#blackbox exporter 所在节点replacement: 10.10.50.24:9115

4.3.3 Prometheus热加载配置文件

# curl -X POST ​ ​http://10.10.50.24:9090/-/reload

4.3.4 访问Prometheus的UI查看下targets

浏览器输入http://10.10.50.24:9090

查询数据

4.4 检测SSL证书过期时间

4.4.1 检测SSL证书,在blackbox.yml配置文件中使用的配置是模块

# vim /usr/local/blackbox_exporter/blackbox.yml# 添加以下内容http_2xx:prober: httphttp:method: GETpreferred_ip_protocol: "ipv4"valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [200,301,302,303]

4.4.2 添加Prometheus配置

 vim /usr/local/prometheus/prometheus.yml# 添加以下内容- job_name: 'blackbox_check_ssl'metrics_path: /probeparams:module: [http_2xx]static_configs:- targets:- https://www.yangxingzhen.com- https://www.i7ti.cnrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#blackbox exporter 所在节点replacement: 10.10.50.24:9115

4.4.3 Prometheus热加载配置文件

# curl -X POST ​ ​http://10.10.50.24:9090/-/reload

4.4.4 访问Prometheus的UI查看下targets

浏览器输入http://10.10.50.24:9090

查询数据

4.4.5 时间戳转换

这里以yangxingzhen.com的SSL证书为例,证书过期时间为2023年10月15日

# date -d "@1697327999"Sun Oct 15 07:59:59 CST 2023

4.5 相关告警规则

4.5.1 主机端口不通

probe_success{job="blackbox_check_ports"} == 0

4.5.2 主机ping不通

probe_success{job="blackbox_check_hosts"} == 0

4.5.3 非200HTTP状态码

probe_http_status_code{job="blackbox_http_2xx"} != 200

4.5.4 SSL证书还有30天过期

probe_ssl_earliest_cert_expiry{job="blackbox_check_ssl"} - time() < 86400 * 30
 

相关文章:

Prometheus监控实战之Blackbox_exporter黑盒监测

1 Blackbox_exporter应用场景 blackbox_exporter是Prometheus官方提供的exporter之一&#xff0c;可以提供HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。 1.1 HTTP 测试 定义 Request Header信息 判断 Http status / Http Respones Header / Http Body内容 1.2 TC…...

【蓝桥杯集训·每日一题】AcWing 1051. 最大的和

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴线性DP一、题目 1、原题链接 1051. 最大的和 2、题目描述 对于给定的整数序列 A{a1,a2,…,an}&#xff0c;找出两个不重合连续子段&#xff0c;使得两子段中所有数字的和最…...

【Unity工具,简单应用】Photon + PUN 2,做一个简单多人在线聊天室

【Unity工具&#xff0c;简单应用】Photon PUN 2&#xff0c;做一个简单多人聊天室前置知识&#xff0c;安装&#xff0c;及简单UI大厅聊天室简单同步较复杂同步自定义同步最终效果前置知识&#xff0c;安装&#xff0c;及简单UI 【Unity工具&#xff0c;简单学习】PUN 2&…...

程序员增加收入实战 让小伙伴们都加个鸡腿

文章目录前言1️⃣一、发外包平台&#x1f481;&#x1f3fb;‍♂️二、朋友介绍✍️三、打造自己的个人IP&#x1f44b;&#x1f3ff;四、混群拉单&#x1f933;&#x1f3ff;五、面试拉单&#x1f4bb;六、技术顾问&#x1f9b4;七、开发个人项目总结&#xff1a;前言 程序员…...

GPIO四种输入和四种输出模式

GPIO的结构图如下所示&#xff1a; 最右端为I/O引脚&#xff0c;左端的器件位于芯片内部。I/O引脚并联了两个用于保护的二极管。 输入模式 从I/O引脚进来就遇到了两个开关和电阻&#xff0c;与VDD相连的为上拉电阻&#xff0c;与VSS相连的为下拉电阻。再连接到TTL施密特触发…...

ChatGPT能够改变时代吗?一点点思考

都知道ChatGPT的出现对整个世界产生了剧烈的影响&#xff0c;前不久出的ChatGPT4更是在ChatGPT3.5的基础上展现了更强的功能。比如说同一个问题&#xff0c;ChatGPT3.5还是乱答的&#xff0c;ChatGPT4已经能给出正确解了。当然这只能说明技术是进步的。 虽然如此&#xff0c;很…...

Markdown如何使用详细教程

目录 一、Markdown 标题 二、Markdown 段落 三、Markdown 字体 四、Markdown 分隔线 五、Markdown 列表 六、Markdown 引用 七、Markdown 代码 八、Markdown 链接 九、Markdown 图片 十、Markdown 表格 前言 当前许多网站都广泛使用 Markdown 来撰写博客&#xff0c;…...

HTML5庆祝生日蛋糕烟花特效

HTML5庆祝生日蛋糕烟花特效 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>HTML5 Birthday Cake Fireworks</title><style>canvas {position: absolute;top: 0;left: 0;z-index: -1;}</style> </h…...

算法套路四——反转链表

算法套路四——反转链表 算法示例一&#xff1a;LeetCode206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 初始化pre为空&#xff0c;cur为头指针 pre指针&#xff1a;记录当前结点的前一个结点 cur指针&#xff1a;记录当…...

多线程 (六) wait和notify

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…...

React--》状态管理工具—Mobx的讲解与使用

目录 Mobx的讲解与使用 Mobx环境配置 Mobx的基本使用 Mobx计算属性的使用 Mobx监听属性的使用 Mobx处理异步的使用 Mobx的模块化 Mobx的讲解与使用 Mobx是一个可以和React良好配合的集中状态管理工具&#xff0c;mobx和react的关系相当于vuex和vue之间的关系&#xff0…...

有效的括号长按键入验证外星语词典字符的最短距离用栈实现队列

有效的括号来源&#xff1a;杭哥20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09;bool isValid(char * s) {int szstrlen(s);char stack[sz];int k0;for (int i0;i<sz;i){if (s[i]( || s[i][ || s[i]{){stack[k]s[i];}else{if (k0){return false;}else if (s[i]} &am…...

《前端开发者的进阶之路》

前端作为Web开发的重要领域之一&#xff0c;不断地发展和演变着。除了基本的HTML、CSS、JavaScript技能&#xff0c;前端开发者需要掌握更多的进阶知识才能应对不断变化的需求。本文将介绍一些前端的进阶知识&#xff0c;帮助前端开发者进一步提高自己的技能水平。1.框架和库在…...

为什么说网络安全是风口行业?是IT行业最后的红利?

前言 “没有网络安全就没有国家安全”。当前&#xff0c;网络安全已被提升到国家战略的高度&#xff0c;成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高&#xff0c;涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万&…...

使用shell 脚本,批量解压一批zip文件,解压后的文件放在以原zip文件名前10个字符的文件夹中的例子

#!/bin/bash for file in *.zip dofolder$(echo $file | cut -c 1-10)mkdir $folderunzip -q $file -d $folder doneecho "All zip files have been extracted." # 说明&#xff1a; # 1. for循环遍历当前目录下的所有zip文件 # 2. 使用cut命令提取zip文件名前10个字…...

01 | Msyql系统架构

目录MySQL系统架构连接器查询缓存分析器优化器执行器MySQL系统架构 大体来说&#xff0c;MySQL分为Server层和引擎层两部分。 Server层包含链接器、查询缓存、分析器、优化器和执行器&#xff0c;而引擎层负责的是数据的存储和读取&#xff0c;支持InnoDB、Myisam、Memory等多…...

Linux命令---设备管理

Linux setleds命令Linux setleds命令用来设定键盘上方三个 LED 的状态。在 Linux 中&#xff0c;每一个虚拟主控台都有独立的设定。语法setleds [-v] [-L] [-D] [-F] [{|-}num] [{|-}caps] [{|-}scroll]参数&#xff1a;-F&#xff1a;预设的选项&#xff0c;设定虚拟主控台的状…...

前端入门:HTML5+CSS3+JAAVASCRIPT

1、 初识HTML HTML:Hyper Text Markup Language(超文本标记语言) 。 超文本包括&#xff1a;文字、图片、音频、视频、动画等。 1.1、W3C标准 1.2、HTML基本结构 示例&#xff1a; <!-- DOCTYPE:告诉浏览器&#xff0c;我们要使用什么规划&#xff0c;这里是HTML --> …...

【头歌实验】课外作业一:开通ECS及使用Linux命令

文章目录一、完成下列实验并截图二、简要回答“课堂考核”内容三、在头歌、华为云或阿里云官网上&#xff0c;找出自己的课外学习资源&#xff0c;制定小组的课程学习计划、专业学习计划。四、习题1.10一、完成下列实验并截图 1、实验《ECS云服务器新手上路》 https://develo…...

CMSIS-RTOS2 RTX5移植到GD32L233

1、CMSIS-RTOS2是什么&#xff1f; 关于CMSIS-RTOS2的官方描述如下&#xff1a; CMSIS-RTOS v2 &#xff08;CMSIS-RTOS2&#xff09; 为基于 Arm Cortex 处理器的设备提供通用 RTOS 接口。它为需要RTOS功能的软件组件提供了一个标准化的API&#xff0c;因此为用户和软件行业带…...

[网络原理] 网络中的基本概念

人生,本就是苦乐参半,这样的生活才是丰富多彩. 文章目录前言1. IP地址2. 端口号3. 协议4. 五元组5. 协议分层6. OSI七层模型7. TCP/IP协议8. 封装和分用9. 客户端与服务端10. 请求与响应前言 本章开始,我们开启网络部分的知识大门. 1. IP地址 1.定义: IP地址主要用于表示网络…...

BeanPostProcessor原理分析

文章目录一、BeanPostProcessor的作用1. 源码2. 使用案例二、Spring生命周期中的BeanPostProcessor三、BeanPostProcessor对PostConstruct的支持四、BeanPostProcessor中的顺序性五、总结一、BeanPostProcessor的作用 BeanPostProcessor提供了初始化前后回调的方法&#xff0c;…...

人工智能和网络安全,应该如何选择?

随着数字时代的到来&#xff0c;网络安全和人工智能成了科技创新产业的重要组成部分。也逐渐成了大多数人心中热门的行业选择。那么该如何抉择呢&#xff1f; 首先我们来了解下人工智能的发展前景&#xff1a; ​ 如今&#xff0c;人工智能技术无论是在核心技术方面&#xff0…...

Flink预加载分区维表,实时更新配置信息

当前我们的业务场景&#xff0c;是基于dataStream代码&#xff0c; 维表数据量很大&#xff0c; 实时性要求很高&#xff0c;所以采用预加载分区维表模式&#xff0c; kafka广播流实时更新配置。 实现方案 1&#xff1a;job初始化时 每个分区open 只加载自己那部分的配置&…...

大数据现在找工作难么

大数据行业工作好找还是难找不是光靠嘴说出来的结合实际&#xff0c;看看市场上的招聘需求和岗位要求就大致知道了 要想符合企业用人规范&#xff0c;学历&#xff0c;工作经验&#xff0c;掌握技能都是非常重要的~ 先来看几个招聘网站的报告数据&#xff1a; Boss直聘发布的…...

【Linux】学会这些基本指令来上手Linux吧

前言上篇文章介绍了一些常用的指令&#xff0c;这篇文章再来介绍一下Linux必须学会的指令。一.时间相关的指令ate显示date 指定格式显示时间&#xff1a; date %Y:%m:%d date 用法&#xff1a;date [OPTION]... [FORMAT]1.在显示方面&#xff0c;使用者可以设定欲显示的格式&am…...

【沐风老师】3DMAX交通流插件TrafficFlow使用方法详解

TrafficFlow交通流插件&#xff0c;模拟生成车流、人流动画。 【版本要求】 3dMax 2008及更高版本 【安装方法】 无需安装直接拖动插件脚本文件到3dMax视口中打开。 【快速开始】 1.创建车辆对象和行车路径。 2.打开TrafficFlow插件&#xff0c;先选择“车辆”对象&#xff0…...

c#实现视频的批量剪辑

篇首&#xff0c;完全没有技术含量的帖子&#xff0c;高手略过&#xff0c;只为十几年后重新捡起的我爱好玩玩。。。 起因&#xff0c;一个朋友说他下载了很多短视频&#xff0c;但只需要要其中的一小截&#xff0c;去头掐尾&#xff0c;在软件里搞来搞去太麻烦&#xff0c;让…...

小白怎么系统的自学计算机科学和黑客技术?

我把csdn上有关自学网络安全、零基础入门网络安全的回答大致都浏览了一遍&#xff0c;最大的感受就是“太复杂”&#xff0c;新手看了之后只会更迷茫&#xff0c;还是不知道如何去做&#xff0c;所以站在新手的角度去写回答&#xff0c;应该把回答写的简单易懂&#xff0c;“傻…...

scheduler 的使用实验对比和总结(PyTorch)

这篇文章是在完成 HW02 的过程中所产生的&#xff0c;是关于各 scheduler &#xff08;ReduceLROnPlateau()&#xff0c;CosineAnnealingLR()&#xff0c;CosineAnnealingWarmRestarts()&#xff09;使用的对比实验。 起因是为了在 Kaggle 上跑出更高的成绩&#xff0c;但结果确…...