023、ELK 从入门到实践

ELK 从入门到实践


第一章:ELK基础概念

1.1 为什么需要ELK?

传统日志处理的痛点

  1. 日志分散

    • 应用部署在不同服务器
    • 需要逐个登录查看
    • 无法统一管理
  2. 查询困难

    • 只能用grep等命令
    • 无法复杂检索
    • 分析效率低
  3. 展示受限

    • 纯文本格式
    • 无法可视化
    • 难以直观展示

ELK的解决方案

  1. 集中化管理

    • 统一收集所有日志
    • 集中存储和检索
    • 一站式管理平台
  2. 强大的搜索能力

    • 全文检索
    • 复杂查询
    • 实时分析
  3. 可视化展示

    • 丰富的图表
    • 实时监控
    • 自定义仪表盘

1.2 组件详解

Elasticsearch

  1. 核心功能

    • 分布式搜索引擎
    • 数据存储和索引
    • 提供REST API
  2. 工作原理

    数据 -> 分片存储 -> 倒排索引 -> 快速检索
    
  3. 重要概念

    • Index(索引): 类似数据库
    • Type(类型): 类似表
    • Document(文档): 类似行记录
    • Field(字段): 类似列

Logstash

  1. 数据处理流程

    Input -> Filter -> Output
    
  2. 主要功能

    • 收集多源数据
    • 实时解析转换
    • 数据过滤处理
  3. 插件体系

    • input插件: file, syslog, kafka等
    • filter插件: grok, date, mutate等
    • output插件: elasticsearch, redis等

Kibana

  1. 可视化功能

    • Discover: 数据探索
    • Visualize: 图表制作
    • Dashboard: 仪表盘
    • Dev Tools: 开发工具
  2. 数据分析能力

    • 聚合分析
    • 趋势图表
    • 地理信息

第二章:环境准备详解

2.1 服务器规划

硬件配置

# 节点配置
node1/node2: 
- CPU: 2核
- 内存: 4G
- 磁盘: 50G

# IP规划
node1: 192.168.91.100    # Elasticsearch主节点
node2: 192.168.91.101    # Elasticsearch从节点
apache: 192.168.91.103   # Logstash + Kibana + Apache

配置说明:

  1. CPU配置

    • ES是CPU密集型应用
    • 需要处理复杂查询
    • 2核满足基本需求
  2. 内存配置

    • ES大量使用内存缓存
    • JVM堆内存建议2G
    • 系统预留2G
    • 避免使用swap
  3. 磁盘配置

    • 日志数据增长快
    • 需要定期清理
    • 建议使用SSD
    • 预留足够空间
  4. 网络要求

    • 内网环境部署
    • 千兆网络
    • 集群间通信
    • 数据传输安全

2.2 基础环境配置

Java环境

# 安装Java
yum -y install java

# 验证版本
java -version

# 建议使用Java 8
# ELK 6.x版本最兼容Java 8

系统优化

# 关闭防火墙
systemctl disable --now firewalld

# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

优化说明:

  1. 关闭防火墙原因

    • ELK组件间通信频繁
    • 需要多个端口
    • 简化部署过程
    • 生产环境建议配置安全组
  2. 关闭SELinux原因

    • 避免权限问题
    • 简化配置过程
    • 生产环境可以配置策略

系统限制调整

# 修改系统限制
vim /etc/security/limits.conf
*  soft    nofile          65536
*  hard    nofile          65536
*  soft    nproc           32000
*  hard    nproc           32000
*  soft    memlock         unlimited
*  hard    memlock         unlimited

参数详解:

  1. nofile(文件描述符)

    • 为什么要调大?

      • ES需要大量打开文件
      • 默认1024太小
      • 建议65536或更大
    • soft/hard区别

      • soft: 警告限制
      • hard: 硬性限制
      • 建议设置相同
  2. nproc(进程数)

    • 调整原因
      • ES会创建多个进程
      • 需要足够进程数
      • 默认值可能不够
  3. memlock(内存锁定)

    • 作用
      • 防止内存交换
      • 提高性能
      • 保证稳定性

内核参数优化

# 修改内核参数
vim /etc/sysctl.conf
vm.max_map_count=262144

# 立即生效
sysctl -p

