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

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介

Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中,我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容包快速配置、索引设置、日志发射器管理和处理管道。

  1. 流(Streams):流作为对传入消息进行标记的方法。它可以实时将消息路由到不同的类别,并使用规则指示Graylog将消息路由到适当的流中。

  2. 搜索(Search):Graylog提供了一个搜索页面,可以直接搜索日志。使用类似于Lucene的简化语法,用户可以从下拉菜单中配置相对或绝对的时间范围。搜索结果可以保存,也可以作为仪表板小部件进行可视化,从搜索界面直接添加到仪表板中。

  3. 仪表板(Dashboards):仪表板是对日志事件中包含的信息进行可视化或摘要的方式。每个仪表板由一个或多个小部件组成,通过使用字段值生成数据来可视化或摘要事件日志数据,如计数、平均值或总数。用户可以创建指标、图表、图形和地图来更直观地呈现数据。

  4. 告警(Alerts):通过事件定义和条件创建告警。当特定条件满足时,将其存储为事件,并触发通知。

  5. 内容包(Content Packs):内容包可以加速特定数据源的设置过程。它可以包含输入/提取器、流、仪表板、告警和处理管道。例如,用户可以为支持安全用例创建自定义输入、流、仪表板和告警。然后,将内容包导出,并在新安装的Graylog实例上导入,以便节省配置时间和工作量。

  6. 索引(Indexes):索引是OpenSearch和Elasticsearch中存储数据的基本单位。索引集提供了保留、分片和复制等存储数据的配置选项。通过在每个索引上设置值,如保留和轮换策略,可以对不同的数据应用不同的处理规则。

  7. Graylog Sidecar:Graylog Sidecar是一种管理日志发射器(如Beats或NXLog)的代理工具。这些日志发射器用于收集Linux和Windows服务器的操作系统日志。日志发射器读取本地日志文件,然后将其发送到集中式日志管理解决方案。Graylog支持管理任何日志发射器作为后端。

  8. 处理管道(Processing Pipelines):Graylog的处理管道允许用户对特定类型的事件运行规则或一系列规则。通过与流关联,管道可实现消息的路由、拒绝列表、修改和丰富,提高数据处理的灵活性。

通过这些核心功能,Graylog提供了强大而灵活的工具来帮助用户收集、解析和分析日志数据,从而发现问题并做出相应决策。无论是小型企业还是大型组织,Graylog都为日志管理提供了全面可靠的解决方案。

Graylog最简架构

Graylog基于把日志存储在数据节点、使用Elasticsearch或OpenSearch作为搜索引擎来提供强大的日志管理和分析功能。

  • Graylog服务器
    Graylog服务器是Graylog架构中的核心组件,它通过与数据节点交互,为用户提供一个简化的数据访问和搜索接口。用户可以通过Graylog服务器提交搜索查询,而无需直接与数据节点进行交互,从而极大地简化了数据的访问和处理过程。
  • 数据节点
    日志数据存储在数据节点中,其中可以使用Elasticsearch或OpenSearch作为存储引擎。这两个开源搜索引擎具备强大的索引和搜索能力,使用户能够高效地查询和分析大量的日志数据。Graylog 5.1仅支持Elasticsearch的7.10.2版本!我们建议您使用OpenSearch 2.5作为数据节点以支持Graylog 5.1。
  • MongoDB
    MongoDB用于存储元数据,如用户信息和流配置。这些数据并不包含实际的日志数据,因此对系统性能影响较小。MongoDB运行在Graylog服务器进程旁边,占用的磁盘空间很小。
    在这里插入图片描述

之前的文章中【Graylog之最小化部署安装(Ubuntu 22.04)】有介绍如何在Ubuntu 22.04上最小化安装Graylog,这次我们换成在Docker中最小化来部署Garylog,同时我们也将原来的Elasticsearch换成了OpenSearch。

部署

主机设置

在启动 OpenSearch 之前,您应该查看一些重要的系统设置,这些设置可以影响服务的性能。

  • 关闭主机上的内存分页和交换以提高性能。
 sudo swapoff -a
  • 增加 OpenSearch 可用的内存映射数量。
# 检查 sysctl.conf 文件中是否已经存在 vm.max_map_count 设置
if grep -q "vm.max_map_count" /etc/sysctl.conf; then# 如果已存在设置,则使用 sed 命令将其修改为 262144sudo sed -i 's/vm.max_map_count.*/vm.max_map_count=262144/' /etc/sysctl.conf
else# 如果不存在设置,则在文件末尾添加新的设置echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
fi# 重新加载内核参数
sudo sysctl -p# 通过检查值来验证更改是否已应用
cat /proc/sys/vm/max_map_count

拉取如下三个镜像

docker pull mongo
docker pull opensearchproject/opensearch:latest
docker pull graylog/graylog:5.1

编辑Docker Compose文件并启动

version: '3'
services:mongo:image: mongorestart: alwaysvolumes:- mongo_data:/data/dbnetworks:- graylog-netopensearch:image: opensearchproject/opensearch:latestrestart: alwaysenvironment:- cluster.name=graylog- node.name=opensearch- discovery.type=single-node- network.host=0.0.0.0- action.auto_create_index=false- plugins.security.disabled=true- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536volumes:- opensearch_data:/usr/share/opensearch/datanetworks:- graylog-netgraylog:image: graylog/graylog:5.1restart: alwaysenvironment:- GRAYLOG_PASSWORD_SECRET=GrayLog@12345678- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/- GRAYLOG_TRANSPORT_EMAIL_ENABLED=true- GRAYLOG_TRANSPORT_EMAIL_HOSTNAME=smtp.tech.com- GRAYLOG_TRANSPORT_EMAIL_PORT=25- GRAYLOG_TRANSPORT_EMAIL_USE_AUTH=false- GRAYLOG_TRANSPORT_EMAIL_USE_TLS=false- GRAYLOG_TRANSPORT_EMAIL_USE_SSL=false- GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200- GRAYLOG_ROOT_TIMEZONE=Asia/Shanghaientrypoint: /usr/bin/tini -- wait-for-it opensearch:9200 --  /docker-entrypoint.shnetworks:- graylog-netdepends_on:- mongo- opensearchports:- 9000:9000- 1514:1514- 1514:1514/udp- 2055:2055volumes:- graylog_data:/usr/share/graylog/data- /etc/timezone:/etc/timezone- /etc/localtime:/etc/localtime
volumes:mongo_data:driver: localopensearch_data:driver: localgraylog_data:driver: local
networks:graylog-net:

以上主要定义了三个服务:MongoDB、OpenSearch和Graylog,并设置了它们的相关配置。
MongoDB服务使用mongo镜像,设置了持续重启(restart: always)。它将/data/db目录挂载为mongo_data卷,并与graylog-net网络关联。
OpenSearch服务使用opensearchproject/opensearch:latest镜像,同样设置了持续重启。它定义了一系列环境变量用于配置OpenSearch,包括集群名称、节点名称、发现类型、网络主机、禁用安全插件等等。此外,还设置了内存锁定和文件打开限制等系统限制。/usr/share/opensearch/data目录被挂载为opensearch_data卷,并与graylog-net网络关联。
Graylog服务使用graylog/graylog:5.1镜像,同样设置了持续重启。它定义了一系列环境变量来配置Graylog,包括密码密钥、根密码哈希、HTTP外部URI、电子邮件传输配置、OpenSearch主机等等。入口点是/usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh,它在启动Graylog之前将等待OpenSearch服务就绪。Graylog服务与graylog-net网络关联,并依赖于MongoDB和OpenSearch服务。端口映射包括9000用于Web界面、1514和2055用于接收日志数据。关于Graylog的一系列环境变量都可以通过环境变量进行设置。只需将参数名称以GRAYLOG_为前缀,并全部使用大写字母。具体配置参考【service.conf】。

另外,该docker-compose.yml文件定义了三个卷:mongo_dataopensearch_datagraylog_data,它们分别用于持久化存储MongoDB、OpenSearch和Graylog的数据。
最后,定义了一个名为graylog-net的网络,用于连接MongoDB、OpenSearch和Graylog服务。
请注意,您需要根据您自己的配置和需求进行适当的更改,例如更改密码、主机名、网络配置等。保存并命名为docker-compose.yml文件,然后在包含该文件的目录中运行以下命令启动这三个服务:

docker-compose up -d

这将启动MongoDB、OpenSearch和Graylog服务,并您可以通过访问http://hostip:9000/来访问Graylog的Web界面。以上YML文件中定义的默认用户名密码为 admin/admin
在这里插入图片描述

Reference:
[1] https://opensearch.org/docs/latest/install-and-configure/install-opensearch/docker/
[2] https://go2docs.graylog.org/5-0/setting_up_graylog/server.conf.html
[3] https://www.joda.org/joda-time/timezones.html
[4] https://go2docs.graylog.org/5-1/downloading_and_installing_graylog/docker_installation.htm
[5] https://hub.docker.com/r/graylog/graylog
[6] https://hub.docker.com/r/opensearchproject/opensearch
[7] https://hub.docker.com/_/mongo

相关文章:

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中,我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…...

TCP特点UDP编程

目录 1、tcp协议和udp协议 2、多线程并发和多进程并发: (1)多进程并发服务端 (2)多进程并发客户端: 3、tcp: 4、粘包 5、UDP协议编程流程 (1)服务器端: (2)客户端: 6、tcp状…...

超级计算机

超级计算机是一种高性能计算机,它能够以极高的速度执行大规模的计算任务。超级计算机通常由数千个甚至数百万个处理器组成,这些处理器能够同时处理大量的数据,从而实现高效的计算。超级计算机广泛应用于科学、工程、金融、天气预报等领域&…...

LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)

题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2 输出:[7,4,1] 解释…...

Kotlin 基础学习

NULL检查机制 Kotlin的空安全设计对于声明可为空的参数,在使用是进行空判断处理,有两种处理方式,字段后加 !! 像 java 一样抛出空异常,另外字段后面加 ? 可不做处理返回值为 null 或者配合 ?: 做空判断处理。 //类型后面加 ? 表…...

CW6B-90A-RCW6B-100A-RCW6B-110A-RCW6B-115A-R三相三线式滤波器

CW4B-10A-S CW4B-20A-S CW4B-30A-S三相三线式滤波器 CW6B-50A-S CW6B-60A-S CW6B-70A-S CW6B-80A-S CW6B-90A-S CW6B-100A-S CW6B-250A-S三相三线式滤波器 CW12B-3A-S(005) CW12B-6A-S(005) CW12B-10A-S(005) CW12B-20A-S(005 CW12B-30A-S(005) CW12B-40A-S(005)三…...

DP读书:鲲鹏处理器 架构与编程(九)鲲鹏920处理器片上系统

鲲鹏920片上系统 鲲鹏920处理器片上系统的组织与管理鲲鹏920片上系统的配置鲲鹏处理器多芯片系统鲲鹏2P多芯片系统鲲鹏4P多芯片系统鲲鹏920处理器片上系统和I/O桥组成的多芯片系统 鲲鹏920处理器的管理和安全架构鲲鹏920片上系统的PMU 鲲鹏920处理器片上系统的输入与输出鲲鹏92…...

【HBZ分享】java中的BitSet 与 Redis中的BitMap 与 布隆过滤器

BitMap的存储原理 bitMap他会标识出某个整数是否存在,存在即为1,不存在对应位即为0bitMap是存储int类型的,int 4byte, 1byte 8bit,因此bitMap数组中的每个下标可以标识出32个数字是否存在bitMap相当于一个个小格子&…...

《Linux从练气到飞升》No.16 Linux 进程地址空间

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

【算法题】7004. 判别首字母缩略词

题目: 给你一个字符串数组 words 和一个字符串 s ,请你判断 s 是不是 words 的 首字母缩略词 。 如果可以按顺序串联 words 中每个字符串的第一个字符形成字符串 s ,则认为 s 是 words 的首字母缩略词。例如,“ab” 可以由 [“a…...

ClickHouse(二十一):Clickhouse SQL DDL操作-临时表及视图

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...

redis乐观锁+启用事务解决超卖

乐观锁用于监视库存(watch),然后接下来就启用事务。 启用事务,将减库存、下单这两个步骤,放到一个事务当中即可解决秒杀问题、防止超卖。 但是!!!乐观锁,会带来" …...

智能画笔:如何利用AI绘画API打造独特的创作风格

在当今数字化时代,人工智能的迅猛发展正深刻地影响着各个领域,艺术创作也不例外。AI绘画 API 作为一种创新的工具,为艺术家提供了独特的机会,使他们能够在创作过程中借助人工智能技术,打造出独具个性的创作风格。本文将…...

ElasticSearchConfig

1. 添加配置 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>2. es 配置信息 import org.apache.http.HttpHost; import org.apache.http.auth.Au…...

解决vant组件 van-dialog造成的页面闪动问题

解决方案&#xff1a;该问题是因为van-dialog默认是scale&#xff0c;将这个属性改为fade即可...

SpringBoot内嵌Tomcat连接池分析

文章目录 1 Tomcat连接池1.1 简介1.2 架构图1.2.1 JDK线程池架构图1.2.2 Tomcat线程架构 1.3 核心参数1.3.1 AcceptCount1.3.2 MaxConnections1.3.3 MinSpareThread/MaxThread1.3.4 MaxKeepAliveRequests1.3.5 ConnectionTimeout1.3.6 KeepAliveTimeout 1.4 核心内部线程1.4.1 …...

分布式协调服务中的几个常见算法

分布式协调服务中的几个常见算法包括: 1. 选主算法 用于从多个节点中选举出一个节点作为主节点或者领导者,常见的算法有Bully算法、Ring算法等。 2. 原子广播算法 用于向分布式系统中的所有节点广播消息,保证所有节点都可以收到消息,典型的两阶段提交协议实现了原子广播。…...

易服客工作室:Houzez主题 - 超级房地产WordPress主题/网站

Houzez主题是全球流行的房地产经纪人和公司的WordPress主题。 Houzez Theme是专业设计师创造一流设计的超级灵活起点。它具有您的客户&#xff08;房地产经纪人或公司&#xff09;甚至可能做梦也想不到的功能。 网址&#xff1a;Houzez主题 - 超级房地产WordPress主题/网站 - …...

mysql通过binlog日志恢复误删数据

1、先查看binlog功能是否开启 show variables like %log_bin%;log_bin为ON说明可以使用binlog恢复&#xff0c;如果为OFF说明没有开启binlog。 2、删除部分数据做测试 3、查找binlog文件位置 show variables like %datadir%;cd /var/lib/mysqlls -l删除数据时间是在文件154与…...

Istio入门体验系列——基于Istio的灰度发布实践

导言&#xff1a;灰度发布是指在项目迭代的过程中用平滑过渡的方式进行发布。灰度发布可以保证整体系统的稳定性&#xff0c;在初始发布的时候就可以发现、调整问题&#xff0c;以保证其影响度。作为Istio体验系列的第一站&#xff0c;本文基于Istio的流量治理机制&#xff0c;…...

CSS行内,内部,外部以及优先级

1.内联样式表&#xff1a; 将样式编写到style标签里 <style>.context {color: red;} </style> 2. 行内样式&#xff1a; 在 HTML 标签中使用 style 属性设置 CSS 样式 <div style"font-size: 18px;">行内样式</div> 3.外联样式&#xff1…...

LCA——最近公共祖先

LCA问题是指在一棵树中找到两个节点的最近公共祖先。最近公共祖先是指两个节点在树中的最近的共同祖先节点。例如&#xff0c;在下面这棵树中&#xff0c;节点 6 6 6和节点7的最近公共祖先是节点 3 3 3。 1/ \2 3/ \ / \4 5 6 7解决LCA问题的方法有很多种&#xff…...

游戏开发与硬件结合,开启全新游戏体验!

游戏与硬件的结合可以通过多种方式实现&#xff0c;从改善游戏体验到创造全新的游戏玩法。以下是一些常见的游戏与硬件结合的方式&#xff1a; 虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术&#xff1a;VR和AR技术使玩家能够沉浸式地体验游戏…...

测试框架pytest教程(4)运行测试

运行测试文件 $ pytest -q test_example.py 会运行该文件内test_开头的测试方法 该-q/--quiet标志使输出保持简短 测试类 pytest的测试用例可以不写在类中&#xff0c;但如果写在类中&#xff0c;类名需要是Test开头&#xff0c;非Test开头的类下的test_方法不会被搜集为用…...

Linux 上 离线部署GeoScene Server Py3 运行时环境

默认安装ArcGIS Pro的时候&#xff0c;会自动部署上Python3环境&#xff0c;所以在windows上不需要考虑这个问题&#xff0c;但是linux默认并不部署Py3&#xff0c;因此需要单独部署&#xff0c;具体部署可以参考Linux 上 ArcGIS Server 的 Python 3 运行时—ArcGIS Server | A…...

Python+request+unittest实现接口测试框架集成实例

这篇文章主要介绍了Pythonrequestunittest实现接口测试框架集成实例&#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧 1、为什么要写代码实现接口自动化 大家知道很多接口测试工具可以实现对接口的测试&#xf…...

django/flask+python+vue汽车租赁管理系统_1ma2x

开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm . 课题主要分为三大模块&#xff1a;即管理员模块、用户模块和普通管理员模块&#xff0…...

胜者打仗,就像高山上决开积水,势不可挡

胜者打仗&#xff0c;就像高山上决开积水&#xff0c;势不可挡 【安志强趣讲《孙子兵法》16讲】 【原文】 是故胜兵先胜而后求战&#xff0c;败兵先战而后求胜。善用兵者&#xff0c;修道而保法&#xff0c;故能为胜败之政。 【注释】 修道&#xff1a;指从各方面修治“先立于不…...

stm32的命令规则

stm32型号的说明&#xff1a;以STM32F103RBT6这个型号的芯片为例&#xff0c;该型号的组成为7个部分&#xff0c;其命名规则如下&#xff1a;...

1. HBase中文学习手册之揭开Hbase的神秘面纱

揭开Hbase的神秘面纱 1.1 欢迎使用 Apache Hbase1.1.1 什么是 Hbase?1.1.2 Hbase的前世今生1.1.3 HBase的技术选型&#xff1f;1.1.3.1 不适合使用 HBase的场景1.1.3.2 适合使用 HBase的场景 1.1.4 HBase的特点1.1.4.1 HBase的优点1.1.4.2 HBase的缺点 1.1.5 HBase设计架构 1.…...

[线程/C++]线程同(异)步和原子变量

文章目录 1.线程的使用1.1 函数构造1.2 公共成员函数1.2.1 get_id()1.2.2 join()2.2.3 detach()2.2.5 joinable()2.2.6 operator 1.3 静态函数1.4 call_once 2. this_thread 命名空间2.1 get_id()2.2 sleep_for()2.3 sleep_until()2.4 yield() 3. 线程同步之互斥锁3.1 std:mute…...

全球网络加速器GA和内容分发网络CDN,哪个更适合您的组织使用?

对互联网用户来说&#xff0c;提供最佳的用户体验至关重要&#xff1a;网页加载时间过长、视频播放断断续续以及服务忽然中断等问题都足以在瞬间失去客户。因此可以帮助提高您的网站或APP提高加载性能的解决方案就至关重要&#xff1a;全球网络加速器和CDN就是其中的两种解决方…...

蓝凌OA custom.jsp 任意文件读取

​曾子曰&#xff1a;“慎终追远&#xff0c;民德归厚矣。” 漏洞复现 访问漏洞url&#xff1a; 出现漏洞的文件为 custom.jsp&#xff0c;构造payload&#xff1a; /sys/ui/extend/varkind/custom.jsp var{"body":{"file":"file:///etc/passwd&q…...

(二)结构型模式:7、享元模式(Flyweight Pattern)(C++实例)

目录 1、享元模式&#xff08;Flyweight Pattern&#xff09;含义 2、享元模式的UML图学习 3、享元模式的应用场景 4、享元模式的优缺点 5、C实现享元模式的简单实例 1、享元模式&#xff08;Flyweight Pattern&#xff09;含义 享元模式&#xff08;Flyweight&#xff09…...

laravel 多次查询请求,下次请求清除上次请求的where 条件

在Laravel中&#xff0c;可以使用where方法来添加查询条件&#xff0c;但是每次添加where条件时&#xff0c;都会在查询构造器中持久化这些条件&#xff0c;直到你手动重置它们。所以&#xff0c;如果你想在下一次查询中清除上次查询的where条件&#xff0c;有以下几种选择&…...

C++根据如下使用类MyDate的程序,写出类MyDate的定义,MyDate中有三个数据成员:年year,月month,日day完成以下要求

题目&#xff1a; 根据如下使用类MyDate的程序&#xff0c;写出类MyDate的定义&#xff0c;MyDate中有三个数据成员&#xff1a; 年year&#xff0c;月month&#xff0c;日day int year,month,day; void main() { MyDate d1, d2; d1.set(2015, 12, 31); d2.set(d1); d1.…...

微盟集团中报增长稳健 重点发力智慧零售AI赛道

零售数字化进程已从渠道构建走向了用户的深度运营。粗放式用户运营体系无法适应“基于用户增长所需配套的精细化运营能力”,所以需要有个体、群体、个性化、自动化运营——即在对的时候、以对的方式、把对的内容推给用户。 出品|产业家 2023年已经过半&#xff0c;经济复苏成为…...

设计模式(7)模板方法模式

一、定义&#xff1a; 定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类中&#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 //模板方法抽象类 public abstract class AbstractClass {//模板方法publ…...

2308C++协程流程9

参考 #include <协程> #include "简异中.cpp" //用来中文定义的.元<类 T>构 P;元<类 T>构 任务{用 承诺型P<T>;任务()默认;动 符号 协待()常 无异{构 等待器{极 直接协()常 无异{中 p.是准备好();}协柄 挂起协(协柄<>o)常 无异{p.连续…...

基于学习交流社区的自动化测试实现

一 项目介绍 项目名称 项目名称&#xff1a; 学习交流社区 项目介绍 项目介绍&#xff1a; 学习交流社区是一个基于Spring的前后端分离的在线论坛系统。使用了MySQL数据库来存储相关信息&#xff0c;项目完成后使用Xshell将其部署到云服务器上。 前端页面&#xff1a; 前端共由…...

2023-08-21力扣每日一题

链接&#xff1a; 2337. 移动片段得到字符串 题意&#xff1a; L可以和左边的_交换&#xff0c;R可以和右边的_交换&#xff0c;求判断A是否能通过交换&#xff08;不限次数&#xff09;变成B 解&#xff1a; 观察可知&#xff0c;如果存在RL,一定不能交换出LR&#xff0c…...

对象存储服务-MinIO基本集成

是什么 MinIO 是一个高性能的分布式对象存储服务&#xff0c;适合存储非结构化数据&#xff0c;如图片&#xff0c;音频&#xff0c;视频&#xff0c;日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…...

Yarn介绍及快速安装 - Debian/Ubuntu Linux

1.Yarn介绍 Yarn 是一个用于管理 JavaScript 包的快速、可靠和安全的包管理器。它是由 Facebook、Google、Exponent 和 Tilde 团队共同开发的&#xff0c;旨在提供比 npm 更快速、可靠的包管理体验。 以下是 Yarn 的一些主要特点和优势&#xff1a; 快速安装&#xff1a;Yarn…...

【新日语(2)】第10課 中国の生活に慣れるかどうか少し心配です

第10課 中国の生活に慣れるかどうか少し心配です 注释&#xff1a; &#xff5e;かどうか&#xff1a;“是否”。 练习A 一、例句 田中さんは鈴木さんに、30分ぐらい遅れると言いました。 田中先生告诉铃木先生&#xff0c;他会迟到大约30分钟。 注释&#xff1a; &…...

Python 网页解析初级篇:BeautifulSoup库的入门使用

在Python的网络爬虫中&#xff0c;网页解析是一项重要的技术。而在众多的网页解析库中&#xff0c;BeautifulSoup库凭借其简单易用而广受欢迎。在本篇文章中&#xff0c;我们将学习BeautifulSoup库的基本用法。 一、BeautifulSoup的安装与基本使用 首先&#xff0c;我们需要使…...

Spring Schedular 定时任务

大家好 , 我是苏麟 , 今天带来定时任务的实现 . Spring网站 : 入门 |计划任务 (spring.io) 什么是定时任务 通过时间表达式来进行调度和执行的一类任务被称为定时任务 定时任务实现 1.Spring Schedule (Spring boot 默认整合了) 2.Quartz(独立于Spring 存在的定时任务框架…...

营业额统计

营业额统计 # 题目描述 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日&…...

使用lodash的throttle函数会触发两次

当使用lodash的throttle函数时会触发两次&#xff0c;分别在最开始和最后。 严格来说不算是bug&#xff0c;因为官方文档写的很清楚。throttle函数其实有三个参数&#xff1a; _.throttle(func, [wait0], [options]) func: 要节流的函数 wait: 等待时间 options: 选项 op…...

如何使用CSS实现一个瀑布流布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现瀑布流布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…...

dfs之有重复字符串的排列组合

https://leetcode.cn/problems/permutation-ii-lcci/description/ ■ 题目描述 考古问题&#xff0c;假设以前的石碑被打碎成了很多块&#xff0c;每块上面都有一个或若干个字符&#xff0c;请你写个程序来把之前石碑上文字可能的组合全部写出来&#xff0c;按升序进行排列。…...