Hadoop生态圈框架部署(六)- HBase完全分布式部署
文章目录
- 前言
- 一、Hbase完全分布式部署(手动部署)
- 1. 下载Hbase
- 2. 上传安装包
- 3. 解压HBase安装包
- 4. 配置HBase配置文件
- 4.1 修改hbase-env.sh配置文件
- 4.2 修改hbase-site.xml配置文件
- 4.3 修改regionservers配置文件
- 4.4 删除hbase中slf4j-reload4j-1.7.33.jar文件
- 5. 虚拟机hadoop2安装并配置HBase
- 6. 虚拟机hadoop3安装并配置HBase
- 7. 配置HBase系统环境变量
- 7.1 配置虚拟机hadoop1的HBase环境变量
- 7.2 配置虚拟机hadoop2的HBase环境变量
- 7.3 配置虚拟机hadoop3的HBase环境变量
- 8. 启动HBase集群
- 9. 进入HBase客户端
- 10. 访问 HBase 的 Web UI 页面
- 10.1 访问 Master 的 UI 页面
- 10.2 访问 RegionServer 的 UI 页面
- 11. 停止HBase集群
- 二、使用shell脚本自动部署Hbase完全分布式(选看)
- 1. 下载Hbase
- 2. 上传安装包
- 3. 使用shell脚本自动部署Hbase完全分布式
- 3.1 创建 hadoop1_hbase_install_config.sh 脚本文件并添加脚本内容
- 3.2 添加可执行权限
- 3.3 执行脚本
- 4. 加载环境变量
- 5. 启动HBase集群
- 6. 进入HBase客户端
- 7. 访问 HBase 的 Web UI 页面
- 7.1 访问 Master 的 UI 页面
- 7.2 访问 RegionServer 的 UI 页面
- 8. 停止HBase集群
前言
随着大数据技术的不断发展,HBase 作为 Hadoop 生态系统中的重要组件,因其出色的性能和可扩展性而受到广泛欢迎。本文将详细介绍 HBase 在完全分布式环境下的安装与配置过程。我们将从环境准备、软件下载、配置文件修改到集群启动等多个环节进行逐一讲解,确保读者能够顺利搭建起自己的 HBase 分布式集群。通过本文的学习,读者不仅能够掌握 HBase 的安装步骤,还能了解其核心配置项的意义和作用,为后续的数据存储与管理打下坚实的基础。
一、Hbase完全分布式部署(手动部署)
1. 下载Hbase
点击下载 hbase2.4.18安装包:https://mirrors.huaweicloud.com/apache/hbase/2.4.18/hbase-2.4.18-bin.tar.gz
2. 上传安装包
通过拖移的方式将下载的HBase安装包hbase-2.4.18-bin.tar.gz上传至虚拟机hadoop1的/export/software目录。
3. 解压HBase安装包
在虚拟机hadoop1上传完成后将HBase安装包通过解压方式安装至/export/servers目录。
tar -zxvf /export/software/hbase-2.4.18-bin.tar.gz -C /export/servers
4. 配置HBase配置文件
4.1 修改hbase-env.sh配置文件
在虚拟机hadoop1修改hbase运行时环境变量配置文件/export/servers/hbase-2.4.18/conf/hbase-env.sh
,执行如下命令添加配置。
echo 'export JAVA_HOME=/export/servers/jdk1.8.0_421' >> /export/servers/hbase-2.4.18/conf/hbase-env.sh
echo 'export HBASE_MANAGES_ZK=false' >> /export/servers/hbase-2.4.18/conf/hbase-env.sh
echo 'export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true' >> /export/servers/hbase-2.4.18/conf/hbase-env.sh
4.2 修改hbase-site.xml配置文件
在虚拟机hadoop1修改hbase配置文件/export/servers/hbase-2.4.18/conf/hbase-site.xml
,执行如下命令修改配置。
cat >/export/servers/hbase-2.4.18/conf/hbase-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.tmp.dir</name><value>/export/data/hbase2.4.18</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><property><name>hbase.rootdir</name><value>hdfs://hadoop1:9000/hbase</value></property><property><name>hbase.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><property><name>hbase.master.port</name><value>16000</value></property><property><name>hbase.master.info.port</name><value>16010</value></property><property><name>hbase.regionserver.port</name><value>16020</value></property><property><name>hbase.regionserver.info.port</name><value>16030</value></property>
</configuration>
EOF
4.3 修改regionservers配置文件
在虚拟机hadoop1修改/export/servers/hbase-2.4.18/conf/regionservers
配置文件,配置RegionServer 节点,执行如下命令修改配置。
cat >/export/servers/hbase-2.4.18/conf/regionservers <<EOF
hadoop2
hadoop3
EOF
4.4 删除hbase中slf4j-reload4j-1.7.33.jar文件
在虚拟机hadoop1执行如下命令删除hbase中slf4j-reload4j-1.7.33.jar文件,解决与hadoop中另一个日志jar包相同类的冲突。
rm -f /export/servers/hbase-2.4.18/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar
5. 虚拟机hadoop2安装并配置HBase
在虚拟机hadoop1使用scp命令把虚拟机hadoop1的HBase的安装目录复制到虚拟机hadoop2的相同目录下,就相当于在hadoop2安装并配置了HBase。
scp -r /export/servers/hbase-2.4.18 root@hadoop2:/export/servers/
6. 虚拟机hadoop3安装并配置HBase
在虚拟机hadoop1使用scp命令把虚拟机hadoop1的HBase的安装目录复制到虚拟机hadoop3的相同目录下,就相当于在hadoop3安装并配置了HBase。
scp -r /export/servers/hbase-2.4.18 root@hadoop3:/export/servers/
7. 配置HBase系统环境变量
7.1 配置虚拟机hadoop1的HBase环境变量
在虚拟机hadoop1使用echo
命令向环境变量配置文件/etc/profile
追加环境变量内容。
echo >> /etc/profile
echo 'export HBASE_HOME=/export/servers/hbase-2.4.18' >> /etc/profile
echo 'export PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
7.2 配置虚拟机hadoop2的HBase环境变量
在虚拟机hadoop2使用echo
命令向环境变量配置文件/etc/profile
追加环境变量内容。
echo >> /etc/profile
echo 'export HBASE_HOME=/export/servers/hbase-2.4.18' >> /etc/profile
echo 'export PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
7.3 配置虚拟机hadoop3的HBase环境变量
在虚拟机hadoop3使用echo
命令向环境变量配置文件/etc/profile
追加环境变量内容。
echo >> /etc/profile
echo 'export HBASE_HOME=/export/servers/hbase-2.4.18' >> /etc/profile
echo 'export PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile
配置环境变量后,需要使用如下命令加载环境变量配置文件/etc/profile,使用Zookeeper的环境变量生效。
source /etc/profile
8. 启动HBase集群
由于 HBase 使用 HDFS 作为底层文件存储系统,使用 ZooKeeper 来实现多个 RegionServer 之间的一致性和协调,所以在启动 HBase 集群之前需要先启动 Hadoop 集群和 Zookeeper 集群。
启动hadoop集群和zookeeper集群后,在虚拟机hadoop1执行如下命令启动HBase集群。
start-hbase.sh
9. 进入HBase客户端
执行如下命令进入 HBase 的命令行客户端。
hbase shell
退出HBase命令行客户端。
exit
10. 访问 HBase 的 Web UI 页面
10.1 访问 Master 的 UI 页面
浏览器输入http://192.168.121.160:16010
即可访问 Master 的 UI 页面。
10.2 访问 RegionServer 的 UI 页面
浏览器输入http://192.168.121.161:16030
即可访问 RegionServer 的 UI 页面。
浏览器输入http://192.168.121.162:16030
即可访问 RegionServer 的 UI 页面。
11. 停止HBase集群
若要停止HBase集群运行,在虚拟机hadoop1执行如下命令停止HBase集群。
stop-hbase.sh
单独停止 master 和 regionserver
若在虚拟机hadoop1执行stop-hbase.sh
命令不能成功停止hbase集群,则在虚拟机hadoop1执行如下命令单独停止master
。
hbase-daemon.sh stop master
在虚拟机hadoop2和hadoop3执行如下命令单独停止regionserver
。
hbase-daemon.sh stop regionserver
二、使用shell脚本自动部署Hbase完全分布式(选看)
1. 下载Hbase
点击下载 hbase2.4.18安装包:https://mirrors.huaweicloud.com/apache/hbase/2.4.18/hbase-2.4.18-bin.tar.gz
2. 上传安装包
通过拖移的方式将下载的HBase安装包hbase-2.4.18-bin.tar.gz上传至虚拟机hadoop1的/export/software目录。
3. 使用shell脚本自动部署Hbase完全分布式
3.1 创建 hadoop1_hbase_install_config.sh 脚本文件并添加脚本内容
在虚拟机hadoop1上创建hadoop1_hbase_install_config.sh
脚本文件
touch /export/shell/hadoop1_hbase_install_config.sh
添加如下内容:
#!/bin/bash# 定义常量
HBASE_VER="2.4.18"
HBASE_TAR="hbase-${HBASE_VER}-bin.tar.gz"
DATA_DIR="/export/data"
SOFTWARE_DIR="/export/software"
SERVERS_DIR="/export/servers"# 检查hbase是否已解压
if [ -d "${SERVERS_DIR}/hbase-${HBASE_VER}" ]; thenecho "hadoop安装程序已存在,正在删除原安装程序目录..."rm -rf "${SERVERS_DIR}/hbase-${HBASE_VER}"
fi# 检查hbase安装包是否存在
if [ -f ${SOFTWARE_DIR}/${HBASE_TAR} ]; thenecho "hbase安装包存在,正在解压安装包..."# 解压HBase安装包tar -zxvf ${SOFTWARE_DIR}/${HBASE_TAR} -C ${SERVERS_DIR}echo "解压 ${SOFTWARE_DIR}/${HBASE_TAR} 到 ${SERVERS_DIR} 目录成功"
elseecho "HBase安装包不存在,请先上传安装包到 ${SOFTWARE_DIR} 目录"exit 1
fi# 修改hbase-env.sh配置文件
echo 'export JAVA_HOME=/export/servers/jdk1.8.0_421' >>${SERVERS_DIR}/hbase-${HBASE_VER}/conf/hbase-env.sh
echo 'export HBASE_MANAGES_ZK=false' >>${SERVERS_DIR}/hbase-${HBASE_VER}/conf/hbase-env.sh
echo 'export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true' >>${SERVERS_DIR}/hbase-${HBASE_VER}/conf/hbase-env.sh# 修改hbase-site.xml配置文件
cat >${SERVERS_DIR}/hbase-${HBASE_VER}/conf/hbase-site.xml <<EOF
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.tmp.dir</name><value>/export/data/hbase2.4.18</value></property><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property><property><name>hbase.rootdir</name><value>hdfs://hadoop1:9000/hbase</value></property><property><name>hbase.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property><property><name>hbase.master.port</name><value>16000</value></property><property><name>hbase.master.info.port</name><value>16010</value></property><property><name>hbase.regionserver.port</name><value>16020</value></property><property><name>hbase.regionserver.info.port</name><value>16030</value></property>
</configuration>
EOF
echo "${SERVERS_DIR}/hbase-${HBASE_VER}/conf/hbase-site.xml 配置文件修改成功"# 修改regionservers配置文件
cat >${SERVERS_DIR}/hbase-${HBASE_VER}/conf/regionservers <<EOF
hadoop2
hadoop3
EOF
echo "${SERVERS_DIR}/hbase-${HBASE_VER}/conf/regionservers 配置文件修改成功"# 删除hbase中slf4j-reload4j-1.7.33.jar文件
rm -f ${SERVERS_DIR}/hbase-${HBASE_VER}/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar
if [ $? -eq 0 ]; thenecho "${SERVERS_DIR}/hbase-${HBASE_VER}/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar 文件删除成功"
elseecho "${SERVERS_DIR}/hbase-${HBASE_VER}/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar 文件删除失败,请检查"exit 1
fi# 删除hbase临时数据目录
rm -rf ${DATA_DIR}/hbase${HBASE_VER}# 删除hbase在hdfs上的数据目录
hdfs dfs -rm -r /hbase# 删除hbase在zookeeper上的数据目录
zkCli.sh <<EOF
deleteall /hbase
quit
EOF# 设置hbase环境变量
echo >> /etc/profile
echo 'export HBASE_HOME=/export/servers/hbase-2.4.18' >> /etc/profile
echo 'export PATH=$PATH:$HBASE_HOME/bin' >> /etc/profile
echo "虚拟机Hadoop1的hbase环境变量设置成功"# 分发环境变量配置文件到hadoop2
scp /etc/profile root@hadoop2:/etc/
if [ $? -eq 0 ]; thenecho "分发 /etc/profile 到 hadoop2 的 /etc 目录成功"
elseecho "分发 /etc/profile 到 hadoop2 的 /etc 目录失败,请检查"exit 1
fi# 分发环境变量配置文件到hadoop3
scp /etc/profile root@hadoop3:/etc/
if [ $? -eq 0 ]; thenecho "分发 /etc/profile 到 hadoop3 的 /etc 目录成功"
elseecho "分发 /etc/profile 到 hadoop3 的 /etc 目录失败,请检查"exit 1
fi# 分发安装程序到hadoop2
scp -r ${SERVERS_DIR}/hbase-${HBASE_VER} root@hadoop2:${SERVERS_DIR}/
if [ $? -eq 0 ]; thenecho "分发 ${SERVERS_DIR}/hbase-${HBASE_VER} 到 hadoop2 的 ${SERVERS_DIR} 目录成功"
elseecho "分发 ${SERVERS_DIR}/hbase-${HBASE_VER} 到 hadoop2 的 ${SERVERS_DIR} 目录失败,请检查"exit 1
fi# 分发安装程序到hadoop3
scp -r ${SERVERS_DIR}/hbase-${HBASE_VER} root@hadoop3:${SERVERS_DIR}/
if [ $? -eq 0 ]; thenecho "分发 ${SERVERS_DIR}/hbase-${HBASE_VER} 到 hadoop3 的 ${SERVERS_DIR} 目录成功"
elseecho "分发 ${SERVERS_DIR}/hbase-${HBASE_VER} 到 hadoop3 的 ${SERVERS_DIR} 目录失败,请检查"exit 1
fiecho -e "\n-----hbase 完全分布式安装配置完成-----\n"
echo -e "1. 依次在虚拟机Hadoop1、Hadoop2和Hadoop3执行命令 \e[31msource /etc/profile\e[0m 加载环境变量\n"
echo -e "2. 在虚拟机Hadoop1启动HBase集群:\e[31mstart-hbase.sh\e[0m\n"
echo -e "3. 若要停止hbase集群,在虚拟机Hadoop1执行:\e[31mstop-hbase.sh\e[0m\n"exit 0
3.2 添加可执行权限
在虚拟机hadoop1上给脚本文件/export/shell/hadoop1_hbase_install_config.sh
添加可执行权限。
chmod +x /export/shell/hadoop1_hbase_install_config.sh
3.3 执行脚本
在虚拟机hadoop1上执行脚本文件自动化安装配置zookeeper完全分布式。
/export/shell/hadoop1_hbase_install_config.sh
执行完成如下图所示。
4. 加载环境变量
根据使用shell脚本自动安装完成后的提示依次在虚拟机hadoop1、hadoop2和hadoop3执行如下命令加载环境变量。
source /etc/profile
5. 启动HBase集群
由于 HBase 使用 HDFS 作为底层文件存储系统,使用 ZooKeeper 来实现多个 RegionServer 之间的一致性和协调,所以在启动 HBase 集群之前需要先启动 Hadoop 集群和 Zookeeper 集群。
启动hadoop集群和zookeeper集群后,在虚拟机hadoop1执行如下命令启动HBase集群。
start-hbase.sh
6. 进入HBase客户端
执行如下命令进入 HBase 的命令行客户端。
hbase shell
退出HBase命令行客户端。
exit
7. 访问 HBase 的 Web UI 页面
7.1 访问 Master 的 UI 页面
浏览器输入http://192.168.121.160:16010
即可访问 Master 的 UI 页面。
7.2 访问 RegionServer 的 UI 页面
浏览器输入http://192.168.121.161:16030
即可访问 RegionServer 的 UI 页面。
浏览器输入http://192.168.121.162:16030
即可访问 RegionServer 的 UI 页面。
8. 停止HBase集群
若要停止HBase集群运行,在虚拟机hadoop1执行如下命令停止HBase集群。
stop-hbase.sh
单独停止 master 和 regionserver
若在虚拟机hadoop1执行stop-hbase.sh
命令不能成功停止hbase集群,则在虚拟机hadoop1执行如下命令单独停止master
。
hbase-daemon.sh stop master
在虚拟机hadoop2和hadoop3执行如下命令单独停止regionserver
。
hbase-daemon.sh stop regionserver
相关文章:

Hadoop生态圈框架部署(六)- HBase完全分布式部署
文章目录 前言一、Hbase完全分布式部署(手动部署)1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.j…...

python怎么解决中文注释
最近开发学习Python,当加入中文注释时,运行程序报错: File "red.py", line 10 SyntaxError: Non-ASCII character \xe5 in file red.py on line 10, but no encoding declared; see http://www.python.org/peps/pep-0263.html fo…...

【Unity】Game Framework框架学习使用
前言 之前用过一段时间的Game Framework框架,后来有那么一段时间都做定制小软件,框架就没再怎么使用了。 现在要做大型项目了,感觉还是用框架好一些。于是又把Game Framework拾起来了。 这篇文章主要是讲Game Framework这个框架是怎么用的…...

Linux(CentOS 7) yum一键安装mysql8
1、通过yum安装 (1)下载mysql 在Linux找个地方输入以下命令 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm (2)安装mysql yum 仓库配置文件 [rootVM-8-15-centos ~]# sudo rpm -Uvh mysql80-c…...

Kafka 快速入门(一)
1.1安装部署 1.1.1 集群规划 bigdata01bigdata02bigdata03zookeeperzookeeperzookeeperkafkakafkakafka 1.1.2 集群部署 官方下载地址:http://kafka.apache.org/downloads.html 检查三台虚拟机的zk是否启动:zkServer.sh start 默认启动方式 1)解压…...

丹摩征文活动 | SD3+ComfyUI的图像部署实践
一、前言 作为Stability AI 推出的一款革命性的文本转图像开源模型,Stable Diffusion 3(简称SD3)在图像质量、文本内容生成、理解复杂指令以及资源利用效率方面,都有着不俗的表现。 SD3的Medium版本,拥有20亿参数&am…...

H.265流媒体播放器EasyPlayer.js网页web无插件播放器:如何优化加载速度
在当今的网络环境中,用户对于视频播放体验的要求越来越高,尤其是对于视频加载速度的期待。EasyPlayer.js网页web无插件播放器作为一款专为现代Web环境设计的流媒体播放器,它在优化加载速度方面采取了多种措施,以确保用户能够享受到…...

【Linux】进程状态的优先级
大家好呀,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流哦 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各…...
react中的组件传参
在React中,组件之间的数据传递是构建用户界面的关键部分。根据不同的需求和场景,有多种方式可以在React中传递参数,以下是对这些方式的详细说明: 一、通过props传递参数 这是React中最基本和最常用的数据传递方式。父组件通过属…...
HTML5:网页开发的新纪元
文章目录 前言一、HTML5技术概述二、主要特点及优势1. 多媒体支持2. 图形绘制3. 离线存储4. 表单控件增强5. 响应式设计 三、应用场景1. 游戏开发2. 在线教育3. 电子商务 四、面临的挑战结语 前言 在互联网技术快速发展的今天,H5(HTML5的简称࿰…...

CKA认证 | Day2 K8s内部监控与日志
第三章 Kubernetes监控与日志 1、查看集群资源状态 在 Kubernetes 集群中,查看集群资源状态和组件状态是非常重要的操作。以下是一些常用的命令和解释,帮助你更好地管理和监控 Kubernetes 集群。 1.1 查看master组件状态 Kubernetes 的 Master 组件包…...

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现
0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…...

ubuntu更改max_map_count
在Ubuntu系统中,max_map_count是一个内核参数,用于限制每个进程可以拥有的内存段的数量。对于Elasticsearch等需要大量内存映射的应用,可能需要增加这个值。 执行以下步骤来更改max_map_count的值: 打开终端。 输入以下命令以编…...
《NPU、CPU、GPU 算力定义和计算方式》
一、引言 在人工智能时代,算力成为了推动技术发展的关键因素之一。不同类型的处理器,如中央处理器(CPU)、图形处理器(GPU)和神经网络处理器(NPU),在算力方面有着各自的特…...

初级数据结构——顺序表
目录 前言一、定义与特点二、类型三、基本操作四、应用场景五、优缺点六、元素插入和删除动态图解插入删除 七、代码模板八、使用顺序表的经典例题1.求奇数的乘积代码题解 2.数值统计代码题解 九、总结结语 前言 顺序表示最基础的数据结构之一,它也是我们学习开始学…...

游戏引擎学习第五天
这节貌似没讲什么 视频参考:https://www.bilibili.com/video/BV1Gmm2Y5EwE/ uint8 *A somewhere in memory; uint8 *B somewhere in memory;//BEFORE WE GOT TO HERE int Y *B; // whatever was actually there before the 5 *A 5; int X *B; // 5 //Obviously! Y and …...

智能社区服务小程序+ssm
智能社区服务小程序 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足,创建了一个计算机管理智能社区服务小程序的方案。文…...
glide性能优化实战
glide性能优化实战 前言 项目使用glide加载图片之前也只是会基本api,这次项目有非常多的图片需要展示,而且设备是一个android12的版本,但是性能不太理想,分给APP的资源不太多,所以需要优化现有图片加载逻辑,读者可以…...

Python 环境搭建和安装(保姆级教程)
本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等…...

Java并发编程(二):同步机制与多线程是否矛盾
同步机制与多线程是否矛盾 0 纠正对异步和多选误解1 概述2 为什么要引入同步机制3 为什么多线程依然有意义3 总结 大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。 0 纠正对异步和多选误解 行文之前先纠正一下…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

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

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...