Wireshark进阶实战:15分钟定位真实网络故障根因

news2026/5/23 18:16:50
1. 这不是“又一个Wireshark教程”而是我三年里修过的27个真实网络故障现场你打开Wireshark看到满屏滚动的TCP、HTTP、DNS包心里发虚——不是不会点“开始捕获”而是根本不知道该盯哪一行、为什么这一行比那一行重要、哪个字段异常才是真正要命的信号。我刚接手第一台生产环境核心交换机告警时也是这样Ping延迟突增到800ms监控图上红得刺眼但Wireshark抓出来的包看起来“都挺正常”。直到我把时间戳精度调到微秒级才在第3724个包和第3725个包之间发现了一段217毫秒的静默间隙——那不是丢包是某台老旧防火墙在处理特定TLS扩展时触发了固件级死锁。这期内容不讲“Wireshark界面长什么样”“怎么过滤HTTP”那些早该过了。我们直奔一线工程师每天真正在做的事当业务系统突然卡顿、API响应超时、用户投诉“页面打不开”你坐在工位前手边只有笔记本和网线如何用Wireshark在15分钟内定位根因它能帮你识别出被伪装成正常HTTPS流量的C2通信也能揪出因MTU配置错位导致的TCP分片重传风暴甚至能从看似随机的SYN包时间间隔中判断出某台服务器正被慢速攻击Slowloris悄悄拖垮。关键词全部落在实操场景里Wireshark进阶实战、网络故障排查、异常流量识别、TCP重传分析、DNS隧道检测、TLS握手异常诊断、微秒级时序分析。适合已经能熟练使用display filter、知道三次握手流程、但一遇到真实复杂问题就卡壳的中级网络/运维/安全从业者。如果你还在纠结“tcp.flags.syn 1”怎么写建议先回看前三期但如果你已经抓过包、也改过filter却依然说不清“为什么这个RST包是合理的而那个RST包意味着服务崩溃”那你来对地方了。接下来所有内容都来自我亲手处理过的27个故障案例——有金融客户交易失败、有电商大促期间支付网关雪崩、也有政务云平台DNS劫持事件。没有理论堆砌只有每一步操作背后的“为什么必须这样看”。2. 故障排查不是猜谜而是建立三层证据链时间轴→协议行为→设备状态很多人把Wireshark当成“高级Ping工具”看到红色RST包就喊“连接被拒绝”看到黄色警告就以为“DNS解析失败”。结果呢重启服务、清DNS缓存、换网线……全试一遍问题照旧。真正的故障排查必须构建三层递进式证据链时间轴异常 → 协议交互断裂 → 底层设备或策略干预。漏掉任何一层结论都可能是错的。我见过最典型的反面案例某银行APP登录超时运维同事抓包发现大量TCP Retransmission立刻断定“网络丢包严重”要求运营商查光路。结果折腾三天最后发现是APP客户端SDK在Android 12上对TLS 1.3的ALPN协商存在bug导致服务端反复重发ServerHello而Wireshark默认只显示首帧后续重传包被折叠——他根本没展开那个带“[TCP Spurious Retransmission]”标记的包树。2.1 时间轴微秒级精度才是故障定位的起点Wireshark默认时间戳显示到毫秒如10:23:45.123这对日常浏览完全够用但在排查时延敏感型故障时等于蒙眼开车。比如判断是否为“中间设备引入延迟”关键要看请求包发出与响应包到达之间的实际往返时间RTT而非应用层感知的“总耗时”。后者包含CPU调度、进程排队、数据库查询等所有环节而前者只反映网络路径本身。操作步骤右键任意TCP数据包 →Protocol Preferences → TCP → 勾选“Calculate conversation timestamps”在Packet List面板右键列标题 →Column Preferences → Add Column → Field type: “tcp.time_delta”相邻包时间差或“tcp.analysis.ack_rtt”ACK确认RTT关键技巧按CtrlShiftT切换时间显示格式选择**“Seconds since beginning of capture”**并右键列标题 →Edit Column → 设置Decimal Places为6即显示微秒为什么必须到微秒举个真实案例某CDN节点回源超时监控显示平均RTT 42ms但业务方反馈偶发1.2秒卡顿。抓包后发现99%的包RTT在38–45ms之间但每隔约8.3秒就出现一个RTT为1198ms的包。进一步分析时间戳序列发现这些“长RTT包”严格等间隔出现且恰好对应Linux内核net.ipv4.tcp_retries2参数默认值15次耗尽后触发的最终RST。这不是网络问题而是后端服务在高负载下无法及时响应SYN-ACK导致客户端重传至超时。若只看毫秒级时间戳这1198ms会被四舍五入为1.2秒你永远看不出它和8.3秒周期的关联。提示开启“Relative Time”列右键列标题 → Column Preferences → Add Column → Field type: “frame.time_relative”可快速定位故障发生时刻。例如业务日志记录“2023-08-15 14:22:33.876 ERROR: Payment timeout”你在Wireshark中输入frame.time_relative 1356.876 frame.time_relative 1356.877即可精准跳转到那一毫秒内的所有包。2.2 协议行为从“包存在”到“交互逻辑是否成立”看到一个HTTP 200 OK包不代表业务成功看到三次握手完成不代表连接可用。协议行为分析的核心是验证状态机是否按规范流转。Wireshark的“Expert Info”功能菜单栏Analyze → Expert Info就是你的协议逻辑审计员但它默认只显示严重错误Errors而大量隐患藏在Warnings和Notes里。重点盯紧三类Warning“TCP Out-Of-Order”不一定是丢包可能是多路径路由ECMP导致包乱序也可能是接收端窗口太小被迫分片。需结合tcp.window_size和tcp.window_size_scale判断。“TCP Retransmission”区分“正常重传”如快速重传Fast Retransmit伴随3个重复ACK和“可疑重传”单个包反复重传超5次。后者往往指向网卡驱动bug或物理层干扰。“HTTP Decompression failed”表面是解压失败深层原因可能是服务端返回了Content-Encoding: gzip但实际未压缩或客户端Accept-Encoding头被中间设备篡改。实战案例某视频平台直播卡顿。抓包发现大量HTTP/1.1 206 Partial Content响应但播放器持续缓冲。展开一个206包看Content-Range头bytes 1048576-2097151/1073741824。计算偏移量1048576 ÷ 1024 1024KB而标准HLS切片大小为8MB8388608字节。这意味着服务端返回的切片起始位置根本不在8MB边界上——是CDN节点缓存索引错乱将不同版本的切片混存。Wireshark本身不报错但Content-Range数值违背了HLS协议约定这就是协议行为层面的“逻辑断裂”。2.3 设备状态从包里读出防火墙、WAF、IDS的真实反应很多故障并非网络层问题而是安全设备“好心办坏事”。Wireshark不能直接告诉你“这是WAF拦截”但它留下的蛛丝马迹足够推断。关键看三个特征RST包的源IP与目的IP是否匹配业务流正常服务崩溃产生的RST源IP应为服务端真实IP。若RST源IP是某个10.0.0.0/8网段地址如10.10.20.5而你的服务部署在192.168.5.100那基本可断定是旁路部署的WAF或透明代理在主动干预。RST包的序列号Seq是否为0RFC 793规定合法RST包的Seq应为“期望接收的下一个字节序号”。若抓到Seq0的RST99%是状态不匹配的“伪造RST”常见于会话表溢出的防火墙。是否存在“空包”Zero-Length Packet某些IDS在检测到攻击特征如SQL注入payload后会向客户端发送一个纯ACK包无数据、无标志位意图“软中断”连接。这种包在Wireshark中显示为TCP 0BLength0Flags...A..且后续无任何数据包跟进。它不像RST那样粗暴断连但足以让HTTP Keep-Alive失效。我处理过一个政务系统登录失败案例用户输入正确账号密码页面却提示“验证码错误”。抓包发现登录请求POST /login发出后服务端返回了HTTP/1.1 200 OK但响应体为空。展开响应包Content-Length: 0。再看请求包Cookie: JSESSIONIDABC123...; verify_codexyz789。问题来了verify_code这个Cookie本该由前端JS生成并随请求提交但Wireshark显示其值为xyz789——一个固定字符串。而真实验证码服务返回的应是动态token。最终定位到某台老旧WAF设备启用了“Cookie签名验证”功能但密钥配置错误导致所有verify_code Cookie被统一替换为默认值。Wireshark没告诉你WAF存在但它用Cookie字段的异常值和Content-Length: 0的响应完整还原了设备干预链条。3. 异常流量识别绕过表象直击七层载荷与四层行为的矛盾点识别恶意流量绝非靠“找陌生IP”或“看加密流量比例”。真正的高手是在HTTPS流量里发现C2信标在DNS查询中嗅出数据渗出在看似正常的TLS握手里捕捉到心跳包异常。核心逻辑只有一个当四层传输行为与七层应用语义发生不可调和的矛盾时必有异常。3.1 DNS隧道不是“查域名”而是“查查询模式与响应规律”DNS隧道利用DNS协议的查询/响应机制传递数据其本质是将任意二进制数据编码为子域名通过递归查询实现隐蔽通信。Wireshark里它看起来就是一堆Standard query A? xxxxxxxx.attacker.com。但正常业务DNS查询有鲜明特征而隧道流量则暴露在统计规律中。你需要建立四个基线指标并对比偏离度指标正常业务基线DNS隧道典型特征Wireshark验证方法查询域名长度平均32字符如api.payment.example.com63字符且长度高度一致如固定72字符dns.qry.name.len 63配合Statistics → Protocol Hierarchy看分布查询类型分布A/AAAA/MX/SRV混合A记录占比通常60%99%为A记录最易编码极少MX或TXTFilter:dns.qry.type 1看占比响应时间RTT递归查询通常200ms根域查询1s因需经多层转发RTT普遍1.5s且方差极小dns.time 1.5并用IO Graph画RTT趋势图子域名熵值业务域名有明确语义如order-20230815-001熵值低随机Base32/64编码子域名部分呈现高熵无规律字符手动抽样10个dns.qry.name用在线工具计算Shannon熵真实案例某企业内网出现不明外联。抓取出口防火墙镜像流量过滤dns ip.dst 8.8.8.8发现大量A? 3a7f9c2d1e8b4a6f.attacker.net。长度72字符全部为A记录RTT稳定在1.823±0.005s。导出所有dns.qry.name到文本用Python脚本计算前16字符3a7f9c2d1e8b4a6f的熵值结果为4.78接近最大值5.0远超正常业务域名的1.2~2.3。这已构成强证据。后续用tshark -r dns.pcap -Y dns.qry.name.len 72 -T fields -e dns.qry.name domains.txt批量提取再Base32解码果然还原出C2指令。注意不要迷信“DNS over HTTPSDoH”能完全规避检测。DoH只是将DNS查询封装进HTTPS其TLS SNI字段Client Hello中的server_name仍明文暴露目标域名。过滤tls.handshake.extensions_server_name一样能发现attacker.net。3.2 TLS异常从握手细节窥探中间人与恶意客户端TLS握手是HTTPS的基石但也是攻击者最爱动手脚的地方。Wireshark的SSL/TLS解析能力极强关键在于读懂Client Hello和Server Hello里的每一个扩展字段。必须检查的五个致命信号Client Hello中supported_groups缺失P-256现代浏览器和服务端默认支持secp256r1P-256。若Client Hello里supported_groups只列出x25519、secp384r1却唯独没有secp256r1大概率是定制化恶意客户端如某些挖矿木马为规避基于P-256的证书白名单检测。Server Hello中cipher_suite为TLS_RSA_WITH_AES_128_CBC_SHA这是TLS 1.0时代的古董套件2020年后主流服务端已禁用。若某新上线的Web服务返回此套件说明它背后可能运行着未更新的老旧网关或已被植入恶意证书。Client Hello中application_layer_protocol_negotiation (ALPN)为空或仅含http/1.1现代HTTPS服务尤其CDN普遍支持HTTP/2。若Client Hello的ALPN列表里没有h2而服务端又强制降级到HTTP/1.1需警惕客户端是否为扫描器如nmap的ssl-heartbleed脚本。Server Hello后无Certificate消息除特殊情况如TLS 1.3的0-RTTServer Hello后必须紧跟Certificate。若缺失要么是服务端配置错误要么是中间人设备如企业上网行为管理用自签名证书替代了真实证书而Wireshark因未导入其CA证书无法解密故不显示Certificate帧。Client Key Exchange后立即出现Change Cipher Spec Encrypted Handshake Message这是TLS 1.2的正常流程。但若在Change Cipher Spec之后紧接着又出现一个未加密的Alert消息如Decryption failed则表明客户端或服务端的加密库存在严重漏洞如POODLE攻击利用场景。我曾协助一家电商平台处置“虚假订单”事件。风控系统发现大量同一IP发起的支付请求但Wireshark抓包显示这些请求的TLS Client Hello中supported_versions扩展只包含0x0304TLS 1.3而supported_groups却赫然列出ffdhe2048临时DH组——这在标准TLS 1.3中是非法的因为1.3已废弃静态DH强制使用ECDHE。进一步追踪发现该IP对应的User-Agent是curl/7.64.0但curl 7.64.0根本不支持TLS 1.3。结论这是用OpenSSL 1.1.1魔改版构造的恶意客户端专门绕过平台对TLS版本和密钥交换算法的校验。3.3 HTTP异常当“标准协议”成为攻击者的伪装布HTTP协议设计之初就强调“容错性”这给了攻击者巨大空间。Wireshark里你要学会质疑每一个“理所当然”的字段。Host头与SNI不一致Client Hello的SNI是shop.example.com但HTTP请求的Host头却是admin.example.com。这违反RFC 2818正常浏览器绝不会如此。常见于Webshell或代理工具利用SNI建立连接再用Host头切换后端虚拟主机。Content-Length与实际Body长度不符Content-Length: 1024但Wireshark显示该HTTP包总长度Frame仅980字节。这要么是服务端Bug要么是攻击者故意发送畸形包触发解析器漏洞如HTTP Request Smuggling。Transfer-Encoding: chunked 但无chunk标准chunked编码以0\r\n\r\n结尾。若抓到Transfer-Encoding: chunked但后续无任何chunk数据即Body为空且Connection: close则极可能是探测性请求测试服务端对分块编码的处理逻辑。最隐蔽的案例某SaaS平台API响应缓慢。抓包发现所有POST /api/v1/data请求响应头中Content-Encoding: gzip但Wireshark解压后响应体却是明文JSON且gzip校验失败Wireshark标记为[Decompression failed]。深入看请求头发现Accept-Encoding: gzip, deflate, br而服务端却只返回gzip。问题出在某台WAF设备启用了“强制gzip压缩”策略但它对POST请求体的压缩逻辑有bug将未压缩的JSON直接加上gzip头发送。Wireshark的解压失败警告成了唯一能指出WAF存在缺陷的证据。4. 进阶实战工作流一套可复用的15分钟标准化排查模板再好的技术没有固化为流程就只是零散技巧。我把三年故障排查经验浓缩成一套开箱即用的15分钟Wireshark实战工作流。它不依赖经验直觉而是用确定性步骤覆盖90%以上的常见故障。你只需按顺序执行每步输出明确结论就能逼近真相。4.1 第1–3分钟建立基线与聚焦问题域目标排除干扰锁定故障发生的时间窗口和协议范围。启动Wireshark设置Capture Filter非Display Filter若问题在特定服务host 192.168.5.100 and port 443服务端IP端口若问题在客户端侧host 10.0.1.20 and not port 53排除DNS噪音关键原则Capture Filter在内核层过滤极大降低CPU占用和丢包风险。Display Filter只是显示过滤包已抓到内存里。点击Start复现故障如刷新网页、点击按钮、执行curl命令同时用手机秒表计时记下故障发生的确切时刻如“14:22:33”停止捕获用Time Reference标记故障点在Packet List中找到最接近故障时刻的包 → 右键 →Set Time Reference快捷键CtrlT此时所有包的时间戳变为相对于该点的偏移量如0.002345便于精确定位前后500ms内的所有交互。提示若无法精确复现可用Statistics → IO Graph设置Y轴为tcp.analysis.retransmissionsX轴为时间找出重传峰值时刻再设为Time Reference。4.2 第4–7分钟三层证据链初筛目标用三个Filter快速完成时间轴、协议、设备三层扫描。时间轴异常扫描输入Filtertcp.time_delta 0.1100ms查看结果若大量包间隔100ms说明网络层存在严重延迟或抖动。进一步对这些包右键 →Follow → TCP Stream看是否为同一条连接。若是问题在该连接的服务端或中间链路。协议行为断裂扫描输入Filtertcp.analysis.lost_segment || tcp.analysis.retransmission || tcp.analysis.duplicate_ack查看结果若重传率2%或存在lost_segment需进入TCP分析。关键动作选中一个重传包 → 右键 →Protocol Preferences → TCP → 勾选“Allow subdissector to reassemble TCP streams”然后Follow TCP Stream观察重传前后的数据流完整性。设备干预扫描输入Filtertcp.flags.reset 1 ip.src ! 192.168.5.100假设服务端IP为192.168.5.100查看结果若RST源IP是内网其他地址如10.10.20.5立即怀疑WAF/防火墙。验证对该RST包右键 →Follow → TCP Stream看它是否终结了本该成功的连接。4.3 第8–12分钟深度协议解剖目标针对筛选出的异常包进行协议层深挖。若发现大量TCP重传选中第一个重传包 →Follow TCP Stream在弹出窗口中点击**“Save As”**保存为stream.pcap用tshark -r stream.pcap -T fields -e tcp.stream -e tcp.seq -e tcp.ack -e tcp.len -e tcp.flags -o tcp.analyze_sequence_numbers:true分析序列号连续性重点关注tcp.analysis.out_of_order和tcp.analysis.fast_retransmission字段若发现DNS异常Filterdns dns.flags.response 0只看查询右键任一包 →Prepare as Filter → Selected → A or B得到dns.qry.name contains attacker将attacker替换为实际可疑域名再加 dns.qry.type 1批量提取导出后用xxd -p -c 1000 | tr -d \n | base32 -d 2/dev/null | strings尝试解码若TLS握手异常Filtertls.handshake.type 1Client Hello展开该包 →Transport Layer Security → Handshake Protocol → Client Hello → Extensions逐项检查supported_versions,supported_groups,alpn,key_shareTLS 1.3必需对比正常流量如用Chrome访问同一URL抓包用Statistics → Compare功能做差异高亮4.4 第13–15分钟交叉验证与结论输出目标用至少两种独立证据锁定根因形成可交付结论。网络层问题如丢包、延迟证据1ping -t 192.168.5.100持续10秒记录丢包率和最大延迟证据2Wireshark中icmp icmp.type 8Echo Request与icmp icmp.type 0Echo Reply的匹配率 95%结论模板“故障由核心交换机至应用服务器链路丢包实测丢包率12%导致建议检查交换机端口CRC错误计数。”服务端问题如进程阻塞、DB超时证据1Wireshark中http http.request.method POST的响应时间http.time5s的包占比 30%证据2服务端top -H -p $(pgrep -f java.*payment)显示某线程CPU占用100%结论模板“支付服务Java进程内PaymentProcessorThread线程死锁导致HTTP请求积压建议jstack分析线程栈。”安全设备干预如WAF误判证据1Wireshark中RST包源IP为10.10.20.5且tcp.seq 0证据2WAF管理界面日志显示[BLOCK] RuleID: 920350 - SQL Injection Attack匹配该请求的sqlmap特征结论模板“WAF规则920350将正常业务参数?id123误判为SQL注入建议临时禁用该规则并提交白名单。”这套流程我已在团队内部推行新人经过两次带教即可独立完成80%的常规故障排查。它不追求“炫技”只确保每一步都有据可查、每一处结论都有双重验证。Wireshark不是万能的但它是最诚实的证人——只要你问对问题它从不说谎。5. 我踩过的最深的三个坑以及为什么它们至今让我半夜惊醒有些教训不写下来迟早会重蹈覆辙。这三期内容里我刻意避开了那些“教科书式”的经典错误专挑我在真实高压环境下亲手栽进去、花了数小时甚至数天才爬出来的坑。它们不常被提及但一旦踩中代价巨大。5.1 坑相信“Wireshark自动解密TLS”却忘了SNI和证书的绑定关系场景某金融客户要求我们分析其App与后端API的HTTPS通信。他们提供了私钥server.key我兴冲冲导入WiresharkEdit → Preferences → Protocols → TLS → RSA keys list设置192.168.5.100,443,http,server.key。结果90%的流量依然显示为Encrypted Application Data。我反复检查私钥格式、密码、IP端口甚至重装Wireshark折腾4小时。根因该API服务采用SNIServer Name Indication虚拟主机同一IP192.168.5.100上托管了api.bank.com和admin.bank.com两个域名各自使用不同证书。而Wireshark的RSA keys list只支持IP,Port,Protocol,KeyFile四元组无法指定SNI。当客户端在Client Hello中声明sniapi.bank.com时服务端返回api.bank.com的证书但Wireshark却用admin.bank.com的私钥去尝试解密——必然失败。破局必须用SSLKEYLOGFILE环境变量。在启动App的终端中执行export SSLKEYLOGFILE/tmp/sslkey.log ./bank_app然后在Wireshark中设置Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename为/tmp/sslkey.log。此文件由客户端支持NSS Key Log Format的浏览器或App在TLS握手时实时写入密钥材料Wireshark据此可100%解密所有SNI流量。教训RSA私钥解密只适用于传统单域名、无SNI的场景。现代云服务、CDN、K8s Ingress几乎全部依赖SNISSLKEYLOGFILE才是唯一可靠方案。别再浪费时间调试RSA keys list了。5.2 坑用“tcp.port 443”过滤HTTPS却忽略了HTTP/2的ALPN协商场景大促期间支付网关偶发超时。我过滤tcp.port 443抓包看到大量HTTP/2 HEADERS帧一切正常。但业务日志显示超时请求的http.time高达8秒。百思不得其解。根因HTTP/2连接复用。一个TCP连接端口443上可能承载数十个HTTP/2流Stream ID。tcp.port 443只过滤了连接却无法区分具体是哪个流出了问题。而Wireshark默认将HTTP/2流聚合显示你看到的“HEADERS”帧其实是多个流的混合视图。破局必须用HTTP/2专用过滤器。查看单个流http2.streamid 55是流ID查看所有流的起始帧http2.type 0x0HEADERS帧关键技巧在Packet Details面板展开HyperText Transfer Protocol 2 → HEADERS → Header Block Fragment右键任意header →Apply as Filter → Selected → A or B即可得到http2.header.name :path http2.header.value /pay精准定位支付路径的流。教训HTTP/1.1时代“端口协议”的映射成立HTTP/2时代一个端口无数个逻辑通道。不掌握http2.streamid和http2.type你永远在看“模糊的全景图”而非“清晰的手术刀切片”。5.3 坑坚信“UDP无连接”却在VoIP故障中忽视ICMP的致命提示场景某企业VoIP电话频繁单通只能听不能说。抓取SIP信令UDP 5060和RTP媒体流UDP 16384-32767一切看似正常INVITE/200 OK交互完整RTP包持续发送。但Wireshark的IO Graph显示RTP接收速率udp.len 100在通话30秒后骤降至0。根因网络路径中某台防火墙启用了UDP连接跟踪UDP Stateful Inspection其超时时间UDP Timeout被设为30秒。当RTP流静音无语音包超过30秒防火墙认为连接已“死亡”删除会话表。后续语音包到达时因无匹配会话被直接丢弃。而Wireshark只抓到了“发出去的包”没抓到“被丢弃的包”。破局必须同时抓取ICMP Destination Unreachable包。Filtericmp.type 3 icmp.code 1Host Unreachable或更通用icmp icmp.type 3当RTP包被防火墙丢弃时它常会向源IP返回ICMP Type 3 Code 1Host Unreachable或Code 3Port Unreachable。这个ICMP包就是防火墙“已删除会话”的铁证。教训UDP虽无连接概念但现代中间设备防火墙、NAT普遍对其实施“伪连接跟踪”。排查UDP故障ICMP是比UDP本身更关键的线索。永远记得加一个icmp过滤器扫一眼。这三期内容我写得很慢因为每个案例背后都是真实的业务停摆、客户的焦虑电话、凌晨三点的咖啡渍。Wireshark不是玩具它是网络世界的X光机。你按下“Start Capture”的那一刻就接过了诊断的责任。希望这些带着体温的经验能让你下次面对满屏数据时少一分慌乱多一分笃定。毕竟真正的进阶不在于你会多少命令而在于你知道——当世界一片混沌该把目光投向哪一行字节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2638498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…