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

Spring Boot/Spring Cloud 整合 ELK(Elasticsearch、Logstash、Kibana)详细避坑指南

我们在开发中经常会写日志,所以需要有个日志可视化界面管理,使用ELK可以实现高效集中化的日志管理与分析,提升性能稳定性,满足安全合规要求,支持开发运维工作。

下述是我在搭建ELK时遇到的许许多多的坑,希望能替大家避开.

1. 环境准备

  • Elasticsearch: 用于存储和检索日志数据。

  • Logstash: 用于收集、处理和转发日志数据。

  • Kibana: 用于可视化和分析日志数据。

2. 安装 ELK 组件

你可以通过 Docker 快速安装 ELK 组件:

# 拉取 ELK 镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0
docker pull docker.elastic.co/logstash/logstash:7.10.0
docker pull docker.elastic.co/kibana/kibana:7.10.0# 启动 Elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0# 启动 Logstash
docker run -d --name logstash -p 5044:5044 docker.elastic.co/logstash/logstash:7.10.0# 启动 Kibana
docker run -d --name kibana -p 5601:5601 --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:7.10.0

若不通过Docker,可直接官网下载,如下:

2.1 下载Elasticsearch

       - 访问 Elasticsearch 下载页面,选择适合的版本(如 8.17.3)。

        - 解压下载的文件

        - 启动 Elasticsearch:

                默认情况下,Elasticsearch 会监听 9200 端口。

                访问 http://localhost:9200,确认 Elasticsearch 是否正常运行。

       

        避坑点1:

       在启动时,发现老是报错,查了很久都没有结果,最终终于排查出来是环境变量配置的问题.

        我们可以看下述它自带的配置文件,文件中说明了若配置了ES_JAVA_HOME,则会使用此配置指向的JDK,但是此处JAVA_HOME和CLASS_PATH的环境变量会影响启动,所以如果想要直接使用它自带的JDK,需要将JAVA_HOME和CLASS_PATH的环境变量暂时注释掉.

set SCRIPT=%0rem determine Elasticsearch home; to do this, we strip from the path until we
rem find bin, and then strip bin (there is an assumption here that there is no
rem nested directory under bin also named bin)
for %%I in (%SCRIPT%) do set ES_HOME=%%~dpI:es_home_loop
for %%I in ("%ES_HOME:~1,-1%") do set DIRNAME=%%~nxI
if not "%DIRNAME%" == "bin" (for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfIgoto es_home_loop
)
for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfIrem now set the classpath
set ES_CLASSPATH=!ES_HOME!\lib\*
set ES_MODULEPATH=!ES_HOME!\lib
set LAUNCHERS_CLASSPATH=!ES_CLASSPATH!;!ES_HOME!\lib\launchers\*;!ES_HOME!\lib\java-version-checker\*
set SERVER_CLI_CLASSPATH=!ES_CLASSPATH!;!ES_HOME!\lib\tools\server-cli\*set HOSTNAME=%COMPUTERNAME%if not defined ES_PATH_CONF (set ES_PATH_CONF=!ES_HOME!\config
)rem now make ES_PATH_CONF absolute
for %%I in ("%ES_PATH_CONF%..") do set ES_PATH_CONF=%%~dpfIset ES_DISTRIBUTION_TYPE=zipcd /d "%ES_HOME%"rem now set the path to java, pass "nojava" arg to skip setting ES_JAVA_HOME and JAVA
if "%1" == "nojava" (exit /b
)rem comparing to empty string makes this equivalent to bash -v check on env var
rem and allows to effectively force use of the bundled jdk when launching ES
rem by setting ES_JAVA_HOME=
if defined ES_JAVA_HOME (set JAVA="%ES_JAVA_HOME%\bin\java.exe"set JAVA_TYPE=ES_JAVA_HOMEif not exist !JAVA! (echo "could not find java in !JAVA_TYPE! at !JAVA!" >&2exit /b 1)rem check the user supplied jdk version!JAVA! -cp "%ES_HOME%\lib\java-version-checker\*" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1
) else (rem use the bundled JDK (default)set JAVA="%ES_HOME%\jdk\bin\java.exe"set "ES_JAVA_HOME=%ES_HOME%\jdk"set JAVA_TYPE=bundled JDK
)rem do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)
if defined JAVA_TOOL_OPTIONS (echo warning: ignoring JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%set JAVA_TOOL_OPTIONS=
)rem warn that we are not observing the value of $JAVA_HOME
if defined JAVA_HOME (echo warning: ignoring JAVA_HOME=%JAVA_HOME%; using %JAVA_TYPE% >&2
)rem JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we
rem warn them that we are not observing the value of %JAVA_OPTS%
if defined JAVA_OPTS ((echo|set /p=warning: ignoring JAVA_OPTS=%JAVA_OPTS%; )echo pass JVM parameters via ES_JAVA_OPTS
)cd %ES_HOME%

