大数据技术实训:Hadoop完全分布式运行模式配置

准备:

       1)准备3台客户机(关闭防火墙、静态ip、主机名称

       2)安装JDK

       3)配置环境变量

       4)安装Hadoop

       5)配置环境变量

       6)配置集群

       7)单点启动

       8)配置ssh

       9)群起并测试集群

一、虚拟机准备

二、编写集群分发脚本xsync

1)scp(secure copy)安全拷贝

(1)scp定义:

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

(2)基本语法

scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname

命令   递归       要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

(3)案例实操

       前提:在 hadoop102  hadoop103  hadoop104 都已经创建好的 /opt/module

           /opt/software 两个目录, 并且已经把这两个目录修改为username:username

                     sudo chown username:username -R /opt/module

(a)在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。

$ scp -r /opt/module/jdk1.8.0_212  username@hadoop103:/opt/module

(b)在hadoop103上,将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。

$ scp -r username@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

(c)在hadoop103上操作,将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上。

$ scp -r username@hadoop102:/opt/module/* username@hadoop104:/opt/module

2)rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

(1)基本语法

rsync    -av       $pdir/$fname              $user@hadoop$host:$pdir/$fname

命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

         选项参数说明

选项

功能

-a

归档拷贝

-v

显示复制过程

(2)案例实操

(a)把hadoop102机器上的/opt/software目录同步到hadoop103服务器的/opt/software目录下

$ rsync -av /opt/software/* username@hadoop103:/opt/software

3)xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析:

(a)rsync命令原始拷贝:

(b)期望脚本:

xsync要同步的文件名称

(c)说明:在/home/username/bin这个目录下存放的脚本,username用户可以在系统任何地方直接执行。

(3)脚本实现

(a)在/home/username/bin目录下创建xsync文件

[username@hadoop102 opt]$ cd /home/username
[username@hadoop102 ~]$ mkdir bin
[username@hadoop102 ~]$ cd bin
[username@hadoop102 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4. 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

(b)修改脚本 xsync 具有执行权限

$ chmod +x xsync

(c)将脚本复制到/bin中,以便全局调用

$ sudo cp xsync /bin/

(d)测试脚本

$ xsync /home/username/bin
$ sudo xsync /bin/xsync

三、SSH无密登录配置

1)配置ssh

(1)基本语法

ssh另一台电脑的ip地址

(2)ssh连接时出现Host key verification failed的解决方法

$ ssh hadoop103

出现:

The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? 

(3)解决方案如下:直接输入yes

2)无密钥配置

(1)免密登录原理

(2)生成公钥和私钥:

$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

[username@hadoop102 .ssh]$ ssh-copy-id hadoop102
[username@hadoop102 .ssh]$ ssh-copy-id hadoop103
[username@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:

还需要在hadoop103上采用username账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

还需要在hadoop104上采用username账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。

还需要在hadoop102上采用root账号,配置一下无密登录到hadoop102、hadoop103、hadoop104;

3).ssh文件夹下(~/.ssh)的文件功能解释

known_hosts

记录ssh访问过计算机的公钥(public key)

id_rsa

生成的私钥

id_rsa.pub

生成的公钥

authorized_keys

存放授权过的无密登录服务器公钥

四、集群配置

1)集群部署规划

         注意:NameNode和SecondaryNameNode不要安装在同一台服务器

         注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

hadoop102

hadoop103

hadoop104

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

2)配置文件说明

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

(1)默认配置文件:

要获取的默认文件

文件存放在Hadoop的jar包中的位置

[core-default.xml]

hadoop-common-3.1.3.jar/ core-default.xml

[hdfs-default.xml]

hadoop-hdfs-3.1.3.jar/ hdfs-default.xml

[yarn-default.xml]

hadoop-yarn-common-3.1.3.jar/ yarn-default.xml

[mapred-default.xml]

hadoop-mapreduce-client-core-3.1.3.jar/ mapred-default.xml

(2)自定义配置文件:

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

(3)常用端口号说明

Daemon

App

Hadoop2

Hadoop3

NameNode Port

Hadoop HDFS NameNode

8020 / 9000

9820

Hadoop HDFS NameNode HTTP UI

50070

9870

Secondary NameNode Port

Secondary NameNode

50091

9869

Secondary NameNode HTTP UI

50090

9868

DataNode Port

Hadoop HDFS DataNode IPC

50020

9867

Hadoop HDFS DataNode

50010

9866

Hadoop HDFS DataNode HTTP UI

50075

9864

3)配置集群

(1)核心配置文件

配置core-site.xml

[username@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[username@hadoop102 hadoop]$ vim core-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9820</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
</property>

<!-- 配置HDFS网页登录使用的静态用户为username-->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>username</value>
</property>

<!-- 配置该username(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.username.hosts</name>
        <value>*</value>
</property>
<!-- 配置该username(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.username.groups</name>
        <value>*</value>
</property>
<!-- 配置该username(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.username.groups</name>
        <value>*</value>
</property>

</configuration>

(2)HDFS配置文件

配置hdfs-site.xml

$ vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

(3)YARN配置文件

配置yarn-site.xml

$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

(4)MapReduce配置文件

配置mapred-site.xml

$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4)在集群上分发配置好的Hadoop配置文件

$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/

5)去103和104上查看文件分发情况

$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

五、群起集群

1)配置workers

$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

$ xsync /opt/module/hadoop-3.1.3/etc

2)启动集群

(1)如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

$ hdfs namenode -format

(2)启动HDFS

$ sbin/start-dfs.sh

(3)在配置了ResourceManager的节点(hadoop103)启动YARN

$ sbin/start-yarn.sh

(4)Web端查看HDFS的NameNode

(a)浏览器中输入:http://hadoop102:9870

              (b)查看HDFS上存储的数据信息

(5)Web端查看YARN的ResourceManager

(a)浏览器中输入:http://hadoop103:8088

       (b)查看YARN上运行的Job信息

3)集群基本测试

(1)上传文件到集群

上传小文件

[username@hadoop102 ~]$ hadoop fs -mkdir /input
[username@hadoop102 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

上传大文件

$ hadoop fs -put  /opt/software/jdk-8u212-linux-x64.tar.gz  /

(2)上传文件后查看文件存放在什么位置

(a)查看HDFS文件存储路径

$ pwd
/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

(b)查看HDFS在磁盘存储文件内容

$ cat blk_1073741825
hadoop yarn
hadoop mapreduce 
username
username

(3)拼接

[username@hadoop102 subdir0]$ cat blk_1073741836>>tmp.tar.gz
[username@hadoop102 subdir0]$ cat blk_1073741837>>tmp.tar.gz
[username@hadoop102 subdir0]$ tar -zxvf tmp.tar.gz

(4)下载

$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

(5)执行wordcount程序

$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

六、集群启动/停止方式总结

1)各个服务组件逐一启动/停止

(1)分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager

2)各个模块分开启动/停止(配置ssh是前提)常用

(1)整体启动/停止HDFS

$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
start-dfs.sh/stop-dfs.sh

(2)启动/停止YARN

start-yarn.sh/stop-yarn.sh

七、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1)配置mapred-site.xml

$ vim mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

2)分发配置

$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

3)在hadoop102启动历史服务器

$ mapred --daemon start historyserver

4)查看历史服务器是否启动

$ jps

5)查看JobHistory

http://hadoop102:19888/jobhistory

八、配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。

开启日志聚集功能具体步骤如下:

1)配置yarn-site.xml

$ vim yarn-site.xml

在该文件里面增加如下配置。

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

2)分发配置

$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

3)关闭NodeManager 、ResourceManager和HistoryServer

$ stop-yarn.sh
$ mapred --daemon stop historyserver

4)启动NodeManager 、ResourceManage和HistoryServer

$ start-yarn.sh
$ mapred --daemon start historyserver

5)删除HDFS上已经存在的输出文件

$ hadoop jar  $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

7)查看日志,



http://hadoop102:19888/jobhistory

九、编写hadoop集群常用脚本

1)查看三台服务器java进程脚本:jpsall

$ cd /home/username/bin
$ vim jpsall

然后输入

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
        echo =============== $host ===============
        ssh $host jps $@ | grep -v Jps
done

保存后退出,然后赋予脚本执行权限

$ chmod +x jpsall

2)hadoop集群启停脚本(包含hdfs,yarn,historyserver):myhadoop.sh

$ cd /home/username/bin
$ vim myhadoop.sh

然后输入

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

保存后退出,然后赋予脚本执行权限

$ chmod +x myhadoop.sh

3)分发/home/username/bin目录,保证自定义脚本在三台机器上都可以使用

$ xsync /home/username/bin/

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

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

相关文章

【Uniapp-Vue3】Prop校验与prop默认值用法及循环遍历数组对象

一、prop校验 如果我们在想要限制prop的类型&#xff0c;就可以在接收prop的时候对接收类型进行限制&#xff1a; defineProps({ 属性名:{ type:类型 } }) 需要注意类型的首字母大写 但是设置了传入参数类型限制并不能严格限制&#xff0c;只会在后台进行提示&#xff1a; 二、…

开启Excel导航仪,跨表跳转不迷路-Excel易用宝

都2025年了&#xff0c;汽车都有导航了&#xff0c;你的表格还没有导航仪吗&#xff1f;那也太OUT了。 面对着一个工作簿中有N多个工作表&#xff0c;工作表中又有超级表&#xff0c;数据透视表&#xff0c;图表等元素&#xff0c;如何快速的切换跳转到需要查看的数据呢&#…

【Unity3D日常开发】Unity3D中适用WEBGL打开Window文件对话框打开/上传文件

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 Unity3D发布的WEBGL程序是不支持直接的I/O操…

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期&#xff1a;开源低功…

音频合成的常见问题

使用了1年多的音频合成&#xff0c;有些常见的问题分享给大家 。 一、音质问题 噪声 背景噪声&#xff1a;在音频合成过程中&#xff0c;可能会引入背景噪声。这可能是由于原始音频素材本身质量不佳&#xff0c;比如录制环境嘈杂&#xff0c;包含电脑风扇声、外界交通声等。当…

用AI技术提升Flutter开发效率:ScriptEcho的力量

引言 在当今快速发展的技术时代&#xff0c;Flutter作为一种跨平台开发框架&#xff0c;正在越来越多的开发者中崭露头角。它不仅能够为开发者提供一套代码同时部署到iOS和Android平台的解决方案&#xff0c;还能帮助企业节省人力成本和开发时间。然而&#xff0c;对于新手开发…

SmartAIChain荣获重要认可

2024年12月21日,洛杉矶尔湾市——在今年尔湾举办的交流会上,黄荣先生的SmartAIChain项目获得了重要认可。此次活动汇聚了来自各地的杰出人才以及社区代表,共同庆祝这一创新性艺术的时刻。 在活动中,核桃市议员伍立伦(Allen Wu)的代表黄冬平女士发言,并为黄荣先生颁发了荣誉证书…

EFT信号测试和电源测试经验笔记

1. 什么是EFT 标准&#xff1a;perlEC 61000-4-4 eft设备将群脉冲干扰加到信号或者电源上&#xff0c;常见的频率是 5K 100K 两个频率 电压 电源3k&#xff0c;信号2k -----电网设备 电源4K -------------------空调设备 大概就是下图这样的周期性脉冲 1.1 电源eft 通过信…

web前端学习总结(一)

web前端使用三项技术:html、css、javascript. 一、html:超文本标记语言&#xff0c;用于展示网页的框架。 <html> <head><title> </title></head><body><div> </div> <!--用于布局&#xff0c;占1行 --><span&g…

【web靶场】之upload-labs专项训练(基于BUUCTF平台)

前言 该靶场&#xff0c;是通过平台BUUCTF在线评测中的靶场进行的&#xff0c;基于linux搭建的 当然若是想要该靶场&#xff0c;可以采用github上的醒目&#xff0c;点击后面文字即可访问c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场 或者本人分享在网盘中&a…

ES 的倒排索引

目录 什么是 elasticSearch。 什么是倒排索引 Term Index 是什么 Stored Fields 是什么 Doc Values 是什么 segment lucene 是什么 高性能 高扩展性 高可用 Node 角色分化 去中心化 ES 是什么? ES 和 Kafka 的架构差异 ES 的写入流程 ES 的搜索流程 查询阶段…

微服务电商平台课程六:后端代码框架认识

本地环境搭建好,大家可以进行调试,并能够修改其中代码。 后端技术栈 Spring Boot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了we…

Unity教程(二十)战斗系统 角色反击

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

Garnet:微软官方基于.Net 8开源缓存系统,可无需任何改动直接替代Redis,而且还更高性能!

近日微软官方开源了一个开源缓存系统&#xff0c;可完全替代Redis。 01 项目简介 Garnet是微软官方基于.Net 8开发的、开源高性能远程缓存存储系统&#xff0c;支持单节点、集群。 Garnet使用的是当前流行的 RESP 协议&#xff0c;使得当前大多数编程语言现成的 Redis 客户端…

java项目之网上点餐系统源码(springboot+mysql+vue)

大家好我是风歌&#xff0c;曾担任某大厂java架构师&#xff0c;如今专注java毕设领域。今天要和大家聊的是一款基于springboot的网上点餐系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 网上点餐系统的主要使用者分为管理员登录…

深入Android架构(从线程到AIDL)_23 活用IBinder接口于近程通信01

1、 在同一进程里活用IBinder接口 议题 1. myActivity对象是谁创建的呢? 2. myService对象是谁创建的呢? 3. 当myService类里有个f1()函数&#xff0c;如何去调用它呢? 4. 必须先取得myService对象的指针&#xff0c;才能调用f1()函数去存取对象的属性(Attribute)值。 …

拥抱HarmonyOS之高效使用DevEco

拥抱HarmonyOS之高效使用DevEco 前半年对公司的IM SDK进行了鸿蒙化&#xff0c;半年过去系统已经伴随APP上线应用市场&#xff0c;总结一些适配过程中的经验技巧&#xff0c;希望对大家有用。 1.应用AI翻译代码 IM SDK和普通应用的最大差异是逻辑性代码比较多&#xff0c;使…

RT-DETR代码详解(官方pytorch版)——参数配置(1)

前言 RT-DETR虽然是DETR系列&#xff0c;但是它的代码结构和之前的DETR系列代码不一样。 它是通过很多的yaml文件进行参数配置&#xff0c;和之前在train.py的parser argparse.ArgumentParser()去配置所有参数不同&#xff0c;所以刚开始不熟悉代码的时候可能不知道在哪儿修…

Halcon在linux及ARM上的安装及c++工程化

一、HALCON下载 建议到HALCON官方下载页选择linux版本下载,压缩包名为MVTec_HALCON_Progress-18.11.0.1-linux(x64-aarch64-armv7a)-FullVersion.tar.gz。下载前需要登录HALCON帐号,如果没有请自行注册,填写一些基本信息然后激活邮件,操作方便简易。 下载许可证文件 该许…

单通道串口服务器(三格电子)

一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;同 时只能使用一个口工作。 设 备 的网 口…