关于部署ELK和EFLK的相关知识

文章目录

    • 一、ELK日志分析系统
      • 1、ELK简介
        • 1.2 ElasticSearch
        • 1.3 Logstash
        • 1.4 Kibana(展示数据可视化界面)
        • 1.5 Filebeat
      • 2、使用ELK的原因
      • 3、完整日志系统的基本特征
      • 4、ELK的工作原理
    • 二、部署ELK日志分析系统
      • 1、服务器配置
      • 2、关闭防火墙
      • 3、ELK ElasticSearch集群部署(在node1、node2节点上操作)
        • 3.1 环境准备(更改主机名、配置域名解析、查看Java环境)
        • 3.2 部署ElasticSearch软件
          • 3.2.1 安装elasticsearch-rpm包
          • 3.2.2 加载系统服务
          • 3.2.3 修改elasticsearch主配置文件
          • 3.2.4 创建数据存放路径并授权
          • 3.2.5 启动elasticsearch
          • 3.2.6 查看节点信息
        • 3.3 安装Elasticsearch-head插件
          • 3.3.1 编译安装node
          • 3.3.2 安装phantomjs
          • 3.3.3 安装Elasticsearch-head数据可视化工具
          • 3.3.4 修改Elasticsearch主配置文件
          • 3.3.5 启动elasticsearch-head服务
          • 3.3.6 通过Elasticsearch-head查看ES信息
          • 3.3.7 插入索引
          • 3.3.8 浏览器查看索引信息
      • 4、ELK-Logstash部署(在Apache节点上操作)
        • 4.1 更改主机名
        • 4.2 安装Apache服务(httpd)
        • 4.3 安装Java环境
        • 4.4 安装logstash
        • 4.5 测试Logstash
          • 4.5.1 Logstash命令常用选项
          • 4.5.2 定义输入和输出
            • 4.5.2.1 标准输入、输出
            • 4.5.2.2 rubydebug输出
            • 4.5.2.3 输出到ES
        • 4.6 定义logstash配置文件
        • 4.7 访问测试
      • 5、ELK-Kibana部署(在node1节点上操作)
        • 5.1 安装Kibana
        • 5.2 设置Kibana的主配置文件
        • 5.3 启动kibana服务
        • 5.4 验证kibana
        • 5.5 将Apache服务器的日志(访问的、错误的)添加到ES并通过kibana显示
        • 5.6 浏览器访问
    • 三、ELFK(Filebeat+ELK)
      • 1、Filebeat的作用
      • 2、ELFK工作流程
      • 3、ELFK的部署
        • 3.1 服务器配置
        • 3.2 服务器环境
        • 3.3 安装filebeat
        • 3.4 修改filebeat主配置文件
        • 3.5 在logstash组件所在节点(apache节点)上新建一个logstash配置文件
        • 3.6 浏览器验证

一、ELK日志分析系统

1、ELK简介

  • ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kibana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。
  • 提高安全性
  • 集中存放日志(集中存放时对日志处理困难)
1.2 ElasticSearch
  • ES是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
  • ES是用JAVA开发的,可通过RESTful Web接口,让用户可以通过浏览器与ES通信。
  • ES是个分布式搜索和分析引擎,优点是能对大容量的数据进行接近实时的存储、搜索和分析操作。
1.3 Logstash
  • Logstash作为数据收集引擎。它支持动态的从各种数据源搜索数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给ES。
  • Logstash由JRuby语言编写,运行在JAVA虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理。
  • 三个组件:input(数据采集)、filter(数据过滤)、 output(数据输出)
1.4 Kibana(展示数据可视化界面)
  • Kibana是基于Node.js开发的展示工具,可以为Logstash和ES提供图形化的日志分析Web界面展示,可以汇总、分析和搜索重要数据日志。
1.5 Filebeat
  • Filebeat是一款轻量级的开源日志文件数据搜索器。通常在需要采集数据的客户端安装Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给ES存储,性能上相比运行于JVM上的logstash优势明显,是对它的替代。