参数说明:

  1. max_map_count
    • 定义

      • 限制进程内存映射区域数量
      • 影响ES内存使用
      • 过小会启动失败
    • 设置建议

      • 2G内存: 262144
      • 4G内存: 524288
      • 8G内存: 1048576

第三章:Elasticsearch部署详解

3.1 安装过程

软件安装

# 安装ES
rpm -ivh elasticsearch-6.7.2.rpm

# 创建配置备份
cd /etc/elasticsearch/
mkdir bak
cp -a *.yml bak/

安装说明:

  1. 目录结构

    /etc/elasticsearch/: 配置文件目录
    /usr/share/elasticsearch/: 程序文件目录
    /var/lib/elasticsearch/: 数据目录
    /var/log/elasticsearch/: 日志目录
    
  2. 备份原因

    • 保留原始配置
    • 便于回滚
    • 作为参考模板

3.2 配置详解

核心配置

# 集群配置
cluster.name: my-elk-cluster    # 集群名称
node.name: node1               # 节点名称
node.master: true             # 主节点角色
node.data: true              # 数据节点角色

# 内存配置
bootstrap.memory_lock: true   # 锁定内存

# 网络配置
network.host: 0.0.0.0        # 监听地址
http.port: 9200             # HTTP端口
transport.tcp.port: 9300    # 集群通信端口

# 集群发现
discovery.zen.ping.unicast.hosts: ["192.168.91.100:9300", "192.168.91.101:9300"]
image-20241112192102237 image-20241112192108022

配置详解:

  1. 集群配置

    • cluster.name

      • 标识集群的唯一名称
      • 所有节点必须相同
      • 建议有意义的名称
    • node.name

      • 节点唯一标识
      • 建议使用主机名
      • 集群内不能重复
  2. 节点角色

    • master节点职责

      • 管理集群状态
      • 处理索引操作
      • 分片分配决策
      • 集群状态维护
    • data节点职责

      • 存储数据
      • 处理CRUD
      • 执行搜索
      • 数据聚合分析
  3. 内存管理

    • bootstrap.memory_lock
      • 锁定物理内存
      • 禁止swap
      • 提高性能
      • 保证稳定性
  4. 网络设置

    • network.host

      • 0.0.0.0表示所有接口
      • 生产环境指定IP
      • 安全性考虑
    • 端口说明

      • 9200: REST API接口
      • 9300: 节点间通信
      • 注意防火墙配置
  5. 集群发现机制

    • unicast发现
      • 显式指定节点列表
      • 比广播更可靠
      • 生产环境推荐
      • 支持域名配置

启动验证

# 启动服务
systemctl enable --now elasticsearch

# 检查端口
netstat -antp | grep 9200

# 验证集群
curl http://localhost:9200/_cluster/health?pretty

验证说明:

  1. 服务启动

    • enable: 开机自启

    • –now: 立即启动

    • 检查状态: systemctl status elasticsearch

  2. 端口检查

    • 9200端口正常监听

    • 确认IP和端口绑定

    • 检查进程状态

  3. 集群健康检查

    • green: 完全健康
    • yellow: 副本未分配
    • red: 主分片未分配

3.3 插件安装配置

Head插件安装

# 安装node
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install

# 安装phantomjs
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
ln -s /opt/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin

# 安装head插件
cd /opt
unzip elasticsearch-head-master.zip
cd elasticsearch-head/
npm install

安装说明:

  1. 依赖组件

    • node.js: JavaScript运行环境

    • phantomjs: 无头浏览器

    • npm: 包管理工具

  2. head插件功能

    • 集群状态监控
    • 索引数据查看
    • 执行简单操作
    • 可视化管理

配置ES支持head

# 添加到elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

配置说明:

  1. cors.enabled

    • 启用跨域访问
    • head插件需要
  2. cors.allow-origin

    • 允许所有来源
    • 生产环境应限制

启动head插件

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

# 访问测试
http://192.168.91.100:9100

使用说明:

  1. 连接集群

    • 输入ES地址
    • 检查连接状态
    • 查看集群健康
  2. 常用功能

    • 索引管理

    • 数据浏览

    • 简单查询

    • 集群监控

第四章:Logstash部署详解

4.1 基础安装

软件安装

# 安装Logstash
rpm -ivh logstash-6.7.2.rpm

# 启动服务
systemctl enable --now logstash.service

# 创建软链接
ln -s /usr/share/logstash/bin/logstash /usr/bin/

安装说明:

  1. 目录结构

    /etc/logstash/: 配置文件目录
    /usr/share/logstash/: 程序目录
    /var/log/logstash/: 日志目录
    
  2. 软链接作用

    • 方便命令执行
    • 无需指定完整路径
    • 简化操作过程

4.2 配置文件详解

基本结构

input { }    # 输入配置
filter { }   # 过滤配置
output { }   # 输出配置

配置说明:

  1. input部分

    • 定义数据来源
    • 支持多种输入
    • 常用插件:file, beats, syslog
  2. filter部分

    • 数据处理转换
    • 格式化解析
    • 字段处理
  3. output部分

    • 定义输出目标
    • 支持多目标输出
    • 常用:elasticsearch, redis

系统日志收集示例

input {
    file {
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        stat_interval => "3"
    }
}

output {
    elasticsearch {
        hosts => ["192.168.91.100:9200","192.168.91.101:9200"]
        index => "system-%{+YYYY.MM.dd}"
    }
}

配置解析:

  1. input配置

    • path: 日志文件路径
    • type: 日志类型标识
    • start_position: 读取位置
    • stat_interval: 扫描间隔
  2. output配置

    • hosts: ES集群地址
    • index: 索引名称模板
    • 支持时间变量

第五章:Kibana部署详解

5.1 基础安装

# 安装Kibana
rpm -ivh kibana-6.7.2-x86_64.rpm

# 创建配置备份
cd /etc/kibana/
cp kibana.yml kibana.yml.bak

5.2 配置详解

# kibana.yml 核心配置
server.port: 5601                # 访问端口
server.host: "0.0.0.0"          # 监听地址
elasticsearch.hosts: ["http://192.168.91.100:9200", "http://192.168.91.101:9200"]  # ES地址
kibana.index: ".kibana"         # 配置索引
i18n.locale: "zh-CN"           # 中文界面
logging.dest: /var/log/k.log    # 日志文件

配置说明:

  1. 服务配置

    • server.port: 访问端口
    • server.host: 监听地址
      • 0.0.0.0表示所有接口
      • 生产环境建议限制
  2. ES连接配置

    • elasticsearch.hosts
      • 支持多个ES节点
      • 实现负载均衡
      • 提高可用性
  3. 其他设置

    • kibana.index: 存储Kibana配置
    • i18n.locale: 界面语言
    • logging.dest: 日志位置

5.3 启动与验证

# 设置日志文件权限
chown kibana:kibana /var/log/k.log

# 启动服务
systemctl enable --now kibana

# 检查端口
ss -nap |grep 5601
访问地址模板:http://192.168.91.103:5601

第六章:ELK Stack 常见问题与解决方案

6.1 安装阶段问题

1. RPM包安装问题

现象1: 安装时报依赖错误

error: Failed dependencies: java-1.8.0-openjdk is needed by elasticsearch

解决方案:

# 检查Java版本
java -version

# 安装正确版本Java
yum install java-1.8.0-openjdk* -y

# 如果存在多个Java版本,设置默认版本
alternatives --config java

现象2: 提示文件冲突

file /etc/elasticsearch/elasticsearch.yml from install of elasticsearch conflicts with...

解决方案:

# 备份已存在的配置
mv /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

# 强制安装
rpm -ivh --force elasticsearch-6.7.2.rpm

2. 目录权限问题

现象: 启动服务报权限错误

failed to create node environment
java.security.AccessControlException: access denied

解决方案:

# 检查目录权限
ls -l /var/lib/elasticsearch
ls -l /var/log/elasticsearch

# 修正权限
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch
chmod 755 /var/lib/elasticsearch
chmod 755 /var/log/elasticsearch

# 检查目录存在
mkdir -p /var/lib/elasticsearch
mkdir -p /var/log/elasticsearch

6.2 启动阶段问题

1. 内存相关问题

现象1: 启动时报内存锁定错误

[1]: max virtual memory areas vm.max_map_count [65530] is too low

解决方案:

# 临时修改
sysctl -w vm.max_map_count=262144

# 永久修改
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

现象2: bootstrap checks failed

memory locking requested for elasticsearch process but memory is not locked

解决方案:

# 检查limits配置
cat /etc/security/limits.conf

# 添加配置
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

# 检查systemd配置
vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity

# 重载systemd
systemctl daemon-reload

