版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20XX/XX/XX汇报人:XXX后端接口幂等性设计与实战CONTENTS目录01
幂等性基础概念与重要性02
幂等性问题触发场景分析03
前端与网关层防重策略04
服务端核心解决方案CONTENTS目录05
方案对比与选型指南06
实战案例与代码实现07
最佳实践与避坑指南幂等性基础概念与重要性01接口幂等性核心定义接口幂等性指同一接口使用相同请求参数,被一次或多次调用时,最终产生的业务结果完全一致、不会产生任何副作用,调用1次和调用N次的效果等价。数学概念类比幂等性源于数学概念,满足f(f(x))=f(x)。例如绝对值函数abs(abs(x))=abs(x),体现多次执行与单次执行结果一致的特性。天然幂等操作特性查询操作(SELECT)和删除操作(DELETE)天然具备幂等性。查询多次结果不变,删除多次也是删除成功状态,均无副作用。非幂等操作风险新增类(INSERT)、更新类(UPDATE)等操作非天然幂等。如重复调用创建订单接口可能导致重复下单,扣减库存接口可能导致库存超卖。幂等性定义与数学原理接口幂等与HTTP方法语义HTTP方法的幂等性语义
HTTP标准定义了不同方法的幂等性语义:GET(查询)、PUT(更新)、DELETE(删除)被设计为幂等方法,而POST(创建)通常是非幂等的。GET方法:天然幂等
GET请求用于获取资源,不修改系统状态,多次请求结果一致,如查询用户信息、商品列表等操作。PUT与DELETE方法:设计幂等
PUT通过完整替换资源实现幂等,DELETE通过删除指定资源实现幂等,但需注意业务逻辑实现不得破坏其语义。POST方法:非幂等风险
POST用于创建资源,多次调用可能生成重复数据,如重复下单、重复支付,需通过额外机制保障幂等性。语义与实现的差异
HTTP方法的幂等性是语义层面的承诺,实际业务实现可能破坏幂等性,例如DELETE操作若包含日志记录等副作用,则可能非幂等。幂等性与并发安全的区别核心目标差异幂等性关注多次重复请求对系统状态的影响是否一致,确保重复操作结果相同;并发安全关注多个线程同时操作同一资源时数据的正确性,防止数据错乱。问题场景不同幂等性问题多由重复请求触发,如网络重试、用户重复点击;并发安全问题多由多线程同时读写共享资源引发,如多用户同时抢购同一商品。解决方案侧重幂等性解决方案如Token机制、唯一索引等,旨在识别并拒绝重复请求;并发安全解决方案如悲观锁、乐观锁等,旨在控制资源访问顺序。示例对比支付接口重复调用导致多扣款是幂等性问题;100个用户同时抢购10件商品导致超卖是并发安全问题。两者需独立设计解决方案。幂等性设计的核心原则服务端终极责任原则幂等性保障的终极责任在服务端,前端防重(如按钮置灰)可减少90%重复请求,但无法杜绝抓包重放等绕过前端的场景,服务端必须实现独立校验。无侵入/低侵入优先原则尽量通过通用方案(如拦截器、注解)实现幂等校验,避免业务代码中充斥大量幂等逻辑,降低维护成本,提升代码可读性。一次请求一次生效原则核心思想是让重复请求最终只执行一次核心业务逻辑,通过返回第一次处理结果或拒绝执行重复请求,确保操作的唯一性和结果一致性。原子性校验原则校验是否重复与标记为已处理的操作必须原子化,例如使用Redis的SETNX命令或数据库事务,防止高并发下因校验与标记非原子导致的幂等失效。分层防护多重兜底原则推荐采用“前端防重+网关过滤+业务层校验+数据库兜底”的多层防护体系,即使某一层失效,其他层仍能保障幂等性,单一方案存在风险。性能与可靠性平衡原则高频接口可使用Redis做快速校验,核心金融接口建议“Redis+数据库”双重校验,避免过度设计导致性能下降,兼顾系统响应速度与数据可靠性。幂等性问题触发场景分析02前端重复操作场景
用户误操作导致重复提交用户在填写表单或提交订单时,因操作习惯或界面反馈延迟,快速多次点击提交按钮,导致重复请求发送至后端,可能产生重复数据。
页面刷新与后退引发的重复请求用户在表单提交后未跳转至结果页,直接刷新页面或通过浏览器后退按钮返回原页面再次提交,触发相同请求的重复执行。
网络延迟导致的重复触发网络不稳定时,前端发送请求后未及时收到响应,用户误以为操作未成功,再次发起相同请求,形成重复调用。
移动端卡顿与重复触发移动端设备在弱网环境或性能不足时,可能出现界面卡顿,用户多次点击操作按钮,导致请求被重复发送。网络抖动与超时场景分布式系统中,网络链路长、节点多,易发生网络延迟、丢包等抖动问题,导致请求响应超时。客户端在未收到明确结果时,可能触发重试逻辑,从而产生重复请求。服务调用重试策略微服务框架(如OpenFeign、Dubbo)通常内置超时重试机制,当调用下游服务超时时,会自动发起重试。若接口未做幂等处理,多次重试可能导致业务逻辑重复执行,如重复下单、重复扣款。消息队列重复投递MQ(如RocketMQ、Kafka)因网络异常、ACK机制失效等原因,可能出现消息重复投递。消费者若未对消息进行幂等性校验,重复消费会导致数据重复处理,例如库存重复扣减、订单状态异常更新。网络异常与重试机制消息中间件重复消费重复消费的触发机制消息中间件(如Kafka、RocketMQ、RabbitMQ)因网络异常、消费者宕机、ACK确认超时等原因,会触发消息重复投递机制,导致同一消息被多次消费。典型危害与案例某生鲜平台秒杀活动中,因RabbitMQ消息重复消费,导致库存被多扣327件,引发用户投诉和230万元间接损失,凸显幂等设计的必要性。幂等性解决方案基于消息唯一ID(如MessageID)结合消费记录表实现去重;或采用分布式锁(如Redis/ZooKeeper)确保同一消息仅被处理一次,保障业务一致性。消费端处理策略消费消息前校验消息状态,已处理则直接返回;未处理则执行业务逻辑并记录处理状态,通过原子操作避免并发下的重复处理。定时任务与第三方回调定时任务重复执行场景分布式定时任务多节点执行、任务触发时间异常等情况,可能导致业务逻辑重复处理,如定时对账任务重复执行引发数据不一致。第三方平台回调重复场景支付回调(微信/支付宝)、短信回执、物流推送等第三方平台,会因自身机制多次回调通知接口,如支付网关超时重试导致重复回调。定时任务幂等处理策略为定时任务生成唯一任务ID,执行前检查该ID是否已处理;或采用分布式锁,确保同一任务同一时间仅一个节点执行。第三方回调幂等处理策略利用第三方提供的唯一业务流水号(如支付流水号),结合数据库唯一索引或Redis缓存,校验并拦截重复回调请求。电商支付双扣事件某电商平台618大促期间,支付接口未做幂等处理,因网关超时重试导致372笔订单被重复扣款,直接经济损失186万元,当月活跃用户下降15%。消息重复消费致库存超卖某生鲜平台秒杀活动中,库存扣减接口未实现幂等,消息队列重试机制导致同一条扣减消息被重复消费,多扣327件库存,引发用户投诉,间接损失230万元。表单重复提交数据混乱某银行贷款申请系统因未限制重复提交,导致127名用户生成两份申请记录,3笔贷款被重复审批通过,引发合规风险及监管部门检查。订单重复创建业务异常某订单系统因未对订单号做唯一校验,用户重复点击下单按钮后生成多条重复订单,导致库存超卖、物流混乱,客服处理成本增加300%。不做幂等的业务风险案例前端与网关层防重策略03前端按钮防重复点击实现
01按钮状态控制用户点击提交按钮后,立即将按钮置灰(disabled)或显示“处理中…”状态,禁止重复点击,从交互层面减少误操作。
02防重复提交锁通过JS设置标记位(如isSubmitting),请求发起后标记为true,请求完成(成功/失败)后标记为false,期间重复点击不触发请求。
03防抖与节流对高频触发的请求(如搜索、表单提交)实施防抖(n秒内只执行一次)或节流(n秒内限制执行次数),降低重复请求频率。
04页面跳转与关闭表单提交成功后,立即跳转到结果页,避免用户返回原页面再次提交;或在弹窗提交后关闭弹窗,防止重复操作。PRG模式核心原理PRG(Post/Redirect/Get)模式通过将表单提交(POST)后重定向(Redirect)到结果页(GET),避免用户刷新页面导致的重复提交。浏览器刷新结果页时仅发送GET请求,无副作用。PRG模式实现流程1.用户提交表单(POST请求);2.服务端处理请求后返回302重定向;3.浏览器跳转至结果页(GET请求);4.刷新结果页不会重复提交原始POST请求。表单提交前端优化策略结合PRG模式,前端可实施按钮置灰/禁用、加载动画提示、表单提交状态管理等措施,减少用户误操作导致的重复请求,与PRG形成双重防护。PRG模式适用场景与局限性适用于注册、订单创建等表单提交场景,能有效解决浏览器刷新/后退导致的重复提交。局限性在于无法防止恶意重复请求,需与后端幂等方案配合使用。PRG模式与表单提交优化网关层请求去重配置WAF请求去重策略配置通过WAF控制台"请求控制"模块,选择"按参数去重"策略,指定业务唯一标识(如订单号orderNo)作为去重参数,设置时间窗口(如10秒)拦截短时间内重复请求。Nginx限流配置实现利用Nginx的limit_req/limit_conn模块,配置同一IP对特定接口的请求频率限制,例如通过ngx_http_limit_req_module模块设置每秒请求数阈值,拦截恶意重复请求。请求唯一标识生成规则在网关层生成请求唯一标识,可组合请求IP、接口路径、用户ID及请求参数MD5值,存入Redis并设置短期过期时间(如3-5秒),相同请求在有效期内直接返回"请求处理中"。网关与业务层双重校验网关层作为第一道防线过滤大部分重复请求,业务层结合状态校验(如订单状态为"已支付"直接返回成功)形成双重防护,确保幂等性可靠性。服务端核心解决方案04Token令牌机制设计与实现Token机制核心原理通过生成全局唯一的临时令牌,客户端请求时携带令牌,服务端验证令牌有效性后处理业务并标记令牌为已使用,确保同一请求仅处理一次。标准实现流程1.客户端申请Token:通过GET接口获取UUID令牌并存储于Redis;2.业务请求携带Token:放置于请求头或参数中;3.服务端校验Token:原子性检查并删除Token,存在则处理业务,不存在则拒绝。关键技术要点使用Redis存储Token并设置合理过期时间(如5-30分钟),通过Lua脚本保证Token检查与删除的原子性,防止并发场景下的幂等失效。代码示例(Java)生成Token:Stringtoken=UUID.randomUUID().toString();redisTemplate.opsForValue().set(token,"1",5,TimeUnit.MINUTES);校验Token:使用Lua脚本"ifredis.call('get',KEYS[1])==ARGV[1]thenreturnredis.call('del',KEYS[1])elsereturn0end"。适用场景与优势适用于表单提交、支付请求等高敏感操作,优点是实现简单、无侵入性,可有效防止前端重复提交和网络重试导致的重复请求。数据库唯一索引方案
方案原理利用数据库唯一索引约束,确保相同的业务请求只能成功插入一次数据。当重复请求尝试插入相同数据时,数据库会抛出唯一索引冲突异常,从而阻止重复数据的产生。
适用场景适用于创建类操作,如订单创建、用户注册等需要保证数据唯一性的场景。尤其适合低频到中高频的业务场景,可作为系统防止重复数据的最后一道防线。
实现方式为业务关键字段(如订单号、用户手机号)创建唯一索引。在执行插入操作时,若发生DuplicateKeyException等唯一索引冲突异常,捕获异常并返回成功或相应提示。
优缺点分析优点:实现简单,只需对字段建立唯一索引;可靠性高,基于数据库机制保障。缺点:仅适用于新增操作;高并发场景下可能增加数据库日志开销,异常处理逻辑相对不够优雅。
代码示例ALTERTABLE`order`ADDUNIQUEKEY`un_code`(`code`);捕获DuplicateKeyException和MySQLIntegrityConstraintViolationException异常,处理重复插入情况。乐观锁与版本号控制
乐观锁核心原理乐观锁基于数据版本标识实现,假设并发操作不会冲突,仅在数据提交时检查版本号是否匹配。适用于读多写少、冲突概率低的场景,避免悲观锁的性能损耗。
版本号实现机制在数据表中增加version字段,更新时通过WHERE条件校验版本号。更新成功后版本号自增,确保重复请求因版本不匹配而失败。示例SQL:UPDATEtableSETvalue=newValue,version=version+1WHEREid=#{id}ANDversion=#{oldVersion}。
适用场景与代码示例适用于库存扣减、账户余额更新等更新操作。Java代码示例:先查询获取当前version,执行更新SQL后判断影响行数,若为0则视为重复请求直接返回成功。
优缺点与最佳实践优点:无锁竞争,性能优异;缺点:需额外字段,高冲突场景可能导致重试。最佳实践:结合业务设置合理重试机制,与Redis等缓存配合提升高并发处理能力。分布式锁实现方案
核心实现原理基于Redis或Zookeeper实现跨服务互斥,通过获取锁、执行业务、释放锁的原子操作,确保同一时刻只有一个请求处理业务逻辑。
Redis分布式锁实现利用SETNX命令尝试获取锁,设置合理超时时间防止死锁,操作完成后删除锁。示例伪代码:if(redis.setnx(key,value,expireTime)){try{//处理业务}finally{redis.del(key);}}
适用场景与注意事项适用于高并发写操作场景,需注意锁超时、释放别人锁等问题,建议使用Lua脚本保证原子性操作,避免分布式环境下的锁竞争异常。状态机幂等设计
状态机设计核心原理通过定义业务状态流转规则,确保只有符合规则的状态变更才被允许执行,从而避免重复操作导致的状态混乱。
典型业务状态流转示例订单状态通常遵循"待支付→已支付→已发货→已完成"的单向流转规则,禁止从"已支付"直接回退到"待支付"或重复支付。
实现方式与关键代码在业务处理前检查当前状态,仅当状态符合预期时才执行操作。例如:UPDATEordersSETstatus='已支付'WHEREorder_no='XXX'ANDstatus='待支付'。
适用场景与优势适用于有明确状态生命周期的业务(如订单、审批流程),优点是符合业务逻辑、实现简单且无额外存储开销,天然防止无效状态变更。防重表与请求记录表
防重表的设计与作用防重表是专门用于记录请求唯一标识符的表,通过为业务关键字段(如订单号、用户ID+业务类型)创建唯一索引,确保同一请求仅被处理一次。适用于特定场景下的重复请求拦截,比直接在业务表加唯一索引更灵活。
防重表实现流程客户端发起请求时携带唯一业务ID;服务端先尝试将该ID插入防重表,若插入成功则执行业务逻辑,若失败(唯一索引冲突)则判定为重复请求并直接返回成功。需捕获数据库唯一索引冲突异常(如DuplicateKeyException)。
请求记录表的应用场景请求记录表用于存储已处理请求的唯一标识(如全局请求ID、业务流水号),支持查询历史处理结果。常用于消息队列重复消费、分布式系统重试等场景,通过记录请求状态避免重复处理。
优缺点与最佳实践优点:实现简单,可靠性高,支持业务追溯;缺点:需额外维护表结构,高并发下可能增加数据库压力。建议结合Redis缓存提升查询性能,对核心业务采用“防重表+业务表唯一索引”双重兜底。方案对比与选型指南05各方案适用场景分析01创建操作场景(如订单提交、用户注册)推荐采用唯一索引/约束、Token机制或防重表方案。例如订单创建接口,通过订单号唯一索引或预先生成的Token确保重复请求不会生成重复订单。02更新操作场景(如余额修改、状态变更)适用乐观锁(版本号机制)或状态机方案。例如账户余额更新,通过版本号控制确保并发更新的正确性;订单状态流转通过状态机防止重复支付。03高并发场景(如秒杀、高频交易)优先选择分布式锁(Redis/Zookeeper)或Redis+Token组合方案。例如秒杀系统中,使用Redis分布式锁控制商品库存的原子性扣减,防止超卖。04消息重复消费场景(如MQ消息处理)采用消息唯一ID+消费记录表方案。例如RocketMQ消费消息时,通过MessageID结合数据库唯一索引,确保消息仅被处理一次。05表单提交场景(如用户信息提交)推荐前端防重(按钮置灰)+Token机制组合方案。例如用户注册表单,前端点击后禁用按钮,后端通过Token校验拦截重复提交请求。Token机制性能:中。需额外一次Token获取请求,Redis操作(如Lua脚本原子性检查与删除)耗时约1-5ms。可靠性:高。通过唯一Token与原子操作确保重复请求拦截,但依赖Redis可用性。唯一索引性能:低。直接依赖数据库唯一索引约束,插入冲突时抛出异常,高并发下可能增加数据库日志开销。可靠性:高。数据库层面保证唯一性,是防止重复数据的终极防线之一。乐观锁性能:低。需先查询版本号,再基于版本号更新,两次数据库操作,无锁竞争时性能较好。可靠性:中。高并发下可能存在版本号冲突导致更新失败,需业务层处理重试或返回成功。分布式锁性能:高。通过Redis或Zookeeper实现,加锁解锁操作耗时约2-10ms,但可能引入分布式系统依赖风险。可靠性:中。需合理设置锁超时时间,存在锁超时、释放别人锁等异常场景处理复杂度。状态机性能:低。基于业务状态流转规则判断,仅需查询状态字段,无额外存储开销。可靠性:高。符合业务逻辑,天然避免无效重复操作,如订单状态从“待支付”到“已支付”的不可逆流转。性能与可靠性对比组合方案设计策略
分层防护策略采用"前端防重+网关过滤+业务层校验+数据库兜底"的多层防护体系,即使某一层失效,其他层仍能保障幂等性,如WAF去重+接口状态校验+唯一索引的三重防护。
场景化组合方案普通表单提交采用PRG模式+前端按钮防重复点击;支付/订单创建推荐Token机制+业务唯一ID;高并发场景建议Redis唯一标识符+状态检查,兼顾性能与可靠性。
技术选型组合结合业务场景选择方案,如新增操作常用唯一索引+防重表;更新操作适用乐观锁+状态机;分布式高并发场景采用分布式锁+RedisToken,避免过度设计影响性能。实战案例与代码实现06订单创建接口幂等实现基于唯一业务标识的方案生成全局唯一订单号作为业务幂等标识,在订单表中对订单号字段建立唯一索引。当重复请求尝试插入相同订单号时,数据库会抛出DuplicateKeyException异常,服务端捕获该异常后返回成功,确保仅创建一条订单记录。Token令牌机制实现客户端在创建订单前先请求获取唯一Token并存入Redis,提交订单时携带Token。服务端通过Lua脚本原子性校验并删除Token,若Token存在则处理订单,否则拒绝重复请求。核心代码示例:使用UUID生成Token,结合Redis的SETNX命令实现防重。防重表与状态机结合方案创建专门的订单防重表,记录订单号等关键信息并建立唯一索引。同时设计订单状态流转规则(如待创建→已创建),仅允许符合状态规则的请求执行创建逻辑。例如,已存在“已创建”状态的订单时,直接返回该订单信息。支付回调接口防重设计回调重复请求触发场景支付网关超时重试机制(如500ms无响应自动重试)、网络波动导致的请求重发、分布式系统消息投递异常等,均可能引发支付回调接口重复请求。多层防护策略设计采用"前端/网关过滤+业务层校验+数据库兜底"的分层防护方案。前端/网关层通过按钮置灰、请求去重拦截大部分重复请求;业务层进行订单状态校验;数据库通过唯一索引确保最终数据一致性。WAF请求去重配置利用WAF的"按参数去重"功能,指定订单号作为去重参数,设置10秒时间窗口,拦截短时间内针对同一订单号的重复回调请求,无需代码开发即可拦截80%重复请求。订单状态校验逻辑收到回调请求后,先根据订单号查询数据库订单状态。若订单已处于"已支付"状态,则直接返回成功响应;若订单不存在或状态未支付,再执行正常的更新和插入操作,避免重复处理。数据库唯一索引兜底在支付记录表中为订单号字段添加唯一索引,当重复请求尝试插入相同订单号的支付记录时,数据库会抛出唯一索引冲突异常,应用捕获异常后返回成功,确保数据不会重复插入。库存扣减幂等处理
01库存扣减非幂等风险库存扣减操作若未做幂等处理,在重复请求场景下可能导致库存超卖、数据不一致,如多次扣减同一订单库存,造成实际库存为负的严重后果。
02基于乐观锁的库存扣减通过在库存表添加version字段实现乐观锁。扣减时校验version,更新时version+1,确保只有版本匹配的请求能成功扣减,避免并发重复扣减。示例SQL:UPDATEinventorySETstock=stock-1,version=version+1WHEREproduct_id=#{id}ANDversion=#{oldVersion}ANDstock>=1。
03基于分布式锁的库存扣减使用Redis或Zookeeper实现分布式锁,以商品ID为锁键,确保同一商品同一时间只有一个请求能执行扣减操作。设置合理锁超时时间,避免死锁。伪代码:if(redis.setnx(lockKey,value,expireTime)){try{//扣减库存}finally{redis.del(lockKey);}}
04预扣库存与状态机结合方案订单创建时预扣库存并设置状态(如"待支付"),支付完成后确认扣减,超时未支付则释放库存。通过状态机控制库存流转,防止重复扣减。例如:订单状态从"待支付"→"已支付"时才实际扣减库存,其他状态下重复请求直接返回。分布式事务中的幂等保障
分布式事务的重试特性与幂等需求分布式事务中,TCC、SAGA等模式常涉及补偿与重试机制。若缺乏幂等设计,重试可能导致数据不一致,如重复扣减库存、多次转账等问题,严重影响业务正确性。
基于全局事务ID的幂等控制为每个分布式事务生成唯一全局事务ID,事务参与者通过记录该ID执行状态实现幂等。例如,在事务补偿阶段,通过校验ID是否已处理来避免重复执行补偿逻辑。
TCC模式下的幂等实现策略Try阶段使用业务唯一标识(如订单号)结合唯一索引或分布式锁;Confirm/Cancel阶段通过状态机校验确保操作仅执行一次,如订单状态从"待确认"到"已确认"的不可逆流转。
SAGA模式中的幂等处理实践事件驱动型SAGA通过消息队列传递事件,消费端基于消息ID去重;编排式SAGA中,每个子事务步骤需实现幂等,可采用乐观锁(版本号)或业务流水号确保重复执行安全。最佳实践与避坑指南07幂等设计常见错误过度依赖前端防重仅依赖前端按钮置灰、禁用等措施,忽略抓包重放、绕过前端等恶意请求,导致后端仍面临重复提交风险。幂等校验非原子操作未保证"检查是否重复"与"标记为已处理"的原子性,高并发下出现校验通过后多个请求同时执行业务逻辑,导致幂等失效。错误使用锁机制将用于解决并发安全的悲观锁、乐观锁误认为幂等性解决方案,未从根本上识别和处理重复请求,导致重复操作仍可能发生。唯一标识设计不当幂等号生成规则不唯一(如未包含用户ID或业务场景)、传递过程丢失或被篡改,导致无法准确识别重复请求。单一方案风险仅依赖数据库唯一索引或RedisToken等单一方案,未实现"前端预防+网关过滤+业务层校验+数据库兜底"的多
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衡阳市衡阳县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 黔南布依族苗族自治州龙里县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 沧州市青县2025-2026学年第二学期五年级语文期中考试卷(部编版含答案)
- 德州市陵县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 九江市武宁县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 和田地区洛浦县2025-2026学年第二学期四年级语文期中考试卷(部编版含答案)
- 商业地产策划方案
- 透镜及其应用
- 深度解析(2026)《CB 304-1992法兰铸铁直角安全阀》
- 深度解析(2026)《AQ 3035-2010危险化学品重大危险源安全监控通 用技术规范》
- 猪场 养殖档案管理制度
- 军用通信基础知识
- 2025年498人备考题库国企招聘参考答案详解
- DB34∕T 5192-2025 鲜食甘薯主要病虫害绿色防控技术规程
- DB31∕T 405-2021 集中空调通风系统卫生管理规范
- 老年服务与管理概论
- 银行审计考试题库及答案
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- 离异后孩子照顾协议书
- DB11∕T 1752-2020 乡村民宿服务要求及评定
- 2025全科医师中级考试卷子真题及答案
评论
0/150
提交评论