大数据开发之Hadoop

大数据开发之Hadoop

  • Hadoop的发展
  • Hadoop的三个功能组件
  • 一、HDFS 分布式文件系统
    • 1、HDFS的基础架构
    • 2、HDFS基础操作命令
    • 3、HDFS WEB浏览:
    • 4、Big Data Tools插件
    • 5、使用NFS网关功能将HDFS挂载到本地系统
    • 6、HDFS数据存储
    • 7、NameNode 元数据
    • 8、SecondaryNameNode的作用
  • 二、MapReduce 分布式计算
    • 1、大数据体系内的计算, 举例:
    • 2、分布式(数据)计算 的两种模式
    • 3、分布式计算框架 - MapReduce
  • 三、Yarn 分布式资源调度
    • 1、资源调度
    • 2、Yarn核心架构
    • 3、Yarn容器
    • 4、Yarn辅助架构
  • 提交MapReduce程序至YARN运行

大数据的核心工作、软件生态

大数据的核心工作解释大数据软件生态
存储妥善保存海量待处理数据Apache Hadoop HDFS、Apache HBase、Apache Kudu、云平台
计算完成海量数据的价值挖掘Apache Hadoop MapReduce、Apache Spark、Apache Flink
传输协助各个环节的数据传输fApache Kafka、Apache Pulsar、Apache Flume、Apache Sqoop

Hadoop的发展

Hadoop创始人:Doug Cutting
Hadoop起源于Apache Lucene子项目:Nutch:Nutch的设计目标是构建一个大型的全网搜索引擎。遇到瓶颈:如何解决数十亿网页的存储和索引问题
Google三篇论文:

  • 《The Google file system》:谷歌分布式文件系统GFS

  • 《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce

  • 《Bigtable: A Distributed Storage System for Structured Data》:谷歌结构化数据存储系统

Hadoop商业发行版本:

  • CDH(Cloudera’s Distribution, including Apache Hadoop) Cloudera公司出品,目前使用最多的商业版
  • HDP(Hortonworks Data Platform),Hortonworks公司出品,目前被Cloudera收购
  • 星环,国产商业版,星环公司出品,在国内政企使用较多

Hadoop的三个功能组件

  • HDFS组件:HDFS是Hadoop内的分布式存储组件。可以构建分布式文件系统用于数据存储
  • MapReduce组件:MapReduce是Hadoop内分布式计算组件。提供编程接口供用户开发分布式计算程序
  • YARN组件:YARN是Hadoop内分布式资源调度组件。可供用户整体调度大规模集群的资源使用。

一、HDFS 分布式文件系统

HDFS全称:Hadoop Distributed File System
是Hadoop三大组件(HDFS、MapReduce、YARN)之一
可在多台服务器上构建集群,提供分布式数据存储能力

文件系统协议
file:// 表示Linux本地文件
hdfs://namenode_server:port/ 表示HDFS文件系统
比如当前集群表示为:hdfs://node1:8020/。一般可以省略file://和hdfs://协议头,不用写

1、HDFS的基础架构

NameNode:主角色,负责管理HDFS整个文件系统 和 DataNode

Datanode:从角色,主要负责数据的存储,即存入数据和取出数据

SecondaryNameNode: 辅助角色,主要帮助NameNode完成元数据整理工作(打杂)

2、HDFS基础操作命令

HDFS同Linux系统一样,均是以/作为根目录的组织形式

官方文档:Apache Hadoop 3.3.4 – Overview

