GET与POST区别及Session、Cookie、Token鉴权实战详解
1. 从一次接口联调翻车说起为什么GET和POST的区别值得单独拎出来讲刚入行那会儿我对GET和POST的理解就停留在“GET用来获取数据POST用来提交数据”这一句话上。直到有一次跟前端联调一个登录接口前端用GET把用户名和密码拼在URL里发过来我这边后端日志一打密码明文躺在访问记录里当场被负责安全审查的同事逮个正着。那次之后我才真正意识到这两个最基础的HTTP方法背后牵扯的东西远比想象中多——参数位置、长度限制、幂等性、缓存行为、安全性每一项都可能在真实项目里变成事故。这篇内容我打算把GET和POST的区别彻底讲透不是背面试题那种讲法而是从实际开发中会遇到的问题出发把每个差异点背后的原因说清楚。同时登录鉴权绕不开的session、cookie、token这三兄弟也是很多人容易混淆的地方。我会把它们的工作机制、存储位置、适用场景、常见坑点逐一拆解配合可运行的代码示例让你看完能直接用到自己的项目里。不管你是刚接触Web开发的新手还是写了几年代码但没系统梳理过这块知识的老手这篇内容都值得花时间过一遍。因为越是基础的东西越容易在关键时刻暴露认知盲区。2. GET与POST的本质差异不只是“一个在URL一个在Body”2.1 从HTTP协议层面理解两者的定位很多人把GET和POST的区别背成了一张表但如果不理解HTTP协议为什么这样设计遇到具体问题时还是不知道怎么选。RFC规范里对两者的定义其实很明确GET方法的语义是“获取资源”它应该是安全且幂等的POST方法的语义是“处理请求实体”它不保证安全也不保证幂等。这里有两个关键概念需要先厘清。安全性指的是请求本身不会改变服务器上的资源状态——你发一百次GET请求查同一个用户信息服务器上的数据不会因此变化。幂等性指的是同一个请求执行一次和执行多次对服务器产生的副作用是一样的。GET天然满足这两个特性POST则都不满足。为什么协议要这样设计因为HTTP是一个无状态协议它需要一套约定来让中间的各种组件浏览器、代理、缓存服务器知道该怎么处理请求。GET的幂等性让浏览器可以放心地缓存响应结果让代理服务器可以自动重试失败的请求。POST的非幂等性则告诉这些中间组件别自作主张这个请求可能会改变数据重试要谨慎。理解了这个底层逻辑后面所有的差异点都是它的自然推论。2.2 参数传递方式与长度限制的真实边界GET请求的参数通过URL的查询字符串传递格式是?key1value1key2value2。POST请求的参数放在请求体Body里可以是表单格式、JSON格式、XML格式等。这是最直观的区别但实际开发中有几个细节容易被忽略。关于长度限制网上流传的说法是“GET请求URL长度不能超过2048个字符”这个说法不够准确。HTTP协议本身并没有规定URL的长度上限限制来自具体的浏览器和服务器实现。比如某些浏览器对URL长度的限制在2KB到8KB之间某些服务器默认限制请求行大小为8KB。而POST请求体的大小限制通常由服务器配置决定可以调整到很大。我在实际项目中遇到过这样的情况一个导出功能需要传递大量筛选条件前端同事图省事用GET请求把条件拼在URL里结果条件一多就报414错误Request-URI Too Long。后来改成POST把条件放在Body里问题立刻解决。但这里要注意改成POST并不是因为POST“没有长度限制”而是因为服务器对Body大小的限制通常比URL宽松得多而且可以通过配置调整。下面这张表对比了几个关键维度对比维度GETPOST参数位置URL查询字符串请求体幂等性是否安全性协议语义安全不安全可缓存性可被浏览器主动缓存默认不缓存浏览器历史记录参数会保留在历史记录中参数不会保留书签收藏可收藏为书签不可收藏编码类型仅支持URL编码支持多种编码表单、JSON、二进制等典型长度限制受浏览器和服务器URL长度限制受服务器Body大小限制2.3 缓存机制与浏览器行为的连锁反应GET请求因为幂等且安全浏览器和中间代理会默认对它进行缓存。这意味着如果你用GET请求获取用户列表在缓存过期之前浏览器可能直接返回上次的结果根本不会打到服务器。这个特性在有些场景下是好事比如获取静态资源但在有些场景下就是灾难比如获取实时性要求很高的数据。我踩过的一个坑是这样的做了一个消息通知接口前端用GET请求轮询获取未读消息数量。测试的时候发现用户读完消息后未读数在页面上迟迟不更新。排查了半天才发现是浏览器缓存了GET请求的响应。解决办法是在URL后面加一个时间戳参数或者让后端在响应头里设置Cache-Control: no-cache。POST请求默认不会被缓存因为它的语义是“可能改变服务器状态”缓存它没有意义。但注意这并不意味着POST请求完全不能缓存只是需要显式设置缓存头而且实际场景中很少这么做。还有一个容易被忽略的点GET请求的参数会完整保留在浏览器历史记录里。如果参数中包含敏感信息比如token、密码这些信息就会留在用户的浏览历史中存在泄露风险。POST请求的参数不会出现在历史记录里相对更安全一些。2.4 安全性误区POST并不比GET“更安全”很多人以为POST比GET安全因为参数不在URL里显示。这是一个典型的误解。POST请求的参数虽然在URL里看不到但在网络传输过程中同样是明文的除非使用HTTPS。用抓包工具一样能看到POST请求的Body内容。真正的安全差异在于GET请求的参数会出现在服务器访问日志、浏览器历史记录、代理服务器日志中而POST请求的参数不会。所以从“减少敏感信息暴露面”的角度看POST确实略好一些。但根本的安全保障还是要靠HTTPS加密传输以及后端对敏感数据的脱敏处理。我在代码审查中见过最离谱的做法是用GET请求传递用户密码然后辩解说“我们用了HTTPS所以没关系”。HTTPS确实能加密传输内容但URL本身在TLS握手之后才会被加密而且URL会被记录在服务器日志里。正确的做法是永远用POST传递敏感信息并且在后端日志中对敏感字段做脱敏。2.5 实战中的选择策略与常见反模式说了这么多理论实际开发中到底怎么选我总结了一个简单的判断流程如果请求是“读取”操作且不包含敏感信息用GET。如果请求是“写入/修改/删除”操作用POST或PUT/DELETE视RESTful风格而定。如果参数很长或包含文件用POST。如果参数包含敏感信息用POST。如果需要防止浏览器缓存用POST或在GET响应中设置缓存头。常见的反模式包括用GET做删除操作比如/deleteUser?id123这违反了GET的幂等性语义而且可能被浏览器预取或爬虫误触发用POST做纯查询操作导致无法利用缓存和书签功能在GET请求的URL里传递token导致token泄露到日志中。3. Session、Cookie、Token登录鉴权的三块基石3.1 Cookie客户端存储的“通行证”Cookie是服务器发送给浏览器的一小段数据浏览器会把它存储起来并在后续请求中自动带上。它的本质是解决HTTP无状态的问题——让服务器能“记住”上一次请求是谁发的。一个典型的Cookie工作流程是这样的用户登录成功后服务器在响应头里设置Set-Cookie: sessionIdabc123; HttpOnly; Secure; Path/浏览器收到后把这条Cookie存起来。之后每次请求同一个域名浏览器都会自动在请求头里带上Cookie: sessionIdabc123。服务器拿到这个sessionId就能找到对应的用户信息。Cookie有几个关键属性需要掌握HttpOnly设置后JavaScript无法通过document.cookie读取该Cookie能有效防止XSS攻击窃取Cookie。Secure设置后Cookie只在HTTPS连接中发送防止在HTTP明文连接中被窃听。SameSite控制跨站请求时是否发送Cookie有Strict、Lax、None三个值能有效缓解CSRF攻击。Max-Age / Expires控制Cookie的过期时间。不设置的话就是会话Cookie浏览器关闭后失效。Domain / Path控制Cookie的作用范围。我在实际项目中遇到过Cookie跨域的问题。前端部署在app.example.com后端API在api.example.com默认情况下Cookie不会跨子域发送。解决办法是把Cookie的Domain设置为.example.com这样两个子域都能共享。但要注意Domain设置得越宽Cookie被发送的范围就越大安全风险也越高。3.2 Session服务端维护的“用户档案”Session是服务器端的一块存储空间用来保存用户的会话状态。它的工作方式是用户登录后服务器创建一个Session对象分配一个唯一的Session ID然后把Session ID通过Cookie或URL重写发给客户端。客户端后续请求带上Session ID服务器就能找到对应的Session数据。Session的存储位置可以是内存、文件、数据库或Redis等。在单机部署时内存存储最简单但在多机部署或需要持久化的场景下通常会用Redis来集中管理Session。Session方案有几个明显的痛点。首先是扩展性问题当服务器从一台扩展到多台时如果Session存在单机内存里用户请求被负载均衡到另一台服务器时就找不到Session了。解决办法有Session粘滞同一用户始终打到同一台机器、Session复制多台机器同步Session数据、集中存储用Redis统一管理。其中集中存储是最常用的方案。其次是跨域问题在前后端分离架构中前端和后端可能部署在不同域名下Cookie的跨域限制会导致Session ID无法正常传递。虽然可以通过CORS配置和Cookie的SameSite属性来解决但配置起来比较繁琐。还有一个容易被忽略的点是Session的过期和清理。Session数据存在服务器上如果不设置合理的过期时间会占用大量存储空间。通常的做法是设置一个较短的过期时间比如30分钟并在每次请求时刷新过期时间实现“滑动过期”的效果。3.3 Token无状态鉴权的代表方案Token方案的核心思想是服务器不保存会话状态而是把用户信息编码成一个令牌Token发给客户端客户端每次请求带上这个Token服务器验证Token的有效性即可。最常用的Token实现是JWTJSON Web Token。JWT由三部分组成Header算法和类型、Payload用户信息和声明、Signature签名。三部分用点号连接形如xxxxx.yyyyy.zzzzz。服务器用密钥对前两部分签名验证时重新计算签名并比对确保Token没有被篡改。Token方案的优势很明显无状态服务器不需要存储会话数据天然支持水平扩展跨域友好Token通常放在请求头里如Authorization: Bearer xxx不受Cookie跨域限制灵活性高可以在Payload里携带自定义信息方便微服务之间传递用户上下文。但Token方案也有它的坑。首先是无法主动失效JWT一旦签发在过期之前一直有效服务器无法单方面撤销。解决办法是维护一个黑名单或者使用短过期时间刷新Token的机制。其次是Payload大小JWT的Payload是Base64编码的不是加密的所以不能放敏感信息而且Payload越大每次请求的传输开销就越大。最后是签名密钥的管理密钥泄露意味着任何人都能伪造Token所以密钥要妥善保管并定期轮换。3.4 三者的协作关系与选型对比Session、Cookie、Token并不是互斥的它们经常配合使用。最常见的组合是用Cookie存储Session ID服务器端用Redis管理Session数据。另一种常见组合是用Cookie存储Token此时Cookie只是Token的载体或者用LocalStorage存储Token并通过请求头传递。下面这张表从多个维度对比三种方案对比维度CookieSessionTokenJWT存储位置客户端浏览器服务端客户端LocalStorage/Cookie状态性无状态只是存储载体有状态无状态跨域支持受同源策略限制受Cookie跨域限制请求头传递跨域友好扩展性不涉及需要集中存储方案天然支持水平扩展主动失效可删除Cookie可删除服务端Session较难需黑名单机制安全性需配合HttpOnly/SecureSession ID泄露风险签名防篡改但Payload可读适用场景存储少量非敏感数据传统Web应用前后端分离、微服务、移动端选型时没有绝对的最优解关键看你的架构和需求。传统服务端渲染的Web应用SessionCookie是最成熟的方案前后端分离或移动端AppToken方案更合适如果对安全性要求极高可以考虑Token短期过期刷新Token的组合。4. 手把手实战从零搭建一套完整的鉴权流程4.1 环境准备与项目结构这一节我用Node.js Express来演示因为这套技术栈足够轻量能把核心逻辑讲清楚。你需要准备Node.js环境建议18以上版本然后初始化项目mkdir auth-demo cd auth-demo npm init -y npm install express jsonwebtoken cookie-parser uuid项目结构很简单auth-demo/ ├── app.js # 主入口 ├── routes/ │ └── auth.js # 鉴权路由 └── middleware/ └── auth.js # 鉴权中间件先写一个最基础的Express服务const express require(express); const cookieParser require(cookie-parser); const app express(); app.use(express.json()); app.use(cookieParser()); app.listen(3000, () { console.log(服务已启动监听3000端口); });4.2 用SessionCookie实现传统登录先实现Session方案。为了演示方便我用内存对象模拟Session存储实际项目中应该用Redisconst { v4: uuidv4 } require(uuid); const sessions {}; // 模拟Session存储 // 登录接口 app.post(/login, (req, res) { const { username, password } req.body; // 这里省略真实的用户校验逻辑 if (username test password 123456) { const sessionId uuidv4(); sessions[sessionId] { username, loginAt: Date.now() }; res.cookie(sessionId, sessionId, { httpOnly: true, secure: false, // 生产环境应设为true sameSite: lax, maxAge: 30 * 60 * 1000 // 30分钟 }); return res.json({ code: 0, message: 登录成功 }); } res.status(401).json({ code: 1, message: 用户名或密码错误 }); }); // 鉴权中间件 function authMiddleware(req, res, next) { const sessionId req.cookies.sessionId; if (!sessionId || !sessions[sessionId]) { return res.status(401).json({ code: 1, message: 未登录 }); } req.user sessions[sessionId]; next(); } // 受保护的接口 app.get(/profile, authMiddleware, (req, res) { res.json({ code: 0, data: req.user }); });这段代码有几个关键点值得说明。httpOnly: true确保JavaScript无法读取Cookie防止XSS攻击。sameSite: lax在保证正常导航场景下Cookie能发送的同时阻止跨站POST请求携带Cookie缓解CSRF攻击。maxAge设置30分钟过期实际项目中还应该在每次请求时刷新过期时间。4.3 用JWT实现无状态鉴权接下来实现JWT方案。核心逻辑是登录时签发Token后续请求通过请求头携带Tokenconst jwt require(jsonwebtoken); const SECRET_KEY your-secret-key-change-in-production; // 登录接口 app.post(/api/login, (req, res) { const { username, password } req.body; if (username test password 123456) { const token jwt.sign( { username, role: user }, SECRET_KEY, { expiresIn: 2h } ); return res.json({ code: 0, data: { token } }); } res.status(401).json({ code: 1, message: 用户名或密码错误 }); }); // JWT鉴权中间件 function jwtAuthMiddleware(req, res, next) { const authHeader req.headers.authorization; if (!authHeader || !authHeader.startsWith(Bearer )) { return res.status(401).json({ code: 1, message: 未提供Token }); } const token authHeader.slice(7); try { const decoded jwt.verify(token, SECRET_KEY); req.user decoded; next(); } catch (err) { if (err.name TokenExpiredError) { return res.status(401).json({ code: 1, message: Token已过期 }); } res.status(401).json({ code: 1, message: Token无效 }); } } // 受保护的接口 app.get(/api/profile, jwtAuthMiddleware, (req, res) { res.json({ code: 0, data: req.user }); });JWT方案的关键在于jwt.verify会同时验证签名和过期时间。如果Token被篡改签名验证会失败如果Token过期会抛出TokenExpiredError。实际项目中SECRET_KEY应该从环境变量读取并且要足够复杂。4.4 两种方案的联调测试与验证启动服务后用curl来测试。先测Session方案# 登录并保存Cookie curl -c cookies.txt -X POST http://localhost:3000/login \ -H Content-Type: application/json \ -d {username:test,password:123456} # 用保存的Cookie访问受保护接口 curl -b cookies.txt http://localhost:3000/profile再测JWT方案# 登录获取Token curl -X POST http://localhost:3000/api/login \ -H Content-Type: application/json \ -d {username:test,password:123456} # 用Token访问受保护接口 curl http://localhost:3000/api/profile \ -H Authorization: Bearer 你的Token测试时要注意观察响应头里的Set-Cookie字段以及请求头里的Cookie和Authorization字段。用浏览器的开发者工具或者抓包工具能更直观地看到这些信息。4.5 生产环境必须调整的配置项上面演示用的配置直接上生产会出问题这里列出必须调整的地方HTTPS生产环境必须启用HTTPSCookie的secure属性设为true否则Cookie会在HTTP明文连接中传输。密钥管理JWT的SECRET_KEY不能硬编码在代码里应该用环境变量或密钥管理服务并且定期轮换。Session存储内存存储Session只适合演示生产环境必须用Redis等外部存储并配置合理的过期策略。CORS配置前后端分离时需要正确配置CORS允许前端域名携带Cookie或Authorization头。限流与防暴力破解登录接口必须加限流防止暴力破解密码。日志脱敏确保日志中不记录密码、Token等敏感信息。5. 踩坑实录那些年我在鉴权上栽过的跟头5.1 Cookie跨域丢失的完整排查过程有一次做前后端分离项目前端在localhost:8080后端在localhost:3000。登录接口调通了Set-Cookie也返回了但后续请求就是带不上Cookie。排查过程如下第一步确认浏览器是否收到了Set-Cookie。打开开发者工具的Application面板发现Cookie确实存下来了。第二步检查请求头发现后续请求的Cookie字段是空的。第三步查资料发现跨域请求默认不携带Cookie需要在前端请求时设置withCredentials: true同时后端响应头要设置Access-Control-Allow-Credentials: true并且Access-Control-Allow-Origin不能是*必须是具体的前端域名。改完之后还是不行。继续排查发现Cookie的SameSite属性默认是Lax在跨站请求中不会发送。把SameSite设为None同时确保Secure为trueSameSiteNone要求必须配合Secure问题才彻底解决。这个坑的教训是跨域场景下的Cookie传递涉及多个配置项任何一个没配对都会导致失败。排查时要按“浏览器是否存储→请求是否携带→服务器是否接收”的顺序逐步确认。5.2 JWT过期处理与刷新Token的正确姿势JWT方案最让人头疼的就是Token过期。如果过期时间设得太短用户频繁被踢出登录设得太长安全性又没保障。我试过几种方案最后总结出一套比较实用的做法双Token机制。具体来说登录成功后签发两个TokenAccess Token有效期短比如15分钟和Refresh Token有效期长比如7天。Access Token用于日常接口鉴权Refresh Token专门用于换取新的Access Token。当Access Token过期时前端用Refresh Token调用刷新接口拿到新的Access Token继续使用。Refresh Token过期后用户才需要重新登录。这个方案的关键在于Refresh Token的存储和验证。Refresh Token应该存在服务端比如Redis并且和用户绑定这样服务端可以主动撤销某个用户的Refresh Token。同时Refresh Token应该设置较长的过期时间但每次使用后可以选择是否轮换即签发新的Refresh Token并废弃旧的防止Refresh Token被盗用。5.3 Session共享在分布式环境下的解决方案单机时代用内存存Session没问题一旦上了多台服务器问题就来了。用户登录时请求打到了A服务器Session存在A的内存里下一次请求被负载均衡打到了B服务器B找不到Session用户就被判定为未登录。我试过三种解决方案。第一种是Session粘滞在负载均衡层配置同一用户的请求始终转发到同一台服务器。这个方案配置简单但缺点是某台服务器挂了上面的用户Session就全丢了。第二种是Session复制多台服务器之间同步Session数据。这个方案可靠性高但同步开销大服务器多了之后性能下降明显。第三种是集中存储用Redis统一管理Session所有服务器都从Redis读写。这个方案最优雅扩展性好也是我现在最常用的方案。用Redis存Session时要注意序列化方式。Session数据通常是对象存进Redis前要序列化成字符串JSON或二进制取出来后再反序列化。另外要设置合理的过期时间并且考虑Redis挂了之后的降级方案。5.4 安全加固HttpOnly、Secure、SameSite的实战配置这三个Cookie属性是安全加固的基本功但很多人配不对。我整理了一份配置清单属性推荐值作用注意事项HttpOnlytrue防止JS读取Cookie如果前端需要读Cookie不能设Securetrue生产仅HTTPS传输本地开发可设falseSameSiteLax或Strict防CSRFNone需要配合SecurePath/作用路径设得太窄可能导致Cookie不发送Domain按需设置作用域名设得太宽增加安全风险SameSite的选择需要权衡。Strict最安全但用户从外部链接跳转过来时不会携带Cookie可能导致需要重新登录。Lax是折中方案允许顶级导航的GET请求携带Cookie阻止跨站POST请求。None最宽松必须配合Secure使用适合需要跨站携带Cookie的场景比如嵌入第三方iframe。6. 从鉴权方案延伸到接口设计的思考6.1 RESTful风格下GET和POST的边界RESTful API设计里HTTP方法的选择是有明确语义的GET用于查询POST用于创建PUT用于全量更新PATCH用于部分更新DELETE用于删除。但实际项目中很多团队只用了GET和POST两种方法把PUT、PATCH、DELETE都用POST代替。这种做法不是不行但会丢失一些语义信息。比如用POST做删除操作中间代理和缓存服务器就无法根据方法判断这个请求是否安全。而且从接口可读性来看DELETE /users/123比POST /users/delete更直观。我的建议是如果团队有能力维护RESTful风格尽量按语义选择方法如果团队习惯用POST统一处理写操作那至少要在URL命名和文档中把语义表达清楚不要出现GET /deleteUser这种反模式。6.2 接口幂等性设计的实际价值幂等性不只是理论概念它在实际项目中有很重要的价值。比如支付接口如果用户网络抖动导致请求重试非幂等的接口可能会重复扣款。解决办法是引入幂等键Idempotency Key客户端生成一个唯一ID每次请求带上这个ID服务端记录已处理的ID重复请求直接返回上次的结果。这个机制在GET请求中天然不需要因为GET本身就是幂等的。但在POST请求中尤其是涉及资金、订单等敏感操作时幂等性设计是必须的。6.3 前后端分离架构下的鉴权选型建议前后端分离架构下我的选型建议是这样的如果是内部管理系统用户量不大SessionCookie方案足够用配置简单安全性也有保障。如果是面向公众的Web应用或移动端AppJWT方案更合适因为它的无状态特性天然支持水平扩展而且跨域友好。如果对安全性要求极高比如金融类应用可以考虑JWT短期过期Refresh Token黑名单的组合方案。不管选哪种方案都要记住一个原则鉴权只是安全体系的一部分。HTTPS、输入校验、SQL注入防护、XSS防护、CSRF防护、限流、日志审计这些都要配套做好单靠一个鉴权方案解决不了所有安全问题。6.4 常见面试追问与知识盲区自查最后列几个面试中经常被追问的点你可以用来自查GET请求能否带Body技术上可以但语义上不应该很多服务器和客户端会忽略GET的Body。POST请求是否绝对安全不是POST参数在传输中同样是明文除非HTTPS只是不会出现在URL和日志中。Session和Token能否同时使用可以比如用Cookie存Session ID同时用JWT做API鉴权。JWT的Payload能否加密可以用JWEJSON Web Encryption但会增加复杂度大多数场景用签名就够了。Cookie的SameSiteNone在什么情况下必须用需要跨站携带Cookie时比如第三方登录回调、嵌入iframe等场景。这些问题的答案没有绝对的对错关键是要理解背后的原理能根据具体场景做出合理的选择。我在实际项目中最大的体会是没有最好的方案只有最适合当前场景的方案。把原理吃透遇到问题时自然知道该怎么权衡。

相关新闻

【原创AI项目】手把手打造企业级知识库助手:LangChain 1.x + LangGraph + RAG + Agent 全栈

【原创AI项目】手把手打造企业级知识库助手:LangChain 1.x + LangGraph + RAG + Agent 全栈

文章目录 一、开篇:你的企业知识,还在靠"问人"吗? 二、功能全景图 三、系统架构总览 四、项目结构与依赖 五、核心模块一:RAG 检索引擎 5.1 RAG 核心运行流程图 5.2 文档加载:编码容错是个容易踩的坑 5.3 递归切分:为什么用 RecursiveCharacterTextSplitter? …

2026/10/19 4:32:47 阅读更多 →
开源代码审查工具 open-code-review:从规则引擎到 CI 集成的实践指南

开源代码审查工具 open-code-review:从规则引擎到 CI 集成的实践指南

1. 摆脱 Code Review 拖延症:这款开源工具到底解决什么问题说实话,Code Review 这件事在绝大多数团队里都处于一种"人人都知道重要,但就是做不动"的状态。我见过太多项目,PR 一开就是三五天没人理,等发起人催…

2026/10/19 4:32:47 阅读更多 →
打卡信奥刷题(3636)用C++实现信奥题 P11954 「ZHQOI R1」删边

打卡信奥刷题(3636)用C++实现信奥题 P11954 「ZHQOI R1」删边

P11954 「ZHQOI R1」删边 题目描述 给定一个 nnn 个点 mmm 条边的简单无向连通图,点从 111 开始编号。你可以删掉任意条边,使得: 删完后图不连通;删完后图中没有孤立点(即度数为 000 的点)。 构造删边方案或…

2026/10/19 4:32:47 阅读更多 →

最新新闻

用UiPath自动化禁用Windows更新:批量节点策略治理与踩坑实录

用UiPath自动化禁用Windows更新:批量节点策略治理与踩坑实录

某天上午,我打开一批测试节点的事件日志,看到整齐划一的"Windows更新已完成安装,正在重启"。前一天夜里,跑批任务刚跑到一半,机器就重启了,监控平台黄了一串。值班的同事说,这已经不是…

2026/10/19 5:16:15 阅读更多 →
云服务器上部署OpenClaw,打造7×24小时在线的AI私人助手

云服务器上部署OpenClaw,打造7×24小时在线的AI私人助手

你有没有过这种时刻:临时想查个东西,手机解锁、打开App、输入问题、等回复,一整套流程下来,自己都忘了刚才想干什么。我折腾OpenClaw之前,总觉得大模型挺好用,但每次都缺一个随手能喊出来的入口。后来我换了…

2026/10/19 5:16:15 阅读更多 →
人形机器人专利池的精准补位战略:从技术地图到产业卡位

