Postman与Rest-Assured实战:从API调试到自动化接口测试

发布时间:2026/9/8 23:13:34

Postman与Rest-Assured实战:从API调试到自动化接口测试
先说一个我上周真实遇到的场景。同事跑过来一脸笃定我在Postman里调GitLab接口一直报 login failed. check api token or gitlab version是不是服务端把接口改了我把他的环境变量和请求头翻出来一看Authorization头里存着三个月前的Access Token早过期了。换上新Token三秒钟恢复正常。这样的场景几乎每天都在办公室里发生。越是看起来“接口挂了”的报错越要先怀疑自己手上的工具配置。这也是我写这篇文章的原因。Postman和Rest-Assured是接口测试领域最有代表性的两个工具一个图形化适合人肉调试和快速验证一个代码化适合把验证逻辑沉淀成自动化回归用例。搞清楚这两个工具的使用逻辑等于同时掌握了接口测试的“手动挡”和“自动挡”。下面的内容按实际工作流倒着排看到哪一节对号入座即可。1. 为什么接口测试不是“可选项”而是排障的第一只手1.1 Postman负责“此刻”Rest-Assured负责“以后”Postman给人的第一印象是“发请求、看响应”的工具但它的价值远不止这点。对于后端开发、前端开发、测试和运维来说Postman提供了一个共同的探针在接口还没有页面的时候用它可以提前验证一个URL、一组参数、一套鉴权是否能得到预期结果。它的核心价值是快没有编译、没有构建打开就能发请求非常适合探索式调试。而Rest-Assured是Java生态里非常成熟的接口测试库。它没有界面一切通过写代码完成。你可以在里面构造请求、发送请求、断言响应、提取数据最终由Maven或TestNG批量执行。这种形式适合接口测试的可持续化代码进入仓库经历评审进入CI流水线每天自动跑出问题还能通过报告定位到具体接口和断言。打个比方Postman像修车时的万用表你拿着它现场测电压、查断点Rest-Assured像汽车出厂前的下线检测线车型、参数、标准都在程序里写好了每辆车过一遍自动打勾或报警。一个用来“此刻”一个用来“以后”两者根本不是竞争关系。1.2 大多数团队的三个演进阶段根据我接触过的团队经验接口测试能力的建设基本都要经历三个阶段。第一阶段是原始期。前后端联调之前后端把接口文档往群里一扔开发自己对着文档在浏览器开发者工具里手动发请求验证完就完事没有任何沉淀。接口一多容易记混前端今天调不通、明天调不通天天在群里排查。第二阶段是规范期。团队开始用Postman建立集合每个业务模块一个集合域名、版本号、鉴权信息都放进环境变量。这时候的Postman集合已经可以当“活的接口文档”来用了——不仅能看到有哪些接口还能直接发请求验证。第三阶段是自动化期。核心链路的接口用Rest-Assured写成自动化用例由CI驱动定期执行。接口回归从“人肉点点点”变成“一条命令跑完几百个用例”。这三个阶段不一定严格递进小团队可以停在第二阶段项目复杂度上来了再推第三阶段。贸然跳过第二阶段直接上自动化反而容易写出一堆脆弱脚本。这几年还有一个新变化大模型API大量出现。DeepSeek、智谱、讯飞星火的接口都符合REST风格无非是鉴权Header加上JSON请求体。用Postman调试这类接口思路和调试普通业务接口一模一样这也是我觉得每个人都值得把接口测试工具用熟的原因之一。2. Postman上手环境变量、集合、认证一次捋清楚2.1 四种变量、一个优先级今天记牢Postman里最容易被忽略但最值钱的是变量体系。很多人把请求URL写死等到环境切换就傻眼。Postman的变量共分四类全局变量、环境变量、集合变量、局部变量另外还有运行集合时通过数据文件传入的数据变量。下面这张表来自我的日常整理基本覆盖了90%的使用场景变量类型作用范围典型用途全局变量整个工作区所有请求组织名、通用Token等极少变化的内容环境变量指定环境dev/test/prodbaseURL、数据库地址、当前环境专属密钥集合变量所属集合内的所有请求业务模块共享的版本号、固定的请求头值局部变量当前脚本所在的请求Pre-request Script或Tests里的临时计算结果数据变量集合运行时按数据文件逐行注入CSV或JSON参数化数据优先级从高到低是局部变量 数据变量 环境变量 集合变量 全局变量。也就是说同一变量名在不同层级都存在时范围越小越优先。建议的用法是全局变量只放跨环境的“常量”环境变量放各环境差异值集合变量放业务公共值。很多新手把baseURL同时放在环境变量和全局变量里改全局的不生效还以为是软件bug——其实就是被环境变量盖住了这是优先级规则最常见的现场。2.2 动态Token和登录态别靠手动复制实际业务接口十有八九要鉴权而用Postman做接口测试时最烦的就是Token处理。Token会过期手动复制粘贴不仅慢还容易漏。更稳的做法是让Postman在请求生命周期中自动处理。思路很简单登录接口返回的响应里往往携带Token在Tests脚本里用pm.environment.set()把Token写入环境变量后续请求只要在Header中引用{{authToken}}即可。下面这个脚本示例是目前最常见的写法// 假设登录接口响应是 { code: 0, data: { token: xxx } } const json pm.response.json(); if (json.code 0 json.data json.data.token) { pm.environment.set(authToken, json.data.token); } else { // 登录没成功就不要往下跑了直接断言失败 pm.expect.fail(login response has no token); }拿到Token后新建请求时在Authorization标签页选择Bearer Token类型值填{{authToken}}。这样整条业务链路的请求就都能自动携带最新Token再也不用手动更新。同理Pre-request Script里也可以在请求发送前主动拉取新Token适合Token时效很短、必须每次重新获取的场景。两者的区别是Tests脚本在响应返回后执行适合从响应里提取值Pre-request Script在请求发送前执行适合先准备好数据再发请求。2.3 复现login failed类报错的完整排查链路回到开头的案例。“login failed. check api token or gitlab version. log in via git if the version...”这个报错信息其实非常良心把检查项写在明面上了API Token和GitLab版本。我的排查顺序是固定的打开Postman ConsoleView菜单 → Show Postman Console发一次请求看实际发出的URL、Headers和Body长什么样。这一步能立刻发现变量替换后的真实地址和Token。核对Token有效期。GitLab的Personal Access Token通常有明确的过期时间过期之后无论接口路径多正确都会认证失败。核对接口路径和请求方法。GitLab新老版本对某些接口的路径支持有差异版本不同API行为也不同。把同一个请求复制成cURL在命令行里跑一遍。这一步用来排除Postman自身脚本或环境变量带来的干扰。都排除完了再怀疑服务端。这条链路对任何“认证失败”报错都适用。我见过太多人一遇到报错就把截图丢给后端结果排查半天发现是自己环境变量里存了个过期Token。接口测试工具越熟练这种低级沟通成本就越低。3. 高频卡点导入cURL、传Map参数、导出接口文件、安装与汉化3.1 从浏览器复制cURL解决“浏览器里好使Postman里不行”“为什么同样的请求在浏览器里好使拿到Postman里就报错”是让人最抓狂的问题之一。其实Postman有个很实用的功能导入cURL。以Chrome为例操作就三步打开开发者工具F12切到Network面板找到目标请求鼠标右键 → Copy → Copy as cURLbash在Postman里点Import → Raw text粘贴进去点击Continue。Postman会把URL、Method、Headers、Body、Cookie全部解析成可编辑的请求项。这么做最大的好处是完整保留了浏览器里的上下文不会因为漏掉某个Header导致请求行为不一致。排查“浏览器能通、Postman不同”时先导入cURL再逐个删减Header出问题的那个Header也就找到了。这是标准的二分法思路在接口排障里非常好用。3.2 传Map/嵌套参数的正确姿势Postman传参是新手踩坑重灾区。很多人习惯选择form-data然后手写一堆类似items[0][sku]的key。这种写法在服务端用RequestParam接收时还能用一旦接口定义的是JSON对象就很容易出问题。我的建议非常简单只要接口Content-Type是application/json就直接用raw格式写JSON。举个例子假设订单接口接收这样一个嵌套结构{ orderId: A001, customer: { name: 张三, level: VIP }, items: [ { sku: APPLE-001, count: 2 }, { sku: BANANA-002, count: 5 } ] }这种结构在Postman的raw选项卡里直接粘贴服务端用Spring Boot时一个RequestBody OrderDTO就能完整映射哪怕DTO里字段是Map或List也能正确处理。如果接口文档只给了字段说明没有给示例也可以先用raw JSON写一个通用模板再把必填字段填上。顺便说一句很多搜索引擎里“postman 传参map”相关的问题本质都是在问“Java接口的Map参数怎么传”。服务端如果写成RequestBody MapString, Object那客户端在Postman里发的就必须是合法JSON对象而不是form表单格式。想清楚服务端用什么接收客户端就知道该怎么发。3.3 导出接口文件、Collection Runner与团队协作Postman集合可以导出为JSON文件也可以从OpenAPISwagger规范文件导入生成集合。导出的JSON可以在不同人之间传递也能提交到代码仓库作为接口基线文件。具体操作导出在集合上右键 → Export → 选择Collection v2.1 → 保存为json文件导入Import → 选择OpenAPI/YAML/JSON文件Postman会自动生成请求集合。团队协作建议用Postman的Workspace功能或者干脆把导出的集合文件放在Git里管理。后者更适合有代码评审习惯的团队任何接口变更都能在diff里看到。另外Postman的Collection Runner支持数据文件参数化。运行集合时绑定一个CSV或JSON文件Postman会用文件里的每一行数据执行一遍集合中的请求。我之前做全量账号扫描测试就是靠这个功能用几百组数据对同一个接口做参数化验证效率比手填快得多。3.4 汉化、在线版与安装包的取舍Postman官方界面默认是英文。网上流传的汉化版原理是替换安装目录下的语言资源文件本身不算复杂但有三个实际问题版本更新频繁汉化包跟不上升级后界面乱码或者变回英文非官方渠道下载的安装包有被注入脚本或广告的风险“免登录版本”这类打包产物来源不明安全上完全不建议在生产开发环境使用。我的个人建议是直接用官方安装包英文界面常用词不超过50个用一周就熟了。偶尔查不到功能菜单时打开Postman的搜索框输入英文关键词反而比中文界面更好搜。Postman还提供Web版Postman Web在线也能创建集合和发请求。不过在线版对网络环境有一定要求本地接口调试时更推荐桌面版跨域和代理相关的问题会少一些。4. 别被HTTP状态码吓住400、410、503的真实含义与排查思路4.1 400 Bad Request先检查请求体本身400表示服务器读不懂或无法处理这份请求绝大多数情况是参数问题不是服务器坏了。常见原因就三种JSON格式非法、必填字段缺失或类型不对、Content-Type与请求体不匹配。现在大模型API用得多了还经常见到一种特别的400报错。比如“api error: 400 this models maximum context length is ... tokens. however...”意思是你提交给模型的上下文已经超过该模型支持的窗口上限。这时候要做的不是反复重试而是精简消息列表、检查是否塞入了过长的历史记录、调低max_tokens参数或者换一个上下文窗口更大的模型。类似的DeepSeek、智谱、讯飞星火这些国产大模型接口在Postman里调试时出现400基本都是以下三个原因之一模型名写错、鉴权信息有误但被网关统一包装成400、请求体的messages格式与标准格式不一致。把响应体展开成JSON格式逐字段对照官方文档很快能定位。4.2 410 Gone接口下线了别再用旧地址410常被误解为“404的一种”两者有本质区别。404是“这里没有资源”410是“这里以前有资源现在永久没了”。比如你还在调用一个已经停止服务的旧API地址就会收到类似“unexpected status 410 gone: xxx access has been retired”的提示。这种报错最常见的来源是团队里有人把某个第三方服务的地址配置在代码或环境变量里服务商后来换了域名或彻底下线但配置文件没有同步更新。我建议遇到410时做一次全局搜索把代码、配置文件、CI脚本、文档里的旧endpoint全部替换成新地址只改一处的话过几天还会再冒出来。4.3 503 Server Overloaded服务端过载时的正确配合姿势503表示服务端暂时扛不住了或正在维护。虽然是服务端的问题但调用方依然可以通过合理设计来减少影响。正确做法有三条设置超时时间避免请求无限等待耗尽连接池使用指数退避重试比如第1次失败后等1秒第2次等2秒第3次等4秒重试上限建议不超过5次对503单独做监控和告警与真正的业务异常区分开。我见过不少团队一收到503就疯狂手动重试结果服务端本来在恢复中又被重试请求压垮。配合退避策略才是对服务端的保护也是对自己业务连续性的负责。4.4 客户端平台层API另一个“API”世界还有一类报错会让人困惑例如“chooseimage:fail api scope is not declared in the privacy agreement”。这根本不是HTTP层面的错误而是小程序平台在调用本地能力前的隐私协议校验没通过。处理方式是登录小程序管理后台在隐私保护指引中补充对应API的收集信息声明。这提醒我们“API”这个词在不同语境下含义不同。小程序里的API、Android开发里的target API level、Unity工程里的Minimum API Level指的都是SDK或平台规范而Postman和Rest-Assured测试的是HTTP API。调试服务器接口时别一看到“API”报错就往网络请求上联想先把范围界定清楚。5. Rest-Assured实战把接口测试沉淀成自动化资产5.1 引入依赖先跑通一个GET请求在Java项目里引入Rest-Assured非常简单。如果是Maven项目在pom.xml中添加如下依赖dependency groupIdio.rest-assured/groupId artifactIdrest-assured/artifactId version5.4.0/version scopetest/scope /dependency dependency groupIdorg.testng/groupId artifactIdtestng/artifactId version7.8.0/version scopetest/scope /dependency然后写第一个测试方法import io.restassured.RestAssured; import io.restassured.http.ContentType; import static org.hamcrest.Matchers.*; public class UserApiTest { org.testng.annotations.BeforeClass public void setUp() { RestAssured.baseURI http://localhost:8080; } org.testng.annotations.Test public void testCreateUser() { given() .contentType(ContentType.JSON) .body({\name\:\tom\,\age\:20}) .when() .post(/api/users) .then() .statusCode(200) .body(code, equalTo(0)) .body(data.id, notNullValue()); } }given().when().then()三段式是Rest-Assured最核心的语法given定义前置条件when发出请求then对响应做断言。写出来像一句人话后期维护起来也很直观。需要说明的是接口地址、测试数据这类内容不建议硬编码在测试代码里。可以把baseURI放到配置文件通过环境变量注入保证同一套用例在dev、test环境都能跑。这也是我倾向于把Rest-Assured用例放进项目工程的原因它可以共享项目里的配置管理和依赖管理。5.2 断言三层状态码、业务字段、响应时间接口测试的断言不能只停留在“响应不报错”的层面。我在实际项目里把断言分成三层第一层是HTTP状态码。它只说明请求被处理了不代表业务成功。 第二层是业务字段。比如响应里的code是否为0data里是否包含主键列表长度是否符合预期。 第三层是性能边界。针对关键接口可以断言响应时间比如下单接口必须3秒内返回。Rest-Assured配合Hamcrest可以一次性写出这些断言given() .contentType(ContentType.JSON) .body({\keyword\:\手机\}) .when() .get(/api/search) .then() .statusCode(200) .body(code, equalTo(0)) .body(data.items.size(), greaterThan(0)) .body(data.items[0].name, containsString(手机)) .time(lessThan(3000L));其中time(lessThan(3000L))就是响应时间断言单位是毫秒。加这一行的价值在于接口哪怕业务结果正确但如果慢到用户无法接受自动化用例也能替你把问题提前拦下来。5.3 登录Token的提取与复用大多数接口需要先登录。Rest-Assured处理登录态的标准做法是先调用登录接口用extract()从响应中提取Token再把它塞进后续请求的Header。String token given() .contentType(ContentType.JSON) .body({\username\:\admin\,\password\:\123456\}) .when() .post(/api/login) .then() .statusCode(200) .extract() .path(data.token);拿到Token后可以通过一个RequestSpecification把公共Header抽出来所有用例复用RequestSpecification spec given() .header(Authorization, Bearer token) .contentType(ContentType.JSON); // 后续请求 given().spec(spec) .body({\orderId\:\A001\}) .when() .post(/api/order) .then() .statusCode(200);我建议把登录获取Token的动作放到BeforeClass里而不是每个Test里都登录一次。这样既保证Token是最新的又不会因为重复登录拖慢整个测试套件。6. Rest-Assured进阶测试数据管理、断言策略与CI集成6.1 测试数据准备、隔离、清理自动化接口测试最影响稳定性的往往不是代码而是测试数据。数据不干净用例今天过明天挂会浪费大量排查时间。我的经验是三条绝不拿生产库当自动化测试目标独立测试环境是底线每个环境准备独立的测试账号和专用数据数据尽量在用例执行前通过接口或SQL准备执行后清理用例依赖的账号、订单、商品等主数据单独维护不与其他用例共享避免交叉影响。用Rest-Assured做数据准备时可以直接复用被测系统的接口比如先调一个“创建商品”接口再调“下单”接口形成真实的业务链路。这比直接改数据库更能模拟真实场景也更容易发现上下游协同问题。6.2 断言策略从接口向前端和数据库延伸优秀接口自动化用例的断言不应该只盯着接口本身。结合我在团队里的实践断言至少应该延伸到两个方向向后端延伸接口写操作完成后数据库里的数据是否符合预期。可以通过JDBC查询或调用内部管理接口验证最终一致性。比如下单成功库存是否真的扣减了。向结果文档延伸检查返回数据是否满足前端渲染的必要条件。比如列表接口返回的图片字段是否为空、主键是否重复等。这种延伸会增加测试编写成本但对核心交易链路非常值得。我通常会为核心链路的10%左右接口加上数据库断言其他接口只做HTTP和业务字段断言。6.3 把用例交给CI每天跑一遍Rest-Assured用例写完后交给CI跑起来才算真正发挥作用。以GitLab CI为例一个最简单的Job配置大概长这样api-smoke-test: stage: test script: - mvn clean test -DsuiteXmlFileapi-smoke.xml artifacts: when: always reports: junit: target/surefire-reports/TEST-*.xml only: - main这里有两个细节很容易在实际落地时踩坑。第一个是CI环境访问内网接口的问题。本地开发可以访问测试环境CI的Runner如果部署在别的网段可能根本连不上测试服务。我遇到过本地全绿、CI全红的经典场景最后发现是Runner主机的网络策略没放行。网络策略和DNS必须提前在CI环境里验证一遍。第二个是报告收集。CI里跑接口测试一定要把JUnit格式的报告作为artifact发布出来否则失败了也不知道是哪个接口哪条断言挂了。测试代码里加上log().all()也很有用失败时能够看到完整的请求和响应。7. 到底选Postman还是Rest-Assured我的双轨工作流与安全提醒7.1 一张表看透边界很多人在选型时纠结“Postman和Rest-Assured哪个好”其实这两个工具解决的问题不同放一起比就像问“万用表和检测线哪个好”。对比维度PostmanRest-Assured使用方式图形化界面Java代码适合场景探索式调试、快速验证、接口文档化自动化回归、持续集成、批量执行上手门槛低十几分钟就能发第一个请求需要Java基础和Maven工程经验断言能力可写脚本适合轻量校验结合Hamcrest断言能力很强数据驱动支持CSV/JSON文件迭代支持TestNG DataProvider团队协作工作区共享、集合导出代码仓库评审、版本化管理运行环境桌面端、Web端、Newman命令行Maven/TestNG/JUnit天然适合CI7.2 我推荐的双轨工作流我的项目里Postman和Rest-Assured是双轨滚动使用的流程是这样的需求评审阶段后端接口可能刚有雏形我用Postman快速验证每个接口是否按文档工作顺手把请求保存到集合里接口稳定后把重要链路的请求转成Rest-Assured用例写进测试工程CI每天跑自动化用例Postman留在日常开发和紧急排障时用需要给前端、测试提供接口说明时从Postman集合里整理或按OpenAPI规范导出生成接口文档。这套流程的核心理念是Postman解决“我现在立刻要看一个接口行不行”Rest-Assured解决“以后每次发版都不能有基本接口问题”。两者并不冲突反而是互相配合的上下游。7.3 关于API Key安全的三条红线最后一个话题虽然和工具本身无关但我必须说因为接口测试绕不开密钥。第一不要在Postman的公开工作区或全局变量里保存生产环境密钥。Postman有团队共享功能一旦共享范围设置错误密钥就等于公开了。第二不要相信网上那些“免费API Key分享”或者“十大免费API密钥”的清单。正规服务商都有免费额度自己去注册申请即可。从别人手里拿到的Key你不知道它绑定的是谁的账单、有没有被限制一旦接口出问题排查成本反而更高。第三警惕非官方渠道的API转发服务。有些服务把第三方大模型的API包装一下低价出售表面上省钱省事实际上你的请求数据会被中转方看到密钥也可能被反复转卖。更常见的是服务本身不稳定说下线就下线甚至直接返回410清退通知。如果业务依赖这类渠道一旦上游关停线上功能立刻不可用。我的态度是能用官方渠道就用官方渠道成本问题再想办法通过合规的多供应商切换来解决而不是走灰色通道。其实工具选型真的不必纠结Postman和Rest-Assured在我手里分别承担着不同角色一个管日常一个管长期。写这篇文章时我也回忆了一下自己前几年踩过的那些坑——过期Token、环境变量互相覆盖、CI连不上测试环境——几乎都不是接口本身的问题而是工具使用习惯的问题。每次接到新的接口项目先花十分钟把集合、环境变量、公共Header整理好后面就能省下几个小时。这个习惯越早养成越值钱。

