【Hadoop】Hadoop的运行模式

目录

  • Hadoop 的运行模式
    • 1.本地模式
      • 1.1官方 Grep 案例
      • 1.2官方 WordCount 案例
    • 2.伪分布式运行模式
      • 2.1启动 HDFS 并运行 MapReduce 程序
        • 2.1.1 配置集群,修改 Hadoop 的配置文件(/hadoop/hadoop-2.7.7/etc/hadoop 目录下)
        • 2.1.2 启动集群
        • 2.1.3 查看集群
        • 2.1.4 操作集群
      • 2.2启动 YARN 并运行 MapReduce 程序
        • 2.21. 配置集群,修改 Hadoop 的配置文件(/hadoop/hadoop-2.7.7/etc/hadoop 目录下)
        • 2.2.2 启动集群
        • 2.2.3 查看集群
        • 2.2.4 操作集群
      • 2.3配置历史服务器
        • 2.3.1 配置 mapred-site.xml
        • 2.3.2 启动历史服务器
        • 2.3.3 查看历史服务器是否启动
        • 2.3.4 查看 JobHistory `http://192.168.29.200:19888/`
      • 2.4配置日志的聚集
        • 2.4.1 关闭 NodeManager 、ResourceManager 和 HistoryManager
        • 2.4.2 配置 yarn-site.xml
        • 2.4.3 启动 NodeManager 、ResourceManager 和 HistoryManager
        • 2.4.4 删除HDFS上已经存在的输出文件
        • 2.4.5 在 hadoop-2.7.7 目录下,执行 WordCount 程序
        • 2.4.6 查看日志
    • 3.完全分布式运行模式
      • 3.1虚拟机准备
        • 3.1.1 准备(克隆) 3 台客户机
        • 3.1.2 每台机器分别修改 /etc/hosts 文件,将每个机器的 hostname 和 ip 对应
        • 3.1.3 修改slave设备配置
      • 3.2 编写集群分发脚本 xsync
        • 3.2.1 scp(secure copy)安全拷贝
        • 3.2.2 rsync(remote synchronize)远程同步工具
        • 3.2.3 xsync 集群分发脚本
      • 3.3 集群配置
        • 3.3.1 集群部署规划
        • 3.3.2 配置集群
        • 3.3.3 在集群上分发配置好的 Hadoop 目录
      • 3.4 在集群上分发配置好的 Hadoop 目录
        • 3.4.1 如果集群是第一次启动,需要格式化 NameNode
        • 3.4.2 在 master上启动 NameNode
        • 3.4.3 在 master、slave1 和 slave2 上分别启动 DataNode
      • 3.5 配置 SSH 无密登录
        • 3.5.1 免密登录原理
        • 3.5.2 生成公钥和私钥
        • 3.5.3 将公钥拷贝到要免密登录的目标机器上
        • 3.5.4 在另两台机器上也做 2、3 操作
      • 3.6 群起集群
        • 3.6.1 配置 slaves(/hadoop/hadoop-2.7.7/etc/hadoop/slaves)
        • 3.6.2 启动集群
        • 3.6.3 编写查看集群所有节点 jps 脚本 alljps
      • 3.7 集群时间同步
        • 3.7.1 时间服务器配置(必须 root 用户)
        • 3.7.22 其他机器配置(必须root用户)

Hadoop 的运行模式

Hadoop 的运行模式包括:本地模式、伪分布式模式、完全分布式模式。

1.本地模式

1.1官方 Grep 案例

  1. 在/hadoop 文件下面创建一个 input 文件夹
mkdir -p /hadoop/input
cd /hadoop
  1. 将 Hadoop 的 xml 配置文件复制到 input
cp /hadoop/hadoop-2.7.7/etc/hadoop/*.xml input
  1. 在 /hadoop 目录下,执行 /hadoop/hadoop-2.7.7/share 目录下的 MapReduce 程序
hadoop jar /hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep input/ output 'dfs[a-z.]+'

在这里插入图片描述

  1. 查看结果
    在这里插入图片描述

1.2官方 WordCount 案例

  1. 在 /hadoop文件下面创建一个 wcinput 文件夹
mkdir -p /hadoop/wcinput 
  1. 在 wcinput 文件下创建一个 wc.input 文件,在文件中输入以下内容:
vim wc.inputhadoop yarn
hadoop mapreduce
spark
spark
susheng
susheng hadoop
susheng csdn
  1. 在 /hadoop 目录下,执行 /hadoop/hadoop-2.7.7/share 目录下的 MapReduce 程序
hadoop jar /hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount wcinput/ wcoutput
  1. 查看结果
    在这里插入图片描述

2.伪分布式运行模式

2.1启动 HDFS 并运行 MapReduce 程序

2.1.1 配置集群,修改 Hadoop 的配置文件(/hadoop/hadoop-2.7.7/etc/hadoop 目录下)
  1. core-site.xml
<configuration><!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://susheng:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/hadoop/hadoop-2.7.7/data/tmp</value></property>
</configuration>
  1. hadoop-env.sh。修改 JAVA_HOME 路径:
# The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_151

在这里插入图片描述

  1. hdfs-site.xml
<configuration><!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>1</value></property>
</configuration>
2.1.2 启动集群
  1. 格式化 NameNode(第一次启动时格式化,以后就不要总格式化)
hdfs namenode -format

在这里插入图片描述

  1. 启动 NameNode
hadoop-daemon.sh start namenode

在这里插入图片描述

  1. 启动 DataNode
hadoop-daemon.sh start datanode

在这里插入图片描述

2.1.3 查看集群
  1. 查看是否启动成功:jps
    在这里插入图片描述

  2. web 端查看 HDFS 文件系统:http://192.168.29.200:50070
    在这里插入图片描述

2.1.4 操作集群
  1. 在 HDFS 文件系统上创建一个 input 文件夹
cd /hadoop/wcinput
hdfs dfs -mkdir -p /user/susheng/input
  1. 将测试文件内容上传到文件系统上
hdfs dfs -put wc.input /user/susheng/input/
  1. 在 hadoop-2.7.7 目录下,运行 MapReduce 程序
hadoop jar /hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/susheng/input/ /user/susheng/output

在这里插入图片描述在这里插入图片描述

  1. 查看输出结果
    命令行:
hdfs dfs -cat /user/susheng/output/*

在这里插入图片描述浏览器页面:
在这里插入图片描述

2.2启动 YARN 并运行 MapReduce 程序

2.21. 配置集群,修改 Hadoop 的配置文件(/hadoop/hadoop-2.7.7/etc/hadoop 目录下)
  1. yarn-site.xml
<configuration><!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>susheng</value></property>
</configuration>
  1. yarn-env.sh。修改 JAVA_HOME 路径:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
  1. mapred-env.sh。修改 JAVA_HOME 路径:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
  1. 将 mapred-site.xml.template 重新命名为 mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
<configuration><!-- 指定MR运行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
2.2.2 启动集群
  1. 启动前必须保证 NameNode 和 DataNode 已经启动
    在这里插入图片描述

  2. 启动 ResourceManager

yarn-daemon.sh start resourcemanager

在这里插入图片描述

  1. 启动NodeManager
yarn-daemon.sh start nodemanager

在这里插入图片描述

2.2.3 查看集群
  • 命令行:
    在这里插入图片描述
  • web 端查看 YARN 页面:
    http://192.168.29.200:8088
    在这里插入图片描述
2.2.4 操作集群
  1. 删除 HDFS 文件系统上的 output 文件
hdfs dfs -rm -R /user/susheng/output
  1. 在 hadoop-2.7.7 目录下,运行 MapReduce 程序
hadoop jar /hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/susheng/input  /user/susheng/output
  1. 查看运行结果
  • 命令行查看:

    hdfs dfs -cat /user/susheng/output/*
    

    在这里插入图片描述

  • 浏览器页面查看:
    在这里插入图片描述

2.3配置历史服务器

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

2.3.1 配置 mapred-site.xml

在该文件里面增加以下配置:

  <!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>susheng:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>susheng:19888</value></property>
2.3.2 启动历史服务器
mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述

2.3.3 查看历史服务器是否启动

在这里插入图片描述

2.3.4 查看 JobHistory http://192.168.29.200:19888/

在这里插入图片描述

2.4配置日志的聚集

日志聚集:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。
作用:可以方便的查看到程序运行详情,方便开发调试。
注意开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryManager

2.4.1 关闭 NodeManager 、ResourceManager 和 HistoryManager
yarn-daemon.sh stop resourcemanager
yarn-daemon.sh stop nodemanager
mr-jobhistory-daemon.sh stop historyserver

在这里插入图片描述

2.4.2 配置 yarn-site.xml

在该文件里面增加以下配置:

  <!-- 日志聚集功能使能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 日志保留时间设置7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
2.4.3 启动 NodeManager 、ResourceManager 和 HistoryManager
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述

2.4.4 删除HDFS上已经存在的输出文件
hdfs dfs -rm -R /user/susheng/output
2.4.5 在 hadoop-2.7.7 目录下,执行 WordCount 程序
hadoop jar /hadoop/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /user/susheng/input  /user/susheng/output
2.4.6 查看日志

在这里插入图片描述在这里插入图片描述

3.完全分布式运行模式

3.1虚拟机准备

3.1.1 准备(克隆) 3 台客户机
主机名称IP地址
master192.168.29.200
slave1192.168.29.31
slave2192.168.29.32
3.1.2 每台机器分别修改 /etc/hosts 文件,将每个机器的 hostname 和 ip 对应
vim /etc/hosts#master的host
192.168.217.200 master
#slave1的host
192.168.217.31   slave1
#slave2的host
192.168.217.32   slave2
3.1.3 修改slave设备配置
  1. 修改静态ip,重启网关服务

    systemctl restart network
    
  2. 修改主机名称

    hostnamectl set-hostname susheng
    
  3. 关闭防火墙

    systemctl stop firewalld
    

3.2 编写集群分发脚本 xsync

3.2.1 scp(secure copy)安全拷贝
  • scp 定义:scp 可以实现服务器与服务器之间的数据拷贝。

  • 基本语法:

    scp -r 要拷贝的文件路径/名称  目的用户@主机:目的路径/名称
    
3.2.2 rsync(remote synchronize)远程同步工具
  • rsync 定义:rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

  • 基本语法:

    rsync -rvl 要拷贝的文件路径/名称  目的用户@主机:目的路径/名称
    

    说明:-v:显示复制过程 、-l:拷贝符号链接

3.2.3 xsync 集群分发脚本

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

  • 在 /usr/local/bin 目录下创建 xsync 文件

    vim xsync
    
  • 在文件中输入以下内容:

    #!/bin/bash
    #1 获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if((pcount==0)); thenecho no args;exit;
    fi#2 获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname#3 获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir#4 获取当前用户名称
    user=`whoami`#5 循环
    for i in master slave1 slave2doecho "****************** $i *********************"rsync -rvl $pdir/$fname $user@$i:$pdirdone
    
  • 修改脚本 xsync 具有执行权限

    chmod 777 xsync
    
  • 调用脚本形式:xsync 文件名称

3.3 集群配置

3.3.1 集群部署规划
 masterslave1slave2
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager
3.3.2 配置集群
  1. 配置核心文件:配置 core-site.xml
<configuration><!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/hadoop/hadoop-2.7.7/data/tmp</value></property>
</configuration>
  1. HDFS 配置文件
  • 配置 hadoop-env.sh:修改 JAVA_HOME 路径:

    # The java implementation to use.
    export JAVA_HOME=/usr/local/java/jdk1.8.0_151
    
  • 配置 hdfs-site.xml

    <configuration><!-- 指定HDFS副本的数量 --><property><name>dfs.replication</name><value>3</value></property><!-- 指定Hadoop辅助名称节点主机配置 --><property><name>dfs.namenode.secondary.http-address</name><value>slave2:50090</value></property>
    </configuration>
    
  1. YARN 配置文件
  • 配置 yarn-env.sh:修改 JAVA_HOME 路径:

    # The java implementation to use.
    export JAVA_HOME=/usr/local/java/jdk1.8.0_151
    
  • 配置 yarn-site.xml

<configuration><!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>slave1</value></property><!-- 日志聚集功能使能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 日志保留时间设置7天 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
</configuration>
  1. MapReduce 配置文件
  • 配置 mapred-env.sh:修改 JAVA_HOME 路径:
    # The java implementation to use.
    export JAVA_HOME=/usr/local/java/jdk1.8.0_151
    
  • 配置 mapred-site.xml
<configuration><!-- 指定MR运行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property>
</configuration>
3.3.3 在集群上分发配置好的 Hadoop 目录
xsync /hadoop/

3.4 在集群上分发配置好的 Hadoop 目录

3.4.1 如果集群是第一次启动,需要格式化 NameNode
hadoop namenode -format
3.4.2 在 master上启动 NameNode
hadoop-daemon.sh start namenode
3.4.3 在 master、slave1 和 slave2 上分别启动 DataNode
hadoop-daemon.sh start datanode

3.5 配置 SSH 无密登录

3.5.1 免密登录原理

在这里插入图片描述

3.5.2 生成公钥和私钥

在 /root 目录下输入以下命令,然后敲(三个回车),就会在 .ssh 目录下生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥):

ssh-keygen -t rsa
3.5.3 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
3.5.4 在另两台机器上也做 2、3 操作

3.6 群起集群

3.6.1 配置 slaves(/hadoop/hadoop-2.7.7/etc/hadoop/slaves)
  1. 在该文件中增加如下内容:

    master
    slave1
    slave2
    

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

  2. 同步所有节点配置文件

    xsync slaves
    
3.6.2 启动集群
  1. 如果集群是第一次启动,需要格式化 NameNode (注意格式化之前,一定要先停止上次启动的所有 namenode 和 datanode 进程,然后再删除 data 和 log 数据)

    hdfs namenode -format
    
  2. 启动 HDFS

    start-dfs.sh
    
  3. 启动 YARN(slave1 上)
    注意NameNode 和 ResourceManger 如果不是同一台机器,不能在 NameNode 上启动 YARN,应该在 ResouceManager 所在的机器上启动 YARN

    start-yarn.sh
    
3.6.3 编写查看集群所有节点 jps 脚本 alljps
  1. 在 /usr/local/bin 目录下创建文件 alljps

    vim alljps#!/bin/bashfor i in master slave1 slave2doecho "****************** $i *********************"ssh $i "source /etc/profile && jps"done
    
  2. 修改脚本 alljps 具有执行权限

    chmod 777 alljps
    
  3. 调用脚本形式:alljps
    在这里插入图片描述

3.7 集群时间同步

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。

3.7.1 时间服务器配置(必须 root 用户)
  1. 安装 ntp

    yum install ntp
    
  2. 修改 ntp 配置文件

    vim /etc/ntp.conf
    

修改内容如下:
   ⑴ 授权 192.168.1.0-192.168.1.255 网段上的所有机器可以从这台机器上查询和同步时间

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

⑵ 集群在局域网中,不使用其他互联网上的时间

#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

⑶ 当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步

server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. 修改/etc/sysconfig/ntpd 文件

    vim /etc/sysconfig/ntpd
    #添加内容如下(让硬件时间与系统时间一起同步)
    SYNC_HWCLOCK=yes
    
  2. 重新启动 ntpd 服务

    systemctl restart ntpd.service
    
  3. 设置 ntpd 服务开机启动

    systemctl enable ntpd.service
    
3.7.22 其他机器配置(必须root用户)

在其他机器配置10分钟与时间服务器同步一次

crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate master

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

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

相关文章

结构体成员访问操作符

1.结构体成员的直接访问&#xff1a; 结构体变量.成员名&#xff1a; 2.结构体成员的间接访问: 间接访问应用于指向结构体变量的指针&#xff1a;如下

提升零售行业竞争力的信息抽取技术应用与实践

一、引言 在当今快速发展的零售行业中&#xff0c;沃尔玛、家乐福等大型连锁超市为消费者提供了丰富的日常食品和日用品。为了进一步提升客户体验和优化库存管理&#xff0c;这些零售巨头纷纷开始探索和应用先进的信息抽取技术。 本文将深入探讨一个成功的信息抽取项目&#…

【Android】工厂测试中 局部 字体显示重叠 问题分析与解决(Android14)

继上一篇【Android】工厂模式中 字体大小/显示重叠/显示不完整 相关 问题分析与解决 的分析与解决&#xff0c;可以实现调整所有字符整体的宽高。 但在局部&#xff0c;如果只希望修改局部的某一行字符的样式&#xff0c;且这一行字符没有直接的资源布局控制文件&#xff0c;而…

linux——进程(1)

目录 一、概念 1.1、认识进程 1.2、进程描述符&#xff08;PCB&#xff09; 1.3、进程的结构体&#xff08;task_struct&#xff09; 二、查看进程 三、获取进程的Pid和PPid 3.1、通过系统调用获取进程的PID和PPID 四、创建进程 4.1、fork() 4.2、用if进行分流 五、…

OSPF协议全面学习笔记

作者&#xff1a;BSXY_19计科_陈永跃 BSXY_信息学院 注&#xff1a;未经允许禁止转发任何内容 OSPF协议全面学习笔记 1、OSPF基础2、DR与BDR3、OSPF多区域4、虚链路Vlink5、OSPF报文6、LSA结构1、一类/二类LSA&#xff08;Router-LSA/Network-LSA&#xff09; 更新完善中... 1、…

移动端实现一个日历带提示

移动端实现一个日历带提示的效果&#xff1a; 功能&#xff1a;超过当前12点不能选明天的&#xff0c;只能选后天的日期。 使用组件&#xff1a;vant-Calendar const formatter (day: CalendarDayItem) > {// console.log("day", day);const currentTime new …

软考77-上午题-【面向对象技术3-设计模式】-创建型设计模式02

一、生成器模式 1-1、意图 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 1-2、结构图 Builder 为创建一个 Product 对象的各个部件指定抽象接口。ConcreteBuilder 实现 Builder 的接口以构造和装配该产品的各个部件&#xff0c;定…

Docker 安装部署MySQL教程

前言 Docker安装MySQL镜像以及启动容器&#xff0c;大致都是三步&#xff1a;查询镜像–>拉取镜像–>启动容器 1、查询镜像 docker search mysql2、拉取镜像 拉取镜像时选择stars值较高的 docker pull mysql:5.7 #这里指定拉取对应的版本Mysql5.7&#xff0c;没有指…

Linux网络基础2

目录 实现网络版本计算器 自己定协议实现用json协议实现 重谈OSI七层模型HTTP协议 域名介绍url介绍HTTP请求和响应 实现一个简易的HTTP服务器 实现简易Http服务器初级版实现简易Http服务器中级版 实现一个简易的HTTP服务器最终版 请求方法HTTP状态码HTTP常见的Header 实现网…

常见的实时操作系统(RTOS)(嵌入式和物联网操作系统)介绍

在嵌入式系统和物联网&#xff08;IoT&#xff09;设备中&#xff0c;实时操作系统&#xff08;RTOS&#xff09;是至关重要的&#xff0c;因为它们负责管理有限的硬件资源&#xff0c;并提供确保任务在特定时间内完成的机制。开源实时操作系统&#xff08;RTOS&#xff09;允许…

Java项目:60 ssm基于JSP的乡镇自来水收费系统+jsp

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务&#xff0c; 其管理员管理水表&#xff0c;审核用户更换水表的请求&#xff0c;管理用户水费&#xff0c;包…

【04】WebAPI

WebAPI 和标准库不同,WebAPI 是浏览器提供的一套 API,用于操作浏览器窗口和界面 WebAPI 中包含两个部分: BOM:Browser Object Model,浏览器模型,提供和浏览器相关的操作DOM:Document Object Model,文档模型,提供和页面相关的操作BOM BOM 提供了一系列的对象和函数,…

3d导出stl格式模型破碎是什么原因,怎么解决?---模大狮模型网

在导出3D模型为STL格式时出现破碎(或称为碎片化)的情况通常是由于模型中存在几何上的问题造成的。以下是一些可能导致STL模型破碎的原因以及解决方法&#xff1a; 3d导出stl格式模型破碎的原因&#xff1a; 模型不封闭&#xff1a;STL格式要求模型必须是封闭的实体&#xff0c…

数字图像处理 使用C#进行图像处理九 实现傅里叶变换

一、简述 傅立叶变换将图像分解为其正弦和余弦分量。换句话说,它将图像从空间域变换到频率域。这个想法是任何函数都可以用无限正弦函数和余弦函数之和来精确近似。傅里叶变换是实现此目的的一种方法。 网上有很多关于傅里叶变换的文章,这里就不进行赘述了,这里主要结合代码…

Spring项目问题—前后端交互:Method Not Allowed

问题 前后端交互时出现Method Not Allowed问题 Ajax中使用的是get&#xff0c;方法仍然出现post方法报错 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method POST not supported] 浏览器中没有报错&#xff0c;只是接收不到后端返…

监控微信的软件,什么软件可以监控微信聊天记录

有的老板会在后台发文&#xff1a; “能监控聊天记录么&#xff1f;” “聊天记录删除了能找回么” “监控聊天记录的安装包有吗” ...... 可见很多老板对员工的工作时的工作状态都不太放心。 针对监控微信这个事情&#xff0c;我们应该理性分析看待。 首先&#xff0c;需…

基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】

基于Java中的SSM框架实现在线通用旅游平台网站系统演示 摘要 近几年来&#xff0c;计算机网络的发展得到了飞速的提升&#xff0c;由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识&#xff0c;现在它正在悄悄的改变着我们生活的…

学会用AI写文案,一分钟就能做一条爆款短视频:方法简单可复制

在这个信息爆炸的时代,短视频已成为人们获取信息、娱乐和社交的重要方式。而一条爆款短视频,除了精彩的画面和音乐外,文案的作用也不容忽视。 学会用AI写短视频文案,能够让你在竞争激烈的市场中脱颖而出,快速吸引观众的注意力。本文将为你揭示如何利用AI快速写出爆款短视…

[善用佳软]推荐掌握小工具:Json解析的命令行工具jq

与我联系&#xff1a; 微信公众号&#xff1a;数据库杂记 个人微信: iiihero 我是iihero. 也可以叫我Sean. iiheroCSDN(https://blog.csdn.net/iihero) Sean墨天轮 (https://www.modb.pro/u/16258) 数据库领域的资深爱好者一枚。 水木早期数据库论坛发起人 db2smth就是俺&am…

【Redis知识点总结】(五)——Redis实现分布式锁

Redis知识点总结&#xff08;五&#xff09;——Redis实现分布式锁 setnxsetnx expiresetnx expire lua脚本set nx exset nx ex 随机值set nx ex 随机值 lua脚本set ex nx 随机值 lua脚本 锁续期RedissonRedLock 在Redis的众多应用场景中&#xff0c;分布式锁是Redis比…