【云原生 | 59】Docker中通过docker-compose部署ELK

目录

1、组件介绍

2 、项目环境

2.1 各个环境版本

2.2 Docker-Compose变量配置

2.3 Docker-Compose服务配置

3、在Services中声明了四个服务

3.1 ElasticSearch服务

3.2 Logstash服务

3.3 Kibana服务

3.4 Filebeat服务

4、使用方法

4.1 方法一

4.2 方法二

5、启动


1、组件介绍

在ELK Stack中同时包括了Elastic Search、LogStash、Kibana以及Filebeat;

各个组件的作用如下:

  • Filebeat:采集文件等日志数据;

  • LogStash:过滤日志数据;

  • Elastic Search:存储、索引日志;

  • Kibana:用户界面;

各个组件之间的关系如下图所示:

image-20221117141758485

2 、项目环境

因为ElasticSearch是用Java语言编写的,所以必须安装JDK的环境,并且是JDK 1.8以上。

# 安装
sudo yum install java-11-openjdk -y
# 安装完成查看java版本
java -version
>>>:
[root@VM-0-5-centos config]# java --version
openjdk 11.0.16.1 2022-08-12 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.16.1.1-1.el7_9) (build 11.0.16.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.16.1.1-1.el7_9) (build 11.0.16.1+1-LTS, mixed mode, sharing)

2.1 各个环境版本

  • 操作系统:CentOS 7

  • Docker:20.10.18

  • Docker-Compose:2.4.1

  • ELK Version:7.4.2

  • Filebeat:7.4.2

  • JAVA:11.0.16.1

2.2 Docker-Compose变量配置

首先,在配置文件.env中统一声明了ES以及各个组件的版本:

.env

ES_VERSION=7.1.0

2.3 Docker-Compose服务配置

创建Docker-Compose的配置文件:

version: '3.4'
​
services:elasticsearch:image: "docker.elastic.co/elasticsearch/elasticsearch:${ES_VERSION}"environment:- discovery.type=single-nodevolumes:- /etc/localtime:/etc/localtime- /elk/elasticsearch/data:/usr/share/elasticsearch/data- /elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /elk/elasticsearch/plugins:/usr/share/elasticsearch/pluginsports:- "9200:9200"- "9300:9300"logstash:depends_on:- elasticsearchimage: "docker.elastic.co/logstash/logstash:${ES_VERSION}"volumes:- /elk/logstash/config/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.confports:- "5044:5044"links:- elasticsearch
​kibana:depends_on:- elasticsearchimage: "docker.elastic.co/kibana/kibana:${ES_VERSION}"volumes:- /etc/localtime:/etc/localtime# kibana.yml配置文件放在宿主机目录下,方便后续汉化- /elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.ymlports:- "5601:5601"links:- elasticsearch
​filebeat:depends_on:- elasticsearch- logstashimage: "docker.elastic.co/beats/filebeat:${ES_VERSION}"user: root # 必须为rootenvironment:- strict.perms=falsevolumes:- /elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro# 映射到容器中[作为数据源]- /elk/filebeat/logs:/usr/share/filebeat/logs:rw- /elk/filebeat/data:/usr/share/filebeat/data:rw# 将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况links:- logstash

3、在Services中声明了四个服务

  • elasticsearch

  • logstash

  • kibana

  • filebeat

3.1 ElasticSearch服务

创建docker容器挂在的目录

注意:chmod -R 777 /elk/elasticsearch 要有访问权限

mkdir -p /elk/elasticsearch/config/
mkdir -p /elk/elasticsearch/data/
mkdir -p /elk/elasticsearch/plugins/
echo "http.host: 0.0.0.0">>/elk/elasticsearch/config/elasticsearch.yml

在elasticsearch服务的配置中有几点需要特别注意:

  • discovery.type=single-node:将ES的集群发现模式配置为单节点模式;

  • /etc/localtime:/etc/localtime:Docker容器中时间和宿主机同步;

  • /docker_es/data:/usr/share/elasticsearch/data:将ES的数据映射并持久化至宿主机中;

  • /elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins:将插件挂载到主机;

  • /elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件挂载到主机;

