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

【Linux】—Apache Hive 安装部署

文章目录

  • 前言
    • 认识Metadata
    • 认识Metastore
      • metastore三种配置方式
  • 一、安装前准备
  • 二、下载hive-3.1.2安装包
  • 三、下载完成后,通过xftp6上传到Linux服务器上
  • 四、解压Hive安装包
  • 五、配置Hive
  • 六、内嵌模型安装—Hive元数据配置到Derby
  • 七、本地模式安装—Hive元数据配置到MySQL
  • 八、远程模型安装—使用元数据服务的方式访问Hive
  • 九、Hive客户端使用
    • hive客户端
    • HiveServer、HiveServer2服务
    • Hive客户端与服务的关系
    • Hive客户机使用—Hive Client
    • Hive客户机— Hive Beeline Client


前言

本文主要介绍在Linux环境下安装Hive的过程。

  • 使用Linux 工具/版本
    • xshell6、xftp6
    • Centos7:CentOS Linux release 7.6.1810 (Core)
  • 安装Hive版本:
    • hive-3.1.2

认识Metadata

Metadata即元数据。元数据包含用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。元数据存储在关系型数据库中,如hive内置的Derby、或者第三方如MySQL等。

认识Metastore

Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。

有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore服务即可。某种程序上也保证上了hive元数据的安全。

在这里插入图片描述

metastore三种配置方式

  • 内嵌模式

内嵌模式(Embedded Metastore)是metastore默认部署模式。此种模式下,元数据存储在内置的Derby数据库,并且Derby数据库和metastore服务都嵌入在主HiveServer进程中,当启动HiveServer进程时,Derby和metastore都会启动。不需要额外起Metastore服务。
但是一次只能支持一个活动用户,适用于测试体验,不适用于生产环境。

在这里插入图片描述

  • 本地模式

本地模式(Local Metastore)下,Hive Metastore服务与主HiveServer进程在同一进程中运行,但是存储元数据的数据库在单独的进程中运行,并且可以在单独的主机上。metastore服务将通过JDBC与metastore数据库进行通信。本地模式采用外部数据库来存储元数据,推荐使用MySQL。
hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式。
缺点是:每启动一次hive服务,都内置启动了一个metastore。

在这里插入图片描述

  • 远程模式

远程模式(Remote Metastore)下,Metastore服务在其自己的单独JVM上运行,而不在HiveServer的JVM中运行。如果其他进程希望与Metastore服务器通信,则可以使用Thrift Network API进行通信。
在生产环境中,建议用远程模式来配置Hive Metastore。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。由于还可以完全屏蔽数据库层,因此这也带来了更好的可管理性/安全性。
远程模式下,需要配置hive.metastore.uris 参数来指定metastore服务运行的机器ip和端口,并且需要单独手动启动metastore服务

在这里插入图片描述

  • 三种模式对比
内嵌模式本地模式远程模式
Metastore单独配置、启动
Metastore存储介质DerbyMysqlMysql

一、安装前准备

由于Apache Hive是一款基于Hadoop的数据仓库软件,通常部署运行在Linux系统之上。因此不管使用何种方式配置Hive Metastore,必须要先保证服务器的基础环境正常,Hadoop集群健康可用。

  • 服务器基础环境

    • 集群时间同步

    • 防火墙关闭,执行"systemctl status firewalld.service“命令查看防火墙的状态;如果没有关闭,则执行"systemctl stop firewalld.service"命令关闭防火墙。

      在这里插入图片描述

    • 主机Host映射

    • 免密登录

    • JDK安装

  • Hadoop集群

    • 启动Hive之前必须先启动Hadoop集群,需等待HDFS安全模式关闭之后再启动运行Hive。执行"myhadoop start"命令启动集群,执行"jpsall"命令查看集群启动状态。

      在这里插入图片描述
      在这里插入图片描述

二、下载hive-3.1.2安装包

hive安装包下载地址:https://archive.apache.org/dist/hive/

三、下载完成后,通过xftp6上传到Linux服务器上

将hive-3.1.2安装包上传到 /opt/software 路径下面。

1、打开xshell6,连接要安装hive的Linux服务器,执行 “cd /opt/software” 命令。

在这里插入图片描述

2、打开xftp6,选择下载好的hive安装包,点击上传到 /opt/software下面。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、关闭xftp6,在刚刚连接Linux服务器的 /opt/software 路径下执行 “ll” 命令,可以查看到hive安装包已经上传成功。

在这里插入图片描述

四、解压Hive安装包

