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

ELK部署

背景

很多公司还是在单体项目中苦苦挣扎,没有必要上elk系统,大家都懂的一个原则系统的技术栈越多系统越复杂,维护起来也越麻烦,在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目,并发更是少的可怜,唯一出问题的可能性就是联表太多效率低了下来,做的和erp系统一样的臃肿。在追求微服务多节点部署的情况下这时就有必要使用ELK系统去查问题的可能性。不同服务之间的业务调用日志打印在不同目录下,这样就提高的查问题的效率,同时也提高了日志分析的方便性提高了效率。

我用的版本都是 6.7.2 很久之前pull下来的镜像,现在镜像加速好像失效了,去找个加速换下重启就能用了 需要尝试,不知道什么时候就又失效了

logstash             7.6.2     fa5b3b1e9757   4 years ago   813MB
kibana               7.6.2     f70986bc5191   4 years ago   1.01GB
elasticsearch        7.6.2     f29a1ee41030   4 years ago   791MB

大家可以看到是4年前pull的版本了

docker镜像加速

在linux系统上看下是否在目录下存在文件

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://qoe0omj6.mirror.aliyuncs.com"]
}

有修改registry-mirrors  可以多添加几个,有能使用的我这个是不能使用。

然后重启docker 验证能否pull镜像

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

docker获取镜像

[root@localhost ~]# docker pull elasticsearch   不加版本默认最新版本
[root@localhost ~]# docker pull elasticsearch:6.7.2  指定下载最新版本   

其他两组件也是这样获取,注意使用版本一致的中间件不然会有兼容的问题

镜像启动

elasticsearch启动

mkdir -p /home/elasticsearch/config    创建文件夹后面启动容器使用mkdir -p /home/elasticsearch/dataecho "http.host: 0.0.0.0" >/home/elasticsearch/config/elasticsearch.yml   创建配置文件写入 可以用标准的配置文件  现在简单创建写下docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2

-p: 选项用于将容器的端口映射到主机的端口。

--name elasticsearch:  这为容器指定了一个名称(elasticsearch),便于后续管理和访问。您可以使用这个名称来停止、启动或删除容器。

-e: 选项用于设置环境变量

-v 选项用于挂载卷,将主机目录或文件挂载到容器内。

-d: 该选项表示以分离模式(detached mode)运行容器,即在后台运行容器,而不是在前台显示容器的日志。

-p 9200:9200 -p 9300:9300

9200 是 Elasticsearch 的 HTTP 端口,通常用于发送 REST 请求。
9300 是 Elasticsearch 的传输端口,通常用于节点间的通信。

这行命令将容器的 9200 和 9300 端口分别映射到主机的 9200 和 9300 端口。
       

-e "discovery.type=single-node" 设置 discovery.type 为 single-node,指示 Elasticsearch 以单节点模式运行,适合开发和测试环境。

-e "cluster.name=elasticsearch": 这一行设置了集群的名称为 elasticsearch。集群名称用于标识和管理多个节点的集群。

elasticsearch:7.6.2:这是要运行的 Docker 镜像的名称和标签。这里指定使用 elasticsearch 镜像的 7.6.2 版本。

直接ip:9200 如果出现页面部署成功

kibana启动

创建配置文件

vi /home/kibana/config/kibana.yml配置文件内容server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN

启动kibana

docker run --name kibana -p 5601:5601 \
-v /home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d kibana:7.6.2

 直接ip:5601 如果出现页面部署成功

logstash启动

创建些目录

mkdir -p /home/logstash/conf.d
mkdir -p /home/logstash/config
mkdir -p /home/logstash/logs在config下创建logstash.yml配置内容
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.42.117:9200" # es地址
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs可能出现的问题
xpack.monitoring.elasticsearch.hosts: "http://127.0.0.1:9200" # es地址 能是虚拟机配置问题我需要用本机ip才能访问  用http://127.0.0.1 本地不能访问到 es/home/logstash/conf.d 目录下的文件 *.conf 配置的是服务日志传给logstash的一些配置input{tcp {mode => "server"host => "0.0.0.0"port => 4560 # 这个端口随意,要配置到springboot项目中codec => json_lines}
}
output{elasticsearch{hosts=>["192.168.42.117:9200"]index => "gzllogstash-%{+YYYY.MM.dd}"}stdout { codec=> rubydebug }
}我用到的文件名字是log_to_es.conf  这个文件的内容就是上面的配置

启动

docker run -p 9600:9600 -p 4560:4560 --name=logstash \--restart=always --privileged=true\-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \-v /home/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \-v /home/logstash/conf.d:/usr/share/logstash/config/conf.d \-v /home/logstash/logs:/usr/share/logstash/logs  \-d logstash:7.6.2