3.2 Logstash服务

创建docker容器挂在的目录

注意:chmod -R 777 /elk/logstash 要有访问权限

mkdir -p /elk/logstash/config/conf.d

在logstash服务的配置中有几点需要特别注意:

  • /elk/logstash/config/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:将宿主机本地的logstash配置映射至logstash容器内部;

下面是LogStash的配置,在使用时可以自定义logstash.conf:

input {# 来源beatsbeats {# 端口port => "5044"}
}
​
output {elasticsearch {hosts => ["http://elasticsearch:9200"]index => "test"}stdout { codec => rubydebug }
}

在这里我们将原来tcp收集方式修改为由filebeat上报,同时固定了索引为test

3.3 Kibana服务

创建docker容器挂在的目录

注意:chmod -R 777 /elk/kibana 要有访问权限

mkdir -p /elk/kibana/config

在kibana服务的配置中有几点需要特别注意:

  • /elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:配置ES的地址;

  • /etc/localtime:/etc/localtime:Docker容器中时间和宿主机同步;

修改 kibana.yml 配置文件,新增(修改)配置项i18n.locale: "zh-CN"

[root@VM-0-5-centos ~]# cd /mydata/kibana/config
​
[root@VM-0-5-centos config]# cat kibana.yml 
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"        # 设置为中文
​
[root@VM-0-5-centos config]# 

3.4 Filebeat服务

注意:chmod -R 777 /elk/filebeat 要有访问权限

创建docker容器挂在的目录

mkdir -p /elk/filebeat/config
mkdir -p /elk/filebeat/logs
mkdir -p /elk/filebeat/data

在Filebeat服务的配置中有几点需要特别注意

  • 配置user: root和环境变量strict.perms=false:如果不配置可能会因为权限问题无法启动;

volumes:
-  - /elk/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
+    - <your_log_path>/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
-  - /elk/filebeat/logs:/usr/share/filebeat/logs:rw
+    - <your_log_path>:/usr/share/filebeat/logs:rw
-  - /elk/filebeat/data:/usr/share/filebeat/data:rw
+    - <your_data_path>:/usr/share/filebeat/logs:rw

同时还需要创建Filebeat配置文件:

filebeat.yml

filebeat.inputs:- type: logenabled: truepaths:# 容器中目录下的所有.log文件- /usr/share/filebeat/logs/*.logmultiline.pattern: ^\[multiline.negate: truemultiline.match: after
​
filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false
​
setup.template.settings:index.number_of_shards: 1
​
setup.dashboards.enabled: false
​
setup.kibana:host: "http://kibana:5601"
​
# 直接传输至ES
#output.elasticsearch:
# hosts: ["http://es-master:9200"]
# index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"
​
# 传输至LogStash
output.logstash:hosts: ["logstash:5044"]
​
processors:- add_host_metadata: ~- add_cloud_metadata: ~

上面给出了一个filebeat配置文件示例,实际使用时可以根据需求进行修改;

4、使用方法

4.1 方法一

使用前必看:

① 修改ELK版本

可以修改在.env中的ES_VERSION字段,修改你想要使用的ELK版本;

② LogStash配置

修改logstash.conf为你需要的日志配置;

③ 修改ES文件映射路径

修改docker-composeelasticsearch服务的volumes,将宿主机路径修改为你实际的路径:

volumes:- /etc/localtime:/etc/localtime
-  - /docker_es/data:/usr/share/elasticsearch/data
+ - [your_path]:/usr/share/elasticsearch/data

并且修改宿主机文件所属:

sudo chown -R 1000:1000 [your_path]

④ 修改filebeat服务配置

修改docker-composefilebeat服务的volumes,将宿主机路径修改为你实际的路径:

volumes:- ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
-    - /elk/filebeat/logs:/usr/share/filebeat/logs:rw
+    - <your_log_path>:/usr/share/filebeat/logs:rw
-    - /elk/filebeat/data:/usr/share/filebeat/data:rw
+    - <your_data_path>:/usr/share/filebeat/logs:rw

⑤ 修改Filebeat配置

修改filebeat.yml为你需要的配置;

Filebeat配置文件详情参见如下:

[vagrant@localhost filebeat-7.7.1]$ vi filebeat.yml
###################### Filebeat Configuration Example #########################
#=========================== Filebeat inputs =============================filebeat.inputs:# Each - is an input. Most options can be set at the input level, so
#每个-是一个输入。大多数选项可以在输入级别设置,因此
# you can use different inputs for various configurations.
#您可以为各种配置使用不同的输入。
# Below are the input specific configurations.
#下面是特定于输入的配置。- type: log# Change to true to enable this input configuration.#更改为true以启用此输入配置。enabled: true# Paths that should be crawled and fetched. Glob based paths.#应该被爬取的路径。基础路径。paths:#可配置多个路径- /home/vagrant/apache-tomcat-9.0.20/logs/catalina.*.out#- c:\programdata\elasticsearch\logs\*# Exclude lines. A list of regular expressions to match. It drops the lines that are#排除线路。要匹配的正则表达式列表。它去掉了# matching any regular expression from the list.#匹配列表中的任何正则表达式。#exclude_lines: ['^DBG']# Include lines. A list of regular expressions to match. It exports the lines that are#要匹配的正则表达式列表。它导出# matching any regular expression from the list.#匹配列表中的任何正则表达式。#include_lines: ['^INFO','^ERR', '^WARN']# Exclude files. A list of regular expressions to match. Filebeat drops the files that#排除的文件。要匹配的正则表达式列表。Filebeat删除的文件# are matching any regular expression from the list. By default, no files are dropped.#匹配列表中的任何正则表达式。默认情况下,没有文件被删除。#exclude_files: ['.gz$']# Optional additional fields. These fields can be freely picked#可选的附加字段。这些字段可以自由选择# to add additional information to the crawled log files for filtering#添加附加信息到抓取的日志文件进行过滤#fields:#  level: debug#  review: 1### Multiline options# Multiline can be used for log messages spanning multiple lines. This is common# Multiline可用于记录跨多行的消息。这是常见的# for Java Stack Traces or C-Line Continuation#用于Java堆栈跟踪或c行延续# The regexp Pattern that has to be matched. The example pattern matches all lines starting with [#必须匹配的regexp模式。示例模式匹配以[开头的所有行multiline.pattern: ^\[# Defines if the pattern set under pattern should be negated or not. Default is false.#定义模式下的模式集是否应该被否定。默认是falsemultiline.negate: true# Match can be set to "after" or "before". It is used to define if lines should be append to a pattern#Match可以设置为“after”或“before”。它用于定义是否应该将行追加到模式中# that was (not) matched before or after or as long as a pattern is not matched based on negate.#在之前或之后匹配的,或者只要模式没有基于negate匹配。    # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash#注意:在Logstash中,After等同于previous, before等同于nextmultiline.match: after#============================= Filebeat modules ===============================filebeat.config.modules:# Glob pattern for configuration loading#配置加载的Glob模式path: ${path.config}/modules.d/*.yml# Set to true to enable config reloading#设置为true可重新加载配置reload.enabled: false# Period on which files under path should be checked for changes#应该检查path下的文件是否有更改的时间段#reload.period: 10s#==================== Elasticsearch template setting ==========================setup.template.settings:index.number_of_shards: 1#index.codec: best_compression#_source.enabled: false#================================ General =====================================# The name of the shipper that publishes the network data. It can be used to group
#应该检查path下文件更改的时间段#发布网络数据的托运人的名称。它可以用来分组
# all the transactions sent by a single shipper in the web interface.
#由一个托运人在web interfac中发送的所有事务
#name:# The tags of the shipper are included in their own field with each
#每个托运人的标签都包含在它们自己的字段中
# transaction published.
#事务发表。
#tags: ["service-X", "web-tier"]# Optional fields that you can specify to add additional information to the
#属性中添加附加信息的可选字段
# output.
#fields:
#  env: staging#============================== Dashboards =====================================
# These settings control loading the sample dashboards to the Kibana index. Loading
#这些设置控制将样例指示板加载到Kibana索引。加载
# the dashboards is disabled by default and can be enabled either by setting the
#仪表板在默认情况下是禁用的,可以通过设置
# options here or by using the `setup` command.
#选项或使用' setup '命令。
#setup.dashboards.enabled: false# The URL from where to download the dashboards archive. By default this URL
#下载仪表板归档文件的URL。默认情况下,这个URL
# has a value which is computed based on the Beat name and version. For released
#有一个基于节拍名称和版本计算的值。对发布的
# versions, this URL points to the dashboard archive on the artifacts.elastic.co
#版本号,此URL指向工件.elastic.co上的仪表板存档
# website.
#setup.dashboards.url:#============================== Kibana =====================================# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
#从Beats 6.0.0版本开始,仪表板是通过Kibana API加载的。
# This requires a Kibana endpoint configuration.
#这需要Kibana端点配置。
setup.kibana:# Kibana Host# Scheme and port can be left out and will be set to the default (http and 5601)# In case you specify and additional path, the scheme is required: http://localhost:5601/path# IPv6 addresses should always be defined as: https://[2001:db8::1]:5601host: "192.168.0.140:5601"# Kibana Space ID# ID of the Kibana Space into which the dashboards should be loaded. By default,# the Default Space will be used.#space.id:#============================= Elastic Cloud ==================================# These settings simplify using Filebeat with the Elastic Cloud (https://cloud.elastic.co/).# The cloud.id setting overwrites the `output.elasticsearch.hosts` and
# `setup.kibana.host` options.
# You can find the `cloud.id` in the Elastic Cloud web UI.
#cloud.id:# The cloud.auth setting overwrites the `output.elasticsearch.username` and
# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.
#cloud.auth:#================================ Outputs =====================================# Configure what output to use when sending the data collected by the beat.
#配置在发送由节拍收集的数据时使用的输出。#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:# Array of hosts to connect to.#hosts: ["192.168.0.140:9200"]# Protocol - either `http` (default) or `https`.#protocol: "https"# Authentication credentials - either API key or username/password.#api_key: "id:api_key"#username: "elastic"#password: "changeme"#----------------------------- Logstash output --------------------------------
output.logstash:# The Logstash hostshosts: ["192.168.0.140:5044"]# Optional SSL. By default is off.# List of root certificates for HTTPS server verifications#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]# Certificate for SSL client authentication#ssl.certificate: "/etc/pki/client/cert.pem"# Client Certificate Key#ssl.key: "/etc/pki/client/cert.key"#================================ Processors =====================================# Configure processors to enhance or manipulate events generated by the beat.
#配置处理器以增强或操纵节拍生成的事件。processors:- add_host_metadata: ~- add_cloud_metadata: ~- add_docker_metadata: ~- add_kubernetes_metadata: ~#================================ Logging =====================================# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
#logging.level: debug# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publish", "service".
#logging.selectors: ["*"]#============================== X-Pack Monitoring ===============================
# filebeat can export internal metrics to a central Elasticsearch monitoring
# cluster.  This requires xpack monitoring to be enabled in Elasticsearch.  The
# reporting is disabled by default.# Set to true to enable the monitoring reporter.
#monitoring.enabled: false# Sets the UUID of the Elasticsearch cluster under which monitoring data for this
# Filebeat instance will appear in the Stack Monitoring UI. If output.elasticsearch
# is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch.
#monitoring.cluster_uuid:# Uncomment to send the metrics to Elasticsearch. Most settings from the
# Elasticsearch output are accepted here as well.
# Note that the settings should point to your Elasticsearch *monitoring* cluster.
# Any setting that is not set is automatically inherited from the Elasticsearch
# output configuration, so if you have the Elasticsearch output configured such
# that it is pointing to your Elasticsearch monitoring cluster, you can simply
# uncomment the following line.
#monitoring.elasticsearch:#================================= Migration ==================================# This allows to enable 6.7 migration aliases
#migration.6_to_7.enabled: true

