Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具

news2025/2/25 5:47:59

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。

Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布式的多用户能力,实时的分析,以及对复杂搜索语句的处理能力,使其在众多场景下,如企业搜索,日志和事件数据分析等,都有广泛的应用。

本文将介绍 Elastic Stack 组件 Logstash 的介绍、原理、安装与简单使用。


文章目录

        • 1、Logstash介绍与原理
          • 1.1、Logstash简介
          • 1.2、Logstash工作原理
          • 1.3、Logstash执行模型
          • 1.4、Logstash下载安装
        • 2、Logstash配置说明
          • 2.1、Logstash配置介绍
          • 2.2、Pipeline配置文件-输入
          • 2.3、Pipeline配置文件-过滤
          • 2.4、Pipeline配置文件-输出
          • 2.4、Settings配置文件
        • 3、Logstash使用示例
          • 3.1、Logstash Hello world
          • 3.2、日志格式处理
          • 3.3、将数据导入Elasticsearch


1、Logstash介绍与原理
1.1、Logstash简介

Logstash 是一个开源的数据收集引擎,它具有实时管道功能,可以用来统一处理来自不同源的数据,并将其发送到你选择的目标。Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等,可以对数据进行各种转换和处理,然后将数据发送到各种目标,如 Elasticsearch、Kafka、邮件通知等。

image-20231016113032292

Logstash 的主要特点包括:

  1. 多输入源:Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等。

  2. 数据处理:Logstash 可以对数据进行各种转换和处理,如过滤、解析、格式化等。

  3. 多输出目标:Logstash 可以将数据发送到各种目标,如 Elasticsearch、Kafka、邮件通知等。

  4. 插件机制:Logstash 提供了丰富的插件,可以方便地扩展其功能。

  5. 与 Elasticsearch 和 Kibana 的集成:Logstash 是 Elastic Stack(前称 ELK Stack)的一部分,与 Elasticsearch 和 Kibana 有很好的集成,可以方便地进行数据搜索、存储和可视化。

1.2、Logstash工作原理

Logstash 的工作原理可以分为三个主要步骤:输入(Input)、过滤(Filter)和输出(Output)。

  1. 输入(Input):Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等。在配置文件中,你可以指定一个或多个输入源。
  2. 过滤(Filter):输入数据被收集后,Logstash 可以对数据进行各种转换和处理。例如,你可以使用 grok 插件来解析非结构化的日志数据,将其转换为结构化的数据。你也可以使用 mutate 插件来修改数据,如添加新的字段、删除字段、更改字段的值等。
  3. 输出(Output):处理后的数据可以被发送到一个或多个目标。Logstash 支持多种类型的输出目标,包括 Elasticsearch、Kafka、邮件通知等。

这三个步骤是在 Logstash 的事件处理管道中顺序执行的。每个事件(例如,一行日志数据)都会经过输入、过滤和输出这三个步骤。在过滤阶段,如果一个事件被过滤器丢弃,那么它将不会被发送到输出目标。

image-20231016113504315

以上就是 Logstash 的基本工作原理。需要注意的是,Logstash 的配置是非常灵活的,你可以根据实际需求来选择合适的输入源、过滤器和输出目标。

1.3、Logstash执行模型

是的,你的理解是正确的。Logstash 的执行模型主要包括以下几个步骤:

  1. 每个 Input 启动一个线程:Logstash 会为每个输入插件启动一个线程,这些线程并行运行,从各自的数据源获取数据。

  2. 数据写入队列:输入插件获取的数据会被写入一个队列。默认情况下,这是一个存储在内存中的有界队列,如果 Logstash 意外停止,队列中的数据会丢失。为了防止数据丢失,Logstash 提供了两个特性:

    • Persistent Queues:这个特性会将队列存储在磁盘上,即使 Logstash 意外停止,队列中的数据也不会丢失。

    • Dead Letter Queues:这个特性会保存无法处理的事件。需要注意的是,这个特性只支持 Elasticsearch 作为输出源。

  3. 多个 Pipeline Worker 处理数据:Logstash 会启动多个 Pipeline Worker,每个 Worker 会从队列中取出一批数据,然后执行过滤器和输出插件。Worker 的数量和每次处理的数据量可以在配置文件中设置。

这种模型使得 Logstash 能够高效地处理大量的数据,并且可以通过调整配置来优化性能。

1.4、Logstash下载安装

Elastic 公司的官方下载页面的链接。在这个页面上,你可以下载 Elastic Stack 的各个组件,包括 Elasticsearch、Kibana、Logstash、Beats 等。这个页面提供了各个组件的最新版本下载链接,以及历史版本的下载链接:Past Releases of Elastic Stack Software | Elastic

在这里,我们将选择 Logstash,并确保所选的 Logstash 版本与我们正在使用的 Elasticsearch 版本一致:

image-20231016103230551

选择后选择「Download」开始下载,并在下载成功后解压到指定位置即可。


2、Logstash配置说明
2.1、Logstash配置介绍

Logstash 的配置主要分为两部分:Pipeline 配置文件和 Settings 配置文件。

  1. Pipeline 配置文件:这是 Logstash 的核心配置,用于定义数据处理的流程,包括输入(input)、过滤(filter)和输出(output)三个部分。每个部分都可以使用多种插件来完成特定的任务。例如,输入部分可以使用 file 插件从文件中读取数据,过滤部分可以使用 grok 插件解析日志,输出部分可以使用 elasticsearch 插件将数据发送到 Elasticsearch。
  2. Settings 配置文件:这是 Logstash 的全局配置,通常在 logstash.yml 文件中设置。这些配置包括 Logstash 实例的名称、数据存储路径、配置文件路径、自动重载配置、工作线程数量等。

这两部分的配置都是以 YAML 格式编写的,可以使用文本编辑器进行编辑。在 Logstash 启动时,它会首先读取 Settings 配置文件,然后加载并执行 Pipeline 配置文件。

2.2、Pipeline配置文件-输入

在 Logstash 的 Pipeline 配置文件中,输入(input)部分定义了数据的来源。Logstash 提供了多种输入插件,可以从各种数据源读取数据。

以下是一些常用的输入插件:

file:从文件中读取数据。常用的配置项包括 path(文件路径)和 start_position(开始读取的位置)。

input {
  file {
    path => "/path/to/your/logfile"
    start_position => "beginning"
  }
}

beats:从 Beats 客户端(如 Filebeat、Metricbeat 等)接收数据。常用的配置项包括 port(监听的端口号)。

input {
  beats {
    port => 5044
  }
}

http:通过 HTTP 请求接收数据。常用的配置项包括 port(监听的端口号)。

input {
  http {
    port => 8080
  }
}

jdbc:从数据库中读取数据。常用的配置项包括 jdbc_driver_library(JDBC 驱动的路径)、jdbc_driver_class(JDBC 驱动的类名)、jdbc_connection_string(数据库连接字符串)、jdbc_user(数据库用户名)和 jdbc_password(数据库密码)。

input {
  jdbc {
    jdbc_driver_library => "/path/to/your/jdbc/driver"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/yourdatabase"
    jdbc_user => "yourusername"
    jdbc_password => "yourpassword"
  }
}

kafka:在这个配置中,bootstrap_servers 参数指定了 Kafka 服务器的地址和端口,topics 参数指定了你想从哪个主题读取数据。

input {
  kafka {
    bootstrap_servers => "localhost:9092"
    topics => ["your_topic"]
  }
}

kafka 输入插件还有许多其他的配置项,你可以根据实际需求进行设置。例如,你可以设置 group_id 参数来指定消费者组,设置 auto_offset_reset 参数来指定在没有初始偏移量或当前偏移量不存在时该如何定位消费位置等。

具体的配置项和可能的值,你可以在 Logstash 的官方文档中找到。