hdfs dfs [generic options]
# 创建文件夹
hdfs dfs -mkdir [-p] <path> ...		# -p选项的行为与Linux mkdir -p一致,它会沿着路径创建父目录。# 查看指定目录下内容
hdfs dfs -ls [-h] [-R] [<path> ...] 	# -h 人性化显示文件size、-R 递归查看指定目录及其子目录# 上传文件到HDFS指定目录下
hdfs dfs -put [-f] [-p] <localsrc> ... <dst># 查看HDFS文件内容
hdfs dfs -cat <src> ...
# 读取大文件可以使用管道符配合more
hdfs dfs -cat <src> | more# 下载HDFS文件
hdfs dfs -get [-f] [-p] <src> ... <localdst>
# 下载文件到本地文件系统指定目录,localdst必须是目录# 拷贝HDFS文件
hdfs dfs -cp [-f] <src> ... <dst># 追加数据到HDFS文件中
hdfs dfs -appendToFile <localsrc> ... <dst>	# 如果<localSrc>为-,则输入为从标准输入中读取、 dst如果文件不存在,将创建该文件。 # HDFS数据移动操作
hdfs dfs -mv <src> ... <dst># HDFS数据删除操作
hdfs dfs -rm -r [-skipTrash] URI [URI ...]	# -skipTrash 跳过回收站,直接删除
  • path 为待创建的目录

  • -f 覆盖目标文件(已存在下)

  • -p 保留访问和修改时间,所有权和权限。

  • localsrc 本地文件系统(客户端所在机器)

  • dst 目标文件系统(HDFS)

3、HDFS WEB浏览:

http://node1:9870

使用WEB浏览操作文件系统,一般会遇到权限问题

在这里插入图片描述

这是因为WEB浏览器中是以匿名用户(dr.who)登陆的,其只有只读权限,多数操作是做不了的。如果需要以特权用户在浏览器中进行操作,需要配置如下内容到core-site.xml并重启集群

<property><name>hadoop.http.staticuser.user</name><value>username</value>
</property>

不推荐这样做。HDFS WEBUI,只读权限挺好的,简单浏览即可,如果给与高权限,会有很大的安全问题,造成数据泄露或丢失

4、Big Data Tools插件

在Jetbrains的产品中,均可以安装插件,其中:Big Data Tools插件可以帮助我们方便的操作HDFS

  1. 下载插件

    在设置->Plugins(插件)-> Marketplace(市场),搜索Big Data Tools,点击Install安装即可

  2. 需要对Windows系统做一些基础设置,配合插件使用

    • 解压Hadoop安装包到Windows系统,如解压到:E:\hadoop-3.3.4
    • 设置$HADOOP_HOME环境变量指向:E:\hadoop-3.3.4
    • 下载 hadoop.dll winutils.exe
    • 将hadoop.dll和winutils.exe放入E:\hadoop-3.3.4/bin中
    • 重启IDEA
  3. 插件使用

    还可以插看和在修改文件内容

5、使用NFS网关功能将HDFS挂载到本地系统

HDFS提供了基于NFS(Network File System)的插件,可以对外提供NFS网关,供其它系统挂载使用。
NFS 网关支持 NFSv3,并允许将 HDFS 作为客户机本地文件系统的一部分挂载,现在支持:上传、下载、删除、追加内容
如下图,将HDFS挂载为Windows文件管理器的网络位置,(NFS功能需要windows专业版)