人形机器人专利池的精准补位战略:从技术地图到产业卡位

这些年做机器人硬件和智能算法的朋友应该都有一个共同感受:人形机器人这个词,已经从实验室里的概念验证,变成了产业界真金白银下注的确定性赛道。上个月我在某产业论坛待了三天,被问到最多的问题不是“能不能造出来”,…

2026/10/19 5:16:15 阅读更多 →
AirVLA技术拆解:端到端VLA模型如何实现桌面机械臂空中抓取与导航

AirVLA技术拆解:端到端VLA模型如何实现桌面机械臂空中抓取与导航

最近具身智能圈子里放出了一个叫 AirVLA 的方案,名字听起来很“大模型”,但核心一句话就能讲明白:它让桌面机械臂的视觉-语言-行动(VLA)模型从“只会平面抓取”升级到了“能在三维空间里完成空中…

2026/10/19 5:16:15 阅读更多 →
线程回收、分离属性、互斥与同步:NEXT 2项目实战拆解

线程回收、分离属性、互斥与同步:NEXT 2项目实战拆解

接手项目NEXT 2的时候,我第一反应是:这不就是一个普通的并发任务模块吗?无非开几个线程、跑几个队列。真正动手才发现,线程回收、分离属性、互斥、同步这四件事,任何一个环节没想清楚,程序就会以各种奇怪的…

2026/10/19 5:16:15 阅读更多 →
gPINN求解多陡峭界面Allen-Cahn方程:Python实现与训练策略

gPINN求解多陡峭界面Allen-Cahn方程:Python实现与训练策略

我先从一个很现实的场景起头:对一个 ε 已经小到 0.02 的一维 Allen-Cahn 方程,初始条件里同时存在两个甚至四个陡峭过渡层,标准 PINN 训练到中途,损失曲线虽然还在降,但画出来的解已经不像界面,更像一段被…

2026/10/19 5:15:15 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →