监控架构-Prometheus-普罗米修斯
目录
1. Prometheus概述
2. Prometheus vs Zabbix
3. Prometheus极速上手指南
3.1 时间同步
3.2 部署Prometheus
3.3 启动Prometheus
3.4 Prometheus监控架构
3.5 补充
配置页面
简单过滤
查看数据
查看图形
http://prometheus.oldboylinux.cn:9090/metrics显示所有键值
4. Prometheus配置
4.1 服务端命令行选项
4.2 配置文件
5. Prometheus的exporter
5.1 概述
5.2 部署node_exporter
5.3 配置prometheus服务端
5.4 检查结果
5.5 prometheus动态配置文件
6. Prometheus过滤语句
6.1 基本过滤
6.2 包含条件的过滤
过滤指定主机的数据
过滤出所有主机非idle的指标.
6.3 小结
6.4 常用函数
rate函数
sum求和
count计数
其他函数
6.5 grafana中使用的 PromQL语句
6.6 复杂语句
7. Pushgateway
7.1 使用流程
7.2 Pushgateway部署
修改服务端配置文件
检查是否添加成功
7.3 书写脚本与提交数据
提交个测试数据
书写脚本
检查结果
脚本写入定时任务
8. 进入Grafana
8.1 概述
8.2 使用流程
添加数据源(别忘记hosts解析)
解决仪表盘没有数据
数据不准
导入第三方仪表盘
9. Altermanager 告警
9.1 Alertmanager部署
9.2 Alertmanager配置
9.3 Prometheus配置
9.4 prometheus告警规则文件
9.5 检查规则
10. 容器监控
10.1 检查
10.2 接入grafana
1. Prometheus概述
1. Prometheus监控架构。使用Golang语言实现。使用简单,学习门槛较高。
2. Prometheus一般与Grafana配合。
2. Prometheus vs Zabbix
指标 | Prometheus | Zabbix |
---|---|---|
语言 | Golang(Go) | PHP,C,GO |
部署 | 二进制,解压即用 | yum,编译,数据库,php依赖 |
是否容易掌握 | 门槛较高 | 容易使用 |
监控方式 | 通过各种exporter,监控一般都是基于http | 各种模板,客户端,自定义监控,各种协议 |
应用场景 | 监控服务,容器,k8s | 监控系统底层,硬件,系统,网络 |
3. Prometheus极速上手指南
角色 | 主机名 | ip |
---|---|---|
prometheus服务端 | prometheus_server_xzb | 10.0.0.65/172.16.1.65 |
grafana | grafana | 10.0.0.66/172.16.1.66 |
docker01 | docker01 | 10.0.0.81/172.16.1.81 |
3.1 时间同步
3.2 部署Prometheus
##创建目录
mkdir -p /app/##解压
tar xf prometheus-2.33.3.linux-amd64.tar.gz -C /app/##创建软连接
ln -s /app/prometheus-2.33.3.linux-amd64/ /app/prometheus##检查版本
/app/prometheus/prometheus --version
目录说明 | |
---|---|
prometheus | prometheus服务端的命令 |
prometheus.yml | 配置文件 |
3.3 启动Prometheus
##进入目录
cd /app/prometheus##前台启动
./prometheus##查看端口 有9090端口便是启动成功
ss -lntup ##浏览器解析访问
10.0.0.65 prometheus.oldboylinux.cn
3.4 Prometheus监控架构
3.5 补充
注意事项:
prometheus默认读取当前目录下面的prometheus.yml配置文件。
后台启动:
nohup /app/prometheus/prometheus &>> /var/log/prometheus.log &
##systemctl管理
vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network.target[Service]
Type=simple
[Unit]
Description=Prometheus Server
After=network.target[Service]
Type=simple
ExecStart=/app/prometheus/prometheus --config.file=/app/prometheus/prometheus.yml --web.listen-address=0.0.0.0:9090 --web.max-connections=512
KillMode=process[Install]
WantedBy=multi-user.targetKillMode=process[Install]
WantedBy=multi-user.target##重启daemon-reload
systemctl daemon-reload ##关闭prometheus
pkill prometheus##开机自启
systemctl enable prometheus.service ##启动
systemctl start prometheus.service ##查看端口
ss -lntup##查看日志
journalctl -f -u prometheus.service
配置页面
简单过滤
查看数据
查看图形
http://prometheus.oldboylinux.cn:9090/metrics显示所有键值
http://prometheus.oldboylinux.cn:9090/metrics
4. Prometheus配置
4.1 服务端命令行选项
prometheus命令行核心选项 | 说明 |
---|---|
--config.file="prometheus.yml" | 指定配置文件,默认是当前目录下在的prometheus.yml |
--web.listen-address="0.0.0.0:9090" | 前端web页面,端口和监听的地址。如果想增加访问认证可以用ngx。 |
--web.max-connections=512 | 并发连接数 |
--storage.tsdb.path="data/" | 指定tsdb数据存放目录 |
--log.level=info | 日志级别。prometheus日志默认输出到屏幕(标准输出) |
--log.format=logfmt | 日志格式。logfmt默认格式。 json格式(日志收集的时候使用) |
4.2 配置文件
##cat prometheus.yml
# my global config
##全局定义部分
global:scrape_interval: 15s ##这个间隔表示,prometheus采集数据的间隔evaluation_interval: 15s #执行对应的rules(规则)间隔,一般报警规则##采集数据的超时时间,默认是10秒#scrape_timeout is set to the global default (10s).
# Alertmanager configuration 用于配置警告信息,alertmanager配置。
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093.
rule_files:# - "first_rules.yml"# - "second_rules.yml"
scrape_configs:##数据采集的配置(客户端)- job_name: "prometheus-server-xzb" ##任务名字.体现采集哪些机器,哪些指标# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:##静态配置文件,直接指定被采集的对象. 修改后要重启- targets: ["localhost:9090"]file_sd_configs:##动态配置文件,动态读取文件内容,然后进行采集,实时监控
5. Prometheus的exporter
5.1 概述
exporter | 说明 |
---|---|
node_exporter | 获取节点基础信息(系统监控) |
服务的exporter | 监控指定服务的 |
5.2 部署node_exporter
##创建目录
mkdir -p /app/exports/##解压到指定目录
tar xf node_exporter-1.3.1.linux-amd64.tar.gz -C /app/exports/##创建软连接
ln -s /app/exports/node_exporter-1.3.1.linux-amd64/node_exporter /bin/##启动
node_exporter &##检查端口和进程 9100 端口
ss -lntup##syatemctl配置
vim /usr/lib/systemd/system/prometheus_node.service
[Unit]
Description=prometheus node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/bin/node_exporter
KillMode=process
[Install]
WantedBy=multi-user.target##重启daemon
systemctl restart daemon-reload
5.3 配置prometheus服务端
## 添加node-exports节点
cat /app/prometheus/prometheus.yml
global:scrape_interval: 15s evaluation_interval: 15s
alerting:alertmanagers:- static_configs:- targets:
rule_files:
scrape_configs:- job_name: "prometheus-server-xzb"static_configs:- targets: ["localhost:9090"]- job_name: "prometheus-all-node-exports"static_configs:- targets: - "localhost:9100"- "prometheus.oldboylinux.cn:9100"
5.4 检查结果
5.5 prometheus动态配置文件
1. 获取的exporter域名+端口,写入配置文件,prometheus可以定时读取并加入到prometheus中。
2. 用于解决,大量主机添加、删除的操作
##增加动态读取
vim /app/prometheus/prometheus.yml
...
...
scrape_configs:- job_name: "prometheus-server-xzb"static_configs:- targets: ["localhost:9090"]- job_name: "prometheus-all-node-exports"static_configs:- targets: - "localhost:9100"- "prometheus.oldboylinux.cn:9100"file_sd_configs: ##动态读取与加载配置文件。- files: ##指定要加载的配置文件- /app/prometheus/discovery_node_exporter.yml refresh_interval: 5s ##读取间隔##动态加载的配置文件格式
cat discovery_node_exporter.yml
[{ "targets": [ "localhost:9100","prometheus.oldboylinux.cn:9100"]}
]
6. Prometheus过滤语句
6.1 基本过滤
1. 直接写上prometheus的键值(key)
2. 比如通过node_exporter获取所有主机可用内存输入node_memory_MemFree_bytes
3. 过滤负载: node_load1
4. 查看所有键值
6.2 包含条件的过滤
过滤指定主机的数据
node_cpu_seconds_total{instance="prometheus.oldboylinux.cn:9100"}
格式说明,过滤出指定的内容,需要使用{key(属性)="想要的值"}
过滤出所有主机非idle的指标.
node_cpu_seconds_total{mode!="idle"}
同时满足上面的条件:
node_cpu_seconds_total{mode!="idle",instance="prometheus.oldboylinux.cn:9100"}
6.3 小结
prometheus过滤中的符号 | 含义 |
---|---|
= | 等于 |
!= | 不等于 |
=~ | 支持正则,匹配 |
!~ | 支持正则,不匹配 |
1. 推荐先找出你要的键值,观察键值里面的属性
2. 过滤格式: node_cpu_seconds_total{mode!="idle"}
键值{属性=“值”}
6.4 常用函数
rate函数
计算范围向量中时间序列的每秒平均增长率。单调性的中断(例如由于目标重新启动而导致的计数器重置)会自动调 整。此外,计算推断到时间范围的末端,允许错过刮擦或刮擦周期与该范围的时间段的不完美对齐。
rate(http_requests_total{job="api-server"}[5m])
rate只能与计数器一起使用。它最适合警报和缓慢移动计数器的图形。
##过去一分钟内,系统每秒花费的平均CPU时间
node_cpu_seconds_total[1m]##排除idle
node_cpu_seconds_total{mode!="idle"}[1m]## rate []一般配合函数实现统计指定范围的内容.
rate(node_cpu_seconds_total{mode!="idle"}[1m])
sum求和
计算总和
count计数
其他函数
Query functions | Prometheushttps://prometheus.io/docs/prometheus/latest/querying/functions/
6.5 grafana中使用的 PromQL语句
## 可用内存使用率=用了的/总共的 * 100
((node_memory_MemTotal_bytes{instance="prometheus.oldboylinux.cn:9100", job="prometheus-all-node-exports"}-node_memory_MemFree_bytes{instance="prometheus.oldboylinux.cn:9100", job="prometheus-all-node-exports"})/node_memory_MemTotal_bytes{instance="prometheus.oldboylinux.cn:9100", job="prometheus-all-node-exports"})*100## 内存总大小- 剩余内存 = 用了多少
6.6 复杂语句
##计算内存使用率
(总内存-剩余)/总共
= 可用/总共
((node_memory_MemTotal_bytes-node_memory_MemFree_bytes)/node_memory_MemTotal_bytes)*100
7. Pushgateway
7.1 使用流程
1. 部署,启动pushgateway,服务端ip/域名+端口,写入配置(动态、静态)
2. 书写脚本获取你要的信息,把信息发送到pushgateway中。
7.2 Pushgateway部署
##创建目录
mkdir -p /app/pushgateway## 解压到指定目录
tar xf pushgateway-1.4.1.linux-amd64.tar.gz -C /app/pushgateway/## 创建软连接
ln -s /app/pushgateway/pushgateway-1.4.1.linux-amd64/pushgateway /bin/## 书写systemctl配置
cat /usr/lib/systemd/system/pushgateway.service
[Unit]
Description=prometheus pushgateway
After=network.target
[Service]
Type=simple
ExecStart=/bin/pushgateway
KillMode=process
[Install]
WantedBy=multi-user.target## 重启
systemctl daemon-reload## 自启动
systemctl enable pushgateway.service ##启动
systemctl start pushgateway.service ##检查进程和端口 端口9091
修改服务端配置文件
##修改服务端配置文件
cat /app/prometheus/prometheus.yml
...
...
scrape_configs:- job_name: "prometheus-server-xzb"static_configs:- targets: ["localhost:9090"]- job_name: "prometheus-all-node-exports"static_configs:- targets: - "localhost:9100"- "prometheus.oldboylinux.cn:9100"file_sd_configs:- files:- /app/prometheus/discovery_node_exporter.ymlrefresh_interval: 5s- job_name: "prometheus-pushgateway"static_configs:- targets: - "localhost:9091"
检查是否添加成功
7.3 书写脚本与提交数据
提交个测试数据
##检查cpu核心数
cat /server/scripts/diy_push_cpu_cores.sh
#!bin/bash
#1.vars
cores=`lscpu |grep 'CPU(s)'|awk 'NR==1 {print $2}'`
job="pushgateway_metrics"
ins="prometheus.oldboylinux.cn:9100"
pushgw="http://prometheus.oldboylinux.cn:9091"#2.
echo "cpu_cores $cores"| \
curl --data-binary @- ${pushgw}/metrics/job/${job}/instance/${ins}##写法 ##其中分组名和实例名可以自己设置
curl data-binary @- http://prometheus.oldboylinux.cn:9091/metrics/job/分组名/instance/实例名
书写脚本
#!/bin/basih
##1.vars
job_name="pushgateway_metrics"
ins="prometheus.oldboylinux.cn:9100"
pushgw="http://prometheus.oldboylinux.cn:9091"#2.取值
disk_sda_root_total=`df |awk '$NR=="/" {print $2}'`
disk_sda_root_free=`df |awk '$NR=="/" {print $4}'`
disk_sda_root_used=`df |awk '$NR=="/" {print $3}'`##想pushgateway发送请求
echo "disk_sda_total ${disk_sda_root_total}"| \
curl --data-binary @- ${pushgw}/metrics/job/${job_name}/instance/${ins}
echo "disk_sda_free ${disk_sda_root_free}"| \
curl --data-binary @- ${pushgw}/metrics/job/${job_name}/instance/${ins}
echo "disk_sda_used ${disk_sda_root_used}"| \
curl --data-binary @- ${pushgw}/metrics/job/${job_name}/instance/${ins}
检查结果
脚本写入定时任务
##同步时间
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com &>/dev/null
##prometheus pushgateway
* * * * * sh /server/scripts/pushgateway-disk-usage.sh &>/dev/null
8. 进入Grafana
8.1 概述
1. prometheus webui一般用于调试PromQL语句(查询语句)
2. 展示交给Grafana。本质:Grafana执行PromQL语句(查询语句),然后通过Grafana进行展示
参考文章:
监控架构- Grafana-监控大屏-CSDN博客
8.2 使用流程
添加数据源(别忘记hosts解析)
解决仪表盘没有数据
##修改的查询语句主要关注,job部分和instance。
(time()-process_start_time_seconds{instance="prometheus.oldboylinux.cn:9100",job="prometheus-all-node-exports"})
数据不准
(time()-node_boot_time_seconds{instance="prometheus.oldboylinux.cn:9100", job="prometheus-all-node-exports"})##原因:process_start_time_seconds获取的是Prometheus服务端运行多久(进程)
导入第三方仪表盘
9. Altermanager 告警
9.1 Alertmanager部署
##创建目录
mkdir -p /app/altermanager/##解压到指定目录
tar xf alertmanager-0.24.0.linux-amd64.tar.gz -C /app/altermanager/## 创建软连接
ln -s /app/altermanager/alertmanager-0.24.0.linux-amd64/alertmanager /bin/## systemectl配置书写
[Unit]
Description=prometheus pushgateway
After=network.target
[Service]
Type=simple
ExecStart=/bin/alertmanager --config.file=/app/altermanager/alertmanager-0.24.0.linux-amd64/alertmanager.yml --web.listen-address=0.0.0.0:9093
KillMode=process
[Install]
WantedBy=multi-user.target##检查端口
ss -lntup|grep alert
9.2 Alertmanager配置
##alertmanager配置详解
global: ##全局定义部分。配置发件人信息.resolve_timeout: ##5m dns解析的超时时间.smtp_from: ##发件人smtp_smarthost: ##smtp服务器smtp_hello: ##qq.com 163.com 邮箱厂商smtp_auth_username: ##邮箱名字smtp_auth_password: ##授权码smtp_require_tls:falseroute: ##配置收件人间隔时间,收件方式group_by: ['alertname'] group_wait: 30sgroup_interval: 5mrepeat_interval: 1h ##重复告警时间. eg。11:00 发送了1次告警,12:00 再发送1次receiver: 'email' ##采取什么方式接受告警.
##完整的配置文件
global:resolve_timeout: 5msmtp_from: 'xing775288271@163.com'smtp_smarthost: 'smtp.163.com:465'smtp_hello: '163.com'smtp_auth_username: 'xing775288271@163.com'smtp_auth_password: 'THqpcgCf5JqBDmVZ'smtp_require_tls: false
route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'email'
receivers:- name: 'email'email_configs:- to: '775288271@qq.com'send_resolved: true
inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
9.3 Prometheus配置
##prometheus服务端配置文件
cat /app/prometheus/prometheus.yml
global:scrape_interval: 15s evaluation_interval: 15s
alerting:alertmanagers:- static_configs:- targets:- "prometheus.oldboylinux.cn:9093"
rule_files: - "/app/prometheus/prometheus_alert_rules.yml"
scrape_configs:- job_name: "prometheus-server-xzb"static_configs:- targets: ["localhost:9090"]
...
...
9.4 prometheus告警规则文件
##prometheus告警规则文件
vim /app/prometheus/prometheus_alert_rules.yml
groups:- name: check_node_statusrules:- alert: check_node_is_upexpr: up{instance="prometheus.oldboylinux.cn:9100", job="prometheus-all-node-exports"}==0for: 15slabels:severity: 1team: nodeannotations:summary: "{{ $labels.instance }} 节点停止运行超过15s!!!"
9.5 检查规则
10. 容器监控
##监控容器
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg google/cadvisor:latest##prometheus服务端的配置文件
vim /app/prometheus/prometheus.yml
...
...- job_name: "prometheus-pushgateway"static_configs:- targets: - "localhost:9091"- job_name: "cadvisor-docker"static_configs: - targets:- "docker01.oldboylinxu.cn:8080"##hosts解析##重启prometheus
10.1 检查
10.2 接入grafana
grafana id号:10619
相关文章:

监控架构-Prometheus-普罗米修斯
目录 1. Prometheus概述 2. Prometheus vs Zabbix 3. Prometheus极速上手指南 3.1 时间同步 3.2 部署Prometheus 3.3 启动Prometheus 3.4 Prometheus监控架构 3.5 补充 配置页面 简单过滤 查看数据 查看图形 http://prometheus.oldboylinux.cn:9090/metrics显示…...

Kylin Server V10 下自动安装并配置Kafka
Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、…...

windows环境下cmd窗口打开就进入到对应目录,一般人都不知道~
前言 很久以前,我还在上一家公司的时候,有一次我看到我同事打开cmd窗口的方式,瞬间把我惊呆了。原来他打开cmd窗口的方式,不是一般的在开始里面输入cmd,然后打开cmd窗口。而是另外一种方式。 我这个同事是个技术控&a…...

企微SCRM价格解析及其性价比分析
内容概要 在如今的数字化时代,企业对于客户关系管理的需求日益增长,而企微SCRM(Social Customer Relationship Management)作为一款新兴的客户管理工具,正好满足了这一需求。本文旨在为大家深入解析企微SCRM的价格体系…...
【SpringMVC】记录一次Bug——mvc:resources设置静态资源不过滤导致WEB-INF下的资源无法访问
SpringMVC 记录一次bug 其实都是小毛病,但是为了以后再出毛病,记录一下: mvc:resources设置静态资源不过滤问题 SpringMVC中配置的核心Servlet——DispatcherServlet,为了可以拦截到所有的请求(JSP页面除外…...

【React】React 生命周期完全指南
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 React 生命周期完全指南一、生命周期概述二、生命周期的三个阶段2.1 挂载阶段&a…...

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集
命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务,用于自动识别和分类文本中的实体,例如人物、位置、组织等。尽管它很重要,但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…...

【C++练习】二进制到十进制的转换器
题目:二进制到十进制的转换器 描述 编写一个程序,将用户输入的8位二进制数转换成对应的十进制数并输出。如果用户输入的二进制数不是8位,则程序应提示用户输入无效,并终止运行。 要求 程序应首先提示用户输入一个8位二进制数。…...
Vue功能菜单的异步加载、动态渲染
实际的Vue应用中,常常需要提供功能菜单,例如:文件下载、用户注册、数据采集、信息查询等等。每个功能菜单项,对应某个.vue组件。下面的代码,提供了一种独特的异步加载、动态渲染功能菜单的构建方法: <s…...
云技术基础学习(一)
内容预览 ≧∀≦ゞ 声明导语云技术历史 云服务概述云服务商与部署模式1. 公有云服务商2. 私有云部署3. 混合云模式 云服务分类1. 基础设施即服务(IaaS)2. 平台即服务(PaaS)3. 软件即服务(SaaS) 云架构云架构…...

【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美
文章目录 C 位运算详解:基础题解与思维分析前言第一章:位运算基础应用1.1 判断字符是否唯一(easy)解法(位图的思想)C 代码实现易错点提示时间复杂度和空间复杂度 1.2 丢失的数字(easy࿰…...

MFC工控项目实例二十九主对话框调用子对话框设定参数值
在主对话框调用子对话框设定参数值,使用theApp变量实现。 子对话框各参数变量 CString m_strTypeName; CString m_strBrand; CString m_strRemark; double m_edit_min; double m_edit_max; double m_edit_time2; double …...

Java | Leetcode Java题解之第546题移除盒子
题目: 题解: class Solution {int[][][] dp;public int removeBoxes(int[] boxes) {int length boxes.length;dp new int[length][length][length];return calculatePoints(boxes, 0, length - 1, 0);}public int calculatePoints(int[] boxes, int l…...
【前端】Svelte:响应性声明
Svelte 的响应性声明机制简化了动态更新 UI 的过程,让开发者不需要手动追踪数据变化。通过 $ 前缀与响应式声明语法,Svelte 能够自动追踪依赖关系,实现数据变化时的自动重新渲染。在本教程中,我们将详细探讨 Svelte 的响应性声明机…...
PostgreSQL 性能优化全方位指南:深度提升数据库效率
PostgreSQL 性能优化全方位指南:深度提升数据库效率 别忘了请点个赞收藏关注支持一下博主喵!!! 在现代互联网应用中,数据库性能优化是系统优化中至关重要的一环,尤其对于数据密集型和高并发的应用而言&am…...
Flutter鸿蒙next 使用 BLoC 模式进行状态管理详解
1. 引言 在 Flutter 中,随着应用规模的扩大,管理应用中的状态变得越来越复杂。为了处理这种复杂性,许多开发者选择使用不同的状态管理方案。其中,BLoC(Business Logic Component)模式作为一种流行的状态管…...

Gen-RecSys——一个通过生成和大规模语言模型发展起来的推荐系统
概述 生成模型的进步对推荐系统的发展产生了重大影响。传统的推荐系统是 “狭隘的专家”,只能捕捉特定领域内的用户偏好和项目特征,而现在生成模型增强了这些系统的功能,据报道,其性能优于传统方法。这些模型为推荐的概念和实施带…...
Android 重新定义一个广播修改系统时间,避免系统时间混乱
有时候,搞不懂为什么手机设备无法准确定义系统时间,出现混乱或显示与实际不符,需要重置或重新设定一次才行,也是真的够无语的!! vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.…...
第3章:角色扮演提示-Claude应用开发教程
更多教程,请访问claude应用开发教程 设置 运行以下设置单元以加载您的 API 密钥并建立 get_completion 辅助函数。 !pip install anthropic# Import pythons built-in regular expression library import re import anthropic# Retrieve the API_KEY & MODEL…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
1.问题描述: 人脸活体检测页面会有声音提示,如何控制声音开关? 解决方案: 活体检测暂无声音控制开关,但可通过其他能力控制系统音量,从而控制音量。 活体检测页面固定音频流设置的是8(无障碍…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...