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

简单认识ELK日志分析系统

一. ELK日志分析系统概述

1.ELK 简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。
好处
(1)提高安全性
(2)集中存放日志
(3)缺陷:对日志的分析困难

2.ELK日志分析系统组成

1 、ElasticSearch

概述
(1)提供了一个分布式多用户能力的全文搜索引擎,通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。
(2)Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。

ElasticSearch核心概念(作用)
(1)接近实时
(2)集群(es数据日志搜索)
(3)节点
(4)索引(es)
索引(库)——类型(表)——文档(记录)
(5)分片和副本(备份——每个都有副本,如其中一个挂了,副本还可以继续正常工作、容灾)

2 、Kiabana

概念
通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。

总:将Elasticsearch中的数据优化可视化的展示出来

主要功能
(1)Elasticsearch无缝之集成
(2)整合数据,复杂数据分析
(3)让更多团队成员受益
(4)接口灵活,分享更容易
(5)配置简单,可视化多数据源
(6)简单数据导出

3、 Logstash

概念
(1)一款强大的数据数据处理工具
(2)可实现数据传输,格式处理,格式化输出(输出给es)
(3)数据输入,数据加工(如过滤、改写等)以及数据输出
Logstash主要组件
(1)shipper:主要负责监控日志,日志变动,集新的日志
(2)indexer:存储(日志存储者)主要是日志接收和写入本地
(3)broker:连接组件,并对组件进行搜索日志文件存储另一个平台上
(4)search and storage:搜索和存储
(5)web interface:展示web界面

Logstash理念、作用
input(数据采集) filter(数据过滤) output(数据输出)

4、 可以添加的其它组件

Filebeat
Filebeat概念

(1)轻量级的开源日志文件数据搜集器。

(2)通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。行解析

