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

网络排障利器netstat:从TCP状态机到实战故障排查

1. 网络排障的“听诊器”为什么是netstat在服务器运维、后端开发或者日常处理网络问题的过程中我们经常会遇到一些让人头疼的场景服务端口明明启动了客户端却死活连不上服务器负载莫名飙升怀疑有异常连接但无从下手或者想关掉一个服务却发现端口被未知进程占用。每当这种时候我第一个掏出来的“听诊器”往往不是tcpdump那样的“X光机”而是netstat。这个看似古老、输出信息密密麻麻的命令却是快速透视系统网络连接状态的瑞士军刀。netstatnetwork statistics命令几乎存在于所有主流的操作系统上无论是Linux、macOS还是Windows。它的核心价值在于它能以文本形式清晰地展示出当前系统中所有网络连接、路由表、接口统计等信息。对于故障排查而言它提供的是一个“瞬间快照”。通过这个快照我们可以迅速回答几个关键问题系统上现在有哪些活跃的连接它们的状态是什么是谁哪个进程发起的这些连接这些连接占用了哪些端口这对于定位“连接不上”、“端口占用”、“流量异常”等问题是至关重要的第一手情报。很多新手可能会觉得netstat的输出不够直观或者更倾向于使用ss、lsof等更现代的工具。这没错ss命令特别是Linux上在很多方面确实比netstat更高效。但netstat的普适性和信息组织的经典性使其依然是跨平台排查和快速上手的不二之选。掌握netstat就像是学会了看一份标准的化验单无论机器是什么“品牌”你都能快速读懂它的“网络健康指标”。接下来我就结合自己踩过的无数个坑系统地梳理一下如何用netstat进行高效故障排查。2. 核心思路像侦探一样解读连接状态使用netstat排查故障绝不是简单地运行一下命令然后看一眼了事。它需要你带着问题像侦探分析线索一样去解读每一行输出背后的含义。整体的思路可以归纳为“由面到点逐层深入”。2.1 从全局扫描到精准定位首先你需要一个全局视野。运行netstat -tunlpLinux/Unix或netstat -anoWindows这样的组合命令获取一份完整的TCP/UDP连接及监听端口清单并关联上进程IDPID。这份清单就是你的“案发现场全景图”。拿到全景图后根据你的具体问题开始聚焦问题A某个端口如8080无法访问。在图里搜索:8080看是否有进程正在监听LISTEN状态。如果没有那问题很可能是服务根本没启动。如果有监听看监听地址是0.0.0.0:8080还是127.0.0.1:8080。如果是后者说明服务只绑定了本地回环地址只有本机才能访问远程自然连不上。这是一个非常常见的配置错误。检查防火墙规则但netstat本身不查防火墙它只告诉你系统层面的“事实”。问题B怀疑有异常或大量连接导致负载高。观察ESTABLISHED状态连接的数量和来源IP。如果发现大量来自同一个或少数几个IP的短连接可能处于TIME_WAIT状态可能是CC攻击或程序没有复用连接。查看CLOSE_WAIT状态连接的数量。如果这个数字异常高且持续增长几乎可以断定是你的应用程序没有正确关闭连接只调用了close()但对方已关闭或程序逻辑有问题导致连接资源泄露。这是生产环境一个经典的故障点。问题C想启动服务提示端口已被占用。直接在全景图中搜索该端口找到占用它的进程PID。根据PID通过ps或任务管理器找到具体进程判断是否可以安全停止。2.2 理解TCP状态机故障的“语言”netstat输出中最核心的一列就是State状态。不理解TCP状态机看netstat就像看天书。对于排障重点需要关注以下几个状态LISTEN服务端状态表示进程正在某个端口上等待连接。这是正常的服务启动状态。ESTABLISHED连接已建立数据可以双向传输。这是健康活跃连接的状态。TIME_WAIT主动关闭连接的一方通常是客户端也可能是主动关闭的服务端进入的状态。它会等待2MSL报文最大生存时间通常60-120秒以确保网络中旧的重复报文都消失。大量TIME_WAIT是正常的尤其在频繁创建短连接的场景下如Web服务器处理HTTP/1.0请求。它说明连接是被正常、主动关闭的。CLOSE_WAIT被动关闭连接的一方对方已关闭连接我方还未关闭进入的状态。这是需要高度警惕的状态大量CLOSE_WAIT且持续增长意味着你的应用程序可能没有正确调用close()来关闭socket导致连接资源文件描述符被持续占用最终可能耗尽。SYN_SENT/SYN_RECV三次握手进行中的状态。如果大量连接卡在这里可能是对端服务器没有响应或者遭遇SYN Flood攻击。FIN_WAIT1/FIN_WAIT2主动关闭方发送FIN后等待ACK的状态。通常短暂存在。关键心得不要一看到大量TIME_WAIT就慌张。相反应该更关注CLOSE_WAIT。一个简单的判断原则TIME_WAIT是“我方主动妥善处理后事”而CLOSE_WAIT是“对方挂了但我方还在傻等”。3. 实战命令组合与输出精读知道思路后我们来看看如何获取并解读信息。netstat的参数繁多但掌握几个关键组合就足以应对90%的场景。3.1 Linux/Unix/macOS下的黄金组合最常用、信息最全的命令是netstat -tunlp-t显示TCP连接。-u显示UDP连接。-n以数字形式显示地址和端口。这是排障时必须加的参数否则它会尝试将IP反解析成主机名、端口解析成服务名如http速度慢且可能因DNS问题导致输出卡顿或混乱。-l仅显示监听LISTEN状态的套接字。当你只关心哪些服务在运行时非常有用。-p显示占用该套接字的进程ID和名称。需要sudo权限才能查看其他用户的进程信息。一段典型的输出如下Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 567/cupsd tcp 0 36 192.168.1.100:22 192.168.1.50:54321 ESTABLISHED 1234/sshd tcp6 0 0 :::8080 :::* LISTEN 7890/java逐列精读Proto协议tcp或udp。Recv-Q / Send-Q接收队列和发送队列的字节数。对于监听端口LISTEN这两个值没有实际意义。对于已建立连接ESTABLISHEDRecv-Q已接收但还未被应用层进程读取的字节数。如果这个值持续很大可能意味着你的应用程序读取数据太慢或卡住了。Send-Q已发送但还未收到对方确认的字节数。如果这个值持续很大可能意味着网络拥塞或对端接收缓慢。Local Address本地地址和端口。0.0.0.0:22表示监听所有IPv4接口的22端口127.0.0.1:631表示只监听本地回环地址192.168.1.100:22是一个具体的已连接地址。Foreign Address远程地址和端口。0.0.0.0:*在监听状态下表示接受来自任何地址的连接192.168.1.50:54321则是对端的IP和端口。State连接状态即我们前面讨论的LISTENESTABLISHED等。PID/Program name进程ID和名称。这是定位问题的关键其他实用组合netstat -an | grep :8080快速过滤出所有与8080端口相关的连接包括监听和已连接。netstat -atn显示所有TCP连接含监听数字形式。netstat -s显示每种协议的汇总统计信息如TCP重传数、错误数用于高阶网络质量分析。watch -n 1 netstat -an | grep ESTAB每秒刷新一次动态观察已建立连接的变化对于监控突发连接数很有用。3.2 Windows下的等效操作Windows的netstat参数略有不同最常用的是netstat -ano-a显示所有连接和监听端口。-n以数字形式显示地址和端口。-o显示关联的进程IDPID。输出示例协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1234 TCP 192.168.1.10:139 0.0.0.0:0 LISTENING 456 TCP 192.168.1.10:5040 192.168.2.20:443 ESTABLISHED 7890找到PID后打开任务管理器在“详细信息”标签页里通过PID列找到对应的进程名。或者使用命令tasklist | findstr 7890来查找。3.3 进阶解析Recv-Q/Send-Q的深层含义这两个队列是诊断应用层与网络层协作是否顺畅的关键指标。我遇到过这样一个生产案例一个Java应用响应变慢CPU和内存都不高。用netstat -tn查看发现大量到数据库的ESTABLISHED连接其Send-Q值都堆积到数万字节。这说明了什么应用进程Java正在拼命地通过socket向内核缓冲区写数据比如发送SQL查询结果但内核缓冲区中的数据却迟迟发不出去Send-Q堆积。可能的原因有两个一是网络本身极度拥塞数据包大量丢失重传二是对端数据库客户端的接收窗口TCP Window一直很小导致发送方不敢多发。结合其他监控如网络延迟、数据库负载我们最终定位是对端的一个消费程序处理太慢TCP接收窗口始终很小导致了反压。如果不看Send-Q我们可能只会怀疑Java应用或数据库本身而忽略了网络传输链路上的这个“瓶颈点”。4. 经典故障场景与排查实录理论说再多不如看几个实实在在的“病例”。下面是我总结的几个用netstat快速定位的典型故障。4.1 场景一服务启动失败——“Address already in use”这是最经典的问题。尝试启动Nginx或一个Spring Boot应用报错端口已被占用。排查步骤锁定占用者假设是8080端口。sudo netstat -tunlp | grep :8080或者如果不知道具体端口但知道进程名sudo netstat -tunlp | grep java解读结果输出显示tcp6 0 0 :::8080 :::* LISTEN 5678/java。这说明PID为5678的Java进程正在监听8080端口。决策与处理如果该进程是旧版本或已无用的服务直接kill -9 5678。如果该进程是同一服务的另一个实例你需要决定关掉一个或者为新实例配置另一个端口。如果netstat查不到监听但依然报错这可能是因为连接处于TIME_WAIT状态。虽然TIME_WAIT的连接本身不阻止你监听相同IP和端口但在某些系统配置下如tw_reuse参数未开启短时间内重启服务可能会失败。此时可以稍等片刻1-2分钟或者使用ss -tan state time-wait查看TIME_WAIT连接。4.2 场景二应用响应缓慢连接数暴涨监控发现某台应用服务器连接数异常升高请求延迟变大。排查步骤全局概览sudo netstat -tn | awk {print $6} | sort | uniq -c | sort -rn这个命令管道组合非常强大它统计了所有TCP连接的不同状态数量并按降序排列。你可能看到1500 ESTABLISHED 300 TIME_WAIT 120 CLOSE_WAIT 2 LISTEN深入分析ESTABLISHED数量巨大这可能是正常的高负载也可能是连接池配置过大或连接未释放。需要结合Foreign Address看是否集中在少数几个下游服务如数据库、缓存。如果是检查下游服务是否健康以及应用连接池配置是否合理。CLOSE_WAIT数量异常本例120红色警报这明确指向应用程序存在Bug未能正确关闭连接。立刻使用sudo netstat -tnp | grep CLOSE_WAIT查看具体是哪些进程的连接定位到问题应用。TIME_WAIT数量多如前所述这通常是正常现象尤其在HTTP短连接场景。但如果多到影响新连接创建端口耗尽可以考虑优化系统TCP参数如net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle注意后者在较新内核中已废弃且可能有问题或者优化应用架构使用连接池、长连接。定位问题进程# 查看所有CLOSE_WAIT连接的详细信息包括PID sudo netstat -tnp | grep CLOSE_WAIT # 假设发现PID 9999的进程有很多CLOSE_WAIT ps aux | grep 9999确定是哪个应用后查看其日志重点排查网络连接关闭的逻辑比如是否在所有异常分支都确保了socket关闭是否使用了正确的资源管理方式如Java的try-with-resources。4.3 场景三怀疑系统被入侵或存在挖矿木马感觉服务器异常卡顿CPU莫名增高怀疑有隐藏进程在对外通信。排查步骤查看异常外联关注ESTABLISHED连接中不熟悉的远程IP和端口。sudo netstat -atnp | grep ESTAB仔细检查Foreign Address列看是否有连接到非常见端口如6666, 7777, 3333等或陌生国外IP的连接。查看监听端口检查是否有未知进程在监听端口。sudo netstat -tunlp特别关注那些监听在非标准端口、且进程名奇怪的LISTEN连接。关联进程信息一旦发现可疑连接通过PID找到进程的详细路径。# Linux下 ls -l /proc/PID/exe # 或 ps -ef | grep PID检查该进程的启动命令和文件路径是否合法。4.4 场景四性能调优与容量规划在系统上线前或压力测试中netstat可以帮助你了解连接模式为容量规划提供依据。操作示例统计各服务的连接数sudo netstat -tn | grep :80 | awk {print $4} | sort | uniq -c这可以统计到本地80端口假设是Web服务的各个连接情况看看是不是均匀分布。监控连接状态变化在压测期间使用watch命令动态观察ESTABLISHED、TIME_WAIT数量的变化趋势评估应用和系统的连接处理能力。检查端口使用范围netstat -an可以帮你确认应用实际使用的端口范围是否符合防火墙和安全组的配置。5. 避坑指南与高阶技巧掌握了基本用法和常见场景还有一些细节和技巧能让你用得更顺手避开常见的坑。5.1 必须用root权限吗不一定但推荐使用sudo。不加sudo运行netstat -p你只能看到属于当前用户的进程的网络连接信息。对于系统级服务如sshd, nginx, mysql它们通常以root或其他系统用户运行普通用户看不到其PID/程序名只会显示-。这会给排查带来很大障碍。所以在排查系统级问题时养成使用sudo的习惯。5.2 netstat vs ss我该用哪个ss(socket statistics) 是iproute2软件包的一部分旨在替代netstat。它更快直接从内核空间获取信息、输出更简洁、信息有时也更丰富如显示更详细的socket选项。常用ss命令对照netstat -tunlp等价于ss -tunlpnetstat -an | grep ESTAB等价于ss -tan state establishedss的状态过滤更强大如ss -tan state time-waitss -tan state close-wait建议在Linux系统上优先使用ss因为它更快更现代。但netstat的知识完全适用于ss且netstat在跨平台如macOS 或老系统时仍是必备技能。两者都掌握是最好的。5.3 排查CLOSE_WAIT问题的实战流程这是一个专项问题值得单独拿出来说。当你发现CLOSE_WAIT连接数只增不减确认问题netstat -an | grep CLOSE_WAIT | wc -l观察计数是否持续增长。定位元凶sudo netstat -tnp | grep CLOSE_WAIT找到对应的PID和进程名。获取线程堆栈对于Java应用尤其有效# 使用jstack获取线程dump jstack PID thread_dump.log在thread_dump.log中搜索“socket”、“connection”或远程IP端口找到持有该socket的线程查看其堆栈通常能发现线程卡在某个IO操作或锁等待上没有执行关闭逻辑。代码审查检查对应代码段的资源关闭逻辑是否在finally块中确保了关闭或者是否使用了自动资源管理。5.4 网络连接数相关系统参数简介有时问题不在应用而在系统限制。了解几个关键参数有助于综合判断net.ipv4.ip_local_port_range定义了本地发起连接时可用的临时端口范围。如果客户端频繁创建短连接可能耗尽端口导致无法发起新连接。可以通过sysctl -a | grep port_range查看。net.ipv4.tcp_max_tw_buckets系统同时保持TIME_WAIT状态连接的最大数量。超过后新的TIME_WAIT连接会被直接关闭。fs.file-max系统级别文件描述符总数限制。每个socket都是一个文件描述符。可以通过ulimit -n查看单个进程的限制。这些参数通常不需要轻易调整但在进行大规模并发测试或处理特定性能问题时它们可能成为瓶颈。netstat这个工具其价值不在于它有多炫酷而在于它足够基础、足够直接。它把复杂的网络连接抽象成一张清晰的表格让你能快速抓住问题的关键线索——是监听问题、连接问题还是资源泄露问题。掌握它配合对TCP状态机的理解你就能在纷繁复杂的网络故障面前拥有一个清晰、有力的起点。下次再遇到网络问题别急着重启服务先运行一下netstat -tunlp看看这张“网络体检报告”怎么说相信你会更快地找到答案。

