【网络编程】几个常用命令:ping / netstat / xargs / pidof / watch




在这里插入图片描述



  • ping:检测网络联通
    • 1. ping 的基本功能
    • 2. ping 的工作原理
    • 3. ping 的常见用法
    • 4. ping 的输出解释
    • 5. ping 的应用场景
    • 6. 注意事项
  • netstat:查看网络状态
    • 1. netstat 的基本功能
    • 2. 常见用法
    • 3. 示例
    • 4. 输出字段解释
    • 5. netstat 的替代工具
    • 6. 注意事项
  • xargs:将数据转换为其他命令的命令行参数
    • 1. xargs 的基本功能
    • 2. 常见用法
    • 3. 示例
  • pidof:根据名字查找并返回进程PID
    • 1. pidof 的基本功能
    • 2. 常见用法
    • 3. 示例
    • 4. 输出解释
    • 5. 使用场景
    • 6. 注意事项
  • watch:动态刷新的数字监控
    • 1. watch 的基本功能
    • 2. 常见用法
    • 3. 示例
    • 4. 输出解释
    • 5. 使用场景
    • 6. 注意事项



ping:检测网络联通

ping 是一种常用的网络诊断工具,用于测试主机之间的连通性以及测量网络延迟。通过发送 ICMP(Internet Control Message Protocol)回声请求(Echo Request)消息到目标主机,并等待其返回 ICMP 回声应答(Echo Reply),可以判断目标主机是否可达,并评估网络性能。

以下是关于 ping 命令的详细讲解:




1. ping 的基本功能

  • 测试连通性:验证本地主机与目标主机之间的网络连接是否正常。
  • 测量延迟:计算从发送请求到接收响应的时间(通常以毫秒为单位),反映网络的速度和稳定性。
  • 检测丢包率:统计在一定时间内发送的请求中有多少未收到响应,从而判断网络质量。



2. ping 的工作原理

  1. 发送 ICMP 请求

    • 本地主机向目标主机发送一个 ICMP Echo Request 消息。
    • 这个消息包含一个唯一的标识符和序列号,用于区分不同的请求。
  2. 接收 ICMP 应答

    • 如果目标主机正常运行且网络畅通,它会返回一个 ICMP Echo Reply 消息。
    • 本地主机会记录从发送请求到接收应答的时间差,即往返时间(RTT,Round-Trip Time)。
  3. 统计结果

    • 根据多次请求的结果,计算平均延迟、最大延迟、最小延迟以及丢包率。



3. ping 的常见用法

(1) 基本语法
ping [选项] 目标地址
  • 目标地址:可以是域名(如 www.example.com)或IP地址(如 192.168.1.1)。
    可以输入自己服务器的域名或虚拟机的IP地址


(2) 常见选项
选项描述
-c <次数>指定发送的ICMP请求次数(例如:ping -c 4 www.example.com)。
-i <间隔>设置两次请求之间的时间间隔(秒)。
-t <TTL>设置数据包的生存时间(Time To Live,TTL)。
-s <大小>设置发送的数据包大小(字节)。
-W <超时>设置等待响应的超时时间(秒)。


(3) 示例
  • 发送4次请求

    ping -c 4 www.example.com
    
  • 指定数据包大小为1024字节

    ping -s 1024 www.example.com
    
  • 设置每次请求间隔为2秒

    ping -i 2 www.example.com
    



4. ping 的输出解释

以下是一个典型的 ping 输出示例:

PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.8 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=12.1 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=11.9 ms

--- www.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 11.800/12.025/12.300/0.200 ms

字段说明
  • PING

    • 显示目标地址及其解析后的IP地址。
    • 数据包大小默认为56字节(加上ICMP头部后总共64字节)。
  • 每次请求的响应

    • 64 bytes:表示接收到的回显应答数据包大小。
    • icmp_seq=<序号>:表示该数据包的序列号。
    • ttl=<值>:表示数据包的生存时间(TTL,Time To Live),反映了路由跳数。
    • time=<值>:表示往返时间(RTT,Round-Trip Time),单位为毫秒。
  • 统计信息

    • packets transmitted:发送的总数据包数。
    • received:接收到的总数据包数。
    • packet loss:丢包率(百分比)。
    • time:整个测试过程的持续时间。
    • rtt min/avg/max/mdev:往返时间的最小值、平均值、最大值以及标准偏差。