成功启动后,访问地址效果:

2.2 安装 Logstash

  1. 下载 Logstash:
    • 访问 Logstash 下载页面,选择适合的版本(如 8.17.3)。

    • 解压下载的文件

  使用 -e 参数进行简单测试

bin/logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'

若启动成功,可访问http://localhost:9600/看是否有json数据返回即可.

到此处,说明下载的Logstash没问题.

        

        2. 配置文件编写

        Logstash 的配置文件分为两类:主配置文件(logstash.conf)和管道配置文件(pipelines.yml)。

        

        1)logstash.conf 配置文件

logstash.conf 是 Logstash 的核心配置文件,定义了数据的输入、过滤和输出。它通常位于 Logstash 安装目录的 config 文件夹中。

  • 输入(Input):定义数据源,例如日志文件、网络端口等。
    示例:

    input {file {path => "/var/log/*.log"start_position => "beginning"}
    }
  • 过滤(Filter):对数据进行解析和处理,例如使用 Grok 插件解析日志。
    示例:

    filter {grok {match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request}" }}
    }
  • 输出(Output):定义数据的输出目标,例如 Elasticsearch、文件或控制台。
    示例:

  • output {elasticsearch {hosts => ["http://localhost:9200"]index => "logstash-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
    }

        (2)pipelines.yml 配置文件

pipelines.yml 文件用于定义管道的配置,包括管道的名称和配置文件路径。它通常位于 Logstash 安装目录的 config 文件夹中。

- pipeline.id: mainpath.config: "config/logstash-sample.conf"

避坑点2:

此处不知道怎么配置都会显示 No configuration found in the configured sources. 一直没找出原因

重新从配置的信息中找原因,最终发现是conf配置文件的问题.

logstash-sample.conf  示例如下:

input {# 示例3:HTTP 接收数据http {port => 8080codec => "json"}
}output {# 示例1:输出到 Elasticsearch(带安全认证)elasticsearch {hosts => ["http://localhost:9200"]index => "logs-%{+YYYY.MM.dd}"user => "elastic"password => "password"ssl => false}
}

 logstash.yml  此文件需要配置上去,否则会一直报错,很多教程中没有指这一点!!!


# 节点名称(用于集群标识)
node.name: "my-logstash-node"# 管道配置路径(可指定多个管道)
path.config: "config/pipelines/*.conf"# 数据存储路径(队列和持久化数据)
path.data: "data/"# 日志路径
path.logs: "logs/"# HTTP API 配置(用于监控和管理)
api.http.host: "0.0.0.0"
api.http.port: 9600# 性能调优(根据硬件调整线程和批处理大小)
pipeline.workers: 2          # 工作线程数(建议等于CPU核心数)
pipeline.batch.size: 125     # 每批处理事件数

上述坑点避开后,基本上都能启动了。效果如下:

2.3 安装 Kibana

  1. 下载 Kibana:

    • 访问 Kibana 下载页面,选择适合的版本(如 8.17.3)。

    • 解压下载的文件

  2. 配置 Kibana:
    编辑 config/kibana.yml 文件,设置 Elasticsearch 的地址:

    elasticsearch.hosts: ["http://localhost:9200"]
    server.host: "0.0.0.0"
  3. 启动 Kibana:

    ./bin/kibana
    • Kibana 会监听 5601 端口。

    • 访问 http://localhost:5601,确认 Kibana 是否正常运行。

首次启动时,报了下述错误:

 从日志上看起来应该是配置问题,依旧先检查配置文件 config/kibana.yml

原来是按上述的配置文件内容是不足够的,所以我又添加了一些配置信息(Elastic连接信息、Kibana安全参数等)

# 配置Kibana服务运行的主机地址,允许远程访问时可设置为"0.0.0.0"
server.host: "localhost"# 配置Kibana服务运行的端口
server.port: 5601# 配置Elasticsearch的地址,如果有多个节点,可以像下面这样列出
elasticsearch.hosts:- "http://localhost:9200"# 启用Kibana的安全功能
xpack.security.enabled: true# 配置Elasticsearch的用户名和密码
elasticsearch.username: "elastic"
elasticsearch.password: "your_password"

按上述配置文件重启后,依旧报错:

原因:kibana连接Elasticsearch不允许直接使用超级账号elastics,需要按照下述方式创建专用账号

使用elasticsearch-service-tokens CLI工具
  1. 打开终端或命令提示符。

  2. 运行以下命令来创建服务账号令牌:

    bash复制

    elasticsearch-service-tokens create elastic/kibana <token_name>

    其中elastic/kibana是Kibana的服务账号,<token_name>是你为这个令牌指定的名称,例如kibana-token

  3. 该命令会在$ES_HOME/config/service_tokens文件中保存新的服务令牌,并在终端输出Bearer令牌。

# 配置Kibana服务运行的主机地址,允许远程访问时可设置为"0.0.0.0"
server.host: "localhost"# 配置Kibana服务运行的端口
server.port: 5601# 配置Elasticsearch的地址,如果有多个节点,可以像下面这样列出
elasticsearch.hosts:- "http://localhost:9200"elasticsearch.serviceAccountToken: "AAEAAWVsYXN0aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1NldHZlZjdm9B"

根据生成的TOKEN,按上述最终的配置信息,重启服务即可,访问localhost:5601,出现下述界面说明成功了!

3. 集成项目

上述三个服务全部安装完成之后,我们就可以开始对接项目了.

Spring Boot 项目配置

3.1 添加依赖

在 pom.xml 中添加依赖:

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>
3.2 添加配置

在 src/main/resources 目录下创建 logback-spring.xml 文件(此处需注意,若已存在logback相关xml文件,则不需要重新创建):

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>localhost:5044</destination><encoder class="net.logstash.logback.encoder.LogstashEncoder"/></appender><root level="INFO"><appender-ref ref="LOGSTASH"/><appender-ref ref="console"/></root>
</configuration>

添加上述配置,注意root节点不能重复,重复的话会以最后一个root节点为主.

3.3 测试:

在你的项目中将日志打印出来

logger.info("用户列表日志记录!!!");

若上述有问题,则需要检查是否已经创建了索引,先检查logstash的配置文件:

input {tcp {port => 5044codec => json_lines}
}output {# 示例1:输出到 Elasticsearch(带安全认证)elasticsearch {hosts => ["http://localhost:9200"]index => "springboot-logs-%{+YYYY.MM.dd}"user => "elastic"password => "XXX"ssl => false}
}

此处的tcp监听是监听springboot配置文件中对应的端口.

3.4 查看索引

output中的index则是elastic的索引名称,访问此路径确认索引是否创建成功:http://localhost:9200/_cat/indices?v

若创建成功,在下图中就能看到了

3.5 查看日志

有了索引,我们就可以在kibana中查看了,如下图:

Stack Management  -> Data views -> Create data view

Discover 中搜索并查看,如下图:

这样我们整个过程就结束了,也成功使用ELK查看到日志了!

相关文章:

Spring Boot/Spring Cloud 整合 ELK(Elasticsearch、Logstash、Kibana)详细避坑指南

我们在开发中经常会写日志&#xff0c;所以需要有个日志可视化界面管理&#xff0c;使用ELK可以实现高效集中化的日志管理与分析&#xff0c;提升性能稳定性&#xff0c;满足安全合规要求&#xff0c;支持开发运维工作。 下述是我在搭建ELK时遇到的许许多多的坑&#xff0c;希望…...

云原生周刊:Istio 1.25.0 正式发布

开源项目推荐 Dstack Dstack 是一个开源的 AI 计算管理平台&#xff0c;旨在简化 AI 任务的部署和管理。它支持本地和云端运行 AI 工作负载&#xff0c;并提供自动化的 GPU 资源调度&#xff0c;使开发者能够更高效地利用计算资源。Dstack 兼容 K8s&#xff0c;可以无缝集成到…...

微前端如何拯救大型项目

前言 在前端开发的世界中&#xff0c;我们经常会遇到这样的问题&#xff1a;一个大型项目往往由多个团队共同开发&#xff0c;每个团队负责一部分功能。然而&#xff0c;随着项目的不断扩大和复杂化&#xff0c;前端代码库变得越来越庞大和难以维护。这时&#xff0c;微前端&a…...

RabbitMQ 高级特性:从 TTL 到消息分发的全面解析 (下)

RabbitMQ高级特性 RabbitMQ 高级特性解析&#xff1a;RabbitMQ 消息可靠性保障 &#xff08;上&#xff09;-CSDN博客 RabbitMQ 高级特性&#xff1a;从 TTL 到消息分发的全面解析 &#xff08;下&#xff09;-CSDN博客 引言 RabbitMQ 作为一款强大的消息队列中间件&#xff…...

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案

前言&#xff1a;最近 Manus 火得一塌糊涂啊&#xff0c;OpenManus 也一夜之间爆火&#xff0c;那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub&#xff1a;如果有科学上网且能正常访问 github 则不需要下载此软件&#xff0c;此软件是提供国内直接访问 githubGit&#…...

Ubuntu22.04修改root用户并安装cuda

由于本人工作原因&#xff0c;经常会遇到需要给ubuntu打显卡驱动的问题&#xff0c;虽然说不难吧&#xff0c;但是耐不住机器多&#xff0c;重复多次也就烦了&#xff0c;于是抽出了一点时间&#xff0c;并且在deepseek的帮助之下&#xff0c;写了一个自动安装驱动的脚本&#…...

Java LeetCode 热题 100 回顾38

干货分享&#xff0c;感谢您的阅读&#xff01;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两…...

MySQL复习笔记

文章目录 1.MySQL1.1什么是数据库1.2 数据库分类1.3 MySQL简介1.4连接数据库 2. 操作数据库2.1 操作数据库2.2 数据库的列类型2.3 数据库的字段属性&#xff08;重点&#xff09;2.4 创建数据库表&#xff08;重点&#xff09;2.5 数据表的类型2.6 修改数据表 3. MySQL 数据管理…...

解释 TypeScript 中的类型系统,如何定义和使用类型?

1. 类型系统的核心作用 TypeScript类型系统本质上是JavaScript的静态类型增强方案&#xff0c;提供三个核心价值&#xff1a; 开发阶段类型检查&#xff08;类似编译时eslint&#xff09;更清晰的API文档&#xff08;类型即文档&#xff09;更好的IDE自动补全支持 代码示例&…...

安裝do時出現log file support is not available

“log file support is not available (press RETURN)” 这个提示信息表明日志文件支持不可用&#xff0c;让你按回车键继续。出现这种情况可能是因为 Odoo 的日志相关配置存在问题或者一些必要的依赖没有正确安装配置。以下是一些可以尝试的解决办法&#xff1a; 1. 检查 Odo…...

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础 水墨不写bug 文章目录 (一)概念梳理1.什么是协议?2.什么是应用层?3. 为什么要进行分层&#xff1f; &#xff08;二&#xff09;HTTP协议2.1 初识HTTP协议2.2HTTP协议的URL2.2.1域名2.2.2端口号2…...

机票改签请求

示例代码&#xff1a; tool def update_ticket_to_new_flight(ticket_no: str, new_flight_id: int) -> str:"""Update the users ticket to a new valid flight.Args:ticket_no (str): The ticket number to be updated.new_flight_id (int): The ID of th…...

linux下文件读写操作

Linux下&#xff0c;文件I/O是操作系统与文件系统之间进行数据传输的关键部分。文件I/O操作允许程序读取和写入文件&#xff0c;管理文件的打开、关闭、创建和删除等操作。 1. 文件描述符 在Linux中&#xff0c;每个打开的文件都由一个文件描述符来表示。文件描述符是一个非负…...

命名管道的创建和通信实现

目录 命名管道的创建 使用函数创建命名管道的通信 预备创建 makefile设计 server.hpp设计 clent.hpp设计 comm.hpp设计 server.cc设计 clent.cc设计 测试运行 今天我们来学习命名管道 由于匿名管道&#xff08;pipe()&#xff09;无法在两个毫不相干的进程之间进行通…...

C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 父子物体的坐标转换 1、本节要实现的内容 前面章节我们了解了父物体与子物体的结构,它不仅能够表示物体之间的层次关系,更重要的一个作用就是展示物…...

21.HarmonyOS Next CustomSlider组件步长控制教程(三)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 1. 步长控制概述2. 步长基本概念2.1 什么是步长&#xff1f;2.2 步长的作用 3. 设置步长3.1 基本参数3.2 代码示例 4. 步长与范围的关系4…...

小白学习:rag向量数据库

学习视频&#xff1a; https://www.bilibili.com/video/BV11zf6YyEnT/?spm_id_from333.337.search-card.all.click 例子&#xff1a; 用户提出问题 客服机器人基于rag回答用户问题 过程拆解&#xff1a; 客户问题 – 转化为向量表示 – 在向量数据库中进行相似性搜索 – 系…...

STM32 CAN模块原理与应用详解

目录 概述 一、CAN模块核心原理 1. CAN协议基础 2. STM32 CAN控制器结构 3. 波特率配置 二、CAN模块配置步骤&#xff08;基于HAL库&#xff09; 1. 初始化CAN外设 2. 配置过滤器 3. 启动CAN通信 三、数据收发实现 1. 发送数据帧 2. 接收数据帧&#xff08;中断方式…...

NO.29十六届蓝桥杯备战|string九道练习|reverse|翻转|回文(C++)

P5015 [NOIP 2018 普及组] 标题统计 - 洛谷 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);int sz s.size();int cnt 0;for (int i 0; i < sz; i){if (isspace(s[i]))continue…...

最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)

前期所需&#xff1a; 1.apache-tomcat-10.1.18-windows-x64&#xff08;tomcat 10.1.8版本或者差不多新的版本都可以&#xff09; 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了&#xff08;一定先配置MAVEN再搞TOMCAT会事半功倍很多&#xff09; 如果有没配置…...

MAC-禁止百度网盘自动升级更新

通过终端禁用更新服务(推荐)​ 此方法直接移除百度网盘的自动更新组件,无需修改系统文件。 ​步骤: ​1.关闭百度网盘后台进程 按下 Command + Space → 输入「活动监视器」→ 搜索 BaiduNetdisk 或 UpdateAgent → 结束相关进程。 ​2.删除自动更新配置文件 打开终端…...

Unity DOTS从入门到精通之EntityCommandBufferSystem

文章目录 前言安装 DOTS 包ECBECB可以执行的指令示例&#xff1a; 前言 DOTS&#xff08;面向数据的技术堆栈&#xff09;是一套由 Unity 提供支持的技术&#xff0c;用于提供高性能游戏开发解决方案&#xff0c;特别适合需要处理大量数据的游戏&#xff0c;例如大型开放世界游…...

【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…...

【Linux】使用问题汇总

#1 ssh连接的时候报Key exchange failed 原因&#xff1a;服务端版本高&#xff0c;抛弃了一些不安全的交换密钥算法&#xff0c;且客户端版本比较旧&#xff0c;不支持安全性较高的密钥交换算法。 解决方案&#xff1a; 如果是内网应用&#xff0c;安全要求不这么高&#xf…...

nnUNet V2修改网络——全配置替换MultiResBlock模块

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 MultiRes Block 是 MultiResUNet 中核心组件之一,旨在解决传统 U-Net 在处理多尺度医学图像时的局…...

Git合并工具在开发中的使用指南

在团队协作开发中&#xff0c;Git 是最常用的版本控制工具&#xff0c;而代码合并&#xff08;Merge&#xff09;是多人协作不可避免的环节。当多个开发者同时修改同一文件的相同区域时&#xff0c;Git 无法自动完成合并&#xff0c;此时需要借助合并工具&#xff08;Merge Too…...

AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录

AutoDL平台租借GPU&#xff0c;创建transformers环境&#xff0c;使用VSCode SSH登录 一、AutoDl平台租用GPU 1.注册并登录AutoDl官网&#xff1a;https://www.autodl.com/home 2.选择算力市场&#xff0c;找到需要的GPU&#xff1a; 我这里选择3090显卡 3.这里我们就选择P…...

listen EACCES: permission denied 0.0.0.0:811

具体错误 npm run serve> bige-v0.0.0 serve > viteThe CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details. error when starting dev server: Error: listen EACCES: per…...

OpenAI API模型ChatGPT各模型功能对比,o1、o1Pro、GPT-4o、GPT-4.5调用次数限制附ChatGPT订阅教程

本文包含OpenAI API模型对比页面以及ChatGPT各模型功能对比表 - 截至2025最新整理数据&#xff1a;包含模型分类及描述&#xff1b;调用次数限制&#xff1b; 包含模型的类型有&#xff1a; Chat 模型&#xff08;如 GPT-4o、GPT-4.5、GPT-4&#xff09;专注于对话&#xff0c…...

六十天前端强化训练之第十五天React组件基础案例:创建函数式组件展示用户信息(第15-21天:前端框架(React))

欢迎来到编程星辰海的博客讲解 我们已经学了14天了&#xff0c;再坚持坚持&#xff0c;马上我们就可以变得更优秀了&#xff0c;加油&#xff0c;我相信大家&#xff0c;接下来的几天&#xff0c;我会给大家更新前端框架&#xff08;React&#xff09;&#xff0c;看完可以给一…...

北大一二三四版全套DeepSeek教学资料

DeepSeek学习资料合集&#xff1a;https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南&#xff1a;https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域&#xff1f;是否在寻找一份能引领你从理论到实践&#xff0c;全面掌握AI核心技术的学习…...

计算机网络:计算机网络的组成和功能

计算机网络的组成&#xff1a; 计算机网络的工作方式&#xff1a; 计算机网络的逻辑功能; 总结&#xff1a; 计算机网络的功能&#xff1a; 1.数据通信 2.资源共享 3.分布式处理:计算机网络的分布式处理是指将计算任务分散到网络中的多个节点&#xff08;计算机或设备&…...

管理网络安全

防火墙在 Linux 系统安全中有哪些重要的作用&#xff1f; 防火墙作为网络安全的第一道防线&#xff0c;能够根据预设的规则&#xff0c;对进出系统的网络流量进行严格筛选。它可以阻止未经授权的外部访问&#xff0c;只允许符合规则的流量进入系统&#xff0c;从而保护系统免受…...

音频进阶学习十九——逆系统(简单进行回声消除)

文章目录 前言一、可逆系统1.定义2.解卷积3.逆系统恢复原始信号过程4.逆系统与原系统的零极点关系 二、使用逆系统去除回声获取原信号的频谱原系统和逆系统幅频响应和相频响应使用逆系统恢复原始信号整体代码如下 总结 前言 在上一篇音频进阶学习十八——幅频响应相同系统、全…...

Redis7系列:设置开机自启

前面的文章讲了Redis和Redis Stack的安装&#xff0c;随着服务器的重启&#xff0c;导致Redis 客户端无法连接。原来的是Redis没有配置开机自启。此文记录一下如何配置开机自启。 1、修改配置文件 前面的Redis和Redis Stack的安装的文章中已经讲了redis.config的配置&#xf…...

word甲烷一键下标

Sub 甲烷下标()甲烷下标 宏Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text "CH4".Replacement.Text "CHguoshao4".Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWhole…...

SSH 连接中主机密钥验证失败问题的解决方法

问题描述 在尝试通过 SSH 建立连接时&#xff0c;出现以下错误信息&#xff1a; WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack…...

网络安全工具nc(NetCat)

NetCat是一个非常简单的Unix工具&#xff0c;可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end)工具&#xff0c;能被其它的程序程序或脚本直接地或容易地驱动。同时&#xff0c;它又是一个功能丰富的 网络调试和开发工具&#xff0c;因为它…...

探索在生成扩散模型中基于RAG增强生成的实现与未来

概述 像 Stable Diffusion、Flux 这样的生成扩散模型&#xff0c;以及 Hunyuan 等视频模型&#xff0c;都依赖于在单一、资源密集型的训练过程中通过固定数据集获取的知识。任何在训练之后引入的概念——被称为 知识截止——除非通过 微调 或外部适应技术&#xff08;如 低秩适…...

【Linux】37.网络版本计算器

文章目录 1. Log.hpp-日志记录器2. Daemon.hpp-守护进程工具3. Protocol.hpp-通信协议解析器4. ServerCal.hpp-计算器服务处理器5. Socket.hpp-Socket通信封装类6. TcpServer.hpp-TCP服务器框架7. ClientCal.cc-计算器客户端8. ServerCal.cc-计算器服务器9. 代码时序1. 服务器启…...

3.6c语言

#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <stdio.h> int main() {int sum 0,i,j;for (j 1; j < 1000; j){sum 0;for (i 1; i < j; i){if (j % i 0){sum i;} }if (sum j){printf("%d是完数\n", j);}}return 0; }#de…...

【 IEEE出版 | 快速稳定EI检索 | 往届已EI检索】2025年储能及能源转换国际学术会议(ESEC 2025)

重要信息 主会官网&#xff1a;www.net-lc.net 【论文【】投稿】 会议时间&#xff1a;2025年5月9-11日 会议地点&#xff1a;中国-杭州 截稿时间&#xff1a;见官网 提交检索&#xff1a;IEEE Xplore, EI Compendex, Scopus 主会NET-LC 2025已进入IEEE 会议官方列表!&am…...

JVM常用概念之本地内存跟踪

问题 Java应用启动或者运行过程中报“内存不足&#xff01;”&#xff0c;我们该怎么办? 基础知识 对于一个在本地机器运行的JVM应用而言&#xff0c;需要足够的内存来存储机器代码、堆元数据、类元数据、内存分析等数据结构&#xff0c;来保证JVM应用的成功启动以及未来平…...

JVM 的主要组成部分及其作用?

创作内容丰富的干货文章很费心力&#xff0c;感谢点过此文章的读者&#xff0c;点一个关注鼓励一下作者&#xff0c;激励他分享更多的精彩好文&#xff0c;谢谢大家&#xff01; JVM包含两个子系统和两个组件&#xff0c;两个子系统为Class loader(类装载)、Execution engine(执…...

从能耗监测到碳资产管理:智慧校园能源管理平台的迭代升级与实践启示

一、核心价值提炼 随着我国能源结构转型的持续优化和“双碳”目标的明确&#xff0c;构建现代化能源体系已成为国家发展的重要战略。在这一背景下&#xff0c;校园作为能源消耗的重要领域&#xff0c;其能源管理的智能化、绿色化转型显得尤为重要。本文将深入探讨校园智慧能源…...

数据库核心-redo、undo

一、redo日志 InnoDB操作以页为单位操作数据。并且首先操作内存中缓冲池的数据&#xff0c;然后刷新到disk中&#xff0c;但如果事务提交后宕机、未能刷新到disk中&#xff0c;就会造成不一致情况。 重做日志&#xff1a; 系统重启时按照修改步骤重新更新数据页 redo日志占用…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module

定义在 src\core\nginx.c ngx_module_t ngx_core_module {NGX_MODULE_V1,&ngx_core_module_ctx, /* module context */ngx_core_commands, /* module directives */NGX_CORE_MODULE, /* module type */NULL…...

SQLAlchemy系列教程:如何执行原生SQL

Python中的数据库交互提供了高级API。但是&#xff0c;有时您可能需要执行原始SQL以提高效率或利用数据库特定的特性。本指南介绍在SQLAlchemy框架内执行原始SQL。 在SQLAlchemy中执行原生SQL SQLAlchemy虽然以其对象-关系映射&#xff08;ORM&#xff09;功能而闻名&#xff…...

怎么实现: 大语言模型微调案例

怎么实现: 大语言模型微调案例 目录 怎么实现: 大语言模型微调案例输入一个反常识的问题:首都在北京天安门之后对输出模型进行测试:首都在北京天安门微调代码:测试微调模型代码:微调输出模型结构输出模型参数大小对比Qwen 2.5_0.5:53MB输出模型:951MB 是一样的,没有进行…...

【Linux内核系列】:深入理解缓冲区

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz ★★★ 本文前置知识&#xff1a; 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中&#xff0c;我们了解了文件的概念以及相关的系统调用接口&#xff0c;并…...