Filebeat 结合 logstash 带来好处
(1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
(2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
(3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
(4)使用条件数据流逻辑组成更复杂的处理管道

缓存/消息队列(redis、kafka、RabbitMQ等)
可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。

Fluentd
概念

是一个流行的开源数据收集器。

特点
由于 logstash 太重量级的缺点:

(1)解决Logstash 性能低、资源消耗比较多等问题,随后就有 Fluentd 的出现。
(2)相比较 logstash,Fluentd 更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为 logstash 的一种替代方案,常应用于 EFK 架构当中。在 Kubernetes 集群中也常使用 EFK 作为日志数据收集的方案。
(3)在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd,以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。

3.为什么要使用 ELK

(1)由于会通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

(2)单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。数十上百台服务器会很繁琐并且效率低下,使用集中化的日志管理:开源的syslog,将所有服务器上的日志收集汇总

(3)一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

总:日志集中化、集中化管理

提高效率、性能安全

4.完整日志系统基本特征

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

5.ELK 的工作过程

1、 ELK 的工作原理

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

总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

2、 ELK 的数据流图示

在这里插入图片描述

二.部署ELK日志分析系统

web服务器部署logstash+kibana:192.168.116.50
es节点1:192.168.116.60
es节点2:192.168.116.70

1.节点服务器安装elasticsearch

(1)需要先准备好相关的安装包(后三个用于前端图形化展示es状态)

在这里插入图片描述
(2)部署jdk环境

yum -y install java-1.8.0-openjdk-devel.x86_64

在这里插入图片描述
(3)安装es
在这里插入图片描述
(4)修改配置文件

vim /etc/elasticsearch/elasticsearch.yml
#yml键值对格式 键: 值(冒号后面要加一个括号)
cluster.name: my-elk-cluster    #集群名称
node.name: node1       #当前节点名称
node.master: true      #开启主节点
node.data: true        #开启数据节点(两个都开启是混合模式)path.data: /var/lib/elasticsearch    #数据文件
path.logs: /var/log/elasticsearch    #日志文件bootstrap.memory_lock: true     #锁定使用内存(禁用交换分区使性能下降)network.host: 192.168.116.60    #监听地址(本机ip)
http.port: 9200                 #es和客户端通信的端口(默认9200)
transport.tcp.port: 9300        #es节点之间通信的端口(默认9300)#启用发现机制(es内置发现模块,通过单播发现集群内的服务节点)
discovery.zen.ping.unicast.hosts: ["192.168.116.60:9300", "192.168.116.70:9300"]

另一台节点配置文件也修改
在这里插入图片描述
ES三类节点说明

master主节点:
主要功能:维护元数据,管理集群节点状态;不负责数据写入和查询。
配置要点:内存可以相对小一些,但是机器一定要稳定,最好是独占的机器。
配置格式:node.master: true ;node.data: false

data数据节点
主要功能:负责数据的写入与查询,压力大。
配置要点:大内存,最好是独占的机器。
配置格式:node.master: false;node.data: true

client客户端节点
主要功能:负责任务分发和结果汇聚,分担数据节点压力。
配置要点:大内存,最好是独占的机器。
配置格式:node.master: false; node.data: false

还有一种混合节点 node.master: true 和 node.data: true ,这种在生产环境中不建议使用,我们这里的实验测试环境会将主节点和数据节点放在一台主机上。

三类节点分配比例

一般来说,主节点最多3台,数据节点可以为每个主节点分配 2~4 台(3个主节点就是一共6~12台),客户端可以为数据节点总数的1/3左右。
根据读写情况来决定,写多则数据节点多,读多则客户端多。

(5)优化系统(放开内存、进程数和文件限制)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)优化es拥有的内存使用权限

    由于ES构建基于lucene,而lucene设计强大之处在于lucene能够很好的利用操作系统内存来缓存索引数据,以提供快速的查询性能。lucene的索引文件segements是存储在单文件中的,并且

不可变,对于OS来说,能够很友好地将索引文件保持在cache中,以便快速访问。因此,我们很有必要将一半的物理内存留给lucene,另一半的物理内存留给es(TM heap)。

  • 在ES内存设置方面,可以遵循以下原则

      当机器内存小于64G时,遵循通用的原则,508给ES,50%留给操作系统,供lucene使用;当机器内存大于64G时,遵循原则:建议分配给Es分配4~32G 的内存即可,其它内存留给操作系统,供lucene使用。
    

在这里插入图片描述
在这里插入图片描述
(7)启动(注意es启动最低需要4G内存)
在这里插入图片描述
(8)依次安装其余三个软件

#安装node.js(大约10分钟)
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install#安装phantomjs
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin/
cp phantomjs /usr/local/bin#安装 Elasticsearch-head-master 数据可视化工具
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
npm install

(9)在es配置文件中添加跨域访问配置,并重启服务

vim /etc/elasticsearch/elasticsearch.yml
#添加
http.cors.enabled: true
http.cors.allow-origin: "*"#重启服务加载配置
systemctl restart elasticsearch.service

在这里插入图片描述
(10)启动可视化工具(开启端口为9100)

cd /opt/elasticsearch-head-master/
npm run start &

在这里插入图片描述

在这里插入图片描述
(11)测试插入索引

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(12)删除索引

curl -X DELETE '192.168.116.60:9200/index-demo'

在这里插入图片描述

2.web服务器安装logstash和kibana

(1)准备logstash和kibana的安装包,和jdk环境

在这里插入图片描述
在这里插入图片描述
(2)安装启动logstash,并将命令加入系统识别路径
在这里插入图片描述
在这里插入图片描述
(3)测试使用logstash

logstash [选项] ...
-f   通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e   从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t   测试配置文件是否正确,然后退出。

使用命令行输入标准输出到屏幕
在这里插入图片描述
在这里插入图片描述
测试命令行输入,标准输出到es的节点中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)测试无误后,自定义logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(根据需要选择使用)input{...}:表示从数据源采集数据,常见的数据源如Kafka、日志文件等。output{...}:表示将logstash收集的数据经由过滤器处理之后输出到Elasticsearch。filter{...}:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式.grok:对若干个大文本字段进行再分割成一些小字段(?<字段名>正则表达式)字段名:正则表达式匹配到的内容。date:对数据中的时间格式进行统一和格式化。mutate:可以重命名,删除,替换和修改事件中的字段。比如对一些无用的字段进行剔除,或增加自定义的字段。mutiline:对多行数据进行统一编排,将多行数据汇总为一个单一的行。
#在logstash配置文件目录下,创建配置文件
cd /etc/logstash/conf.d/
ls

在这里插入图片描述
(5)加载配置文件,实现日志输出到es

logstash -f 配置文件名        

在这里插入图片描述
logstash -f 配置文件名

3.安装使用kibana

(1)安装和修改配置文件,并启动kibana
在这里插入图片描述

vim /etc/kibana/kibana.yml
#修改主要配置
#取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
#取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
#取消注释,配置es服务器的ip,如果是集群则配置该集群中master节点的ip
elasticsearch.url:  ["http://192.168.116.60:9200","http://192.168.116.70:9200"] 
#取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
#取消注释,配置kibana的日志文件路径(需手动创建),不然默认是messages里记录日志
logging.dest: /var/log/kibana.log#创建日志文件,并修改归属权限
touch /var/log/kibana.log
chown kibana:kibana /var/log/kibana.log#启动kibana
systemctl start kibana.service

在这里插入图片描述
(2)使用kibana

访问kibana服务器的5601端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.Filebeat+ELK 部署

nginx服务器部署filebeat:192.168.116.40
logstash+kibana服务器:192.168.116.50
es节点1:192.168.116.60
es节点2:192.168.116.70
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
#下载nginx,添加测试页面
#配置nginx官方源
cd /etc/yum.repos.d/
vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1#下载并启动
yum -y install nginx
systemctl enable --now nginx#添加测试页面
cd /usr/share/nginx/html/
echo '<h1>this is nginxlog test1 webpage</h1>' > test1.html
echo '<h1>this is nginxlog test2 webpage</h1>' > test2.html

准备filebeat安装包,解压安装
在这里插入图片描述

tar xf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64 /usr/local/filebeat

修改filebeat配置文件 /usr/local/filebeat/filebeat.yml

在这里插入图片描述
在这里插入图片描述
启动filebeat

nohup ./filebeat -e -c filebeat.yml        nohup后台启动(不会因为退出终端而终端)-e        同时输出到屏幕(便于实验),也可以使用重定向到文件中-c        指定配置文件

在这里插入图片描述
修改logstash配置文件

在这里插入图片描述
启动logstash
在这里插入图片描述
在这里插入图片描述
测试索引收集日志

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是此索引包含了nginx的access.log和error.log,我们可以在配置文件中添加条件判断分割日志,然后重启服务测试
在这里插入图片描述
在这里插入图片描述
在客户端访问nginx测试页面,然后刷新es,出现了分割的索引
在这里插入图片描述
在kibana中创建对应索引

在这里插入图片描述
之后就可以查看了
在这里插入图片描述

相关文章:

简单认识ELK日志分析系统

一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 好处&#xff1a; &#xff08;1&#xff09;提高安全…...

【算法笔记】深度优先遍历-解决排列组合问题-

深度优先遍历-解决排列组合问题 问题1&#xff1a; 假设袋子里有编号为1,2,…,m这m个球。现在每次从袋子中取一个球记下编号&#xff0c;放回袋中再取&#xff0c;取n次作为一组&#xff0c;枚举所有可能的情况。 分析&#xff1a; 每一次取都有m种可能的情况&#xff0c;因此…...

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…...

应急响应-勒索病毒的处理思路

0x00 关于勒索病毒的描述 勒索病毒入侵方式&#xff1a;服务弱口令&#xff0c;未授权&#xff0c;邮件钓鱼&#xff0c;程序木马植入&#xff0c;系统漏洞等 勒索病毒的危害&#xff1a;主机文件被加密&#xff0c;且几乎难以解密&#xff0c;对主机上的文件信息以及重要资产…...

ChatGPT是否能够处理多模态数据和多模态对话?

ChatGPT有潜力处理多模态数据和多模态对话&#xff0c;这将进一步扩展其在各种应用领域中的实用性。多模态数据是指包含多种不同类型的信息&#xff0c;例如文本、图像、音频和视频等。多模态对话是指涉及多种媒体形式的对话交流&#xff0c;例如同时包含文本和图像的对话。 *…...

AcWing1171. 距离(lcatarjan)

输入样例1&#xff1a; 2 2 1 2 100 1 2 2 1输出样例1&#xff1a; 100 100输入样例2&#xff1a; 3 2 1 2 10 3 1 15 1 2 3 2输出样例2&#xff1a; 10 25 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N2e55; int n,m,x,y,k,r…...

JVM-运行时数据区

目录 什么是运行时数据区&#xff1f; 方法区 堆 程序计数器 虚拟机栈 局部变量表 操作数栈 动态连接 运行时常量池 方法返回地址 附加信息 本地方法栈 总结&#xff1a; 什么是运行时数据区&#xff1f; Java虚拟机在执行Java程序时&#xff0c;将它管…...

RedisTemplate中boundHashOps的使用

1、往指定key中存储 键值 redisTemplate.boundHashOps("demo").put("1",1); 2、根据指定key中得键取出值 System.out.println(redisTemplate.boundHashOps("demo").get("1")); 3、根据指定key中得键删除 redisTemplate.boundHash…...

计算机网络-性能指标

计算机网络-性能指标 文章目录 计算机网络-性能指标简介速率比特速率 带宽吞吐量时延时延计算 时延带宽积往返时间网络利用率丢包率总结 简介 性能指标可以从不同的方面来度量计算机网络的性能 常用的计算机网络的性能指标有以下8个 速率带宽吞吐量时延时延带宽积往返时间利…...

排序第一课【插入排序】直接插入排序 与 希尔排序

目录 1. 排序的概念&#xff1a; 2.插入排序基本思想 3.直接插入排序 4.希尔排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…...

云计算——ACA学习 云计算概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 写在前面 上章回顾 本章简介 本章目标 一.云计算产生背景 1.信息时代的重点变革…...

如何为网站进行全面的整站翻译?

要翻译整个网站&#xff0c;可以按照以下步骤进行&#xff1a; 确定翻译需求&#xff1a;确定你需要将整个网站翻译成哪种语言。这可以根据你的目标受众和市场进行决定。 寻找翻译资源&#xff1a;你可以选择以下几种方式来进行网站翻译&#xff1a; a. 人工翻译&#xff1a;雇…...

项目部署(前后端分离)

1、前端项目 &#xff08;打包成dist文件,放到nginx的html目录下面&#xff09;&#xff0c;然后配置nginx 2、后端项目部署 使用之前的shell脚本&#xff08;然后赋予用户权限&#xff09;&#xff0c;最后运行脚本 查看进程...

增强型Web安全网关在银行的应用

销售&#xff0c;绝不是降低身份去取悦客户&#xff0c;而是像朋友一样给予合理的建议。你刚好需要&#xff0c;我刚好专业&#xff01;仅此而已&#xff01; 乔.吉拉德 健康的安全体系&#xff0c;还可以更完善 浙江某商业银行股份有限公司是一家成立多年的商业银行&#xf…...

Oracle-ORA-00600:[ktspffbmb:objdchk_kcbnew_3]

问题背景: 应用执行存储过程报错ORA-00600: 内部错误代码, 参数: [ktspffbmb:objdchk_kcbnew_3], [0], [3303775], [4], [], [], [], [], [], [], [], []&#xff0c;导致过程无法正常执行 ORA-00600: 内部错误代码, 参数: [ktspffbmb:objdchk_kcbnew_3], [0], [3303775], [4]…...

SPINN:基于设备和云的神经网络协同递进推理

SPINN&#xff1a;基于设备和云的神经网络协同递进推理 论文标题&#xff1a;SPINN: synergistic progressive inference of neural networks over device and cloud 原文链接&#xff1a;https://dl.acm.org/doi/10.1145/3372224.3419194 论文动机 现代CNN过多的计算需求&am…...

数据结构-二叉树

数据结构-二叉树 二叉树的概念二叉树的遍历分类 建立二叉树&#xff0c;并遍历二叉树的最小单元二叉树的最小单元初始化初始化二叉树前序遍历的实现中序遍历的实现后序遍历的实现计算节点的个数计算树的深度求第k层的个数查找二叉树的元素分层遍历 全部代码如下 二叉树的概念 二…...

Open3D 进阶(4)高斯混合点云聚类

目录 一、算法原理1、原理概述2、实现流程3、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 1、原理概述 高斯混合聚类(GMM)算法假设数据点是由一个或多个高斯分布生成的,并通过最大似然估计的方法来估计每个簇…...

计算机组成和IO

文章目录 计组和Epoll&#xff1a;计算机组成原理&#xff1a;网络数据接收的流程&#xff1a;内核如何管理socket以及状态的更新select系统调用的复杂度epoll的et和lt模式及java的选择 国内访问chatai就可以 https://aiweb.douguguo.com/?typeadd计组和Epoll&#xff1a; 计…...

STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...