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

006 CentOS 7.9 elasticsearch7.10.0安装及配置

文章目录

    • 一、安装Elasticsearch 7.10.0
    • 二、安装Logstash 7.10.0
    • 三、配置防火墙和网络访问
    • 可能出现的错误
    • 配置

Elasticsearch官方网址: https://www.elastic.co

Elasticsearch中文官网地址:https://www.elastic.co/cn/products/elasticsearch

https://www.elastic.co/cn/downloads/logstash

https://www.elastic.co/cn/downloads/kibana
https://dev.mysql.com/downloads/connector/j/

Logstash与Java 8适配的版本取决于你所使用的Elasticsearch(ES)版本。根据Elastic Stack的兼容性建议:

对于ES 6.7.x之前的版本,推荐Java 8。
对于ES 6.7.x到7.17.x的版本,Java 8或Java 11都是推荐的。但请注意,虽然这些版本的ES支持Java 8,但Elasticsearch 7.10是官方支持Java 8的最后一个版本。
对于ES 8.x及之后的版本,推荐使用Oracle/OpenJava 11或Oracle/OpenJava 17。
至于Logstash,从7.8.0版本开始,它支持Azul Zulu JDK,这对于使用M1 Mac的用户是一个好的选择。但是,对于Java 8的适配,你应该选择与你的Elasticsearch版本兼容的Logstash版本。

在CentOS 7.9上安装Elasticsearch 7.10.0和Logstash 7.10.0,并确保远程可以访问,你可以按照以下步骤进行:

一、安装Elasticsearch 7.10.0

下载RPM包:
从Elasticsearch官网下载Elasticsearch 7.10.0的RPM包(elasticsearch-7.10.0-x86_64.rpm)。
安装Elasticsearch:
使用rpm命令安装下载的RPM包。

sudo rpm -ivh elasticsearch-7.10.0-x86_64.rpm

配置Elasticsearch:

编辑Elasticsearch的配置文件/etc/elasticsearch/elasticsearch.yml
cluster.name: "my-cluster-name"
node.name: "my-node-name"
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["my-node-name"]
# 如果启用了X-Pack安全功能,请确保设置了正确的xpack配置  
# # xpack.security.enabled: true  
# # xpack.license.self_generated.type: basic  
# # ... 其他xpack相关配置 ...# 集群和节点名称一定要设置吗?# 集群名称(cluster.name):推荐设置。它有助于标识和管理Elasticsearch集群,特别是当您有多个集群时。
# 节点名称(node.name):不是必须设置,但推荐设置。如果不设置,Elasticsearch将自动为节点生成一个名称。但自定义节点名称可以使管理更加容易,特别是在大型集群中。
sudo vi /etc/elasticsearch/jvm.options
-Xms128m
-Xmx128m

启动Elasticsearch服务:
使用systemctl命令启动Elasticsearch服务,并设置为开机自启。

sudo systemctl daemon-reload   # 重新加载 systemd 配置文件
sudo systemctl start elasticsearch  
sudo systemctl enable elasticsearch

二、安装Logstash 7.10.0

下载RPM包:
从Logstash官网下载Logstash 7.10.0的RPM包(logstash-7.10.0-x86_64.rpm)。
安装Logstash:
使用rpm命令安装下载的RPM包。

sudo rpm -ivh logstash-7.10.0-x86_64.rpm

配置Logstash:
创建或编辑Logstash的配置文件(例如logstash.conf),配置输入(input)、过滤(filter)和输出(output)。对于从MySQL读取数据并发送到Elasticsearch的场景,你需要使用jdbc插件作为输入,并使用elasticsearch插件作为输出。
以下是一个简单的配置示例:

input {  jdbc {  jdbc_driver_library => "/path/to/mysql-connector-java.jar"  jdbc_driver_class => "com.mysql.cj.jdbc.Driver"  jdbc_connection_string => "jdbc:mysql://localhost:3306/your_database"  jdbc_user => "your_username"  jdbc_password => "your_password"  statement => "SELECT * FROM your_table"  }  
}  output {  elasticsearch {  hosts => ["localhost:9200"]  index => "your_index_name"  document_id => "%{some_field}"  }  
}

请根据你的实际情况替换数据库连接字符串、用户名、密码等。

sudo vi /etc/logstash/jvm.options
-Xms123m  
-Xmx128m