5. ping 的应用场景

(1) 测试网络连通性
  • 使用 ping 可以快速检查本地主机与目标主机之间的网络是否连通。
  • 如果无法收到任何响应,可能是因为目标主机不可达、网络中断或目标主机禁用了ICMP响应。
(2) 测量网络延迟
  • 通过观察 ping 输出中的 time 值,可以评估网络的速度和稳定性。
  • 较低的延迟通常意味着更好的网络性能。
(3) 检测丢包率
  • 如果部分请求没有收到响应,可能是网络拥塞或不稳定。
  • 高丢包率可能表明网络质量较差。
(4) 调试网络问题
  • 结合其他工具(如 traceroutemtr),可以定位网络故障的具体位置。



6. 注意事项

(1) 目标主机可能禁用ICMP
  • 某些主机或防火墙可能会禁用ICMP协议,导致即使网络正常也无法收到响应。
(2) 网络延迟的影响因素
  • 网络延迟可能受到多种因素的影响,包括物理距离、路由器数量、带宽限制等。
(3) 数据包大小的影响
  • 发送较大的数据包可能会暴露网络中的带宽瓶颈或MTU(Maximum Transmission Unit)问题。
(4) 不同平台的实现差异
  • Windows 和 Linux 的 ping 命令在默认行为上可能略有不同(例如,默认数据包大小)。



netstat:查看网络状态

我们在写一些网络服务时,如写 udp Server / tcp Server ,我们有时需要查看这些网络服务是否启动以及其他状态信息,如果直接使用 ps 命令,只能查看到一些偏向进程方面的,因此我们推荐 netstat

netstat 是一个用于显示网络连接、路由表、接口统计信息、伪装连接和多播成员的命令行工具。它是网络管理员和开发人员常用的工具之一,可以帮助诊断网络问题、监控网络状态以及分析系统上的活动连接。

以下是关于 netstat 的详细介绍:



1. netstat 的基本功能

netstat 提供了以下主要功能:

  • 显示活动的网络连接:列出当前系统的TCP/UDP连接。
  • 显示路由表信息:查看系统的IP路由表。
  • 显示接口统计信息:显示网络接口的流量统计信息。
  • 显示监听端口:列出正在监听的端口及其对应的服务或进程。
  • 显示网络协议统计信息:提供TCP、UDP、ICMP等协议的统计数据。

在这里插入图片描述




2. 常见用法

(1) 基本语法
netstat [选项]
(2) 常见选项

注意:在使用时,这些选项的前后顺序无所谓,没有规定

选项描述
-aall,显示所有连接和侦听端口(包括TCP和UDP)。
-ttcp,仅显示TCP连接。
-uudp,仅显示UDP连接。
-nnumber,以数字形式显示地址和端口号(不进行DNS解析)。
-l仅显示处于监听状态的连接。
-pprocess,显示与每个连接关联的进程ID(需要root权限)。
-r显示内核路由表。
-i显示网络接口的统计信息。
-s显示每个协议的统计信息(如TCP、UDP等)。



2. 常见用法

(1) 显示所有连接和侦听端口
netstat -a
  • 输出中会包含所有的TCP和UDP连接,包括已建立的连接和正在监听的端口。
(2) 显示所有TCP连接
netstat -at
  • 只显示TCP协议相关的连接。
(3) 显示所有UDP连接
netstat -au
  • 只显示UDP协议相关的连接。
(4) 显示监听端口
netstat -ln
  • 使用 -l 选项只显示处于监听状态的端口,-n 选项避免DNS解析,加快输出速度。
(5) 显示与进程关联的连接
sudo netstat -ntp
  • -n:以数字形式显示地址和端口号。
  • -t:仅显示TCP连接。
  • -p:显示与每个连接关联的进程ID和名称。
  • 需要使用 sudo 提升权限,因为普通用户无法访问某些进程信息。
(6) 显示路由表
netstat -r
  • 输出系统的IP路由表,类似于 routeip route 命令。
(7) 显示网络接口统计信息
netstat -i
  • 列出所有网络接口的流量统计信息,包括接收和发送的数据包数量、错误数等。
(8) 显示协议统计信息
netstat -s
  • 提供TCP、UDP、ICMP等协议的详细统计信息,例如已建立的连接数、丢弃的数据包数等。



3. 示例

以下是一个典型的 netstat 输出示例:

Active Internet connections (only servers)
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      1235/cupsd
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1236/dhclient


4. 输出字段解释

  • Proto:协议类型(TCP或UDP)。
  • Recv-Q:接收队列中的数据包数量。
  • Send-Q:发送队列中的数据包数量。
  • Local Address:本地地址和端口。
  • Foreign Address:远程地址和端口。
  • State:连接状态(仅适用于TCP,例如 LISTENESTABLISHED 等)。
  • PID/Program name:与该连接关联的进程ID和程序名称(需使用 -p 选项)。



5. netstat 的替代工具

在现代Linux系统中,netstat 已逐渐被更高效的工具(如 ssip)取代:

  • ss:功能类似 netstat,但性能更高,推荐使用。
  • ip:用于管理和显示网络接口、路由表等信息。

例如,使用 ss 查看监听端口:

ss -tnlp



6. 注意事项

(1) 权限问题
  • 某些选项(如 -p)需要 root 权限才能查看进程信息。

    比如下图,有些条目缺失了一些信息,只有我们自己启动的 ./server

    在这里插入图片描述

  • 如果没有权限,可以尝试使用 sudo 提升权限。

    如下图,使用 sudo 提权后,所有信息都展示出来了

    在这里插入图片描述

(2) 性能问题
  • 在高并发环境下,netstat 的性能可能不如 ss,因为它需要读取大量的内核数据。
(3) 替代工具
  • 在较新的 Linux 发行版中,netstat 可能已被废弃或不再默认安装。可以使用 ssip 命令作为替代。



xargs:将数据转换为其他命令的命令行参数

xargs 是一个功能强大的命令行工具,用于从标准输入(stdin)读取数据,并将其作为参数传递给其他命令执行。它可以帮助用户将管道或文件中的数据转换为命令行参数,从而实现批量处理任务。

以下是关于 xargs 的详细讲解:


1. xargs 的基本功能

  • 从标准输入读取数据xargs 从标准输入中读取数据,通常是通过管道或其他命令的输出。
  • 构建命令行参数:将读取到的数据转换为命令行参数,并传递给指定的命令。
  • 批量执行命令:支持对多个输入项逐一或分批执行命令。



2. 常见用法

(1) 基本语法
command | xargs [选项] [命令]
  • command:生成输入数据的命令。
  • xargs:将输入数据转换为命令行参数。
  • [选项]:控制 xargs 的行为。
  • [命令]:接收参数并执行的命令。



3. 示例

(1) 基本用法
echo "file1 file2 file3" | xargs ls
  • file1 file2 file3 作为参数传递给 ls 命令,等价于:

    ls file1 file2 file3
    



pidof:根据名字查找并返回进程PID

pidof 是一个用于查找正在运行的进程的 PID(Process ID)的命令行工具。它根据指定的进程名称返回与该名称匹配的进程的 PID 列表。pidof 是系统管理员和开发人员常用的工具之一,尤其在需要动态获取某个服务或程序的 PID 时非常方便。

以下是关于 pidof 的详细讲解:


1. pidof 的基本功能

  • 查找进程 ID:根据进程名称返回对应的 PID。
  • 支持多个匹配项:如果存在多个同名进程,pidof 会返回所有匹配的 PID。
  • 简单易用:语法简单,适合脚本中使用。



2. 常见用法

(1) 基本语法
pidof [选项] 进程名称
(2) 常见选项
选项描述
-s只返回一个 PID(即使有多个匹配的进程)。
-x匹配脚本或可执行文件(不仅限于二进制程序)。
-o PID,...排除指定的 PID 或特殊符号(如 $$ 表示当前 shell 的 PID)。



3. 示例

(1) 查找特定进程的 PID
pidof sshd
  • 如果 sshd 正在运行,输出可能是:

    1234 1235
    
  • 这表示有两个 sshd 进程正在运行,其 PID 分别为 12341235

(2) 只返回一个 PID
pidof -s sshd
  • 即使有多个 sshd 进程,也只返回其中一个 PID,例如:

    1234
    
