Python Flask + ECharts 构建实时比赛排名可视化系统
最近在参与一些算法竞赛时发现很多同学对如何实时、准确地追踪比赛排名并将其可视化展示感到头疼。无论是学校内部的编程比赛还是像“抖火杯”这类公开赛事一个清晰、动态的排行榜不仅能提升参赛体验也是组织者展示比赛进程的关键。本文将以一个模拟的“抖火杯S3积分赛”场景为例手把手带你从零构建一个完整的比赛排名追踪与可视化系统。我们将使用 Python 作为后端处理数据搭配简单的 Web 前端进行展示涵盖数据处理、排名计算、Web 服务搭建和前端图表渲染全流程。无论你是想为自己的比赛项目添加排名功能还是学习数据可视化与 Web 开发的结合这篇文章都能提供一套可直接复用的方案。1. 背景与核心概念为什么需要动态排名系统在算法竞赛、电竞比赛或任何积分制活动中排名系统是核心。一个基础的排名系统需要解决几个问题实时性新的提交或比赛结果产生后排名应能尽快更新。准确性排名规则如积分、解题数、罚时必须被正确无误地计算。可视化枯燥的数据表格不利于观察图表化展示如条形竞赛图能直观反映队伍间的竞争态势。可扩展性系统应能方便地添加新的比赛、队伍或修改排名规则。本文模拟的“抖火杯S3积分赛”就是一个典型场景。我们假设比赛有多支队伍通过多轮积分赛决出名次。我们将构建一个系统后端模拟数据更新前端以动态条形图的形式展示排名变化类似“熊出没队”和“奥特兄弟队”争夺前两名的动态过程。2. 环境准备与版本说明本项目主要使用 Python 作为后端搭配 Flask 框架提供 Web API并使用 Apache ECharts 进行前端图表绘制。前端部分仅使用 HTML 和 JavaScript无需复杂框架。推荐环境与版本操作系统Windows 10/11, macOS, 或 Linux (Ubuntu 20.04)。本文示例在 Windows 11 下开发。Python3.8 或更高版本。这是后端逻辑和 Web 服务的基础。核心 Python 库Flask(2.0.0): 轻量级 Web 框架用于创建 API。pandas(1.3.0): 数据处理与分析库方便进行排序和计算。可选Faker: 用于生成模拟的队名和数据。前端技术HTML5JavaScript (ES6)Apache ECharts (5.4.0): 一个强大的、开源的可视化图表库。IDE/编辑器VS Code, PyCharm 或任何你熟悉的文本编辑器。浏览器Chrome, Firefox 或 Edge 等现代浏览器。版本兼容性说明本文示例代码基于上述版本编写重点在于演示核心思路。如果你的环境版本略有不同核心逻辑通常不受影响但安装依赖时请注意命令差异。3. 核心原理与系统设计拆解在开始编码前我们先理清系统的核心组件和数据流。3.1 系统架构我们的系统将采用前后端分离的简单架构后端 (Python/Flask)维护一个队伍数据的列表内存中或连接数据库。提供一个 API 接口如/api/rank当被请求时计算当前排名并返回 JSON 格式数据。可以模拟一个定时任务或另一个 API 来“更新”队伍积分模拟比赛进程。前端 (HTML/JS/ECharts)一个 HTML 页面包含一个用于显示图表的div容器。使用 JavaScript 定时例如每 3 秒调用后端的/api/rank接口。获取到最新的排名数据后调用 ECharts 的 API 更新条形竞赛图。3.2 排名数据模型每个队伍Team至少包含以下属性name: 队伍名称字符串如“熊出没队”、“奥特兄弟队”。score: 当前总积分数值是排名的核心依据。history_score(可选): 历史积分列表用于绘制趋势图。排名规则很简单按score降序排列。如果积分相同可以引入第二排序键如最后一轮得分时间、队伍ID等本例中我们假设积分不会完全相同以简化逻辑。3.3 ECharts 条形竞赛图ECharts 的“条形竞赛图”本质上是动态排序的条形图。它展示每个数据项在特定维度上的数值并随着数据更新条形长度和位置会动态变化形成你追我赶的竞赛效果非常适合展示实时排名。4. 完整实战案例构建排名追踪系统接下来我们分步骤实现整个系统。4.1 创建项目结构首先创建一个项目文件夹例如competition_rank并在其中创建如下文件和文件夹competition_rank/ ├── app.py # Flask 后端主程序 ├── requirements.txt # Python 依赖列表 ├── static/ # 静态资源文件夹 │ └── js/ │ └── main.js # 前端主要 JavaScript 逻辑 └── templates/ # 模板文件夹 (Flask 默认) └── index.html # 前端主页面4.2 后端开发Flask API 与数据模拟步骤1安装依赖在项目根目录下创建requirements.txt文件内容如下Flask2.3.3 pandas2.0.3然后在终端中进入项目目录运行安装命令pip install -r requirements.txt步骤2编写 Flask 后端 (app.py)app.py将负责初始化队伍数据、提供排名 API 和模拟积分更新。# app.py from flask import Flask, jsonify, render_template import random from datetime import datetime import pandas as pd app Flask(__name__) # 初始化队伍数据 # 在实际应用中这些数据可能来自数据库 teams [ {id: 1, name: 熊出没队, score: 150}, {id: 2, name: 奥特兄弟队, score: 145}, {id: 3, name: 先锋编程者, score: 130}, {id: 4, name: 算法猎人, score: 125}, {id: 5, name: 代码永动机, score: 120}, {id: 6, name: 二进制诗人, score: 110}, {id: 7, name: 深夜调试员, score: 105}, {id: 8, name: 无限循环, score: 95}, ] def calculate_rank(): 计算当前排名 # 使用 pandas 进行排序更高效简洁 df pd.DataFrame(teams) df_sorted df.sort_values(byscore, ascendingFalse).reset_index(dropTrue) df_sorted[rank] df_sorted.index 1 # 添加排名列 # 将 DataFrame 转换回字典列表方便 JSON 序列化 ranked_teams df_sorted.to_dict(records) return ranked_teams app.route(/) def index(): 渲染前端主页面 return render_template(index.html) app.route(/api/rank) def get_rank(): 提供排名数据的 API 接口 ranked_teams calculate_rank() # 返回 JSON 数据包含排名列表和当前时间戳 return jsonify({ success: True, data: ranked_teams, timestamp: datetime.now().strftime(%H:%M:%S) }) app.route(/api/update_score, methods[POST]) def update_score(): 模拟更新分数仅供演示实际应由比赛结果触发 global teams for team in teams: # 为每支队伍随机增加一个小的分数模拟比赛进程 increment random.randint(0, 5) team[score] increment # 重新计算排名 ranked_teams calculate_rank() return jsonify({ success: True, message: 分数已更新, data: ranked_teams }) if __name__ __main__: # debugTrue 仅用于开发环境生产环境必须关闭 app.run(debugTrue, port5000)代码解释我们定义了一个全局的teams列表来存储队伍信息。calculate_rank函数使用pandas库对队伍按积分排序并添加排名序号。/api/rank接口是前端获取数据的关键它返回包含排名、队伍名和积分的 JSON。/api/update_score接口用于手动触发分数更新模拟比赛进行。在实际项目中这个操作应该由判题系统或管理员后台调用。app.run(debugTrue)会在本地启动一个开发服务器访问http://127.0.0.1:5000即可。4.3 前端开发动态排名可视化步骤1编写主页面 (templates/index.html)这个页面负责加载 ECharts 库并定义图表容器。!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title抖火杯S3积分赛 - 实时排名/title !-- 引入 ECharts -- script srchttps://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js/script style body { font-family: Segoe UI, Tahoma, Geneva, Verdana, sans-serif; margin: 20px; background-color: #f5f7fa; } .header { text-align: center; margin-bottom: 30px; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .container { display: flex; flex-direction: column; align-items: center; max-width: 1200px; margin: 0 auto; } #rankChart { width: 100%; height: 600px; background-color: white; border-radius: 10px; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); padding: 20px; box-sizing: border-box; } .controls { margin: 20px 0; } button { padding: 10px 20px; margin: 0 10px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; transition: background-color 0.3s; } button:hover { background-color: #45a049; } #updateBtn { background-color: #008CBA; } #updateBtn:hover { background-color: #007B9A; } .timestamp { margin-top: 15px; color: #666; font-size: 0.9em; } /style /head body div classcontainer div classheader h1 抖火杯S3积分赛 - 实时排名追踪/h1 p数据每 3 秒自动更新 | 最后更新: span idlastUpdateTime--:--:--/span/p /div div classcontrols button idupdateBtn onclickmanualUpdate()手动模拟下一轮比赛/button button onclickresetData()重置为初始数据/button /div !-- 图表容器 -- div idrankChart/div div classtimestamp iddataSourceTip 数据来源后端模拟API | 图表类型动态条形图 (ECharts) /div /div !-- 引入我们自己的JS文件 -- script src{{ url_for(static, filenamejs/main.js) }}/script /body /html步骤2编写前端逻辑 (static/js/main.js)这是实现动态获取数据并更新图表的 JavaScript 核心代码。// static/js/main.js let myChart null; let currentData []; // 初始化 ECharts 实例 function initChart() { const chartDom document.getElementById(rankChart); myChart echarts.init(chartDom); // 初始设置一个空的配置 const option { title: { text: 队伍积分排名, left: center }, tooltip: { trigger: axis, axisPointer: { type: shadow }, formatter: function (params) { // 自定义提示框内容 let tip 排名${params[0].dataIndex 1}br/; tip 队伍${params[0].name}br/; tip 积分b${params[0].value}/b; return tip; } }, grid: { left: 3%, right: 4%, bottom: 3%, containLabel: true }, xAxis: { type: value, name: 积分, axisLabel: { formatter: {value} 分 } }, yAxis: { type: category, data: [], // 初始为空将从API获取 inverse: true, // 让排名第一的显示在最上面 axisLabel: { fontSize: 14, rich: { first: { color: #FFD700, fontWeight: bold }, second: { color: #C0C0C0, fontWeight: bold }, third: { color: #CD7F32, fontWeight: bold } }, // 为前三名添加特殊样式 formatter: function (value, index) { let rank index 1; if (rank 1) { return {first| ${value}}; } else if (rank 2) { return {second| ${value}}; } else if (rank 3) { return {third| ${value}}; } else { return ${rank}. ${value}; } } }, animationDuration: 300, animationDurationUpdate: 300 }, series: [ { name: 积分, type: bar, data: [], // 初始为空 label: { show: true, position: right, formatter: {c} 分 }, itemStyle: { // 根据排名设置渐变色 color: function (params) { const rank params.dataIndex 1; const colorList [ linear-gradient(90deg, #FFD700, #FFEC8B), // 金牌 linear-gradient(90deg, #C0C0C0, #E0E0E0), // 银牌 linear-gradient(90deg, #CD7F32, #E6B87D), // 铜牌 linear-gradient(90deg, #5470c6, #91cc75), // 其他 ]; return rank 3 ? colorList[rank - 1] : colorList[3]; }, borderRadius: [0, 5, 5, 0] }, emphasis: { focus: series }, animationDuration: 1000, animationDurationUpdate: 1000, animationEasing: cubicInOut, } ] }; myChart.setOption(option); // 窗口大小改变时重绘图表 window.addEventListener(resize, function() { myChart.resize(); }); } // 从后端API获取排名数据 function fetchRankData() { fetch(/api/rank) .then(response response.json()) .then(result { if (result.success) { currentData result.data; updateChart(currentData); // 更新页面上的时间戳 document.getElementById(lastUpdateTime).textContent result.timestamp; } else { console.error(获取数据失败:, result.message); } }) .catch(error { console.error(请求出错:, error); document.getElementById(lastUpdateTime).textContent 获取失败; }); } // 用新数据更新图表 function updateChart(rankedTeams) { if (!myChart) return; // 准备图表需要的数据 const teamNames rankedTeams.map(team team.name); const teamScores rankedTeams.map(team team.score); const option { yAxis: { data: teamNames }, series: [{ data: teamScores }] }; // 使用 setOption 更新数据notMerge: false 表示合并选项只更新变化的部分 myChart.setOption(option); } // 手动触发模拟更新调用后端更新接口 function manualUpdate() { fetch(/api/update_score, { method: POST }) .then(response response.json()) .then(result { if (result.success) { alert(已模拟一轮比赛分数已更新); // 更新后立即获取最新排名 fetchRankData(); } }) .catch(error { console.error(更新分数失败:, error); alert(更新失败请检查控制台。); }); } // 重置数据到初始状态前端模拟实际项目需后端接口 function resetData() { if (confirm(确定要重置所有队伍积分到初始状态吗)) { // 在实际项目中这里应该调用一个后端重置接口 // 本例中我们直接重新加载页面Flask会重新初始化数据 window.location.reload(); } } // 页面加载完成后初始化 document.addEventListener(DOMContentLoaded, function() { initChart(); fetchRankData(); // 首次加载数据 // 设置定时器每3秒自动获取一次数据 setInterval(fetchRankData, 3000); });4.4 运行与验证启动后端服务在项目根目录下打开终端运行python app.py如果看到类似* Running on http://127.0.0.1:5000的输出说明服务启动成功。访问前端页面打开浏览器访问http://127.0.0.1:5000。查看效果你应该能看到一个美观的排名条形图。“熊出没队”和“奥特兄弟队”位列前二。图表每3秒会自动从后端获取数据并更新。交互测试点击“手动模拟下一轮比赛”按钮后端会为所有队伍随机增加积分图表会动态更新你可以看到排名可能发生变化。点击“重置为初始数据”按钮页面会刷新数据回到初始状态。4.5 结果说明运行成功后你将拥有一个完整的、本地运行的比赛排名可视化系统。前端页面会动态展示积分条形图并高亮显示前三名。后端 Flask 程序提供了数据接口和模拟更新的功能。这个系统已经具备了核心的实时排名展示能力。5. 常见问题与排查思路在实现和运行上述系统时你可能会遇到以下问题问题现象可能原因解决思路访问http://127.0.0.1:5000报错Not Found或空白页1. Flask 服务未启动。2.index.html文件未放在templates文件夹内。3. 路由app.route(/)定义错误。1. 检查终端是否成功运行python app.py且无报错。2. 确认index.html文件路径为项目根目录/templates/index.html。3. 检查app.py中是否有def index():函数并正确返回render_template(index.html)。浏览器控制台报错Failed to fetch或404(针对/api/rank)1. 后端 API 路由未正确定义。2. 前端 JS 中请求的 URL 错误。3. Flask 服务运行在别的端口。1. 检查app.py中是否有app.route(/api/rank)装饰的函数。2. 检查main.js中fetch(/api/rank)的路径是否正确。3. 确认 Flask 启动的端口默认5000与访问的端口一致。图表不显示或显示异常1. ECharts 库未成功加载。2.initChart()函数在 DOM 未加载完成时被调用。3.myChart变量未正确初始化。1. 检查浏览器网络面板确认echarts.min.js是否加载成功。2. 确保 JS 代码在DOMContentLoaded事件中初始化图表。3. 打开浏览器开发者工具控制台查看是否有 JS 错误。数据不更新1. 前端定时器setInterval未生效。2. 后端数据没有变化模拟更新未触发。3. 前端fetchRankData函数有错误。1. 检查setInterval(fetchRankData, 3000)是否被执行。2. 点击“手动模拟”按钮看后端控制台是否有日志前端是否收到新数据。3. 在fetchRankData函数中添加console.log或使用断点调试。排名计算错误同分未处理排序逻辑未考虑同分情况。修改calculate_rank函数在 Pandas 排序时添加第二排序键例如df.sort_values(by[score, last_submit_time], ascending[False, True])。6. 最佳实践与工程建议将演示系统转化为一个健壮的生产级项目还需要考虑以下几点数据持久化现状当前数据存储在内存变量teams中服务重启后数据会丢失。改进集成数据库如 SQLite轻量、PostgreSQL 或 MySQL。使用 SQLAlchemy 等 ORM 库来管理队伍Team、比赛Contest、提交Submission等实体。后端架构优化API 设计遵循 RESTful 规范设计清晰的资源端点如GET /api/contests/id/teams。异步更新对于频繁的数据更新如实时判题反馈考虑使用 WebSocket如 Flask-SocketIO替代 HTTP 轮询实现真正的实时推送减轻服务器压力。缓存排名计算如果耗时可以引入 Redis 缓存计算结果设置合理的过期时间。前端体验增强平滑动画ECharts 本身动画不错可以调整animationDurationUpdate等参数使排名变化更平滑。更多视图除了总积分榜可以增加“本轮积分变化”、“排名变化趋势图折线图”、“队伍详情页”等。响应式设计确保图表在不同屏幕尺寸手机、平板上都能良好显示。安全与性能输入验证所有后端 API 接口特别是接收数据的POST/PUT接口必须对传入参数进行严格的验证和清理防止 SQL 注入或非法数据。错误处理后端应提供统一的错误响应格式前端应有相应的错误提示如 Toast 消息。生产部署不要使用debugTrue部署生产服务。应使用 Gunicorn、uWSGI 等 WSGI 服务器并配合 Nginx 进行反向代理。可扩展性设计插件化排名规则将排名计算逻辑抽象成独立的函数或类方便未来支持多种赛制如 ACM 赛制、OI 赛制。配置化管理将比赛名称、积分规则、时间等参数抽取到配置文件或数据库表中。7. 总结本文通过构建“抖火杯S3积分赛”排名系统完整演示了如何利用 Python Flask 和 ECharts 实现一个动态数据可视化项目。我们从系统设计、环境搭建、前后端编码到最终运行和问题排查走完了全流程。关键掌握点Flask 基础如何创建 Web 应用、定义路由、返回 JSON 数据。前后端交互前端如何使用fetchAPI 调用后端接口并处理返回的 JSON 数据。ECharts 应用如何配置动态条形图并通过setOption方法更新数据。数据处理使用 Pandas 进行便捷的数据排序和操作。下一步可以尝试将内存数据存储替换为真实的数据库。实现一个管理后台用于手动添加队伍、修改积分。为图表添加更复杂的交互如点击队伍名查看详情。尝试使用 WebSocket 实现排名实时推送取代当前的定时轮询。这个项目麻雀虽小五脏俱全涵盖了 Web 开发中数据流、API 设计和可视化等多个核心环节。你可以基于此框架将其改造成任何需要动态排名展示的场景如直播投票、销售业绩榜、游戏排行榜等。动手实践是学习的最佳途径不妨克隆代码添加你自己的功能吧。如果在实现过程中遇到问题欢迎在评论区交流讨论。