2、使用ELK的原因

  • 日志主要包括日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
  • 往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
  • 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

3、完整日志系统的基本特征

  • 收集:能够采集多种来源的日志数据
  • 传输:能够稳定的把日志数据解析过滤并传输到存储系统
  • 存储:存储日志数据
  • 分析:支持UI分析
  • 警告:能够提供错误报告,监控机制

4、ELK的工作原理

image-20240411085513327

  • 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Logstash。
  • Logstash收集日志,将日志格式化并输出到es群集中。
  • ES对格式化后的数据进行索引和存储。
  • Kibana从ES群集中查询数据生成图表,并进行前端数据的显示。

二、部署ELK日志分析系统

1、服务器配置

服务器配置主机名ip地址主要软件部署
node1节点2C/4Gnode1192.168.10.12ElasticSearch、Kibana
node2节点2C/4Gnode2192.168.10.13ElasticSearch
apache节点-apache192.168.10.14Logstash、Apache

2、关闭防火墙

systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护

3、ELK ElasticSearch集群部署(在node1、node2节点上操作)

3.1 环境准备(更改主机名、配置域名解析、查看Java环境)
hostnamectl set-hostname node1(或者node2)
su
#修改主机名echo "192.168.10.12 node1" >> /etc/hosts
echo "192.168.10.13 node2" >> /etc/hosts
#主机名追加到/etc/hosts文件的末尾(可以通过node主机名来访问IP地址)java -version
#查看Java版本信息
#如果没有安装,可使用“yum install -y java”进行安装
  • node1

image-20240410140624877

  • node2

image-20240410140725076

3.2 部署ElasticSearch软件
3.2.1 安装elasticsearch-rpm包
cd /opt
#切换目录#上传elasticsearch-5.5.0.rpm到/opt目录下rpm -ivh elasticsearch-5.5.0.rpm
#安装
  • node1

image-20240410220520127

  • node2

image-20240410220530247

3.2.2 加载系统服务
systemctl daemon-reload
#重新加载systemctl enable elasticsearch.service 
#开机自启
  • node1

image-20240410141559051

  • node2

image-20240410141621288

3.2.3 修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#备份配置文件#修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
#17行,取消注释,指定群集名称
node.name: node节点
#23行,取消注释,指定节点名称(node1节点为node1,node2节点为node2)
path.data: /data/elk_data
#33行,取消注释,指定数据存放路径
path.logs: /var/log/elasticsearch/
#37行,取消注释,指定日志存放路径
bootstrap.memory_lock: false
#43行,取消注释,改为在启动的时候不锁定内存,开启为true
network.host: 0.0.0.0
#55行,取消注释,设置监听地址,0.0.0.0代表所有地址
http.port: 9200
#59行,取消注释,ES服务的默认监听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#68行,取消注释,集群发现通过单播实现,指定要发现的节点node1、node2grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#过滤查看修改的配置文件
  • node1

image-20240410145031241

image-20240410145200640

  • node2

image-20240410152029308

3.2.4 创建数据存放路径并授权
mkdir -p /data/elk_data
#创建目录chown elasticsearch:elasticsearch /data/elk_data/
#修改属主、属组
  • node1

image-20240410150612458

  • node2

image-20240410150634895

3.2.5 启动elasticsearch
systemctl start elasticsearch.service 
#开启es服务ss -natp | grep 9200
#查看进程  
  • node1

image-20240410151331609

  • node2

image-20240410151344250

3.2.6 查看节点信息
  • 浏览器访问http://192.168.10.12:9200、http://192.168.10.13:9200查看节点node1、node2的信息

image-20240410221415261

image-20240410221339854

  • 浏览器访问http://192.168.10.12:9200/_cluster/health?pretty、http://192.168.10.13:9200/_cluster/health?pretty查看群集的健康情况,可以看到status值为green(绿色),表示节点健康运行,数据和副本全都没有问题(红色:表示数据都不完整、黄色:表示数据完整,但副本有问题)

image-20240410152556788

image-20240410152501110

  • 浏览器访问http://192.168.10.12:9200/_cluster/state?pretty检查群集状态信息

