一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

 注意:HADOOP的核心组件有:

  1)HDFS(分布式文件系统)

  2)YARN(运算资源调度系统)

  3)MAPREDUCE(分布式运算编程框架)

       Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode )和N个数据结点 ( DataNode )组成,每个结点均是一台普通的计算机。在使用上同我们熟悉的单机上的文件系统非常类似,一样可以建目录,创建,复制,删除文件,查看文件内容等。但其底层实现上是把文件切割成 Block,然后这些 Block 分散地存储于不同的 DataNode 上,每个 Block 还可以复制数份存储于不同的 DataNode 上,达到容错容灾之目的。NameNode 则是整个 HDFS 的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个 Block,这些 Block 可以从哪些 DataNode 中获得,各个 DataNode 的状态等重要信息。

      MapReduce 是 Google 公司的核心计算模型,它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map 和 Reduce, 这是一个令人惊讶的简单却又威力巨大的模型。适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。基于它写出来的程序能够运行在由上千台商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别的数据集,实现了Haddoop在集群上的数据和任务的并行计算与处理。

    个人认为,HDFS(分布式文件系统)观点分析,集群中的服务器各尽其责,通力合作,共同提供了整个文件系统的服务。从职责上集群服务器以各自任务分为namenode、datanode服务器.其中namenode为主控服务器,datanode为数据服务器。Namenode管理所有的datanode数据存储、备份、组织记录分配逻辑上的处理。说明白点namenode就是运筹帷幄、负责布局指挥将军,具体的存储、备份是由datanode这样的战士执行完成的。故此很多资料将HDFS分布式文件系统的组织结构分为master(主人)和slaver(奴隶)的关系。其实和namenode、datanode划分道理是一样的。

MapReduce计算模型观点分析,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说计算节点和存储节点在一起。这种配置允许在那些已经存好数据的节点上高效的调度任务,这样可以使整个集群的网络宽带得到非常高效的利用。另外,在Hadoop中,用于执行MapReduce任务的机器有两个角色:JobTracker,TaskTracker。JobTracker(一个集群中只能有一台)是用于管理和调度工作的,TaskTracker是用于执行工作的。

在技术方面Hadoop体系具体包含了以下技术:

Common:在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common。

 

1:HADOOP(hdfs、MAPREDUCE、yarn) :元老级大数据处理技术框架,擅长离线数据分析;

2:Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

3:MapReduce:并行计算框架,0.20前使用org.apache.hadoop.mapred旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API。  分布式运算程序开发框架;

4:HDFS:Hadoop分布式文件系统(Hadoop Distributed File System)。分布式文件系统;

5:Pig:大数据分析平台,为用户提供多种接口。

6:Hive:数据仓库工具,由Facebook贡献。基于大数据技术(文件系统+运算框架)的SQL数据仓库工具;数据仓库工具,使用方便,功能丰富,基于MR延迟大;

7:Hbase:类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级Apache项目)。基于HADOOP的分布式海量数据库;分布式海量数据库,离线分析和在线业务通吃;

8:ZooKeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。分布式协调服务基础组件;分布式协调服务基础组件;

9:Sqoop:Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 :MySQL, Oracle, Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。数据导入导出工具;

10:Oozie:负责MapReduce作业调度。工作流调度框架;

11:Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库。

12:Flume:日志数据采集框架;数据采集框架;

 

以上对Hadoop体系框架和相应技术做了相应分析,并从HDFS、MapReduce的角度分析了集群中的角色扮演,这既是我们实验的理论基础,也是实验研究Hadoop深层次系统知识体系结构的意义所在。

Hadoop集群简介:

  1)HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起

  2)HDFS集群:

    负责海量数据的存储,即负责数据文件的读写操作,集群中的角色主要有 NameNode (Hdfs的大哥)/ DataNode(Hdfs的小弟)

  3)YARN集群:

    负责海量数据运算时的资源调度,即负责为mapreduce程序分配运算硬件资源,集群中的角色主要有 ResourceManager (Yarn的小哥)/NodeManager(Yarn的小弟)

  4)注意:节点分配思想,hdfs是数据的存储,所以DataNode存储数据,而yarn是资源调度,所在的机器正好存在数据,就可以进行调度,否则通过网络传输,在yarn上ResourceManager对NodeManager进行管理,管理资源调度 。

  5)如果,集群搭建案例,以5节点为例进行搭建,角色分配如下:

    机器-01    NameNode  SecondaryNameNode

    机器-02    ResourceManager

    机器-03   DataNode    NodeManager

      机器-04   DataNode    NodeManager

      机器-05   DataNode    NodeManager

2:首先自己搞三台虚拟机,这里使用centOs虚拟机(本实验只搭建一个有三台主机的小集群。三台机器的具体分工命名如下):

IP

主机名

功能角色

192.168.3.129

 CentOS-01/master(主人)

namenode(控制节点)、JobTracker(工作分配)

192.168.3.130

 CentOS-02/slaver1(奴隶)

datanode(数据节点)、TaskTracker(任务执行)

192.168.3.131

 CentOS-03/slaver2(奴隶)

datanode(数据节点)、TaskTracker(任务执行)

 3:讲解一下网络配置,不然好多小伙伴不知道网络怎么搞,以至于一直拖延不前:

首先,在VMware软件里面的编辑----》虚拟网络编辑器---》选择VMnet8模式

 

然后选择NET设置,将网关ip修改为这个模式192.168.x.1格式:

然后选择DHCP设置,自己可以选择的ip地址范围:

然后找到本地的网络设置,设置一下本地网络:

然后开始设置虚拟机的静态ip地址,如下所示,三个虚拟机按照如下进行设置,下面只写一个虚拟机,其他两个类比即可:

 鼠标右击找到Edit Connections:

然后进行编辑:

注意下面红色圈起来的地方(Address分别设置成自己容易识别的,我的是192.168.3.129,192.168.3.130,192.168.3.131):

最后网络就可以使用了,使用XShell进行远程连接方便操作:

需要注意的是这里的网络设置必须是Net8模式的:

 4:Hadoop完全分布式的安装需要以下几个过程:

1 综述:Hadoop完全分布式的安装需要以下几个过程:
21)为防止权限不够,三台机器均开启root登录。
32)为三台机器分配IP地址及相应的角色。
43)对三台机器进行jdk安装并配置环境变量。
54)对三台机器进行ssh(安全外壳协议)远程无密码登录安装配置。
65)进行Hadoop集群完全分布式的安装配置。
7 下面对以上过程进行详细叙述。

5:切换root用户进行操作(三台机器都执行此操作即可):

1)如果正式工作了,建议使用自己的用户,而非root用户(详细创建用户命令可百度):

   useradd 用户名称;

   passwd 密码;

2)新建用户以后,会遇到一些很烦心的事情,这个时候修改:vim /etc/sudoers新用户的权限,如给hadoop用户添加执行的权限;

6:在三台主机上分别设置/etc/hosts及/etc/sysconfig/network(centos操作系统)       /etc/hostname(ubuntu操作系统):

hosts文件用于定义主机名与IP地址之间的对应关系(三台主机配置相同)

如下所示:

执行此命令:[root@localhost hadoop]# vim /etc/sysconfig/network

主节点修改为master:

 节点一修改为slaver1

  节点二修改为slaver2

然后修改主机名称和ip的对应关系:

三台主机配置相同:

如下命令:[root@localhost hadoop]# vim /etc/hosts

配置好以后进行重启三台电脑即可(重启命令reboot):

自己可以进行验证一下是否修改正确,如ping master/ping slaver1/ping slaver2:

7:三台机器上安装jdk(将linux版本的jdk上传到虚拟机,上传操作之前说过,此处省略,注意jdk的是linux版本的):

上传之后进行解压缩和配置环境变量:

 

配置一下jdk的环境变量(必须用root权限进行修改配置文件):

[root@master hadoop]# vim /etc/profile

然后验证三台机器的jdk是否安装成功:

验证之前先刷新一下配置文件:[root@slaver1 hadoop]# source /etc/profile
然后使用java/javac/java -version三个命令分别在三台机器上面进行验证:
8:安装SSH,配置免秘钥登录操作,由于我的已经安装好了,所以这一步略过,自己可以去百度,直接配置免秘钥登录:

生成密钥并配置SSH免密码登录本机执行以下命令,生成密钥对,并把公钥文件写入授权文件中:

 生成密钥对,并把公钥文件写入授权文件中,cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys会自动创建authorized_keys文件,然后将id_dsa.pub的内容写到authorized_keys文件里面,这个时候去查看authorized_keys已经存在id_dsa.pub里面的内容(生成密钥对及授权文件,公钥在/root/.ssh/下)

然后将授权文件复制到slaver1主机中,输入命令:

[hadoop@master .ssh]$ scp authorized_keys root@192.168.3.130:~/.ssh/

可以看到slaver1已经存在授权文件:

然后在slave1机器中,使用同样命令生成密钥对,将公钥写入授权文件中。然后将slaver1主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。

为了防止防火墙禁止一些端口号,三台机器应使用

关闭防火墙命令:ufw disable

重启三台机器,防火墙关闭命令才能生效,重启后后查看是否可以从master主机免密码登录slaver,输入命令:ssh slaver1,ssh slaver2:

在slaver1进行生成密钥对,将公钥写入授权文件中

 

 将公钥写入授权文件中

 

然后将slaver1主机中的授权文件复制到slaver2中,使用同样命令生成密钥对,将公钥写入授权文件中。

 

 使用同样命令在slaver2生成密钥对,将公钥写入授权文件中。

 

将公钥写入授权文件中:

 

这样就完成了同一个授权文件拥有三个公钥。最后将此时的授权文件分别复制到master主机、slaver1主机中,这样就完成了,ssh免密登录验证工作。

 

然后查看master的授权文件:

然后将此时的授权文件分别复制到slaver1主机中,这样就完成了:

然后查看slaver1的授权文件:

为了防止防火墙禁止一些端口号,三台机器应使用

关闭防火墙命令:ufw disable(重启三台机器,防火墙关闭命令才能生效)/ service iptables stop(暂时关闭防火墙,方便测试使用)

重启后后查看是否可以从master主机免密码登录slaver,输入命令:

ssh slaver1

ssh slaver2

第一次登陆不知道为啥还是让输入一个yes,之后再进行登陆就直接登陆成功了:

 

 9:进行Hadoop集群完全分布式的安装配置(将下载的hadoop-2.2.0上传到虚拟机并解压至/home/hadoop目录下):

 [root@master hadoop]# tar -zxvf hadoop-2.4.1.tar.gz

三台hadoop文件配置相同,所以配置完一台后,可以把整个hadoop复制过去就行了,现在开始配置master主机的hadoop文件。

需要配置的文件涉及到的有7个(mapred-site.xml文件默认不存在的,可以复制相应的template文件获得(如mapred-site.xml文件)。

如下图标示部分:

 

配置文件1:vim hadoop-env.sh

修改JAVA_HOME值如下图:

配置文件2:yarn-env.sh

修改JAVA_HOME值如下图:

 

配置文件3:slaves(保存所有slave节点)写入以下内容,是给自动化启动脚本使用的哦,切记,是启动DataNode

(这里需要注意一下,开始我的master节点写的 vim slaves出现了,出现了hadoop DataNode启动不了的问题,这里不是多次格式化造成的问题,这里是master主节点的vim slaves内容是master,而slaver1和slaver2的vim slaves内容是slaver1,slaver2,即下图内容,所以造成了DataNode启动不了的问题。)

 

配置文件4:core-site.xml

添加配置内容如下图:

<configuration><!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址,master即是namenode所在的节点机器,9000是端口号,NameNode是为客户提供服务的,NameNode知道每一个文件存在哪一个datanode上面 --><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!-- 指定hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoop-2.4.1/tmp</value></property></configuration>

配置文件5:hdfs-site.xml

<configuration><!-- 指定HDFS副本的数量,副本的数量,避免一个机器宕掉了,数据丢失,默认是3个副本 --><property><name>dfs.replication</name><value>2</value></property>
    <!-- 指定SecondNameNode在那台机器上面启动 -->        
    <property>
        <name>dfs.secondary.http.address</name>
        <value>master:50090</value>
    </property>
    </configuration>

 

配置文件6:mapred-site.xml

[root@master hadoop]# mv mapred-site.xml.template mapred-site.xml

<configuration><!-- 指定mr运行在yarn上,即mapreduce运行在yarn上面 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

配置文件7:yarn-site.xml

<configuration><!-- Site specific YARN configuration properties -->
<!-- 指定YARN的老大(ResourceManager)的地址,这个地方主要看自己的机器分配情况,如果是四台机器,这个value值就是第四台的主机名称哦, --><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><!-- reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>

上面配置完毕后,基本上完成了90%的工作,剩下的就是复制。我们可以把整个hadoop复制过去使用命令如下:

[root@master hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver1:/home/hadoop/

[root@master hadoop]# scp -r /home/hadoop/hadoop-2.4.1 slaver2:/home/hadoop/
然后去slaver1和slaver2就可以看到复制过去的hadoop-2.4.1

为方便用户和系统管理使用hadoop、hdfs相关命令置系统环境变量,使用命令:vim /etc/profile

配置内容为hadoop目录下的binsbin路径,具体如下:

[root@slaver1 hadoop]# vim /etc/profile

export JAVA_HOME=/home/hadoop/jdk1.7.0_65export HADOOP_HOME=/home/hadoop/hadoop-2.4.1export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完后执行生效命令:source /etc/profile

 下面要做的就是启动验证,建议在验证前,把以上三台机器重启,使其相关配置生效。

 10:启动验证

在master节点上进行格式化namenode  (是对namenode进行初始化):

命令:hadoop  namenode  -format或者hdfs namenode -format

start-all.sh或者启动(start-dfs.sh和start-yarn.sh)

使用Jps命令master有如下进程,说明ok

start-yarn.sh 启动namenode和datanode.

hadoop-daemon.sh start namenode 启动namenode.
hadoop-daemon.sh start datanode 启动datanode.  

 [root@master hadoop]# start-all.sh

 上面这个图是错误的,由于master的vim slaves没有配置正确,造成的。下图是修改过后显示的。

使用jps命令slaver1slaver2有如下进程,说明ok:

查看集群状态,命令:hadoop dfsadmin -report

查看分布式文件系统:http://master:50070

除了浏览器查看集群的状态,可以使用命令查看,此命令比浏览器查看更加准确:

[root@master hadoop]# hdfs dfsadmin -report

 查看MapReduce:http://master:8088

使用以上命令,当你看到如下图所示的效果图时,恭喜你完成了Hadoop完全分布式的安装设置,其实这些部署还是比较基本的,对于Hadoop高深的体系结构和强大技术应用,这仅仅是一个小小的开始。

11:集群的关闭在master节点上执行命令如下:

stop-all.sh或者(stop-dfs.sh和stop-yarn.sh)

12:hadoop基本操作实践

基本命令
1.  格式化工作空间
进入bin目录,运行 hadoop namenode –format
2.  启动hdfs
进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护
HDFS文件操作
Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。并且支持通配符,如*1.  查看文件列表
b. 执行hadoop fs -ls /
查看hdfs中/目录下的所有文件(包括子目录下的文件)。
a. 执行hadoop fs -ls -R /
2.  创建文件目录
a. 执行hadoop fs -mkdir  /newDir
3.  删除文件
删除hdfs中/目录下一个名叫needDelete的文件
a. 执行hadoop fs -rm /needDelete
删除hdfs中/hdfs目录以及该目录下的所有文件
a.  执行hadoop fs -rm -r /hdfs
4. 上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/目录下
执行hadoop fs –put  /home/admin/newFile  /
5. 下载文件
下载hdfs中/ 目录下的newFile文件到本机/home/admin/newFile中
a. 执行hadoop fs –get  /newFile  /home/admin/newFile
6. 查看文件内容
查看hdfs中/目录下的newFile文件
a. 执行hadoop fs –cat /newFile

2017-11-22  14:06:19

停更......

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

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

相关文章

linux批量去掉文件名前缀,linux 批量删除某个前缀文件

1. 命令 (参考&#xff1a;https://blog.csdn.net/kl28978113/article/details/80271831)find ./ -name updatesites*-* -exec rm {} \;2. 举例[rootadmin batch-create-sites]# ls2020-02-13-10-10.out logs-2020-04-07-08-00.out updatesites-2020-02-12-01-49-25.xlsx updat…

Docker - 避免启动container后运行shell脚本执行完成后docker退出container

问题 最近在使用 Dockerfile 启动容器&#xff0c;发现使用Dockerfile调用容器里面的shell&#xff0c;当shell执行完成以后&#xff0c;docker会退出容器。 分析 Docker 在执行shell的时候&#xff0c;是在后台执行的&#xff1b;因此&#xff0c;在shell执行完成以后&#xf…

css画横线箭头_用CSS绘制三角形箭头

用CSS绘制三角形箭头。使用纯CSS&#xff0c;你只需要很少的代码就可以创作出各种浏览器都兼容的三角形箭头&#xff01;CSS代码:/* create an arrow that points up */div.arrow-up {width: 0;height: 0;border-left: 5px solid transparent; /* left arrow slant */border-ri…

Jmeter参数化的理解

jmeter参数化有两种情况&#xff1a; jmeter执行的sql语句中值的参数化&#xff08;如select过滤条件&#xff09;csv data set config参数表示方式${zjhm}jmx脚本的设置属性参数化&#xff0c;方便命令行调用时修改参数&#xff08;如并发量、执行时间&#xff09;在脚本中调用…

leetcode216. 组合总和 III(回溯)

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 代码 class Solution {List<List…

linux内核epub,Android底层开发技术实战详解——内核、移植和驱动(第2版)[EPUB][MOBI][AZW3][42.33MB]...

内容简介本书从底层原理开始讲起&#xff0c;结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为21章&#xff0c;依次讲解驱动移植的必要性&#xff0c; Goldfish、OMAP内核和驱动解析&#xff0c;显示系统、输入系统、振动器系统、音频系统、视…

机器学习岗位太少_太多的东西要学习,很少的时间

机器学习岗位太少by Rick West由里克韦斯特(Rick West) 太多的东西要学习&#xff0c;很少的时间 (So much to learn, so little time) 我学习&#xff0c;保持动力并实现目标的主要技巧 (My top tips for learning, staying motivated, and achieving your goals) One of the…

用9种办法解决 JS 闭包经典面试题之 for 循环取 i

2017-01-06Tomson JavaScript转自 https://segmentfault.com/a/1190000003818163 闭包 1.正确的说,应该是指一个闭包域,每当声明了一个函数,它就产生了一个闭包域(可以解释为每个函数都有自己的函数栈),每个闭包域(Function 对象)都有一个 function scope(不是属性),function s…

bzoj 2296: 【POJ Challenge】随机种子

Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeDescription1tthinking除了随机算法&#xff0c;其他什么都不会。但是他还是可以ac很多题目&#xff0c;他用的是什么呢&#xff1f;他会选择一个好的随机种子&#xff0c;然后输出答案。往往他选择的一个好的种子可…

英特尔第十代处理器为什么不支持win7_5GHz动力澎湃 高主频多核处理器成就巅峰玩家...

频率之争永远是处理器领域无法回避的话题。高主频在游戏中所带来的高速运行&#xff0c;稳定帧数等特性永远是玩家们所追求的目标。随着英特尔第十代桌面及移动版酷睿处理器的发布&#xff0c;无论是台式整机或是笔记本平台&#xff0c;都已全面进入了5GHz时代。选择英特尔处理…

leetcode46. 全排列(回溯)

给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 代码 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<…

初级算法-12.反转字符串

题目描述: 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打…

linux python源码目录结构,TensorFlow0.8源码阅读 -- 代码目录结构讲解

TensorFlow0.8发布以来受到了大量机器学习领域爱好者的关注&#xff0c;目前其项目在github上的follow人数在同类项目中排名第一。作为google的第一个开源项目&#xff0c;TensorFlow的源码结构较为清晰&#xff0c;相关的代码注释覆盖较全。本文首先从代码结构入手&#xff0c…

在VirtualBox里复制VDI文件[转]

原文地址:http://blog.sina.com.cn/s/blog_591a2c940100aree.html 在VirtualBox的快速修复界面里&#xff0c;可以随时生成当前状态的备份。当生成了备份之后&#xff0c;会在Snapshots目录下创建一个新的VDI文件&#xff0c;之后对当前状态所做的一切操作都将针对最新的VDI文件…

软件开发重要性_在软件开发中考虑时间的重要性

软件开发重要性by Crunch Tech通过Crunch Tech 在软件开发中考虑时间的重要性 (The importance of time to think in Software Development) Modern Technology teams operate in a fast-paced environment. With a Technology team of only 35 people, we average over 50 re…

自动登录360,百度

方便登录&#xff0c;写的小工具 1 import win.ui;2 import web.ui;3 /*DSG{{*/4 var winform ..win.form(text"AAuto Form";right599;bottom399)5 winform.add(6 button{cls"button";text"百度";left41;top25;right163;bottom59;z1};7 button2…

arm linux 开机电路_【技术角度看问题之一】ARM到底是个啥?

【小宅按】近期公司推出来基于ARM芯片的服务器&#xff0c;本文就一些基本概念&#xff0c;比如ARM&#xff0c; ARM64, ARMv8, ARM7&#xff0c;ARMv7, 64位等让人费解的概念进行了粗浅地分析&#xff0c;涉及的关键字已用粗体标出。文中观点仅仅是一家之言&#xff0c;拙劣之…

leetcode77. 组合(回溯)

给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 代码 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<I…

linux系统配置脚本,Linux系统配置脚本开机自启

在日常使用过程中&#xff0c;当有时候需要运行开机自启脚本&#xff0c;同时想看到输出结果的时候&#xff0c;不免就需要将系统配置为免密登录模式&#xff0c;本文主要介绍再init3模式(多用户命令行界面)&#xff0c;运行开机自启脚本及输出脚本指令运行数据结果。本文使用的…

WPF多线程UI更新

前言 在WPF中&#xff0c;在使用多线程在后台进行计算限制的异步操作的时候&#xff0c;如果在后台线程中对UI进行了修改&#xff0c;则会出现一个错误&#xff1a;&#xff08;调用线程无法访问此对象&#xff0c;因为另一个线程拥有该对象。&#xff09;这是很常见的一个错误…