Flink WebUI解析(待更新)
写在前面
2024-05-23:对于flink webUI的查看,首先还是根据先整体观看一下Task的划分,然后根据Exception去寻找对应的TaskManager相关信息,然后双向确定是什么原因造成的;作为metrics,虽然看起来花里胡哨,本质上对flink底层实现机制的基本逻辑弄懂,应该还是比较容易看的;
注:由大佬有这块比较好的分享,跪求评论区共享一下;
2024-10-06:本次更新对Flink WebUI进行了全面介绍,剩下的待处理的监控指标包括:Flink内存模型,Java dump,【watermark,Accumulators,metrics,火焰图,】后续随缘补充一下
1. 代码示例
job代码:https://github.com/interestingcom/FlinkTest/blob/master/src/main/java/com/example/job/WordCount.java
以WordCount为例,说明Flink Webui界面参数解析,详细代码参考:
核心代码如下:
StreamExecutionEnvironment streamingEnvironment = FlinkEnvironmentFactory.createStreamingEnvironment();
streamingEnvironment.setParallelism(4);SingleOutputStreamOperator<String> word = streamingEnvironment.addSource(new WordCountSource()).flatMap(new SplitMapFunction());SingleOutputStreamOperator<Tuple2<String, Integer>> wordAndOne = word.map(value -> Tuple2.of(value, 1)).returns(Types.TUPLE(Types.STRING,Types.INT));KeyedStream<Tuple2<String, Integer>, String> tuple2StringKeyedStream = wordAndOne.keyBy(value -> value.f0);SingleOutputStreamOperator<Tuple2<String, Integer>> sum = tuple2StringKeyedStream.sum(1);sum.print("flink计算结果===>");streamingEnvironment.execute();
产生异常的代码:
if ( string.equals("world") && randomInt %5==0){throw new Exception("随机数是randomInt"+randomInt+"遇到单词world...");
}
2. WebUI详细信息
2.1. Submit New Job
位置1:上传jar包
位置2:传入main class;
2.2.Overview
位置1,黑色表示总共的subTask个数,绿色表示正在运行的subTask个数;
2.3. Runing Jobs
2.3.1 Overview
位置1:当前Job的概述,包括JobID,开始时间,持续时间
位置2:当前Job的监控信息,包括异常信息,时间线,快照信息,配置信息
位置3:当前Job的JobGraph(合并算子链后的Graph)
位置4:当前Job对应Task粒度的监控信息;Record received/sent表征数据在两个算子之间的传输条数(准确来说是已经处理的数据条数),Bytes received/sent表示数据传输的字节数(这里包括Barrier导致的字节数)
点击Source:Kafka2Redis的这个Task,位置1包括如下信息:
1、Details:从Task角度,统计输入/数据数据量,开始/持续/结束时间,Task状态,Task的实例数(并行度)
2、SubTasks:从SubTask角度统计Details;SubTasks可以理解为并行化的Task,即实际运行在各个节点上的Task,Task的实例化;More可以跳转到当前SubTask所在的TaskManager的日志信息
3、TaskManagers:从TaskManager角度统计Details信息,
4、Watermarks:埋点,暂未用到
5、Accumulators:埋点,暂未用到
6、BackPress:从SubTask角度给出,Backpressured / Idle / Busy占比,官网给出介绍如下:
- backPressuredTimeMsPerSecond:The time (in milliseconds) this task is back pressured (soft or hard) per second. It’s a sum of softBackPressuredTimeMsPerSecond and hardBackPressuredTimeMsPerSecond.
注:软背压期间任务应该还能继续处理数据,硬背压任务被blocked - idleTimeMsPerSecond:The time (in milliseconds) this task is idle (has no data to process) per second. Idle time excludes back pressured time, so if the task is back pressured it is not idle.
- busyTimeMsPerSecond:The time (in milliseconds) this task is busy (neither idle nor back pressured) per second. Can be NaN, if the value could not be calculated.
参考链接:Metrics和监控反压
7、Metrics:从SubTask角度查看监控指标,埋点,暂未用到
位置1:举例说明Task0在消费Kafka的时候,请求总数
8、Flame Graph:火焰图,用于描述Function在单位时间内被调用时长,宽度约宽,表示占用资源越多
位置1:用户自定义了map算子,命名伟UserMapFunction,其中12和47表示map函数在代码中被调用的位置
位置2:用户自定义函数Function2,持续在控制台打印6s的print语句,用于用户测试火焰图的信息,
位置3:用户自定义函数Function1,持续在控制台打印60s的print语句,用于对比用户2
一条数据经过map算子,if data = ‘a’ then Function1 else Function2,实际测试发现,我们尝试输入大量的数据!=a,则Function2的宽度明细高于Function1,所以可以看出火焰图只能反应函数被调用的执行时长,真正遇到问题只能做参考,还结合具体情况分析;
2.3.2.Exceptions
Root Exception:抛出Task异常,代码中插入throw new Exception("不允许用户传入key为error的数据");
;平时在检索的时候注意观察cause by,Exception,error等关键字
Exception History:记录Exception的历史信息;
注:Exception信息不一定在TaskManager中会打印,此时去查看Timeline,会发现有个SubTask的时间线在Runing和failed切换(应该是这个SubTask不断重启导致的)
2.3.3.TimeLine
TimeLine显示了Flink任务在各个阶段的占比,Vertex Timeline从Task角度统计,SubTask TimeLine显示了各个Task实例的运行阶段占比,由于上面在Map算子中抛出了Exception,下面的SubTask0消费到error数据,因此会不断抛出异常
注:这里我们可以看到其他的SubTask没有标记为Failed,具体作业调度参考:作业调度
2.3.4.Checkpoint
位置1:统计Checkpoint此时,包括触发/正在处理/完成/失败/恢复次数;
位置2:最近一次Checkpoint的信息;End to End Duration:Checkpoint从触发到最后一次确认的时间,通常大于某一个Task的End to End Duration的时间;Checkpointed Data Size:Checkpoint大小;
位置3:Checkpoint详细信息,包括存储位置,是否对齐,丢弃等信息;
位置4:从Task角度(Operators,算子角度)和SubTask(Task实例)对Checkpoint信息进行描述
Operators角度:
- Acknowledged:已经完成的acknowledged(确认)的SubTask/总的Task数量;
- Latest Acknowledgment:JobManager 接收到任何 subtask 的最新确认的时间(如果尚未收到确认,则不适用)。
- Processed (persisted) in-flight data:Checkpoint对齐期间,处理/持久化字节数。
SubTask角度,同样的给出Minimum/Average/Maximum占比,以及不同SubTask具体Checkpoint情况
- Sync Duration:Checkpoint同步时长,包括Operator的快照状态,阻塞Subtask的其他行为;
- Async Duration:Checkpoint异步持续时间,包括写入文件系统所需时间,对于非对齐的Checkpoint统计时长参考官网
- Alignment Duration:处理第一个barrier和最后一个barrier之间的时间,提前接收到barrier的Channel会阻塞并停止处理后续数据,一般Forward的传递方式下,这里应该是0;
- Start Delay:从Checkpoint barrier创建到收到第一个Checkpoint barrier所用的时间;
- Unaligned Checkpoint:Checkpoint 完成的时候是否是一个 unaligned checkpoint。在 alignment 超时的时候 aligned checkpoint 可以自动切换成 unaligned checkpoint。
参考链接:监控 Checkpoint
位置6:History是对历史Checkpoint的统计,默认显示15次,Status:In Progress/Completed/Failed/Savepoint;
Summary从Minimum/Average/Maximum统计Checkpoint相关信息;Configuration给出的是关于Checkpoint相关的配置信息;
2.3.5.Configuration
Job的相关配置,可以看出位置1的相关信息说明了Task的执行模式,重启策略等信息;位置2是用户自定义的配置;
2.4 Task Managers
2.4.1 *TaskManagers Overview
列出所有的TaskManager
1、Path,ID:给出的是TaskManagerID和Akka通信地址
2、Data Port:数据传输端口,因为这里是createLocalEnvironmentWithWebUI
,端口是-1,集群中从配置文件taskmanager.data.port读取
3、Last Heartbeat:上一次心跳时间
4、All/Free Slots:所有/空闲的Slot数
5、CPU cores:物理机的cpu核数,虚拟处理器=8
6、Physical MEM:物理机的内存数
7、JVM Heap Size:JVM堆内存大小,堆内存可以简单理解为用于存储对象
8、Flink Managed MEM:【后续补充内存模型,暂时可以不用关心,大部分情况没有用到】
2.4.2.Metrics
关于一些内存信息的坑,埋点,后续补充
2.4.3.Logs和Stdout
对于task Manager来说,核心主要关注日志文件;位置1是相关的日志信息和控制台打印输出,Log List给出日志列表
注:这里打印信息和任务运行环境,用户配置等相关,比如使用WebUI环境下,没有给出stdout的配置,只给出了Log的配置方式,生产中如果遇到异常信息,这两部分最好都看看;
2.4.4.Thread Dump
埋点,后续补充
2.5 Job Manager
JobManager的相关监控信息,Metrics涉及到Flink内存模型,同TaskManager;Configuration显示关于JobManager的配置信息,包括rest地址,TaskManager的内存,核数等配置信息(这里的配置更多描述的是集群的配置信息,前面的Job那块的Configuration描述的是Job相关的配置);Logs/Stdout/Log List相关描述同TaskManager的描述;
相关文章:
Flink WebUI解析(待更新)
写在前面 2024-05-23:对于flink webUI的查看,首先还是根据先整体观看一下Task的划分,然后根据Exception去寻找对应的TaskManager相关信息,然后双向确定是什么原因造成的;作为metrics,虽然看起来花里胡哨&a…...
C语言(十五)---- 编译和链接
编译和链接 编译和链接翻译环境和运行环境翻译环境 编译预处理(预编译)编译词法分析语法分析语义分析 汇编 链接运行环境 翻译环境和运行环境 在实现C语言代码文件的过程中存在两个不同的环境,分别有着不同的作用。 翻译环境:在…...
Java已死,大模型才是未来?
一、引言 在数字技术的浪潮中,编程语言始终扮演着至关重要的角色。Java,自1995年诞生以来,便以其跨平台的特性和丰富的生态系统,成为了全球范围内开发者们最为青睐的编程语言之一 然而,随着技术的不断进步和新兴语言的…...
Vue3页面内跳转锚点-scrollIntoView()
scrollIntoView() scrollIntoView()方法将调用它的元素滚动到浏览器窗口的可见区域。 element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoView(alignToTop); //布尔参…...
UE4_环境_体积云_通过蓝图来控制云彩的形状及位置。
一、体积云使用之前需要做两件事: 1、开启插件Volumetrics,重启虚幻编辑器。 2、确定视图选项中“显示引擎内容”被勾选。 二、开始使用体积云 1、找到体积云,并拖拽到场景中 2、我们可以调节参数来设置体积云。 3、我们找到Volumetrics内容…...
【优选算法-滑动窗口】长度最小的子数组、无重复字符的最长子串、最大连续1的个数、将x减为0的最小操作数、水果成篮
一、长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode) 题目介绍: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, .…...
在Spring Boot项目中整合Redis:高效数据存储与缓存的最佳实践
目录 1. 引入依赖 2. 创建序列化配置类 2.1 序列化的选择 3. 配置YAML文件 3.1 连接池的配置 4. 使用Redis 4.1 复杂数据类型的存储 4.2 列表、集合和哈希的使用 4.2.1 列表示例 4.2.2 集合示例 4.2.3 哈希示例 5. 处理事务和管道 5.1 事务示例 5.2 管道示例 6…...
什么是自动化办公
自动化办公是指使用技术工具或软件,通过预设流程或脚本,自动执行日常办公任务,从而提升效率、减少错误、节约时间的办公模式。它适用于需要重复性、规则明确的工作流程,让员工将精力集中在更具创造性和战略性的工作上。 自动化办公…...
搜索引擎是如何理解你的查询并提供精准结果的?
目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 (一)整体分析 (二)爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 (三)索引系统 网页处理阶段 预处理阶段 反作弊分析…...
国内外网络安全政策动态(2024年11月)
▶︎ 1.13项网络安全国家标准自11月1日起实施 11月1日起,《网络安全技术 信息技术安全评估准则》等13项网络安全国家标准开始实施,其中,《网络安全技术 信息技术安全评估准则 第1-5部分》《网络安全技术 信息技术安全评估方法》等6项推荐性国…...
服务器---centos上前端从0到1配置项目部署
在进行前端开发时,我们经常会面临将项目部署到服务器上的需求。为了更好地管理和保护我们的前端应用,我们通常会使用反向代理来实现对后端服务的访问。而对于使用CentOS系统的开发者来说,Nginx就是一个非常强大且可靠的工具。 在本文中,我们将探讨如何在CentOS系统上配置Ng…...
【前端】深入解析 JavaScript 中的 instanceof 运算符与 number 数据类型 和 Number 对象 区别辨析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯理论基础:instanceof 运算符的设计初衷与核心功能基础定义与应用示例解析代码分解 💯typeof 与 instanceof:两种类型检测方法的语义与…...
为什么类 UNIX 操作系统通常内置编译器?为什么 Windows 更倾向于直接使用二进制文件?
操作系统是否内置编译器,取决于该系统的设计目标、用户群体以及常见的使用场景。以下是内置编译器和直接使用二进制的设计理念和原因的分析: 为什么类 UNIX 操作系统通常内置编译器? 面向开发者的需求: 类 UNIX 系统(如…...
Ubuntu安装grafana
需求背景:管理服务器,并在线预警,通知 需求目的: 及时获取服务器状态 技能要求: 1、ubuntu 2、grafana 3、prometheus 4、node 步骤: 一、grafana安装 1、准备系统环境,配置号网络 2、…...
Java阶段三06
第3章-第6节 一、知识点 理解MVC三层模型、理解什么是SpringMVC、理解SpringMVC的工作流程、了解springMVC和Struts2的区别、学会使用SpringMVC封装不同请求、接收参数 二、目标 理解MVC三层模型 理解什么是SpringMVC 理解SpringMVC的工作流程 学会使用SpringMVC封装请求…...
C# .NET CORE 开发问题汇总
1. error MSB4803: .NET Core 版本的 MSBuild 不支持“ResolveComReference”。请使用 .NET Framework 版本的 MSBuild。 引用了一个COM组件, 使用donet 命令时,提示不支持, 可以先将项目设置为x86以构建, 将COM引用添加到核心项目中,构建它,在obj\x86\…...
短视频矩阵搭建/源码部署揭秘
短视频矩阵源码开发部署涉及使用开源技术构建和配置短视频平台。这一过程涵盖了从前端界面设计到后端逻辑处理,再到视频内容的存储管理的多个方面。以下是对关键技术的详细分析: 前端技术:为了提供流畅且互动性强的用户界面,短视…...
SpringBoot配置文件
文章目录 基本语法数据类型写法举例行内写法级联写法 配置提示用法举例逗号分隔默认值单个值集合值 映射到类 注意事项引用 基本语法 key: value形式,kv之间有空格大小写敏感使用缩进表示层级关系,缩进不允许使用tab,只允许空格。缩进的空格…...
[漏洞挖掘与防护] 05.CVE-2018-12613:phpMyAdmin 4.8.1后台文件包含缺陷复现及防御措施
这是作者新开的一个专栏——“漏洞挖掘与防护”,前期会复现各种经典和最新漏洞,并总结防护技巧;后期尝试从零学习漏洞挖掘技术,包括Web漏洞和二进制及IOT相关漏洞,以及Fuzzing技术。新的征程,新的开启,漫漫长征路,偏向虎山行。享受过程,感谢您的陪伴,一起加油~ 欢迎关…...
第四十七篇 Vision Transformer(VIT)模型解析
ViT(Vision Transformer)模型是一种基于Transformer架构的视觉模型,它成功地将Transformer从自然语言处理(NLP)领域引入到计算机视觉(CV)领域,专门用于处理图像数据。以下是对ViT模型…...
Redis篇-4--原理篇3--Redis发布/订阅(Pub/Sub)
1、概述 Redis 发布/订阅(Publish/Subscribe,简称 Pub/Sub)是一种消息传递模式,允许客户端订阅一个或多个通道(channel),并接收其他客户端发布到这些通道的消息。 2、Redis 发布/订阅的主要概…...
Spring Boot 3 中Bean的配置和实例化详解
一、引言 在Java企业级开发领域,Spring Boot凭借其简洁、快速、高效的特点,迅速成为了众多开发者的首选框架。Spring Boot通过自动配置、起步依赖等特性,极大地简化了Spring应用的搭建和开发过程。而在Spring Boot的众多核心特性中ÿ…...
一文理解 “Bootstrap“ 在统计学背景下的含义
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一文理解 “Bootstrap“ 在统计学背景下的含义 类比:重新抽样 假设我参加了班级的考试,每位同学都获得了一个成绩。现在,我想了解整个班级的平均成绩,但…...
多媒体文件解复用(Demuxing)过程
多媒体文件的解复用(Demuxing)过程指的是从一个多媒体容器文件(如 MP4、MKV、AVI 等)中提取不同类型的多媒体数据流(例如视频流、音频流、字幕流等)的过程。 容器文件本身并不包含实际的视频或音频数据&…...
ARINC 标准全解析:航空电子领域多系列标准的核心内容、应用与重要意义
ARINC标准概述 ARINC标准是航空电子领域一系列重要的标准规范,由航空电子工程委员会(AEEC)编制,众多航空公司等参与支持。这些标准涵盖了从飞机设备安装、数据传输到航空电子设备功能等众多方面,确保航空电子系统的兼…...
开源架构安全深度解析:挑战、措施与未来
开源架构安全深度解析:挑战、措施与未来 一、引言二、开源架构面临的安全挑战(一)代码漏洞 —— 隐藏的定时炸弹(二)依赖项安全 —— 牵一发而动全身(三)社区安全 —— 开放中的潜在危机 三、开…...
Python装饰器设计模式:为函数增添风味
Python装饰器设计模式:为函数增添风味 什么是装饰器?为什么需要装饰器?如何使用装饰器?示例1:简单的装饰器示例2:带参数的装饰器 装饰器的使用场景总结 大家好,今天我们要学习一个非常有趣的Pyt…...
Vue.js的生命周期
Vue.js 是一个构建用户界面的渐进式框架,它提供了一个响应式和组件化的方式来构建前端应用。了解 Vue 的生命周期对于开发者来说至关重要,因为它可以帮助我们更好地控制组件的状态和行为。本文将详细介绍 Vue 的生命周期,并提供相应的代码示例…...
【数据库】关系代数和SQL语句
一 对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程(C#,CNAME,TEACHER) (1)试用关系代数表达式和SQL语句表示:检索WANG同学不学的课程号 select C# from C where C# not in(select C# from SCwhere S# in…...
Pytest测试用例使用小结
基础使用 Pytest 测试用例实现代码 import pytest from server.service import Servicepytest.fixture def service():return Service(logger)class TestService:classmethoddef setup_class(cls):"""初始化设置一次:return:"""logger.info(&q…...
KV Shifting Attention Enhances Language Modeling
基本信息 📝 原文链接: https://arxiv.org/abs/2411.19574👥 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen🏷️ 关键词: KV shifting attention, induction heads, language modeling📚 分类: 机器学习, 自然语言处…...
从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级
从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步:查看源码第二步:启动类迁移第三步:引入 Gateway 依赖第四步 编写bootstrap.yaml第五步:替换路由配置第六步&#…...
推荐几款国外AI音频工具
【加拿大】Resemble AI - 提供AI驱动的语音合成 【加拿大】Resemble AI - 提供AI驱动的语音合成和克隆工具 Resemble,AI提供AI驱动的语音合成和克隆工具,帮助用户高效生成和处理语音内容,其语音合成功能可以自动生成自然流畅的语音,提升音频项目的表现力,Resemble,AI的语音克…...
导入excel动态生成海报
需求:给出一份excel表格(1000条数据),要将表格中的字段数据渲染到一张背景图片上,然后再下载图片,貌似浏览器做了限制,当连续下载10张图片后就不在下载了,然后用异步操作解决了这个问题。 // e…...
Unity 使用LineRenderer制作模拟2d绳子
效果展示: 实现如下: 首先,直接上代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…...
Android启动优化指南
文章目录 前言一、启动分类与优化目标1、冷启动1.1 优化思路1.2 延迟初始化与按需加载1.3 并行加载与异步执行1.4 资源优化与懒加载1.5 内存优化与垃圾回收控制 2. 温启动2.1 优化应用的生命周期管理2.2 数据缓存与懒加载2.3 延迟渲染与视图优化 3. 热启动3.1 保持应用的状态3.…...
每日一练 | 华为 eSight 创建的缺省角色
01 真题题目 下列选项中,不属于华为 eSight 创建的缺省角色的是: A. Administrator B. Monitor C. Operator D. End-User 02 真题答案 D 03 答案解析 华为 eSight 是一款综合性的网络管理平台,提供了多种管理和监控功能。 为了确保不同用…...
ubuntu 手动更换库文件解决nvcc -V和nvidia-smi不一致
NVML 库版本与驱动不匹配 问题现象问题排查限制解决禁止自动更新降低库版本 问题现象 笔主在训练之前想查看gpu占用情况,使用watch -n 1 nvidia-smi发现: 且在推理、训练时无法使用到显卡。 问题排查 cat /proc/driver/nvidia/version查看当前显卡驱…...
DataSophon集成CMAK KafkaManager
本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件:DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…...
2024-2025关于华为ICT大赛考试平台常见问题
一、考生考试流程 第一步:收到正式考试链接后点击考试链接并登录; 第二步:请仔细阅读诚信考试公约,阅读完成后勾选“我已阅读”,并点击确定; 第三步:上传身份证人像面进行考前校验࿰…...
Halcon中lines_gauss(Operator)算子原理及应用详解
在Halcon图像处理库中,lines_gauss算子是一个用于检测图像中线条的强大工具,它能够提供亚像素精度的线条轮廓。以下是对lines_gauss (ImageReducedTracks, Lines, 1.5, 1, 8, ‘light’, ‘true’, ‘bar-shaped’, ‘true’)算子的详细解释:…...
Flink集群搭建整合Yarn运行
Flink 集群 1. 服务器规划 服务器h1、h4、h5 2. StandAlone 模式(不推荐) 2.1 会话模式 在h1操作 #1、解压 tar -zxvf flink-1.19.1-bin-scala_2.12.tgz -C /app/#2、修改配置文件 cd /app/flink-1.19.1/conf vim conf.yaml ##内容:## j…...
FPGA工作原理、架构及底层资源
FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称(IOB)2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...
Postman的使用
(一)创建Collections:Collections->New Collection->创建界面填入Collection名称,比如某个系统/模块名,描述里可以稍微更详细的介绍集合的信息 Collection创建时,还可以定义Authorization 如下&#…...
【报错】新建springboot项目时缺少resource
1.问题描述 在新建springboot项目时缺少resources,刚刚新建时的目录刚好就是去掉涂鸦的resources后的目录 2.解决方法 步骤如下:【文件】--【项目结构】--【模块】--【源】--在main文件夹右击选择新建文件夹并命名为resources--在test文件夹右击选择新建文件夹并命名…...
phpstudy访问本地localhost无目录解决办法
phpstudy访问本地localhost无目录解决办法 错误: 直接访问本地http://localhost/,出现hello word,或者直接报错,无法出现本地目录 解决办法: 对于Phpstudy-2018版本来说: 找到这里的Phpstudy设置 2. 打…...
架构16-向微服务迈进
零、文章目录 架构16-向微服务迈进 1、向微服务迈进 (1)软件开发中的“银弹”概念 **背景:**软件开发过程中常常出现工期延误、预算超支、产品质量低劣等问题,这使得管理者、程序员和用户都渴望找到一种能够显著降低成本的“银…...
基于Springboot汽车资讯网站【附源码】
基于Springboot汽车资讯网站 效果如下: 系统主页面 汽车信息页面 系统登陆页面 汽车信息推荐页面 经销商页面 留言反馈页面 用户管理页面 汽车信息页面 研究背景 随着信息技术的快速发展和互联网的普及,互联网已成为人们查找信息的重要场所。汽车资讯…...
Tomcat项目本地部署
今天分享一下如何在本地,不依赖于idea部署聚合项目,以我做过的哈米音乐项目为例,项目结构如下: ham-core模块为公共模块,我们只需将另外三个模块:前台、后台、文件服务器打包,将打好的jar、war包…...
【OpenCV】直方图
理论 可以将直方图视为图形或曲线图,从而使您对图像的强度分布有一个整体的了解。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。 这只是理解图像的另一种方式。通过查看图像的直方图,您可以直观地了解该…...