简介本资源为 Apache Spark 3.2.0 官方二进制发行版Hadoop 3.2 兼容构建面向大数据开发工程师、数据科学家及高校学习者用于快速部署本地或集群环境下的分布式计算平台支撑批处理、实时流计算、SQL分析、机器学习与图计算等全场景实践。压缩包共1476个文件涵盖238个核心jar包运行时依赖、462个PySpark脚本与接口Python生态支持、203个Scala源码便于理解内部机制、135个Java类扩展开发基础及32个shell启动脚本如spark-submit、spark-shell整体大小287.02MB解压即用无需编译。目前已有1130人学习下载资源结构完整包含标准conf配置、examples示例、bin可执行工具链及_common_metadata等元数据文件适合作为Spark入门实操、版本升级验证及Kubernetes/Hadoop 3.2协同部署的可靠基准环境。1. Spark 3.2.0 Hadoop 3.2 预编译包别急着解压先看清这三处兼容玄学你手头刚下载完spark-3.2.0-bin-hadoop3.2.tgz双击解压、配好SPARK_HOME、跑起spark-shell就以为环境齐活了我见过太多人卡在「明明官网下载的预编译包spark-submit却报ClassNotFoundException: org.apache.hadoop.fs.FileSystem」——不是 Spark 装错了是你默认信任了包名里的“hadoop3.2”三个字却没意识到它只代表编译时依赖的 Hadoop API 版本不等于运行时能自动适配你本地的 Hadoop 集群或伪分布式配置。这套组合Spark 3.2.0 Hadoop 3.2是 2021–2023 年高校课程实验、中小型企业离线数仓搭建的主流选择稳定、文档全、生态工具链成熟但也是版本踩坑高发区Hadoop 3.2.x 的hadoop-common和hadoop-client子模块在 3.2.0 到 3.2.4 之间有细微的类签名变更Spark 3.2.0 自身对 Java 11 的支持存在一个未公开的 GC 参数兼容问题而最常被忽略的是——这个 tar 包根本不含 Hadoop 二进制文件也不含 YARN ResourceManager 或 HDFS NameNode它只是个“能跟 Hadoop 3.2 打交道”的 Spark 运行时壳子。适合谁适合想快速启动本地开发调试、对接已有 Hadoop 3.2 集群、或用 Spark SQL 做 ETL 验证的开发者不适合想零配置一键启 HDFSYARNSpark 全栈的纯新手——那得选 Spark Hadoop 合体 Docker 镜像而不是这个.tgz。装之前请先确认你的真实目标是跑通一个spark-shell --master local[*]还是连上生产 Hadoop 集群跑spark-submit --master yarn答案不同后续每一步的参数和检查点都截然不同。2. 下载验证与基础解压校验 SHA-256 是唯一后悔药2.1 官方下载源与校验值获取非镜像站Spark 官网分发页https://spark.apache.org/downloads.html明确标注所有.tgz文件均需通过 Apache 发布签名.asc和 SHA-256 校验码.sha256双重验证。spark-3.2.0-bin-hadoop3.2.tgz的官方发布页 URL 是https://downloads.apache.org/spark/spark-3.2.0/。进入该目录后你会看到三个关键文件spark-3.2.0-bin-hadoop3.2.tgz主包约 280 MBspark-3.2.0-bin-hadoop3.2.tgz.ascPGP 签名文件spark-3.2.0-bin-hadoop3.2.tgz.sha256SHA-256 校验码文本提示切勿使用国内镜像站如清华 TUNA、中科大 USTC直接下载.tgz后跳过校验。镜像站同步延迟可能导致你下到旧版缓存包而.sha256文件未同步造成校验失败误判。务必从downloads.apache.org域名下获取。2.2 本地校验全流程Linux/macOS# 步骤 1下载三个文件到同一目录例如 ~/spark-dl/ cd ~/spark-dl/ curl -O https://downloads.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz curl -O https://downloads.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz.asc curl -O https://downloads.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz.sha256 # 步骤 2导入 Apache Spark 发布密钥首次需执行 gpg --import KEYS # KEYS 文件需从 https://downloads.apache.org/spark/KEYS 下载 # 步骤 3验证签名确认包未被篡改 gpg --verify spark-3.2.0-bin-hadoop3.2.tgz.asc spark-3.2.0-bin-hadoop3.2.tgz # ✅ 成功输出应包含Good signature from Apache Spark devspark.apache.org # 步骤 4校验 SHA-256确认下载完整无损 sha256sum -c spark-3.2.0-bin-hadoop3.2.tgz.sha256 # ✅ 成功输出spark-3.2.0-bin-hadoop3.2.tgz: OK逻辑说明gpg --verify检查的是发布者身份真实性防中间人替换sha256sum -c检查的是文件完整性防网络传输损坏。二者缺一不可。若gpg验证失败说明密钥未正确导入或包被污染若sha256sum失败99% 是下载中断导致文件残缺必须重下。2.3 解压与目录结构初探# 解压到规划目录推荐 /opt/spark 或 ~/spark tar -xzf spark-3.2.0-bin-hadoop3.2.tgz -C /opt/ # 查看核心目录关键注意没有 conf/hadoop/ 子目录 ls -F /opt/spark-3.2.0-bin-hadoop3.2/ # 输出应含bin/ conf/ data/ examples/ jars/ kubernetes/ licenses/ python/ R/ sbin/ yarn/参数说明-C /opt/指定解压根目录避免解压到当前路径造成混乱-xzf中z表示 gzip 解压f指定文件名。解压后你会发现conf/目录下只有spark-defaults.conf.template、spark-env.sh.template、log4j2.properties.template没有core-site.xml、hdfs-site.xml或yarn-site.xml——这印证了前文判断此包不提供 Hadoop 配置它只承诺“能调用 Hadoop 3.2 的 Java API”具体连哪个集群、用什么认证方式全靠你后期注入。3. Java 与 Scala 环境硬性匹配Spark 3.2.0 的 JVM 门槛3.1 必须满足的 Java 版本矩阵Spark 3.2.0 官方文档明确要求仅支持 Java 8 和 Java 11不支持 Java 17且 Java 11 必须为 11.0.14含。这是血泪经验某高校实验室曾用 OpenJDK 11.0.12 启动spark-shell出现java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext——因为 Spark 3.2.0 编译时依赖 JAXBJava EE 模块而 OpenJDK 11.0.12 默认移除了它11.0.14 才重新打包进java.xml.bind模块。验证命令java -version # ✅ 正确输出示例OpenJDK 11.0.20 # openjdk version 11.0.20 2023-07-18 # OpenJDK Runtime Environment (build 11.0.208-post-Ubuntu-0ubuntu122.04.1) # OpenJDK 64-Bit Server VM (build 11.0.208-post-Ubuntu-0ubuntu122.04.1, mixed mode, sharing) # ❌ 错误示例Java 17 # java -version # java version 17.0.8 2023-07-18 # → 启动必报错Unsupported class file major version 613.2 Scala 版本隐性绑定无需单独安装Spark 3.2.0 预编译包已内置 Scala 2.12.15 运行时位于jars/scala-library-2.12.15.jar。这意味着你不需要额外安装 Scala 编译器scalac或sbt你不能用spark-shell直接加载 Scala 2.13 编写的 UDF用户自定义函数会报IncompatibleClassChangeError若需用 Scala IDE如 IntelliJ开发 Spark 应用项目 SDK 必须设为 Scala 2.12.x而非 2.13验证方法# 查看内置 Scala 版本 ls /opt/spark-3.2.0-bin-hadoop3.2/jars/ | grep scala-library # ✅ 输出scala-library-2.12.15.jar # 在 spark-shell 中确认启动后执行 scala scala.util.Properties.versionString // ✅ 输出2.12.153.3 JVM 参数安全基线规避 OOM 与 GC 崩溃Spark 3.2.0 在 Java 11 下默认启用 G1GC但其初始堆配置-Xms过小易触发频繁 GC。建议在conf/spark-env.sh中强制设置# 编辑 /opt/spark-3.2.0-bin-hadoop3.2/conf/spark-env.sh如不存在则复制 template cp /opt/spark-3.2.0-bin-hadoop3.2/conf/spark-env.sh.template /opt/spark-3.2.0-bin-hadoop3.2/conf/spark-env.sh nano /opt/spark-3.2.0-bin-hadoop3.2/conf/spark-env.sh追加以下内容# 设置 Driver 和 Executor 的 JVM 参数关键 export SPARK_DRIVER_JAVA_OPTS-Xms2g -Xmx4g -XX:UseG1GC -XX:MaxGCPauseMillis100 export SPARK_EXECUTOR_JAVA_OPTS-Xms2g -Xmx4g -XX:UseG1GC -XX:MaxGCPauseMillis100 # 强制指定 Java 11 路径避免系统 PATH 混乱 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 # Linux Ubuntu 示例路径 # export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-11.0.20.jdk/Contents/Home # macOS 示例参数说明-Xms2g -Xmx4gDriver/Executor 堆内存设为 2GB 初始、4GB 最大避免动态扩容开销-XX:UseG1GC显式启用 G1 垃圾收集器Spark 3.2.0 对 G1 优化最成熟-XX:MaxGCPauseMillis100G1 目标停顿时间 100ms平衡吞吐与延迟JAVA_HOME必须绝对路径且指向 JDK 11非 JRE否则spark-shell启动报No Java runtime present4. Hadoop 运行时集成三类场景的配置策略4.1 场景一纯本地模式local[*]——零 Hadoop 依赖这是最轻量的启动方式Spark 完全绕过 Hadoop FileSystem API所有数据读写走本地磁盘。适用单机算法验证、IDE 调试、学习 Spark Core RDD 操作。配置要点无需任何 Hadoop 配置文件SPARK_HOME/conf/spark-defaults.conf中只需一行spark.master local[*]启动验证/opt/spark-3.2.0-bin-hadoop3.2/bin/spark-shell --master local[*] scala sc.parallelize(1 to 100).count() // ✅ 输出100注意此时sc.textFile(hdfs://...)或spark.read.parquet(hdfs://...)必报错因无 Hadoop 类加载。4.2 场景二对接现有 Hadoop 3.2 集群——注入 Hadoop 配置这是企业最常见场景。Spark 不自带 HDFS/YARN需将集群的core-site.xml、hdfs-site.xml、yarn-site.xml复制到 Spark 的conf/目录。操作步骤# 假设你的 Hadoop 集群配置在 /etc/hadoop/conf/ sudo cp /etc/hadoop/conf/core-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ sudo cp /etc/hadoop/conf/hdfs-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ sudo cp /etc/hadoop/conf/yarn-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ # 检查 Spark 是否能识别 HDFS URI /opt/spark-3.2.0-bin-hadoop3.2/bin/spark-shell --master local[*] scala spark.read.text(hdfs://namenode:9000/user/test.txt).show() // 替换为你的 namenode 地址关键参数表conf/spark-defaults.conf参数名推荐值说明spark.masteryarn启用 YARN 模式spark.yarn.queuedefault指定 YARN 队列按集群策略调整spark.hadoop.fs.defaultFShdfs://namenode:9000HDFS NameNode 地址必须与core-site.xml中fs.defaultFS一致spark.sql.warehouse.dirhdfs://namenode:9000/user/hive/warehouseHive 数仓路径需 HDFS 上存在且可写4.3 场景三伪分布式 Hadoop单机模拟集群——补全缺失组件若你无现成 Hadoop 集群又需测试 HDFS/YARN 集成可手动部署 Hadoop 3.2.4与 Spark 编译版本严格一致。部署精简步骤# 1. 下载 Hadoop 3.2.4非 3.2.0因 3.2.0 有 RPC 协议 bug wget https://downloads.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz tar -xzf hadoop-3.2.4.tar.gz -C /opt/ # 2. 配置 core-site.xml/opt/hadoop-3.2.4/etc/hadoop/core-site.xml configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property /configuration # 3. 格式化 NameNode 并启动 /opt/hadoop-3.2.4/bin/hdfs namenode -format /opt/hadoop-3.2.4/sbin/start-dfs.sh /opt/hadoop-3.2.4/sbin/start-yarn.sh # 4. 将 Hadoop 配置软链到 Spark conf比复制更易维护 ln -sf /opt/hadoop-3.2.4/etc/hadoop/core-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ ln -sf /opt/hadoop-3.2.4/etc/hadoop/hdfs-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ ln -sf /opt/hadoop-3.2.4/etc/hadoop/yarn-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/5. 常见问题排查五个高频翻车现场与解法5.1 现象spark-shell启动报java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FileSystem原因Spark 3.2.0-bin-hadoop3.2.tgz 包内jars/目录虽含hadoop-client相关 jar如hadoop-client-api-3.2.0.jar但缺少hadoop-common-3.2.0.jar中的FileSystem实现类。根本原因是 Hadoop 3.2.x 的模块拆分策略hadoop-client仅含 APIhadoop-common才含核心实现。解决手动下载hadoop-common-3.2.4.jar必须 3.2.4因 3.2.0 有类加载冲突并放入 Spark jars 目录wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-common/3.2.4/hadoop-common-3.2.4.jar cp hadoop-common-3.2.4.jar /opt/spark-3.2.0-bin-hadoop3.2/jars/5.2 现象spark-submit --master yarn报Application application_XXXXXX failed 2 times due to AM Container for ... exited with exitCode: -1000原因YARN NodeManager 无法定位 Spark 的spark-assemblyjar。Spark 3.2.0 已弃用spark-assembly但某些 YARN 配置仍尝试加载它。解决在conf/spark-defaults.conf中显式指定spark.yarn.archivespark.yarn.archive hdfs://namenode:9000/spark-jars # 提前上传 jars 目录到 HDFS执行上传hdfs dfs -mkdir /spark-jars hdfs dfs -put /opt/spark-3.2.0-bin-hadoop3.2/jars/*.jar /spark-jars/5.3 现象spark-sql启动后执行SHOW DATABASES;报org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient原因Spark SQL 默认尝试连接嵌入式 Derby Hive Metastore但 Derby 不支持并发且 Spark 3.2.0 的 Hive 支持需额外 jar。解决禁用 Hive 支持若不用 Hive或添加 Hive 依赖# 方案1禁用 Hive推荐初学者 echo spark.sql.catalogImplementation in-memory /opt/spark-3.2.0-bin-hadoop3.2/conf/spark-defaults.conf # 方案2启用 Hive需 hive-site.xml hive-exec-3.1.2.jar cp $HIVE_HOME/conf/hive-site.xml /opt/spark-3.2.0-bin-hadoop3.2/conf/ cp $HIVE_HOME/lib/hive-exec-3.1.2.jar /opt/spark-3.2.0-bin-hadoop3.2/jars/5.4 现象spark-shell中sc.textFile(file:///path/to/data)读取成功但sc.textFile(hdfs://...)报java.io.IOException: Failed on local exception: java.io.IOException: Response is null原因Hadoop 配置中fs.defaultFS值与实际 NameNode 地址不一致或防火墙阻断 9000 端口。解决三步诊断hdfs getconf -namenodes确认 NameNode 主机名telnet namenode-host 9000测试端口连通性检查core-site.xml中value是否为hdfs://namenode-host:9000非localhost5.5 现象spark-submit提交后 ApplicationMaster 日志显示Container exited with a non-zero exit code 143原因YARN Container 被 NodeManager 杀死通常因内存超限yarn.nodemanager.vmem-pmem-ratio默认 2.1即虚拟内存超物理内存 2.1 倍即杀。解决在conf/spark-defaults.conf中限制 Executor 内存并放宽比例spark.executor.memory 2g spark.yarn.executor.memoryOverhead 1024 # 同时在 YARN 配置中调大 vmem-pmem-ratio需集群管理员操作 # yarn.nodemanager.vmem-pmem-ratio4.06. 验证跑通从本地 Shell 到 YARN 集群的四层压测法6.1 第一层本地模式基础功能5 分钟闭环目标确认 Spark 运行时、Scala 解释器、本地文件 I/O 全链路正常。# 启动 shell不指定 master默认 local[*] /opt/spark-3.2.0-bin-hadoop3.2/bin/spark-shell # 执行四步验证逐行粘贴观察输出 scala val rdd sc.parallelize(Array(hello, world, spark)) scala rdd.count() // ✅ 应输出3 scala rdd.map(_.length).collect() // ✅ 应输出Array(5, 5, 5) scala spark.sql(SELECT 1 as col).show() // ✅ 应输出表格--- \n|col|\n---\n| 1|\n---提示若spark.sql()报错说明 Spark SQL catalog 初始化失败立即回查conf/spark-defaults.conf中spark.sql.catalogImplementation是否为in-memory。6.2 第二层HDFS 读写能力需 Hadoop 配置就绪目标验证 Spark 能通过 Hadoop FileSystem API 访问 HDFS。# 准备测试数据本地生成上传 HDFS echo -e apple\nbanana\ncherry /tmp/fruits.txt hdfs dfs -put /tmp/fruits.txt /user/test/ # 在 spark-shell 中读取 scala val df spark.read.text(hdfs://namenode:9000/user/test/fruits.txt) scala df.show() // ✅ 应输出三行-------\n| value|\n-------\n| apple|\n| banana|\n|cherry|\n------- # 写回 HDFS覆盖模式 scala df.write.mode(overwrite).parquet(hdfs://namenode:9000/user/test/output) scala spark.read.parquet(hdfs://namenode:9000/user/test/output).count() // ✅ 应输出36.3 第三层YARN 集群调度需 YARN 正常运行目标确认 Spark ApplicationMaster 能在 YARN 上申请资源并运行 Executor。# 提交官方示例计算 Pi触发 YARN 调度 /opt/spark-3.2.0-bin-hadoop3.2/bin/spark-submit \ --master yarn \ --deploy-mode client \ --class org.apache.spark.examples.SparkPi \ /opt/spark-3.2.0-bin-hadoop3.2/examples/jars/spark-examples_2.12-3.2.0.jar \ 10 # 观察输出末尾 # Pi is roughly 3.141592653589793 # ✅ 成功标志 # 同时打开 YARN Web UIhttp://yarn-resourcemanager:8088确认 Application 状态为 FINISHED6.4 第四层SQL on Hive 生产级验证可选但强烈建议目标打通 Spark SQL → Hive Metastore → HDFS 数据湖全链路。# 前提Hive Metastore 服务已启动spark-defaults.conf 已配置 hive-site.xml 路径 # 在 spark-sql CLI 中执行 $ /opt/spark-3.2.0-bin-hadoop3.2/bin/spark-sql spark-sql CREATE DATABASE IF NOT EXISTS test_db; spark-sql USE test_db; spark-sql CREATE TABLE fruits (name STRING) USING PARQUET; spark-sql INSERT INTO fruits VALUES (apple), (banana); spark-sql SELECT COUNT(*) FROM fruits; -- ✅ 输出2 spark-sql SELECT * FROM fruits; -- ✅ 输出两行数据 # 验证数据物理位置HDFS 上应有对应 parquet 文件 hdfs dfs -ls /user/hive/warehouse/test_db.db/fruits/从那以后我每次部署 Spark 预编译包都强制走一遍这四层验证本地 Shell → HDFS 读写 → YARN 调度 → Hive SQL。不是为了炫技而是因为 Spark 的错误日志太黑匣子——ClassNotFoundException可能是 jar 缺失也可能是类加载器隔离Connection refused可能是端口错也可能是 Kerberos 认证失败。只有用这四层真实数据流去冲刷才能把配置中的幽灵参数揪出来。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
单机VT调试器从入门到避坑:VMXON、EPT与内核观测实战 简介:「滴水单机VT调试器」是面向虚拟化环境的专业调试工具,适合排查虚拟机底层问题的软件开发者、系统管理员与安全研究人员,可支撑代码级单步调试、CPU/内存与I/O资源监测、异常故障定位及多平台兼容性验证等场景,专业性强、上手… · 2026/11/6 2:06:33
单机VT调试器实战:VMX/VMCS与EPT断点调试 简介:滴水单机VT调试器面向虚拟化环境下的软件开发者与系统管理员,围绕代码级调试、性能分析、故障排查、兼容性测试和安全观察等场景,帮助读者在正式采用前评估工具的可用性与运行表现。压缩包为rar格式,共143个文件,… · 2026/11/6 2:06:33
GV7704 Linux驱动安装实战:固件路径与内核兼容性避坑指南 简介:本资源为海思Hisi3531A平台专用的gv7704 SDI视频采集驱动源码包,面向嵌入式Linux驱动开发工程师、音视频设备集成商及广电级视频处理系统开发者,解决SDI高清视频信号在国产SoC平台上的稳定接入、参数查询与底层控制问题。压缩包共10个文… · 2026/11/6 2:06:33
C# WinForms 教务系统实战:三层架构、ADO.NET 与选课事务 简介:这份压缩包面向计算机专业课程设计、毕业设计与 C# 桌面开发入门者,提供一套基于 Windows 窗体和 SQL Server 的教务管理示例,覆盖学生信息管理、成绩管理与选课三类业务。系统区分学生与管理员两类角色,管理员可维护管理员及… · 2026/11/6 2:10:36
Web后台弱口令批量检测实战:判定、限速与复核 简介:面向网络安全从业者与渗透测试学习者的Web后台弱口令检测工具WebCrack,以开源免费形式提供,聚焦弱口令与万能密码的批量探测,适用于授权范围内的网站安全审计、漏洞排查及检测原理学习。压缩包共18个文件、约114KB࿰… · 2026/11/6 2:10:36
Git仓库下载实战:协议选型、大仓库克隆与离线搬运 简介:面向需要理解 repository 概念、进行仓库下载与依赖整理的Java和版本控制初学者,这份归档把常见仓库目录与离线依赖集中打包,便于在断网或换机时快速恢复项目环境。压缩包为rar格式,共2000个文件、约324.34MB,以s… · 2026/11/6 2:10:36
基于JSP与Servlet的学生信息管理系统:分层架构与请求链路实战 简介:这是一份面向Java Web初学者与课程实践者的学生信息管理系统完整项目源码,以JSP与Servlet为核心技术栈,配合MVC分层思路实现学生与班级信息的增删改查、登录验证等功能,适合用于课程设计、毕业设计参考或Java Web入门练手。压… · 2026/11/6 2:10:36
C# Winform 调用在线翻译接口实战:异步请求与异常处理 简介:这是一份面向C#初学者与.NET桌面开发爱好者的实用练手项目,提供无需打开浏览器即可完成多语言文本翻译的本地Winform小工具,解决日常查词、翻译时反复切换网页、输入网址的繁琐问题。压缩包共24个文件,约228KB,以… · 2026/11/6 2:10:36
分布式文件系统:从单机瓶颈到多机协同的存储架构解析 简介:分布式文件系统是面向大数据存储与云计算方向学习者的一份轻量级源码实践包,聚焦 FastDHT 分布式哈希表这一典型实现,帮助读者理解数据分片、多节点协同与容错访问的底层机制。压缩包共 86 个文件,约 117KB,以 34… · 2026/11/6 2:09:36
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11
ASIC主模式RTL设计:状态机与三态驱动的流片级实现 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07