springboot 传日志到logstash

添加依赖 注意选择对应springboot的版本

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>

配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="30 seconds"><!--  彩色日志依赖  --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex"converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx"converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><!--  日志文件储存地址, 通过application配置文件传入  --><!--    <springProperty scope="context" name="LOG_PATH" source="logback.logDir" />--><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name="LOG_PATH" value="./logs"/><springProperty scope="context" name="appName" source="spring.application.name"/><!--  控制台彩色日志格式  --><property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!--  日志文件日志格式  --><property name="FILE_LOG_PATTERN"value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 按照每天及大小生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_PATH}/${appName}.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件最大大小--><maxFileSize>100MB</maxFileSize><!--日志文件保留天数--><maxHistory>30</maxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 过滤级别,如果想分类生成日志文件的话(分成debug、info、error等三个日志文件, 每个文件只记录自己级别的日志),1. 直接把这个 <appender> 复制三分改一下 FileNamePattern 和 name.2. 把 <filter> 注释去掉改一下 level 就可以了--><!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">--><!--            <level>info</level>--><!--            <onMatch>ACCEPT</onMatch>--><!--            <onMismatch>DENY</onMismatch>--><!--        </filter>--></appender><!--输出到 logstash的 appender--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--远程logstash ip:port,port应该是logstash默认为4560,你启动的是配置的端口 配置文件中的端口--><destination>192.168.42.117:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!--配置异步日志--><appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender"><!--不丢失日志,默认的,如果队列的80%已满 则会丢弃TRACT,DEBUG,INFO级别的日志--><discardingThreshold>0</discardingThreshold><!--更改默认的队列的深度,改值会影响性能,默认值是256--><queueSize>512</queueSize><!--添加附加的appender,最多只能添加一个--><appender-ref ref="FILE"/></appender><!-- 日志输出级别如果使用springProfile, 就需要在application配置文件中通过 spring.profiles.active=dev 来指定环境,也可以直接去掉 <springProfile> 这个标签或者把它整个注释掉--><springProfile name="gzl,prod"><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/><appender-ref ref="logstash"/></root><!--项目包的路径--><logger name="com.gzl.gateway" level="INFO" additivity="false"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/><appender-ref ref="logstash"/></logger><!--包--><!--<logger name="com.gzl.base.mapper" level="OFF"></logger>--><!--类--><!--<logger name="com.gzl.base.mapper.UserMapper." level="OFF"></logger>--><!--方法--><!--<logger name="com.gzl.base.controller.UserController.selectUserRoleAuthority" level="OFF"></logger>--><!--不打印某个类下的日志--><!--        <logger name="com.gzl.base.mapper.ProductInfoMapper" level="OFF"/>--></springProfile></configuration>

配置文件和正常的日志文件一样注意添加logstash相关的关键在于

   <!--输出到 logstash的 appender--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--远程logstash ip:port,port应该是logstash默认为4560,你启动的是配置的端口 配置文件中的端口--><destination>192.168.42.117:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender>

后面还会更新配置输出日志的格式内容等问题

验证下是否日志传到logstash中了

 docker logs -fn 1000 logstash

你能看到传过去的日志新写

相关文章:

ELK部署

背景 很多公司还是在单体项目中苦苦挣扎&#xff0c;没有必要上elk系统&#xff0c;大家都懂的一个原则系统的技术栈越多系统越复杂&#xff0c;维护起来也越麻烦&#xff0c;在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目&#xff0…...

ELK系列-(四)轻量级的日志收集助手-Beat家族

一、前文回顾 ELK系列-&#xff08;一&#xff09;Docker部署ELK核心组件 ELK系列-&#xff08;二&#xff09;LogStash数据处理的瑞士军刀 ELK系列-&#xff08;三&#xff09;Kibana 数据可视化的艺术家 关于部署的整体架构欢迎大家回到前面的文章观看&#xff0c;此处&a…...

NodeJs-包管理工具

包英文单词是 package &#xff0c;代表了一组特定功能的源码集合 管理包的应用软件&#xff0c;可以对包进行 下载安装 &#xff0c; 更新 &#xff0c; 删除 &#xff0c; 上传 等操作 借助包管理工具&#xff0c;可以快速开发项目&#xff0c;提升开发效率 前端常用的包管理…...

AWR microwave office 仿真学习(二)使用多层结构天线/超表面的S参数确定层间距

引言 如果大家有看过一些多层天线或超表面的论文,有两种比较常用的分析方法,等效电路法和传输线分析法,这两种方法都是三维结构的电磁问题转换为二维/集总的电路问题。本文就介绍根据这种思想进行多层结构优化的一种方法:在AWR软件中根据单层结构的S参数,确定最佳层间距。…...