4.2 方法二

cd ELK
#修改run.sh里面的ES_HOST、LOG_HOST、KB_HOST
chmod +x ./run.sh  #使脚本具有执行权限
./run.sh  #执行脚本

5、启动

随后使用docker-compose命令启动:

docker-compose up -d
Creating network "docker_repo_default" with the default driver
Creating docker_repo_elasticsearch_1 ... done
Creating docker_repo_kibana_1        ... done
Creating docker_repo_logstash_1      ... done
Creating docker_repo_filebeat_1      ... done

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

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

相关文章

MySQL8报错Public Key Retrieval is not allowedz 怎么解决?

问题描述 当我们使用数据库管理工具连接mysql8的时候&#xff0c;可能遇到报错&#xff1a; Public Key Retrieval is not allowed 解决办法 1、在连接属性中配置allowPublicKeyRetrieval设置为true 2、在连接URL中加上配置allowPublicKeyRetrieval为true

margin-left: auto;使元素靠右

摘要&#xff1a; 今天写样式遇到一个东西&#xff0c;就是需要表单居右显示的&#xff0c;但是作用了弹性布局&#xff0c;其他的都不行的&#xff0c;一开始使用了浮动&#xff0c;但是使用了浮动后盒子就不继承父盒子的宽度了&#xff0c;移动端还行&#xff0c;自动回到100…