在这里插入图片描述

  1. 在core-site.xml内新增如下两项

    <!-- 允许hadoop用户代理任何其它用户组 -->
    <property><name>hadoop.proxyuser.[username].groups</name>	<value>*</value>
    </property><!-- 允许代理任意服务器的请求 -->
    <property><name>hadoop.proxyuser.[username].hosts</name><value>*</value>
    </property>
    
  2. 在hdfs-site.xml中新增如下项

    <!-- NFS操作HDFS系统,所使用的超级用户(hdfs的启动用户为超级用户) -->
    <property><name>nfs.superuser</name><value>[username]</value>
    </property><!-- NFS接收数据上传时使用的临时目录 -->
    <property><name>nfs.dump.dir</name><value>/tmp/.hdfs-nfs</value>
    </property><!-- NFS允许连接的客户端IP和权限,rw表示读写,IP整体或部分可以以*代替 -->
    <!-- 192.168.88.1这个IP是电脑虚拟网卡VMnet8的IP,连接虚拟机就走这个网卡 -->
    <property><name>nfs.exports.allowed.hosts</name><value>192.168.88.1 rw</value>	
    </property>
    
  3. 将配置好的core-site.xml和hdfs-site.xml分发到其他节点、重启Hadoop HDFS集群(先stop-dfs.sh,后start-dfs.sh)

  4. 停止系统的NFS相关进程

    systemctl stop nfs
    systemctl disable nfs	# 关闭系统nfs并关闭其开机自启
    yum remove -y rpcbind    # 卸载系统自带rpcbind
    
  5. 启动portmap(HDFS自带的rpcbind功能)(必须以root执行)

    hdfs --daemon start portmap
    
  6. 启动nfs(HDFS自带的nfs功能)(必须以hadoop用户执行)

    hdfs --daemon start nfs3
    
  7. 开启Windows的NFS功能

    此功能需要专业版,如果是家庭版Windows需要升级为专业版

  8. 在Windows命令提示符(CMD)内输入

    net use G: \\192.168.88.101\!	
    

    192.168.88.101 为 NameNode主机IP地址

    G: 盘符名称(任意,与已有不重复即可)

  9. 完成后即可在文件管理器中看到盘符为G的网络位置(见上图)

至此,就将HDFS挂载到Windows文件管理器内了可以进行上传、下载、改名、删除、追加文本等操作。

  1. 点击右键客户断开连接

6、HDFS数据存储

当客户端向 HDFS 写入文件时:

  1. 客户端向 NameNode 请求写操作。

  2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址

  3. 客户端将数据分成块,并将每个块写入到第一个 DataNode。

  4. 第一个 DataNode 将块复制到第二个 DataNode,第二个 DataNode 再复制到第三个 DataNode,依此类推,直到达到副本因子。

  5. 每个 DataNode 在成功存储块后,向 NameNode 发送报告。

在这里插入图片描述

当客户端从 HDFS 读取文件时:

  1. 客户端向 NameNode 请求读取操作。

  2. NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

  3. 客户端拿到block列表后自行寻找DataNode读取即可

在这里插入图片描述

数据存储

HDFS 将文件拆分成多个块(默认块大小为 128MB),每个块被存储在不同的 DataNode 上:

  • 块(Block):文件被分割成大小相等的数据块。块大小可以在 HDFS 配置中设置(通常为 128MB 或 256MB)。
  • 副本(Replication):每个数据块会被复制到多个 DataNode 上(默认副本数为 3)。这种数据冗余提供了容错性和高可用性。

副本(Replication)

<!-- hdfs-site.xml中配置 设置默认文件上传到HDFS中拥有的副本数量 -->
<property><name>dfs.replication</name><value>3</value>
</property>
# 可以在上传文件的时候,临时决定被上传文件以多少个副本存储
hdfs dfs -D dfs.replication=2 -put test.txt /tmp/# 对于已经存在HDFS的文件,修改dfs.replication属性不会生效, 如果要修改已存在文件可以通过命令
# 如下命令,指定path的内容将会被修改为2个副本存储
hdfs dfs -setrep [-R] 2 path	# -R选项可选,使用-R表示对子目录也生效# 使用hdfs提供的fsck命令来检查文件的副本数
hdfs fsck path [-files [-blocks [-locations]]]
  • -files可以列出路径内的文件状态
  • -files -blocks 输出文件块报告(有几个块,多少副本)
  • -files -blocks -locations 输出每一个block的详情

块(Block)

对于块(block),hdfs默认设置为256MB一个,也就是1GB文件会被划分为4个block存储。

<!-- hdfs-site.xml中配置 块大小可以通过参数 -->
<property><name>dfs.blocksize</name><value>268435456</value><description>设置HDFS块大小,单位是b</description>
</property>

7、NameNode 元数据

NameNode基于edits和FSImage的配合,完成整个文件系统文件的管理。

  1. 每次对HDFS的操作,均被edits文件记录
  2. edits达到大小上线后,开启新的edits记录
  3. 定期进行edits的合并操作
    如当前没有fsimage文件, 将全部edits合并为第一个fsimage
    如当前已存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage

在这里插入图片描述

<!-- hdfs-site.xml中配置 元数据位置如下/data/nn/current -->
<property><name>dfs.namenode.name.dir</name><value>/data/nn</value>
</property>

元数据合并控制参数

对于元数据的合并,是一个定时过程,基于:

  • dfs.namenode.checkpoint.period,默认3600(秒)即1小时
  • dfs.namenode.checkpoint.txns,默认1000000,即100W次事务

即每1小时或发生100W次事务合并(有一个达到条件就执行)
检查是否达到条件,默认60秒检查一次,基于:

  • dfs.namenode.checkpoint.check.period,默认60(秒),来决定

8、SecondaryNameNode的作用

NameNode的元数据并不是有NameNode本身完成,NameNode不负责数据写入,只负责元数据记录和权限审批
SecondaryNameNode会通过http从NameNode拉取数据(edits和fsimage)
然后合并完成后提供给NameNode使用。

二、MapReduce 分布式计算

1、大数据体系内的计算, 举例:

销售额统计、区域销售占比、季度销售占比
利润率走势、客单价走势、成本走势
品类分析、消费者分析、店铺分析

数据太大,一台计算机无法独立处理、靠数量来取胜

计算:对数据进行处理,使用统计分析等手段得到需要的结果
分布式计算:多台服务器协同工作,共同完成一个计算任务

2、分布式(数据)计算 的两种模式

分散->汇总模式:(MapReduce就是这种模式)

  1. 将数据分片,多台服务器各自负责一部分数据处理

  2. 然后将各自的结果,进行汇总处理

  3. 最终得到想要的计算结果

中心调度->步骤执行模式:(大数据体系的Spark、Flink等是这种模式)

  1. 由一个节点作为中心调度管理者

  2. 将任务划分为几个具体步骤

  3. 管理者安排每个机器执行任务

  4. 最终得到结果数据

3、分布式计算框架 - MapReduce

MapReduce是“分散->汇总”模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。
提供了2个编程接口:Map 和 Reduce

  • Map功能接口提供了“分散”的功能, 由服务器分布式对数据进行处理
  • Reduce功能接口提供了“汇总(聚合)”的功能,将分布式的处理结果汇总统计

MapReduce执行原理 (单词统计样例)

假定有4台服务器用以执行MapReduce任务可以3台服务器执行Map,1台服务器执行Reduce

在这里插入图片描述

​ 文件 将任务分解为:3个Map(分散) Task(任务) 1个Reduce(汇总) Task

三、Yarn 分布式资源调度

1、资源调度

  • 资源:服务器硬件资源,如:CPU、内存、硬盘、网络等
  • 资源调度:管控服务器硬件资源,提供更好的利用率
  • 分布式资源调度:管控整个分布式服务器集群的全部资源,整合进行统一调度

对于资源的利用,有规划、有管理的调度资源使用,是效率最高的方式

YARN 管控整个集群的资源进行调度, 那么应用程序在运行时,就是在YARN的监管(管理)下去运行的。
这就像:全部资源都是公司(YARN)的,由公司分配给个人(具体的程序)去使用。

YARN用来调度资源给MapReduce分配和管理运行资源,所以,MapReduce需要YARN才能执行(普遍情况)

2、Yarn核心架构

主(Master)角色:ResourceManager:整个集群的资源调度者, 负责协调调度各个程序所需的资源。

从(Slave)角色:NodeManager:单个服务器的资源调度者,负责调度单个服务器上的资源提供给应用程序使用。

3、Yarn容器

如何实现服务器上精准分配如下的硬件资源呢?

  • 容器(Container)是YARN的NodeManager在所属服务器上分配资源的手段
  • 创建一个资源容器,即由NodeManager占用这部分资源
  • 然后应用程序运行在NodeManager创建的这个容器内
  • 应用程序无法突破容器的资源限制

4、Yarn辅助架构

YARN的架构中除了核心角色还可以搭配2个辅助角色使得YARN集群运行更加稳定

代理服务器(ProxyServer):Web Application Proxy Web应用程序代理

历史服务器(JobHistoryServer): 应用程序历史信息记录服务

1、代理服务器

  • 代理服务器,即Web应用代理是 YARN 的一部分。默认情况下,它将作为资源管理器(RM)的一部分运行,但是可以配置为在独立模式下运行。使用代理的原因是为了减少通过 YARN 进行基于网络的攻击的可能性。

  • 这是因为, YARN在运行时会提供一个WEB UI站点(同HDFS的WEB UI站点一样)可供用户在浏览器内查看YARN的运行信息

  • 开启代理服务器,可以提高YARN在开放网络中的安全性 (但不是绝对安全只能是辅助提高一些)

  • 统一收集到HDFS,由历史服务器托管为WEB UI供用户在浏览器统一查看

代理服务器默认集成在了ResourceManager中,也可以将其分离出来单独启动,
如果要分离代理服务器,在yarn-site.xml中配置 yarn.web-proxy.address参数
并通过命令启动它即可 $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver

<!-- yarn-site.xml -->
<property><name>yarn.web-proxy.address</name><value>node01:8089</value><description>代理服务器主机和端口</description>
</property>

2、JobHistoryServer历史服务器

  • 提供WEB UI站点,供用户在浏览器上查看程序日志
  • 可以保留历史数据,随时查看历史运行程序信息

运行日志,产生在多个容器中,太零散了难以查看,所以需要历史服务器

JobHistoryServer需要配置:

  • 开启日志聚合,即从容器中抓取日志到HDFS集中存储

    <!-- yarn-site.xml -->
    <property><name>yarn.log-aggregation-enable</name><value>true</value><description>开启日志聚合</description>
    </property><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value><description>程序日常HDFS的存储路径</description>
    </property>
    
  • 配置历史服务器端口和主机

    <!-- mapred-site.xml -->
    <property><name>mapreduce.jobhistory.webapp.address</name><value>node01:19888</value><description>配置历史服务器web端口为node0的19888端口</description>
    </property>
    <property><name>mapreduce.jobhistory.address</name><value>node01:10020</value><description>历史服务器通讯端口为node01:10020</description>
    </property>
    
  • 启动和停止:$HADOOP_HOME/bin/mapred --daemon start|stop historyserver

提交MapReduce程序至YARN运行

  • YARN作为资源调度管控框架,其本身提供资源供许多程序运行,常见的有:MapReduce程序、Spark程序、Flink程序

  • Hadoop官方内置了一些预置的MapReduce程序代码,无需编程,只需要通过命令即可使用,例如:

    1. wordcount:单词计数程序。
    2. pi:求圆周率 (通过蒙特卡罗算法(统计模拟法)求圆周率)
  • 这些内置的示例MapReduce程序代码,都在 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内。

  • 可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。

    hadoop jar 程序文件 java类名 [程序参数] ... [程序参数]
    # 参数1是数据输入路径
    # 参数2是结果输出路径
    hadoop $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input/word.txt /output/wc
    

    可以通过 http://node01:8088 查看程序运行状态日志,历史信息

oop官方内置了一些预置的MapReduce程序代码,无需编程,只需要通过命令即可使用,例如:

  1. wordcount:单词计数程序。
  2. pi:求圆周率 (通过蒙特卡罗算法(统计模拟法)求圆周率)
  • 这些内置的示例MapReduce程序代码,都在 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内。

  • 可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。

    hadoop jar 程序文件 java类名 [程序参数] ... [程序参数]
    # 参数1是数据输入路径
    # 参数2是结果输出路径
    hadoop $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input/word.txt /output/wc
    

    可以通过 http://node01:8088 查看程序运行状态日志,历史信息

    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用DrissionPage过某里滑块分析

最近我又在找工作了&#xff0c;悲哀啊~&#xff0c;面试官给了一道题&#xff0c;要求如下&#xff1a; 爬虫机试&#xff1a;https://detail.1688.com/offer/643272204627.html 过该链接的滑动验证码&#xff0c;拿到正确的商品信息页html&#xff0c;提取出商品维度的信息&a…

Golang|Shopee一面

1、一个有环的链表&#xff0c;如何确认链表有环&#xff0c;环的长度。 LeetCode 142。原题为判断链表是否有环&#xff0c;如果有环找到环的起点。本题修改为求环的长度&#xff0c;基本思路一致&#xff0c;依然为双指针。当快慢指针相遇之后&#xff0c;如果寻找环的起点&…

Java | Leetcode Java题解之第258题各位相加

题目&#xff1a; 题解&#xff1a; class Solution {public int addDigits(int num) {while (num > 10) {int sum 0;while (num > 0) {sum num % 10;num / 10;}num sum;}return num;} }

[Doris]阿里云搭建Doris,测试环境1FE 1BE

首先&#xff1a;阿里云的国内服务器千万不要用容器搭建&#xff0c;或者自己Dockfile构建镜像。两种方式都不得行&#xff0c;压根拉不到github的镜像&#xff0c;开了镜像加速器也拉不到&#xff0c;不要折腾了&#xff0c;极其愚蠢。 背景&#xff1a;现在测试环境&#xff…

Spring Boot1(概要 入门 Spring Boot 核心配置 YAML JSR303数据校验 )

目录 一、Spring Boot概要 1. SpringBoot优点 2. SpringBoot缺点 二、Spring Boot入门开发 1. 第一个SpringBoot项目 项目创建方式一&#xff1a;使用 IDEA 直接创建项目 项目创建方式二&#xff1a;使用Spring Initializr 的 Web页面创建项目 &#xff08;了解&#…

使用AJAX发起一个异步请求,从【api_endpoint】获取数据,并在成功时更新页面上的【target_element】

使用AJAX发起一个异步请求&#xff0c;从【api_endpoint】获取数据&#xff0c;并在成功时更新页面上的【target_element】 在Web开发中&#xff0c;使用AJAX&#xff08;Asynchronous JavaScript and XML&#xff0c;异步JavaScript和XML&#xff09;可以实现在不刷新整个页面…

19.x86游戏实战-创建MFC动态链接库

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Chromium CI/CD 之Jenkins实用指南2024 - 常见的构建错误(六)

1. 引言 在前一篇《Chromium CI/CD 之 Jenkins - 发送任务到Ubuntu&#xff08;五&#xff09;》中&#xff0c;我们详细讲解了如何将Jenkins任务发送到Ubuntu节点执行&#xff0c;并成功验证了文件的传输和回传。这些操作帮助您充分利用远程节点资源&#xff0c;提升了构建和…

SAP中VF11调用的BAPI是什么,如何使用?

在SAP系统中&#xff0c;VF11是一个事务代码&#xff0c;用于冲销销售开票凭证&#xff08;即发票&#xff09;。虽然VF11本身不是一个BAPI&#xff08;Business Application Programming Interface&#xff0c;业务应用程序编程接口&#xff09;&#xff0c;但SAP提供了相应的…

3112. 访问消失节点的最少时间 Medium

给你一个二维数组 edges 表示一个 n 个点的无向图&#xff0c;其中 edges[i] [ui, vi, lengthi] 表示节点 ui 和节点 vi 之间有一条需要 lengthi 单位时间通过的无向边。 同时给你一个数组 disappear &#xff0c;其中 disappear[i] 表示节点 i 从图中消失的时间点&#xff0…

HTML+JS+CSS计算练习

可填 题目数量 数字范围 计算符号 题目做完后会弹窗提示正确率、用时 效果图 源代码在图片后面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

【LabVIEW作业篇 - 2】:分数判断、按钮控制while循环暂停、单击按钮获取book文本

文章目录 分数判断按钮控制while循环暂停按钮控制单个while循环暂停 按钮控制多个while循环暂停单击按钮获取book文本 分数判断 限定整型数值输入控件值得输入范围&#xff0c;范围在0-100之间&#xff0c;判断整型数值输入控件的输入值。 输入范围在0-59之间&#xff0c;显示…

【转盘案例-弹框-修改Bug-完成 Objective-C语言】

一、我们来看示例程序啊 1.旋转完了以后,它会弹一个框,这个框,是啥, Alert 啊,AlertView 也行, AlertView,跟大家说过,是吧,演示过的啊,然后,我们就用iOS9来做了啊,完成了以后,我们要去弹一个框, // 弹框 UIAlertController *alertController = [UIAlertContr…

PHP基础语法(一)

一、初步语法 1、PHP代码标记&#xff1a;以 <?php 开始&#xff0c;以 ?> 结束&#xff1b; 2、PHP注释&#xff1a;行注释&#xff1a;//&#xff08;双斜杠&#xff09;或# 块注释&#xff1a;/* */ 3、PHP语句分隔符&#xff1a; 1&#xff09;在PHP中&#…

来参与“向日葵杯”全国教育仿真技术大赛~

可点击进行了解&#xff1a;“向日葵杯”全国教育仿真技术大赛 (sunmooc.cn) 本次大赛共分为四个赛道&#xff1a;自主命题赛道、教育知识图谱设计赛道、FPGA硬件扑克牌对抗赛道、EasyAR元宇宙空间设计赛道。 参赛对象 &#xff1a; 具有正式学籍的在校研究生&#xff0c;本科…

Gettler‘s Screep World 笔记 Ⅰ

夏促时候刚刚入坑&#xff0c;写个笔记叭~ 环境配置 参考 HoPGoldy 大佬的简书&#xff0c;先配置下开发环境 萌新去看大佬的详细教程&#xff0c;我这里比较简单&#xff0c;有前端基础的可以直接抄 VSCode 跳过 node 我配的是v18.18.2 换源 npm config set registry h…

Spring Boot集成syslog快速入门Demo

1.什么syslog&#xff1f; Syslog-ng是由Balabit IT Security Ltd.维护的一套开源的Unix和类Unix系统的日志服务套件。它是一个灵活的、可伸缩的系统日志记录程序。对于服务器日志集中收集&#xff0c;使用它是一个不错的解决方案。syslog-ng (syslog-Next generation) 是sysl…

DP(4) | 0-1背包 | Java | LeetCode 1049, 494, 474 做题总结

1049. 最后一块石头的重量 II 和 LC 416.分割等和子集 类似 思路&#xff08;我没有思路&#xff09;&#xff1a; 两块石头相撞&#xff0c;这里没有想到的一个点是&#xff0c;相撞的两个石头要几乎相似 以示例1为例&#xff0c;stones [2,7,4,1,8,1]&#xff0c;如果从左到…

Apache-BeanUtils VS SpringBean-Utils

目录 一、前言 二、对象拷贝 三、什么是浅拷贝和深拷贝 四、BeanUtils 1. Apache 的 BeanUtils 2. Spring 的 BeanUtils 五、性能比较 六、推荐使用 七、深拷贝需求 1. SerializationUtils.clone() 2.SerializableFunctionIterables.transform() 一、前言 在我们实际…

基于电鸿(电力鸿蒙)的边缘计算网关,支持定制

1 产品信息 边缘计算网关基于平头哥 TH1520 芯片&#xff0c;支持 OpenHarmony 小型系统&#xff0c;是 连接物联网设备和云平台的重要枢纽&#xff0c;可应用于城市基础设施&#xff0c;智能工厂&#xff0c;智能建筑&#xff0c;营业网点&#xff0c;运营 服务中心相关场…