相关新闻

摄影器材海外红人营销:从头部KOL到微型红人矩阵的转型

摄影器材海外红人营销:从头部KOL到微型红人矩阵的转型

1. 项目概述:摄影器材海外红人营销的范式转移三年前当我第一次帮国产三脚架品牌对接YouTube测评博主时,头部KOL的单条视频报价足够买下他们半年的谷歌广告预算。而今天同一个品牌方告诉我,他们最新爆款稳定器的推广策略,是同时启动…

2026/8/11 1:53:50 阅读更多 →
OLAP安全审计:核心挑战与解决方案

OLAP安全审计:核心挑战与解决方案

1. OLAP安全审计的核心挑战与行业背景在金融、电信、政务等强监管领域,OLAP系统每天处理着PB级敏感数据。去年某银行因分析平台权限漏洞导致百万级客户信息泄露的事件,让行业意识到传统数据库审计方案在OLAP场景下的严重不足。与OLTP系统不同&#xff0c…

2026/8/11 1:52:50 阅读更多 →
微信聊天记录永久保存指南:3步导出加密表情包和完整历史

微信聊天记录永久保存指南:3步导出加密表情包和完整历史

微信聊天记录永久保存指南:3步导出加密表情包和完整历史 【免费下载链接】wechat-dump Analyzing your wechat message history from android 项目地址: https://gitcode.com/gh_mirrors/we/wechat-dump 你是否曾为微信聊天记录的丢失而烦恼?那些…