image-20240410221725711

使用上述方式查看群集的状态对用户并不友好,可以通过安装Elasticsearch-head插件,更方便的对群集进行管理。

3.3 安装Elasticsearch-head插件
  • ES在5.0版本后,插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。安装Elasticsarch-head需要提前安装好依赖软件node和phantomjs。

node

  • 是一个基于Chrome V8引擎的JavaScript运行环境

phantomjs

  • 是一个基于webkit的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于webkit浏览器做的事情,它都可以做到。
3.3.1 编译安装node
cd /opt
#切换目录#上传软件包node-v8.2.1.tar.gz(编译工具)到/opt目录yum install -y gcc gcc-c++ make
#安装依赖环境tar xf node-v8.2.1.tar.gz
#解压cd node-v8.2.1/
#切换目录./configure
#执行,进行配置make -j4 && make install
#编译及安装(安装时间会久一点)
  • node1

image-20240410222525884

image-20240410154302740

  • node2

image-20240410222632536

image-20240410223812799

3.3.2 安装phantomjs
cd /opt
#切换目录#上传软件包phantomjs-2.1.1-linux-x86_64.tar.bz2到/opt目录tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
#解压到指定目录cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
#切换目录cp phantomjs /usr/local/bin
#复制
  • node1

image-20240410224059546

  • node2

image-20240410224141859

3.3.3 安装Elasticsearch-head数据可视化工具
cd /opt
#切换目录#上传软件包elasticsearch-head.tar.gz到/opt目录tar xf elasticsearch-head.tar.gz -C /usr/local/src/
#解压到指定目录/usr/local/src/cd /usr/local/src/elasticsearch-head/
#切换目录npm install
#安装
  • node1

image-20240410224417758

  • node2

image-20240410224434172

3.3.4 修改Elasticsearch主配置文件
#修改配置文件,末行添加以下内容
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true	
#开启跨域访问支持,默认为false
http.cors.allow-origin: "*"
#指定跨域访问允许的域名地址为所有systemctl restart elasticsearch.service
#重启服务
  • node1

image-20240410160351635

  • node2

image-20240410160624398

3.3.5 启动elasticsearch-head服务
cd /usr/local/src/elasticsearch-head/
#切换目录npm run start &
#后台开启ss -natp | grep 9100
#查看进程#注:必须在解压后的elasticsearch-head目录下启动服务,进程会读取该目录下的gruntfile.js文件,否则可能启动失败。
  • node1

image-20240410224726162

  • node2

image-20240410224740433

3.3.6 通过Elasticsearch-head查看ES信息
  • 通过浏览器访问http://192.168.10.12:9100地址并连接群集。如果看到群集健康值为green,代表群集很健康。

  • node1

image-20240410172306684

  • node2

image-20240410172157373

3.3.7 插入索引
  • 通过命令插入一个测试索引,索引为index-demo,类型为test
curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
#发送http请求,向运行在localhost:9200的Elasticsearch服务器的index-demo索引的test类型中,更新或创建一个ID为1的文档,文档的内容是{"user":"zhangsan","mesg":"hello world"}#-X指定HTTP请求方法为PUT
#-H表示定义类型
#-d表示指定内容
  • node1

image-20240410172934992

  • node2

image-20240410172945334

3.3.8 浏览器查看索引信息
  • 浏览器访问http://129.168.10.13:9100查看索引信息,可以看见索引默认被分片为5个,并且有一个副本。

image-20240410180610750

点击“数据浏览”,会发现在node1上创建的索引为index-demo,类型为test的相关信息。显示详细数据

image-20240410192154140

4、ELK-Logstash部署(在Apache节点上操作)

  • Logstash一般部署在需要监控其日志的服务器。在本案例中,Logstash部署在Apache服务器上,用于收集Apache的日志信息并发送到Elasticsearch。
4.1 更改主机名
  • ip:192.168.10.14
hostnamectl set-hostname apache
su
#修改主机名systemctl stop firewalld
setenforce 0
#关闭防火墙和防护中心

