大数据开发之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三大组件(HDFSMapReduceYARN)之一
可在多台服务器上构建集群,提供分布式数据存储能力

文件系统协议
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.xmlhdfs-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.mzph.cn/bicheng/47826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;了解&#…

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;提升了构建和…

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;如果从左到…

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

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

synergy配置

今天介绍一个电脑同步软件synergy。 我们开发时一般会用两套设备&#xff0c;如果使用两套键盘操作起来会很麻烦&#xff0c;这个软件就是解决这个问题&#xff0c;可以使用一套键盘同时操作两台电脑&#xff0c;另一台作为客户端被控制。 安装 在两台电脑上各自下载安装syne…

使用IDEA编写lua脚本并运行

下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式&#xff1a;我们的目标是使用IDEA编写lua脚本&#xff0c;所以不需要勾选。后面需要的话&#xff0c;可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…

轻量级文本编辑器 | Notepad-- v2.17 官方版

软件简介 Notepad--是一款国产的跨平台轻量级文本编辑器&#xff0c;旨在作为 Notepad 的替代品。它使用 C 编写&#xff0c;支持 Windows、Mac、Linux 等多种操作系统。 鉴于某些Notepad竞品作者的不当言论&#xff0c;Notepad--的意义在于&#xff1a;减少一点错误言论&…