关于部署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的工作原理
- 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Logstash。
- Logstash收集日志,将日志格式化并输出到es群集中。
- ES对格式化后的数据进行索引和存储。
- Kibana从ES群集中查询数据生成图表,并进行前端数据的显示。
二、部署ELK日志分析系统
1、服务器配置
服务器 | 配置 | 主机名 | ip地址 | 主要软件部署 |
---|---|---|---|---|
node1节点 | 2C/4G | node1 | 192.168.10.12 | ElasticSearch、Kibana |
node2节点 | 2C/4G | node2 | 192.168.10.13 | ElasticSearch |
apache节点 | - | apache | 192.168.10.14 | Logstash、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
- node2
3.2 部署ElasticSearch软件
3.2.1 安装elasticsearch-rpm包
cd /opt
#切换目录#上传elasticsearch-5.5.0.rpm到/opt目录下rpm -ivh elasticsearch-5.5.0.rpm
#安装
- node1
- node2
3.2.2 加载系统服务
systemctl daemon-reload
#重新加载systemctl enable elasticsearch.service
#开机自启
- node1
- node2
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
- node2
3.2.4 创建数据存放路径并授权
mkdir -p /data/elk_data
#创建目录chown elasticsearch:elasticsearch /data/elk_data/
#修改属主、属组
- node1
- node2
3.2.5 启动elasticsearch
systemctl start elasticsearch.service
#开启es服务ss -natp | grep 9200
#查看进程
- node1
- node2
3.2.6 查看节点信息
- 浏览器访问http://192.168.10.12:9200、http://192.168.10.13:9200查看节点node1、node2的信息
- 浏览器访问http://192.168.10.12:9200/_cluster/health?pretty、http://192.168.10.13:9200/_cluster/health?pretty查看群集的健康情况,可以看到status值为green(绿色),表示节点健康运行,数据和副本全都没有问题(红色:表示数据都不完整、黄色:表示数据完整,但副本有问题)
- 浏览器访问http://192.168.10.12:9200/_cluster/state?pretty检查群集状态信息
使用上述方式查看群集的状态对用户并不友好,可以通过安装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
- node2
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
- node2
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
- node2
3.3.4 修改Elasticsearch主配置文件
#修改配置文件,末行添加以下内容
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
#开启跨域访问支持,默认为false
http.cors.allow-origin: "*"
#指定跨域访问允许的域名地址为所有systemctl restart elasticsearch.service
#重启服务
- node1
- node2
3.3.5 启动elasticsearch-head服务
cd /usr/local/src/elasticsearch-head/
#切换目录npm run start &
#后台开启ss -natp | grep 9100
#查看进程#注:必须在解压后的elasticsearch-head目录下启动服务,进程会读取该目录下的gruntfile.js文件,否则可能启动失败。
- node1
- node2
3.3.6 通过Elasticsearch-head查看ES信息
-
通过浏览器访问http://192.168.10.12:9100地址并连接群集。如果看到群集健康值为green,代表群集很健康。
-
node1
- node2
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
- node2
3.3.8 浏览器查看索引信息
- 浏览器访问http://129.168.10.13:9100查看索引信息,可以看见索引默认被分片为5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为index-demo,类型为test的相关信息。显示详细数据
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
#关闭防火墙和防护中心
4.2 安装Apache服务(httpd)
yum install -y httpd
#安装httpdsystemctl start httpd
#开启服务
4.3 安装Java环境
yum install -y java
#安装Javajava -version
#查看Java版本
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/
#做软连接
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#输入结果(标准输出)
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"
}
#显示输出结果(处理后的结果)
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查看索引和数据
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
#重启服务
4.7 访问测试
- 浏览器访问http://192.168.10.12:9100查看索引信息
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
#安装
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索引
5.3 启动kibana服务
systemctl start kibana.service
#开启服务systemctl enable kibana.service
#开启自启ss -natp | grep 5601
#查看进程
5.4 验证kibana
- 浏览器访问http://192.168.10.12:5601
- 第一次登录需要添加一个ES索引输入system-*
- 索引添加完成后,点击“Discover”按钮可查看图表信息及日志信息
- 数据展示可以分类显示,例如:在“Available Fileds”中add添加“_type”查看
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 服务并读取指定的配置文件
5.6 浏览器访问
- 浏览器访问apache服务
- 浏览器访问http://192.168.10.12:9100查看索引是否创建
- 浏览器访问http://192.168.10.12:5601登录kibana,添加“apache_access、”和“apache_error”索引,查看日志信息。
三、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/4G | node1 | 192.168.10.12 | ElasticSearch、Kibana |
node2节点 | 2C/4G | node2 | 192.168.10.13 | ElasticSearch |
apache节点 | - | apache | 192.168.10.14 | Logstash、Apache |
filebeat节点 | filebeat | 192.168.10.15 | Filebeat |
- 在ELK的基础上,增加一台filebeat服务器,因此只需再前述ELK部署的前提下进一步操作。
3.2 服务器环境
- filebeat节点
hostnamectl set-hostname filebeat
su
#修改主机名systemctl stop firewalld
setenforce 0
#关闭防火墙和核心防护
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
#开机自启
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
#查看状态
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并读取配置文件再次查看
3.6 浏览器验证
- 浏览器访问http://192.168.10.12:9100
- 浏览器访问http://192.168.10.12:5601登录kibana,
添加“filebeat-*”索引后在“Discover”中查看filebeat日志收集情况。
相关文章:

关于部署ELK和EFLK的相关知识
文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana(展示数据可视化界面)1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…...

实验室信息系统源码 saas模式java+.Net Core版开发的云LIS系统全套源码可二次开发有演示
实验室信息系统源码 saas模式java.Net Core版开发的云LIS系统全套源码可二次开发有演示 一、技术框架 技术架构:Asp.NET CORE 3.1 MVC SQLserver Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架&am…...

PCB---Design Entry cis 绘图 导出
修改纸张大小: 画图前准备:导入 画图: 习惯: 电源朝上 地朝下 配置pbc_footprint编号: 都配置好编号就可以导出了 导出:...

vue 一键更换主题颜色
这里提供简单的实现步骤,具体看自己怎么加到项目中 我展示的是vue2 vue3同理 在 App.vue 添加 入口处直接修改 #app { // 定义的全局修改颜色变量--themeColor:#008cff; } // 组件某些背景颜色需要跟着一起改变,其他也是同理 /deep/ .ant-btn-primar…...

WebKit内核游览器
WebKit内核游览器 基础概念游览器引擎Chromium 浏览器架构Webkit 资源加载这里就不得不提到http超文本传输协议这个概念了: 游览器多线程HTML 解析总结 基础概念 百度百科介绍 WebKit 是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozil…...

Qt 拖放功能详解:理论与实践并举的深度指南
拖放(Drag and Drop)作为一种直观且高效的用户交互方式,在现代图形用户界面中扮演着重要角色。Qt 框架提供了完善的拖放支持,允许开发者在应用程序中轻松实现这一功能。本篇博文将详细阐述Qt拖放机制的工作原理,结合详…...

Springboot+Vue项目-基于Java+MySQL的企业客户管理系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

【Linux学习】Linux指令(四)
文章标题 🚀zip/unzip指令:🚀tar指令(重要):🚀uname –r指令:🚀关机指令🚀几个常用操作 🚀zip/unzip指令: zip 与 unzip的安装 yum i…...

阿里云服务器 使用Certbot申请免费 HTTPS 证书及自动续期
前言 Certbot是一款免费且开源的自动化安全证书管理工具,由电子前沿基金会(EFF)开发和维护,是在Linux、Apache和Nginx服务器上配置和管理SSL/TLS证书的一种机制。Certbot可以自动完成域名的认证并安装证书。 一、 安装软件 1.1…...
统一SQL-number/decimal/dec/numeric转换
统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库:Oracle 目标数据库:Postgresql,TDSQL-MySQL,达梦8,LightDB-Oracle 操作目标 通过统一SQL,将Oracle中的numb…...

软件测试入门学习笔记
系统测试流程规范 一.研发模型 1.瀑布模型 从可行性研究(或系统分析)开始,需求 2.增量迭代模型 3.敏捷开发模型 二.质量模型...
31. 下一个排列
题目描述 整数数组的一个排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的下一个排列是指其整数的下一个字典序更大的排列。更正式地&…...
Android笔记: mkdirs不生效失败
Manifest已经配置权限,代码中也动态获取权限,mkdirs一直返回false File.mkdirs()方法创建文件夹失败 1、动态申请读写权限 <!--SDCard写权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--SDCard读权…...
需要添加的硬币的最小数量(Lc2952)——贪心+构造
给你一个下标从 0 开始的整数数组 coins,表示可用的硬币的面值,以及一个整数 target 。 如果存在某个 coins 的子序列总和为 x,那么整数 x 就是一个 可取得的金额 。 返回需要添加到数组中的 任意面值 硬币的 最小数量 ,使范围 …...
军工保密资质介绍及申请要求
军工保密资质介绍 军工保密资质是指国家对从事军工研发、生产、销售等活动的企事业单位进行的一种资质认证。该资质的核心目标是保护国家军事机密和军事技术秘密,确保国家安全和国防利益。军工保密资质的认证标准非常严格,涉及企业的安全管理、技术保密…...
ES6的编程风格
ES6 提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用。 var命令存在变量提升效用,let命令没有这个问题 if (true) {console.log(x); // ReferenceErrorlet x…...

springboot 载入自定义的yml文件转DTO
json解析的pom引入 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-json</artifactId><version>5.8.20</version></dependency>resources目录下的my-data.yml project:data:- name: service-genbase-package:…...

webpack-(plugin,本地服务器,路径别名,安装vue)
安装vue npm i vue-loader -D npm i vue 编写一个vue文件: 在index.html中设置 一个id为app的div 将vue文件挂载到app中 vue比较特殊,除了使用loader外,还使用了plugin const path require("path"); const { VueLoaderPlugin …...

http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host
事实证明人有的时候也不能太偷懒,太偷懒容易给自己埋坑。 问题的背景: web端调用服务A,服务A异步调用服务B。服务A有四个场景需要调用服务B,所以,服务A中封装了一个公用的方法,唯一的区别是,场…...

想要设计放大电路,必须掌握哪些?
放大电路是电子系统中的核心组成部分,其设计好坏将直接影响到整个系统的性能,对电子工程师来说,在设计放大电路时,必须掌握且关注多方面,以此确保电路的稳定性和放大效果,那么需要注意哪些? 1、…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...