相关文章:

网络排障利器netstat:从TCP状态机到实战故障排查

1. 网络排障的“听诊器”:为什么是netstat?在服务器运维、后端开发或者日常处理网络问题的过程中,我们经常会遇到一些让人头疼的场景:服务端口明明启动了,客户端却死活连不上;服务器负载莫名飙升&#xff0…...

T507-H平台Linux实时化实战:RT-Preempt补丁移植与性能调优

1. 项目概述与背景最近在做一个车载信息娱乐系统的预研项目,客户对系统的响应延迟有硬性指标要求,这就逼得我们必须对底层Linux内核的实时性做深度优化。选型阶段,我们盯上了全志的T507-H平台,这是一颗面向汽车电子的四核A53处理器…...

fastAPI的依赖注入 与 .net Core的依赖注入区别

...

Typora LaTeX主题:学术论文写作的终极解决方案

Typora LaTeX主题:学术论文写作的终极解决方案 【免费下载链接】typora-latex-theme 将Typora伪装成LaTeX的中文样式主题,本科生轻量级课程论文撰写的好帮手。This is a theme disguising Typora into Chinese LaTeX style. 项目地址: https://gitcode…...

如何用Element React构建企业级React应用:完整组件库实战指南

如何用Element React构建企业级React应用:完整组件库实战指南 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react Element React作为一套基于React框架的企业级UI组件库,为开发者提供了50余种…...