image-20240410180933444

4.2 安装Apache服务(httpd)
yum install -y httpd
#安装httpdsystemctl start httpd
#开启服务

image-20240410181445521

4.3 安装Java环境
yum install -y java
#安装Javajava -version
#查看Java版本

image-20240410181228801

4.4 安装logstash
cd /opt
#切换目录#上传软件包logstash-5.5.1.rpm到/opt目录下rpm -ivh logstash-5.5.1.rpm
#安装systemctl start logstash.service
#开机自启ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#做软连接

image-20240410182414850

4.5 测试Logstash
4.5.1 Logstash命令常用选项
常用选项说明
-f通过这个选项可以指定Logstash的配置文件,根据配置文件配置Logstash的输入和输出流
-e从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当做Logstash的配置(如果是空,则默认使用stdin作为输入,stdout作为输出)
-t测试配置文件是否正确,然后退出
4.5.2 定义输入和输出
4.5.2.1 标准输入、输出
  • 输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
#定义输入和输出www.baidu.com
#键入内容(标准输入)
2024-04-10T11:23:53.306Z apache www.baidu.com#输入结果(标准输出)

image-20240410192508381

4.5.2.2 rubydebug输出
  • 使用rubydebug输出详细格式显示,codec为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
##定义输入和输出www.baidu.com
#键入内容(标准输入){"@timestamp" => 2024-04-10T11:25:58.794Z,"@version" => "1","host" => "apache","message" => "www.baidu.com"
}
#显示输出结果(处理后的结果)

image-20240410192650349

4.5.2.3 输出到ES
  • 使用logstash将写入到ES中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.12:9200"] } }'
#将logstash输出结果写入到es中www.baidu.com
#键入内容(标准输出)#结果不在标准输出显示,而是发送至ES,可浏览器访问http://192.168.10.12:9100查看索引和数据

image-20240410193025169

image-20240410193308017

image-20240410193612962

4.6 定义logstash配置文件
  • logstash配置文件基本由三部分组成:input输入、output输出以及filter过滤(可选,根据需要选择使用)。

格式如下:

input {...}
output {...}filter {...}
  • 在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:
input {file { path =>"/var/log/messages" type =>"syslog"}file { path =>"/var/log/httpd/access.log" type =>"apache"}}
  • 修改logstash配置文件,让其收集系统日志/var/log/messages,并将其输出到ES中。