使用命令行参数:
当启动Logstash时,你可以使用-w标志来指定工作线程的数量。例如,要设置工作线程数为2,你可以使用以下命令启动Logstash:

bin/logstash -f <config-file> -w 2

其中<config-file>是你的Logstash配置文件的路径。

修改配置文件:
在某些情况下,你可能需要在Logstash的配置文件中直接指定工作线程的数量。这通常涉及到修改pipeline的配置。然而,请注意,直接在配置文件中设置工作线程数量可能不是所有Logstash版本都支持的功能。在这种情况下,使用命令行参数可能是更可靠的方法。

确认Logstash是否安装成功

sudo rpm -qa | grep logstash

检查服务单元文件是否存在

ls /usr/lib/systemd/system/logstash.service
sudo rpm -ivh logstash-7.10.0-x86_64.rpm

检查Logstash安装目录

sudo find / -name logstash.service 2>/dev/null

创建一个新的 logstash.service 文件在 /usr/lib/systemd/system/ 目录下,并填入适当的配置。例如:

[Unit]  
Description=Logstash  
After=network.target  [Service]  
Type=simple  
User=logstash  
Group=logstash  
Environment=JAVA_HOME=/usr/share/logstash/jdk  
ExecStart=/usr/share/logstash/bin/logstash "-f" "/etc/logstash/conf.d/"  
Restart=always  [Install]  
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable logstash  
sudo systemctl start logstash

检查 SELinux 状态:
如果您的系统上启用了 SELinux,并且它在阻止某些操作,您可能需要调整 SELinux 策略或将其设置为 Permissive 模式进行测试。使用 getenforce 命令来检查 SELinux 的状态。
查看 Logstash 和系统的日志文件:
查看 Logstash 的日志文件(通常位于 /var/log/logstash/)以及系统的日志文件(如 /var/log/messages 或使用 journalctl 命令),以获取更多关于安装或配置问题的信息。

查看日志:
如果 Logstash 服务没有按预期运行,您可能需要查看其日志文件以获取更多信息。Logstash 的日志文件通常位于 /var/log/logstash/ 目录下。
使用 journalctl 命令也可以查看 systemd 服务的日志:

journalctl -u logstash
CentOS 7.9 上,您可以使用 useradd 命令来创建用户和组。以下是在 CentOS 7.9 上为 LogstashElasticsearch 创建专用用户和相关组的步骤:创建 Logstash 用户和组:
bash
# 创建 logstash 组  
sudo groupadd logstash  # 创建 logstash 用户,并将其添加到 logstash 组  
# 同时指定 `/usr/sbin/nologin` 作为其 shell,以禁止 shell 登录  
sudo useradd -r -g logstash -s /usr/sbin/nologin logstash
创建 Elasticsearch 用户和组:
bash
# 创建 elasticsearch 组  
sudo groupadd elasticsearch  # 创建 elasticsearch 用户,并将其添加到 elasticsearch 组  
# 同时指定 `/usr/sbin/nologin` 作为其 shell,以禁止 shell 登录  
sudo useradd -r -g elasticsearch -s /usr/sbin/nologin elasticsearch
设置文件和目录权限:
接下来,您需要确保 LogstashElasticsearch 用户有权访问其配置文件和数据目录。假设 Logstash 的配置文件位于 /etc/logstash/Elasticsearch 的数据目录位于 /var/lib/elasticsearch/,您可以执行以下命令来设置权限:bash
# 设置 Logstash 配置文件目录的所有者和组为 logstash,并设置适当的权限  
sudo chown -R logstash:logstash /etc/logstash/  
sudo chmod -R 750 /etc/logstash/  # 设置 Elasticsearch 数据目录的所有者和组为 elasticsearch,并设置适当的权限  
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/  
sudo chmod -R 750 /var/lib/elasticsearch/
请注意,上述路径和权限设置可能需要根据您的实际安装和配置进行调整。此外,如果您使用的是 Elasticsearch 的默认安装路径,它可能会在安装过程中自动创建必要的用户和组,并设置适当的权限。在这种情况下,您可能不需要手动执行上述步骤。最后,确保在启动 LogstashElasticsearch 服务时使用新创建的用户身份运行,这通常通过在服务的配置文件中指定用户或通过在 systemd 服务单元文件中设置 User=Group= 指令来完成。

