11.17【大数据】Hadoop【DEBUG】

列出hdfs文件系统所有的目录和文件

主节点上

子结点

是一样的

*为什么能登进 slave 02 的主机,但是 master 当中依然显示 slave 02 为 DeadNode?*

hadoop坏死节点的重启_hadoop3 子节点重启-CSDN博客

注意hadoop-daemon.sh 实际上位于 Hadoop 的 sbin 目录中,而不是 bin 目录中。因此,你需要将 sbin 目录也添加到 PATH 中

[hadoop@slave02 ~]$ echo 'export PATH=$PATH:/usr/local/hadoop/sbin' >> ~/.bashrc
[hadoop@slave02 ~]$ source ~/.bashrc

验证 hadoop-daemon.sh 路径 确认 hadoop-daemon.sh 脚本现在可以在 PATH 中找到:

[hadoop@slave02 ~]$ which hadoop-daemon.sh

bin/spark-submit --master spark://master:7077 --py-files /home/hadoop/Ex2_WordCount/WordCount.py

 Error: Missing application resource 表示你在提交 Spark 作业时没有指定主应用程序文件(即你要运行的 Python 脚本)。spark-submit 命令需要知道你要运行的具体脚本文件。

bin/spark-submit --master spark://master:7077 --py-files /home/hadoop/Ex2_WordCount/WordCount.py /home/hadoop/Ex2_WordCount/WordCount.py

一直卡在正在连接远程?

pro2

No route to host-CSDN博客

sudo firewall-cmd --zone=public --query-port=36605/tcp

Caused by: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: /192.168.0.132:44149
Caused by: java.net.NoRouteToHostException: No route to host

  1. 异常信息

    java.io.IOException: Connection reset by peer

    • 这是一个常见的网络错误,表示远程主机强制关闭了连接。具体原因可能有多种:
      • 网络问题:网络不稳定或中断,导致连接被重置。
      • 防火墙或安全软件:防火墙或安全软件阻止了连接。
      • 远程主机崩溃:远程主机可能出现了故障或崩溃,导致连接被重置。
      • 超时:连接超时,导致连接被重置。
      • 资源限制:远程主机的资源(如文件描述符)达到上限,无法处理新的连接请求。

  1. 检查防火墙和安全软件

    • 确保防火墙或安全软件没有阻止必要的端口。
    • 暂时禁用防火墙或安全软件,看看问题是否解决:
       

      sh

      sudo systemctl stop firewalld

  1. 检查网络连接

    • 确保网络连接稳定,没有丢包或延迟。
    • 使用 ping 或 traceroute 命令检查网络连通性:
       

      sh

      ping 124.71.188.246 traceroute 124.71.188.246

  1. 优化 Spark 配置

    • 调整 Spark 的网络超时和重试机制,以提高连接的稳定性:

      spark.network.timeout 120s

    • spark.io.compression.codec lz4

  1. 调整资源限制

    • 检查远程主机的资源限制,特别是文件描述符数量:
       

      sh

      ulimit -n

    • 如果需要,可以增加文件描述符的限制:
       

      sh

      ulimit -n 10000

### 分析 `ping` 结果你提供的 `ping` 命令输出显示:```plaintext
[hadoop@master spark]$ ping 192.168.0.249
PING 192.168.0.249 (192.168.0.249) 56(84) bytes of data.
From 192.168.0.14 icmp_seq=1 Destination Host Unreachable
From 192.168.0.14 icmp_seq=2 Destination Host Unreachable
From 192.168.0.14 icmp_seq=3 Destination Host Unreachable
From 192.168.0.14 icmp_seq=4 Destination Host Unreachable
From 192.168.0.14 icmp_seq=5 Destination Host Unreachable
From 192.168.0.14 icmp_seq=6 Destination Host Unreachable
From 192.168.0.14 icmp_seq=7 Destination Host Unreachable
From 192.168.0.14 icmp_seq=8 Destination Host Unreachable
```### 解释- **Destination Host Unreachable**:这表示目标主机不可达。通常这意味着目标主机(192.168.0.249)没有响应,或者中间的路由器无法将数据包转发到目标主机。
- **From 192.168.0.14**:这表示 ICMP 回复来自中间的路由器(192.168.0.14),而不是目标主机。这表明问题可能出在目标主机本身,或者目标主机与路由器之间的连接有问题。### 可能的原因及解决方法1. **目标主机未启动或网络未连接**:- **检查目标主机**:确保目标主机(192.168.0.249)已经启动,并且网络连接正常。- **登录目标主机**:```shssh hadoop@192.168.0.249```2. **目标主机的网络配置问题**:- **检查网络配置**:确保目标主机的网络配置正确,特别是 IP 地址和网关设置。- **查看网络接口状态**:```ship addr show```3. **中间路由器问题**:- **检查中间路由器**:确保中间路由器(192.168.0.14)工作正常,没有配置错误。- **重启路由器**:```shsudo systemctl restart networking```4. **防火墙或安全组设置**:- **检查防火墙设置**:确保防火墙没有阻止 ICMP 请求。- **临时禁用防火墙**:```shsudo systemctl stop firewalld```### 示例1. **检查目标主机状态**:```shssh hadoop@192.168.0.249```2. **查看目标主机的网络配置**:```ship addr show```3. **检查中间路由器状态**:```shssh hadoop@192.168.0.14sudo systemctl status networking```4. **临时禁用防火墙**:```shsudo systemctl stop firewalld```### 结论`Destination Host Unreachable` 错误通常表示目标主机不可达,可能是由于目标主机未启动、网络配置错误、中间路由器问题或防火墙设置不当。通过上述步骤,你可以逐步排查并解决这个问题。如果问题依然存在,建议进一步检查集群的网络配置和日志,以获取更多线索。
### 日志解释你提供的日志信息如下:```plaintext
24/11/17 16:07:28 WARN TaskSetManager: Lost task 19.0 in stage 3.1 (TID 103) (192.168.0.14 executor 1): FetchFailed(BlockManagerId(3, 192.168.0.249, 42553, None), shuffleId=0, mapIndex=1, mapId=9, reduceId=19, message=
org.apache.spark.shuffle.FetchFailedExceptionat org.apache.spark.errors.SparkCoreErrors$.fetchFailedError(SparkCoreErrors.scala:437)at org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:1239)at org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:971)at org.apache.spark.storage.ShuffleBlockFetcherIterator.next(ShuffleBlockFetcherIterator.scala:86)at org.apache.spark.util.CompletionIterator.next(CompletionIterator.scala:29)at scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31)at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)at scala.collection.Iterator.foreach(Iterator.scala:943)at scala.collection.Iterator.foreach$(Iterator.scala:943)at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)at org.apache.spark.api.python.PythonRDD$.writeIteratorToStream(PythonRDD.scala:322)at org.apache.spark.api.python.PythonRunner$$anon$2.writeIteratorToStream(PythonRunner.scala:751)at org.apache.spark.api.python.BasePythonRunner$WriterThread.$anonfun$run$1(PythonRunner.scala:451)at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1928)at org.apache.spark.api.python.BasePythonRunner$WriterThread.run(PythonRunner.scala:282)
Caused by: java.io.IOException: Connecting to /192.168.0.249:42553 failed in the last 4750 ms, fail this connection directlyat org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:210)at org.apache.spark.network.netty.NettyBlockTransferService$$anon$2.createAndStart(NettyBlockTransferService.scala:131)at org.apache.spark.network.shuffle.RetryingBlockTransferor.transferAllOutstanding(RetryingBlockTransferor.java:173)at org.apache.spark.network.shuffle.RetryingBlockTransferor.lambda$initiateRetry$0(RetryingBlockTransferor.java:206)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.lang.Thread.run(Thread.java:750)
```### 解释1. **警告信息**:```plaintext24/11/17 16:07:28 WARN TaskSetManager: Lost task 19.0 in stage 3.1 (TID 103) (192.168.0.14 executor 1)```- 这表示在阶段 3.1 中,任务 19.0(任务 ID 103)在执行器 1 上丢失。2. **异常信息**:```plaintextFetchFailed(BlockManagerId(3, 192.168.0.249, 42553, None), shuffleId=0, mapIndex=1, mapId=9, reduceId=19, message=org.apache.spark.shuffle.FetchFailedExceptionCaused by: java.io.IOException: Connecting to /192.168.0.249:42553 failed in the last 4750 ms, fail this connection directly```- `FetchFailedException` 表示在从 BlockManagerId 为 `(3, 192.168.0.249, 42553, None)` 的节点获取 shuffle 数据时失败。- 具体的 shuffle ID 为 0,mapIndex 为 1,mapId 为 9,reduceId 为 19。- `java.io.IOException` 表示在连接到 `192.168.0.249:42553` 时失败,连接尝试在 4750 毫秒内未成功。### 常见原因及解决方法1. **网络问题**:- **检查网络连接**:确保所有节点之间的网络连接稳定,没有丢包或延迟。- **使用 `ping` 和 `traceroute` 命令**:```shping 192.168.0.249traceroute 192.168.0.249```2. **防火墙或安全软件**:- **检查防火墙设置**:确保防火墙或安全软件没有阻止必要的端口。- **暂时禁用防火墙**:```shsudo systemctl stop firewalld```3. **资源不足**:- **检查资源使用情况**:确保执行器有足够的资源(如内存、CPU)来处理任务。- **调整 Spark 配置**:```propertiesspark.executor.memory 4gspark.executor.cores 2spark.network.timeout 120sspark.shuffle.io.maxRetries 10spark.shuffle.io.retryWait 10s```4. **BlockManager 故障**:- **检查 BlockManager 日志**:查看 BlockManager 的日志,寻找异常信息。- **重启 BlockManager**:如果 BlockManager 出现故障,可以尝试重启它。5. **Shuffle 文件损坏**:- **删除 Shuffle 文件**:删除有问题的 Shuffle 文件,让 Spark 重新生成。- **调整 Shuffle 文件存储位置**:```propertiesspark.local.dir /tmp/spark-local-dir```### 示例假设你已经检查了网络连接和资源使用情况,接下来可以尝试以下步骤:1. **检查网络连接**:```shping 192.168.0.249traceroute 192.168.0.249```2. **调整 Spark 配置**:编辑 `conf/spark-defaults.conf` 文件,增加以下配置:```propertiesspark.executor.memory 4gspark.executor.cores 2spark.network.timeout 120sspark.shuffle.io.maxRetries 10spark.shuffle.io.retryWait 10s```3. **重新提交 Spark 作业**:```shbin/spark-submit --master spark://master:7077 --py-files /home/hadoop/Ex2_WordCount/WordCount.py /home/hadoop/Ex2_WordCount/WordCount.py```### 结论`FetchFailedException` 通常与网络问题、防火墙设置、资源不足、BlockManager 故障或 Shuffle 文件损坏有关。通过上述步骤,你可以逐步排查和解决这个问题。如果问题依然存在,建议进一步检查集群的配置和日志,以获取更多线索。

nmap -p 7077 master

为什么在WEBUI当中显示有worker而且Alive,但是在日志中一直显示报错?

为什么在 WEBUI 当中有 alive 的 worker,是私网 ip,但是在终端缺 ping 不通?

./sbin/start-all.sh -h master

./sbin/start-all.sh spark://master_ip:7077
 

./sbin/sto-all.sh -h master

Caused by: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: /192.168.0.132:36645
Caused by: java.net.NoRouteToHostException: No route to hostat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.lang.Thread.run(Thread.java:750)

根据您提供的代码和错误信息,问题仍然出在加载 `bert-base-chinese` 模型的 `BertTokenizer` 时失败。为了确保在分布式环境下能够成功加载模型,我们可以采取以下措施:1. **确保所有节点上都安装了 `transformers` 和 `torch` 库**。
2. **预先下载模型文件并分发到所有节点**。
3. **使用 `--files` 参数将模型文件与 Spark 任务一起分发**。### 1. 安装必要的库确保所有节点上都安装了 `transformers` 和 `torch` 库:```sh
pip install transformers torch
```### 2. 预先下载模型文件在一台机器上下载 `bert-base-chinese` 模型文件,并将其分发到所有节点。可以使用以下命令下载模型:```sh
mkdir -p /path/to/models/bert-base-chinese
transformers-cli download bert-base-chinese --cache-dir /path/to/models/bert-base-chinese
```### 3. 修改代码以加载本地模型文件修改代码,使其从本地路径加载模型文件:```python
from pyspark import SparkConf, SparkContext
from transformers import BertTokenizer, BertModel
import torch
import jieba
import reDATAPATH = 'hdfs://master:9000/ex2/stop_words.txt'
SAVAPATH = '/home/hadoop/Ex2_WordCount/results/res.txt'
# 加载 BERT 模型和分词器
model_name = '/path/to/models/bert-base-chinese'
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertModel.from_pretrained(model_name)# 打印模型结构
print(model)# 打印模型参数
for name, param in model.named_parameters():print(f"Parameter Name: {name}, Shape: {param.shape}")# 打印模型配置
print(model.config)conf = SparkConf().setAppName("ex2").setMaster("spark://master:7077").set("spark.executor.memory","4g")
sc = SparkContext(conf=conf)def getStopWords(stopWords_filePath):stopwords = sc.textFile(stopWords_filePath).collect()return stopwordsdef bertTokenize(text):# 使用 BERT 分词器进行分词tokens = tokenizer.tokenize(text)return tokensdef jiebaCut(answers_filePath):# 读取 answers.txtanswersRdd = sc.textFile(answers_filePath)  # answersRdd 每一个元素对应 answers.txt 每一行# 利用 SparkRDD reduce() 函数, 合并所有回答str = answersRdd.reduce(lambda a, b: a + b)# 使用 BERT 分词器进行分词words_list = bertTokenize(str)return words_listdef wordcount():# 读取停用词表stopwords = getStopWords(DATAPATH)# 使用 BERT 分词words_list = jiebaCut(SAVAPATH)# 词频统计wordsRdd = sc.parallelize(words_list)resRdd = wordsRdd.filter(lambda word: word not in stopwords) \.filter(lambda word: len(word) > 1) \.map(lambda word: (word, 1)) \.reduceByKey(lambda a, b: a + b) \.sortBy(lambda x: x[1], ascending=False)return resRddif __name__ == '__main__':# 进行词频统计并可视化resRdd = wordcount()print(resRdd.take(10))  # 查看前10个
```### 4. 提交 Spark 任务使用 `spark-submit` 提交任务,并确保将模型文件与任务一起分发:```sh
spark-submit --master spark://master:7077 --files /path/to/models/bert-base-chinese/vocab.txt /home/hadoop/Ex2_WordCount/WordCountByBert.py
```### 注意事项1. **模型文件路径**:- 确保 `model_name` 路径正确指向本地模型文件的目录。- 如果模型文件较大,建议使用 `rsync` 或其他工具将模型文件分发到所有节点。2. **资源管理**:- 确保 Spark 配置有足够的资源(内存和 CPU)来处理 BERT 模型的计算需求。3. **性能优化**:- 在分布式环境中,频繁加载模型可能会导致性能下降。可以考虑将模型加载逻辑移到 `mapPartitions` 中,每个分区只加载一次模型。通过以上步骤,您应该能够在 Hadoop + Spark 环境中成功使用 BERT 模型进行分词。希望这些信息对您有所帮助!

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

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

相关文章

网络测速工具

1. SPEEDTEST https://www.speedtest.net/ 2. 测速网 测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR,全屋Wi-Fi - SpeedTest.cn 3. 字节比特换算 bps(bits per second) 字节和比特的换算…

快速构建NLP理论知识体系

NLP理论知识体系 一句话解释NLPNLP模型及原理简述1、Rag 一句话解释NLP 如果我们要实现机器翻译、情感分析、问答系统、文本摘要、聊天机器人、构造智能化的辅助文件填写模板,NLP可以通过现成的模型对输入的语音、文字、图片进行处理(分词、标词性、去停…

AI - RAG中的状态化管理聊天记录

AI - RAG中的状态化管理聊天记录 大家好,今天我们来聊聊LangChain和LLM中一个重要的话题——状态化管理聊天记录。在使用大语言模型(LLM)的时候,聊天记录(History)和状态(State)管理是非常关键的。那我们先…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角,对Mamba 进行了阐释。 论文名称:Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址:https://arxiv.org/pdf/24…

POI遍历行所有单元格的两种方式,getPhysicalNumberOfCells方式有问题,勿用

今天看POI源码的时候&#xff0c;发现HSSFWorkbook类型的工作簿&#xff0c;行数据是用TreeMap<Integer, HSSFRow>存储的&#xff0c;列数据是用HSSFCell[]数组来存的&#xff1b;XSSFWorkbook类型的工作簿&#xff0c;行数据是用SortedMap<Integer, XSSFRow>存储的…

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…

ArrayList常见操作源码逐句剖析

目录 前言 正文 1.需要了解的一些字段属性 1.存储 ArrayList 元素的数组缓冲区。 2.集合的大小 3.默认集合容量大小 2.ArrayList对象创建 1.无参构造 2.有参构造1 3.有参构造2 3.添加元素add(E e)以及扩容机制 ​编辑 后言 前言 源码的剖析有助于理解设计模式&…

重磅更新:CnosDB 2.3.5.4 版本上线, 性能提升,问题修复一网打尽

&#x1f4e2; 重磅更新&#xff1a;CnosDB 2.3.5.4 版本上线, 性能提升&#xff0c;问题修复一网打尽 &#x1f4e2; 我们很高兴地向大家介绍最新版本的更新&#xff0c;以下是本次更新的主要内容&#xff1a; &#x1f539; 版本号&#xff1a;2.3.5.4 &#x1f539; 发布…

SD-WAN 2.0 在金融行业的典型应用场景

目录 全扁平化组网 场景需求 应用方案 SD-WAN 2.0 在金融行业的创新实践 SD-WAN5G提高金融行业网络接入可靠性 全扁平化组网 随着金融机构数字化转型的推进&#xff0c;机构业务的多样性、复杂性、 个性化等要求&#xff0c;对现有的金融机构网络架构与网管人员运维模式提出…

如何延长相机电池续航时间

如果你曾在拍摄过程中突然发现相机电池电量不足&#xff0c;就会知道那有多让人紧张和沮丧了。无论你是在拍摄小朋友的生日派对、家庭聚会&#xff0c;还是作为一名专业摄影师在工作&#xff0c;保持电池有电都是至关重要的。否则&#xff0c;你就有可能错过精彩瞬间&#xff0…

C#开发-集合使用和技巧(十)Union用法-并集

在 C# 中&#xff0c;IEnumerable 的 Union 方法用于返回两个序列的并集。Union 方法会去除重复的元素&#xff0c;确保结果集中每个元素都是唯一的。以下是 Union 方法的基本用法&#xff1a; 基本语法 public static IEnumerable<TSource> Union<TSource>(this…

轻量化特征融合 | YOLOv11 引入一种基于增强层间特征相关性的轻量级特征融合网络 | 北理工新作

本改进已同步到Magic框架 摘要—无人机图像中的小目标检测由于分辨率低和背景融合等因素具有挑战性,导致特征信息有限。多尺度特征融合可以通过捕获不同尺度的信息来增强检测,但传统策略效果不佳。简单的连接或加法操作无法充分利用多尺度融合的优势,导致特征之间的相关性不…

ABAP 系统变量SY-INDEX与SY-TABIX的区别

ABAP系统变量SY-INDEX与SY-TABIX都是在循环中使用&#xff1a; SY-INDEX在Do...EndDo和While...EndWhile中起作用&#xff1b; SY-TABIX在Loop...EndLoop中有效。 详见如下实例&#xff1a; REPORT ztest_index_tabix.DATA:lit_vbak TYPE STANDARD TABLE OF vbak,lwa_vbak …

方案拆解 | 打击矩阵新规频出!2025矩阵营销该怎么玩?

社媒平台的矩阵营销又要“变天”了&#xff1f;&#xff01; 11月18日&#xff0c;小红书官方发表了被安全薯 称为“小红书史上最严打击黑灰产专项”新规&#xff0c;其中就包括黑灰产矩阵号的公告。 ▲ 图源&#xff1a;小红书 实际上&#xff0c;不包括这次&#xff0c;今年…

Lua语言入门 - Lua 数组

Lua 数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xff…

SVM的基本思想

一、SVM的基本思想 SVM的基本思想是在样本的向量空间中寻找一个超平面&#xff0c;使得两类样本被分割在平面的两端。这样的平面理论上有无穷多个&#xff0c;但SVM的目标是找到一个最优的超平面&#xff0c;即两侧距离超平面最近的样本点到超平面的距离被最大化的超平面。这个…

Java基于SpringBoot的网上订餐系统,附源码

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

【 工具变量】IPCC碳排放因子数据测算表

一、数据简介&#xff1a; 排放因子法是IPCC提出的一种碳排放估算方法&#xff0c;也是目前适用范围最广、应用最为普遍的方法。将各类能源消耗的实物统计量转变为标准统计量&#xff0c;再乘以各自的碳排放因子&#xff0c;加总之后就可以得到碳排放总量。如果按照ISO14064标…

备忘录模式的理解和实践

引言 在软件开发中&#xff0c;我们经常会遇到需要保存对象状态并在某个时间点恢复到该状态的需求。这种需求类似于我们平时说的“后悔药”&#xff0c;即允许用户撤销之前的操作&#xff0c;恢复到某个之前的状态。备忘录模式&#xff08;Memento Pattern&#xff09;正是为了…

湖南铂乐家具新潮流,岛台不再是大平层的专属

湖南铂乐家具设计师们以巧思打破常规&#xff0c;无论是精致温馨的小户型公寓&#xff0c;还是布局紧凑的普通住宅&#xff0c;都能找到适配的岛台设计。以往岛台总是与宽敞开阔的大平层空间紧密相连&#xff0c;仿佛是大户型的身份象征。而如今岛台不再是大平层的专属。 在固…