检测服务端口是否开放的常用方法

news2025/2/24 12:58:07

检测服务端口是否开放的常用方法

文章目录

    • 检测服务端口是否开放的常用方法
      • 背景
      • 使用`nc`命令
      • 使用 `telnet` 命令
      • 使用 `curl` 命令
      • 使用 `openssl` 命令
      • 使用 Python 脚本,socket连接
      • 使用 `bash` 内建命令:
      • 使用 `nmap`:
      • 总结

背景

有时候需要测试网络是否连通,端口是否开放,需要用一些常用的命令来测试. 有时候并没有 telnet , nc 这样的命令 ,我们使用其他办法来测试 ,当然这里提供的方法 也仅供参考,根据服务器的情况来选择 不同的命令来测试 。下面总结一下 一些常用的命令 来方便策驰网络连通性的命令。

使用nc命令

nc -zv  ip  port 
nc -zv  domain  port 
 ~/ nc -zv  baidu.com 443   
Connection to baidu.com port 443 [tcp/https] succeeded!
 ~/ 

如果成功 会返回 相应的信息

使用 telnet 命令

telnet  [主机名或IP地址]  [端口号]
 ~/ telnet baidu.com 80       
Trying 110.242.68.66...
Connected to baidu.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.

上面显示 是成功状态

 ~/ telnet baidu.com 81       
Trying 39.156.66.10...


Connection failed: Operation timed out
Trying 110.242.68.66...

上面显示是失败状态 。

使用 curl 命令

如果服务器上有 curl,你可以尝试用它来测试HTTPS端口(443)或HTTP端口(80)。对于6443端口,如果这是一个HTTPS服务的非标准端口,你可以这样做:

curl  -v  http://ip:port 

curl -v  https://ip:port 
curl -v https://172.19.127.13:6443

-v 选项会显示详细的输出,包括连接过程中的信息,这有助于判断端口是否开放。

 curl -v  https://172.19.127.13:6443
* About to connect() to 172.19.127.13 port 6443 (#0)
*   Trying 172.19.127.13...
* Connected to 172.19.127.13 (172.19.127.13) port 6443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Server certificate:
*       subject: CN=kube-apiserver-c85ad7b2e9eb242b1ac68840c6101b85b
*       start date: Sep 05 06:25:00 2024 GMT
*       expire date: Aug 29 06:25:00 2054 GMT
*       common name: kube-apiserver-c85ad7b2e9eb242b1ac68840c6101b85b
*       issuer: CN=kubernetes,O=hangzhou+O=alibaba cloud
* NSS error -8172 (SEC_ERROR_UNTRUSTED_ISSUER)
* Peer's certificate issuer has been marked as not trusted by the user.
* Closing connection 0
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

使用 openssl 命令

如果端口443是为TLS/SSL服务(如HTTPS、SMTPS等)使用的,你可以使用 openssl 来测试连接:

openssl s_client -connect www.baidu.com:443

使用 openssl s_client 测试端口是否开放是可行的,但前提是目标端口运行的是 SSL/TLS 服务

openssl s_client -connect www.baidu.com:443
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
verify return:1
depth=0 C = CN, ST = beijing, L = beijing, O = "Beijing Baidu Netcom Science Technology Co., Ltd", CN = baidu.com
verify return:1
---
Certificate chain
 0 s:C = CN, ST = beijing, L = beijing, O = "Beijing Baidu Netcom Science Technology Co., Ltd", CN = baidu.com
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Jul  8 01:41:02 2024 GMT; NotAfter: Aug  9 01:41:01 2025 GMT
 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
   i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Nov 21 00:00:00 2018 GMT; NotAfter: Nov 21 00:00:00 2028 GMT
 2 s:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
   i:C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Sep 19 00:00:00 2018 GMT; NotAfter: Jan 28 12:00:00 2028 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIJ7DCCCNSgAwIBAgIMTkADpl62gfh/S9jrMA0GCSqGSIb3DQEBCwUAMFAxCzAJ
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSYwJAYDVQQDEx1H
bG9iYWxTaWduIFJTQSBPViBTU0wgQ0EgMjAxODAeFw0yNDA3MDgwMTQxMDJaFw0y
NTA4MDkwMTQxMDFaMIGAMQswCQYDVQQGEwJDTjEQMA4GA1UECBMHYmVpamluZzEQ
MA4GA1UEBxMHYmVpamluZzE5MDcGA1UEChMwQmVpamluZyBCYWlkdSBOZXRjb20g
U2NpZW5jZSBUZWNobm9sb2d5IENvLiwgTHRkMRIwEAYDVQQDEwliYWlkdS5jb20w
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1wFMskJ2dseOqoHptNwot
FOhdBERsZ4VQnRNKXEEXMQEfgbNtScQ+C/Z+IpRAt1EObhYlifn74kt2nTsCQLng
jfQkRVBuO/6PNGKdlCYGBeGqAL7xR+LOyHnpH9mwCBJc+WVt2zYM9I1clpXCJa+I
tsq6qpb1AGoQxRDZ2n4K8Gd61wgNCPHDHc/Lk9NPJoUBMvYWvEe5lKhHsJtWtHe4
QC3y58Vi+r5R0PWn2hyTBr9fCo58p/stDiRqp9Irtmi95YhwkNkmgwpMB8RhcGoN
h+Uw5TkPZVj4AVaoPT1ED/GMKZev0+ypmp0+nmjVg2x7yUfLUfp3X7oBdI4TS2hv
AgMBAAGjggaTMIIGjzAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADCBjgYI
KwYBBQUHAQEEgYEwfzBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxz
aWduLmNvbS9jYWNlcnQvZ3Nyc2FvdnNzbGNhMjAxOC5jcnQwNwYIKwYBBQUHMAGG
K2h0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzcnNhb3Zzc2xjYTIwMTgwVgYD
VR0gBE8wTTBBBgkrBgEEAaAyARQwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cu
Z2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCAYGZ4EMAQICMD8GA1UdHwQ4MDYw
NKAyoDCGLmh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZ3Nyc2FvdnNzbGNhMjAx
OC5jcmwwggNhBgNVHREEggNYMIIDVIIJYmFpZHUuY29tggxiYWlmdWJhby5jb22C
DHd3dy5iYWlkdS5jboIQd3d3LmJhaWR1LmNvbS5jboIPbWN0LnkubnVvbWkuY29t
ggthcG9sbG8uYXV0b4IGZHd6LmNuggsqLmJhaWR1LmNvbYIOKi5iYWlmdWJhby5j
b22CESouYmFpZHVzdGF0aWMuY29tgg4qLmJkc3RhdGljLmNvbYILKi5iZGltZy5j
b22CDCouaGFvMTIzLmNvbYILKi5udW9taS5jb22CDSouY2h1YW5rZS5jb22CDSou
dHJ1c3Rnby5jb22CDyouYmNlLmJhaWR1LmNvbYIQKi5leXVuLmJhaWR1LmNvbYIP
Ki5tYXAuYmFpZHUuY29tgg8qLm1iZC5iYWlkdS5jb22CESouZmFueWkuYmFpZHUu
Y29tgg4qLmJhaWR1YmNlLmNvbYIMKi5taXBjZG4uY29tghAqLm5ld3MuYmFpZHUu
Y29tgg4qLmJhaWR1cGNzLmNvbYIMKi5haXBhZ2UuY29tggsqLmFpcGFnZS5jboIN
Ki5iY2Vob3N0LmNvbYIQKi5zYWZlLmJhaWR1LmNvbYIOKi5pbS5iYWlkdS5jb22C
EiouYmFpZHVjb250ZW50LmNvbYILKi5kbG5lbC5jb22CCyouZGxuZWwub3JnghIq
LmR1ZXJvcy5iYWlkdS5jb22CDiouc3UuYmFpZHUuY29tgggqLjkxLmNvbYISKi5o
YW8xMjMuYmFpZHUuY29tgg0qLmFwb2xsby5hdXRvghIqLnh1ZXNodS5iYWlkdS5j
b22CESouYmouYmFpZHViY2UuY29tghEqLmd6LmJhaWR1YmNlLmNvbYIOKi5zbWFy
dGFwcHMuY26CDSouYmR0anJjdi5jb22CDCouaGFvMjIyLmNvbYIMKi5oYW9rYW4u
Y29tgg8qLnBhZS5iYWlkdS5jb22CESoudmQuYmRzdGF0aWMuY29tghEqLmNsb3Vk
LmJhaWR1LmNvbYISY2xpY2suaG0uYmFpZHUuY29tghBsb2cuaG0uYmFpZHUuY29t
ghBjbS5wb3MuYmFpZHUuY29tghB3bi5wb3MuYmFpZHUuY29tghR1cGRhdGUucGFu
LmJhaWR1LmNvbTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0j
BBgwFoAU+O9/8s14Z6jeb48kjYjxhwMCs+swHQYDVR0OBBYEFK3KAFTK2OWUto+D
2ieAKE5ZJDsYMIIBfwYKKwYBBAHWeQIEAgSCAW8EggFrAWkAdgCvGBoo1oyj4KmK
TJxnqwn4u7wiuq68sTijoZ3T+bYDDQAAAZCQAGzzAAAEAwBHMEUCIFwF5Jc+zyIF
Gnpxchz9fY1qzlqg/oVrs2nnuxcpBuuIAiEAu3scD6u51VOP/9aMSqR2yKHZLbHw
Fos9U7AzSdLIZa8AdgAS8U40vVNyTIQGGcOPP3oT+Oe1YoeInG0wBYTr5YYmOgAA
AZCQAG3iAAAEAwBHMEUCIBBYQ6NP7VUDgfktWRg5QxT23QAbTqYovtV2D9O8Qc0T
AiEA2P7+44EvQ5adwL1y56oyxv/m+Gujeia7wpo7+Xbhv6MAdwAN4fIwK9MNwUBi
EgnqVS78R3R8sdfpMO8OQh60fk6qNAAAAZCQAGy+AAAEAwBIMEYCIQDU7Hxtx4c9
p9Jd+cr+DCMtyRYSc0b8cktCcbMmtDE9ygIhAIpJd4yb7jtxnaEC8oLWDushbK1v
0BIuZu6YrQvsf1nQMA0GCSqGSIb3DQEBCwUAA4IBAQCh9DfewC012/+fHZpmSpCn
y+h3/+ClAZ8cJVO+LCmYz9r6bkyhcFquJ5qUpyoW8AYtU0oUFlqH6zLIyujW+7lq
wFxB6NsXKKdwBKmMbmnZr2Fca5f+TtwD/GDJgG/egr7fI1u8194j9KEl8cK8Fujm
+UsoWklEzd1It9xkLazJR/6SwbhSR4k610pvj8rQrS4wAewuYFDaDOfqsHtDIsx1
tZfIfoB/O1wGWZQJU2M9wC8uYq0jQ2Q0MQJXuyJz04MFiGrPAS1Uk8mWd8M+3p65
Xy4iAf8uWzs1M+fcwBE8BNBghkQgE+FSUsldm+5ZBCazU0joJswzldWisXMLTagI
-----END CERTIFICATE-----
subject=C = CN, ST = beijing, L = beijing, O = "Beijing Baidu Netcom Science Technology Co., Ltd", CN = baidu.com
issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 5414 bytes and written 445 bytes
Verification error: unable to get local issuer certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: 6A43A459770A4FC6918EA7BFF3004ECFB94F6960911314356A048A2AF074998B
    Session-ID-ctx: 
    Master-Key: 2370DEA3AACC0D869E337B8B99C80C44A190B31AB9F2DEE58CD16F0CE1EA8AC0E23CB0063A0587099EF2F5F557417EC8
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket:
    0000 - cc 95 13 98 05 87 6f 12-cd de d9 e9 cc e0 cc f7   ......o.........
    0010 - 0e 0a 9d 46 76 4b d9 a0-8d da be 48 7a 69 cb cc   ...FvK.....Hzi..
    0020 - 00 b7 2e 5f e9 c9 08 0a-05 57 f9 8d 8c 8c 7a 3d   ..._.....W....z=
    0030 - 77 45 fd 6c fa 59 0e 35-b1 35 a7 58 2e 02 e5 eb   wE.l.Y.5.5.X....
    0040 - 35 af 92 ad 62 58 88 12-39 ed 02 fd 25 c5 e4 89   5...bX..9...%...
    0050 - 7e 8a bf 9e 87 02 4b d7-39 be c7 fc 09 27 7e 5d   ~.....K.9....'~]
    0060 - c6 af 8d 48 13 f1 97 fe-58 fa 4b 17 01 77 f5 4d   ...H....X.K..w.M
    0070 - d4 fd 1d b6 01 69 83 2d-df e7 c3 a3 45 eb c5 f9   .....i.-....E...
    0080 - 9c 50 cd f6 60 41 d5 44-cb ce 2a 3a af 08 92 c9   .P..`A.D..*:....
    0090 - 11 d0 d5 39 f9 be c0 60-3f 2f 59 bf 71 a0 76 d7   ...9...`?/Y.q.v.

    Start Time: 1740298678
    Timeout   : 7200 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
    Extended master secret: no
---

HTTP/1.1 400 Bad Request

closed

  • 命令成功连接到目标服务器(CONNECTED(00000003)),说明目标端口(443)是开放的。

    使用 Python 脚本,socket连接

    如果服务器上安装了Python,你可以编写一个简单的Python脚本来测试端口连接。以下是一个Python3的例子:

    import socket
    
    
    def check_tcp_port(ip, port, timeout=5):
        """
        检查指定的 TCP 端口是否开放。
    
        参数:
        - ip (str): 目标主机的 IP 地址。
        - port (int): 要检查的端口号。
        - timeout (int): 设置超时时间(秒),默认为 5 秒。
    
        返回值:
        - 如果端口开放,返回 True;否则返回 False。
        """
        try:
            # 创建一个 TCP 套接字
            # socket.SOCK_STREAM:表示使用 TCP 协议(面向连接的流式协议)
            # socket.AF_INET:表示使用 IPv4 协议
            with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
                sock.settimeout(timeout)  # 设置超时时间
                result = sock.connect_ex((ip, port))  # 尝试连接目标地址和端口
                if result == 0:
                    print(f"端口 {port} 是开放的")
                    return True
                else:
                    print(f"端口 {port} 可能被关闭或无法访问")
                    return False
        except Exception as e:
            # 捕获异常并打印错误信息
            print(f"发生错误: {e}")
            return False
    
    
    # 示例调用
    if __name__ == "__main__":
        target_ip = '139.xxx.xxx.235'
        target_port = 22
        is_open = check_tcp_port(target_ip, target_port)
        if is_open:
            print(f"端口状态:{target_port} 开放")
        else:
            print("端口状态:关闭或不可访问")
    
    

    使用 bash 内建命令:

    您也可以利用 bash 的 /dev/tcp 功能来检查端口(请注意,这种方法在某些版本的 bash 中可能不工作,例如在基于 BusyBox 的系统中):

    timeout 5 bash -c "echo > /dev/tcp/172.19.127.13/6443" && echo "端口6443是开放的" || echo "端口6443可能被关闭或无法访问"
    

timeout 5

  • timeout 是 Linux 系统中的一个命令,用于限制后续命令的执行时间。
  • 在这里,timeout 5 表示后续命令最多运行 5 秒钟,如果超过这个时间,就会被强制终止

这个命令是用来测试一个特定的TCP端口是否开放的。我们可以将它分解为几个部分来详细解释其功能和原理:

命令分解

  1. timeout 5

    • timeout 是 Linux 系统中的一个命令,用于限制后续命令的执行时间。
    • 在这里,timeout 5 表示后续命令最多运行 5 秒钟,如果超过这个时间,就会被强制终止。
  2. bash -c “echo > /dev/tcp/172.19.127.13/6443”

    • bash -c 允许我们直接在 bash 中执行一段命令字符串。
    • /dev/tcp/<host>/<port> 是 Bash 提供的一种伪文件系统,用于简化 TCP 连接的操作。通过写入 /dev/tcp/<host>/<port>,实际上是在尝试与指定的主机和端口建立一个 TCP 连接。
    • echo > /dev/tcp/172.19.127.13/6443 的作用是向目标地址 172.19.127.13 的端口 6443 发起连接请求,并尝试发送空数据(echo 输出为空)。
  3. && echo “端口6443是开放的”

    • && 是逻辑“与”操作符。只有当前面的命令成功执行时(即返回状态码为 0),后面的命令才会被执行。
    • 如果连接成功,则输出 "端口6443是开放的"
  4. || echo “端口6443可能被关闭或无法访问”

    • || 是逻辑“或”操作符。如果前面的命令失败(返回状态码非 0),则执行后面的命令。
    • 如果连接失败,则输出 "端口6443可能被关闭或无法访问"

原理解析

  • TCP 连接机制
    当使用 /dev/tcp/<host>/<port> 时,Bash 会尝试与指定的主机和端口建立一个 TCP 连接。如果目标端口开放且网络可达,连接会成功;否则,连接会失败或超时。

  • 超时机制
    使用 timeout 命令是为了避免在网络不可达或目标端口响应缓慢的情况下,命令长时间挂起。设置超时时间为 5 秒可以有效控制等待时间。

  • 状态码判断
    Bash 命令执行后会返回一个状态码:

    • 状态码为 0 表示命令成功执行。
    • 状态码非 0 表示命令执行失败。
      根据状态码的不同,选择性地执行不同的输出。

注意事项

  1. Bash 版本要求

    • /dev/tcp/<host>/<port> 是 Bash 内置的功能,因此需要确保使用的 Shell 是 Bash,并且版本支持该功能。
  2. 权限问题

    • 某些情况下,可能需要足够的权限才能发起网络连接。如果命令失败,可以检查当前用户的权限。
  3. 防火墙或网络限制

    • 即使目标端口本身是开放的,也可能因为防火墙、路由器规则或其他网络配置导致连接失败。

这条命令的核心功能是通过 Bash 的内置 TCP 功能测试某个远程主机的指定端口是否开放,并结合 timeout 控制超时时间,最后根据连接结果输出相应的信息。

写一个 shell 脚本来检测

#!/bin/bash

# 设置目标主机和端口
HOST="172.19.127.13"
PORT="6443"
TIMEOUT=5

# 尝试连接目标主机的指定端口,并设置超时时间
if timeout $TIMEOUT bash -c "echo > /dev/tcp/$HOST/$PORT" &>/dev/null; then
    # 如果连接成功,输出端口开放的消息
    echo "端口$PORT是开放的"
else
    # 如果连接失败或超时,输出端口关闭或无法访问的消息
    echo "端口$PORT可能被关闭或无法访问"
fi

使用 nmap:

如果发现命令不存在, 手动安装一下这个命令

sudo yum install -y  nmap

如果服务器上有 nmap,可以使用它来扫描端口:

nmap  -p  <port>  <host>
  • -p 6443:指定要扫描的端口号为 6443
# nmap -p 6443 172.19.127.13

Starting Nmap 6.40 ( http://nmap.org ) at 2025-02-23 16:11 CST
Nmap scan report for 172.19.127.13
Host is up (0.0024s latency).
PORT     STATE SERVICE
6443/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
 nmap -p 443  www.zhiexa.com

Starting Nmap 6.40 ( http://nmap.org ) at 2025-02-23 16:10 CST
Nmap scan report for www.zhiexa.com (106.15.73.115)
Host is up (0.00053s latency).
PORT    STATE SERVICE
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.56 seconds

总结

本文简单总结常用的测试端口的命令, 方便以后忘记了来看看,做个记录,最常用的 nc telnet 其次我喜欢用 curl
如果你喜欢欢迎点赞或关注!

分享快乐,留住感动. '2025-02-23 16:27:39' --frank

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

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

相关文章

DevEco Studio常用快捷键以及如何跟AndroidStudio的保持同步

DevEco Studio快捷键 DevEco Studio是华为推出的用于开发HarmonyOS应用的集成开发环境&#xff0c;它提供了丰富的快捷键以提高开发效率&#xff0c;以下为你详细介绍不同操作场景下的常用快捷键&#xff1a; 通用操作快捷键 操作描述Windows/Linux 快捷键Mac 快捷键打开设置窗…

[Windows] 全国油价实时查询,可具体到城市

[Windows] 全国油价实时查询&#xff0c;可具体到城市 链接&#xff1a;https://pan.xunlei.com/s/VOJnS3aOPeBwGaSvS0O0E1hwA1?pwdx83j# 出于代码练习的目的&#xff0c;调用公共免费api做的py程序&#xff0c;已经一键打包&#xff0c;双击启动即可 使用&#xff1a;选择…

【CSS】---- CSS 变量,实现样式和动画函数复用

1. 前言 本文介绍 CSS 的自定义属性(变量)来实现样式、动画等 CSS 的复用。都是知道在 CSS 和 JS 复用一个很重要的事情,比如 JS 的函数封装,各个设计模式的使用等等,CSS 中样式的复用,同样重要。MDN 使用 CSS 自定义属性(变量):自定义属性(有时候也被称作CSS 变量或…

装修流程图: 装修前准备 → 设计阶段 → 施工阶段 → 安装阶段 → 收尾阶段 → 入住

文章目录 引言I 毛坯房装修的全流程**1. 装修前准备****1.1 确定装修预算****1.2 选择装修方式****1.3 选择装修公司****1.4 办理装修手续****2. 设计阶段****2.1 量房****2.2 设计方案****2.3 确认方案****3. 施工阶段****3.1 主体拆改****3.2 水电改造****3.3 防水工程****3.…

【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》

论文链接 1. 背景与动机 语言空间与推理的矛盾 目前大多数大语言模型&#xff08;LLMs&#xff09;在解决复杂问题时采用链式思维&#xff08;Chain-of-Thought, CoT&#xff09;方法&#xff0c;即利用自然语言逐步推导出答案。然而&#xff0c;论文指出&#xff1a; 自然语言…

深度剖析 C 语言函数递归:原理、应用与优化

在 C 语言的函数世界里&#xff0c;递归是一个独特且强大的概念。它不仅仅是函数调用自身这么简单&#xff0c;背后还蕴含着丰富的思想和广泛的应用。今天&#xff0c;让我们跟随这份课件&#xff0c;深入探索函数递归的奥秘。 一、递归基础&#xff1a;概念与思想 递归是一种…

goredis常见基础命令

基本操作 //删除键 exists,err: rdb.Exists(ctx,"key").Result() if err!nil{panic(err) } if exists>0{err rdb.Del(ctx,"key").Err()if err!nil{panic(err)} }string类型 //设置一个键值对 //0表示没有过期时间 err:rdb.Set(ctx,"key1",…

【Linux网络】序列化、守护进程、应用层协议HTTP、Cookie和Session

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、序列化和反序列化2、守护进程2.1 什么是进程组&#xff1f;2.2 什么是会话&#xff1f; 3、应用层协议HTTP3.1 HTTP协议3.2 HT…

system verilog的流操作符

流操作符&#xff0c;有分为操作对象是一整个数组和单独的数据两种&#xff0c;例如bit [7:0] a[4]和bit [31:0] b&#xff0c;前者操作对象是数组&#xff0c;后者是单独一个较大位宽的数。 流操作符有<<和>>&#xff0c;代表从右向左打包和从左向右打包。 打包的…

LLM2CLIP论文学习笔记:强大的语言模型解锁更丰富的视觉表征

1. 写在前面 今天分享的一篇论文《LLM2CLIP: P OWERFUL L ANGUAGE M ODEL U NLOCKS R ICHER V ISUAL R EPRESENTATION》&#xff0c; 2024年9月微软和同济大学的一篇paper&#xff0c; 是多模态领域的一篇工作&#xff0c;主要探索了如何将大模型融合到Clip模型里面来进一步提…

计算机毕业设计SpringBoot+Vue.jst网上超市系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

HTTP SSE 实现

参考&#xff1a; SSE协议 SSE技术详解&#xff1a;使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为&#xff1a;服务端和客户端建立连接之后双方均保持连接&#xff0c;但仅支持服务端向客户端推送数据。推送完毕之后关闭连接&#xff0c;无状态行。 下面是基于…

二分图检测算法以及最大匹配算法(C++)

上一节我们学习了有向图中的最大连通分量. 本节我们来学习二分图. 二分图是一种特殊的图结构, 能够帮助我们高效地解决这些匹配和分配问题. 本文将带你了解二分图的基本概念, 判定方法, 最大匹配算法以及实际应用场景. 环境要求 本文所用样例在Windows 11以及Ubuntu 24.04上面…

Keepalive基础

一。简介和功能 vrrp协议的软件实现&#xff0c;原生设计目的是为了高可用ipvs服务 功能&#xff1a; 1.基于vrrp协议完成地址流动 2.为vip地址所在的节点生成ipvs规则&#xff08;在配置文件中预先定义&#xff09; 3.为ipvs集群的各RS做健康状况检测 4.基于脚本调用接口…

计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【Java消息队列】应对消息丢失、重复、顺序与积压的全面策略

应对消息丢失、重复、顺序与积压的全面策略 引言kafka消息丢失生产者消费者重复消费顺序消费消息积压生产者消费者其他RabbitMQ消息丢失生产者事务机制,保证生产者发送消息到 RabbitMQ Server发送方确认机制,保证消息能从交换机路由到指定队列保证消息在 RabbitMQ Server 中的…

【论文解读】TransMLA: Multi-Head Latent Attention Is All You Need

论文链接 1. 论文背景与问题动机 现代大规模语言模型&#xff08;LLM&#xff09;在推理时往往遇到通信瓶颈&#xff0c;主要原因在于自注意力机制中需要缓存大量的 Key-Value&#xff08;KV&#xff09;对。例如&#xff0c;对于 LLaMA‑65B 这种模型&#xff0c;即使采用 8…

登录-06.JWT令牌-生成和校验

一.JWT令牌的生成和校验 JWT令牌生成 想要生成JWT令牌&#xff0c;那么就要首先引入JWT令牌的相关依赖&#xff0c; <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version>…

【Git】多人协作

文章目录 完成准备工作多人协作场景一场景二远程分支删除后&#xff0c;本地 git branch -a 依然能看到的解决办法 完成准备工作 在之前&#xff0c;我们所完成的工作如下&#xff1a; 基本完成 Git 的所有本地库的相关操作&#xff0c;git基本操作&#xff0c;分支理解&#…

邮件安全之发件人伪造

电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议&#xff0c;具体功能如下&#xff1a; SMTP:全称Simple Mail Transfer Protocol&#xff0c;即简单邮件传输协议&#xff0c;主要用于发送邮件&#xff0c;使用端口号25。 IMAP:全称Internet Mail Acce…