当前位置: 首页 > news >正文

2025年江西省职业院校技能大赛高职组“区块链技术应用”任务书(5卷)

2025年江西省职业院校技能大赛高职组“区块链技术应用”赛项赛卷(5卷)


文章目录

  • 2025年江西省职业院校技能大赛高职组“区块链技术应用”赛项赛卷(5卷)
    • 模块一:区块链产品方案设计及系统运维(35分)
      • 任务1-1:区块链产品需求分析与方案设计(10分)
      • 任务1-2:区块链系统部署与运维(15分)
      • 任务1-3:区块链系统测试(10分)
    • 模块二:智能合约开发与测试(30分)
      • 任务2-1:智能合约设计(5分)
      • 任务2-2:智能合约开发(20分)
      • 任务2-3:智能合约测试(5分)
    • 模块三:区块链应用系统开发(30分)
      • 任务3-1:区块链应用前端功能开发(10分)
      • 任务3-2:区块链应用后端功能开发(20分)
    • 区块链技术技能大赛参考答案链接:

背景描述
随着全球对气候变化问题的日益关注,碳交易成为减少温室气体排放的重要手段之一。然而,传统的排放权交易市场存在着信息不透明、交易流程复杂和信任问题。 基于区块链的排放权交易平台的出现解决了这些挑战。以区块链技术为基础,提供了去中心化、透明和安全的碳交易环境。通过区块链的不可篡改性和智能合约的执行能力,排放权交易平台实现了真实性和准确性的确保,减少了中间环节和交易成本。同时,该平台还提供了数据共享和追踪功能,使碳排放数据能够可追溯和验证。基于区块链的碳交易平台的出现,对于推动碳市场的发展和推广低碳经济具有重要意义。 xx 市政府部门计划针对本市企业推出基于区块链的排放权交易平台,指引企业入驻,按照企业类型,碳产生方式核对进行每年的碳额度发放,企业之间可以根据实际生产情况进行碳买卖的同时,通过政府官方发布的碳抵消绿色活动可获得一定比例的碳额度,政府此举在于统一化、透明化管理本市各企业的碳排放情况,同时通过节能减排新星、冠军称号鼓励企业进行节能减排,引进新技术,提高生产效率,降低碳排放。 xx 市政府词推出基于区块链的排放权交易平台,在于推进可持续的碳减排计划,推动碳市场建设与发展。只有这样,才能实现中国碳减排目标,并为全球应对气候变化做出积极的贡献。

在这里插入图片描述

模块一:区块链产品方案设计及系统运维(35分)

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块一提交结果.docx】中对应的任务序号下。

任务1-1:区块链产品需求分析与方案设计(10分)

区块链碳排放权交易平台涉及到政府单位、企业等参与方,他们需要在区块链平台上完成基于不同业务场景下的功能操作,政府单位通过区块链碳交易平台完成年度碳额度制定、监控碳排放量,企业通过区块链碳交易平台买卖碳额度、查看链上的碳排放情况以及参与碳抵消绿色活动等核心业务,通过既定的背景信息,完成需求分析与方案设计,具体要求如下:
1.依据给定的背景信息,对基于区块链的碳交易需求进行分析,要求使用Y模型即需求场景、背后目标、产品功能进行分析;
2. 依据给定的背景信息,对考题进行核心业务分析,使用Visio工具编制系统业务流程图,包含政府单位审核年度碳额度核心业务流程、企业通过交易市场买卖碳额度的核心业务流程、企业参与碳抵消活动的核心业务流程;
3. 依据给定的背景信息,对考题进行核心业务分析,使用Visio工具编制系统业务用例,包含政府单位审核年度碳额度核心业务用例、企业通过交易市场买卖碳额度的核心业务用例、企业参与碳抵消活动的核心业务用例;
4. 结合背景信息,依据你对需求分析、核心业务的理解,使用 Visio 工具编制业务系统的功能结构图,要求区别用户业务系统及管理系统;
5. 结合背景信息,依据你对需求分析、核心业务、功能结构的理解,使用表格编制用户业务系统、管理系统的功能清单,功能清单至少包含序号、功能列表、功能描述等在内的 3 项信息。