2. 网络相关问题

现象1: 无法绑定端口

[ERROR][o.e.b.Bootstrap] [node1] bind_exception

解决方案:

# 检查端口占用
netstat -tulpn | grep 9200
netstat -tulpn | grep 9300

# 如果端口被占用,找到并关闭进程
fuser -k 9200/tcp
fuser -k 9300/tcp

# 检查防火墙
firewall-cmd --list-ports
firewall-cmd --permanent --add-port=9200/tcp
firewall-cmd --permanent --add-port=9300/tcp
firewall-cmd --reload

现象2: 集群节点无法发现

no known nodes

解决方案:

# 检查配置文件中的host配置
vim elasticsearch.yml

# 确保network.host配置正确
network.host: 0.0.0.0

# 检查节点间通信
ping 对方节点IP
telnet 对方节点IP 9300

# 检查hosts文件
vim /etc/hosts
添加节点IP和主机名映射

6.3 运行阶段问题

1. 日志文件问题

现象1: Logstash无法读取日志

Failed to open file {...} Permission denied

解决方案:

# 检查文件权限
ls -l /var/log/messages

# 添加logstash用户到相应组
usermod -a -G adm logstash
usermod -a -G root logstash

# 修改日志文件权限
chmod 644 /var/log/messages

# 检查SELinux
getenforce
setenforce 0

现象2: 日志轮转后无法继续读取

Failed to open file: no such file or directory

解决方案:

# 检查logrotate配置
vim /etc/logrotate.d/nginx

# 添加create权限
create 0644 nginx nginx

# 确保新建日志文件权限正确
chmod 644 /var/log/nginx/access.log

2. 性能问题

现象1: ES查询响应慢

took: 15000ms

解决方案:

# 检查堆内存设置
cat /etc/elasticsearch/jvm.options

# 调整堆内存
-Xms4g
-Xmx4g

# 检查索引设置
curl -XGET 'localhost:9200/_settings?pretty'

# 优化索引设置
curl -XPUT 'localhost:9200/_settings' -H 'Content-Type: application/json' -d '
{
    "index" : {
        "refresh_interval" : "30s",
        "number_of_replicas" : 1
    }
}'

现象2: Logstash处理延迟

Pipeline has blocked

解决方案:

# 调整pipeline配置
vim /etc/logstash/pipelines.yml

# 添加pipeline设置
pipeline.workers: 2
pipeline.batch.size: 125
pipeline.batch.delay: 50

# 使用持久化队列
queue.type: persisted
queue.max_bytes: 1gb

3. 磁盘问题

现象1: 磁盘空间不足

[WARN] disk usage exceeded 85%

解决方案:

# 检查磁盘使用
df -h

# 查看索引大小
curl -XGET 'localhost:9200/_cat/indices?v'

# 删除旧索引
curl -XDELETE 'localhost:9200/logstash-2024.01.*'