以上就是一些常用的输入插件及其配置。你可以根据实际需求选择合适的插件和配置。需要注意的是,你可以在一个配置文件中定义多个输入,Logstash 会并行处理所有的输入。

2.3、Pipeline配置文件-过滤

在 Logstash 的 Pipeline 配置文件中,过滤(filter)部分定义了数据处理的规则。过滤器插件可以对数据进行各种操作,如解析、转换、添加和删除字段等。

以下是一些常用的过滤插件及其操作:

grok:grok 过滤器用于解析非结构化的日志数据,将其转换为结构化的数据。它使用模式匹配的方式来解析文本,每个模式是一个名字和正则表达式的组合。例如:

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

在这个配置中,grok 过滤器会尝试将 message 字段的内容匹配为 COMBINEDAPACHELOG 模式,这是一个预定义的模式,用于解析 Apache 日志。

mutate:mutate 过滤器用于修改事件数据,如添加新的字段、删除字段、更改字段的值等。例如:

filter {
  mutate {
    add_field => { "new_field" => "new_value" }
  }
}

在这个配置中,mutate 过滤器会向每个事件添加一个名为 new_field 的新字段,字段的值为 new_value。

date:date 过滤器用于解析日期和时间信息,将其转换为 Logstash 的 @timestamp 字段。例如:

filter {
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

在这个配置中,date 过滤器会尝试将 timestamp 字段的内容匹配为指定的日期和时间格式。

以上就是一些常用的过滤插件及其操作。你可以根据实际需求选择合适的插件和配置。需要注意的是,你可以在一个配置文件中定义多个过滤器,Logstash 会按照配置文件中的顺序依次执行这些过滤器。

2.4、Pipeline配置文件-输出

在 Logstash 的 Pipeline 配置文件中,输出(output)部分定义了处理后的数据应该发送到哪里。Logstash 提供了多种输出插件,可以将数据发送到各种目标。

以下是一些常用的输出插件:

elasticsearch:将数据发送到 Elasticsearch。常用的配置项包括 hosts(Elasticsearch 服务器的地址和端口)和 index(索引名称)。

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "your_index"
  }
}

file:将数据写入到文件。常用的配置项包括 path(文件路径)。

output {
  file {
    path => "/path/to/your/file"
  }
}

stdout:将数据输出到标准输出。常用的配置项包括 codec(编码格式),常用的值有 rubydebug(以 Ruby 的调试格式输出)。

output {
  stdout {
    codec => rubydebug
  }
}

kafka:将数据发送到 Kafka。常用的配置项包括 bootstrap_servers(Kafka 服务器的地址和端口)和 topic_id(主题名称)。

output {
  kafka {
    bootstrap_servers => "localhost:9092"
    topic_id => "your_topic"
  }
}

以上就是一些常用的输出插件及其配置。你可以根据实际需求选择合适的插件和配置。需要注意的是,你可以在一个配置文件中定义多个输出,Logstash 会将每个事件发送到所有的输出。

2.4、Settings配置文件

Logstash 的 Settings 配置文件通常是 logstash.yml,这是 Logstash 的全局配置文件,用于设置 Logstash 运行的一些基本参数。

