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

WebSocket核心技术全解析

Websocket 的核心概念WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 不同WebSocket 允许服务器主动向客户端推送数据避免了传统的轮询机制。它通过一次握手建立持久连接显著降低了延迟和带宽消耗。WebSocket 协议基于事件驱动模型支持文本和二进制数据传输。现代浏览器和服务器框架如 Node.js、Spring均提供了原生支持。典型的应用场景包括实时聊天、在线游戏、股票行情推送等。握手与连接建立WebSocket 连接始于 HTTP 升级请求。客户端发送包含Upgrade: websocket的 Header服务器返回状态码 101 表示协议切换成功。以下是 Node.js 的握手实现示例const http require(http); const server http.createServer(); server.on(upgrade, (req, socket) { if (req.headers[upgrade] ! websocket) { socket.end(HTTP/1.1 400 Bad Request); return; } const acceptKey generateAcceptKey(req.headers[sec-websocket-key]); socket.write( HTTP/1.1 101 Switching Protocols\r\n Upgrade: websocket\r\n Connection: Upgrade\r\n Sec-WebSocket-Accept: ${acceptKey}\r\n\r\n ); });握手成功后连接转为 WebSocket 协议。此时双方可通过帧Frame结构传输数据帧包含操作码Opcode标识数据类型如文本/二进制/关闭帧。消息分帧与流量控制WebSocket 协议将大数据拆分为多个帧传输通过 FIN 位标识消息结束。以下代码演示了消息分帧处理function fragmentMessage(message, chunkSize) { const frames []; for (let i 0; i message.length; i chunkSize) { const isFinal i chunkSize message.length; frames.push({ fin: isFinal ? 1 : 0, opcode: i 0 ? 0x01 : 0x00, // 首帧用文本帧后续用延续帧 payload: message.slice(i, i chunkSize) }); } return frames; }流量控制可通过 WebSocket 扩展协议实现如permessage-deflate压缩扩展。服务器需在握手阶段声明支持的扩展Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits心跳机制与连接保活维持长连接需要心跳检测。WebSocket 协议定义了 Ping/Pong 控制帧Opcode 0x9/0xA。以下是心跳检测实现setInterval(() { if (socket.readyState WebSocket.OPEN) { socket.ping(); const timeout setTimeout(() socket.terminate(), 30000); socket.once(pong, () clearTimeout(timeout)); } }, 50000);异常处理需关注close事件和错误码。常见错误码包括1006: 连接异常关闭1001: 端点主动终止1002: 协议错误安全与鉴权方案WebSocket 安全措施包括强制使用wss://加密传输握手阶段鉴权如 JWT 校验示例鉴权逻辑server.on(upgrade, (req, socket) { const token req.url.split(token)[1]; if (!validateToken(token)) { socket.end(HTTP/1.1 401 Unauthorized); } // 继续握手流程... });性能优化策略批处理消息合并短时间内的多个更新let batchQueue []; function sendBatch() { if (batchQueue.length 0) { ws.send(JSON.stringify(batchQueue)); batchQueue []; } } setInterval(sendBatch, 100);二进制传输使用 ArrayBuffer 替代 JSONconst encoder new TextEncoder(); ws.send(encoder.encode(二进制更高效));负载均衡使用 Redis PUB/SUB 横向扩展const subscriber redis.createClient(); subscriber.subscribe(updates); subscriber.on(message, (channel, message) { broadcastToClients(message); });跨平台兼容方案处理浏览器差异时需注意旧版 Android 可能不支持ArrayBufferiOS 休眠时可能断开连接兼容性发送代码function safeSend(ws, data) { if (ws.binaryType arraybuffer data instanceof Blob) { const reader new FileReader(); reader.onload () ws.send(reader.result); reader.readAsArrayBuffer(data); } else { ws.send(data); } }调试与监控工具Chrome DevToolsNetwork 面板查看 WebSocket 帧Wireshark过滤websocket协议分析原始流量自定义日志ws.on(message, (data) { console.log([${new Date().toISOString()}] Received: ${data}); });服务端实现对比| 框架 | 特点 | 示例代码片段 | |---------------|-----------------------------|----------------------------------| | Node.js | 事件驱动高并发 |ws库的WebSocket.Server| | Spring Boot | 注解驱动集成 STOMP |EnableWebSocketMessageBroker| | Django | Channels 层支持 |AsyncWebsocketConsumer|Python 示例async def websocket_echo(request): ws WebSocketResponse() await ws.prepare(request) async for msg in ws: if msg.type WSMsgType.TEXT: await ws.send_str(msg.data) return ws客户端重连策略指数退避重连实现let reconnectDelay 1000; function connect() { const ws new WebSocket(url); ws.onclose () { setTimeout(connect, reconnectDelay); reconnectDelay Math.min(reconnectDelay * 2, 30000); }; ws.onopen () reconnectDelay 1000; }协议扩展与替代方案STOMP在 WebSocket 上实现消息队列语义const client Stomp.overWS(wss://example.com); client.connect({}, () client.subscribe(/topic, console.log));Socket.IO自动降级到轮询的兼容方案const io require(socket.io)(server); io.on(connection, (socket) { socket.emit(news, { hello: world }); });性能基准数据在 1Gbps 网络环境下测试结果小消息1KB吞吐量约 50,000 msg/sec大消息1MB 人生的旅途充满未知每一次摸索都是向未来靠近的勇气让我们心中坚持希望与梦想。梦想的实现需要勇气与毅力并不怕失败因为每一次的尝试都是通向成功的一部分。坚持自己的信念不被外界干扰心中有光生活就会因此而美好让每一天都充满希望与活力。有梦就去追生活中的每一步都是对理想的追逐让我们在每一次拼搏中收获成功的喜悦。学会在平淡的生活中发现快乐让心灵在感恩中升华将每一瞬变得美好而值得珍惜。https://blog.csdn.net/ce3g85hw/article/details/159121866https://blog.csdn.net/szikpeqw/article/details/159121867https://blog.csdn.net/emngvp8a/article/details/159121870https://blog.csdn.net/hxsndqz9/article/details/159121871https://blog.csdn.net/gx73kkle/article/details/159121872https://blog.csdn.net/yfrdygph/article/details/159121873https://blog.csdn.net/2601_95543604/article/details/159121876https://blog.csdn.net/xatohkq6/article/details/159121877https://blog.csdn.net/tagcuj2y/article/details/159121880https://blog.csdn.net/ap6wbegs/article/details/159121882https://blog.csdn.net/rk0po93f/article/details/159121884https://blog.csdn.net/2601_95543553/article/details/159121887https://blog.csdn.net/zwcjk5vv/article/details/159121888https://blog.csdn.net/2601_95543610/article/details/159121890https://blog.csdn.net/ptbkzqxv/article/details/159121892https://blog.csdn.net/fqb3es8k/article/details/159121891https://blog.csdn.net/2601_95543568/article/details/159121894https://blog.csdn.net/vagslau0/article/details/159121895https://blog.csdn.net/ly1suomr/article/details/159121897https://blog.csdn.net/lpt3bu8u/article/details/159121899https://blog.csdn.net/eptd4pp5/article/details/159121900https://blog.csdn.net/2601_95543570/article/details/159121901https://blog.csdn.net/2601_95543534/article/details/159121903https://blog.csdn.net/2601_95543608/article/details/159121904https://blog.csdn.net/2601_95543555/article/details/159121905https://blog.csdn.net/q6y3yiop/article/details/159121906https://blog.csdn.net/pkzdti54/article/details/159121907https://blog.csdn.net/og2z4psn/article/details/159121908https://blog.csdn.net/kgjldj26/article/details/159121909https://blog.csdn.net/2601_95543525/article/details/159121911https://blog.csdn.net/vqapvx29/article/details/159121912https://blog.csdn.net/2601_95543586/article/details/159121913https://blog.csdn.net/bifitxuj/article/details/159121914https://blog.csdn.net/2601_95543536/article/details/159121916https://blog.csdn.net/c4a7sof3/article/details/159121917https://blog.csdn.net/gax7xmt3/article/details/159121918https://blog.csdn.net/s3hlyt5n/article/details/159121919https://blog.csdn.net/2601_95543591/article/details/159121920https://blog.csdn.net/vvwglsrp/article/details/159121923https://blog.csdn.net/gg9uayh6/article/details/159121922https://blog.csdn.net/2601_95543530/article/details/159121924https://blog.csdn.net/mu4lu7l4/article/details/159121925https://blog.csdn.net/i8dhsmp6/article/details/159121927https://blog.csdn.net/2601_95543583/article/details/159121928https://blog.csdn.net/2601_95543517/article/details/159121929https://blog.csdn.net/r22wi6p3/article/details/159121931https://blog.csdn.net/h73ntw3f/article/details/159121932https://blog.csdn.net/2601_95543581/article/details/159121938https://blog.csdn.net/2601_95543537/article/details/159121945https://blog.csdn.net/as6s9ia7/article/details/159121951https://blog.csdn.net/2601_95543602/article/details/159121954https://blog.csdn.net/jf4t9imj/article/details/159121995https://blog.csdn.net/2601_95543745/article/details/159121997https://blog.csdn.net/c9m1l5ow/article/details/159121998https://blog.csdn.net/ts1ceryg/article/details/159122000https://blog.csdn.net/2601_95543611/article/details/159122016https://blog.csdn.net/m6dfoc5k/article/details/159122017https://blog.csdn.net/s1pr614o/article/details/159122018https://blog.csdn.net/ps4adt2e/article/details/159122015https://blog.csdn.net/xoy4nx8u/article/details/159122031https://blog.csdn.net/2601_95543716/article/details/159122032https://blog.csdn.net/e15z5vh8/article/details/159122036https://blog.csdn.net/dwwu5m1h/article/details/159122021https://blog.csdn.net/2601_95543721/article/details/159122038https://blog.csdn.net/2601_95543734/article/details/159122042https://blog.csdn.net/u1j4seu0/article/details/159122035https://blog.csdn.net/hmz92zye/article/details/159122043https://blog.csdn.net/t5bnz57r/article/details/159122048https://blog.csdn.net/o531vomn/article/details/159122059https://blog.csdn.net/os8kash3/article/details/159122061https://blog.csdn.net/o96ccuk6/article/details/159122062https://blog.csdn.net/v7z9m1kq/article/details/159122063https://blog.csdn.net/pij60c4h/article/details/159122064https://blog.csdn.net/whxg4gai/article/details/159122065https://blog.csdn.net/fl5b3l55/article/details/159122068https://blog.csdn.net/ialftw2l/article/details/159122069https://blog.csdn.net/2601_95543741/article/details/159122067https://blog.csdn.net/mjergomt/article/details/159122071https://blog.csdn.net/ox6ezv1x/article/details/159122072https://blog.csdn.net/2601_95543736/article/details/159122073https://blog.csdn.net/dtwx2bo8/article/details/159122075https://blog.csdn.net/an08o4ol/article/details/159122076https://blog.csdn.net/uttam35n/article/details/159122077https://blog.csdn.net/jhr96es6/article/details/159122079https://blog.csdn.net/e2cy9qvz/article/details/159122080https://blog.csdn.net/2601_95543754/article/details/159122082https://blog.csdn.net/2601_95543777/article/details/159122087https://blog.csdn.net/vc1dntow/article/details/159122088https://blog.csdn.net/uhoj0a5h/article/details/159122092https://blog.csdn.net/s8688aa6/article/details/159122090https://blog.csdn.net/gjriclos/article/details/159122093https://blog.csdn.net/2601_95543763/article/details/159122094https://blog.csdn.net/2601_95543714/article/details/159122095https://blog.csdn.net/2601_95543772/article/details/159122096https://blog.csdn.net/2601_95543756/article/details/159122097https://blog.csdn.net/2601_95543717/article/details/159122100https://blog.csdn.net/yhgbbxn2/article/details/159122101https://blog.csdn.net/2601_95543774/article/details/159122102https://blog.csdn.net/ja4cpunl/article/details/159122104https://blog.csdn.net/c9m1l5ow/article/details/159122103https://blog.csdn.net/wq5q8m15/article/details/159122099https://blog.csdn.net/aqcrvvip/article/details/159122106https://blog.csdn.net/s10irw5x/article/details/159122107https://blog.csdn.net/2601_95543745/article/details/159122108https://blog.csdn.net/m9ealb9l/article/details/159122109https://blog.csdn.net/qrgoa7kp/article/details/159122111https://blog.csdn.net/sfj53stm/article/details/159122113https://blog.csdn.net/gpcyawol/article/details/159122116https://blog.csdn.net/uatdz3h3/article/details/159122120https://blog.csdn.net/t03salev/article/details/159122122https://blog.csdn.net/2601_95543727/article/details/159122126https://blog.csdn.net/2601_95543710/article/details/159122127https://blog.csdn.net/kct2puna/article/details/159122125https://blog.csdn.net/qcp4t1ch/article/details/159122129https://blog.csdn.net/q358rd4a/article/details/159122131https://blog.csdn.net/2601_95543712/article/details/159122132https://blog.csdn.net/ps4adt2e/article/details/159122136https://blog.csdn.net/2601_95543757/article/details/159122134https://blog.csdn.net/2601_95543770/article/details/159122137https://blog.csdn.net/nf2669oi/article/details/159122139https://blog.csdn.net/ts1ceryg/article/details/159122145https://blog.csdn.net/wyktfcb3/article/details/159122140https://blog.csdn.net/cba03o0p/article/details/159122143https://blog.csdn.net/e7hhuqt7/article/details/159122148https://blog.csdn.net/juzd0hbl/article/details/159122152https://blog.csdn.net/2601_95543797/article/details/159122157https://blog.csdn.net/f42o3eew/article/details/159122156https://blog.csdn.net/jf4t9imj/article/details/159122164https://blog.csdn.net/bqqvqivk/article/details/159122170https://blog.csdn.net/hd1ty3hd/article/details/159122174https://blog.csdn.net/2601_95543713/article/details/159122175https://blog.csdn.net/2601_95543729/article/details/159122177https://blog.csdn.net/g323d91n/article/details/159122178https://blog.csdn.net/yqodkwmr/article/details/159122180https://blog.csdn.net/tp4xhoaq/article/details/159122179https://blog.csdn.net/2601_95543611/article/details/159122182https://blog.csdn.net/m6dfoc5k/article/details/159122181https://blog.csdn.net/vz8qx820/article/details/159122186https://blog.csdn.net/qzjj75as/article/details/159122190https://blog.csdn.net/wxitgcqs/article/details/159122191https://blog.csdn.net/fdc9b875/article/details/159122198https://blog.csdn.net/s1pr614o/article/details/159122197https://blog.csdn.net/2601_95543716/article/details/159122209https://blog.csdn.net/2601_95543742/article/details/159122219https://blog.csdn.net/rxy58l1e/article/details/159122220https://blog.csdn.net/e2cy9qvz/article/details/159122225https://blog.csdn.net/g0al2bfx/article/details/159122237https://blog.csdn.net/2601_95543724/article/details/159122239https://blog.csdn.net/2601_95543732/article/details/159122240https://blog.csdn.net/e15z5vh8/article/details/159122248https://blog.csdn.net/2601_95543736/article/details/159122250https://blog.csdn.net/2601_95543721/article/details/159122251https://blog.csdn.net/2601_95543734/article/details/159122253https://blog.csdn.net/hmz92zye/article/details/159122255https://blog.csdn.net/ss26ddc1/article/details/159122256https://blog.csdn.net/u1j4seu0/article/details/159122259https://blog.csdn.net/dwwu5m1h/article/details/159122260https://blog.csdn.net/lgybkgin/article/details/159122262https://blog.csdn.net/o96ccuk6/article/details/159122264https://blog.csdn.net/uttam35n/article/details/159122270https://blog.csdn.net/o531vomn/article/details/159122273https://blog.csdn.net/whxg4gai/article/details/159122276https://blog.csdn.net/v7z9m1kq/article/details/159122277https://blog.csdn.net/wq5q8m15/article/details/159122281https://blog.csdn.net/2601_95543754/article/details/159122282https://blog.csdn.net/2601_95543741/article/details/159122283https://blog.csdn.net/hd1ty3hd/article/details/159122288https://blog.csdn.net/wyktfcb3/article/details/159122289https://blog.csdn.net/kct2puna/article/details/159122290https://blog.csdn.net/q4xaj468/article/details/159122291https://blog.csdn.net/f42o3eew/article/details/159122292https://blog.csdn.net/m9ealb9l/article/details/159122294https://blog.csdn.net/qcp4t1ch/article/details/159122297https://blog.csdn.net/2601_95543616/article/details/159122296https://blog.csdn.net/q358rd4a/article/details/159122299https://blog.csdn.net/uatdz3h3/article/details/159122298https://blog.csdn.net/2601_95543713/article/details/159122300https://blog.csdn.net/s8688aa6/article/details/159122304https://blog.csdn.net/an08o4ol/article/details/159122308https://blog.csdn.net/qzjj75as/article/details/159122312https://blog.csdn.net/ialftw2l/article/details/159122318https://blog.csdn.net/fl5b3l55/article/details/159122317https://blog.csdn.net/2601_95543756/article/details/159122321https://blog.csdn.net/bqqvqivk/article/details/159122324https://blog.csdn.net/uhoj0a5h/article/details/159122325https://blog.csdn.net/gpcyawol/article/details/159122328https://blog.csdn.net/wxitgcqs/article/details/159122336https://blog.csdn.net/sfj53stm/article/details/159122330https://blog.csdn.net/e7hhuqt7/article/details/159122334https://blog.csdn.net/s10irw5x/article/details/159122339https://blog.csdn.net/rxy58l1e/article/details/159122341https://blog.csdn.net/yqodkwmr/article/details/159122342https://blog.csdn.net/mjergomt/article/details/159122344https://blog.csdn.net/2601_95543777/article/details/159122345https://blog.csdn.net/2601_95543727/article/details/159122350https://blog.csdn.net/os8kash3/article/details/159122351https://blog.csdn.net/2601_95543710/article/details/159122352https://blog.csdn.net/juzd0hbl/article/details/159122354https://blog.csdn.net/vc1dntow/article/details/159122355https://blog.csdn.net/fdc9b875/article/details/159122359https://blog.csdn.net/dtwx2bo8/article/details/159122363https://blog.csdn.net/2601_95543770/article/details/159122365https://blog.csdn.net/2601_95543797/article/details/159122364https://blog.csdn.net/hjq9yw1d/article/details/159122369https://blog.csdn.net/ja4cpunl/article/details/159122370https://blog.csdn.net/yhgbbxn2/article/details/159122371https://blog.csdn.net/ox6ezv1x/article/details/159122372https://blog.csdn.net/2601_95543724/article/details/159122373https://blog.csdn.net/2601_95543763/article/details/159122374https://blog.csdn.net/t03salev/article/details/159122377https://blog.csdn.net/2601_95543757/article/details/159122380https://blog.csdn.net/zbjxi9q1/article/details/159122381https://blog.csdn.net/cba03o0p/article/details/159122383https://blog.csdn.net/2601_95543717/article/details/159122384https://blog.csdn.net/g0al2bfx/article/details/159122386https://blog.csdn.net/rbh5hwht/article/details/159122387https://blog.csdn.net/2601_95543742/article/details/159122388https://blog.csdn.net/nf2669oi/article/details/159122390https://blog.csdn.net/pij60c4h/article/details/159122391https://blog.csdn.net/2601_95543714/article/details/159122394https://blog.csdn.net/2601_95543774/article/details/159122393https://blog.csdn.net/qrgoa7kp/article/details/159122389https://blog.csdn.net/2601_95543732/article/details/159122396https://blog.csdn.net/gjriclos/article/details/159122397https://blog.csdn.net/j4hyx9jk/article/details/159122400https://blog.csdn.net/2601_95543712/article/details/159122415https://blog.csdn.net/lgybkgin/article/details/159122418https://blog.csdn.net/oku74m8q/article/details/159122478https://blog.csdn.net/dkuwit44/article/details/159122482https://blog.csdn.net/2601_95543998/article/details/159122507https://blog.csdn.net/fv8brnzw/article/details/159122517https://blog.csdn.net/vke1s39w/article/details/159122534https://blog.csdn.net/2601_95543990/article/details/159122536https://blog.csdn.net/gil9gmxf/article/details/159122554https://blog.csdn.net/2601_95544000/article/details/159122559https://blog.csdn.net/2601_95543997/article/details/159122561https://blog.csdn.net/teldqmc9/article/details/159122562https://blog.csdn.net/lfs22rhl/article/details/159122569https://blog.csdn.net/jnhqd33r/article/details/159122578https://blog.csdn.net/uy6jnc25/article/details/159122585https://blog.csdn.net/xzoaqmi3/article/details/159122594https://blog.csdn.net/gsrxzu1o/article/details/159122598https://blog.csdn.net/xjrr7le6/article/details/159122600https://blog.csdn.net/oku74m8q/article/details/159122605https://blog.csdn.net/vm28nrid/article/details/159122607https://blog.csdn.net/epm9of9v/article/details/159122609https://blog.csdn.net/blwqnxpd/article/details/159122615https://blog.csdn.net/i8x5vcw4/article/details/159122617https://blog.csdn.net/ixihcmxv/article/details/159122622https://blog.csdn.net/2601_95544013/article/details/159122619https://blog.csdn.net/hq4gox3t/article/details/159122626https://blog.csdn.net/rzsue5o9/article/details/159122627https://blog.csdn.net/ywr5fsie/article/details/159122629https://blog.csdn.net/s1sus9n5/article/details/159122635https://blog.csdn.net/u9hkwj7a/article/details/159122637https://blog.csdn.net/qd2n87kp/article/details/159122641https://blog.csdn.net/k2bg2yo6/article/details/159122640https://blog.csdn.net/m5a0k3jd/article/details/159122642https://blog.csdn.net/it0n7jr1/article/details/159122643https://blog.csdn.net/2601_95544011/article/details/159122646https://blog.csdn.net/rp9u59n1/article/details/159122647https://blog.csdn.net/2601_95544025/article/details/159122648https://blog.csdn.net/2601_95543998/article/details/159122681https://blog.csdn.net/vke1s39w/article/details/159122696https://blog.csdn.net/jnhqd33r/article/details/159122699https://blog.csdn.net/lfs22rhl/article/details/159122719https://blog.csdn.net/2601_95544000/article/details/159122720https://blog.csdn.net/2601_95544026/article/details/159122721https://blog.csdn.net/xjrr7le6/article/details/159122724https://blog.csdn.net/gil9gmxf/article/details/159122725https://blog.csdn.net/rzsue5o9/article/details/159122731https://blog.csdn.net/2601_95543990/article/details/159122742https://blog.csdn.net/vm28nrid/article/details/159122747https://blog.csdn.net/hq4gox3t/article/details/159122753https://blog.csdn.net/2601_95544023/article/details/159122755https://blog.csdn.net/i8x5vcw4/article/details/159122757https://blog.csdn.net/kopflstv/article/details/159122756https://blog.csdn.net/ywr5fsie/article/details/159122758https://blog.csdn.net/u9hkwj7a/article/details/159122764https://blog.csdn.net/2601_95544013/article/details/159122765https://blog.csdn.net/blwqnxpd/article/details/159122769https://blog.csdn.net/uy6jnc25/article/details/159122771https://blog.csdn.net/epm9of9v/article/details/159122773https://blog.csdn.net/yozn8xj8/article/details/159122778https://blog.csdn.net/g8a3gawf/article/details/159122774https://blog.csdn.net/2601_95543997/article/details/159122779https://blog.csdn.net/ixihcmxv/article/details/159122782https://blog.csdn.net/k2bg2yo6/article/details/159122783https://blog.csdn.net/rp9u59n1/article/details/159122784https://blog.csdn.net/gsrxzu1o/article/details/159122788https://blog.csdn.net/qd2n87kp/article/details/159122791https://blog.csdn.net/lxjt5cet/article/details/159122795https://blog.csdn.net/lukwbsv4/article/details/159122800https://blog.csdn.net/it0n7jr1/article/details/159122802https://blog.csdn.net/2601_95544011/article/details/159122804https://blog.csdn.net/s1sus9n5/article/details/159122807https://blog.csdn.net/2601_95544287/article/details/159123222https://blog.csdn.net/o0e12qge/article/details/159123225https://blog.csdn.net/dfnt4994/article/details/159123228https://blog.csdn.net/jloc6fjo/article/details/159123227https://blog.csdn.net/zktzi13l/article/details/159123229https://blog.csdn.net/j8pvgcgk/article/details/159123230https://blog.csdn.net/t55ad9gl/article/details/159123231https://blog.csdn.net/e0jf62ac/article/details/159123232https://blog.csdn.net/lxwo1xns/article/details/159123234https://blog.csdn.net/uictnkak/article/details/159123236https://blog.csdn.net/zz4x1nkx/article/details/159123237https://blog.csdn.net/2601_95544273/article/details/159123235https://blog.csdn.net/2601_95544266/article/details/159123238https://blog.csdn.net/mfqvfaod/article/details/159123240https://blog.csdn.net/2601_95544288/article/details/159123239https://blog.csdn.net/qhn10q82/article/details/159123241https://blog.csdn.net/z3n8bkbb/article/details/159123242https://blog.csdn.net/kv6v4myh/article/details/159123244https://blog.csdn.net/2601_95544278/article/details/159123245https://blog.csdn.net/rur5ywup/article/details/159123246https://blog.csdn.net/2601_95544289/article/details/159123248https://blog.csdn.net/mpnzrpbj/article/details/159123254https://blog.csdn.net/2601_95544281/article/details/159123257https://blog.csdn.net/fjzojoww/article/details/159123256https://blog.csdn.net/gttpjgf8/article/details/159123258https://blog.csdn.net/um37l30n/article/details/159123260https://blog.csdn.net/2601_95544357/article/details/159123262https://blog.csdn.net/nwjskfcd/article/details/159123263https://blog.csdn.net/kvzjgy9b/article/details/159123264https://blog.csdn.net/ptgxpabw/article/details/159123269https://blog.csdn.net/vqw4ksxv/article/details/159123270https://blog.csdn.net/o8sv7kqd/article/details/159123271https://blog.csdn.net/o3jmrfhs/article/details/159123273https://blog.csdn.net/r9fnsyjd/article/details/159123274https://blog.csdn.net/y56b2xxe/article/details/159123278https://blog.csdn.net/yyofz76j/article/details/159123279https://blog.csdn.net/bcxg6hhr/article/details/159123282https://blog.csdn.net/c235fee6/article/details/159123283https://blog.csdn.net/2601_95544300/article/details/159123284https://blog.csdn.net/v3590ssz/article/details/159123287https://blog.csdn.net/z8bkxgpy/article/details/159123289https://blog.csdn.net/2601_95544332/article/details/159123290https://blog.csdn.net/wc7rnbo6/article/details/159123293https://blog.csdn.net/2601_95544303/article/details/159123294https://blog.csdn.net/lt10dbkw/article/details/159123295https://blog.csdn.net/dc1o18ct/article/details/159123296https://blog.csdn.net/2601_95544349/article/details/159123298https://blog.csdn.net/qjcepkw9/article/details/159123299https://blog.csdn.net/2601_95544345/article/details/159123301https://blog.csdn.net/b6ek1b9e/article/details/159123303https://blog.csdn.net/iwqya947/article/details/159123306https://blog.csdn.net/a5ftslxc/article/details/159123308https://blog.csdn.net/ue0ansvl/article/details/159123310https://blog.csdn.net/2601_95544316/article/details/159123311https://blog.csdn.net/aacgya82/article/details/159123317https://blog.csdn.net/ecn3owsc/article/details/159123318https://blog.csdn.net/yqbodasv/article/details/159123319https://blog.csdn.net/v7tpagfe/article/details/159123321https://blog.csdn.net/2601_95544290/article/details/159123322https://blog.csdn.net/2601_95544265/article/details/159123312https://blog.csdn.net/pkmoy2id/article/details/159123325https://blog.csdn.net/2601_95544335/article/details/159123324https://blog.csdn.net/2601_95544301/article/details/159123326https://blog.csdn.net/jkx1wlhb/article/details/159123327https://blog.csdn.net/gtekfg7h/article/details/159123307https://blog.csdn.net/zs1vgxnc/article/details/159123297https://blog.csdn.net/fewtcr0x/article/details/159123334https://blog.csdn.net/rfbovp89/article/details/159123302https://blog.csdn.net/yzrxo4wg/article/details/159123329https://blog.csdn.net/eq4pp5z9/article/details/159123281https://blog.csdn.net/2601_95544306/article/details/159123336https://blog.csdn.net/sx40sltd/article/details/159123337https://blog.csdn.net/bup7w747/article/details/159123323https://blog.csdn.net/2601_95544354/article/details/159123340https://blog.csdn.net/fxkyomsj/article/details/159123342https://blog.csdn.net/2601_95544308/article/details/159123343https://blog.csdn.net/2601_95544272/article/details/159123338https://blog.csdn.net/u2lgmrd0/article/details/159123339https://blog.csdn.net/c3olm6o9/article/details/159123345https://blog.csdn.net/x1svfday/article/details/159123348https://blog.csdn.net/wx55o0ga/article/details/159123286https://blog.csdn.net/e2bnafk7/article/details/159123351https://blog.csdn.net/m182psbq/article/details/159123350https://blog.csdn.net/o0e12qge/article/details/159123353https://blog.csdn.net/y4liz46a/article/details/159123352https://blog.csdn.net/pu3z1oyh/article/details/159123291https://blog.csdn.net/2601_95544283/article/details/159123328https://blog.csdn.net/n8ycq01i/article/details/159123346https://blog.csdn.net/nvd46ntl/article/details/159123344https://blog.csdn.net/2601_95544275/article/details/159123360https://blog.csdn.net/cnliy4jk/article/details/159123341https://blog.csdn.net/mfqvfaod/article/details/159123361https://blog.csdn.net/2601_95544286/article/details/159123358https://blog.csdn.net/2601_95544353/article/details/159123304https://blog.csdn.net/2601_95544295/article/details/159123349https://blog.csdn.net/capkwxbp/article/details/159123331https://blog.csdn.net/w0djs1a5/article/details/159123288https://blog.csdn.net/2601_95544302/article/details/159123314https://blog.csdn.net/2601_95544325/article/details/159123316https://blog.csdn.net/2601_95544329/article/details/159123300https://blog.csdn.net/k0r9folj/article/details/159123363https://blog.csdn.net/z3n8bkbb/article/details/159123364https://blog.csdn.net/ufp38qpw/article/details/159123365https://blog.csdn.net/z9php6x7/article/details/159123366

相关文章:

WebSocket核心技术全解析

Websocket 的核心概念 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 不同,WebSocket 允许服务器主动向客户端推送数据,避免了传统的轮询机制。它通过一次握手建立持久连接,显著降低了延迟和带宽消耗。 WebSocket 协议基于…...

Python一键生成家长会PPT相册

使用Python快速批量制作16:9家长会PPT相册 在家长会或学校活动中,经常需要将学生的照片整理成PPT相册展示。手动处理大量照片效率低下,Python的python-pptx库可以自动化完成这一任务,支持横版和竖版照片混排,并自动添加文件名标题…...

杭州柏来科技有限公司:7kW-2400kW 全功率充电桩源头厂家,打造全场景智慧充电解决方

在新能源充电基础设施向大功率化、智能化、场景化深度发展的当下,选择一家兼具核心技术自研、全场景产品布局、规模化产能供应的充电桩源头厂家,是物业、城投、能源企业、物流园区等合作方落地充电项目的核心关键。杭州柏来科技有限公司作为国内领先的分…...

MySQL【内置函数】

一、日期函数 1.1 基础获取时间 / 日期 -- 获取当前日期 select current_date(); -- 结果示例:2017-11-19 -- 获取当前时间 select current_time(); -- 结果示例:13:51:21 -- 获取当前时间戳(推荐now()) select current_timestam…...

别被 30 万 Star 冲昏头脑:实测信创版 OpenClaw,谁才是企业 LLM 落地的“真命天子”?

摘要 2026 年 3 月,开源智能体项目 OpenClaw(大龙虾)凭借 v2026.3.12 版本的“日更级”迭代和 30 万 GitHub Star 彻底破圈。然而,在信创国产化浪潮下,这款极客圈的“神作”能否真正啃下政企数字化转型的硬骨头&#x…...

2026护眼大路灯哪个牌子好用又便宜?护眼大路灯推荐排行榜前十名

最近护眼大路灯被越来越多人熟知,有不少宝子们都会留言问:2026护眼大路灯哪个牌子好用又便宜?作为一名家电测评博主,我也会经常接触护眼大路灯。护眼大路灯通过上下发光同时模拟自然光,能够呈现出宽广舒适且如何照明的…...

GEO,AI界的“大冤种”

技术的迭代,AI已经不单纯是内容的创作者,它在演变为经济活动的独立参与者。在自主代理技术的加持夏,这个看似完美的自动化商业闭环中,却出现了极具讽刺的一幕,聊天机器人自己投放广告,流量产生了点击发生了…...

水文模型研究范式:从大规模诊断到多范式融合

# 一、研究思路与内容概括## 研究思路本研究遵循"**从质疑常规→系统性实验→提供普适性工具**"的完整闭环:**1. 提出根本性质疑**传统"唯径流论"的模型评估方法是否可靠?隐含假设"只要能模拟好径流,模型内部 ET 过…...

融合 生成式AI × 多模态感知 × 数字孪生城市 × 智能决策系统重构城市治理与产业智能化模式

融合 生成式AI 多模态感知 数字孪生城市 智能决策系统 重构城市治理与产业智能化模式一、数字时代的空间智能基础设施随着人工智能、大数据与城市数字化建设不断推进,城市管理系统正从传统的信息化阶段进入智能化阶段。然而,目前绝大多数城市系统仍停…...

算法备案安全自评估报告模版分享

算法备案安全自评估报告是算法备案的核心技术合规文件,需完整覆盖算法全链路、风险识别、防控措施、合规承诺四大核心模块,做到技术清晰、风险真实、措施可落地、证据可追溯。 一、算法安全自评估报告核心内容 1. 算法基本信息 算法概况:名称…...

【IT】技术人如何系统学习AI大模型应用开发?非常详细收藏我这一篇就够了

从理论认知到全栈落地的完整指南 一、认知突破:理解大模型的技术本质(1-2周) 1.1 基础理论筑基 必学内容 大模型演进脉络:从Transformer到GPT-4的技术跃迁核心机制解析:注意力机制、位置编码、自监督学习关键能力边界…...

《国内开发者必看!Claude API Key获取及使用全攻略》

一、Claude API核心价值 Claude API 是 Anthropic 公司为开发者提供的人工智能接口服务,基于 Claude 大模型(如 Claude 3 Opus、Sonnet 等)构建,支持文本生成、代码处理、逻辑推理等多元场景。对于开发者而言,它不仅是…...

如何删除 iPhone 上的多个联系人?

如果您有数十个或几个联系人并希望快速删除它们,那么批量删除就是最佳选择。这将节省您的时间,并让您的联系人列表干净整洁,以方便新收到的联系人。在 iPhone 上删除多个联系人并不像听起来那么容易。然而,一个问题仍然萦绕在你的…...

直击痛点,校招怎么留住人才?

每年秋招、春招结束后,HR 部门的工作并没有真正画上句号。很多企业花了大量精力从高校中筛选出优秀的应届生,发出 Offer、签订三方协议,满心期待新鲜血液的注入——然而现实却一再给出沉重打击:Offer 被毁约、入职后三个月离职、试…...

C++类入门:从学生类到立方体类的实践

在C中,类(class)是面向对象编程的核心,它允许我们将数据(属性)和操作(方法)封装在一起。本文将通过多个代码示例,逐步讲解C类的基本概念、权限控制、封装特性以及成员函数…...

C语言的由来、发展、应用及特点全介绍,快来学习

关于C语言的介绍 C语言是基于一种被称作B语言的基础之上,克服了因B语言依赖机器且不存在数据类型等方面局限性而开发的语言。以下包含关于C语言的由来,关于C语言的发展,关于C语言的应用,关于C语言的特点等方面的知识,欢…...

28天每天2小时速通蓝桥杯国赛(1/28)

今天学习了滤波,串口,ds1302,数码管,按键,ne555,内存管理,并学习了keil中的基本调试方法第一周按照计划学习考点和理解模板,明天应该就差不多可以把所有考点资料学完,然后…...

对抗Facebook审核机制:如何钻系统空子

大家好!我是天工开户。刚开始跑的时候,我的素材总是被禁,搞得人又烦又浪费时间。我试了好多规避审核的方法,最后就固定下来两种:一个是商品目录法,另一个是语言切换法(通过改语言上传&#xff0…...

公司终于下手了:去 Qt 化第一刀,先砍 Modbus

这两年,很多公司嘴上还没喊“彻底放弃 Qt”, 但动作已经很诚实了。 新项目不想再上 Qt。 老项目能不扩就不扩。 只要一提新增功能,很多领导第一反应已经变成: 这次能不能别再继续绑 Qt 了? 说白了,Qt 现在…...

奇兵到家闪耀东莞名家具展:攻克“最后一公里”,别让售后熄灭品牌的光

三月的东莞厚街,春意盎然,人流如织。第55届国际名家具(东莞)展览会正如火如荼进行中,“聚光”之下,是东莞家具从“制造”向“品牌”跃升的雄心。但有一个尴尬的现实,许多东莞家具老板心知肚明&a…...

VHM:多功能且诚实的遥感视觉语言模型

图解VHM:多功能且诚实的遥感视觉语言模型 开篇导读 在遥感图像分析领域,一个令人兴奋的突破正在发生:视觉语言模型(VLMs)正在学习"看懂"卫星图像。但问题也随之而来——现有的模型要么"看"得不够全…...

mysql转postgres 字段定义备忘

create or replace function bool_to_int(boolean) returns int2 as $$ select CAST($1::int as int2); $$ language sql strict; create cast (bool as int2) with function bool_to_int(boolean) as implicit;...

字符串!!!!

1.在字符串中赋整数值 一定要注意是赋字符还是数字 &#xff01;&#xff01;数字也要加单引号变成字符2.很容易看错 tolower的头文件是#include<cctype>3.今天有好几次 把小写l看成数字1 以及大小写看错 这是字符串里面一出现就要避雷的&#xff01;&#xff01;&#x…...

GD60920你一定很少听说,但它可能就在你身边:智能照明应用解决方案分享(全文干货)

GD60920红外传感器 照明场景人体感应应用解决方案 精准感知 智能照明 一、项目背景 当前照明智能化已成为家居、工业、商业领域的主流趋势&#xff0c;人体感应照明作为节能化、便捷化的核心方案&#xff0c;可有效解决传统照明长亮耗电、手动控制繁琐等问题。 但传统红外…...

HTB - VariaType

10.129.8.159nmap扫描 sudo nmap --top-ports 10000 10.129.8.159 --min-rate1000 -oA ips_quick_TCP_nmapscan && sudo nmap --top-ports 10000 10.129.8.159 --min-rate1000 -sU -oA ips_quick_UDP_nmapscan && nmap -p- 10.129.8.159 -oA ips_full_TCP_nmap…...

Nginx 安全防护与 HTTPS 部署实战全解析

在互联网技术高速发展的当下&#xff0c;Web 服务的安全性和可靠性成为企业与开发者的核心关注重点。Nginx 作为高性能 Web 服务器和反向代理工具&#xff0c;凭借轻量级、高并发处理能力和灵活模块化设计&#xff0c;占据全球近三分之一的 Web 服务器市场份额。但随着 DDoS、S…...

10分钟搞定SCI插图的秘密武器

对于每一位奋斗在一线的科研人员来说&#xff0c;做实验、跑数据或许是家常便饭&#xff0c;但每当论文撰写进入尾声&#xff0c;明明有着惊艳的实验数据和扎实的创新观点&#xff0c;却因为一张“惨不忍睹”的配图&#xff0c;让整篇论文的档次大打折扣。这恐怕是许多科研人心…...

AI智能应用开发(Java)起点-终点 -1、java的前世今生andJava环境配置、jdk下载,以及Idea下载和基本应用

一、JAVA的诞生与成长 起源&#xff1a;Green Team与Java的诞生 Java的起源可以追溯到1990年代&#xff0c;当时Sun Microsystems成立了一个名为Green Team的特别小组&#xff0c;旨在开发一种新型软件以驱动消费电子设备。这个项目的核心成员包括后来被称为“Java之父”的Ja…...

从后台管理到 IoT 远程控表,这个 Spring Boot 3 开源项目把能耗管理链路做完整了

最近看了不少 Java 开源项目&#xff0c;有一个很明显的感受&#xff1a;很多项目页面做得不少&#xff0c;接口也挺全&#xff0c;但真往下看&#xff0c;要么偏后台 CRUD&#xff0c;要么只覆盖某个局 部能力&#xff0c;很难看到一条完整业务链路。 ems4j 给我的感觉不太一样…...

RWKV-7 G1e 系列模型开源,性能表现亮眼

2026 年 3 月&#xff0c;RWKV-7 G1e 系列推理模型开源发布&#xff0c;涵盖 13.3B/7.2B/2.9B/1.5B 等不同规格。该模型在评测和实战中表现出色&#xff0c;且具备高并发推理能力。模型发布情况2026 年 3 月&#xff0c;RWKV-7 G1e 系列推理模型正式开源&#xff0c;目前已发布…...