【zlm】 webrtc源码讲解三(总结)

目录 setsdp onwrite ​编辑 play 参考 setsdp onwrite play 参考 【zlm】 webrtc源码讲解_zlm webrtc-CSDN博客 【zlm】 webrtc源码讲解&#xff08;二&#xff09;_webrtc 源码-CSDN博客...

Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配置

1.搭建一个springboot项目&#xff0c;不会的搜一下&#xff0c;很简单这里不做赘述。 2.首先你搭建的springboot能正常启动之后&#xff0c;pom文件添加如下依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</arti…...

Git使用步骤

Git 是一个分布式版本控制系统&#xff0c;广泛用于软件开发和其他需要跟踪文件变更的项目。以下是 Git 的基本使用方法和一些常用命令的详细说明。 安装 Git 在大多数操作系统上&#xff0c;你可以通过包管理器安装 Git&#xff1a; Windows: 下载并安装 Git for Windows。…...

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …...

springboot449教学资源共享平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大&#xff0c;容错率低&am…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 4

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 1.4. 敏感信息 2.漏洞发现 2.1.登录框万能密码 2.2.系统用户密码-ssh链接 2.3.mysql-udf提权 一、前情提要 kali黑客-利用searchsploit搜索exp一键化攻击-CSDN博客 一篇文章带你理…...

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…...

POD 存储、PV、PVC

目录 容器如何持久化存储&#xff1f; PV和PVC 为什么不能直接在 Pod 或容器中存储数据&#xff1f; 什么是 PV和 PVC&#xff1f; 可以使用本地磁盘空间创建PV吗&#xff1f; 如何让客户端通过ftp上传到远端服务器的POD里面&#xff1f; 另一个POD想访问ftp的POD里面的…...

C中strlen和sizeof的区别

1、代码如下&#xff1a; #include<stdio.h>int main() {char a[10] { h,e,l,l,0};printf("%d\n",strlen(a));printf("%d\n", sizeof(a));return 0; } 2、运行结果如下&#xff1a;...

WSL2内部的Ubuntu怎么设置网络内桥接模式,弄了好久老是不成功,怎么办?

环境: Win10专业版 WSL2 Ubuntu22.04 问题描述: WSL2内部的Ubuntu怎么设置网络内桥接模式 解决方案: 方法一 1.控制面板开启,Hyper-V 管理器 2.重启电脑 3…创建外部虚拟交换机 打开 Hyper-V 管理器,在右侧操作面板中点击“虚拟交换机管理器”。 选择“创建虚…...

Linux环境下 搭建ELk项目 -单机版练习

前言 ELK 项目是一个由三个开源工具组成的日志处理和分析解决方案&#xff0c;ELK 是 Elasticsearch、Logstash 和 Kibana 的首字母缩写。这个项目的目标是帮助用户采集、存储、搜索和可视化大量的日志和事件数据&#xff0c;尤其是在分布式系统中。下面是每个组件的概述&…...

ubuntu20.04安装mysql5.7

安装之前要确保之前没安装过或者安装后卸载干净了&#xff0c;不然后面的配置文件可能会报错。 1. 下载安装包 打开链接 downloads.mysql.com/archives/co… 选择相应版本进行下载&#xff0c;这里mysql版本选择 5.7.35&#xff0c;系统选择Ubuntu Linux&#xff0c;选择64位…...

MacPorts 安装 Tengine

创建 Portfile 以下是我参考 nginx 调整后的 Portfile&#xff0c;如需安装指定版本&#xff0c;除了修改版本号之外还需要修改 checksums 里的 sha256 sha256 值需下载 Tengine 源码文件&#xff08;tar.gz&#xff09;进行计算 模块的调整在最后的 configure.args-append …...

Git安装及基础学习

Git学习 Git安装 概述&#xff1a; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理 从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本 管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜式一键安…...

【celery】任务有时候不执行

celery任务有时执行&#xff0c;有时不执行&#xff0c;这种情况是任务被冒领&#xff1b;有时执行说明这个方法可以使用&#xff0c;有时不执行通常是被使用同一个消息队列的进程冒领了&#xff1b; 解决 Redis&#xff1a;指定一个分块就行了...

【恶意软件检测论文】通过提取 API 语义来实现的一个新颖的安卓恶意软件检测方法

目录 摘要1. 引言2. 相关工作2.1. 基于重新训练的恶意软件检测2.2. 基于应用关系图的恶意软件检测2.3. 基于异常样本识别的恶意软件检测2.4. 基于API聚类的恶意软件检测 3. AMDASE概述4. 基于语义距离的API聚类4.1. API特征提取4.2. API句子生成4.3. API句子编码4.4.聚类中心生…...