(3) 匹配脚本或可执行文件
pidof -x myscript.sh
  • 如果 myscript.sh 是一个正在运行的脚本,pidof 会返回其 PID。
(4) 排除特定 PID
pidof -o $$ bash
  • $$ 表示当前 shell 的 PID。此命令会列出所有正在运行的 bash 进程的 PID,但排除当前 shell 的 PID。



4. 输出解释

pidof 的输出是一个由空格分隔的 PID 列表。如果没有找到匹配的进程,则不会有任何输出。

例如:

$ pidof nginx
1234 1235 1236

这表示有三个 nginx 进程正在运行,其 PID 分别为 123412351236




5. 使用场景

(1) 动态获取 PID

在编写脚本时,可以使用 pidof 获取某个服务的 PID 并进行进一步操作。例如:

PID=$(pidof mysqld)
if [ -n "$PID" ]; then
    echo "MySQL is running with PID $PID"
else
    echo "MySQL is not running"
fi
(2) 结合其他工具

可以将 pidof 的输出与其他工具结合使用。例如:

  • 使用 kill 发送信号:有两种写法

    // 方法一:
    kill $(pidof nginx)
    
    // 方法二: 通过管道
    pidof nginx | xargs kill -9
    
  • 使用 ps 获取更多进程信息:

    ps -p $(pidof sshd)
    
(3) 监控进程状态

通过定期检查某个进程是否存在,可以实现简单的进程监控功能。




6. 注意事项

**(1) 进程名称匹配 **
  • pidof 根据进程名称进行匹配,因此可能会出现误匹配的情况。例如,pidof http 可能会匹配到 httpd 或其他包含 http 的进程。
  • 如果需要更精确的匹配,建议结合 pgrepps 使用。
(2) 权限问题
  • 如果当前用户没有权限访问某些进程的信息,pidof 可能无法返回这些进程的 PID。
(3) 替代工具
  • 在某些情况下,pgrep 是一个更强大的替代工具,因为它可以根据更多的条件(如用户、命令行参数等)进行过滤。



watch:动态刷新的数字监控

watch 是一个非常实用的命令行工具,用于定期执行其他命令并将输出显示在终端中。它可以帮助用户实时监控系统状态、进程运行情况或其他动态变化的信息。通过 watch,你可以以固定的时间间隔重复执行某个命令,并观察其结果的变化。

以下是关于 watch 的详细讲解:




1. watch 的基本功能

  • 定期执行命令:按照指定的时间间隔(默认为2秒)重复执行某个命令。
  • 高亮变化:可以高亮显示输出中发生变化的部分,便于快速发现差异。
  • 全屏显示:将命令的输出完整地显示在终端中,类似于一个动态更新的窗口。



2. 常见用法

(1) 基本语法
watch [选项] 命令
(2) 常见选项
选项描述
-n <秒>设置刷新时间间隔(默认为2秒)。
-d--difference高亮显示输出中的变化部分。
-t--no-title禁用顶部标题栏(显示命令和时间信息)。
-b--beep如果输出发生变化,则发出蜂鸣声。
-g--chgexit当输出发生变化时立即退出。



3. 示例

(1) 默认使用
watch df -h
  • 每隔2秒执行一次 df -h 命令,显示磁盘使用情况。
(2) 自定义刷新时间
watch -n 5 free -m
  • 每隔5秒执行一次 free -m 命令,显示内存使用情况。
(3) 高亮显示变化
watch -d uptime
  • 每隔2秒执行一次 uptime 命令,并高亮显示输出中发生变化的部分。
(4) 禁用标题栏
watch -t date
  • 每隔2秒执行一次 date 命令,并禁用顶部标题栏。
(5) 输出变化时发出蜂鸣声
watch -b ls
  • 每隔2秒执行一次 ls 命令,如果目录内容发生变化,则发出蜂鸣声。
(6) 输出变化时立即退出
watch -g ps aux | grep sshd
  • 每隔2秒检查是否有 sshd 进程,如果输出发生变化(例如进程启动或停止),则立即退出。



4. 输出解释

watch 的输出通常包括以下部分:

  • 顶部标题栏:显示命令、当前时间以及刷新间隔。
  • 命令输出:每次执行命令的输出结果。
  • 高亮部分:如果启用了 -d 选项,输出中发生变化的部分会被高亮显示。

例如:

Every 2.0s: df -h                                                                                         Tue Feb 28 10:00:00 2023

Filesystem      Size  Used Avail Use% Mounted on
udev            7.8G     0  7.8G   0% /dev
tmpfs           1.6G  2.1M  1.6G   1% /run
/dev/sda1        50G   12G   36G  25% /
...



5. 使用场景

(1) 监控系统资源
  • 使用 watch 可以方便地监控系统资源的使用情况,例如:
    • 内存使用:watch free -m
    • CPU负载:watch top
    • 磁盘空间:watch df -h
(2) 监控网络连接
  • 查看活动的网络连接:watch netstat -tuln
  • 查看路由表变化:watch route -n
(3) 监控文件或目录变化
  • 查看某个目录的内容变化:watch ls -l /path/to/directory
  • 查看日志文件的变化:watch tail -n 10 /var/log/syslog
(4) 监控服务状态
  • 查看某个服务的状态:watch systemctl status sshd
  • 查看某个端口的监听状态:watch lsof -i :80



6. 注意事项

(1) 终止 watch
  • 按下 Ctrl+C 可以终止 watch 的运行。
(2) 命令输出的限制
  • watch 的输出会根据终端窗口的大小自动调整,因此不适合处理非常大的输出。
(3) 高亮功能的限制
  • -d 选项只能高亮显示文本内容的变化,无法检测到格式或颜色的变化。
(4) 替代工具
  • 如果需要更复杂的监控功能,可以考虑使用 while 循环结合 sleep,例如:

    while true; do clear; df -h; sleep 5; done
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义Spring Boot Starter(官网文档解读)

摘要 本文将详细介绍自定义 Spring Boot Starter 的完整过程。要构建自定义 Starter&#xff0c;首先需掌握 Spring Boot 中 Auto-configuration 以及相关注解的工作原理&#xff0c;同时了解 Spring Boot 提供的一系列条件注解。在具备这些知识基础后&#xff0c;再按照特定步…

C++和OpenGL实现3D游戏编程【连载23】——几何着色器和法线可视化

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 1、本节实现的内容 上一节课,我们在Blend软件中导出经纬球模型时,遇到了经纬球法线导致我们在游戏中模型光照显示问题,我们在Blender软件中可以通过…

我的技术十年

前言 十年一瞬&#xff0c;2014 年毕业至今&#xff0c;刚好十年。《异类》一书曾提到“一万小时定律”&#xff0c;要成为某个领域的专家&#xff0c;需要 10000 小时&#xff0c;按比例计算就是&#xff1a;如果你每天工作八小时&#xff0c;一周工作五天&#xff0c;那么成…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大&#xff0c;在Java 中如果想要定义一个变 量&#xff0c;需要在变量前面声明这个变量的类型&#xff0c;比如说int a表示a是一个整型变量&#xff0c;String b表 示b是一个字符串变量。而Kotlin中定义一个变量&#xff0c;只允许在变量…

链表-基础训练(二)链表 day14

两两交换链表中的节点 题目示意&#xff1a; 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 原先我的思路是图像上的思路&#xff0c;但是我感觉还是很复杂…

智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新

智能交通系统&#xff08;Intelligent Transportation Systems, ITS&#xff09;是利用先进的信息技术、通信技术、传感技术、计算机技术以及自动化技术等&#xff0c;来提升交通系统效率和安全性的一种交通管理方式。ITS通过收集和分析交通数据&#xff0c;智能化地调度、控制…

数据结构:Map set - 习题(三)

一、只出现一次的数字 题目链接https://leetcode.cn/problems/single-number/description/ 描述&#xff1a; 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性…

【射频仿真学习笔记】Cadence的Layout EXL与ADS dynamic link联动后仿

一、EXL仿真 1. 绘制教程 当我们使用EMX仿真提取的时候&#xff0c;会遇到各种各样的问题&#xff0c;很不方便。这里我们介绍一种新的方法——EXL。可以更灵活的跑仿真。我们以带有中和电容的差分电路为例进行介绍 在使用EMX的是偶&#xff0c;port是连不到晶体管外围金属上…

C++——list模拟实现

目录 前言 一、list的结构 二、默认成员函数 构造函数 析构函数 clear 拷贝构造 赋值重载 swap 三、容量相关 empty size 四、数据访问 front/back 五、普通迭代器 begin/end 六、const迭代器 begin/end 七、插入数据 insert push_back push_front 八、…

文件包含-session2

[题目信息]&#xff1a; 题目名称题目难度文件包含-session22 [题目考点]&#xff1a; 由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;就导致攻击者可以通过修改文件的位置来让后台执行任意…

Hadoop初体验

一、HDFS初体验 1. shell命令操作 hadoop fs -mkdir /itcast hadoop fs -put zookeeper.out /itcast hadoop fs -ls / 2. Web UI页面操作 结论&#xff1a; HDFS本质就是一个文件系统有目录树结构 和Linux类似&#xff0c;分文件、文件夹为什么上传一个小文件也这…

机器学习基础入门——机器学习库介绍(NumPy、pandas、Matplotlib)

机器学习库介绍&#xff08;NumPy、pandas、Matplotlib&#xff09; 在 Python 机器学习的领域中&#xff0c;NumPy、pandas 和 Matplotlib 是三个不可或缺的基础库。它们分别在数值计算、数据处理与分析以及数据可视化方面发挥着关键作用&#xff0c;极大地提升了开发效率与数…

Redis——用户签到BitMap,UV统计

目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器&#xff08;Bloom Filter&#xff09; BitMap介绍 Redis中的使用 Redis功能示例 添加&#xff1a; 获取&#xff1a; 批量获取&#xff1a; java中实现 统计本月连续签到次数 UV统计 UV 统计…

【数据结构】(12) 反射、枚举、lambda 表达式

一、反射 1、反射机制定义及作用 反射是允许程序在运行时检查和操作类、方法、属性等的机制&#xff0c;能够动态地获取信息、调用方法等。换句话说&#xff0c;在编写程序时&#xff0c;不需要知道要操作的类的具体信息&#xff0c;而是在程序运行时获取和使用。 2、反射机制…

【初探数据结构】时间复杂度和空间复杂度

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…

基于 MySQL 递归 CTE 实现表,父级id与子级id拼接

1、函数 xr_test.tb_content替换成自己的表 CREATE DEFINERroot% FUNCTION get_related_ids(start_id BIGINT) RETURNS varchar(1000) CHARSET utf8mb4 COLLATE utf8mb4_general_ciDETERMINISTIC BEGINDECLARE result_ids VARCHAR(1000);-- 使用递归 CTE 查找所有相关的 idWI…

Redission可重试、超时续约的实现原理(源码分析)

Redission遇到其他进程已经占用资源的时候会在指定时间waitTime内进行重试。实现过程如下&#xff1a; 执行获取锁的lua脚本时&#xff0c;会返回一个值&#xff0c; 如果获取锁成功&#xff0c;返回nil&#xff0c;也就是java里的null 如果获取锁失败&#xff0c;用语句“PT…

ue----git局域网内部署裸仓库,别的机器进行访问

最近由于经常迁移项目到另一台机器上进行部署更新一点就要整个迁移 弄得麻烦了 就在网上学了一下这个方式 首先我们在想要建立裸仓库的电脑上找到一个文件夹放置我们的裸仓库 在此点击鼠标右键选择 open git bash here 输入命令 创裸仓库 git init --bare gitTestName.git…

输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索

后端数据代码写于下一篇&#xff1a;输入搜索、分组展示选项、下拉选取&#xff0c;全局跳转页&#xff0c;el-select 实现 —— 后端数据处理代码&#xff0c;抛砖引玉展思路 【效果图】&#xff1a;分组展示选项 >【提供界面操作体验】 【录制效果视频展示】&#xff1a…

【UCB CS 61B SP24】Lecture 11 - Inheritance 4: Iterators, Object Methods学习笔记

本文内容为集合&#xff08;Set&#xff09;的介绍与使用&#xff0c;并通过数组手动实现集合&#xff0c;接着介绍了迭代器&#xff0c;使用迭代器我们能够更方便地遍历集合中的元素。 1. Set 1.1 Set介绍与Java实现类的使用 集合&#xff08;Set&#xff09;是一种常见的数…