检测服务端口是否开放的常用方法
检测服务端口是否开放的常用方法
文章目录
- 检测服务端口是否开放的常用方法
- 背景
- 使用`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.crtCApath: 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.htmlcurl performs SSL certificate verification by default, using a "bundle"of Certificate Authority (CA) public keys (CA certs). If the defaultbundle file isn't adequate, you can specify an alternate fileusing the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented inthe bundle, the certificate verification probably failed due to aproblem with the certificate (it might be expired, or the name mightnot match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, usethe -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 chain0 s:C = CN, ST = beijing, L = beijing, O = "Beijing Baidu Netcom Science Technology Co., Ltd", CN = baidu.comi:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256v:NotBefore: Jul 8 01:41:02 2024 GMT; NotAfter: Aug 9 01:41:01 2025 GMT1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSigna:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256v:NotBefore: Nov 21 00:00:00 2018 GMT; NotAfter: Nov 21 00:00:00 2028 GMT2 s:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSigni:C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CAa:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256v: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.2Cipher : ECDHE-RSA-AES128-GCM-SHA256Session-ID: 6A43A459770A4FC6918EA7BFF3004ECFB94F6960911314356A048A2AF074998BSession-ID-ctx: Master-Key: 2370DEA3AACC0D869E337B8B99C80C44A190B31AB9F2DEE58CD16F0CE1EA8AC0E23CB0063A0587099EF2F5F557417EC8PSK identity: NonePSK identity hint: NoneSRP username: NoneTLS 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.M0070 - 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: 1740298678Timeout : 7200 (sec)Verify return code: 20 (unable to get local issuer certificate)Extended master secret: no
---HTTP/1.1 400 Bad Requestclosed
-
命令成功连接到目标服务器(
CONNECTED(00000003)
),说明目标端口(443)是开放的。使用 Python 脚本,socket连接
如果服务器上安装了Python,你可以编写一个简单的Python脚本来测试端口连接。以下是一个Python3的例子:
import socketdef 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 Trueelse:print(f"端口 {port} 可能被关闭或无法访问")return Falseexcept Exception as e:# 捕获异常并打印错误信息print(f"发生错误: {e}")return False# 示例调用 if __name__ == "__main__":target_ip = '139.xxx.xxx.235'target_port = 22is_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端口是否开放的。我们可以将它分解为几个部分来详细解释其功能和原理:
命令分解
-
timeout 5
timeout
是 Linux 系统中的一个命令,用于限制后续命令的执行时间。- 在这里,
timeout 5
表示后续命令最多运行 5 秒钟,如果超过这个时间,就会被强制终止。
-
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
输出为空)。
-
&& echo “端口6443是开放的”
&&
是逻辑“与”操作符。只有当前面的命令成功执行时(即返回状态码为 0),后面的命令才会被执行。- 如果连接成功,则输出
"端口6443是开放的"
。
-
|| echo “端口6443可能被关闭或无法访问”
||
是逻辑“或”操作符。如果前面的命令失败(返回状态码非 0),则执行后面的命令。- 如果连接失败,则输出
"端口6443可能被关闭或无法访问"
。
原理解析
-
TCP 连接机制
当使用/dev/tcp/<host>/<port>
时,Bash 会尝试与指定的主机和端口建立一个 TCP 连接。如果目标端口开放且网络可达,连接会成功;否则,连接会失败或超时。 -
超时机制
使用timeout
命令是为了避免在网络不可达或目标端口响应缓慢的情况下,命令长时间挂起。设置超时时间为 5 秒可以有效控制等待时间。 -
状态码判断
Bash 命令执行后会返回一个状态码:- 状态码为 0 表示命令成功执行。
- 状态码非 0 表示命令执行失败。
根据状态码的不同,选择性地执行不同的输出。
注意事项
-
Bash 版本要求
/dev/tcp/<host>/<port>
是 Bash 内置的功能,因此需要确保使用的 Shell 是 Bash,并且版本支持该功能。
-
权限问题
- 某些情况下,可能需要足够的权限才能发起网络连接。如果命令失败,可以检查当前用户的权限。
-
防火墙或网络限制
- 即使目标端口本身是开放的,也可能因为防火墙、路由器规则或其他网络配置导致连接失败。
这条命令的核心功能是通过 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.13Starting 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 unknownNmap done: 1 IP address (1 host up) scanned in 0.55 seconds
nmap -p 443 www.zhiexa.comStarting 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 httpsNmap done: 1 IP address (1 host up) scanned in 0.56 seconds
总结
本文简单总结常用的测试端口的命令, 方便以后忘记了来看看,做个记录,最常用的 nc
telnet
其次我喜欢用 curl
如果你喜欢欢迎点赞或关注!
相关文章:
检测服务端口是否开放的常用方法
检测服务端口是否开放的常用方法 文章目录 检测服务端口是否开放的常用方法背景使用nc命令使用 telnet 命令使用 curl 命令使用 openssl 命令使用 Python 脚本,socket连接使用 bash 内建命令:使用 nmap:总结 背景 有时候需要测试网络是否连通,端口是否开放…...

muduo源码阅读:socket常见操作及一些补充
TCP连接和释放 一个典型的TCP连接、通信过程: (假设有资源的一端是服务器端) 服务器会启用一个监听循环,不断接受client连接请求(三次握手建立连接), 进行数据通信,通信完成以后断开连接(四次挥手断开连接)。 对于…...
虚拟表格实现全解析
在数据展示越来越复杂的今天,大量数据的渲染就像是“满汉全席”——如果把所有菜肴一次性摆上桌,既浪费资源也让人眼花缭乱。幸运的是,我们有两种选择: 自己动手:通过二次封装 Element Plus 的表格组件,实…...

使用 Grafana 监控 Spring Boot 应用
随着软件开发领域的不断发展,监控和可观测性已成为确保系统可靠性和性能的关键实践。Grafana 是一个功能强大的开源工具,能够为来自各种来源的监控数据提供丰富的可视化功能。在本篇博客中,我们将探讨如何将 Grafana 与 Spring Boot 应用程序…...
使用Socket编写超牛的http服务器和客户端(一)
实现一个高性能的基于 IOCP(I/O Completion Ports)的 HTTP 服务器,支持多线程、动态线程池调整和路由处理。 主要功能和特性 IOCP 模型: 使用多个 IOCP 句柄(IOCP_COUNT),将客户端连接均匀分配到不同的 IOCP 上,减少线程竞争。 工作线程使用 GetQueuedCompletionStatu…...

python turtle模块有哪几种命令
python turtle模块命令的分类: 1、运动命令 2、笔画控制命令 3、其他命令...

【Transformer架构】
目录 一、Transformer介绍 1.1 Transformer的诞生 1.2 什么是Transformer 1.3 Transformer的优势 1.4 Transformer的市场 二、Transformer架构 2.1 Transformer模型的作用 2.2 Transformer总体架构图 2.2.1 Transformer总体架构 2.2.2 输入部分 2.2.3 输出部分 2.2.…...

unity学习50:NavMeshAgent 区域Areas和cost
目录 1 NavMeshAgent 区域和成本的问题 2 区域Areas 2.1 区域和颜色 2.2 区域和成本 2.3 区域成本的作用 2.4 地图测试准备 2.5 如何实现 2.5.1 unity的2022之前的老版本 2.5.2 unity的2022之后的新版本 2.6 如果测试失败,是因为没有bake 2.7 测试前&…...

Blender小技巧和注意事项
1.雕刻模式如果没反应,需要将模式转换成编辑模式 2. 鼠标移到大纲 点击 小键盘的. / 大键盘句号 , 在大纲视图快速找到选中物体 3.打包图像等数据进Blender文件中,可以防止丢失 4.拍摄小物体用长焦镜头 , 焦距120mm左右...
Python常见面试题的详解15
1. 死锁(Deadlock) 死锁指的是在多线程或者多进程的运行环境中,两个或多个线程(进程)彼此等待对方释放所占用的资源,进而陷入无限期等待的僵局,最终导致程序无法继续推进。 必要条件 互斥条件…...

代码审计初探
学会了基础的代码审计后,就该提高一下了,学一下一些框架的php代码审计 先从一些小众的、已知存在漏洞的cms入手 phpems php的一款开源考试系统 源码下载 https://down.chinaz.com/soft/34597.htm 环境部署 windows审计,把相关文件放到phps…...

Spring面试题2
1、compareable和compactor区别 定义与包位置:Comparable是一个接口,位于java.lang包,需要类去实现接口;而Compactor是一个外部比较器,位于java.util包 用法:Comparable只需要实现int compareTo(T o) 方法,比较当前对…...

Linux 权限系统和软件安装(二):深入理解 Linux 权限系统
在 Linux 的世界里,权限系统犹如一位忠诚的卫士,严密守护着系统中的文件与目录,确保只有具备相应权限的用户才能进行操作。与其他一些操作系统不同,Linux 并不依据文件后缀名来标识文件的操作权限,而是构建了一套独特且…...

二:前端发送POST请求,后端获取数据
接着一:可以通过端口访问公网IP之后 二需要实现:点击飞书多维表格中的按钮,向服务器发送HTTP请求,并执行脚本程序 向服务器发送HTTP请求: 发送请求需要明确一下几个点 请求方法: 由于是向服务器端发送值…...

单机上使用docker搭建minio集群
单机上使用docker搭建minio集群 1.集群安装1.1前提条件1.2步骤指南1.2.1安装 Docker 和 Docker Compose(如果尚未安装)1.2.2编写docker-compose文件1.2.3启动1.2.4访问 2.使用2.1 mc客户端安装2.2创建一个连接2.3简单使用下 这里在ubuntu上单机安装一个m…...

安全生产月安全知识竞赛主持稿串词
女:尊敬的各位领导、各位来宾 男:各位参赛选手、观众朋友们 合:大家好~ 女:安全是天,有了这一份天,我们的员工就会多一份幸福, 我们的企业就会多一丝光彩。 男:安全是地,有了这一片地,我们的员工就多了一…...
C++的设计模式
1. 创建型模式 单例模式 (Singleton) 意图:确保类仅有一个实例,并提供全局访问点。(常见的日志类)实现:class Singleton { private:static Singleton* instance;Singleton() {} // 私有构造函数 public:static Singl…...

C++手撕AVL树
C手撕AVL树 1、AVL树的概念2、AVL树的结构3、AVL树的插入3.1、大概过程3.2、更新平衡因子3.3、更新平衡因子代码3.4、左单旋3.5、右单旋3.6、右左双旋3.7、左右双旋 4、AVL树的删除5、AVL树的查找6、AVL树的平衡检测7、AVL树的其他函数完整代码 1、AVL树的概念 二叉搜索树虽可…...

写大论文的word版本格式整理,实现自动生成目录、参考文献序号、公式序号、图表序号
前情提要:最近开始写大论文,发现由于内容很多导致用老方法一个一个改的话超级麻烦,需要批量自动化处理,尤其是序号,在不断有增添删减的情况时序号手动调整很慢也容易出错,所以搞一个格式总结,记…...

Redission可重试、超时续约的实现原理(源码分析)
Redission遇到其他进程已经占用资源的时候会在指定时间waitTime内进行重试。实现过程如下: 执行获取锁的lua脚本时,会返回一个值, 如果获取锁成功,返回nil,也就是java里的null 如果获取锁失败,用语句“PT…...

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> …...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...