chmod +r /var/log/messages
#赋予读的权限,让Logstash可以获取到该文件的内容vim /etc/logstash/conf.d/system.conf
#该文件需自行创建,文件名可自定义
input {file{path =>"/var/log/messages"#指定要收集的日志的位置type =>"system"#自定义日志类型标识start_position =>"beginning"#表示从开始处收集}
}
output {elasticsearch{#输出到EShosts =>["192.168.10.12:9200", "192.168.10.13:9200"]#指定ES服务器的地址和端口,为避免单机故障,建议写全index =>"system-%{+YYYY.MM.dd}"#指定输出到ES的索引格式}
}systemctl restart logstash.service
#重启服务

image-20240410194023629

4.7 访问测试
  • 浏览器访问http://192.168.10.12:9100查看索引信息

image-20240410231827773

image-20240410194248312

5、ELK-Kibana部署(在node1节点上操作)

5.1 安装Kibana
cd /opt
#切换目录#上传软件包kibana-5.5.1-x86_64.rpm到/opt目录rpm -ivh kibana-5.5.1-x86_64.rpm
#安装

image-20240410202226156

5.2 设置Kibana的主配置文件
cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
#备份配置文件#编辑配置文件
vim /etc/kibana/kibana.yml
server.port: 5601
#2行,取消注释,kibana服务的默认监听端口为5601
server.host: "0.0.0.0"
#7行,取消注释,设置kibana的监听地址,0.0.0.0代表所有地址
elasticsearch.url: "http://192.168.10.12:9200"
#21行,取消注释,设置和ES建立连接的地址和端口
kibana.index: ".kibana"
#30行,取消注释,设置在ES中添加.kibana索引

image-20240410203008355

5.3 启动kibana服务
systemctl start kibana.service 
#开启服务systemctl enable kibana.service 
#开启自启ss -natp | grep 5601
#查看进程

image-20240410203445279

5.4 验证kibana
  • 浏览器访问http://192.168.10.12:5601

image-20240410225744851

  • 第一次登录需要添加一个ES索引输入system-*

image-20240410225857917

  • 索引添加完成后,点击“Discover”按钮可查看图表信息及日志信息

image-20240410230029082

  • 数据展示可以分类显示,例如:在“Available Fileds”中add添加“_type”查看

image-20240410230551732

5.5 将Apache服务器的日志(访问的、错误的)添加到ES并通过kibana显示
  • apache服务器
#apache服务器添加配置,将日志(访问的、错误的)添加到ES并通过kibana显示
vim /etc/logstash/conf.d/apache_log.conf
input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}
}
output {if [type] == "access" {elasticsearch {hosts => ["192.168.10.12:9200", "192.168.10.13:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.10.12:9200", "192.168.10.13:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}
}cd /etc/logstash/conf.d/
#切换目录/usr/share/logstash/bin/logstash -f apache_log.conf
#启动 Logstash 服务并读取指定的配置文件

image-20240410231147591

image-20240410231426249

5.6 浏览器访问
  • 浏览器访问apache服务

image-20240410232539826

  • 浏览器访问http://192.168.10.12:9100查看索引是否创建

image-20240410232725779

  • 浏览器访问http://192.168.10.12:5601登录kibana,添加“apache_access、”和“apache_error”索引,查看日志信息。

image-20240410232949097

image-20240410233223269

image-20240410233335800

image-20240410233433211

三、ELFK(Filebeat+ELK)

1、Filebeat的作用

  • 由于logstash会大量占用系统的内存资源,一般我们会使用filebeat替换logstash收集日志的功能,组成ELFK架构。

  • 或用fluentd替代logstash组成EFK(elasticsearch/fluentd/kibana),由于fluentd是由Go语言开发的,一般在K8S环境中使用较多。

2、ELFK工作流程

  • filebeat将日志收集后交由logstash处理
  • logstash进行过滤、格式化等操作,满足过滤条件的数据将发送给ES
  • ES对数据进行分片存储,并提供索引功能
  • kibana对数据进行图形化的web展示,并提供索引接口

3、ELFK的部署

3.1 服务器配置
服务器配置主机名ip地址主要软件部署
node1节点2C/4Gnode1192.168.10.12ElasticSearch、Kibana
node2节点2C/4Gnode2192.168.10.13ElasticSearch
apache节点-apache192.168.10.14Logstash、Apache
filebeat节点filebeat192.168.10.15Filebeat
  • 在ELK的基础上,增加一台filebeat服务器,因此只需再前述ELK部署的前提下进一步操作。
3.2 服务器环境
  • filebeat节点
hostnamectl set-hostname filebeat
su
#修改主机名systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护

image-20240410234140453

3.3 安装filebeat
  • filebeat节点
cd /opt
#切换目录#上传filebeat-6.6.1-x86_64.rpm安装包rpm -ivh filebeat-6.6.1-x86_64.rpm
#安装systemctl daemon-reload
#重新加载systemctl enable filebeat.service 
#开机自启

image-20240411150312339

3.4 修改filebeat主配置文件
  • filebeat节点
cd /etc/filebeat/
#切换目录cp filebeat.yml filebeat.yml.bak
#备份配置文件#编辑配置文件
vim filebeat.yml
filebeat.inputs:
- type: log
#21行,指定log类型,从日志文件中读取消息enabled: true#24行,开启日志收集功能,默认为false- /var/log/*.log#28行,指定监控的日志文件- /var/log/messages#29行,添加收集/var/log/messagesfields: #31行,添加以下内容,注意格式service_name: filebeatlog_type: logservice_id: 192.168.10.15#-------------------------- Elasticsearch output ------------------------------#该区域内容全部注释(152行、154行)#----------------------------- Logstash output --------------------------------output.logstash:#165行,取消注释hosts: ["192.168.10.14:5044"]#167行,取消注释,指定logstash的IP和端口号systemctl start filebeat.service
#开启服务systemctl status filebeat.service
#查看状态

image-20240411151348974

image-20240411151300196

image-20240411151511397

3.5 在logstash组件所在节点(apache节点)上新建一个logstash配置文件
cd /etc/logstash/conf.d/
#切换目录#修改配置文件
vim logstash.conf
input {beats {port => "5044"}
}
output {elasticsearch {hosts => ["192.168.10.12:9200", "192.168.10.13:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}/usr/share/logstash/bin/logstash -f apache_log.conf
#启动 Logstash 服务并读取指定的配置文件(注意此处读取的配置文件还是apache_log.conf,只能指定使用一个配置的数据目录,否则会报错)#若是新建索引filebeat不显示,重启logstash服务,然后重新启动logstash并读取配置文件再次查看

image-20240410234501732

3.6 浏览器验证
  • 浏览器访问http://192.168.10.12:9100

image-20240411082201732

  • 浏览器访问http://192.168.10.12:5601登录kibana,
    添加“filebeat-*”索引后在“Discover”中查看filebeat日志收集情况。

image-20240411145807148

image-20240411145933224

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

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

相关文章

最优算法100例之48-链表中倒数第k个结点

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 链表中倒数第k个结点 题解报告 ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {if(pListHead == NULL)ret…

Go语言入门|包、关键字和标识符

目录 Go语言 包文件 规则 关键字 规则 标识符 规则 预定义标识符 Go语言 Go语言是一种静态类型、编译型和并发型的编程语言,由Google开发。Go的源代码文件以.go为扩展名,文件名通常与包名保持一致。一个Go文件可以包含多个顶级声明,…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式

解题思路&#xff1a;暴力搜索 代码&#xff1a; void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …

认证、授权、凭证、保密、传输、验证

系统如何正确分辨操作用户的真实身份&#xff1f; 认证&#xff08;Authertication) :系统如何正确分辨出操作用户的真实身份&#xff1f; 授权&#xff08;AUthorization&#xff09;**&#xff1a;系统如何控制一个用户该看到哪些数据、能操作哪些功能&#xff1f; 凭证&…

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

ELK(Elasticsearch+Logstash+Kibana)日志分析系统

目录 前言 一、ELK日志分析系统概述 1、三大组件工具介绍 1.1 Elasticsearch 1.1.1 Elasticsearch概念 1.1.2 关系型数据库和ElasticSearch中的对应关系 1.1.3 Elasticsearch提供的操作命令 1.2 Logstash 1.2.1 Logstash概念 1.2.2 Logstash的主要组件 1.2.3 Logsta…

TCM(Tightly Coupled Memory)紧密耦合存储器简介

在ARM Cortex处理器中&#xff0c;TCM通常指的是紧密耦合存储器&#xff08;Tightly Coupled Memory&#xff09;。TCM是一种位于处理器核心旁边的高速存储器&#xff0c;它的设计目的是为了提供低延迟和高带宽的内存访问性能。 TCM的特点是它与处理器内核紧密耦合&#xff0c;…

【鸿蒙开发】第二十一章 Media媒体服务(一)

1 简介 Media Kit&#xff08;媒体服务&#xff09;提供了AVPlayer和AVRecorder用于播放、录制音视频。 在Media Kit的开发指导中&#xff0c;将介绍各种涉及音频、视频播放或录制功能场景的开发方式&#xff0c;指导开发者如何使用系统提供的音视频API实现对应功能。比如使用…

Textarea的常用属性thymeleaf

文章目录 textareathymeleaf1.基础使用2.代码块的切换3.链接表达式1&#xff09;范例 4.前后端5.遍历1.th:each2.th:switch3.添加属性 组件替换 每周总结 textarea -webkit-scrollbar&#xff1a;width&#xff1a;0&#xff1b;让滚动条隐藏&#xff0c;宽度为0 resize&#x…

力扣 | 148. 排序链表

和数组里面的归并排序思想一致 class Solution {public ListNode sortList(ListNode head) {//过滤条件if(head null || head.next null)return head;ListNode slow head;ListNode fast head.next;while (fast ! null && fast.next ! null){slow slow.next;fast …

c++的学习之路:20、继承(1)

摘要 本章主要是讲以一下继承的一些概念以及使用方法等等。 目录 摘要 一、继承的概念及定义 1、继承的概念 2、继承定义 1.2.1、定义格式 1.2.2、继承关系和访问限定符 1.2.3、继承基类成员访问方式的变化 3、总结 二、基类和派生类对象赋值转换 三、继承中的作用…

9【原型模式】复制一个已存在的对象来创建新的对象

你好&#xff0c;我是程序员雪球。 今天我们来学习23种设计模式之原型模式&#xff0c;在平时开发过程中比较少见。我带你了解什么是原型模式&#xff0c;使用场景有哪些&#xff1f;有什么注意事项&#xff1f;深拷贝与浅拷贝的区别&#xff0c;最后用代码实现一个简单的示例…

大数据深度学习:基于Tensorflow深度学习卷积神经网络CNN算法垃圾分类识别系统

文章目录 大数据深度学习&#xff1a;基于Tensorflow深度学习卷积神经网络CNN算法垃圾分类识别系统一、项目概述二、深度学习卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09;三、部分数据库架构四、系统实现系统模型部分核心代码模型训…

【Java】新手一步一步安装 Java 语言开发环境

文章目录 一、Windows 10 系统 安装 JDK8二、 Mac 系统 安装 JDK8三、IDEA安装 一、Windows 10 系统 安装 JDK8 &#xff08;1&#xff09;打开 JDK下载网站&#xff0c;根据系统配置选择版本&#xff0c;这里选择windows 64位的版本&#xff0c;点击下载&#xff08;这里需要…

Finetuning vs. Prompting:大语言模型两种使用方式

目录 前言1. 对于大型语言模型的两种不同期待2. Finetune(专才)3. Prompt(通才)3.1 In-context Learning3.2 Instruction-tuning3.3 Chain of Thought(COT) Prompting3.4 用机器来找Prompt 总结参考 前言 这里和大家分享下关于大语言模型的两种使用方式&#xff0c;一种是 Fine…

2024最新 PyCharm 2024.1 更新要点汇总

2024最新 PyCharm 2024.1 更新要点汇总 文章目录 2024最新 PyCharm 2024.1 更新要点汇总摘要引言 Hugging Face&#xff1a;模型和数据集的快速文档预览针对 JavaScript 和 TypeScript 的全行代码补全 PyCharm Professional编辑器中的粘性行编辑器内代码审查新终端 Beta新的 AI…

js+网络摄像头实现人体肢体关键点动作捕获

最近有一个项目&#xff0c;客户需要用户人体姿势识别&#xff0c;进行表演考核用途&#xff0c;或者康复中心用户恢复护理考核&#xff0c;需要用摄像头进行人体四肢进行肢体关键点对比考核&#xff0c;资料还是太少了。只有个别大佬发了部分技术指导。感觉写的不错。 阿里云…

【微信小程序——案例——本地生活(列表页面)】

案例——本地生活&#xff08;列表页面&#xff09; 九宫格中实现导航跳转——以汽车服务为案例&#xff08;之后可以全部实现页面跳转——现在先实现一个&#xff09; 在app.json中添加新页面 修改之前的九宫格view改为navitage 效果图&#xff1a; 动态设置标题内容—…

PTA(题目集三 题目 代码 C++ 注解)

目录 题目一&#xff1a; 代码&#xff1a; 题目二&#xff1a; 代码&#xff1a; 题目三&#xff1a; 代码&#xff1a; 题目四&#xff1a; 代码&#xff1a; 题目五&#xff1a; 代码&#xff1a; 题目六&#xff1a; 代码&#xff1a; 题目七&#xff1a; 代码…