MASA模组中文汉化包:让技术模组真正为你所用

MASA模组中文汉化包:让技术模组真正为你所用 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft技术模组的英文界面而头疼吗?当你在使用Litematica进…...

Qt实战:手把手教你优化QCustomPlot曲线图,解决坐标轴覆盖数据点的坑

Qt实战:深度优化QCustomPlot曲线图显示效果 在Qt应用开发中,数据可视化是提升用户体验的关键环节。QCustomPlot作为Qt生态中最受欢迎的2D绘图库之一,以其轻量级和高性能著称,被广泛应用于工业控制、科学研究和金融分析等领域。然而…...

《深入理解Linux网络技术内幕》全套学习资料合集

目录 第一部分 全书分章节课后习题标准答案第二部分 配套全套Demo源码(内核模块应用层C程序)第三部分 Linux内核TCP协议栈逐行源码深度解析第四部分 书本知识点 → RK3588硬件落地实战教程第一部分 分章节课后练习题标准答案 第1章 Linux网络体系架构 一…...

如何快速上手SillyTavern:新手完整入门指南

如何快速上手SillyTavern:新手完整入门指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 还在为复杂的LLM前端配置而烦恼吗?SillyTavern作为一款专为高级用户设计…...

C盘告急?手把手教你用mklink命令把Fusion 360挪到D盘(Win11保姆级教程)

