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.rhkb.cn/news/485979.html

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

相关文章

ffmpeg转码与加水印

文章目录 转码 与加水印引入jar包代码ffmpeg安装错误解决方法 转码 与加水印 引入jar包 <dependency><groupId>net.bramp.ffmpeg</groupId><artifactId>ffmpeg</artifactId><version>0.6.2</version></dependency>代码 impo…

MongoDB复制(副本)集实战及原理分析

MongoDB复制集 复制集架构 在生产环境中&#xff0c;不建议使用单机版的MongoDB服务器。原因如下&#xff1a; 单机版的MongoDB无法保证可靠性&#xff0c;一旦进程发生故障或是服务器宕机&#xff0c;业务将直接不可用。一旦服务器上的磁盘损坏&#xff0c;数据会直接丢失&…

node.js中跨域请求有几种实现方法

默认情况下&#xff0c;出于安全考虑&#xff0c;浏览器会实施同源策略&#xff0c;阻止网页向不同源的服务器发送请求或接收来自不同源的响应。 同源策略&#xff1a;协议、域名、端口三者必须保持一致 <!DOCTYPE html> <html lang"en"> <head>&l…

无网通信 | 原理分析 / 应用

注&#xff1a;本文为“无网通信”相关几篇文章合辑。 到底什么是 “无网通信”&#xff1f; 原创 小枣君 鲜枣课堂 2024 年 10 月 30 日 18:18 江苏 最近智能手机市场迎来了一波发布热潮&#xff0c;在发布会现场&#xff0c;厂商们展示了令人眼花缭乱的各种参数和概念。其中…

PyQt事件机制及其应用

一、实例前置 一个小闹钟应用 创建主窗口类 首先我们创建了一个名为AlarmClock的类&#xff0c;它继承自QMainWindow。这个类将包含我们的GUI组件和逻辑。 from Alarm_clock import Ui_MainWindowclass AlarmClock(QMainWindow):def __init__(self):super().__init__()# 初始化…

福昕PDF低代码平台

福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具&#xff0c;旨在简化PDF处理和管理的流程。通过这个平台&#xff0c;用户可以通过简单的拖拽界面上的按钮&#xff0c;轻松完成对Cloud API的调用工作流&#xff0c;而无需编写复杂的代码。这使得即使没有编程经验的…

Thonny IDE + MicroPython + ESP32 + 0.96寸OLED(IIC) 显示任意字符

四针脚0.96英寸OLED显示屏模块的具体参数如下表所示。 参数名称 参数特性 分辨率 128x64像素 通信方式 IIC 驱动芯片 SSD1306 屏幕颜色 白色、蓝色或黄蓝双色 元件&#xff1a; 四针脚0.96英寸OLED显示屏模块 ESP32 DEVKIT_C开发板 杜邦线USB Type-C 接线&#xf…

STM32HAL库入门教程——常用外设学习(1)

目录 学习外设前提——学习时钟树 一、时钟树是什么&#xff1f; 二、如何配置时钟树 三、时钟树的组成 3.1.时钟源 3.2.锁相环 PLL 3.3.系统时钟 SYSCLK 3.4.时钟信号输出 MCO 简单创建一个CubeMX工程&#xff08;STMF103常用&#xff09; 一、STM32HAL库开发&#…

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

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

系统思考—决策偏误

决策的质量&#xff0c;决定企业的未来。作为创办人&#xff0c;是不是也遇到过这样的困境&#xff1a;信息太多&#xff0c;团队收到的都是差不多的内容&#xff0c;甚至还有不少误导性的消息&#xff0c;结果一不小心做出了错误决策&#xff1f;尤其是在现在这个瞬息万变的环…

通过U盘启动盘安装Windows10操作系统步骤

主要包括以下几步&#xff1a; 1.U盘格式化&#xff0c;U盘容量要求不小于8G&#xff0c;如下图所示&#xff1a; 2.U盘启动盘制作&#xff1a; (1).进微软官网https://www.microsoft.com/zh-cn/software-download/windows10 下载MediaCreationTool_22H2.exe&#xff0c;以管理…

k8s-容器运行时接口分析

1、为了什么需要 CRI &#xff1f; 在 k8s v1.5 之前&#xff0c;Docker 作为第一代的容器运行时&#xff0c; kubelet 通过内嵌其中的 DockerShim 操作 Docker API 来操作容器。在 Kubernetes 1.5 中引入了 CRI&#xff0c;可以解耦了kubelet与容器运行时&#xff0c;该插件接…

【日常记录-Mybatis】PageHelper导致语句截断

1. 简介 PageHelper是Mybatis-Plus中的一个插件&#xff0c;主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象&#xff0c;并保存到本地线程ThreadLocal中&#xff0c;接下来&#xff0c;PageHelper会进入Mybatis的拦截器环节&#xff0c;…

自回归模型(AR )

最近看到一些模型使用了自回归方法&#xff0c;这里就学习一下整理一下相关内容方便以后查阅。 自回归模型&#xff08;AR &#xff09; 自回归模型&#xff08;AR &#xff09;AR 模型的引入AR 模型的定义参数的估计方法模型阶数选择平稳性与因果性条件自相关与偏自相关函数优…

吉他初学者学习网站搭建系列(9)——如何用coze做一个网站助手

文章目录 背景功能搭建智能体新增工作流效果总结 背景 随着AI大模型的普及&#xff0c;国内也涌现出许多帮助用户更便捷使用大模型的平台。扣子就是其中之一。国内已经有蛮多用户了&#xff0c;我试用了这个平台&#xff0c;来给我的网站搭建一个小助手&#xff0c;效果非常好…

【网络】网络基础知识(协议、mac、ip、套接字)

文章目录 1. 计算机网络的背景2. 认识网络协议2.1 协议分层2.2 OS与网络的关系 3. 网络传输基本流程3.1 局域网通信流程3.2 跨网络通信流程 4. Socket 编程预备4.1 理解源IP地址和目的IP地址4.2 端口号与Socket4.3传输层的典型代表4.4 网络字节序 5. socket 编程接口5.1 介绍5.…

qtcanpool 知 08:Docking

文章目录 前言口味改造后语 前言 很久以前&#xff0c;作者用 Qt 仿照前端 UI 设计了一个 ministack&#xff08;https://gitee.com/icanpool/qtcanpool/blob/release-1.x/src/libs/qcanpool/ministack.h&#xff09; 控件&#xff0c;这个控件可以折叠。部分用户体验后&#…

【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码

目录 一、PyQt5介绍&#xff1a; &#xff08;1&#xff09;PyQt简介&#xff1a; &#xff08;2&#xff09;PyQt API&#xff1a; &#xff08;3&#xff09;支持的环境&#xff1a; &#xff08;4&#xff09;安装&#xff1a; &#xff08;5&#xff09;配置环境变量…

青海摇摇了3天,技术退步明显.......

最近快手上的青海摇招聘活动非常火热&#xff0c;我已经在思考是否备战张诗尧的秋招活动。开个玩笑正片开始&#xff1a; 先说一下自己的情况&#xff0c;大专生&#xff0c;20年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c…

DDD第一话:业务领域分析

业务领域的概念 业务领域定义了公司的主要活动领域&#xff0c;这是公司为客户提供的服务内容。例如&#xff1a;联邦快递提供快递服务&#xff1b;星巴克最出名的是它的咖啡。 子域 为了实现其业务领域的目标和目标&#xff0c;公司必须在多个子领域中操作。子域是业务活动…