sudo groupadd logstash
sudo useradd -g logstash logstash
要删除之前创建的 logstash 用户和用户组,你可以使用 userdel 和 groupdel 命令。以下是删除步骤:

删除用户:
使用 userdel 命令可以删除用户。如果你还想同时删除用户的主目录(如果有的话),可以加上 -r 选项。在你的情况下,因为 logstash 是作为系统用户(没有主目录)创建的,所以 -r 选项可能不是必需的,但加上也无妨。
bash
sudo userdel -r logstash
这里的 -r 选项会删除用户的主目录和邮件池,但因为 logstash 用户可能没有主目录(特别是如果用 -r 选项创建的话),这个命令主要会确保用户账户被删除。

删除用户组:
一旦用户被删除,你可以使用 groupdel 命令来删除对应的用户组。
bash
sudo groupdel logstash
这个命令会删除名为 logstash 的用户组。

请注意,在删除用户和用户组之前,请确保没有任何进程或服务正在以该用户的身份运行,否则可能会导致数据丢失或服务中断。此外,如果这些用户或用户组拥有特定的文件或目录,你可能需要先更改这些文件或目录的所有者,然后再删除用户和用户组,以避免留下无人拥有的文件或目录。

在你的具体情况下,因为 logstash 是作为系统服务账户创建的,很可能没有运行中的交互式进程,所以直接删除应该是安全的。但是,始终建议在执行此类操作之前进行充分的检查和备份。

验证配置:
在启动Logstash之前,验证您的配置文件是否正确。您可以使用Logstash的-t或–config.test_and_exit选项来测试配置文件的语法是否正确。

sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/ --config.test_and_exit

运行Logstash:
使用Logstash命令行工具运行你的配置文件。

sudo /usr/share/logstash/bin/logstash -f /path/to/logstash.conf

安装Logstash:
使用rpm命令安装下载的RPM包。
bash
sudo rpm -ivh logstash-7.10.0-x86_64.rpm
二、配置Logstash
编辑Logstash配置文件:
Logstash的配置文件通常位于/etc/logstash/logstash.yml。你可能需要编辑这个文件来设置一些基本的Logstash参数,如节点名称等。但是,对于允许远程访问,主要的配置在pipeline配置文件中完成。
创建或编辑pipeline配置文件:
Logstash使用pipeline配置文件来描述数据处理的流程。你需要创建一个或多个这样的文件来定义你的数据处理逻辑。对于允许远程访问,你需要确保Logstash监听在所有接口上,以便可以从远程机器接收数据。
例如,创建一个名为logstash-sample.conf的pipeline配置文件,并在其中设置输入和输出插件。对于允许远程访问,你可能需要使用像beats这样的输入插件,它监听在特定端口上等待数据。

conf
input {
beats {
port => 5044
}
}

output {
elasticsearch {
hosts => [“localhost:9200”] # 这里可以替换为你的Elasticsearch实例的地址
index => “your_index_name”
}
}
在这个例子中,Logstash使用beats输入插件监听在5044端口上。确保你的防火墙允许对这个端口的访问。

测试配置文件:
在启动Logstash之前,你可以使用Logstash的-f选项和–config.test_and_exit标志来测试你的配置文件是否有语法错误。
bash
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-sample.conf --config.test_and_exit
配置防火墙:
确保你的防火墙规则允许对Logstash监听的端口的访问。例如,如果你使用beats输入插件并监听在5044端口上,你需要打开这个端口。
bash
复制代码
sudo firewall-cmd --zone=public --add-port=5044/tcp --permanent
sudo firewall-cmd --reload

三、配置防火墙和网络访问

开放Elasticsearch端口:
默认情况下,Elasticsearch使用9200端口进行HTTP通信。你需要确保防火墙规则允许对该端口的入站连接。
使用firewall-cmd命令开放端口:

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent  
sudo firewall-cmd --reload

配置Elasticsearch的网络访问:
确保Elasticsearch的配置文件(elasticsearch.yml)中的network.host设置为0.0.0.0,以允许任何IP地址的访问。如果你只想允许特定IP或IP范围访问,可以设置为具体的IP地址或CIDR表示法。
测试远程访问:
从远程计算机尝试访问Elasticsearch的REST API(例如,使用curl命令或浏览器访问http://your_server_ip:9200/),以验证远程访问是否成功。
完成上述步骤后,你应该能够在CentOS 7.9上成功安装和配置Elasticsearch 7.10.0和Logstash 7.10.0,并确保远程可以访问Elasticsearch。请注意,根据你的具体环境和需求,可能还需要进行其他配置和优化。务必参考官方文档以获取更详细的信息和指导。

可能出现的错误

  1. 解决集群发现设置问题
    Elasticsearch的日志中提到:“the default discovery settings are unsuitable for production use”。这意味着默认的集群发现设置不适合生产环境使用。在单节点环境中,您可以通过编辑Elasticsearch的配置文件(通常是/etc/elasticsearch/elasticsearch.yml)来设置cluster.initial_master_nodes来避免这个警告。例如:
cluster.initial_master_nodes: ["your_node_name"]

将your_node_name替换为您在elasticsearch.yml中设置的节点名称。

如果您打算运行一个多节点的集群,您需要配置discovery.seed_hosts,它指定了Elasticsearch用于发现其他集群成员的主机列表。例如:

discovery.seed_hosts: ["host1", "host2", "host3"]

将host1、host2和host3替换为您集群中其他节点的实际主机名或IP地址。

  1. 查看启动引导检查失败的具体原因
    日志中提到有启动引导检查失败,但是没有提供具体的失败原因。要查看这些原因,您需要检查Elasticsearch的日志文件,通常位于/var/log/elasticsearch/目录下。查看与您的集群名称相对应的日志文件(例如my-cluster-name.log),文件中应该包含启动引导检查失败的具体原因。

  2. 根据日志中的错误信息进行修复
    一旦您查看了具体的启动引导检查错误信息,您就可以根据这些信息进行修复。一些常见的启动引导检查失败原因包括:

文件描述符限制太低。
内存锁定限制太低(vm.max_map_count)。
使用了不支持的JVM版本。
节点数据目录的权限问题。
4. 调整系统配置(如果需要)
根据启动引导检查失败的具体原因,您可能需要调整系统配置。例如,如果vm.max_map_count太低,您可以使用以下命令将其设置为一个较高的值(例如655360):

sudo sysctl -w vm.max_map_count=655360

为了使这个设置永久生效,您可以将上述行添加到/etc/sysctl.conf文件中。
根据启动引导检查失败的具体原因,您可能还需要调整系统配置。例如,增加文件描述符限制、调整内存锁定限制等。这些配置通常可以在操作系统的系统文件中设置,例如/etc/security/limits.conf和/etc/sysctl.conf。

input {  beats {  port => 5044  }  
}  filter {  # 如果需要,可以在这里添加数据过滤逻辑  # ...  
}  output {  elasticsearch {  hosts => ["localhost:9200"]  # 如果Elasticsearch不在同一台机器上,请替换为正确的地址  index => "fruit-%{+YYYY.MM.dd}"  # 使用日期作为索引名的一部分,便于管理  document_id => "%{fruitId}"  # 假设数据源中包含fruitId字段,用于设置文档ID  # 如果Elasticsearch启用了安全性功能,请添加用户名和密码配置  # user => "logstash_internal"  # password => "your_password"  }  
}

配置

vim /etc/logstash/conf.d/fruit.conf

input {jdbc {jdbc_driver_library => "/installer/mysql-connector-j-8.3.0.jar"jdbc_driver_class => "com.mysql.cj.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/fshop_app"jdbc_user => "root"jdbc_password => "Root123_"statement => "SELECT fruit_id AS fruitId, category_id AS categoryId, fruit_name AS fruitName, fruit_origin AS fruitOrigin, fruit_price AS fruitPrice, fruit_standard AS fruitStandard, fruit_detail AS fruitDetail, fruit_image_url AS fruitImageUrl, fruit_pick_time AS fruitPickTime, fruit_quality_time AS fruitQualityTime, fruit_inventory AS fruitInventory, fruit_status AS fruitStatus, version, create_time AS createTime, update_time AS updateTime, other1, other2 FROM fruit"#statement => "select * from fruit"#schedule => "*/1 * * * *"# 是否将 sql 中 column 名称转小写lowercase_column_names => false}
}output {elasticsearch {hosts => ["localhost:9200"]index => "fruit"document_id => "%{fruitId}"}stdout {codec => json_lines}}

package com.fshop.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;
import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;/*** <p>* 水果表* </p>** @author dev* @since 2024-04-23*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "fruit")
public class Fruit implements Serializable {private static final long serialVersionUID = 1L;/*** 水果ID*/@TableId(value = "fruit_id", type = IdType.AUTO)@Idprivate Integer fruitId;/*** 分类ID,外键(关联水果分类表)*/private Integer categoryId;/*** 水果名称*/@Field(type = FieldType.Keyword)private String fruitName;/*** 水果产地*/private String fruitOrigin;/*** 水果价格(元/箱)*/private BigDecimal fruitPrice;/*** 水果规格:小0、中1、大2*/private Integer fruitStandard;/*** 水果特征详细描述*/
//    @Field(type = FieldType.Text,analyzer = "ik_smart",searchAnalyzer = "ik_max_word")
//    private String fruitDetail;@CompletionField(analyzer = "ik_smart", searchAnalyzer = "ik_max_word")private String fruitDetail;/*** 水果主图片URL*/private String fruitImageUrl;/*** 采摘时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@Field( type = FieldType.Date,name = "fruit_pick_time",format = {},pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd'T'HH:mm:ss'+08:00' || strict_date_opotional_time || epoch_millis")private LocalDateTime fruitPickTime;/*** 保存时间(天)*/private Integer fruitQualityTime;/*** 库存(箱)*/private Integer fruitInventory;/*** 水果状态:已下架0、秒杀中1、售卖中2*/private Integer fruitStatus;/*** 版本*/private Integer version;/*** 创建时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@Field( type = FieldType.Date,name = "create_time",format = {},pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd'T'HH:mm:ss'+08:00' || strict_date_opotional_time || epoch_millis")private LocalDateTime createTime;/*** 最近更新时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@Field( type = FieldType.Date,name = "update_time",format = {},pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd'T'HH:mm:ss'+08:00' || strict_date_opotional_time || epoch_millis")private LocalDateTime updateTime;private String other1;private String other2;}

-- fshop_app.fruit definitionCREATE TABLE `fruit` (`fruit_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '水果ID',`category_id` int unsigned DEFAULT NULL COMMENT '分类ID,外键(关联水果分类表)',`fruit_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '水果名称',`fruit_origin` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '水果产地',`fruit_price` decimal(10,2) NOT NULL COMMENT '水果价格(元/箱)',`fruit_standard` tinyint unsigned NOT NULL COMMENT '水果规格:小0、中1、大2',`fruit_detail` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '水果特征详细描述',`fruit_image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '水果主图片URL',`fruit_pick_time` datetime NOT NULL COMMENT '采摘时间',`fruit_quality_time` int unsigned NOT NULL COMMENT '保存时间(天)',`fruit_inventory` int unsigned NOT NULL COMMENT '库存(箱)',`fruit_status` tinyint unsigned NOT NULL COMMENT '水果状态:已下架0、秒杀中1、售卖中2',`version` int unsigned NOT NULL DEFAULT '1' COMMENT '版本',`create_time` datetime NOT NULL COMMENT '创建时间',`update_time` datetime NOT NULL COMMENT '最近更新时间',`other1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`other2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,PRIMARY KEY (`fruit_id`) USING BTREE,KEY `fk_fruit_category` (`category_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='水果表';

相关文章:

006 CentOS 7.9 elasticsearch7.10.0安装及配置

文章目录 一、安装Elasticsearch 7.10.0二、安装Logstash 7.10.0三、配置防火墙和网络访问可能出现的错误配置 Elasticsearch官方网址&#xff1a; https://www.elastic.co Elasticsearch中文官网地址&#xff1a;https://www.elastic.co/cn/products/elasticsearch https://…...

蚂蚁分类信息系统二开仿么么街货源客模板微商货源网源码(带手机版)

源码介绍 网站采用蚂蚁分类信息系统二次开发&#xff0c;模板仿么么街货源客模板&#xff0c;微商货源网定制版。 模板设计风格简洁&#xff0c;分类信息采用列表形式发布&#xff0c;这种设计方式非常符合度娘 SEO 规则。收录效果是杠杠的。 这个网站风格目前是用来做货源推…...

综合数据分析及可视化实战

【实验目的】 1、掌握数据分析常用的几种扩展库: numpy、pandas、matplotlib。 2、理解数据分析的几种方法&#xff0c;即描述性数据分析&#xff0c;探索性数据分析 和验证性数据分析。 3、理解数据分析的基本步骤:数据准备、数据导入、数据预处理、数 据分析和数据可视化…...

N32G45XVL-STB之移植LVGL(8.4.0)

目录 概述 1 系统软硬件 1.1 软件版本信息 1.2 ST7796-LCD 1.3 MCU IO与LCD PIN对应关系 2 认识LVGL 2.1 LVGL官网 2.2 下载V8.4.0 3 移植LVGL 3.1 硬件驱动实现 3.2 添加LVGL库文件 3.3 移植和硬件相关的代码 3.3.1 驱动接口相关文件介绍 3.3.2 重新接口函数 3…...

SwaggerSpy:一款针对SwaggerHub的自动化OSINT安全工具

关于SwaggerSpy SwaggerSpy是一款针对SwaggerHub的自动化公开资源情报&#xff08;OSINT&#xff09;安全工具&#xff0c;该工具专为网络安全研究人员设计&#xff0c;旨在简化广大红队研究人员从SwaggerHub上收集已归档API信息的过程&#xff0c;而这些OSINT信息可以为安全人…...

Python酷库之旅-比翼双飞情侣库(05)

目录 一、xlrd库的由来 二、xlrd库优缺点 1、优点 1-1、支持多种Excel文件格式 1-2、高效性 1-3、开源性 1-4、简单易用 1-5、良好的兼容性 2、缺点 2-1、对.xlsx格式支持有限 2-2、功能相对单一 2-3、更新和维护频率低 2-4、依赖外部资源 三、xlrd库的版本说明 …...

numpy数组transpose方法的基本原理

背景&#xff1a;记录一下numpy数组维度顺序操作 一、具体示例 transpose方法用于交换数组的轴&#xff0c;改变数组的维度顺序。方法的参数是一个代表新轴顺序的元组。 假设你有一个三维数组&#xff0c;其形状是 (a, b, c)&#xff0c;即有 a 个块&#xff0c;每个块中有 b…...

Docker Swarm集群部署管理

Docker Swarm集群管理 文章目录 Docker Swarm集群管理资源列表基础环境一、安装Docker二、部署Docker Swarm集群2.1、创建Docker Swarm集群2.2、添加Worker节点到Swarm集群2.3、查看Swarm集群中Node节点的详细状态信息 三、Docker Swarm管理3.1、案例概述3.2、Docker Swarm中的…...

碎片化知识如何被系统性地吸收?

一、方法论 碎片化知识指的是通过各种渠道快速获取的零散信息和知识点&#xff0c;这些信息由于其不完整性和孤立性&#xff0c;不易于记忆和应用。为了系统性地吸收碎片化知识&#xff0c;可以采用以下策略&#xff1a; 1. **构建知识框架**&#xff1a; - 在开始吸收之前&am…...

安鸾学院靶场——安全基础

文章目录 1、Burp抓包2、指纹识别3、压缩包解密4、Nginx整数溢出漏洞5、PHP代码基础6、linux基础命令7、Mysql数据库基础8、目录扫描9、端口扫描10、docker容器基础11、文件类型 1、Burp抓包 抓取http://47.100.220.113:8007/的返回包&#xff0c;可以拿到包含flag的txt文件。…...

ChatGPT:自然语言处理的新纪元与OpenAI的深度融合

随着人工智能技术的蓬勃发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域取得了显著的进步。OpenAI作为这一领域的领军者&#xff0c;以其卓越的技术实力和创新能力&#xff0c;不断推动着NLP领域向前发展。其中ChatGPT作为OpenAI的重要成果更是在全球范围内引起了…...

AI引领项目管理新时代:效率与智能并驾齐驱

在数字化浪潮的推动下&#xff0c;项目管理领域正迎来一场由AI技术引领的革新。从自动化任务执行到智能决策支持&#xff0c;AI技术的应用正让项目管理变得更加高效、精准和智能化。本文将探讨项目管理人员及其实施团队如何运用AI技术&#xff0c;以及这些技术如何助力项目管理…...

AUTOSAR汽车电子嵌入式编程精讲300篇-电池管理系统中 CAN 通信模块的设计与应用(中)

目录 2.3 BMS 中 CAN 通信模块软硬件设计 2.3.1 CAN 通信模块硬件电路设计 2.3.2 CAN 通信模块软件设计 2.3.2.1 CAN 底层程序设计 2.3.2.2 CAN 底层初始化 2.3.2.3 CAN 底层接收 3.3.1.3 CAN 底层发送 2.4 通信协议的实现 2.4.1 整车通信协议的实现 2.4.2 充电机通信协议的实现…...

k8s概述

文章目录 一、什么是Kubernetes1、官网链接2、概述3、特点4、功能 二、Kubernetes架构1、架构图2、核心组件2.1、控制平面组件&#xff08;Control Plane Components&#xff09;2.1.1、kube-apiserver2.1.2、etcd2.1.3、kube-scheduler2.1.4、kube-controller-manager 2.2、No…...

多线程的运用

在现代软件开发中&#xff0c;多线程编程是一个非常重要的技能。多线程编程不仅可以提高应用程序的性能&#xff0c;还可以提升用户体验&#xff0c;特别是在需要处理大量数据或执行复杂计算的情况下。本文将详细介绍Java中的多线程编程&#xff0c;包括其基本概念、实现方法、…...

TF-IDF(Term Frequency-Inverse Document Frequency)算法

TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种用于文本挖掘和信息检索的统计方法&#xff0c;主要用于评估一个单词在一个文档或一组文档中的重要性。它结合了词频&#xff08;TF&#xff09;和逆文档频率&#xff08;IDF&#xff09;两个指…...

富格林:细心发现虚假确保安全

富格林指出&#xff0c;现货黄金市场内蕴藏着丰富的盈利机会&#xff0c;然而并非所有人都能够抓住这些机会。要想从市场中获取丰厚的利润并且保障交易的安全&#xff0c;必须要求我们掌握一些交易技巧利用此去发现虚假陷阱。当我们不断汲取技巧过后&#xff0c;才可利用此来发…...

6.2 文件的缓存位置

1. 文件的缓冲 1.1 缓冲说明 将文件内容写入到硬件设备时, 则需要进行系统调用, 这类I/O操作的耗时很长, 为了减少I/O操作的次数, 文件通常使用缓冲区. 当需要写入的字节数不足一个块时, 将数据放入缓冲区, 当数据凑够一个块的大小后才进行系统调用(即I/O操作).系统调用: 向…...

在Elasticsearch中,过滤器(Filter)是用于数据筛选的一种机制

在Elasticsearch中&#xff0c;过滤器&#xff08;Filter&#xff09;是用于数据筛选的一种机制&#xff0c;它通常用于结构化数据的精确匹配&#xff0c;如数字范围、日期范围、布尔值、前缀匹配等。过滤器不计算相关性评分&#xff0c;因此比查询&#xff08;Query&#xff0…...

MySQL----主键、唯一、普通索引的创建与删除

创建索引 CREATE INDEX index_name ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);CREATE INDEX: 用于创建普通索引的关键字。index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。table_name: 指定要在哪个表上创建索引。(column1, column2, ……...

css预处理是什么?作用是什么?

CSS预处理器是一种增强和扩展标准CSS的工具。它们允许开发者使用变量、嵌套规则、Mixin&#xff08;混合&#xff09;以及函数等高级功能&#xff0c;以更模块化和可维护的方式编写CSS代码。预处理器如Sass&#xff08;SCSS&#xff09;、Less和Stylus等&#xff0c;通过引入这…...

镜像拉取失败:[ERROR] Failed to pull docker image

问题描述 执行 bash docker/scripts/dev_start.sh 命令提示错误&#xff1a; permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.45/images/create?fromImageregistry.b…...

FM全网自动采集聚合影视搜索源码

源码介绍 FM 全网聚合影视搜索(响应式布局)&#xff0c;基于 TP5.1 开发的聚合影视搜索程序&#xff0c;本程序无数据库&#xff0c;本程序内置P2P 版播放器&#xff0c;承诺无广告无捆绑。片源内部滚动广告与本站无关,谨防上当受骗&#xff0c;资源搜索全部来自于网络。 环境…...

【DevOps】什么是 pfSense?免费构建SDWAN

目录 一、详细介绍pfSense 1、 什么是 pfSense&#xff1f; 2、原理 3、 特点 4、 优点 5、 缺点 6、应用场景 7、 典型部署 二、pfSense实战&#xff1a;免费构建企业SD-WAN 1、拓扑图 2、准备工作 3、安装和基本配置pfSense 4、配置VPN 配置IPsec VPN 配置OpenV…...

elementui table超出两行显示...鼠标已入tip显示

elementui el-table超出两行显示…鼠标已入tip显示 方式一 <el-table-column label"描述"prop"note"class-name"myNoteBox"><template slot-scope"scope"><!-- tips悬浮提示 --><el-tooltip placement"to…...

空白服务器安装系统

一、准备工作 确定服务器的硬件配置&#xff0c;包括处理器、内存、硬盘等信息。选择合适的操作系统镜像文件&#xff0c;可以从官方网站或者第三方网站下载。 二、制作启动盘或镜像 如果服务器支持从光盘启动&#xff0c;可以使用光盘制作软件&#xff08;如UltraISO&#…...

【车载音视频电脑】嵌入式AI分析车载DVR,支持8路1080P

产品特点 采用H.265 & H.264编解码&#xff0c;节约存储空间、传输流量&#xff1b; 高分辨率&#xff1a;支持8路1080P*15FPS/4路1080P*30FPS、720P、D1等编解码&#xff1b; 支持1张SATA硬盘&#xff0c;取用方便&#xff0c;满足大容量存储要求&#xff1b; 支持1个…...

Java实现Mysql批量插入与更新

第一、批量插入语句 Insert({"<script>","INSERT INTO TABLE_NAME (" "ID," "IS_DELETE," "GMT_CREATE," "GMT_MODIFIED" ")VALUES","<foreach collection list item item separator …...

李沐团队发布Higgs-Llama-3-70B,角色扮演专用模型

前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;在各个领域都展现出强大的能力&#xff0c;尤其是其在对话、写作、代码生成等方面的应用越来越广泛。然而&#xff0c;想要让 LLM 真正地融入人类社会&#xff0c;扮演各种角色&#xff0c;还需要具备更强大的角…...

2024年护网行动全国各地面试题汇总(4)作者:————LJS

面试过程及回答 自我介绍这里就如实回答的工作经历&#xff0c;参与的项目&#xff0c;尽量简短的把你参与的项目和成果说出来就行 使用过哪些设备&#xff0c;出现误报怎么办 天眼、EDR、全流量告警、态势感知、APT、蜜罐设备先去查看设备的完整流量日志等信息确认是否为误报&…...

哪些网站可以做免费广告推广/网站技术解决方案

在大多数情况下&#xff0c;在软件项目上进行协作意味着使用Git之类的工具-轮流进行修改&#xff0c;然后将最终产品与单个代码库协调。 但是&#xff0c;近年来&#xff0c;在代码上进行实时协作&#xff08;两个或多个人实时处理同一个文件&#xff09;变得更加可行。 您仍然…...

青岛商务学校网站建设/免费建站建站abc网站

你的系统应该是64bit的&#xff0c;在新建dsn要用64bit的odbc 运行 C:\Windows\SysWOW64\odbcad32.exe...

京东做代码的网站/国外网络推广

这一次&#xff0c;彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制&#xff0c;如果读完本文还不懂&#xff0c;可以揍我。 不论你是javascript新手还是老鸟&#xff0c;不论是面试求职&#xff0c;还是日常开发工作&#xff0c;我们经常会…...

自己做网站怎么做/竞价培训

文件上传是很常见的实用功能。本文演示如何用Express实现文件上传功能。例程本例需要两个文件及一个目录test39.js&#xff1a;主程序&#xff1b;index.html&#xff1a;用于上传文件的前端页面&#xff1b;temp_folder&#xff1a;存放被上传的文件。test39.js&#xff1a;va…...

做网站可以用什么软件/优化关键词排名外包

&#xff08;前提要求都是把第二个页面的只传给第一个页面&#xff09; 1.代理 一对一 在第二个页面设置代理 1.1在最上方设置 //选择房间的代理 protocol RoomVCDelegate <NSObject> 1.2设置代理方法 // 方法 -(void)selectRoomName:(NSString *)name; 1.3定…...

网站内容的编辑和更新怎么做/关键词研究工具

Items Override 覆写Overload 重载位置存在于继承关系的类中存在于同一类中 方法名相同相同参数列表相同必须不同 返回值相同可以不相同 程序中的处理程序运行时 程序编译时 抽象方法使用abstract关键字 public abstract bool Withdraw(…);抽象方法是必须被派生类覆写的方法。…...