拯救C盘空间:用符号链接将Fusion 360迁移到D盘的完整指南 当C盘空间告急时,很多用户会发现Fusion 360默认安装在系统盘,占用了大量宝贵空间。本文将详细介绍如何利用Windows的mklink命令,在不影响软件功能的前提下,将F…...

通过ip命令配置网络地址的方法

cat ../ip_cfg.sh # 为 end1 接口添加一个静态 IP 地址 (例如: 192.168.1.100/24) sudo ip addr add 196.12.0.100/24 dev end1# 激活 end1 接口 sudo ip link set end1 up# (可选)添加默认网关,例如 192.168.1.1 sudo ip route add default …...

左手库克,右手马斯克,她凭什么坐 C 位?15岁辍学,从打工妹逆袭成中国女首富。网友:顶配大女主

①特朗普访华,5 月 14 日晚上在人民大会堂金色大厅举行欢迎晚宴,有很多中方企业家也受邀去了,小程程那天晚上的推文只介绍了雷军那一桌的中方大佬。这一桌大佬偏互联网行业,所以他们曝光度更高,大家能认出来的更多。其…...

手把手教你用ROS小车仿真搞定LIO-SAM建图与NDT定位(附避坑配置)

从零实现ROS仿真环境下的LIO-SAM建图与NDT定位全流程指南 在机器人自主导航领域,激光雷达与惯性测量单元(IMU)的融合建图定位技术已成为工业级应用的主流方案。本文将基于steer_mini_gazebo仿真平台,完整演示如何配置LIO-SAM实时建图系统与Autoware的ND…...