音频合并避坑指南:为什么你的MP3拼接总有杂音?附FFmpeg解决方案

音频合并避坑指南&#xff1a;为什么你的MP3拼接总有杂音&#xff1f;附FFmpeg解决方案 当你尝试将多个MP3文件拼接成一个时&#xff0c;是否经常遇到以下问题&#xff1a;拼接处出现刺耳的杂音、音频卡顿或时间戳错乱&#xff1f;这并非你的操作失误&#xff0c;而是MP3格式本…...

国产半导体测试设备公司领军者,杭州加速科技引领产业自主可控新征程

在半导体产业国产化全面推进的背景下&#xff0c;国产半导体测试设备公司成为突破产业链瓶颈、保障中国芯安全的核心力量。半导体测试设备作为芯片制造关键装备&#xff0c;长期依赖进口&#xff0c;制约国内半导体产业发展。经过多年技术攻坚&#xff0c;一批优质国产半导体测…...

Qwen3智能字幕对齐系统与Dify工作流集成:打造自动化视频内容生产线

Qwen3智能字幕对齐系统与Dify工作流集成&#xff1a;打造自动化视频内容生产线 1. 引言 你有没有算过&#xff0c;一个视频剪辑师一天要花多少时间在字幕上&#xff1f;从听写、校对、再到调整时间轴&#xff0c;一个十分钟的视频&#xff0c;光是字幕可能就要耗掉一两个小时…...

8种Prompt优化技巧:解决大模型输出不稳定痛点

8种Prompt优化技巧&#xff1a;解决大模型输出不稳定痛点 在大模型应用落地过程中&#xff0c;开发者常遇到输出结果不可控的问题&#xff1a;同样的需求多次调用返回内容差异巨大、回答偏离核心要求、格式混乱无法直接解析&#xff0c;这些问题严重影响业务流程的稳定性和用户…...

从‘硬’开关到‘软’启动:拆解一个经典PMOS缓启动电路,聊聊D4、D6这些二极管到底在忙啥?

从‘硬’开关到‘软’启动&#xff1a;拆解一个经典PMOS缓启动电路&#xff0c;聊聊D4、D6这些二极管到底在忙啥&#xff1f; 在硬件设计中&#xff0c;电源管理电路如同交响乐团的指挥&#xff0c;协调着各个器件的动作节奏。而缓启动电路&#xff0c;则是这位指挥手中那根至关…...

别再手动转格式了!用Python的docx2pdf库5行代码搞定Word转PDF(Windows/Mac通用教程)

5行代码终结格式转换焦虑&#xff1a;Python自动化Word转PDF全攻略 每次市场部门催着要电子合同时&#xff0c;你是不是还在手忙脚乱地点击"另存为PDF"&#xff1f;当运营团队需要批量生成上百份产品手册时&#xff0c;是否还在忍受重复机械的格式转换操作&#xff1…...

[Python3高阶编程] - 异步编程深度学习指南二: 同步原语

概述在 Python 异步编程中&#xff0c;虽然协程&#xff08;coroutine&#xff09;天然避免了线程切换开销&#xff0c;但多个协程仍可能同时访问共享资源&#xff08;如全局变量、文件、数据库连接&#xff09;&#xff0c;从而引发竞态条件&#xff08;Race Condition&#x…...

Ray Optics:面向未来的光学仿真平台——从零开始的光学建模实践

Ray Optics&#xff1a;面向未来的光学仿真平台——从零开始的光学建模实践 【免费下载链接】ray-optics A web app for creating and simulating 2D geometric optical scenes, with a gallery of (interactive) demos. 项目地址: https://gitcode.com/gh_mirrors/ra/ray-op…...

PyCharm+Conda环境避坑指南:手把手配置Real-ESRGAN,解决‘torch.cuda.is_available()‘报错和依赖冲突

PyCharmConda环境避坑指南&#xff1a;手把手配置Real-ESRGAN&#xff0c;解决‘torch.cuda.is_available()‘报错和依赖冲突 图像超分辨率技术正在改变我们处理低质量图像的方式&#xff0c;而Real-ESRGAN作为当前最先进的通用图像修复模型之一&#xff0c;其效果令人惊艳。但…...

【以太网帧格式】

以太网帧格式一、顺序二、分析一、顺序 前导码 | 帧开始定界符 | 目的MAC | 源MAC | 类型&#xff08;长度&#xff09; | 数据字段 | 帧校验序列FCS3 &#xff08;以太网帧最小帧长&#xff1a;64 字节&#xff0c;最大帧长&#xff1a;1518 字节。&#xff09; 二、分析 1…...