任务1-2:区块链系统部署与运维(15分)

围绕区块链排放权交易平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护,具体要求如下:
1.根据参数与端口设置要求,部署区块链系统并验证;
2.根据参数与端口设置要求,部署区块链网络管理平台并验证;
3.基于区块链系统相关管理平台,按照任务指南实施系统运维工作并验证;
4.基于区块链系统相关监管工具,按照任务指南对区块链系统进行监管。

子任务1-2-1: 搭建区块链系统并验证
基于给定服务器环境以及软件(地址“/root/tools”),搭建如下图所示的双机、三机构、二群组、七节点的星形组网拓扑区块链系统。其中,二群组名称分别为group1、group2,三个机构名称为agencyA、agencyB、agencyC。p2p_port、channel_port、jsonrpc_port起始端口分别为30330、20230、8545,确保搭建的区块链系统能正常运行。

在这里插入图片描述
具体工作内容如下:
(1)采用默认配置分别搭建双主机区块链网络;
(2)通过命令分别在M1-A和M1-B上验证区块链节点进程运行状况;
(3)通过命令分别在M1-A和M1-B上验证区块链连接状态和共识状态日志输出。
子任务1-2-2:搭建区块链系统管理平台并验证
基于给定服务器环境以及软件(地址“/root/tools”),搭建区块链控制台并开展相关运维工作,具体工作内容如下:
(1)在M1-A主机上面配置控制台,修改配置信息,使用Console连接agencyB中节点,部署HelloWorld.sol智能合约;
(3)使用控制台完成 HelloWorld.sol智能合约中的 set 与get 方法操作;
(3)使用机器M1-A控制台检查区块链中的当前区块高度以及查看部署合约的交易详情。
子任务1-2-3:区块链节点运维
基于已完成的区块链系统与管理平台搭建工作,开展区块链节点的加入与退出运维工作,具体内容如下:
(1)基于服务器中的扩容工具,在机器(M1-B)上进行新节点(Node7)扩容并加入群组Group1;
(2)使用机器(M1-B)检查扩容完成的区块链节点(Node7)的连接状况以
及新节点在群组(Group1)中的共识状态;
(3)修改配置文件,指定node3输出等级为警告级,并设置日志存储阈值
位50MB。
子任务1-2-4:区块链网络运维
根据任务描述要求,完成网络配置与管理运维操作,具体内容如下:
(1)设置区块链系统黑名单,修改M1-B的node7配置将node3设为黑名单,并通过命令检查;
(2)在M1-A上将区块链网络中群组2的最大交易数量设为3000;
(3)在M1-A上通过控制台检查群组2的区块最大打包交易数量。

任务1-3:区块链系统测试(10分)

设计对区块链系统的测试流程;结合实际业务需求,调用部署的智能合约进行系统测试、性能测试等;根据业务需求,分析并且修复给定智能合约中的安全漏洞。利用模拟业务和测试工具来完成对区块链系统服务数据的测试。
子任务1-3-1:系统测试
在M1-A登录linux服务器,进入指定操作目录(/root/tools)中完成区块链节点管理器的配置部署,并进行节点接口测试,具体操作任务如下:
(1)进入WeBASE-Node-Manager目录,完成数据库初始化操作;
(2)修改application.yml配置文件,进行WeBASE-Node-Manager的服务配置,包括数据库名称,数据库用户,数据库密码等;
(3)使用命令启动WeBASE-Node-Manager管理平台服务,并检查节点管理是否正常启动;
(4)进行节点管理服务的 API 接口测试。
子任务1-3-2:压力测试
参照工程项目(地址:“/root/projects”)使用Caliper测试工具对
使用Caliper测试工具对HelloWorld.sol中set和get功能进行压力测试,具体操作任务如下:
修改testnw/fisco-bcos.json文件,同时指定测试HelloWorld.sol合约文件配置;
(1)配置进行压测的js信息;
(3)提供set功能核心测试代码;
(4)提供get功能核心测试代码;
(5)设置txNumber=100,tps=1,所有测试通过率为100%。