一线大厂AI开发笔记本清单(万元内)

人机协作,AI模型:Deepseek仅供参考一线大厂AI开发笔记本清单(万元内)机型CPUGPU(显存)内存SSD散热Linux兼容性风险等级性能星级参考价华硕 天选7 Pro 酷睿版Ultra 9 290HX Plus (24核)RTX 5070 (8GB)32GB1T…...

Vivado 2022.1里Floating-point IP核的隐藏技巧:如何优化开方运算的延迟与资源消耗

Vivado 2022.1浮点开方IP核深度调优:从参数配置到硬件实现的黄金法则 在FPGA信号处理系统中,浮点运算单元往往是性能瓶颈所在。当设计一个实时性要求极高的雷达信号处理链路时,我曾在某型号的Xilinx UltraScale器件上遭遇过这样的困境&#x…...

3大核心功能解密:如何用CSL编辑器告别引用格式噩梦

3大核心功能解密:如何用CSL编辑器告别引用格式噩梦 【免费下载链接】csl-editor cslEditorLib - A HTML 5 library for searching and editing CSL styles 项目地址: https://gitcode.com/gh_mirrors/csl/csl-editor 还在为论文引用格式而烦恼吗?…...

别再只调参了!用PyTorch玩转声纹识别:从EcapaTdnn到CAM++,7大模型实战对比与避坑指南

别再只调参了!用PyTorch玩转声纹识别:从EcapaTdnn到CAM,7大模型实战对比与避坑指南 声纹识别技术正在从实验室走向工业界,成为身份认证领域的新宠。不同于传统密码或指纹,声纹识别通过分析语音中的生物特征实现非接触式…...

linux service和systemctl命令、systemd

文章目录service命令(老版本)systemctl命令(推荐)systemdsystemd示例-Hello Worldsystemd语法如何查看service对应的脚本service命令(老版本) 都是服务控制相关的命令,差别不大,之前用service,现在一般用systemctl。 service命令例子&#…...

KMS_VL_ALL_AIO:一站式智能激活工具,彻底解决Windows与Office激活难题

KMS_VL_ALL_AIO:一站式智能激活工具,彻底解决Windows与Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款开源的智能激活脚本&#xff…...

终极Obsidian个性化首页配置指南:3小时打造你的专属知识管理中心

终极Obsidian个性化首页配置指南:3小时打造你的专属知识管理中心 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 你是…...

为内部知识库问答系统集成taotoken多模型路由提升回答质量

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答系统集成taotoken多模型路由提升回答质量 构建一个高效、准确的内部知识库问答系统,是许多企业提升信…...

为什么顶尖教研团队已弃用传统搜索引擎?Perplexity教育搜索的3个颠覆性能力,今天必须掌握

更多请点击: https://intelliparadigm.com 第一章:为什么顶尖教研团队已弃用传统搜索引擎? 当清华大学智能教育实验室在2023年构建AI辅助备课系统时,其技术白皮书明确指出:“Google Scholar 和通用搜索引擎的召回率在…...

EPUBCheck测试框架深度解析:单元测试和集成测试最佳实践

EPUBCheck测试框架深度解析:单元测试和集成测试最佳实践 【免费下载链接】epubcheck The conformance checker for EPUB publications 项目地址: https://gitcode.com/gh_mirrors/ep/epubcheck EPUBCheck作为EPUB出版物的官方一致性检查工具,其强…...

CSDN博客批量下载器重构实战:MVC架构下的智能爬虫解决方案

CSDN博客批量下载器重构实战:MVC架构下的智能爬虫解决方案 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader 在技术博客内容日益成为开发者知识体系核心的时代,网络内容的不稳定性与知识管…...

Zephyr启动流程的“模块化”设计哲学:从链接脚本到设备树的初始化链条解析

Zephyr启动流程的模块化设计哲学:从链接脚本到设备树的初始化链条解析 在嵌入式系统开发中,实时操作系统(RTOS)的启动流程往往是系统可靠性的第一道门槛。Zephyr RTOS以其独特的模块化设计理念,构建了一套高度可配置、可扩展的初始化体系&…...

Vue3后台管理系统终极指南:V3 Admin Vite 5.0全面解析

Vue3后台管理系统终极指南:V3 Admin Vite 5.0全面解析 【免费下载链接】v3-admin-vite ☀️ A crafted Vue3 admin template | Vue Admin | Vue Template | Vue3 Admin | Vue3 Template | Vue 后台 | Vue 模板 | Vue3 后台 | Vue3 模板 项目地址: https://gitcode…...

初次使用Taotoken从注册获取Key到完成第一次API调用的全流程指引

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken从注册获取Key到完成第一次API调用的全流程指引 本文旨在为初次接触Taotoken平台的开发者提供一份清晰的入门指南…...

Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏

Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/…...

通过Taotoken审计日志功能追踪与分析API调用情况

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken审计日志功能追踪与分析API调用情况 对于使用大模型API进行开发的项目团队而言,清晰、透明地掌握API调用情…...

scanf/fscanf/sscanf和printf/fprintf/sprintf的对比

目录 摘要: 一:函数的对比 二:函数的使用 1:printf 2:scanf 3:fprintf 4:fscanf 5:sprintf 6:sscanf 摘要: 本博客从函数参数到具体使用过程去对比这…...