相关新闻

Ghost 主题兼容性机制全解析:从 GScan 校验规则到 Handlebars 主题契约维护

Ghost 主题兼容性机制全解析:从 GScan 校验规则到 Handlebars 主题契约维护

2026/9/8 23:13:34

Ghost 主题兼容性机制全解析:从 GScan 校验规则到 Handlebars 主题契约维护 【免费下载链接】Ghost Independent technology for modern publishing, memberships, subscriptions and newsletters. 项目地址: https://gitcode.com/GitHub_Trending/gh/Ghost …

如何5分钟搞定微信视频号无水印视频下载:res-downloader新手实操指南

如何5分钟搞定微信视频号无水印视频下载:res-downloader新手实操指南

2026/9/8 23:03:33

如何5分钟搞定微信视频号无水印视频下载:res-downloader新手实操指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

Starship Catppuccin Powerline 预设配置指南:从安装到源码级调色板机制解析

Starship Catppuccin Powerline 预设配置指南:从安装到源码级调色板机制解析

2026/9/8 23:03:33

Starship Catppuccin Powerline 预设配置指南:从安装到源码级调色板机制解析 【免费下载链接】starship ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell! 项目地址: https://gitcode.com/GitHub_Trending/st/st…

理解函数无 return 语句时返回 undefined——freeCodeCamp 基础 JavaScript 挑战逐行拆解

理解函数无 return 语句时返回 undefined——freeCodeCamp 基础 JavaScript 挑战逐行拆解

2026/9/8 23:53:36

理解函数无 return 语句时返回 undefined——freeCodeCamp 基础 JavaScript 挑战逐行拆解 【免费下载链接】freeCodeCamp freeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free. 项目地址: https://gitcode.com/…

电梯非侵入式改造的三大物理红线:供电、信号、通信隔离

电梯非侵入式改造的三大物理红线:供电、信号、通信隔离

2026/9/8 23:53:36

1. 为什么“非侵入式”不是一句空话,而是维保红线的物理分界线 在电梯行业干了十多年,我经手过上百台不同品牌、不同年代的电梯加装智能调度系统。最常听到的一句话是:“师傅,你们这个盒子接一下控制柜就行,不改线路&a…

5 分钟跑通 Devika:让开源 AI 工程师替你写代码

5 分钟跑通 Devika:让开源 AI 工程师替你写代码

2026/9/8 23:53:36

5 分钟跑通 Devika:让开源 AI 工程师替你写代码 【免费下载链接】devika Devika is the first open-source implementation of an Agentic Software Engineer. Initially started as an open-source alternative to Devin. 项目地址: https://gitcode.com/GitHub_…

如何一键抓取视频号、抖音等网络资源:res-downloader 完整下载指南

如何一键抓取视频号、抖音等网络资源:res-downloader 完整下载指南

2026/9/8 23:53:36

如何一键抓取视频号、抖音等网络资源:res-downloader 完整下载指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

基于STM32的可穿戴手环设计:从硬件选型到固件调试

基于STM32的可穿戴手环设计:从硬件选型到固件调试

2026/9/8 23:53:36

简介:一套基于STM32的可穿戴手环完整设计工程,面向嵌入式爱好者、单片机学习者及智能穿戴开发者,涵盖主控选型、UCOS实时操作系统移植、多种传感器集成与单片机编程实现,可帮助读者从零搭建具备环境监测、心率检测和运动姿态识别功…

Slidev 项目目录结构完全指南:以约定驱动组件、布局、样式与全局图层的扩展机制

Slidev 项目目录结构完全指南:以约定驱动组件、布局、样式与全局图层的扩展机制

2026/9/8 23:43:35

Slidev 项目目录结构完全指南:以约定驱动组件、布局、样式与全局图层的扩展机制 【免费下载链接】slidev Presentation Slides for Developers 项目地址: https://gitcode.com/GitHub_Trending/sl/slidev Slidev(Presentation Slides for Develop…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/7 20:21:46

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/8 22:37:26

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

2026/9/8 0:02:30

芯片这个行业有个不太被人摆到台面上、但几乎每天都在发生的场景:客户拿着一条良率曲线截图问你,这批货的良率怎么掉了三个点,是不是工艺出问题了,产生的不良会不会流到他们产线上去。你解释了半天,客户似懂非懂&#…

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

2026/9/8 0:02:30

ValueError: sampler option is mutually exclusive with shuffle,这个报错我在 PyTorch 的 DataLoader 上至少见过几十次了,而且很有意思的是,它经常不是新手专属——很多写了好几年模型的老手,在从单机改成自定义采样器&#xf…

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

2026/9/8 0:02:30

有人可能在网上开着皮卡拍视频,声称中国电动车不仅性能不如美国大排量车型,安全性也堪忧。然而事实恰恰相反,GAC、吉利和零跑最新推出的电动车型在极为严苛的欧盟新车安全评鉴(Euro NCAP)测试中全部斩获满分。就在特斯…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…