被追着问UUID和自增ID做主键哪个好,为什么?

之前无意间看到群友讨论到用什么做主键比较好 其实 UUID 和自增主键 ID 是常用于数据库主键的两种方式&#xff0c;各自具有独特的优缺点。 UUID UUID 是一个由 128 位组成的唯一标识符&#xff0c;通常以字符串形式表示。它可以通过不同的算法生成&#xff0c;例如基于时间…

postgressql——Tuple学习(2)

Tuple含义 作用 PG并没有像Oracle那样的undo来存放旧数据&#xff0c;而且PG没有真正意义上的delete&#xff0c;而是将旧版本直接存放于relation文件中&#xff0c;也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器&#xff0c;…

【机器学习】解锁AI密码:神经网络算法详解与前沿探索

&#x1f440;传送门&#x1f440; &#x1f50d;引言&#x1f340;神经网络的基本原理&#x1f680;神经网络的结构&#x1f4d5;神经网络的训练过程&#x1f686;神经网络的应用实例&#x1f496;未来发展趋势&#x1f496;结语 &#x1f50d;引言 随着人工智能技术的飞速发…

视频集中存储LntonCVS视频监控汇聚平台智慧园区应用方案

智慧园区&#xff0c;作为现代化城市发展的重要组成部分&#xff0c;承载着产业升级的使命&#xff0c;是智慧城市建设的重要体现。在当前产业园区竞争日益激烈的情况下&#xff0c;越来越多的用户关注如何将项目打造成完善的智慧园区。 在智慧园区的建设过程中&#xff0c;各类…

【Linux】使用 s3fs 挂载 MinIO 桶

s3fs&#xff08;S3 File System&#xff09;是一个基于FUSE&#xff08;Filesystem in Userspace&#xff09;的用户空间文件系统&#xff0c;可以将Amazon S3存储桶挂载到本地文件系统。通过s3fs&#xff0c;我们可以像操作本地文件一样&#xff0c;对S3存储桶中的数据进行读…

【CALayer-CALayer的基本属性 Objective-C语言】

一、接下来,我们来说这个Layer啊, 1.首先,Layer能接触到的,就是我们之前说截图啊,就是我们self.view里面,有一个layer属性, [self.view.layer renderInContext:(CGContextRef t)]; 那个里面,有一个layer属性,然后呢,是CALayer类型的, 接下来,我们就来学习一…

Vim安装与配置教程(解决软件包Vim没有安装可候选)

一、Vim检测是否安装 1-输入vi查看是否安装&#xff1b; 2-按Tab键&#xff0c;显示以下字符为未安装&#xff1b; 3-显示以下字符为已安装&#xff08;可以看到有Vim&#xff09; 二、Vim安装过程 1. 打开终端&#xff0c;输入 sudo apt install vim; 2. 输入Y/y&#xff…

来聊聊Redis简单动态字符串SDS

写在文章开头 我们都知道redis基于单线程实现的一个高性能内存数据库,所以了解其底层设计,会让我们具备一个从微观的视角极致压榨redis性能的能力,这其中对于数据结构的设计也是非常巧妙,所以关于redis源码解析的系列将直接从最基本的字符串的设计说起。 Hi,我是 sharkCh…

