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

Grafana 中文入门教程 | 构建你的第一个仪表盘

 

在大厂工作久了,时常对一些工具的存在觉得理所当然。

比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存?点下鼠标就可以要到几十个配置好的 Redis 结点。

最省心的是,这些工具都已经根据工作流配置好了:鉴权、优化、网络连接等等通通不用你操心。

但一切要自己撸起袖子干的时候,开始发现各种踩坑。拿 Grafana 和服务监控来说:

  1. 服务监控到底咋配置?怎样保证数据安全?
  2. 保证健康的服务到底应该监控些什么?
  3. 配置好后的仪表盘为啥消失了?
  4. 查询 Query 又该咋写?

等等问题迎面而来。

中文世界里关于 Grafana 的教程少得令人发指,于是在卡拉搜索搭建服务监控的期间,特意记录了一下搭建的过程,写下了这篇详细的教程。

这篇文章(包括之后的一系列文章)里,我通过还热乎的经验介绍下我们是怎样一步步给卡拉搜索[1]配好 Grafana,来监控我们的搜索服务的。我们详细介绍怎样配置权限,具体运维监控的准则保证服务健康,以及用配套的代码让你搭起来第一个仪表盘。同时我们也会介绍一些在卡拉搜索的系统监控应用实践。

我保证这篇教程不会像 99% 的 CSDN 文章一样只是复制粘贴一些简单步骤,而是更多从原理出发,配合实践,一步步让你开始用服务监控,并从中受益。

如果你喜欢我的文章的话,请链接回来,分享给朋友或关注我们的公众号(HiXieke)。

在卡拉搜索,我们用 Grafana 监控所有的服务状态,从引擎到索引。完善的监控帮助我们实时了解卡拉的搜索延迟,慢搜索,Docker 状态等等。如果你对搜索引擎、数据库搜索、App 内搜索感兴趣,也欢迎通过博客[2]Demo[3] 进一步了解或试用卡拉搜索

本文的例子中,我们用的是 Prometheus(普罗米修斯时序数据库)作为时序数据库。但实际上你可以用任何 Grafana 支持的数据源,只需要稍微替换一下配置即可(文中会讲)

本文的代码放在 GitHub 上,请参考:Grafana 教程代码[4]

1. Grafana 是什么

开始前首先要问一个问题,Grafana 到底是什么。

Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。

Grafana 不对数据源作假设,它支持以下各种数据,也就是说如果你的数据源是以下任意一种,它都可以帮助生成仪表。同时在市面上,如果 Grafana 称第二,那么应该没有敢称第一的仪表可视化工具了。因此,如果你搞定了 Grafana,它几乎是一个会陪伴你到各个公司的一件称心应手的兵器。

Grafana 支持的数据源

  • Prometheus 本文中的例子,你没听过也没关系不影响阅读,把它想象成带时间戳的 MySQL 就好
  • Graphite
  • OpenTSDB
  • InfluxDB
  • MySQL/PostgreSQL
  • Microsoft SQL Server
  • 等等

2. 什么情况下会用到 Grafana 或者监控仪表盘

通常来说,对于一个运行时的复杂系统,你是不太可能在运行时一边检查代码一边调试的。因此,你需要在各种关键点加上监控。

用开车作为例子:车子本身是一个极其复杂的系统,而当你的车在高速上以 120 公里的速度狂奔时出现了噪音,你是不可能这时候边开车边打开发动机盖子来查原因的。通常来说,好一点的车会有内置电脑,在车子出问题时,告诉你左边轮胎胎压有问题,或是发动机缺水了之类。而这些检测,就是系统监控的一个例子。

对于驾驶员来说,他们开车时只关心几个指标:

  1. 我的位置是哪里,在路中间么(当然这个无法通过监控系统实现,得看路)
  2. 我的速度是多少 - 速度仪表盘
  3. 我的油、发动机水温等等关键指标是多少 - 其它仪表盘

通过仪表盘,你不一定能清楚地了解车子出问题的具体原因,但至少可以给你一个大概的方向。比如说,如果水温很高时出现了问题,你大概率可以尝试加点水降温来尝试是否解决问题。