2026/8/11 1:52:50 阅读更多 →

最新新闻

冷热电多微网系统双层优化配置与Matlab实现

冷热电多微网系统双层优化配置与Matlab实现

1. 项目背景与核心挑战在能源互联网快速发展的当下,冷热电联供系统与分布式可再生能源的协同优化成为区域能源管理的重点课题。我去年参与的一个工业园区微电网改造项目就面临这样的典型场景:光伏发电的间歇性导致电负荷波动大,而制冷机组和供…

2026/8/11 2:51:10 阅读更多 →
生态廊道优化:Linkage Mapper与机器学习在景观连接性分析中的应用

生态廊道优化:Linkage Mapper与机器学习在景观连接性分析中的应用

1. 项目概述:当生态网络遇上技术工具链在城市化进程加速的今天,野生动物栖息地正面临前所未有的割裂危机。去年参与某省级生态修复项目时,我们团队用红外相机连续三个月拍摄到的豹猫活动轨迹,清晰地展示出这些精灵们如何在被公路切…

2026/8/11 2:51:10 阅读更多 →
从算法到自我认知:技术时代下的审美标准与个人审美系统构建

从算法到自我认知:技术时代下的审美标准与个人审美系统构建

最近在整理一些关于面部特征和审美偏好的资料时,我反复看到一个说法:“我是标准杏眼,世界最美眼型排名No.1”。这句话很有意思,它不像一个客观的科普结论,更像是一个带着强烈个人认同和网络传播痕迹的标签。它背后反映…