1、解压 apache-hive-3.1.2-bin.tar.gz 到/opt/module/目录下面,执行"tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/"命令。

在这里插入图片描述

2、修改apache-hive-3.1.2-bin.tar.gz 的名称为 hive,执行"mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive"命令。

在这里插入图片描述

五、配置Hive

1、添加环境变量,执行"vim /etc/profile.d/my_env.sh"命令。

  • 添加以下内容:
    #HIVE_HOME
    export HIVE_HOME=/opt/module/hive
    export PATH=$PATH:$HIVE_HOME/bin

在这里插入图片描述

2、解决日志冲突,执行"mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak”命令。

在这里插入图片描述
在这里插入图片描述

六、内嵌模型安装—Hive元数据配置到Derby

Derby是内置的数据库,无需下载。

1、初始化元数据库。执行"bin/schematool -dbType derby -initSchema"命令 。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、启动使用hive,执行"bin/hive"命令。

在这里插入图片描述

3、开启另一个窗口,执行"cat /tmp/atwqf/hive.log"命令查看日志文件。

在这里插入图片描述

注意: Hive默认使用的元数据库为derby,开启Hive之后就会占用元数据库,且不与其他客户端共享数据。
例如:另外开一个窗口使用hive,会报错FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

在这里插入图片描述

七、本地模式安装—Hive元数据配置到MySQL

本地模式安装前先进行MySQL安装,参考链接:https://blog.csdn.net/sodaloveer/article/details/139674393,确定MySQL数据库安装成功后,才将Hive元数据配置到MySQL。

1、上传MySQL的JDBC驱动(通过xftp6上传),将MySQL的JDBC驱动拷贝到Hive的lib目录下,执行"cp /opt/software/mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib"命令。

在这里插入图片描述
在这里插入图片描述

2、配置Metastore到MySQL,在/opt/module/hive/conf目录下新建hive-site.xml文件。执行"vim /opt/module/hive/conf/hive-site.xml",添加内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- jdbc 连接的 URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop103:3306/metastore?useSSL=false</value></property>	<!-- jdbc 连接的 Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>	<!-- jdbc 连接的 username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>	 <!-- jdbc 连接的 password --><property><name>javax.jdo.option.ConnectionPassword</name><value>000000</value></property>	<!-- Hive 元数据存储版本的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>	<!--元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property>	 <!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>	 
</configuration>

复制粘贴上面的内容需要注意:<?xml version="1.0"?>这里需要注意,这一行必须在第一行,并且需要顶格,前面没有任何空格或其他字符。多余空格需去掉,特殊字符需转义),否则会报错:Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs.

在这里插入图片描述

3、登陆MySQL,执行"mysql -uroot -p000000"

在这里插入图片描述

4、新建Hive元数据库,元数据库的名称要和配置文件hive-site.xml一致。

> create database metastore;
> show databases;
> quit;

在这里插入图片描述

5、初始化元数据库,执行"schematool -initSchema -dbType mysql -verbose"命令。

在这里插入图片描述

在这里插入图片描述

初始化完成。

6、再次启动Hive,执行"bin/hive"命令。

在这里插入图片描述

另一个窗口开启hive,执行"bin/hive"命令。

在这里插入图片描述

八、远程模型安装—使用元数据服务的方式访问Hive

1、执行"vim /opt/module/hive/conf/hive-site.xml",添加内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- jdbc 连接的 URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop103:3306/metastore?useSSL=false</value></property>	<!-- jdbc 连接的 Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>	<!-- jdbc 连接的 username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>	 <!-- jdbc 连接的 password --><property><name>javax.jdo.option.ConnectionPassword</name><value>000000</value></property>	<!-- Hive 元数据存储版本的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>	<!--元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property>	 <!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>	<!-- 指定存储元数据要连接的地址 --><property><name>hive.metastore.uris</name><value>thrift://hadoop103:9083</value></property>
</configuration>

与本地模式相比,hive-site.xml文件主要是在增加了下面的内容:

 <!-- 指定存储元数据要连接的地址 --><property><name>hive.metastore.uris</name><value>thrift://hadoop103:9083</value></property>
要给hive起一个服务,主要是提供端口使第三方框架可以连接使用。

2、启动metastore,三种方式:

  • 前台启动,执行"hive --service metastore"命令。

在这里插入图片描述

另起一个窗口:

在这里插入图片描述

  • 后台启动,进程挂起,执行"nohup /opt/module/hive/bin/hive --service metastore &"命令,后台启动的输出日志信息,在/root目录下,nohup.out。

  • 也可以使用脚本管理服务的启动和关闭。
    1.执行"vim $HIVE_HOME/bin/hiveservices.sh"命令新建脚本,脚本内容如下;
    2.执行"chmod +x $HIVE_HOME/bin/hiveservices.sh"命令,添加执行权限;
    3.执行"hiveservices.sh start"启动 Hive 后台服务.

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
mkdir -p $HIVE_LOG_DIR
fi
#检查进程是否运行正常,参数 1 为进程名,参数 2 为进程端口
function check_process()
{pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print 
$2}')ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)echo $pid[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}function hive_start()
{metapid=$(check_process HiveMetastore 9083)cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 
&"[ -z "$metapid" ] && eval $cmd || echo "Metastroe 服务已启动"server2pid=$(check_process HiveServer2 10000)cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"[ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服务已启动"
}
function hive_stop()
{
metapid=$(check_process HiveMetastore 9083)[ "$metapid" ] && kill $metapid || echo "Metastore 服务未启动"server2pid=$(check_process HiveServer2 10000)[ "$server2pid" ] && kill $server2pid || echo "HiveServer2 服务未启动"
}
case $1 in
"start")hive_start;;
"stop")hive_stop;;
"restart")hive_stopsleep 2hive_start;;
"status")check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服务运行
正常" || echo "Metastore 服务运行异常"check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运
行正常" || echo "HiveServer2 服务运行异常";;
*)echo Invalid Args!echo 'Usage: '$(basename $0)' start|stop|restart|status';;
esac
  • 注意:

    • 前台启动后窗口不能再操作,需打开一个新的 shell 窗口做别的操作。
    • 在远程模式下,必须首先启动Hive metastore服务才可以使用hive。因为metastore服务和hive server是两个单独的进程了。 否则会报错:

在这里插入图片描述

九、Hive客户端使用

hive客户端

在这里插入图片描述

第一代客户端(deprecated不推荐使用):$HIVE_HOME/bin/hive。
第二代客户端(recommended 推荐使用):$HIVE_HOME/bin/beeline,是一个JDBC客户端。

HiveServer、HiveServer2服务

HiveServer、HiveServer2都是Hive自带的两种服务,允许客户端在不启动CLI的情况下对Hive中的数据进行操作,且两个都允许远程客户端使用多种编程语言如java,python等向hive提交请求,取回结果。

区别:
HiveServer不能处理多于一个客户端的并发请求。
HiveServer2支持多客户端的并发和身份认证,旨在为开放API客户端如JDBC、ODBC提供更好的支持。所以更加推荐使用第二代客户端($HIVE_HOME/bin/beeline)。

Hive客户端与服务的关系

在这里插入图片描述

Hiveserver2通过metastore服务读写元数据,所以在远程模式下启动Hiveserver2之前必须先启动metastore服务。
Beeline客户端只能通过Hiveserver2服务访问Hive,而Hive Cline是通过Metastore服务访问的。

Hive客户机使用—Hive Client

bin/hive客户端是hive第一代客户端,可以访问metastore服务,从而达到操作hive目的。
内嵌和本地模式下直接执行"$HIVE_HOME/bin/hive"命令,metastore服务会内嵌一起启动。
如果需要在其他机器上(远程模式)通过bin/hive访问hive metastore服务,只需要在该机器的hive-site.xml配置中添加metastore服务地址即可。(参考上面:远程模型安装—使用元数据服务的方式访问Hive)

Hive客户机— Hive Beeline Client

Beeline客户端是hive第二代客户端(推荐使用),不是直接访问metastore服务的,需要单独启动hiveserver2服务。
Beeline是JDBC客户端面,通过JDBC协议与HIveserver2服务进行通信,协议的地址是:jdbc:hive2://hadoop103:10000。

1、使用JDBC方式访问Hive,执行"vim /opt/module/hive/conf/hive-site.xml",添加内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- jdbc 连接的 URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop103:3306/metastore?useSSL=false</value></property>	<!-- jdbc 连接的 Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><!-- jdbc 连接的 username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>	 <!-- jdbc 连接的 password --><property><name>javax.jdo.option.ConnectionPassword</name><value>000000</value></property>	<!-- Hive 元数据存储版本的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>	<!--元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property>	 <!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><!-- 指定存储元数据要连接的地址 --><property><name>hive.metastore.uris</name><value>thrift://hadoop103:9083</value></property><!-- 指定 hiveserver2 连接的 host --><property><name>hive.server2.thrift.bind.host</name><value>hadoop103</value></property>	 <!-- 指定 hiveserver2 连接的端口号 --><property><name>hive.server2.thrift.port</name><value>10000</value></property>
</configuration>

与远程模式相比,hive-site.xml文件主要是在增加了下面的内容:

 <!-- 指定 hiveserver2 连接的 host --><property><name>hive.server2.thrift.bind.host</name><value>hadoop103</value></property><!-- 指定 hiveserver2 连接的端口号 --><property><name>hive.server2.thrift.port</name><value>10000</value></property>

2、先启动metastore服务,执行"$HIVE_HOME/bin/hive --service metastore"命令。
然后启动hiveserver2,执行"$HIVE_HOME/bin/hive --service hiveserver2"命令。

在这里插入图片描述
在这里插入图片描述

3、启动beeline客户端,执行"$HIVE_HOME/bin/beeline -u jdbc:hive2://hadoop103:10000 -natwqf"命令。

在这里插入图片描述


安装过程中可能出现的报错:
“schematool -initSchema -dbType mysql -verbose” 报错!!!
安装Hive后执行“$HIVE_HOME/bin/hive”命令时,报错Connection refused

相关文章:

【Linux】—Apache Hive 安装部署

文章目录 前言认识Metadata认识Metastoremetastore三种配置方式 一、安装前准备二、下载hive-3.1.2安装包三、下载完成后&#xff0c;通过xftp6上传到Linux服务器上四、解压Hive安装包五、配置Hive六、内嵌模型安装—Hive元数据配置到Derby七、本地模式安装—Hive元数据配置到M…...

组装盒示范程序

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDO…...

推荐一款AI修图工具,支持AI去水印,AI重绘,AI抠图...

不知道大家有没有这样的一个痛点&#xff0c;发现了一张不错的“素材”&#xff0c; 但是有水印&#xff0c;因此不能采用&#xff0c;但找来找去&#xff0c;还是觉得初见的那个素材不错&#xff0c;怎么办&#xff1f; 自己先办法呗。 二师兄发现了一款功能强大的AI修图工具…...

2024广东省职业技能大赛云计算赛项实战——容器化部署Nginx

容器化部署Nginx 前言 编写Dockerfile文件构建nginx镜像&#xff0c;要求基于centos完成Nginx服务的安装和配置&#xff0c;并设置服务开机自启。 编写Dockerfile构建镜像erp-nginx:v1.0&#xff0c;要求使用centos7.9.2009镜像作为基础镜像&#xff0c;完成Nginx服务的安装&…...

压缩pdf文件大小在线,在线免费压缩pdf

在现在办公中&#xff0c;PDF文档已经成为我们日常工作中不可或缺的一部分。然而&#xff0c;随着文档内容的不断丰富&#xff0c;PDF文件的大小也逐渐增大&#xff0c;这不仅占用了大量的存储空间&#xff0c;而且在传输和共享时也显得尤为不便。所以有时候我们需要把pdf压缩小…...

薄冰英语语法学习--名词1

我用来教我自己3岁的小孩的。 有特殊的情况&#xff0c;暂时先不用管&#xff0c;3岁小孩&#xff0c;只用全部按非特殊情况算就ok了&#xff0c;以后长大了&#xff0c;遇到问题了&#xff0c;再微调一下。先解决百分之90的问题。 一般的复数&#xff0c;直接加s 特殊的词尾…...

oracle12c到19c adg搭建(六)切换后12c备库服务器安装19c软件在19c主库升级数据字典后尝试同步

一、安装19c软件 参考文章oracle12c到19c adg搭建&#xff08;三&#xff09;oracle19c数据库软件安装 二、原主库尝试通过19c软件启动数据库 2.1复制12c的相关参数文件和密码文件到19c目录 注意:密码文件需要从已切换主库19c传过来 [oracleo12u19p ~]$ cd /u01/app/oracle…...

Scope XY Project的使用

1.Scope XY Project的功能介绍与使用方法 添加监控变量 绘制成一个三角形 XY进行对调操作 修改XY轴的比例修改显示输出 2.Cursor的使用方法 游标线的添加测量 3.Reporting功能的使用方法 到处对应的报表数据 添加对应的报告数据...

Pytorch Geometric(PyG)入门

PyG (PyTorch Geometric) 是建立在 PyTorch 基础上的一个库&#xff0c;用于轻松编写和训练图形神经网络 (GNN)&#xff0c;适用于与结构化数据相关的各种应用。官方文档 Install PyG PyG适用于python3.8-3.12 一般使用场景&#xff1a;pip install torch_geometric 或conda …...

大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)

首先&#xff0c;本文回顾了MHA的计算方式以及KV Cache的原理&#xff0c;然后深入到了DeepSeek V2的MLA的原理介绍&#xff0c;同时对MLA节省的KV Cache比例做了详细的计算解读。接着&#xff0c;带着对原理的理解理清了HuggingFace MLA的全部实现&#xff0c;每行代码都去对应…...

项目中eventbus和rabbitmq配置后,不起作用

如下&#xff1a;配置了baseService层和SupplyDemand层得RabbitMQ和EventBus 但是在执行订阅事件时&#xff0c;发送得消息在base项目中没有执行&#xff0c;后来发现是虚拟机使用得不是一个&#xff0c;即上图中得EventBus下得VirtualHost&#xff0c;修改成一直就可以了...

文库小程序搭建部署:实现资源共享正向反馈

文档库相信大家应该不陌生&#xff0c;日常我们的工作模板、会议模板、求职时的简历模板、教育界的教学模板等来源方式都出自于文档库&#xff0c;随着互联网的发展和工作需求&#xff0c;文档模板开启了新型的知识变现新途径&#xff0c;通过文库小程序&#xff0c;我们不仅能…...

ONLYOFFICE 桌面编辑器8.1---一个高效且强大的办公软件

软件介绍 ONLYOFFICE 桌面编辑器经过不断的更新换代现在迎来了&#xff0c;功能更加强大的ONLYOFFICE 桌面编辑器8.1是一个功能强大的办公套件&#xff0c;专为多平台设计&#xff0c;包括Windows、Linux和macOS。它提供了一套全面的办公工具&#xff0c;包括文档处理、电子表…...

QThread 与QObject::moveToThread利用Qt事件循环在子线程执行多个函数

1. QThread的两种用法 第一种用法就是继承QThread&#xff0c;然后覆写 virtual void run()&#xff0c; 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程&#xff0c;创建一个对象&#xff0c;再将对象moveToThread, 这种可以充分利用信号槽机制&#xff…...

6-2 归并排序

6-2 归并排序 分数 10 全屏浏览 切换布局 作者 软件工程DS&A课程组 单位 燕山大学 以下代码采用分而治之算法实现归并排序。请补充函数mergesort&#xff08;&#xff09;的代码。提示&#xff1a;mergesort&#xff08;&#xff09;函数可用递归实现&#xff0c;其中参…...

Java NIO(一) 概述

NIO主要用于以少量线程来管理多个网络连接&#xff0c;处理其上的读写等事件。在大量连接情况下&#xff0c;不管是效率还是空间占用都要优于传统的BIO。 Java NIO 由以下几个核心部分组成&#xff1a; Channel Buffer Selector Selector 如果你的应用打开了多个连接&#x…...

JUC线程池最佳实践

参考&#xff1a;Java 线程池最佳实践 | JavaGuide 使用构造函数创建线程池。【使用有界队列&#xff0c;控制线程创建数量】 SpringBoot 中的 Actuator 组件 / ThreadPoolExecutor 的相关 API监控线程池运行状态 是不同的业务使用不同的线程池【父子任务用同一个线程池容易死…...

2024最新版Node.js下载安装及环境配置教程(非常详细)

一、进入官网地址下载安装包 官网&#xff1a;Node.js — Run JavaScript Everywhere 其他版本下载&#xff1a;Node.js — Download Node.js (nodejs.org) 选择对应你系统的Node.js版本 二、安装程序 &#xff08;1&#xff09;下载完成后&#xff0c;双击安装包&#xf…...

计算机网络5:运输层

概述 进程间基于网络的通信 计算机网络中实际进行通信的真正实体&#xff0c;是位于通信两端主机中的进程。 如何为运行在不同主机上的应用进程提供直接的逻辑通信服务&#xff0c;就是运输层的主要任务。运输层协议又称为端到端协议。 运输层向应用层实体屏蔽了下面网络核心…...

昂科烧录器支持HangShun航顺芯片的32位微控制器HK32F030C8T6

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中HangShun航顺芯片的32位微控制器HK32F030C8T6已经被昂科的通用烧录平台AP8000所支持。 HK32F030C8T6使用ARM Cortex-M0内核&#xff0c;最高工作频率96 MHz&#xff0c;内置最…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

无人机侦测与反制技术的进展与应用

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

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...