# 设置索引生命周期
curl -XPUT 'localhost:9200/_ilm/policy/my_policy' -H 'Content-Type: application/json' -d '
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {}
      },
      "delete": {
        "min_age": "7d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}'

现象2: 索引只读

index read-only/allow delete (api)

解决方案:

# 检查磁盘使用阈值
curl -XGET 'localhost:9200/_cluster/settings?pretty'

# 修改磁盘阈值设置
curl -XPUT 'localhost:9200/_cluster/settings' -H 'Content-Type: application/json' -d '
{
  "persistent": {
    "cluster.routing.allocation.disk.threshold_enabled": true,
    "cluster.routing.allocation.disk.watermark.low": "85%",
    "cluster.routing.allocation.disk.watermark.high": "90%",
    "cluster.routing.allocation.disk.watermark.flood_stage": "95%"
  }
}'

# 解除索引只读
curl -XPUT 'localhost:9200/_all/_settings' -H 'Content-Type: application/json' -d '
{
  "index.blocks.read_only_allow_delete": null
}'

4. Kibana展示问题

现象1: 无法显示数据

No results found

解决方案:

# 检查索引模式配置
Management -> Index Patterns

# 确认时间范围设置
调整时间选择器范围

# 检查索引是否存在
curl -XGET 'localhost:9200/_cat/indices?v'

# 验证字段映射
curl -XGET 'localhost:9200/索引名称/_mapping?pretty'

现象2: 图表加载慢

Loading...一直显示

解决方案:

# 检查浏览器控制台错误
F12 -> Console

# 优化查询设置
vim /etc/kibana/kibana.yml
elasticsearch.requestTimeout: 60000
elasticsearch.shardTimeout: 30000

# 减少时间范围
使用较小的时间窗口

# 使用索引模板优化
curl -XPUT 'localhost:9200/_template/template_1' -H 'Content-Type: application/json' -d '
{
  "index_patterns": ["logstash-*"],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}'

6.4 其他常见问题

1. 时区问题

现象: 日志时间显示不正确
解决方案:

# 检查系统时区
timedatectl

# 修改系统时区
timedatectl set-timezone Asia/Shanghai

# 修改Kibana配置
vim /etc/kibana/kibana.yml
dateFormat:tz: Asia/Shanghai

# 修改Logstash配置
filter {
  date {
    match => [ "timestamp", "ISO8601" ]
    target => "@timestamp"
    timezone => "Asia/Shanghai"
  }
}

2. 字符编码问题

现象: 日志中文显示乱码
解决方案:

# 检查系统编码
locale

# 设置系统编码
export LANG=zh_CN.UTF-8

# Logstash配置添加编码设置
input {
  file {
    path => "/var/log/messages"
    codec => plain { charset => "UTF-8" }
  }
}

# 检查日志文件编码
file -i /var/log/messages

# 转换文件编码
iconv -f GBK -t UTF-8 input.log > output.log

3. 内存泄漏问题

现象: 服务占用内存持续增长
解决方案:

# 监控内存使用
top -p `pgrep -f elasticsearch`

# 查看GC日志
vim /etc/elasticsearch/jvm.options
-Xlog:gc*,gc+age=trace,safepoint:file=/var/log/elasticsearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m

# 分析堆内存
jmap -heap PID

# 调整JVM参数
vim /etc/elasticsearch/jvm.options
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/elasticsearch/

4.主机压缩包传不上xshell

解决办法:

yum -y install lrzsz

5.tar解压bz2包失败(同上)

tar (child): bzip2:无法 exec: 没有那个文件或目录

解决办法:

yum install -y bzip2

6.make出错

出错示例:

[root@localhost opt]# yum -y install make
软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost opt]# make -j2
make: *** 没有指明目标并且找不到 makefile。 停止。
[root@localhost zabbix-4.0.30]# make install
make: *** 没有规则可以创建目标“install”。 停止。

解决办法:

[root@localhost opt]# yum -y install make
[root@localhost opt]# yum -y install gcc

[root@localhost opt]#./configur

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一博 - Java的Shallow Copy和Deep Copy

文章目录 概述创建对象的5种方式1. 通过new关键字2. 通过Class类的newInstance()方法3. 通过Constructor类的newInstance方法4. 利用Clone方法5. 反序列化 Clone方法基本类型和引用类型浅拷贝深拷贝如何实现深拷贝1. 让每个引用类型属性内部都重写clone()方法2. 利用序列化 概述…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-25

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

Odoo :一款免费开源的日化行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 概述 构建以 IPD 体系作为核心的产品创新研发管控体系,增进企业跨部门业务协同的效率,支撑研发管控、智慧供应链、智能制造以及全渠道营销等行业的场景化,构筑行业的研产供销财一体化管理平台。 行业的最新…

【Golang】——Gin 框架中间件详解:从基础到实战

中间件是 Web 应用开发中常见的功能模块,Gin 框架支持自定义和使用内置的中间件,让你在请求到达路由处理函数前进行一系列预处理操作。这篇博客将涵盖中间件的概念、内置中间件的用法、如何编写自定义中间件,以及在实际应用中的一些最佳实践。…

计算机网络 (3)计算机网络的性能

一、计算机网络性能指标 速率: 速率是计算机网络中最重要的性能指标之一,它指的是数据的传送速率,也称为数据率(Data Rate)或比特率(Bit Rate)。速率的单位是比特/秒(bit/s&#xff…

云原生之运维监控实践-使用Telegraf、Prometheus与Grafana实现对InfluxDB服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

【C++】类中的“默认成员函数“--构造函数出现的意义?拷贝构造时“无穷递归”和“双重释放”出现的原因?

目录 "默认"成员函数 概念引入: 一、构造函数 问题引入: 1)构造函数的概念 2)构造函数实例 3)构造函数的特性 4)关于默认生成的构造函数 (默认构造函数) 默认构造函数未完成初始化工作实例: 二…