2026/8/11 2:51:10 阅读更多 →
深入解析TCP三次握手与四次挥手:从原理到实战排查

深入解析TCP三次握手与四次挥手:从原理到实战排查

1. 项目概述:为什么我们需要“握手”与“挥手”? 如果你写过网络程序,或者排查过服务器连接问题,大概率见过 Connection refused 、 connect timeout 或者 TIME_WAIT 状态过多这类错误。这些问题的根源,十有八九…

2026/8/11 2:51:10 阅读更多 →
炉石传说HsMod插件:55项功能打造终极游戏体验指南

炉石传说HsMod插件:55项功能打造终极游戏体验指南

炉石传说HsMod插件:55项功能打造终极游戏体验指南 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否厌倦了炉石传说中漫长的等待时间?是否想要个性化你的英雄皮…

2026/8/11 2:51:10 阅读更多 →
Tesseract.js浏览器端OCR实战:原理、集成与避坑指南

Tesseract.js浏览器端OCR实战:原理、集成与避坑指南

1. 为什么要在浏览器里做OCR?一个被忽视的刚需场景 你可能已经习惯了在手机App里拍照识别文字,或者用桌面软件处理扫描件。但有没有遇到过这样的场景:用户在你们公司的网页上上传了一张发票或名片,你希望立刻在网页里把上面的文字…

2026/8/11 2:50:10 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →