Hadoop学习1:概述、单体搭建、伪分布式搭建

文章目录

    • 概述
      • 基础知识
      • Hadoop组件构成
      • Hadoop配置文件
    • 环境准备
      • 配置
      • Hadoop配置
        • 下载
        • 配置环境变量
    • Hadoop运行模式
      • Standalone Operation(本地)
        • 官方Demo
        • WordCount单词统计Demo
      • Pseudo-Distributed Operation(伪分布式模式)
        • 配置修改
        • 启动DFS【9870】
          • Hadoop-DFS数据清空格式化
          • 启动DFS组件
          • 访问DFS前端页面(不同版本的Hadoop的NameNode端口有变)
          • dfs命令使用(主要用来操作文件)
            • 复制物理机文件中hadoop中
            • 文件展示以及读取文件内容
            • 创建目录、文件
            • 使用mapreduce进行计算hadoop里面某个文件夹的内容
        • 启动Yarn组件【8088】
          • 配置修改
          • 启动
          • 访问yarn前端页面
          • 运行计算dfs某个目录所有文件的单词数,yarn页面有运行记录
        • 启动MapReduce组件
          • 配置修改
          • 启动日志采集系统
          • 查看任务日志
          • 启动日志聚集(任务执行的具体详情上传到HDFS组件中)
            • 未启动前
            • 启动

概述

Hadoop: 分布式系统基础架构

解决问题: 海量数据存储、海量数据的分析计算

官网:https://hadoop.apache.org/

HDFS(Hadoop Distributed File System): 分布式文件系统,用于存储数据

Hadoop的默认配置【core-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/core-default.xml == 配置Hadoop集群中各个组件间共享属性和通用参数以实现更好的性能和可靠性 == hadoop目录\share\hadoop\common\hadoop-common-3.3.6.jar

Hadoop的默认配置【hdfs-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml === 配置HDFS组件中各种参数以实现更好的性能和可靠性(如数据块大小、心跳间隔等)== hadoop目录\share\hadoop\hdfs\hadoop-hdfs-3.3.6.jar

Hadoop的默认配置【mapred-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml === 配置MapReduce任务执行过程进行参数调整、优化等操作 == hadoop目录\share\hadoop\mapreduce\hadoop-mapreduce-client-core-3.3.6.jar

Hadoop的默认配置【yarn-site.xml】: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml === 配置YARN资源管理器(ResourceManager)和节点管理器(NodeManager)的行为 == hadoop目录\share\hadoop\yarn\hadoop-yarn-common-3.3.6.jar

基础知识

Hadoop三大发行版本
Apache:最基础版本,入门学习友好
Cloudera:大型互联网企业用的多 == 收费
Hotronwords:文档好
Hadoop优点
高可靠性:Hadoop底层维护多个数据副本,以即使adoop某个计算元素或存储出现贴故障,也不会导致据的丢失
高扩展性:在集间分配任务数据,可方便的扩展数刻以干十的节点
高效性:在MapReducel的思想下,Hadoop是并行工作的,以加快任务处理速度
高容错性:能够自动将失败的任务重新分配
Hadoop 1.x组成
HDFS:数据存储
Common:辅助工具
MapReduce:计算以及资源调度

Hadoop组件构成

Hadoop 2.x组成
HDFS:数据存储 == 涉及进程【NameNode、DataNode、SecondaryNameNode、Journal Node、NFSGateway】
Common:辅助工具
MapReduce:计算== 涉及进程【JobTracker、TaskTracker、MapTask、ReduceTask】
Yarn:资源调度 == 涉及进程【ResourceManager、NodeManager、ApplicationMaster、TimelineServer】
HDFS(分布式文件系统)组成
NameNode:存储文件元数据,属性信息,比如文件名、文件权限等,以及每个文件的快列表以及其所在的DataNode
DataNode:文件块数据、以及快数据的校验和
Secondary NameNode:监控HDFS状态的程序,每隔一段时间获取HDFS元数据快照
JournalNode:协调多个NameNodes之间共享编辑日志
NFSGateway:提供给用户访问 HDFS 文件系统的一种途径, 它将 HDFS 文件系统映射为标准的网络文件系统 (NFS) 挂载点
YARN(资源调度)组成
ResourceManager:主节点,负责协调集群资源并分配给各个应用程序
NodeManager:从节点,负责管理单个节点上的资源并执行任务
ApplicationMaster:新应用程序提交到集群时,会创建一个ApplicationMaster实例
TimelineServer:用户方便地查询 Hadoop 集群中运行过的历史作业和应用程序信息
MapReduce(计算)组成
JobTracker:主节点,负责协调集群资源并分配给各个任务
TaskTracker:从节点,负责管理单个节点上的资源并执行任务
JobHistoryServer:管理和存储MapReduce作业历史记录信息
MapTask和ReduceTask:执行任务的Java程序。新作业被提交到集群时,会创建多个Mapper和Reducer实例处理数据
MapReduce计算过程
Map:并行处理输入数据
Reduce:对Map结果进行汇总

在这里插入图片描述

Hadoop配置文件

配置文件路径: hadoop目录/etc/hadoop

在这里插入图片描述

Hadoop配置文件
core-site.xml:所有组件共享的通用属性和参数、修改文件系统、集群名称、日志路径等
hdfs-site.xml:HDFS特定的属性和参数、数据快大小、副本数、NameNode、DataNode的存储路径
mapred-site.xml:配置MapReduce任务执行过程进行参数调整、优化等操作
yarn-site.xml:配置YARN资源管理器(ResourceManager)和节点管理器(NodeManager)的行为

环境准备

配置

//修改主机名
//more /etc/sysconfig/network == 内容如下  //不同机器取不同的HOSTNAME,不要取成一样的
NETWORKING=yes
HOSTNAME=hadoop107  

//=======================

//固定IP地址 == 自行百度
ifconfig
more /etc/sysconfig/network-scripts/ifcfg-ens33 

//=======================
// 查看自定义主机名、ip的映射关系 ==  more /etc/hosts
ping 主机名

在这里插入图片描述

在这里插入图片描述

Hadoop配置

下载

官网: https://hadoop.apache.org/releases.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置环境变量
//将压缩包解压到指定目录
mkdir  -p /opt/module/ &&  tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/


//进入解压后的软件目录
cd /opt/module/hadoop-3.3.6

//设置环境变量
vim /etc/profile

//此文件末尾添加下面四行内容
## Hadoop
export HADOOP_HOME=/opt/module/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin



//使环境变量生效
source /etc/profile

在这里插入图片描述

在这里插入图片描述

Hadoop运行模式

默认模式
生产真正使用
分布模式
本地模式(Local) == Standalone Operation
伪分布模式(Pseudo-Distributed)== Pseudo-Distributed Operation
完全分布模式(Fully-Distributed)== Fully-Distributed Operation

Standalone Operation(本地)

参考: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation

官方Demo

官方Demo,统计文件中某个正则规则的单词出现次数

# hadoop目录
cd /opt/module/hadoop-3.3.6

# 创建数据源文件 == 用于下面进行demo统计单词
mkdir input

# 复制一些普通的文件
cp etc/hadoop/*.xml input

# 统计input里面的源文件规则是'dfs[a-z.]+'的单词个数,并将结果输出到当前目录下的output目录下 == 输出目录不得提前创建,运行时提示会报错
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.]+'

# 查看统计结果
cat output/*
cat output/part-r-00000


# 显示出来的结果,跟grep查出来的一样

在这里插入图片描述

WordCount单词统计Demo
//创建数据目录
mkdir -p /opt/module/hadoop-3.3.6/input/wordCountData && cd /opt/module/hadoop-3.3.6/input/


//文件数据创建 = 用于demo测试
echo "cat apple banana" >> wordCountData/data1.txt
echo "dog" >> wordCountData/data1.txt
echo " elephant" >> wordCountData/data1.txt


echo "cat apple banana" >> wordCountData/data2.txt
echo "dog" >> wordCountData/data2.txt
echo " elephant queen" >> wordCountData/data2.txt


//查看数据内容
more wordCountData/data1.txt
more wordCountData/data2.txt


//开始统计wordCountData文件目录下的单词数
hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /opt/module/hadoop-3.3.6/input/wordCountData wordCountDataoutput

//查看统计结果
cd /opt/module/hadoop-3.3.6/input/wordCountDataoutput
cat ./*

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Pseudo-Distributed Operation(伪分布式模式)

参考: https://hadoop.apache.org/docs/r3.3.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation

概述: 单节点的分布式系统(用于测试使用)

配置修改


核心配置文件修改: vim /opt/module/hadoop-3.3.6/etc/hadoop/core-site.xml

<configuration>


    <!-- 默认是本地文件协议 file: -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.19.107:9000</value>
    </property>


    <!-- 临时目录 默认/tmp/hadoop-${user.name}  -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.3.6/tmp</value>
    </property>


</configuration>


核心配置文件修改: vim /opt/module/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

<configuration>

    <!-- 集群设置为1, 默认3 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

</configuration>
启动DFS【9870】
Hadoop-DFS数据清空格式化
hdfs namenode -format

在这里插入图片描述

启动DFS组件

注意: 启动过程中可能遇到非root用户、JAVA_HOME找不到的现象,导致启动失败,自行参考下面的问题解决

# 未启动hadoop时所系统所运行java程序
jps


# 启动hadoop相关的应用程序
sh /opt/module/hadoop-3.3.6/sbin/start-dfs.sh


# 查看启动hadoop的应用变化
jps

在这里插入图片描述

访问DFS前端页面(不同版本的Hadoop的NameNode端口有变)

浏览器NameNode前端页面: http://192.168.19.107:9870/

在这里插入图片描述

在这里插入图片描述

dfs命令使用(主要用来操作文件)

帮助文档: hdfs dfs --help

在这里插入图片描述

复制物理机文件中hadoop中
hdfs dfs -mkdir /test


hdfs dfs -put /opt/module/hadoop-3.3.6/input /test

在这里插入图片描述

在这里插入图片描述

文件展示以及读取文件内容
hdfs dfs -ls -R /

hdfs dfs -cat /test/input/core-site.xml

在这里插入图片描述

创建目录、文件
hdfs dfs -mkdir -p /test/linrc


hdfs dfs -touch /test/linrc/1.txt

在这里插入图片描述

使用mapreduce进行计算hadoop里面某个文件夹的内容
hdfs dfs -ls /test/input

# 对hadoop里面某个文件夹内容进行单词统计
hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput2


hdfs dfs -ls /test/input


# 查看统计结果
hdfs dfs -cat /test/input/wordCountDataoutput2/*

在这里插入图片描述

启动Yarn组件【8088】
配置修改

强制指定Yarn的环境变量: /opt/module/hadoop-3.3.6/etc/hadoop/yarn-env.sh
在这里插入图片描述

export JAVA_HOME=/www/server/jdk8/jdk1.8.0_202



yarn-site.xml添加如下两个配置 /opt/module/hadoop-3.3.6/etc/hadoop/yarn-site.sh

<configuration>

<!-- Site specific YARN configuration properties == https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml -->

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>


    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.19.107</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HO
ME</value>
    </property>

    <!-- 查看任务日志时,防止其重定向localhost,导致页面打开失败 -->
    <property>
        <name>yarn.timeline-service.hostname</name>
        <value>192.168.19.107</value>
    </property>


</configuration>

在这里插入图片描述

启动
//非常重要,必须回到hadoop的目录里面进行启动,我也不知道为什么
cd /opt/module/hadoop-3.3.6

//不要使用 sh命令启动,否则报错,我也不知道为什么
./sbin/start-yarn.sh 

在这里插入图片描述

访问yarn前端页面

浏览器: http://ip:8088

yarn页面端口配置: https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml的【yarn.resourcemanager.webapp.address】

在这里插入图片描述

在这里插入图片描述

运行计算dfs某个目录所有文件的单词数,yarn页面有运行记录

在这里插入图片描述

在这里插入图片描述

//单词计算开始
hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput3

在这里插入图片描述

在这里插入图片描述

启动MapReduce组件
配置修改

强制指定mapred的环境变量: /opt/module/hadoop-3.3.6/etc/hadoop/mapred-env.sh
在这里插入图片描述

export JAVA_HOME=/www/server/jdk8/jdk1.8.0_202


mapred-site.xml添加如下配置: /opt/module/hadoop-3.3.6/etc/hadoop/mapred-site.xml
在这里插入图片描述

<configuration>


    <!-- The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>


    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>

    <!-- mr运行日志采集系统配置 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>192.168.19.107:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.19.107:19888</value>
    </property>


</configuration>
启动日志采集系统

在这里插入图片描述

mapred --daemon start historyserver
查看任务日志

在这里插入图片描述

在这里插入图片描述

启动日志聚集(任务执行的具体详情上传到HDFS组件中)
未启动前

在这里插入图片描述

在这里插入图片描述

启动

注意: 如果yarn组件已经启动,修改yarn的配置需要重新启动,使得配置生效

#停止日志系统
mapred --daemon stop historyserver


#停止yarn组件
cd /opt/module/hadoop-3.3.6
./sbin/stop-yarn.sh 

在这里插入图片描述

yarn-site.xml添加如下配置 /opt/module/hadoop-3.3.6/etc/hadoop/yarn-site.sh
在这里插入图片描述

<configuration>

<!-- Site specific YARN configuration properties == https://hadoop.apache.org/docs/r3.3.6/hadoop-yarn/hadoop-yarn-common/yarn-default.xml -->

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>


    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.19.107</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_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HO
ME</value>
    </property>


    <property>
        <name>yarn.timeline-service.hostname</name>
        <value>192.168.19.107</value>
    </property>


    <!-- 日志聚集启动 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 日志聚集的日志保留的时间,单位秒 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>2592000</value>
    </property>

</configuration>



#启动yarn组件
cd /opt/module/hadoop-3.3.6
./sbin/start-yarn.sh

#启动日志系统
mapred --daemon start historyserver

在这里插入图片描述


# 重新运行一个任务
hadoop jar /opt/module/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/input/wordCountData /test/input/wordCountDataoutput5

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

NCV4275CDT50RKG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV4275C 是一款低漏稳压器&#xff0c;可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。输出调节为 5.0 V 或 3.3 V&#xff0c;额定输出电流为 450 mA。它还提供过电流保护、超温保护和可编程微处理器重置等多种功能。NCV4275C 采用 D…

Python Learn day05

Python Learn day05 本文主要讲解 继承、多态、定制类 继承和多态 什么是继承 当新类想要拥有现有类的功能结构&#xff0c;可以使用继承。继承的前提是新类 is a 现有类&#xff0c;即&#xff1a; 子类 is 父类 总是从某个类继承&#xff1a; class Myclass(object):pass…

Vue+OpenLayers7入门到实战:OpenLayers如何使用全屏控件,来实现地图容器的全屏和退出全屏功能

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上使用地图全屏控件,来控制地图容器的全屏和退出全屏的功能。 注意:这里的全屏控件全屏指的是地图容器全屏,并非整个网页全屏。 网页整体全屏和指定网页节点全屏可以参…

十五、计算机视觉-sobel算子

文章目录 前言一、sobel算子的概念二、sobel算子的计算方式三、具体实现 前言 上节课我们学习了梯度的知识&#xff0c;学习了如何去计算梯度&#xff0c;本节我们继续学习计算梯度的方法&#xff0c;本节我们学习使用Sobel算子计算梯度&#xff0c;这与上节课梯度计算方法有所…

ARMv8架构特殊寄存器介绍-0

一、zero 寄存器 零寄存器用作源寄存器时读取零&#xff0c;用作目标寄存器时丢弃结果。您可以在大多数指令中使用零寄存器&#xff0c;但不是所有指令。二、sp寄存器 在ARMv8架构中&#xff0c;要使用的堆栈指针的选择在某种程度上与Exception级别。默认情况下&#xff0c;异…

大数据Doris(六十九):项目线上表现

文章目录 项目线上表现 一、查询响应时间

java学习之路-程序逻辑控制

目录 1.分支结构 1.1 if语句 栗子 判断奇数还是偶数 判断一个年份是否为闰年 1.2switch语句 栗子 2. 循环结构 2.1while 循环 栗子 2.2break和continue break continue 2.3for循环 基本语法 栗子 2.4 do while 循环 3.输入输出 3.1输出 3.2从键盘输入 栗子…

基于FPGA的光纤通信系统的实现的优化技巧与方法

逻辑电路基本框架回顾 跨时钟域同步技术 读写操作相互独立时钟域 A 和 B 不需要一致的相位由专门逻辑控制读写操作的切换 高速数据的乒乓缓存技术

SimpleDateFormat类 --java学习笔记

SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式 常见构造器和方法&#xff1a; pattern 代表需要应用的时间格式—— 时间格式的常见符号&#xff1a; 时间格式的应用举例&#xff1a; import java.text.SimpleDate…

集合系列(二) -List接口详解

一、List简介 List 的数据结构就是一个序列&#xff0c;存储内容时直接在内存中开辟一块连续的空间&#xff0c;然后将空间地址与索引对应。 以下是List集合简易架构图 由图中的继承关系&#xff0c;可以知道&#xff0c;ArrayList、LinkedList、Vector、Stack都是List的四个…

【计算机网络】UDP/TCP 协议

TCP 协议 一、传输层1. 再谈端口号2. 端口号范围划分3. 进程和端口号4. netstat5. pidof 二、UDP 协议1. UDP 协议端格式(报文)2. UDP 的特点3. 面向数据报4. UDP 的缓冲区 三、TCP 协议1. 认识 TCP2. TCP 协议段格式&#xff08;1&#xff09;4 位首部长度&#xff08;2&#…

Android U pipeline-statusbar

Android U - statusbar pipeline 写在前面 Android原生从T开始对SystemUI进行MVVM改造&#xff0c;U上状态栏部分进行了修改&#xff1b;第一次出现修改不会删除原有逻辑&#xff0c;而是两版并行&#xff0c;留给其他开发者适配的时间&#xff1b;在下一个大版本可能会删除原…

Java获取视频封面图,利用FFmpegFrameGrabber获取视频封面图

依赖 <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.9</version></dependency>传入视频流获取图片byte /*** 获取视频截图** param frameNumber 视频的指定帧数* param …

Ubuntu查看ros版本-linux查看ros版本

使用ros带的rosversion命令即可查看自己的ros版本&#xff1a; rosversion -d

双指针算法_复写零

题目&#xff1a; 给一个固定长度的数组arr&#xff0c;将数组中出现的每一个0都复写一遍&#xff0c;并且将其余元素都往右移动 且不要再超过数组长度的位置写入元素&#xff0c;在数组上直接修改 示例&#xff1a; 双数组模拟操作&#xff1a; 从示例来看&#xff0c;因为…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言———— 主从&#xff08;Master-Slave&#xff09;DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

视频素材在哪里找?5个无版权视频素材网站

今天我再给大家介绍几个视频素材在哪里找&#xff0c;希望能帮你的短视频创作更加顺手&#xff1a; 蛙学网&#xff1a; 蛙学网是国内的一个视频素材平台&#xff0c;适合做短视频的朋友。这里的素材非常多&#xff0c;涵盖了各种风格和主题。更新速度也很快&#xff0c;能够帮…

Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

Python笔记|字符串的转义

重新梳理一遍python的基础知识 除了数字&#xff0c;Python 还可以操作字符串。字符串有多种表现形式&#xff0c;用单引号&#xff08;……&#xff09;或双引号&#xff08;"……"&#xff09;标注的结果相同 。反斜杠 \ 用于转义&#xff1a; >>>spam e…

QT网络编程之实现TCP客户端和服务端

推荐一个不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;内容全面&#xff0c;作为入门科普和学习提升都不错&#xff0c;分享一下给大家&#xff1a;前言https://www.captainbed.cn/ai 一.QT5.12实现TCP客户端和服务端功能 1.QT中实现TCP通信主要用到了以下类&…