把上面的车换成计算机系统或者一个软件系统也是一样:仪表盘就是你的速度表和水温表,通过这些表盘你可以实时了解你的系统运行情况。

仪表盘应用极广,我能想到的一些例子:

  1. 阿里在双十一控制室用了监控仪表盘,因此所有双十一的新闻基本上都可以看到这个仪表盘
  2. 各酷炫公司大厅里常常放一个仪表盘来展示实力(用户数啦、营收啦之类)
  3. 你的 PC 上的资源管理器、Mac 上的 Activity Monitor 都是某种意义上的仪表盘

用一个卡拉搜索的实践作例子:

我们希望卡拉搜索能提供游戏级的搜索性能,比 Elastic Search 还快十倍。那么这就要求我们 99% 的搜索结果在 5-10 毫秒内要完成。因此,我们就需要添加这么一个仪表盘,能实时知道用户搜索的延迟,并且当搜索延迟超过 10 毫秒时通知到我们。

综上,在任何需要监控系统运行状况的地方就大概率会用到仪表盘,而用到仪表盘的时候就可以用 Grafana (不管你用什么语言)

3. 安装和配置 Grafana

为了简化各种系统不一致的乱七八糟问题,我们用 Docker 来安装 Grafana。(如果还没有安装 Docker 可以参考我们的教程 [如何安装 Docker](/tutorials/how-to-install-and-use-docker-on-ubuntu)。

Docker 的配置文件如下,就算你从来没用过 docker 也不用操心,我会在下文里一行一行讲明白。请不要复制粘贴代码,直接到本文的 GitHub 页 clone 代码即可,我会保证 GitHub 上的代码处理最新状态:https://github.com/Kalasearch/grafana-tutorial[5]

代码语言:javascript
代码运行次数:0
 
运行
AI代码解释
 
 
version: '3.4'
services:prometheus:image: prom/prometheuscontainer_name: prometheushostname: prometheusports:- 9090:9090volumes:- ./prometheus.yml:/etc/prometheus/prometheus.ymlprometheus-exporter:image: prom/node-exportercontainer_name: prometheus-exporterhostname: prometheus-exporterports:- 9100:9100grafana:image: grafana/grafanacontainer_name: grafanahostname: grafanaports:- 3000:3000volumes:- ./grafana.ini:/etc/grafana/grafana.ini

在这里我们启动了三个服务

  • Prometheus 普罗米修斯时序数据库,用来存储和查询你的监控数据
  • Promethues-exporter 一个模拟数据源,用来监控你本机的状态,比如有几个 CPU,CPU 的负载之类
  • Grafana 本尊

在 clone 了代码之后,在你的本地运行 docker-compose up,应该会看到类似:

那么就说明服务已经跑起来了。注意,在之后的所有步骤中,你的 docker 应该处于运行状态。

在跑起来服务之后,到你的浏览器中,复制 http://localhost:3000 应该就可以看到 Grafana 跑起来的初始登录界面。初始的用户名是 admin,密码也是 admin。输入之后,会要求你改密码

然后就可以进入 Grafana 的主界面了:

到这里,你的 Grafana 就已经搭起来了。注意到 Docker 的配置文件中我们创建了三个服务,这三个服务之间分别有什么关系呢?

或者说,Grafana 和时序数据库,数据源之间有什么关系呢?请看下文 Grafana 工作原理

4. Grfana 工作原理

上面说到,Grafana 是一个仪表盘,而仪表盘必然是用来显示数据的。

Grafana 本身并不负责数据层,它只提供了通用的接口,让底层的数据库可以把数据给它。而我们起的另一个服务,叫 Prometheus (中文名普罗米修斯数据库)则是负责存储和查询数据的。

也就是说,Grafana 每次要展现一个仪表盘的时候,会向 Prometheus 发送一个查询请求。

那么配置里的另一个服务 Prometheus-exporter 又是什么呢?

这个就是你真正监测的数据来源了,Prometheus-exporter 这个服务,会查询你的本地电脑的信息,比如内存还有多少、CPU 负载之类,然后将数据导出至普罗米修斯数据库。

在真实世界中,你的目的是监控你自己的服务,比如你的 Web 服务器,你的数据库之类。

那么你就需要在你自己的服务器中把数据发送给普罗米修斯数据库。当然,你完全可以把数据发送给 MySQL (Grafana 也支持),但普罗米修斯几乎是标配的时序数据库,强烈建议你用。

一张图[6]来说明它们之间的关系:

这里,最左边的 Docker 服务会将服务的数据发送给中间的普罗米修斯(对应上文的 Prometheus-exporter),而最右边的 Grafana 会查询中间的普罗米修斯,来展示仪表盘。

关于普罗米修斯本身也可以写一篇很长的教程了,这里我们先暂时略去不表。请关注我们的技术博客[7]或公众号 (HiXieke),之后我们会继续展开讲。

5. 搭建你的第一个仪表盘

现在我们来搭建你的第一个仪表盘。

第 1 步 - 设置数据源

进入 Grafana 后,在左侧你会发现有一个 Data Source 即数据源选项

点击后进入,点 Add Data Source 即添加数据源,选择 Prometheus

之后设置数据源 URL。请注意,Promethues 的工作原理(下一个教程中会讲)是通过轮询一个 HTTP 请求来获取数据的,而 Grafana 在获取数据源的时候也是通过一个 HTTP 请求,因此这个地方你需要告诉 Grafana 你的 Prometheus 的数据端点是什么。

这里我们填入 http://prometheus:9090 就可以了。

你可能会问,为什么不是 localhost:9090 呢?原因是,我们用了 docker-compose 起的三个服务,可以把它们想象成三台独立的服务器,因此需要用一个域名来互相通信。我们在 docker-compose.yml 中设置的普罗米修斯服务器的名字就叫 prometheus,因此这里需要用前者。

点确认时一定要确认出现 Data source is working 这个检测,这时表明你的 Grafana 已经跟普罗米修斯说上话了

第 2 步 - 导入 Dashboard

在 Grafana 里,仪表盘的配置可以通过图形化界面进行,但配置好的仪表盘是以 JSON 存储的。这也就是说,如果你把你的 JSON 数据分享出去,别人导入就可以直接导入同样的仪表盘(前提是你们的监测数据一样)。

对于我们的例子来说,回忆一下,因为我们用了 prometheus-exporter 也就是本机的系统信息监控,那么我们可以先找一个同样用了这个数据源的仪表盘。在 Grafana 网站上,你其实可以找到很多别人已经做好的仪表,可以用来监测非常多标准化的服务。

Grafana 的仪表盘市场:https://grafana.com/grafana/dashboards[8]

比如说针对以下一些服务的标准仪表盘就可以在这里找到

  • JVM
  • Spring Boot
  • MySQL 监控
  • Laravel 监控

那么,这里我们就用一个标准的仪表盘:https://grafana.com/grafana/dashboards/1860[9]

在左侧的加号里,点 Import 即导入,在出现的界面中填入 1860 即我们要导入的仪表盘编号即可。

然后填入你需要的信息,比如仪表盘名字等

确认之后 Grafana 就会根据你的本机信息,生成类似 CPU 负载,内存和 I/O 之类的信息。我的磁盘状况如图:

要注意的是,这里的信息真正监控的是你的 Docker 中的系统信息。如果你只给你的 Docker 分配 1 个核和 2G 内存,那么这里应该看到的就是 1 个核和 2G 内存

第 3 步 - 生成和创建新的仪表盘

最后,在上面导入信息的基础上,你就可以开始创建和你的服务、业务相关的仪表盘了。

但在这步之前,你需要先在你的服务中开始记录一些数据。

如何在各种语言中记录你关注的数据?

拿卡拉搜索举例子,我们关注用卡拉搜索的 APP 的搜索响应速度,所以自然我们需要在所有搜索请求处记录延迟。

对于你的服务,你需要根据自己的业务确认哪些数据是重要的,关于如何记录数据,如何思考运维等,我会在之后的博客中继续深入讨论。如果你想更深入地了解这个领域,推荐阅读 Google 运维手册这本书,英文名叫《Google SRE Book》,免费的书。

包括如何用 Prometheus 查询数据

普罗米修斯本身也是个非常大的话题,我们会在之后的博客中继续讨论。普罗米修斯包括所有其它时序数据库通常都会定义一个查询语言,比如说 PromQL,如果需要熟练地构建仪表盘的话,需要对这个查询语言有一定了解。

如何手动生成一个仪表盘

假设你已经按上面的步骤生成了一个基本的仪表盘,那么现在可以开始手动添加仪表盘了。同样是点左侧的加号,点 Dashboard 就可以进入添加仪表盘的界面。

这里我们选择一个数据叫 scrape_duration_seconds,先不用管它的含义是什么,就当它是双 11 的销售额好了:

添加好后点右上角的 ApplySave 你的仪表盘就被保存了。这时候,用一个大屏幕展示一下,庆祝一下双十一又过了千亿吧

6. 总结

这篇文章里我们从头到尾介绍了如何用 Grafana 生成仪表盘,如何配置和连接数据源,以及如何导入和创建一个仪表盘。

之后的文章中,我们会介绍在卡拉搜索,我们是怎样监测服务健康状态的,同时我们会介绍 Prometheus 即普罗米修斯时序数据库的用法,欢迎继续关注我们的博客和公众号 (HiXieke)。

如果你的 App 或小程序需要搜索功能,也可以到卡拉搜索首页[10]了解一下我们的托管搜索服务。花 5 分钟接入,我们就可以帮你为你的用户提供比 ElasticSearch 还快 10 倍的搜索体验,提高转化率和用户留存。

本文参考了以下文章:

  • How to explore prometheus with easy hello world projects[11]
  • Node Exporter Guide[12]
  • Grafana Tutorials[13]
  • Grafana Simple Synthetic Monitoring[14]
  • Grafana 快速入门[15]

 

参考资料

[1]

卡拉搜索: https://kalasearch.cn/

[2]

博客: https://kalasearch.cn/blog

[3]

Demo: https://kalasearch.cn/

[4]

Grafana 教程代码: https://github.com/Kalasearch/grafana-tutorial

[5]

https://github.com/Kalasearch/grafana-tutorial: https://github.com/Kalasearch/grafana-tutorial

[6]

一张图: https://medium.com/@bhargavshah2011/monitoring-docker-containers-using-cadvisor-and-prometheus-5350ae038f45

[7]

技术博客: https://kalasearch.cn/blog

[8]

https://grafana.com/grafana/dashboards: https://grafana.com/grafana/dashboards

[9]

https://grafana.com/grafana/dashboards/1860: https://grafana.com/grafana/dashboards/1860

[10]

卡拉搜索首页: https://kalasearch.cn/

[11]

How to explore prometheus with easy hello world projects: https://grafana.com/blog/2019/12/04/how-to-explore-prometheus-with-easy-hello-world-projects/

[12]

Node Exporter Guide: https://prometheus.io/docs/guides/node-exporter/

[13]

Grafana Tutorials: https://grafana.com/tutorials/

[14]

Grafana Simple Synthetic Monitoring: https://grafana.com/blog/2019/06/18/grafana-tutorial-simple-synthetic-monitoring-for-applications/

[15]

Grafana 快速入门: https://ken.io/note/grafana-quickstart-influxdb-datasource-graph

原文链接:https://kalasearch.cn/blog/grafana-with-prometheus-tutorial/

相关文章:

Grafana 中文入门教程 | 构建你的第一个仪表盘

在大厂工作久了,时常对一些工具的存在觉得理所当然。 比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存?点下鼠标就可以要到几十个配置好的 Redis 结点。 最省心的是,这些工具都已经根据工作流配置好了:鉴权、优化、网络连接等等通通…...

Gitee DevOps:中国开发者效率革命的数字引擎

Gitee DevOps:中国开发者效率革命的数字引擎 在数字化转型浪潮席卷全球的当下,中国软件产业正面临前所未有的效率挑战。传统开发模式中的人工干预、碎片化工具链和低效协作已成为制约企业创新速度的关键瓶颈。Gitee DevOps作为本土领先的一站式开发运维平台,通过全流程自动化…...

Topaz Photo AI Pro 4.0.4 AI图片智能降噪

描述 Topaz Photo AI是一款专业的人工智能图片降噪软件,得益于Topaz公司AI算法,这款照片修复软件可以在修复照片的同时运用人工智能算法AI模型计算图片模糊部分,自动修复图片受损的细节,以增强图片画质。利用未来的技术锐化、消除噪点并提高照片的分辨率。Topaz Photo AI 可…...

C++ std::map

std::map 是 C++ STL 中最常用的有序键值对容器,其核心功能是存储唯一键(key)与对应值(value)的映射关系,并自动按键的顺序排序。底层基于红黑树(自平衡二叉搜索树)实现,这使得它在键的查找、插入、删除等操作上保持稳定的高效性。 1、底层数据结构与核心特性 1.1 底层…...

易基因:Nat Genet/IF29:董朝斌团队ChIP-seq等揭示作物株型穗型发育调控新机制 助力表观遗传育种驯化改良(顶刊佳作)

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,中国农业大学玉米生物育种全国重点实验室董朝斌教授为第一及共同通讯作者,美国加州大学伯克利分校George Chuck研究员为共同通讯作者,在国际遗传学Top期刊《Nature Genetics》发表了题为“A regulator…...

Edge浏览器网页长截图

长截图步骤1.在Edge浏览器中打开目标网页(需确保网页完全加载后再截图,否则可能截取不完整)‌‌2.按下‌Ctrl+Shift+S‌组合键3.选择截屏模式‌为捕获整页‌(自动滚动并截取整个网页,生成一张长图)‌‌4.截图后可直接复制或保存为图片文件...

Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用

全文链接:https://tecdat.cn/?p=43881原文出处:拓端抖音号@拓端tecdat随着物联网(IoT)技术在电动汽车充电站(EVCS)中的普及,充电站不仅成为智能交通的关键节点,更因连接电网、用户设备与管理系统,成为网络攻击的重点目标。传统入侵检测系统(IDS)要么难以处理IoT环境…...

C++多线程编程—线程控制、同步与互斥详解

本文将深入探讨C++多线程编程中的核心概念:线程控制、同步与互斥。 1.线程控制:join 与 detach当我们创建一个线程(std::thread)后,我们必须明确在这个线程对象销毁之前,如何管理它所代表的执行线程。这就是 join 和 detach 的用武之地。join()作用:阻塞当前线程(通常是…...

MySQL启动失败:mysqld.log Permis 报错处理.250916

报错:Could not open file /var/log/mysqld.log for error logging: Permis 解决办法: sudo setenforce 0 systemctl restart mysqld systemctl status mysqld如果好了,就更改selinux策略: sudo semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?" …...

源码管理—密钥硬编码问题

源码管理—密钥硬编码问题目录密钥硬编码的定义: 指在代码、配置里硬编码密码/明文密码在配置文件中,但是不论是通过 AES 加密过的密码,还是将明文密码存储在远程配置文件中,都属于硬编码密钥。 常见的密钥硬编码场景:密钥放在环境变量 密钥加密存储在代码里 密钥放在服务…...

无速度传感器交流电机的扩展Luenberger观测器

扩展Luenberger观测器是一种用于无速度传感器交流电机控制的重要技术,它能够估计电机的内部状态(如转子磁链)和转速。 理论背景 对于感应电机,在静止α-β坐标系下的模型可以表示为: 状态方程: dx/dt = A(ω)x + Bu y = Cx其中: x = [isα, isβ, ψrα, ψrβ]^T u = […...

AI Ping体验记:终于有人做大模型服务的“性能监控”了

引言 最近几个月,我们公司在开发AI应用平台并集成到现有系统中。作为项目的技术选型负责人,我被MaaS平台API的选择问题折磨得不轻。面对市面上众多的大模型服务商,如何选出最适合我们的那一个,真的是个大难题。 市面上的MaaS平台越来越多,光是国内的就有20多家,这还是我知…...

数据库原理-第二章——关系型数据库

pass...

mac 的任务栏 Windows-Style Taskbar For macOS

https://lawand.io/taskbar/...

快手Java一面

线程池七大参数和作用?有大量执行时间短的任务如何设置线程池参数? Synchronized和ReentrantLock实现上的区别?哪个能尝试获取锁?tryLock方法参数是什么?返回是什么? ReentrantLock的公平锁和非公平锁怎么实现的? JVM堆内存怎么划分的? CMS垃圾回收机制下新生代和老年代…...

详细介绍:Elastic APM 入门指南:快速设置应用性能监控

详细介绍:Elastic APM 入门指南:快速设置应用性能监控pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

想找Axure替代?这6个原型设计工具值得一试

引言 在原型设计工具里,Axure可以说是最为经典、老牌的一款了。它在产品圈内有着较高的知名度和地位,但随着工具生态的不断丰富,越来越多产品经理在学习和使用Axure的过程中,逐渐放弃转为寻找Axure替代工具。其实,如今想找到能替代Axure的工具并不难,本文就为大家介绍6款…...

H5游戏性能优化系列-----cpu相关优化

cpu优化主要是优化cpu使用率,帧率平稳性(卡帧,长耗时任务),主要从以下几个方面优化设置合适的帧率。根据游戏类型设置合适的帧率,比如slg,回合制这种类型游戏一般开30帧,mmo等即时战斗的或者对流畅度有很高要求的可以开60帧。 帧同步与状态同步的抉择。一般来说状态同步会…...

IPA 混淆实战 IPA 混淆、IPA 加固、ipa 文件安全与成品包防护全流程指南

本文详解 IPA 混淆实战:为何做 ipa 混淆、Ipa Guard 在成品包加固中的角色、与源码混淆的区别、工具链(MobSF、class-dump、Frida)验证流程,以及灰度发布、白名单与映射表管理等落地经验,面向开发与安全团队。在移动应用交付链中,“源码混淆”与“成品 IPA 混淆”是两条互…...

实用指南:javaweb HTML基本介绍/常见标签

实用指南:javaweb HTML基本介绍/常见标签pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impor…...

文档处理控件Aspose.Words教程:在 C# 中将 Markdown 转换为 PDF

Markdown 被广泛用于使用纯文本语法创建格式化文本。许多开发人员喜欢用它来编写文档、注释和内容格式。然而,我们经常需要将Markdown文档生成专业的PDF文件。本文将学习如何借助Aspose.words for .NET,使用 C# 将 Markdown 转换为 PDF。Markdown 被广泛用于使用纯文本语法创…...

TCP协议与wireshark

...

docker容器mysql导入sql文件

sudo docker exec -i mysql8 mysql -u root -pSxygsj123 whpt_specialwork < /opt/sql/whpt-specialwork.sql...

ObjectSense 包与模块:代码组织的艺术

在编程世界中,随着项目规模扩大,代码的组织管理变得至关重要。ObjectSense 引入了包(Package)和模块(Module)机制,为代码的结构化管理提供了完美解决方案。 包:代码的基础组织单元 包是 ObjectSense 中最基础的代码组织形式,它通过目录结构与逻辑结构的统一,解决了命…...

IDE工具RAD Studio 13 Florence重磅发布:64 位 IDE + AI 组件全面升级!

近日,Embarcadero 正式宣布推出 RAD Studio 13 Florence,同时发布了 Delphi 13 与 C++Builder 13。这一版本带来了 全新的 64 位 RAD Studio IDE、更新的 C++Builder Clang 编译器、全新 Delphi 语言扩展、AI 组件与 AI 助手,并对现有功能进行了全面增强,重点聚焦在 质量与…...

C# 批量修改数据库

我这里有个例子,是整合数据后批次写入数据库的,只连接一次,希望对你有帮助using (SqlBulkCopy bc = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans)){bc.DestinationTableName = "ExamDetails";//要插入的表的表名bc.BatchSize = 10000;bc.ColumnMapp…...

Job for network.service failed because the control process exited with error code.

问题描述:VMware workstation 安装centos7启动后修改网络ip无效,报错;启动后主机还会蓝屏。 原因:windows10/11需要适配VMware workstation 16及以上,并打开虚拟配置。 解决方案:官网下载安装VMware workstation 17,17已经对个人免费。 新建虚拟机时,设置处理器》开启虚…...

负荷聚类及其在MATLAB中的实现

一、什么是负荷聚类? 负荷聚类 是指通过对用户或测量点的用电负荷数据(通常是功率随时间变化的曲线,即“负荷曲线”)进行处理和分析,根据其用电模式的相似性,自动地将它们划分为不同的类别(簇)。目标:发现数据中内在的、未知的分组模式,实现“物以类聚”。 输入:多个…...

移动安全框架(MobSF)静态分析入门指南

本文详细介绍了如何使用Mobile Security Framework(MobSF)进行移动应用静态安全分析,包含环境搭建、代码克隆、权限配置和基础扫描流程,适合移动安全入门人员学习实践。移动安全框架(MobSF)静态分析第一部分 这是一个用于分析移动应用的强大框架。在本博客中,我们将学习…...

列表项点击,逻辑梳理

列表项点击,从viewHolder >> adapter >> fragment,理清关系了。 mClickListener是传过来的,MyRecordViewHolder << MyRecordPageAdapter << MyRecordPage 最终在presenter中执行...

CRMEB标准版PHP批量发货功能深度解析

订单批量发货,批量发出当前需要发货的订单 1、导出发货单 点击批量发货—>导出发货单。注:导出发货单无需选择订单,只会导出当前待发货(不包含虚拟商品)的订单列表 2、完善发货单 导出的excel发货单中填写订单对应的快递名称,快递编码,快递单号 3、导入发货单 将填写…...

数学之美 第一章读后感

作者从人类远古时期讲起,首先指出古人传情达意的方式与如今通信方式并无差别的观点。从埃及的象形文字开始,因表意文字的增加,古人开始采用一字多意,而读者不产生歧义的话就需要联系上下文,这与解码与机器学习的原理相差不大。对于数字的发展,人类根据手指数量发明了十进…...

【SPIE出版】第九届交通工程与运输系统国际学术会议(ICTETS 2025)

第九届交通工程与运输系统国际学术会议(ICTETS 2025)将由大连理工大学主办,大连理工大学建设工程学院交通运输系承办,于2025年9月26-28日在大连隆重召开。【SPIE独立出版!连续多年EI稳定检索!】 【大连理工大学主办!】 第九届交通工程与运输系统国际学术会议(ICTETS 20…...

模型上下文协议(Model Context Protocol,MCP)

一. MCP 概述 模型上下文协议(Model Context Protocol,MCP),是由Anthropic推出的开源协议,旨在实现大语言模型与外部数据源和工具的集成,用来在大模型和数据源之间建立安全双向的连接。 模型上下文协议是专为高效获得模型所需要上下文信息而设计的通用接口,可以将推动大…...

大华设备视频平台EasyCVR视频分析设备平台双轨视频数据存储方案全解读

大华设备视频平台EasyCVR视频分析设备平台双轨视频数据存储方案全解读随着物联网、AI、云计算、大数据等新兴技术的发展、海量设备的接入、视频质量的不断提升,监控视频存储也面临着巨大的挑战。当前用户对视频监控数据的存储问题,主要考虑到以下三个因素: 1)数据的安全性和…...

AI音乐创作新突破:ACE-Step模型开启放克音乐智能生成时代

AI音乐创作新突破:ACE-Step模型开启放克音乐智能生成时代 专业级音乐创作进入AI时代 近日,Gitee AI平台正式开源其创新性音乐生成模型ACE-Step,这一技术突破将彻底改变专业音乐创作的生产方式。该模型通过深度学习算法实现了从歌词到完整编曲的端到端生成,特别在流行放克(F…...

【ABSR出版】第二届农业工程与生物学国际研讨会(ISAEB 2025)

第二届农业工程与生物学国际研讨会(ISAEB 2025)将于2025年9月26日至28日在马来西亚吉隆坡举行。【农业、生物会议 | 马来西亚国际会议】 【Scopus, CNKI, Google Scholar, Inspec (IET)检索】 第二届农业工程与生物学国际研讨会(ISAEB 2025) 2025 2nd International Symposiu…...

符号执行技术实践-求解程序密码

符号执行是什么 符号执行(Symbolic Execution)是一种程序分析技术,它使用符号值而不是具体的数值来执行程序。与传统的程序执行不同,符号执行将程序的输入用符号变量表示,然后沿着程序的执行路径收集这些符号变量必须满足的约束条件。 如果我们把普通的程序执行比作用具体的…...

博客皮肤

https://www.yuque.com/awescnb...

低轨卫星跟踪对星方式

低轨卫星跟踪对星方式 参考 https://zhuanlan.zhihu.com/p/1934304295236400209 低轨卫星的跟踪参考 https://zhuanlan.zhihu.com/p/1937283578066076622 遥测自跟踪天线低轨卫星对星的关键技术点 低轨(LEO)卫星的特点是轨道高度低(通常在200km至2000km之间),比如Starlin…...

开源中国社区发布AI赋能2.1版本:打造企业级私有化知识中枢新范式

开源中国社区发布AI赋能2.1版本:打造企业级私有化知识中枢新范式 在数字化转型浪潮席卷全球的当下,开源中国(OSCHINA.NET)正式推出社区2.1版本,以"私有化部署+AI智能引擎"为核心,重新定义企业知识管理的技术边界。这一重大升级标志着国内领先的技术社区从传统内…...

PL/SQL 性能优化指南

PL/SQL 性能优化指南 本文系统梳理了在SQL编写和PL/SQL程序设计中常见的性能问题,并提供可落地的优化策略,帮助开发者写出更高效、更稳定的数据库代码。一、表连接与解析顺序优化 1. 选择最优的表名顺序(适用于RBO,现代已不敏感但建议保留习惯) Oracle在基于规则的优化器(…...

jdbcType-java 类型

在 JDBC 中,jdbcType 用于指定数据库字段的数据类型,确保 Java 类型与数据库类型正确映射。MyBatis 等持久层框架常使用 jdbcType 处理参数和结果集的类型转换。以下是常见的 jdbcType 类型及其说明:JDBC 类型对应 Java 类型说明常见数据库映射示例ARRAY java.sql.Array 数据…...

支配对

本质思路是,通过可接受复杂度个支配对来表示所有点对。找支配对的核心条件是,在任何情况下其他点对都会被支配对淘汰。找支配对往往有两个限制,一是值是否更优,二是是否更容易满足限制。这相当于一个二维偏序问题,只不过我们要自己找偏序的对象。 在序列上,一般是区间问题…...

macOS Sonoma 14.8 (23J21) 正式版 ISO、IPSW、PKG 下载

macOS Sonoma 14.8 (23J21) 正式版 ISO、IPSW、PKG 下载macOS Sonoma 14.8 (23J21) 正式版 ISO、IPSW、PKG 下载 利用小组件进行个性化设置、令人眼前一亮的全新屏幕保护、Safari 浏览器和视频会议的重大更新 请访问原文链接:https://sysin.org/blog/macOS-Sonoma/ 查看最新版…...

DamiBus v1.1.0 发布(给单体多模块解耦)

DamiBus是一款专为单体多模块通讯解耦设计的工具,结合了Bus与RPC的特点,支持事件分发和接口调用。新版本简化了API,弃用了部分方法并新增了更直观的调用方式。其特点包括事务传导、事件标识、监听者排序等,与EventBus和Api相比耦合度更低。性能测试显示处理千万级事件仅需1…...

最小环 Floyd 算法 无向图的最小环问题

P6175 无向图的最小环问题 - 洛谷 k次插点前更新 ans=min(d[i][j]+w[j][k]+w[k][i]) 注意 i,j下边循环范围小于k // Floyd 最小环 O(n^3) #include<bits/stdc++.h> using namespace std;const int N=110; int n,m,a,b,c,ans=1e8; int w[N][N],d[N][N];int main(){cin>…...

macOS Sequoia 15.7 (24G222) Boot ISO 原版可引导镜像下载

macOS Sequoia 15.7 (24G222) Boot ISO 原版可引导镜像下载macOS Sequoia 15.7 (24G222) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blog/macOS-Sequoia-…...

Nginx 安装过程

一、安装 1、安装依赖 命令:yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 若出错,可重复执行该命令,直至成功。 在Debian及其衍生系统中使用命令:sudo apt install -y g++ libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev …...

Xcode 26 (17A324) 正式版发布 - Apple 平台 IDE

Xcode 26 (17A324) 正式版发布 - Apple 平台 IDEXcode 26 (17A324) 正式版发布 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接:https://sysin.org/blog/apple-xcode-26/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgXcode …...