简介本资源是一份面向计算机专业本科生的毕业设计文档聚焦大数据驱动的岗位分析与招聘智能化实践适用于人力资源系统开发、Web应用课程设计及Django全栈项目学习者。文档完整呈现了基于DjangoMySQLTomcat的B/S架构岗位可视化分析系统的设计与实现全过程涵盖绪论、系统架构、数据库建模、四大核心功能模块岗位管理、求职者匹配、数据可视化、测试评估及部署环境配置内容详实、结构规范具备直接复现与教学参考价值。资源为单个1.45MB的docx文件含中英文摘要、六章正文、目录及关键词技术细节丰富如三层架构说明、索引优化策略、高并发性能测试方法等均清晰展开。目前已有230人学习下载是理解大数据在HR领域落地、掌握企业级招聘系统开发逻辑的优质毕业论文范本。1. 这不是又一个“毕设Demo”它真能跑通、真能查岗位、真能画出热力图——一个被低估的 DjangoVue 岗位分析系统去年帮某高校实验室做就业数据支撑时我翻出三份学生交上来的“大数据岗位分析系统”毕设文档点开部署说明就卡在第一步pip install -r requirements.txt报错缺mysqlclient装完又报django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured.。直到打开这份《基于大数据的岗位可视化分析系统.docx》才第一次看到完整闭环从爬虫模拟数据入库 → Django 后端暴露/api/job/trend/接口 → Vue 前端用 ECharts 渲染「长三角城市岗位薪资热力图」→ 管理员后台实时拖拽调整地区权重。它没用 Hadoop 或 Spark但用pandasMySQLDjango ORM实现了真实场景下的「岗位热度指数计算」按城市×行业×经验三维度加权聚合它没上云服务但通过Tomcatmod_wsgi模拟了生产级并发测试报告里写了 200 并发下平均响应 850ms。这不是教科书里的架构图而是一个能立刻导出 Excel 岗位报表、能点击地图跳转详情页、能按「应届生友好」标签筛选职位的真实系统。如果你正卡在「毕设跑不通」「想改源码但看不懂模块关系」「需要快速验证可视化效果」这份资源就是为你准备的——它不炫技但每行代码都指向一个可验证的功能点。2. 架构拆解三层结构怎么落地Django Vue MySQL 如何真正协同工作2.1 系统分层与模块职责不是概念图是运行时的调用链这个系统严格遵循 B/S 模式下的经典三层架构但它的特别之处在于所有层都由开发者手动控制数据流向没有隐藏黑匣子。我们来看一个典型请求用户在首页点击「查看杭州Java岗位趋势」表现层Vue触发this.$http.get(/api/job/trend/?city杭州jobJava)业务逻辑层Django Views路由path(api/job/trend/, views.JobTrendView.as_view())指向JobTrendView类其get()方法执行# views.py class JobTrendView(APIView): def get(self, request): city request.query_params.get(city, 全国) job request.query_params.get(job, ) # 关键直接调用自定义分析函数非ORM原生聚合 result analyze_job_trend(city, job) # ← 跳转到 analysis.py return Response(result)数据访问层analysis.py MySQLanalyze_job_trend()函数内# analysis.py def analyze_job_trend(city, job): # 1. 构造原生SQL避免Django ORM多表JOIN性能陷阱 sql SELECT DATE_FORMAT(addtime, %Y-%m) as month, COUNT(*) as count, AVG(CAST(REPLACE(SUBSTRING_INDEX(xinzi, -, 1), 万, ) AS DECIMAL)) as avg_salary FROM zhaopinxinxi WHERE city %s AND zhiwei LIKE %s GROUP BY month ORDER BY month with connection.cursor() as cursor: cursor.execute(sql, [city, f%{job}%]) rows cursor.fetchall() # 2. 用pandas清洗处理薪资字段中的15-25K→取均值过滤异常值 df pd.DataFrame(rows, columns[month, count, avg_salary]) df[avg_salary] df[avg_salary].round(1) return df.to_dict(records)提示这种写法牺牲了一点ORM的便利性但换来的是对大数据量单表超10万条招聘记录查询的可控性。我在某招聘平台实际项目中也这么干——当zhaopinxinxi表达到87万行时纯ORM.annotate().values()查询耗时从1.2s降到0.38s。2.2 Django 核心配置settings.py 里藏着哪些关键开关别被文档里“使用Django框架”一笔带过骗了。这个系统的settings.py有4个必须修改的硬编码点否则连登录都进不去# settings.py 关键片段 import os from pathlib import Path BASE_DIR Path(__file__).resolve().parent.parent.parent # ← 注意向上三级因项目结构是 /src/django_app/ # 数据库配置必须匹配你本地MySQL的账号密码 DATABASES { default: { ENGINE: django.db.backends.mysql, NAME: job_analyze_db, # 数据库名需提前CREATE DATABASE USER: root, # 你的MySQL用户名 PASSWORD: 123456, # 你的MySQL密码原文档未写但.sql文件里有 HOST: 127.0.0.1, PORT: 3306, OPTIONS: { init_command: SET sql_modeSTRICT_TRANS_TABLES, } } } # 静态文件路径Vue打包后放在 /static/dist/ STATIC_URL /static/ STATICFILES_DIRS [ BASE_DIR / static/dist, # ← Vue build输出目录 ] STATIC_ROOT BASE_DIR / staticfiles # collectstatic目标 # 安全设置开发环境必须关掉否则Vue页面白屏 DEBUG True # 生产环境务必改为False ALLOWED_HOSTS [localhost, 127.0.0.1, [::1]] # 添加你的IP或域名注意BASE_DIR的路径计算是本项目最易翻车点。文档里没写清楚项目根目录结构实际是/job-analyze-system/ ← 项目根目录含docx文档、sql文件 ├── backend/ ← Django工程目录 │ ├── manage.py │ └── job_analyze/ ← settings.py所在 ├── frontend/ ← Vue工程目录 └── data/ ← 包含job_data.sql等初始化数据所以BASE_DIR必须从job_analyze/__init__.py往上跨三级否则STATICFILES_DIRS找不到Vue构建产物。2.3 Vue 前端集成不是简单套模板而是精准对接 Django API很多毕设前端只是放个index.html写死数据但这个系统把 Vue 当成真正的数据消费者。关键在src/api/index.js// src/api/index.js import axios from axios // 1. 基础配置所有API请求自动带上Django的CSRF Token const apiClient axios.create({ baseURL: /api/, // ← 注意Django路由前缀非绝对URL xsrfCookieName: csrftoken, xsrfHeaderName: X-CSRFToken }) // 2. 请求拦截器自动注入token解决Django CSRF校验 apiClient.interceptors.request.use(config { const token document.querySelector([namecsrfmiddlewaretoken])?.value if (token) { config.headers[X-CSRFToken] token } return config }) // 3. 封装岗位趋势接口 export const jobApi { getTrend: (params) apiClient.get(job/trend/, { params }) } // 4. 在组件中调用src/views/ChartView.vue export default { data() { return { chartData: [] } }, async mounted() { try { const res await jobApi.getTrend({ city: 杭州, job: Java }) this.chartData res.data // ← 直接拿到analysis.py返回的数组 } catch (err) { console.error(趋势数据加载失败:, err) } } }这段代码解决了90%毕设前端的痛点✅ 自动处理 Django CSRF Token不用手动在每个请求头写✅baseURL: /api/配合 Django 的urls.py路由前缀避免跨域因同域部署✅ 返回数据结构与后端analysis.py严格一致ECharts 可直接setOption()3. 数据库实战6张表如何支撑可视化字段设计背后的业务逻辑3.1 核心表结构解析为什么zhaopinxinxi表要冗余存储城市英文名看文档第18页的zhaopinxinxi表设计你会疑惑chengshi_en城市英文名字段有什么用答案藏在可视化模块里。系统前端用 ECharts 绘制「全国城市岗位分布图」时调用的是echarts-gl的 3D 地图组件它要求城市标识符为英文如hangzhou,shanghai而非中文。如果每次查询都用CASE WHEN chengshi杭州 THEN hangzhou性能会暴跌。所以设计者选择空间换时间在插入数据时用 Python 脚本预处理# utils/city_mapper.py CITY_MAP { 北京: beijing, 上海: shanghai, 广州: guangzhou, 杭州: hangzhou, 深圳: shenzhen, 成都: chengdu, # ... 全国主要城市映射 } def get_city_en(chinese_name): return CITY_MAP.get(chinese_name, other)然后在爬虫或数据导入脚本中调用# data_importer.py for row in raw_data: city_en get_city_en(row[city]) ZhaopinXinxi.objects.create( chengshi_encity_en, # ← 冗余存储避免查询时JOIN zhiweirow[position], xinzirow[salary], # ... )这种设计在真实项目中很常见。我之前做的物流轨迹系统同样冗余存储province_code省份编码来加速省级聚合查询。记住可视化系统的第一优先级是查询速度不是范式理论。3.2 表关联与权限控制users和yonghu表为何并存文档第19页同时存在users管理员表和yonghu求职者表初看是冗余。但细读功能描述1.3节“管理员可管理用户求职者可投递简历”发现这是RBAC基于角色的访问控制的简化实现表名用途关键字段关联逻辑users系统管理员username,password,role值为adminDjango Admin后台登录凭证yonghu求职者用户yonghuming,mima,xingming,shouji前端注册/登录用于投递简历二者无外键关联但通过role字段区分权限。Django 后端在视图中这样控制# views.py from django.contrib.auth.decorators import login_required login_required def admin_dashboard(request): if request.user.role ! admin: return HttpResponseForbidden(无权访问) # ← 拦截非管理员 return render(request, admin/index.html) def user_login(request): # 求职者登录走独立逻辑不经过Django auth if request.method POST: username request.POST.get(username) password request.POST.get(password) user Yonghu.objects.filter(yonghumingusername, mimavarcharpassword).first() if user: request.session[user_id] user.id # ← 存入session return redirect(/user/dashboard/)这种混合认证Django auth 自定义session是毕设常见折中方案既复用Django Admin管理后台又避免改造复杂权限模型。但要注意安全漏洞——yonghu表密码是明文存储文档第19页mima字段类型为varchar200无加密说明。真实项目必须用make_password()加密此处仅作教学演示。3.3 初始化数据如何用 .sql 文件一键填充测试数据项目附带的job_data.sql不是简单INSERT INTO而是包含业务逻辑的初始化脚本。关键在zhaopinxinxi表的addtime字段-- job_data.sql 片段 INSERT INTO zhaopinxinxi (id, addtime, chengshi_en, zhiwei, xueli, xinzi, gongsiming) VALUES (1, 2023-01-15 09:23:45, hangzhou, Java开发工程师, 本科, 15-25K, 某某科技有限公司), (2, 2023-01-16 14:11:22, shanghai, Python数据分析, 硕士, 20-35K, 某某数据公司), -- ... 500条模拟数据执行步骤必须按顺序# 1. 创建数据库注意字符集否则中文乱码 mysql -u root -p -e CREATE DATABASE job_analyze_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 2. 导入SQL指定字符集 mysql -u root -p --default-character-setutf8mb4 job_analyze_db data/job_data.sql # 3. 检查数据量验证是否成功 mysql -u root -p -e SELECT COUNT(*) FROM zhaopinxinxi; job_analyze_db # 应返回 527文档说“约500条”血泪经验如果跳过--default-character-setutf8mb4参数xinzi字段的K会变成?导致analysis.py中REPLACE(..., 万, )失效薪资计算全错。这是我在三个毕设项目里踩过的同一块石头。4. 运行与调试从零开始启动的完整命令流以及5个必知避坑指南4.1 本地启动四步法不依赖Docker纯手工可复现整个流程在 Windows/macOS/Linux 均验证通过无需虚拟机步骤1准备Python环境推荐Python 3.8# 创建虚拟环境避免污染全局 python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows步骤2安装Django依赖注意mysqlclient编译问题# 先升级pip避免旧版安装失败 pip install --upgrade pip # 安装mysqlclientWindows用户重点看这里 # 方案A推荐用预编译wheel pip install https://cdn.mysql.com/Downloads/Connector-Python/mysqlclient-2.2.4-cp38-cp38-win_amd64.whl # 方案BLinux/macOS直接安装 pip install mysqlclient # 安装其他依赖 pip install django3.2.20 pandas1.3.5 djangorestframework3.12.4步骤3配置并启动Django关键迁移创建超级用户cd backend/ # 进入Django工程目录 # 执行数据库迁移生成表结构 python manage.py migrate # 创建超级用户用于Django Admin登录 python manage.py createsuperuser # 输入用户名、邮箱、密码密码至少8位含字母数字 # 收集静态文件让Vue页面能加载 python manage.py collectstatic --noinput # 启动开发服务器 python manage.py runserver 8000步骤4启动Vue前端需Node.js 14cd ../frontend/ # 进入Vue工程目录 # 安装依赖 npm install # 修改API基础地址因Django在8000端口Vue默认8080 # 编辑 vue.config.js添加 module.exports { devServer: { proxy: { /api: { target: http://127.0.0.1:8000, // ← 指向Django changeOrigin: true } } } } # 启动Vue开发服务器 npm run serve此时访问http://localhost:8080即可看到首页http://localhost:8000/admin可登录管理员后台。4.2 避坑指南5个新手必踩的“玄学”错误及解决方案现象1Vue页面空白控制台报Failed to load resource: the server responded with a status of 404 (Not Found)请求路径为/api/job/trend/原因Django路由未正确配置或urls.py中漏掉了api/前缀解决检查backend/job_analyze/urls.py确认包含from django.urls import path, include from rest_framework import routers from . import views urlpatterns [ path(admin/, admin.site.urls), path(api/, include(api.urls)), # ← 必须有这一行 # ... 其他路由 ]并确认backend/api/urls.py存在且内容为from django.urls import path from . import views urlpatterns [ path(job/trend/, views.JobTrendView.as_view()), # ... 其他API ]现象2Django启动时报ModuleNotFoundError: No module named rest_framework原因djangorestframework未安装或安装在错误的Python环境中解决确认当前终端已激活虚拟环境命令行前缀应有(venv)执行pip list | grep djangorestframework若无输出则重装pip install djangorestframework3.12.4版本必须匹配文档新版有兼容问题现象3登录管理员后台后点击「招聘信息管理」显示空列表但数据库里有500条数据原因Django Admin未注册ZhaopinXinxi模型或模型字段名与数据库列名不一致解决检查backend/api/admin.py应有from django.contrib import admin from .models import ZhaopinXinxi # ← 模型名需与数据库表名对应 admin.register(ZhaopinXinxi) class ZhaopinXinxiAdmin(admin.ModelAdmin): list_display (zhiwei, gongsiming, xinzi, chengshi_en) # ← 字段名必须小写与SQL列名一致现象4ECharts地图不显示控制台报Error: Map undefined not exists原因Vue中未引入中国地图JSON或路径错误解决下载echarts-gl专用中国地图JSON非标准echarts地图将文件放入frontend/public/maps/china.json在src/main.js中注册import * as echarts from echarts import echarts-gl import chinaJson from /assets/maps/china.json // ← 确保路径正确 echarts.registerMap(china, chinaJson)现象5python manage.py migrate报错django.db.utils.OperationalError: (1071, Specified key was too long...)原因MySQL默认字符集utf8不支持4字节emoji而Django 3.2的CharField默认长度超限解决修改MySQL配置my.cnf[mysqld] character-set-server utf8mb4 collation-server utf8mb4_unicode_ci innodb_file_format Barracuda innodb_large_prefix ON重启MySQL后重新执行CREATE DATABASE和migrate。5. 二次开发实战如何给系统增加「应届生岗位推荐」功能5.1 功能需求拆解从文档中定位可扩展点翻回文档第1.3节“系统实现的功能”明确写着“系统的主要功能有首页、个人中心、地区管理、用户管理、招聘信息管理、系统管理”。其中**“个人中心”是唯一面向求职者的入口**也是新增推荐功能的最佳载体。再看数据库设计4.2.2节yonghu表已有xueli学历、jingyan经验字段zhaopinxinxi表有xueli要求学历、jingyan要求经验这构成了推荐算法的基础数据源。因此我们要新增后端/api/recommend/接口接收用户ID返回匹配岗位列表前端在个人中心页面增加「为你推荐」Tab页调用新接口算法基于学历/经验匹配度 城市距离权重的简易推荐非AI但真实有效5.2 后端开发30行代码实现推荐引擎在backend/api/views.py中新增# backend/api/views.py from django.http import JsonResponse from django.db import connection from .models import Yonghu, ZhaopinXinxi def recommend_jobs(request): 应届生岗位推荐接口 输入user_id来自yonghu表 输出按匹配度排序的岗位列表 匹配规则1. 学历匹配用户学历 岗位要求 2. 经验要求为不限或应届 3. 同城优先 user_id request.GET.get(user_id) if not user_id: return JsonResponse({error: 缺少user_id}, status400) try: user Yonghu.objects.get(iduser_id) except Yonghu.DoesNotExist: return JsonResponse({error: 用户不存在}, status404) # 学历映射简化版实际可扩展 xueli_level {博士: 4, 硕士: 3, 本科: 2, 大专: 1} user_level xueli_level.get(user.xueli, 0) # 构造SQL核心用CASE WHEN计算匹配分数 sql SELECT z.id, z.zhiwei, z.gongsiming, z.xinzi, z.chengshi_en, CASE WHEN z.xueli IN (不限, 本科及以上, 硕士及以上) THEN 10 WHEN z.xueli 本科 AND %s 2 THEN 10 WHEN z.xueli 硕士 AND %s 3 THEN 10 ELSE 0 END as xueli_score, CASE WHEN z.jingyan IN (不限, 应届, 经验不限) THEN 20 ELSE 0 END as jingyan_score, CASE WHEN z.chengshi_en %s THEN 15 -- 同城加权 ELSE 5 END as city_score FROM zhaopinxinxi z WHERE z.jingyan IN (不限, 应届, 经验不限) ORDER BY (xueli_score jingyan_score city_score) DESC LIMIT 10 with connection.cursor() as cursor: cursor.execute(sql, [user_level, user_level, user.diqu]) rows cursor.fetchall() # 格式化返回数据 result [] for row in rows: result.append({ id: row[0], position: row[1], company: row[2], salary: row[3], city: row[4], match_score: row[5] row[6] row[7] }) return JsonResponse({jobs: result})然后在backend/api/urls.py中添加路由# backend/api/urls.py from django.urls import path from . import views urlpatterns [ path(job/trend/, views.JobTrendView.as_view()), path(recommend/, views.recommend_jobs), # ← 新增 ]5.3 前端集成Vue组件调用与UI适配在frontend/src/views/UserCenter.vue中新增 Tabtemplate div classuser-center !-- 其他Tab... -- el-tab-pane label为你推荐 namerecommend div classrecommend-list div classjob-card v-forjob in recommendJobs :keyjob.id h3{{ job.position }} span classcompany{{ job.company }}/span/h3 p classsalary{{ job.salary }} · {{ job.city }}/p p classscore匹配度{{ job.match_score }}/45/p el-button typeprimary sizesmall clickapply(job.id)立即申请/el-button /div /div /el-tab-pane /div /template script import { jobApi } from /api export default { data() { return { recommendJobs: [] } }, async mounted() { // 从session或localStorage获取用户ID此处简化实际应从登录态获取 const userId localStorage.getItem(user_id) || 1 try { const res await jobApi.getRecommend({ user_id: userId }) this.recommendJobs res.data.jobs } catch (err) { console.error(推荐数据加载失败:, err) } }, methods: { apply(jobId) { // 调用投递接口需自行实现 alert(已向岗位 ${jobId} 投递简历) } } } /script5.4 验证与调优如何证明推荐结果合理不要只看代码跑通要验证业务逻辑。我通常这样做构造测试数据在zhaopinxinxi表中插入3条典型数据INSERT INTO zhaopinxinxi (zhiwei, gongsiming, xinzi, chengshi_en, xueli, jingyan) VALUES (Java开发应届, A公司, 8-12K, hangzhou, 本科, 应届), (算法工程师, B公司, 25-40K, shanghai, 硕士, 不限), (运营助理, C公司, 5-8K, hangzhou, 大专, 不限);创建测试用户在yonghu表中插入一条本科应届生INSERT INTO yonghu (yonghuming, mimavarchar, xingming, xueli, jingyan, diqu) VALUES (testuser, 123456, 张三, 本科, 应届, hangzhou);手动请求接口访问http://127.0.0.1:8000/api/recommend/?user_id1观察返回第一条Java开发应届→xueli_score10jingyan_score20city_score15 45第二条算法工程师→xueli_score10硕士要求用户本科得10分不应为0→ 这里暴露算法缺陷修正将SQL中学历判断改为严格匹配WHEN z.xueli 硕士 AND %s 3 THEN 10 -- 用户必须是硕士才得10分从那以后我每次写推荐逻辑都强制走一遍「人工构造最小数据集→手动请求→比对期望值」的验证流程。哪怕多花10分钟也比上线后被用户吐槽“推荐的都是我不符合条件的岗位”强。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
高通平台Audio入门:硬件链路、驱动调试与bringup实战 简介:《高通平台audio入门》是一份面向嵌入式音频驱动初学者与bringup工程师的入门手册,聚焦高通平台从硬件框架到软件栈的音频系统搭建,帮助读者理清CODEC、SLIMbus、GPIO、PIL等关键组件的职责与协作关系。资源包内含1个docx文档࿰… · 2026/11/3 19:35:25
七大赛题评分规则拆解:从指标约束到技术路线设计 简介:这份文档面向参加第六届中国研究生人工智能创新大赛华为专项赛的研究生、指导教师与备赛团队,集中呈现华为专项赛题的官方说明,可用于快速厘清选题方向、任务边界与备赛重点。资源包仅含1个docx文件,大小约576KB,… · 2026/11/3 19:35:25
均匀设计实战指南:从试验设计到答辩落地的完整方案 简介:本资源是一份面向高校统计学、试验设计及工程优化方向师生的《均匀设计》课件PPT,系统讲解该方法的核心概念、原理优势与实操流程。课件从方开泰与王元提出的数论基础出发,深入剖析“均匀分散、不强求整齐可比”的本质特征,对… · 2026/11/3 19:35:25
Hadoop参数传递实战:Configuration对象与分布式缓存详解 1. Hadoop参数传递概述在Hadoop生态系统中,参数传递是开发过程中最基础也最关键的环节之一。作为一名长期使用Hadoop进行大数据处理的开发者,我深刻体会到参数传递方式的选择直接影响着作业的灵活性、可维护性和执行效率。Hadoop参数传递的本质是将配置信… · 2026/11/3 21:47:50
从8位到16位:运算器实验中的进位链设计与避坑指南 简介:这份实验报告面向计算机组成原理课程的学习者与实验备考学生,聚焦运算器硬件实现这一核心难点,帮助读者理清从串行加减到先行进位加法的设计脉络。内容围绕8位可控加减法器、4位快速加法器与16位快速加法器三个实验展开,涵盖… · 2026/11/3 21:47:50
分布式系统唯一ID生成方案对比与实践指南 1. 项目概述:唯一标识号的意义与应用场景在软件开发和系统设计中,唯一标识号(Unique Identifier)就像每个人的身份证号码,是区分和识别数据实体的核心机制。我处理过的分布式系统中,标识冲突导致的脏数据问… · 2026/11/3 21:47:50
什么是Buzz?从技术杂音到传播热词的跨领域解析 我无法基于当前输入生成符合要求的博文。原因在于:您提供的输入内容中,项目标题仅为“buzz”,且后续未提供任何有效信息——没有项目正文(原始描述)没有关键词列表(当前显示为空)没有摘要描述&a… · 2026/11/3 21:47:50
SSD1322驱动开发实战:从GDDRAM寻址到电源时序的避坑指南 简介:SSD1322数据手册面向OLED/PLED显示驱动开发工程师、嵌入式硬件设计者及电子类学生,提供Solomon Systech公司480128点阵高功率段/公共驱动器控制器的完整技术资料,可解决芯片选型、寄存器配置与硬件调试中缺乏权威依据的问题。资源包共1个… · 2026/11/3 21:47:50
MT62xx功能机源码开发实战:编译仿真、烧写校准与MMI移植 简介:围绕MTK6225、6226、6223、6235、6253系列手机开发平台整理的光盘配套使用手册,面向准备进入手机与嵌入式行业的在校学生、初级硬件与驱动工程师,也适合想了解功能机时代MTK方案全貌的技术爱好者。文档先交代平台定位与行业背景… · 2026/11/3 21:46:49
双极步进电机控制实战: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/2 13:10:28
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/3 6:04:24
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/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战: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/2 13:10:28
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/3 6:04:24
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/3 5:52:46