模块二:智能合约开发与测试(30分)

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块二提交结果.docx】中对应的任务序号下。

任务2-1:智能合约设计(5分)

根据区块链碳排放权交易平台应用需求分析和方案设计文档的描述,编写该区块链产品的智能合约功能需求文档,以及设计该智能合约UML图。具体要求如下:
1.根据区块链碳排放权交易平台产品项目背景和需求分析,编写该区块链碳排放权交易产品的智能合约相关功能需求;
2.完成区块链碳排放权交易智能合约的设计图;
设计区块链碳排放权交易智能合约接口,画出区块链碳排放权交易智能合约
的结构图。

任务2-2:智能合约开发(20分)

使用 Solidity 语言进行智能合约开发,根据需求功能介绍在待补充源码中
完成程序接口功能的编码,解决代码错误和警告,正确编译合约,功能调试正确,
并正确进行相关业务功能的验证,具体要求如下:
子任务 2-2-1:企业申请碳排放额度的接口编码
根据需求功能介绍在待补充源码中完成公司申请碳排放额度功能的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)编写企业注册上链接口,完成只有企业的角色可以完成注册,输入企业名称、企业类型、规模等信息,该企业账户地址必须不存在,则可以完成企业信息上链,代码截图保存;

function addCompany(string role_id,string _companyadr,string _companyStr) 选手填写部分  returns(bool){//添加公司账户的角色标号对应的角色只能是公司选手填写部分int8 count = companyStorage.选手填写部分;_log(选手填写部分, "CompanyController addCompany: fail!");emit AddCompanyResult(count);//返回结果return count>0;}

(2)编写企业申请碳排放额度接口,完成只有企业用户可以申请本年度的碳排放额度,并要求该企业本年度只能申请一次,输入企业类型、固定燃料排放量、移动燃料排放量、能源加工转换排放量、工艺排量量等信息,完成申请操作,代码截图保存。

function applyQuota(string role_id,string _applyKey,string _applyStr) 选手填写部分returns(bool){//判断只能是公司账户操作选手填写部分int8 count = companyStorage.选手填写部分;_log(选手填写部分, "CompanyController applyQuota: fail!");emit AddCompanyApplyQuotaResult(count);//返回结果return count>0;}

子任务 2-2-2:政府给企业分配碳排放额度的接口编码
根据需求功能介绍在待补充源码中完成企业给公司发放本年度的碳排放额度功能的编码,解决代码错误和警告,正确编译合约,功能调试正确。
(1)编写计算碳排放量的接口,完成政府根据根据企业类型、不同排放参数乘以对应的碳排放因子,从而计算出公司的本年度总的碳排放量,代码截图保存;

function getQuota(string memory _id) public returns(uint256 quto){(int8 queryCode,string[] memory _json) = 选手填写部分;require(queryCode == 1,"query failed!");string memory company_type=选手填写部分;uint256 solidfuel=选手填写部分(_json[3]);uint256 mobilefuel=选手填写部分(_json[4]);uint256 energyconversion=选手填写部分(_json[5]); uint256 process_discharge=选手填写部分(_json[6]); uint256 quota=0;if(LibString.equal(选手填写部分)){//石油和天然气开采业//排放量*排放因子百分比quota=solidfuel*3+mobilefuel*5+energyconversion*2+process_discharge*1;}else if(LibString.equal(company_type,"002")){//电力、热力的生产和供应业quota=solidfuel*2+mobilefuel*2+energyconversion*2+process_discharge*1;}else if(LibString.equal(company_type,"003")){//煤炭开采和洗选业quota=solidfuel*1+mobilefuel*2+energyconversion*1+process_discharge*1;}return (quota/100);}

(2)编写政府下发排放额度的接口,完成只有政府用户可以下发碳排放额度,并要求从未对该企业本年度下发过排放额度,政府结合国家政策以及公司的排放量,输入下发的额度,完成发放排放额度的操作,代码截图保存。

function grantQuota(string memory _key,string memory _activityStr) public returns(int8){string[] memory fieldList=选手填写部分;//根据公司编号,查询公司信息(int8 queryCode,string[] memory fieldsList1) = 选手填写部分;require(queryCode == 1,"query failed!");uint256 quota=TypeUtil.stringToUint256(选手填写部分);string memory newFields = getChangeFieldsString(选手填写部分);int8 code = updateOneRecord(选手填写部分);require(code>0,"update failed");//修改活动记录为已发放(int8 queryCode1,string[] memory fieldsList2) = selectOneRecordToArray(选手填写部分);require(queryCode1 == 1,"query failed!");newFields = getChangeFieldsString(选手填写部分,"已发放");code=updateOneRecord(选手填写部分);return code;}

任务2-3:智能合约测试(5分)

子任务 2-3-1:基于 Web 前置平台的合约测试
1.解决代码错误和警告,正确编译并部署合约,成功获取部署的合约地址和abi;
2. 调用碳排放权交易智能合约的接口,完整验证业务流程;
3. 通过console控制台查看对应操作的结果。

子任务 2-3-2:智能合约安全漏洞测试。
有如下问题智能合约:

合约一:

pragma solidity ^0.8.11;contract WETH9 {string public name     = "Wrapped Ether";string public symbol   = "WETH";uint8  public decimals = 18;event  Approval(address indexed src, address indexed guy, uint wad);event  Transfer(address indexed src, address indexed dst, uint wad);event  Deposit(address indexed dst, uint wad);event  Withdrawal(address indexed src, uint wad);mapping (address => uint)                       public  balanceOf;mapping (address => mapping (address => uint))  public  allowance;fallback() external { deposit(); }function deposit() public payable {balanceOf[msg.sender] += msg.value;}function withdraw(uint wad) public {require(balanceOf[msg.sender] >= wad);balanceOf[msg.sender] -= wad;payable(msg.sender).transfer(wad);}function totalSupply() public view returns (uint) {return address(this).balance;}function approve(address guy, uint wad) public returns (bool) {allowance[msg.sender][guy] = wad;return true;}function transfer(address dst, uint wad) public returns (bool) {return transferFrom(msg.sender, dst, wad);}function transferFrom(address src, address dst, uint wad)publicreturns (bool)`在这里插入代码片`{require(balanceOf[src] >= wad);if (src != msg.sender && allowance[src][msg.sender] !=type(uint256).max) {require(allowance[src][msg.sender] >= wad);allowance[src][msg.sender] -= wad;}balanceOf[src] -= wad;balanceOf[dst] += wad;return true;}
}

合约二:

// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.11;
import "./WETH9.sol";interface ERC20 {function transferFrom(address, address, uint) external;function transfer(address, uint) external;function balanceOf(address) external view returns (uint);function permit(address,address,uint256,uint,uint,bytes32,bytes32) external;function approve(address,address) external;
}contract Vault{constructor() {}function deposit(address token,uint256 amount) external{ERC20(token).transferFrom(msg.sender,address(this),amount);}function depositwithPermit(address token,address target,uint256 vaule,uint deadline,uint v,bytes32 r, bytes32 s)external {ERC20(token).permit(target,address(this),vaule,deadline,v,r,s);ERC20(token).transferFrom(target,address(this),vaule);}}
contract Setup {WETH9 public weth9;Vault public vault;constructor() payable {uint256 amount = msg.value;weth9 = new WETH9();weth9.deposit{value: amount}();vault = new Vault();weth9.approve(address(vault),type(uint256).max);vault.deposit(address(weth9),amount/2);}function withdraw(address token,address target,uint256 vaule,uint deadline,uint v,bytes32 r, bytes32 s) external {vault.depositwithPermit(token, target, vaule, deadline, v, r, s);}function isSolved() external view returns (bool) {uint256 balance = weth9.balanceOf(address(this));return balance == 0;}
}

(1)分析以上智能合约中存在的漏洞,并说明其可能造成的危害;
(2)编写测试用例,复现智能合约中存在的漏洞;
创建修复后的智能合约,命名为setupRepair.sol,并编写测试用例修复结果,并说明修复内容。

模块三:区块链应用系统开发(30分)

选手完成本模块的任务后,将任务中设计结果、运行代码、运行结果等截图粘贴至客户端桌面【区块链技术应用赛\重命名为工位号\模块三提交结果.docx】中对应的任务序号下。

任务3-1:区块链应用前端功能开发(10分)

任务 3-1-1:碳活动管理接口
使用Vue调用碳活动管理接口,将获取的活动名称、活动开始时间、活动结
束时间、活动名额、活动碳额度等信息传递给前端模板,要求如下:
(1)在 CarbonActivityAdmin.vue 文件中完成功能并按照碳活动管理原型图的长度、宽度、行高、间距、文字样式、颜色等,完成碳活动管理页面的开发,将 Web 页面和代码截图保存;

<el-col :span="23" style="text-align: left"><el-button @click="选手填写部分" type="primary">添加活动</el-button><el-table :data="选手填写部分" class="content" stripe><el-table-columnprop="选手填写部分"label="活动名称"></el-table-column><el-table-columnprop="选手填写部分"label="开始时间"></el-table-column><el-table-columnprop="选手填写部分"label="结束时间"></el-table-column><el-table-columnprop="选手填写部分"label="活动名额"></el-table-column><el-table-columnprop="选手填写部分"label="活动碳额度"></el-table-column><el-table-column label="操作" ><template slot-scope="选手填写部分"><el-buttonsize="mini"type="primary"@click="选手填写部分">活动详情</el-button></template></el-table-column></el-table></el-col>

(2)完成 Vue 调用碳活动管理接口 API,获取接口返回的活动名称、活动开始时间、活动结束时间、活动名额、活动碳额度等信息,填充至 Vue 页面中,完成添加碳活动功能接口,添加成功后刷新页面,将 Web页面和代码截图保存。
在这里插入图片描述

onGrant(index,row){let postData={选手填写部分}console.log(postData);this.axios.post(选手填写部分).then((response) => {if (response.data.code == 200) {alert("发放成功")选手填写部分this.$router.go(选手填写部分);this.选手填写部分()} else {alert(`请求内容有误, ${response.data.data}`);}});},

任务 3-1-2:碳分配管理接口
使用Vue调用碳分配管理接口,将获取的年份、公司编号、公司类型、固定燃料排放量、移动燃料排放量、能源加工转换排放量、工艺、碳额度、状态等信息传递给前端模板,要求如下:
(1)在 CarbonAllocationAdmin.vue 文件中完成功能并按照碳分配管理原型图的长度、宽度、行高、间距、文字样式、颜色等,完成碳分配管理页面的开发,将 Web 页面和代码截图保存;

<el-table :data="选手填写部分" stripe><el-table-column prop="选手填写部分" label="年份" min-width="30%"></el-table-column><el-table-column prop="选手填写部分" label="公司类型" min-width="50%"></el-table-column><el-table-column prop="选手填写部分" label="公司编号" min-width="50%"></el-table-column><el-table-column prop="选手填写部分" label="固定燃料排放量" ></el-table-column><el-table-column prop="选手填写部分" label="移动燃料排放量" ></el-table-column><el-table-column prop="选手填写部分" label="能源加工转换排放量" ></el-table-column><el-table-column prop="选手填写部分" label="工艺排放" ></el-table-column><el-table-column prop="选手填写部分" label="碳额度" ></el-table-column><el-table-column prop="选手填写部分" label="状态" ></el-table-column><el-table-column label="操作" ><template slot-scope="选手填写部分"><el-button size="mini" type="primary" v-if="scope.row.status===选手填写部分" disabled @click="confirm(选手填写部分)">额度分配</el-button><el-button size="mini" type="primary"  v-else @click="confirm(选手填写部分)">额度分配</el-button></template></el-table-column></el-table>

(2)完成 Vue 调用碳分配管理接口 API,获取接口返回的年份、公司编号、公司类型、固定燃料排放量、移动燃料排放量、能源加工转换排放量、工艺、碳额度、状态等信息,设计额度分配按钮,点击该按钮后,计算公司排放量标准额度,同步更新到页面中,填充至 Vue 页面中,将 Web页面和代码截图保存。

confirm(index,row){this.axios.get(选手填写部分).then((response) => {if (response.data.code == 200) {this.allocationData._applyKey=选手填写部分this.allocationData.quota=选手填写部分this.dialogVisible=选手填写部分} else {alert(`请求内容有误, ${response.data.data}`);}});},

任务3-2:区块链应用后端功能开发(20分)

在区块链碳排放权交易平台后端开发中,使用 Java 完成在区块链中实现企业、交易和绿色环保项目的管理,完善MySql 数据库表结构创建、注册公司接口、企业发放碳额度、企业购买交易额度,与前端页面交互,形成完整的区块链碳排放权交易系统。
任务 3-2-1:区块链碳排放权交易数据库设计
(1)根据提供的区块链碳排放权交易数据库脚本文件,完善数据库的创建表语句,截图保存;
(2)打开mysql数据库客户端,并连接数据库,创建carbonTrade数据库,并执行第1步补全的sql脚本,将运行过程截图保存。
任务3-2-2:编写调用公司管理的注册接口
使用 Java 语言完成 register接口调用公司管理智能合约,完成公司的注册接口,通过 fisco sdk与公司管理接口进行交互,并将注册结果标识信息传递给前端模板,要求如下:
(1)接收 Web 端传递的对应实体类参数;
(2)调用service业务层,通过fisco sdk调用智能合约 API,执行注册操作,将注册结果传递给前端页面;
(3)信息上链之后,将获取到的注册信息进行解析,并通过数据库依赖包(mysql-connector-java-bin.jar)存储到数据库中;
(4)使 用 swagger-ui测 试 功 能 完 整 性 , 测 试 参 数 和 结 果 截 图,register接口部分代码截图。

public Result<String> register(CompanyBO registerBO) throws Exception {AssembleTransactionProcessor sdk =sdkUtils.sdk(选手填写部分);JSONArray array = new JSONArray();array.add(选手填写部分);//角色标识array.add(选手填写部分);//公司地址String _companyStr=选手填写部分;
选手填写部分//_companyStr//调用授权合约TransactionResponse transactionResponse =sdk.sendTransactionAndGetResponseByContractLoader(选手填写部分);String message=transactionResponse.getReceiptMessages();if (message.equals("Success")) {//对密码进行加密registerBO.setPassword(选手填写部分);//md5加密密码//写入本地数据库中Integer count= companyMapper.选手填写部分;if (count>0){return Result.success("ok");}else {return Result.error(ResultVO.DATABASE_INSERT);}}else {return Result.error(ResultVO.PARAM_EMPTY);}}

任务3-2-3:编写调用企业管理的额度发放接口
使用 Java 语言完成 auditQuota接口调用企业管理智能合约,完成企业发放额度接口,通过 fisco sdk与企业管理接口进行交互,并将发放额度结果标识信息传递给前端模板,要求如下:
(1)接收 Web 端传递的对应实体类参数;
(2)调用service业务层,通过fisco sdk调用智能合约 API,执行额度发放操作,将发放结果传递给前端页面;
(3)信息上链之后,将获取到的发放信息进行解析,并通过数据库依赖包(mysql-connector-java-bin.jar)存储到数据库中;
(4)使 用 swagger-ui测 试 功 能 完 整 性 , 测 试 参 数 和 结 果 截 图,auditQuota接口部分代码截图。

public Result<String> auditQuota(AuditQuotaBO auditQuotaBO) throws Exception {AssembleTransactionProcessor sdk = sdkUtils.sdk(选手填写部分);JSONArray array = new JSONArray();array.add(选手填写部分);//角色标识array.add(选手填写部分);//keyarray.add(选手填写部分);//调用授权合约TransactionResponse transactionResponse = sdk.sendTransactionAndGetResponseByContractLoader(选手填写部分);String message=transactionResponse.getReceiptMessages();if (message.equals("Success")) {return Result.success("ok");}else {return Result.error(ResultVO.PARAM_EMPTY);}}

职业素养(5分)
1.具有良好的文档写作能力,代码编写规范
2.具有团队合作精神和创新意识

区块链技术技能大赛参考答案链接:

🤵‍♂️ 个人博客主页: @旺仔Sec的博客主页
 
WeChat公众号:鹏璃安全
 
✍🏻 博主身份:网络安全兼技能大赛工程师(NISP、CISP、华为IE、IP、redhat、软考等职业证书报考可找我报考!)
 
🐋 希望大家多多支持,我们一起进步!😄
 
如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注(各大技能大赛参考答案链接如下)
 
🖥️:软件测试技能大赛参考答案
 
🙌:软件测试—单元自动化接口测试参考答案
 
👻:区块链技术应用技能大赛参考答案
 
🚀:大数据应用开发职业院校竞赛答案参阅
 
🔎:GZ100移动应用设计与开发参考答案
 
✍:GZ031应用软件系统开发参考答案
 
☠:网络安全职业技能大赛任务解析

http://www.dtcms.com/a/557808.html

相关文章:

  • docker安装mongo
  • Langgraph研究
  • 企业网站都没的百度快照咋办单位网站建设与管理
  • 【分布式缓存】Redis持久化和集群部署攻略
  • 下载 | Win11 24H2 正式版更新!(ISO映像、多合一版本、26100.7019、Windows 11)
  • 第五章Langchain4j之基于内存和redis实现聊天持久化
  • 微信如何建立网站如何制作营销网站模板下载
  • 做网站图片多少钱推广普通话手抄报一等奖
  • android面试题2
  • AI学习日记——Transformer的架构:编码器与解码器
  • 如何推广自己网站的关键词网络营销方案例文
  • 网站文章收录慢微信小程序制作费用
  • Nginx第三方模块集成:丰富功能实战
  • ms-swift框架微调qwen3-0.6b模型
  • 企业网站架构德阳建设局网站
  • 电子电力技术的准谐振电路和LLC电路相关习题学习记录分享
  • 陕西省档案馆建设网站淘宝客建网站怎么做
  • 2025年江西省职业院校技能大赛高职组“区块链技术应用”任务书(4卷)
  • 大型电商网站开发成本wordpress远程媒体库
  • 聚云测网站怎么做的wordpress博客订单系统
  • Ax=b稀疏线性方程组的解法介绍
  • 深入理解跳表:数据结构解析与应用
  • 买了个域名 如何建网站移动营销型网站建设
  • Windows电脑数据迁移实战:如何无损迁移应用程序与系统设置
  • 专科医院网站建设管理类培训课程
  • 轮询中断 串口实训
  • IO接口介绍
  • 石家庄做物流的网站室内设计方案设计说明
  • rocketMQ-基本使用和原理简介
  • 2025出海品牌系统选型报告:破解业财一体化的隐形鸿沟