母婴商城购物网站,基于 SpringBoot+Vue+MySQL 开发的前后端分离的母婴商城购物网站设计实现

目录 一. 前言 二. 功能模块 2.1. 前台功能 2.2. 用户信息管理 2.3. 商品分类管理 2.4. 商品信息管理 2.5. 商品资讯管理 三. 部分代码实现 四. 源码下载 一. 前言 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&a…

盘点好用的国产传输软件,看看哪个适合你

流动让数据释放价值&#xff0c;无论什么企业&#xff0c;什么行业&#xff0c;业务的正常开展均是以数据和文件的传输为基础&#xff0c;因此&#xff0c;对企业来说&#xff0c;文件传输工具是最基础但也是最举重若轻的。在琳琅满目的多种国产传输软件中&#xff0c;哪个是最…

Glassnode 内容主管:「减半」后的市场「抑郁」

原文标题&#xff1a;《Finance Bridge: Post-Halving Blues》撰文&#xff1a;Marcin Miłosierny&#xff0c;Glassnode 内容主管编译&#xff1a;Chris&#xff0c;Techub News 文章来源香港Web3媒体Techun News 摘要&#xff1a; 每月简报&#xff1a;4 月&#xff0c;尽…

gitlab之docker-compose汉化离线安装

目录 概述离线资源docker-compose结束 概述 gitlab可以去 hub 上拉取最新版本&#xff0c;在此我选择汉化 gitlab &#xff0c;版本 11.x 离线资源 想自制离线安装镜像&#xff0c;请稳步参考 docker镜像的导入导出 &#xff0c;无兴趣的直接使用在此提供离线资源 百度网盘(链…

Go语言之GORM框架(三)——Hook(钩子)与Gorm的高级查询

Hook(钩子) 和我们在gin框架中讲解的Hook函数一样&#xff0c;我们也可以在定义Hook结构体&#xff0c;完成一些操作&#xff0c;相关接口声明如下&#xff1a; type CreateUser interface { //创建对象时使用的HookBeforeCreate() errorBeforeSave() errorAfterCreate() …

【C#】委托

文章目录 委托自定义委托模板方法&#xff08;工厂模式回调(callback)函数&#xff08;观察者模式多播&#xff08;multicast&#xff09;委托委托的高级使用使用接口 重构 模板方法代码注意参考 委托 委托&#xff08;delegate&#xff09;是一种类型&#xff0c;定义了一种方…

实践部署 浦语·灵笔2 模型,写作图文并茂的文章

1 初步介绍 XComposer2 相关知识 浦语灵笔2 是基于 书生浦语2 大语言模型研发的突破性的图文多模态大模型&#xff0c;具有非凡的图文写作和图像理解能力&#xff0c;在多种应用场景表现出色&#xff0c;总结起来其具有&#xff1a; 自由指令输入的图文写作能力&#xff1a; 浦…

Android ANR Trace日志阅读分析技巧

什么是Trace日志 Trace日志是指ANR目录下的一份txt文件 adb pull /data/anr/traces.txt Trace日志有什么用 分析应用ANR无响应的问题&#xff0c; Trace怎么用 Cmd line: com.xx ABI: arm Build type: optimized Zygote loaded classes3682 post zygote classes3750 Intern…

uniapp - 填充页面

在上一篇文章中&#xff0c;创建了一个空白的文章模块页面。在这一篇文章&#xff0c;让我们来向页面中填充内容。 目录 页面效果涉及uniapp组件1.view2.swiper3.scroll-view4.属性解读1) class"style1 style2 .."2) circular单属性无赋值3) :autoplay"autoplay…

如何关闭MySQL凌晨12点自动弹窗?

要关闭 MySQL 在凌晨 12 点自动弹窗的行为&#xff0c;首先需要确定弹窗的具体原因。 打开“任务计划程序”&#xff1a; 按 Win R&#xff0c;输入 taskschd.msc&#xff0c;然后按 Enter。 在左侧导航栏中&#xff0c;选择“任务计划程序库”。 查找与 MySQL 相关的任务&…