以下是一些常见的配置项:

  1. node.name:设置 Logstash 实例的名称,默认值为当前主机的主机名

    node.name: test
    
  2. path.data:设置 Logstash 存储持久化数据的路径,默认值为 Logstash 安装目录下的 data 文件夹

    path.data: /var/lib/logstash
    
  3. path.config:设置 Pipeline 配置文件的路径。

    path.config: /etc/logstash/conf.d/*.conf
    
  4. config.reload.automatic:如果设置为 true,Logstash 会自动检测 Pipeline 配置文件的更改,并重新加载配置。

    config.reload.automatic: true
    
  5. pipeline.workers:设置处理事件的工作线程数量,通常设置为机器的 CPU 核心数。

    pipeline.workers: 2
    
  6. pipeline.batch.size:设置每个批处理的事件数量,增大这个值可以提高吞吐量,但也会增加处理延迟。

    pipeline.batch.size: 125
    
  7. pipeline.batch.delay:设置两个批处理之间的最大等待时间(以毫秒为单位)。

    pipeline.batch.delay: 50
    

以上就是一些常见的 Logstash Settings 配置项,你可以根据实际需求来修改这些配置。具体的配置项和可能的值,你可以在 Logstash 的官方文档中找到。


3、Logstash使用示例
3.1、Logstash Hello world

首先我们进行一个非常基础的 Logstash 使用示例。在这个示例中,Logstash 使用标准输入作为输入源,标准输出作为输出目标,且不指定任何过滤器。

  1. 在命令行中切换到 Logstash 的根目录,然后执行以下命令来启动 Logstash:
cd logstash-8.10.2
bin/logstash -e 'input { stdin { } } output { stdout {} }'

在这个命令中,-e 参数用于指定 Pipeline 配置,input { stdin { } } 表示使用标准输入作为输入源,output { stdout {} } 表示使用标准输出作为输出目标。

  1. Logstash 启动成功后,你可以在控制台输入一些文本,如 “hello world”,然后 Logstash 会将这些文本作为事件数据处理。

  2. Logstash 会自动为每个事件添加一些字段,如 @versionhost@timestamp,然后将处理后的事件输出到标准输出。

例如,你在控制台输入 “hello world” 后,可能会看到如下的输出:

{
    "@version": "1",
    "host": "localhost",
    "@timestamp": "2018-09-18T12:39:38.514Z",
    "message": "hello world"
}

在这个示例中,Logstash 仅仅是从标准输入获取数据,添加一些简单的字段,然后将数据输出到标准输出。这是最基础的使用方式,实际上 Logstash 还可以做很多复杂的数据处理和转换。

image-20231016154658466

3.2、日志格式处理

我们可以看到虽然上面示例使用标准输入作为输入源,并将数据输出到标准输出,但是日志内容作为一个整体被存放在 message 字段中,这样对后续存储及查询都极为不便。可以为该 pipeline 指定一个 grok filter 来对日志格式进行处理。

  1. first-pipeline.conf 中增加 filter 配置如下
input { stdin { } }
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}
output {
   stdout { codec => rubydebug }
}

其中 codec => rubydebug 用于美化输出

  1. 验证配置(注意指定配置文件的路径):
./bin/logstash -f first-pipeline.conf --config.test_and_exit 
  1. 启动命令:
./bin/logstash -f first-pipeline.conf --config.reload.automatic 

其中 --config.reload.automatic 选项启用动态重载配置功能

  1. 预期结果:

我们的配置中使用了 grok 过滤器来解析 COMBINEDAPACHELOG 格式的 Apache 日志。以下是一个符合这种格式的日志示例:

127.0.0.1 - - [28/Sep/2021:10:00:00 +0800] "GET /test.html HTTP/1.1" 200 2326 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"

这条日志记录了一个 HTTP 请求的信息,包括客户端 IP 地址、请求时间、请求方法和 URL、HTTP 版本、响应状态码、响应体的字节数、Referer 和 User-Agent 等。

我们可以将这个日志作为输入,然后 Logstash 会使用我们的配置来处理这个日志。处理后的结果会被输出到标准输出,格式为 Ruby 的调试格式。

3.3、将数据导入Elasticsearch

Logstash 作为 Elastic stack 的重要组成部分,其最常用的功能是将数据导入到 Elasticssearch 中。将 Logstash 中的数据导入到 Elasticsearch 中操作也非常的方便,只需要在 pipeline 配置文件中增加 Elasticsearch 的 output 即可。

  1. 首先要有一个已经部署好的 Logstash
  2. first-pipeline.conf 中增加 Elasticsearch 的配置,如下
input { stdin { } }
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
        topic_id => "logstash"
    }
}
  1. 启动命令:
./bin/logstash -f first-pipeline.conf --config.reload.automatic 

其中 --config.reload.automatic 选项启用动态重载配置功能

  1. 预期结果:

我们的配置中使用了 grok 过滤器来解析 COMBINEDAPACHELOG 格式的 Apache 日志。以下是一个符合这种格式的日志示例:

"127.0.0.1 - - [28/Sep/2021:10:00:00 +0800] "GET /test.html HTTP/1.1" 200 2326 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"

这条日志记录了一个 HTTP 请求的信息,包括客户端 IP 地址、请求时间、请求方法和 URL、HTTP 版本、响应状态码、响应体的字节数、Referer 和 User-Agent 等。

我们可以将这个日志作为输入,然后 Logstash 会使用我们的配置来处理这个日志。处理后的结果会被输出到标准输出,格式为 Ruby 的调试格式。

查询 Elasticsearch 确认数据是否正常上传:

curl -XGET 'http://localhost:9200/logstash/_search?pretty&q=response=200'

也可以使用 Kibana 查看:

image-20231016170052670

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1100063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqlserver系统存储过程添加用户学习

sqlserver有一个系统存储过程sp_adduser;从名字看是添加用户的;操作一下, 从错误提示看还需要先添加一个登录名,再执行一个系统过程sp_addlogin看一下, 执行完之后看一下,安全性-登录名下面有了rabbit&…

【ARM Coresight Debug 系列 -- Linux 断点 BRK 中断使用详细介绍】

文章目录 1.1 ARM BRK 指令1.2 BRK 立即数宏定义介绍1.3 断点异常处理流程1.3.1 el1_sync_handler1.3.2 el1_dbg 跟踪 1.4 debug 异常处理函数注册1.4.1 brk 处理函数的注册 1.1 ARM BRK 指令 ARMv8 架构的 BRK 指令是用于生成一个软件断点的。当处理器执行到 BRK 指令时&…

电脑办公助手之桌面便签,助力高效率办公

在现代办公的快节奏中,大家有应接不暇的工作,每天面对着复杂的工作任务,总感觉时间不够用,而且工作无厘头。对于这种状态,大家可以选择在电脑上安装一款好用的办公便签软件来辅助日常办公。 敬业签是一款专为办公人士…

android--屏幕适配

基础概念 像素密度 dpi ( √宽^2高^2 ) / 屏幕大小 手机分辨率 1080 * 1920 1080代表宽 1920代表高 单位为px像素 屏幕大小为英寸 标准的像素密度 mdpi 160dpi dp 密度无关像素 dp与px的转换 density (dpi / 16…

python 之enumerate()函数

文章目录 enumerate() 是 Python 中的一个内置函数,它用于在遍历可迭代对象(如列表、元组、字符串等)时同时获取每个元素的索引和值。这个函数非常有用,因为它允许您在迭代过程中轻松地访问元素的索引,而不需要手动维护…

基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持自定义业务表单流程(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 之前讲到了流程保存的时候还要看是否是自定义业务流程应用类型,若是保存的时候不再检查是否有关…

常见三维建模软件有哪些?各自的特点是什么?

常见的三维建模软件包括以下这些: 1. 3DS Max 3D Studio Max,简称3DS MAX,是当今世界上销售量最大的三维建模、动画及渲染软件。它的应用范围广泛,包括计算机游戏中的动画制作、影视片的特效制作等。3DS MAX的操作相对容易&#…

幸运的袋子(递归+回溯)

目录 一、题目 二、代码 一、题目 幸运的袋子__牛客网 二、代码 #include <iostream> #include <vector> #include <algorithm> using namespace std;static int _count 0; static int sum 0; static int product 1;void Combination(vector<int>…

JAVA学习(6)-全网最详细~

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

【Proteus仿真】【51单片机】电蒸锅温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602液晶、按键开关、蜂鸣器、DS18B20温度传感器&#xff0c;液位传感器、继电器控制加热保温装置等。 主要功能&#xff1a; 系统运行后&#…

Elasticsearch7.9.3保姆级安装教程

Linux版本Elasticsearch版本(待安装)Kibana版本(待安装)CentOS 77.9.37.9.3 一、下载地址 1、官网下载 打开地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch&#xff0c;按如图所示选择对应版本即可 2、采用wget下载 为了不必要的麻烦&#xff0c;建…

nginx.3——local的优先级和匹配方式

在http模块有server模块,在server模块才有location模块, location匹配的是uri location 匹配一旦成功&#xff0c;就不向下匹配 一、location的分类&#xff1a; 1.精确匹配 location /test 2.正则匹配 location ^~ :前缀匹配&#xff0c;以什么为开头 location ~ 区…

【RocketMQ系列四】消息示例-简单消息的实现

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

十五届蓝桥选拔赛Scratch-2023.08.20STEMA测评试题解析

2023年8月20日举行的第15届蓝桥杯STEMA测评Scratch编程中级组 T2 飞驰的高铁 具体要求: 1). 点击绿旗,角色、背景如图所示; 2). 按下一次数字1按键之后,画面中的景色持续向左侧水平移动(参照程序演示视频); 3). 按下一次数字2按键之后,程序结束。 评判标准: 5分:…

“岗课赛证”融通的物联网综合实训室建设方案

一、概述 随着5G技术的普及应用和产业经济的革新发展,物联网产业所呈现的广阔前景带来了对创新型技术技能人才的迫切需求。高职院校物联网专业建设也因此转变为面向国家战略性新兴产业发展需求。当前,“岗位课程竞赛证书”融通的培育理念,是高职院校物联网人才培养和专业优化的…

2023年中国商业版服务器操作系统市场发展规模分析:未来将保持稳定增长[图]

服务器操作系统一般指的是安装在大型计算机上的操作系统&#xff0c;比如Web服务器、应用服务器和数据库服务器等&#xff0c;是企业IT系统的基础架构平台&#xff0c;也是按应用领域划分的三类操作系统之一。同时服务器操作系统也可以安装在个人电脑上。 服务器操作系统分类 …

OpenAI将发布DALL·E3,多模态输出模式引爆热点

OpenAI在官网宣布&#xff0c;在今年10月份将通过API向ChatGPT Plus和企业版用户提供全新文本生成图片产品——DALLE 3。 OpenAI在去年 4 月推出了DALL・E 2 &#xff0c;时隔一年DALLE 3即将上线&#xff0c;OpenAI 表示&#xff0c;「DALL・E 3 比以往系统更能理解细微差别和…

17 - 并发容器的使用:识别不同场景下最优容器

在并发编程中&#xff0c;我们经常会用到容器。今天我要和你分享的话题就是&#xff1a;在不同场景下我们该如何选择最优容器。 1、并发场景下的 Map 容器 假设我们现在要给一个电商系统设计一个简单的统计商品销量 TOP 10 的功能。常规情况下&#xff0c;我们是用一个哈希表…

每天五分钟机器学习:如何解决欠拟合问题

本文重点 欠拟合是机器学习中常见的问题之一,指的是模型无法很好地拟合训练数据,导致预测结果的误差较大。欠拟合问题一般是由于模型过于简单或者训练数据过少导致的。下面将详细介绍如何解决欠拟合问题。 增加模型复杂度 1. 增加模型的层数:对于神经网络模型,可以增加隐…

1.SpringSecurity -快速入门、加密、基础授权

SpringSecurity简介 文章目录 SpringSecurity简介一、基本概念1.1 认证&#xff08;Authentication&#xff09;方式1.2 会话(Session)介绍1.3 授权(Authorization)介绍1.4 RBAC 二、SpringSecurity入门2.1 快速入门2.1.1 Maven坐标2.1.2 接口2.1.3 源码 2.2 配置文件配置用户名…