fastapi 调用ollama之下的sqlcoder模式进行对话操作数据库

from fastapi import FastAPI, HTTPException, Request from pydantic import BaseModel import ollama import mysql.connector from mysql.connector.cursor import MySQLCursor import jsonapp FastAPI()# 数据库连接配置 DB_CONFIG {"database": "web&quo…

基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

基于Java Springboot城市交通管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数…

手机直连卫星NTN通信初步研究

目录 1、手机直连卫星之序幕 2、卫星NTN及其网络架构 2.1 NTN 2.2 NTN网络架构 3、NTN的3GPP标准化进程 3.1 NTN需要适应的特性 3.2 NTN频段 3.3 NTN的3GPP标准化进程概况 3.4 NTN的3GPP标准化进程的详情 3.4.1 NR-NTN 3.4.1.1 NTN 的无线相关 SI/WI 3.4.1.2…

基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)

目录 1. 八种基本类型及对应包装类型 2. 基本类型和包装类型 区别 3. 自动拆箱装箱 3.1 自动装箱 3.2 自动拆箱 3.3 缓存池 4. 高频面试案例分析 1. 八种基本类型及对应包装类型 基本数据类型类型描述范围(指数形式)位数包装类型byte整型&#x…

Aria2-CVE-2023-39141漏洞分析

前言: 在偶然一次的渗透靶机的时候,上网查询Aria2的历史漏洞,发现了这个漏洞,但是网上并没有对应的漏洞解释,于是我就就源代码进行分析,发现这是一个非常简单的漏洞,于是发这篇文章跟大家分享一…

androidstudio入门到放弃配置

b站视频讲解传送门 android_studio安装包:https://developer.android.google.cn/studio?hlzh-cn 下载安装 开始创建hello-world 1.删除缓存 文件 下载gradle文件压缩:gradle-8.9用自己创建项目时自动生成的版本即可,不用和我一样 https://…

河道无人机雷达测流监测系统由哪几部分组成?

在现代水利管理中,河道无人机雷达监测系统正逐渐成为一种重要的工具,为河道的安全和管理提供了强大的技术支持。那么,这个先进的监测系统究竟由哪几部分组成呢? 河道无人机雷达监测系统工作原理 雷达传感器通过发射电磁波或激光束…

Mac上详细配置java开发环境和软件(更新中)

文章目录 概要JDK的配置JDK下载安装配置JDK环境变量文件 Idea的安装Mysql安装和配置Navicat Premium16.1安装安装Vscode安装和配置Maven配置本地仓库配置阿里云私服Idea集成Maven 概要 这里使用的是M3型片 14.6版本的Mac 用到的资源放在网盘 链接: https://pan.baidu.com/s/17…

CKA认证 | Day3 K8s管理应用生命周期(上)

第四章 应用程序生命周期管理(上) 1、在Kubernetes中部署应用流程 1.1 使用Deployment部署Java应用 在 Kubernetes 中,Deployment 是一种控制器,用于管理 Pod 的部署和更新。以下是使用 Deployment 部署 Java 应用的步骤&#x…

ffmpeg编程入门

文章目录 ffmpeg流程常用的音视频术语常用概念复用器编解码器ffmpeg的整体结构注册组件相关封装格式相关函数的调用流程 相关的ffpmeg数据结构简介数据结构之间的关系 ffmpeg流程 图中的函数 以及结构体都是ffmpeg自带提供的 ffmpeg打开的时候 和其他io操作差不多 有一个类似句…

函数指针示例

目录&#xff1a; 代码&#xff1a; main.c #include <stdio.h> #include <stdlib.h>int Max(int x, int y); int Min(int x, int y);int main(int argc, char**argv) {int x,y;scanf("%d",&x);scanf("%d",&y);int select;printf(&q…

间接采购管理:主要挑战与实战策略

间接采购支出会悄然消耗掉企业的现金流&#xff0c;即使是管理完善的公司也难以避免。这是因为间接支出不直接关联特定客户、产品或项目&#xff0c;使采购人员难以跟踪。但正确管理间接支出能为企业带来显著收益——前提是要有合适的工具。本文将分享管理间接支出的关键信息与…