【linux网络编程】端口
一、端口(Port)概述
在计算机网络中,端口(Port) 是用来标识不同进程或服务的逻辑通信端点。它类似于一座大楼的房间号,帮助操作系统和网络协议区分不同的应用程序,以便正确地传输数据。
1. 端口的作用
在网络通信中,IP地址用于标识主机,而端口用于区分同一主机上的多个服务。例如:
- 访问网页时,数据传输使用 HTTP协议(端口80) 或 HTTPS协议(端口443)。
- 远程登录服务器时,使用 SSH协议(端口22)。
- 发送邮件时,使用 SMTP协议(端口25)。
端口号的作用是确保数据包可以正确地发送到特定的应用程序或服务。
2. 端口的范围
端口号是一个 16位的整数,取值范围为 0~65535,通常分为三类:
-
知名端口(Well-Known Ports):0 ~ 1023
- 这些端口由 IANA(Internet Assigned Numbers Authority) 分配给知名服务,例如:
- HTTP(80)
- HTTPS(443)
- SSH(22)
- FTP(21)
- DNS(53)
- 这些端口由 IANA(Internet Assigned Numbers Authority) 分配给知名服务,例如:
-
注册端口(Registered Ports):1024 ~ 49151
- 这些端口通常用于软件公司或特定应用程序注册,避免冲突。例如:
- MySQL数据库(3306)
- PostgreSQL(5432)
- Docker(2375)
- 这些端口通常用于软件公司或特定应用程序注册,避免冲突。例如:
-
动态/私有端口(Dynamic/Private Ports):49152 ~ 65535
- 这些端口通常用于客户端程序的临时连接(如浏览网页、视频播放等),由操作系统动态分配。
3. 端口如何工作
当一台计算机与另一台计算机通信时,数据包不仅包含 IP地址,还包含 端口号,以确定数据要发送到哪个应用程序。例如:
-
浏览器访问网页
- 你的电脑(客户端)打开网页
http://example.com
: - 客户端随机分配一个 临时端口(如50000),向服务器的 80号端口 发送请求。
- 服务器使用 80号端口 监听请求,并将网页数据返回到客户端的 50000号端口。
- 你的电脑(客户端)打开网页
-
SSH 远程连接
- 客户端(本机):
ssh user@192.168.1.100
- 客户端使用动态端口(如52000) 连接服务器的 22号端口。
- 服务器接收到数据,并与客户端建立 SSH 连接。
- 客户端(本机):
4. 端口的分类
4.1 TCP 端口
- TCP(传输控制协议)是面向连接的协议,保证数据传输的可靠性。
- 常见的 TCP 端口:
- HTTP(80)
- HTTPS(443)
- SSH(22)
- FTP(21)
- SMTP(25)
4.2 UDP 端口
- UDP(用户数据报协议)是无连接的协议,传输速度快,但不保证数据完整性。
- 常见的 UDP 端口:
- DNS(53)
- DHCP(67/68)
- SNMP(161)
- TFTP(69)
5. 如何查看端口使用情况
在 Linux 或 Windows 中,可以使用以下命令查看端口占用情况:
5.1 Linux 查看端口
# 查看所有监听的端口(TCP 和 UDP)
netstat -tunlp# 查看指定端口是否被占用(如80)
netstat -tulnp | grep :80# 使用 ss 命令(更快)
ss -tulnp
5.2 Windows 查看端口
# 查看所有端口使用情况
netstat -ano# 查看特定端口(如80)
netstat -ano | findstr :80
#查看 Linux 上客户端临时端口范围
cat /proc/sys/net/ipv4/ip_local_port_range
#查看 Windows 上的客户端临时端口范围
netsh int ipv4 show dynamicport tcp
6. 端口转发和防火墙
在服务器或网络设备上,可以使用 端口转发(Port Forwarding) 或 防火墙(Firewall) 规则来控制端口访问。
6.1 端口转发
如果服务器 内网IP(192.168.1.100) 运行了一个 Web 服务器(端口80),可以在路由器或 Linux 上设置端口转发,使外网用户访问:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
这样,外部用户访问 http://your-public-ip:8080
时,会被转发到 192.168.1.100:80
。
6.2 防火墙控制端口
使用 iptables
或 firewalld
允许或阻止端口访问:
# 允许 22 端口(SSH 连接)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 阻止 3306 端口(MySQL 远程访问)
iptables -A INPUT -p tcp --dport 3306 -j DROP
7. 端口扫描
黑客或安全研究人员常用端口扫描工具 nmap 来检测服务器上开放的端口:
# 扫描 IP 地址 192.168.1.1 的开放端口
nmap 192.168.1.1
如果不想被扫描,可以关闭不必要的端口,或者使用防火墙限制访问。
8. 总结
- 端口是网络通信中的逻辑编号,用于区分不同的服务和应用。
- 端口号范围 0-65535,其中 0-1023 为知名端口,1024-49151 为注册端口,49152-65535 为动态端口。
- TCP 端口用于可靠传输,UDP 端口用于快速传输。
- 可以使用
netstat
或ss
命令查看端口占用情况。 - 可以使用防火墙和端口转发管理端口访问权限。
- nmap 等工具可用于扫描开放端口,管理员需做好安全防护。
二、客户端的端口与什么绑定?
客户端的端口与什么绑定?
客户端的端口绑定(Bind)到本机 IP 地址,用于建立 TCP 或 UDP 连接。具体来说,客户端的端口绑定到:
- 本机 IP 地址(例如
192.168.0.105
) - 协议类型(TCP 或 UDP)
- 服务器 IP 地址与端口(用于连接目标服务器)
1. 端口绑定的完整过程
当客户端(你的电脑)访问某个服务器(例如 www.google.com
)时,操作系统会动态分配一个端口,并与本机 IP 地址 绑定,用于进行通信。
示例
假设你的本机 IP 是 192.168.0.105
,你在浏览器输入 https://www.google.com
:
- 客户端分配端口
- 操作系统随机分配一个动态端口(例如
50000
)。 - 绑定到 本机 IP 地址
192.168.0.105
,用于与服务器通信。
- 操作系统随机分配一个动态端口(例如
- 客户端发起连接
- 发送请求到服务器
142.250.74.36:443
(Google 的 HTTPS 端口)。
- 发送请求到服务器
- 服务器响应
- 服务器的
443
端口(HTTPS)返回数据到192.168.0.105:50000
。
- 服务器的
- 数据传输完成,连接关闭
- 当浏览器收到数据后,客户端释放
50000
端口,系统可以重新分配给其他程序。
- 当浏览器收到数据后,客户端释放
📌 连接绑定关系
客户端(你的电脑)
IP地址:192.168.0.105
端口号:50000 (随机分配)服务器(Google)
IP地址:142.250.74.36
端口号:443 (HTTPS)📌 TCP 连接映射:
192.168.0.105:50000 → 142.250.74.36:443
2. 客户端端口绑定的几种方式
🔹 方式 1:动态绑定(默认)
客户端通常使用操作系统自动分配的端口(49152-65535)。
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
📌 特点
- 端口由系统随机分配,避免端口冲突。
- 适用于浏览器、API 请求、远程连接等。
🔹 方式 2:手动绑定(bind 绑定)
有些应用(如 P2P、VPN)希望使用固定端口,可以手动绑定:
struct sockaddr_in client_addr;
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = htonl(INADDR_ANY);
client_addr.sin_port = htons(50000); // 绑定 50000 端口bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr));
connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
📌 特点
- 适用于 VoIP、P2P、游戏服务器、VPN。
- 如果端口被占用,会导致
bind()
失败。
🔹 方式 3:绑定特定的 IP
有时,客户端有多个网卡(多个 IP),需要指定使用某个 IP:
inet_pton(AF_INET, "192.168.1.100", &client_addr.sin_addr);
bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr));
📌 特点
- 适用于服务器有多个网卡的情况(如公网和内网双 IP)。
- 可用于指定特定网络接口。
3. 绑定的三要素
客户端的端口绑定到:
- 本机 IP 地址(如
192.168.0.105
)。 - 协议(TCP/UDP)。
- 目标服务器的 IP 和端口(如
142.250.74.36:443
)。
📌 绑定示例
客户端:192.168.0.105:50000 → 服务器:142.250.74.36:443(HTTPS)
客户端:192.168.0.105:50001 → 服务器:8.8.8.8:53(DNS 查询)
如果同一个 IP 需要发起多个连接,操作系统会自动分配不同的端口,避免冲突。
4. 为什么客户端端口是随机的?
🔹 避免端口冲突
- 如果所有客户端都使用 固定端口(如 50000),不同程序之间会发生冲突。
- 操作系统通过 随机分配端口,确保多个连接可以同时进行。
🔹 提高安全性
- 随机端口 避免攻击者猜测客户端端口,减少攻击风险(如端口扫描)。
🔹 支持多个连接
- 例如,你同时打开多个 网页,每个网页都会使用不同的客户端端口:
192.168.0.105:50000 → www.google.com:443
192.168.0.105:50001 → www.facebook.com:443
192.168.0.105:50002 → www.github.com:443
这样,浏览器可以同时加载多个网页,而不会发生端口冲突。
5. 如何查看端口绑定情况?
🔹 Windows
使用 netstat
命令:
netstat -ano | findstr :50000
如果你想查看哪个程序绑定了端口:
tasklist | findstr 21612
🔹 Linux
netstat -tulnp | grep :50000
或者:
ss -tulnp
6. 服务器端端口绑定
服务器端的端口是固定的,例如:
- Web 服务器(HTTP):监听 80 端口
- Web 服务器(HTTPS):监听 443 端口
- SSH 服务器:监听 22 端口
服务器端通常绑定:
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY; // 绑定所有本机 IP
server_addr.sin_port = htons(80); // 绑定 80 端口
bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
listen(sockfd, 5);
📌 客户端连接服务器
客户端 192.168.0.105:50000 → 服务器 142.250.74.36:80
客户端 192.168.0.105:50001 → 服务器 142.250.74.36:80
服务器端使用固定端口,客户端使用随机端口 来访问。
7. 端口绑定总结
绑定对象 | 绑定到 | 作用 |
---|---|---|
客户端端口 | 本机 IP 地址 | 用于发送请求 |
服务器端口 | 固定端口(80、443、22) | 监听连接 |
动态端口 | 49152-65535 | 客户端自动分配 |
🚀 核心要点
- 客户端的端口 绑定到 本机 IP 地址,用于与服务器通信。
- 操作系统自动分配端口(49152-65535),避免端口冲突。
- 服务器端使用固定端口,客户端使用随机端口 来访问。
- 可以手动绑定端口,但可能导致端口冲突(如 VPN、P2P)。
三、实例
C:\Users\xingz>netstat -ano协议 本地地址 外部地址 状态 PIDTCP 0.0.0.0:7897 0.0.0.0:0 LISTENING 21612TCP 0.0.0.0:9012 0.0.0.0:0 LISTENING 15564TCP 127.0.0.1:1655 127.0.0.1:39797 ESTABLISHED 2864TCP 127.0.0.1:1855 127.0.0.1:7897 ESTABLISHED 22784TCP 127.0.0.1:3335 127.0.0.1:39797 ESTABLISHED 2864TCP 127.0.0.1:5080 127.0.0.1:62226 ESTABLISHED 10468TCP 127.0.0.1:6114 127.0.0.1:7897 TIME_WAIT 0TCP 127.0.0.1:6122 127.0.0.1:7897 ESTABLISHED 22784TCP 127.0.0.1:6219 127.0.0.1:7897 ESTABLISHED 22784TCP 127.0.0.1:6296 127.0.0.1:7897 ESTABLISHED 22784TCP 127.0.0.1:6308 127.0.0.1:7897 TIME_WAIT 0TCP 127.0.0.1:6370 127.0.0.1:7897 ESTABLISHED 22784TCP 127.0.0.1:6382 127.0.0.1:6381 TIME_WAIT 0TCP 127.0.0.1:6386 127.0.0.1:7897 ESTABLISHED 22784UDP 127.0.0.1:49664 127.0.0.1:49664 4984UDP 192.168.0.105:137 *:* 4UDP 192.168.0.105:138 *:* 4
解析你的 netstat
活动连接信息
你的 netstat
结果列出了 所有当前活动的 TCP 和 UDP 连接,包含:
- 监听端口(LISTENING)
- 已建立的连接(ESTABLISHED)
- 等待状态的连接(TIME_WAIT、CLOSE_WAIT、LAST_ACK 等)
1. LISTENING
端口(正在监听)
这些端口是服务器程序正在监听的端口,意味着某些服务正在等待连接。例如:
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1516
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:7897 0.0.0.0:0 LISTENING 21612
常见监听端口的含义
端口号 | 进程 ID (PID) | 作用 |
---|---|---|
135 | 1516 | 远程过程调用(RPC),Windows 用于 DCOM |
445 | 4 | Windows 文件共享(SMB) |
7897 | 21612 | 这个端口在你的系统里频繁出现,可能是某个本地应用的后台服务 |
5040 | 9412 | 可能与 Microsoft Edge 或 Cortana 相关 |
7680 | 15700 | 可能是 Windows 的 Delivery Optimization (P2P 更新) |
如何查看进程名称?
Windows:
tasklist | findstr 21612
Linux:
lsof -i :7897
2. ESTABLISHED
(已建立的连接)
这些是当前正在使用的网络连接:
TCP 192.168.0.105:1856 223.109.175.205:443 ESTABLISHED 21612
TCP 192.168.0.105:1858 120.221.204.185:7826 ESTABLISHED 21612
TCP 192.168.0.105:4828 223.5.5.5:443 ESTABLISHED 21612
TCP 192.168.0.105:5478 223.5.5.5:443 ESTABLISHED 21612
📌 含义解析
192.168.0.105
是你的本机 IP。223.5.5.5:443
是 阿里 DNS 服务器,用于 HTTPS 连接。120.221.204.185:7826
可能是 游戏、云服务 或者 即时通信软件(如微信、QQ)。- PID 21612 可能是某个活跃的程序,如 浏览器、聊天软件、云服务。
如何确认这些 IP 是什么?
你可以使用 nslookup
或 whois
:
nslookup 223.109.175.205
whois 223.109.175.205
3. TIME_WAIT
(等待超时)
TCP 127.0.0.1:6308 127.0.0.1:7897 TIME_WAIT 0
TCP 192.168.0.105:6115 120.253.253.98:443 TIME_WAIT 0
TIME_WAIT
说明:
- 这些连接已经被关闭,但为了确保数据完整性,系统会等待一段时间(通常是
2*MSL
,最大生存时间)。 - 这种情况通常发生在 短连接 HTTP 请求(如访问网页)。
如何减少 TIME_WAIT
连接数量?
Windows:
netsh int tcp set global MaxUserPort=65535
netsh int tcp set global TcpTimedWaitDelay=30
Linux:
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
4. CLOSE_WAIT
(被动关闭)
TCP 127.0.0.1:6419 127.0.0.1:7897 CLOSE_WAIT 22784
TCP 192.168.0.105:6420 123.249.98.69:443 CLOSE_WAIT 21612
📌 CLOSE_WAIT 说明
- 服务器(或本机)没有正确关闭连接。
- 这通常是 进程没有释放 socket 资源,可能是软件的 bug 或网络异常。
如何修复 CLOSE_WAIT
?
- 终止进程:
taskkill /PID 22784 /F
- 检查应用是否未正确关闭 socket:
- Web 服务器、数据库、远程桌面 可能需要优化连接管理。
5. LAST_ACK
(等待最后确认)
TCP 192.168.0.105:6431 112.34.111.235:443 LAST_ACK 21612
TCP 192.168.0.105:6470 112.34.111.235:443 LAST_ACK 21612
📌 LAST_ACK 说明
- 服务器已经关闭连接,但客户端还未确认。
- 可能是网络丢包,或者客户端软件的关闭逻辑有问题。
如何解决 LAST_ACK
?
- 检查防火墙、路由器是否丢包。
- 检查网络是否稳定(特别是 Wi-Fi、VPN)。
- 如果
LAST_ACK
连接持续很长时间,可以尝试重启该进程:taskkill /PID 21612 /F
6. UDP
端口(无连接)
UDP 端口通常用于:
- DNS 解析(5353, 53)
- 网络发现(3702)
- SNMP 监控(161)
- 游戏或 VoIP(随机高端口)
UDP 0.0.0.0:123 *:* 15676
UDP 0.0.0.0:3702 *:* 5820
UDP 0.0.0.0:5353 *:* 22784
UDP 0.0.0.0:7897 *:* 21612
UDP 0.0.0.0:59964 *:* 22784
UDP 192.168.0.105:137 *:* 4
📌 UDP 端口解析
123
→ NTP(网络时间同步)3702
→ Windows 设备发现(WS-Discovery)5353
→ mDNS(Bonjour,局域网服务发现)137
→ NetBIOS(局域网共享)
如何关闭不需要的 UDP 端口?
Windows:
net stop W32Time
Linux:
systemctl stop systemd-timesyncd
7. 如何分析哪个程序占用了某个端口?
Windows
netstat -ano | findstr :7897
tasklist | findstr 21612
Linux
lsof -i :7897
netstat -tulnp | grep 7897
总结
- 监听的端口(LISTENING):服务器应用正在等待连接。
- 已建立的连接(ESTABLISHED):正在通信的 TCP 连接。
- TIME_WAIT:等待超时,防止旧连接影响新连接。
- CLOSE_WAIT:进程未正确关闭连接,可能有 bug。
- LAST_ACK:服务器等待客户端确认关闭,可能有网络丢包。
- UDP 端口:用于 DNS、NTP、游戏、mDNS 发现等。
相关文章:
【linux网络编程】端口
一、端口(Port)概述 在计算机网络中,端口(Port) 是用来标识不同进程或服务的逻辑通信端点。它类似于一座大楼的房间号,帮助操作系统和网络协议区分不同的应用程序,以便正确地传输数据。 1. 端口…...
Vulnhub-Node
目录标题 一、靶机搭建二、信息收集靶机信息扫ip扫开放端口和版本服务信息指纹探测目录扫描 三、Web渗透信息收集zip爆破ssh连接 四、提权内核版本提权 利用信息收集拿到路径得到账户密码,下载备份文件,base64解密后,利用fcrackzip爆破zip压缩…...
RK3568平台(camera篇)camera3_profiles_rk3588.xml解析
camera3_profiles_rk3588.xml 是一个与 Android 相机 HAL(硬件抽象层)相关的配置文件,通常用于定义 Rockchip RK3588 平台上的相机设备及其功能。该文件基于 Android 的 Camera3 HAL 框架,用于描述相机的配置、流配置、分辨率、帧率、格式等信息。 以下是对 camera3_profi…...
高阶哈希算法
SHA-256简介 SHA-256 是 **SHA-2(Secure Hash Algorithm 2)**家族中的一种哈希算法,由美国国家安全局设计,并于 2001 年发布。它能够将任意长度的数据映射为一个固定长度256 位,即 32 字节的哈希值,通常以…...
Spark数据倾斜深度解析与实战解决方案
Spark数据倾斜深度解析与实战解决方案 一、数据倾斜的本质与影响 数据倾斜是分布式计算中因数据分布不均导致的性能瓶颈现象。当某些Key对应的数据量远超其他Key时,这些"热点Key"所在的Task会消耗80%以上的计算时间,成为整个作业的木桶短板。具体表现为: Task执…...
Kubernetes滚动更新实践
前言 在我之前的项目中,对微服务升级采用的做法是删除整个namespace, 再重新应用所有yaml。 这种方式简单粗暴,但是不可避免的导致服务中断,影响了用户体验 为了解决更新服务导致的服务中断问题, Kubernetes提供了一种…...
Broken pipe
比较常见的一个问题。 但是并不是每个人都能说清楚。 首先注意下写法: Broken pipe # B大写 p小写 主要是grep的时候别写错了 常见的原因 1、客户端关闭连接。 在服务器端处理请求的过程中,客户端突然关闭了连接,例如浏览器关闭、网络断开…...
doris:ClickHouse
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 ClickHouse 数据库。本文档介绍如何配置 ClickHouse 数据库连接。 使用须知 要连接到 ClickHouse 数据库,您需要 ClickHouse 23.x 或更高版本 (低于此版本未经充分测试)。 ClickHouse 数据库的 JDBC 驱动程序&a…...
前K个高频单词
692. 前K个高频单词 - 力扣(LeetCode) 题目描述: 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序…...
恢复IDEA的Load Maven Changes按钮
写代码的时候不知道点到什么东西了,pom文件上的这个弹窗就是不出来了,重启IDEA,reset windos都没用,网上搜也没收到解决方案 然后开打开其他项目窗口时,看到那个的功能名叫 Hide This Notification 于是跑到Setting里…...
【五.LangChain技术与应用】【31.LangChain ReAct Agent:反应式智能代理的实现】
一、ReAct Agent是啥?为什么说它比「普通AI」聪明? 想象一下,你让ChatGPT查快递物流,它可能直接编个假单号糊弄你。但换成ReAct Agent,它会先推理(Reasoning)需要调用哪个接口,再行动(Action)查询真实数据——这就是ReAct的核心:让AI学会「动脑子」再动手。 举个真…...
Leetcode 62: 不同路径
Leetcode 62: 不同路径 问题描述: 一个机器人位于一个 (m \times n) 网格的左上角(起始点位于 ((0, 0)))。 机器人每次只能向下或向右移动一步。网格的右下角为终点(位于 ((m-1, n-1)))。 计算机器人从左上角到右下角…...
计算机毕业设计SpringBoot+Vue.js火锅店管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
一、软件定位与特性 Docker Desktop 是容器化应用开发与部署的一体化工具,支持在本地环境创建、管理和运行Docker容器。4.38版本新增GPU加速支持、WSL 2性能优化和Kubernetes 1.28集群管理功能,适用于微服务开发、CI/CD流水线搭建等场景。 二、安装环境…...
算法系列之广度优先搜索解决妖怪和尚过河问题
在算法学习中,广度优先搜索(BFS)是一种常用的图搜索算法,适用于解决最短路径问题、状态转换问题等。本文将介绍如何利用广度优先搜索解决经典的“妖怪和尚过河问题”。 问题描述 有三个妖怪和三个和尚需要过河。他们只有一条小船…...
【技术白皮书】内功心法 | 第一部分 | IP协议的目的与工作原理(IP地址)
目录 IP协议的介绍IP协议的目的与工作原理IP协议处理过程与信件传递的相似IP协议处理过程与信件传递的区别IP协议中的概念IP数据包IP地址IP地址组成IP地址分类和组成A、B、C三类地址的格式设计特殊类型的IP地址与传统通信地址进行类比IP地址的表示五类IP地址的地址范围IP地址的…...
【Linux】外接硬盘管理
查看外接硬盘信息 连接外接硬盘后,使用以下命令识别设备: lsblk:列出块设备及其挂载点 lsblk示例输出可能显示设备名称如 /dev/sdb。 通过 lsblk -f 可同时显示文件系统类型和 UUID。 fdisk -l:列出所有磁盘的分区信息ÿ…...
【Hadoop】详解Zookeeper选主流程
1. ZooKeeper 的工作原理 Zookeeper 的核心是Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。 为了保证事务的顺序一致性,Zookeeper采用了递增的事务id号(zxid)来标识事务。所有…...
C语言-语法
数据类型 字符串 C中字符串拼接不用+号,直接使用空格。 char* str = "hello" "world"; 换行链接,加上\就不会报错 char* longStr = "00000000000000000000000000000\ 00000000000000000000000000000"; typedef C 语言提供了 typedef …...
Flink Forward Asia 2024 大会 内容整理
一、Flink 2.0:十年磨一剑,开启流计算新纪元 作为 Flink 诞生十周年的重磅更新,Flink 2.0 被定位为“面向未来十年的流计算引擎”,核心目标是解决云原生、AI 融合、存算效率等新时代挑战。以下是它的几大杀手锏: 1. …...
golang进阶知识专项-理解值传递
在 Go 语言中,所有函数的参数传递都是值传递(Pass by Value)。当你将一个变量作为参数传递给函数时,实际上传递的是该变量的副本,而不是变量本身。理解这一点对于避免常见的编程错误至关重要。根据不同的类型ÿ…...
2020年联考《申论》第三题(河北县级卷)
材料: 总面积不过八平方米的店铺,摆满货品之后,两人在店内走动都有些困难,但这家小店在当地却是小有名气的老字号。69岁的店主老林是资深木雕艺人,更被称为“最后的手工酸枝筷子传人”。手工木筷取材自缅甸坤甸木、老挝…...
Kali WebDAV 客户端工具——Cadaver 与 Davtest
1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...
八点八数字科技:开启数字人应用的无限可能
在数字科技飞速发展的时代,八点八数字科技凭借卓越实力,成为行业的领军者。自 2014 年成立,公司汇聚近百位顶尖人才,手握 30 新型发明专利与 80 软件著作权,完成数千万融资,实力备受认可。其自主研发的全…...
Vue 使用 vue-router 时,多级嵌套路由缓存问题处理
Vue 使用 vue-router 时,多级嵌套路由缓存问题处理 对于三级菜单(或多级嵌套路由),vue 都是 通过 keep-alive 组件来实现路由组件的缓存。 有时候三级或者多级路由时,会出现失效情况。以下是三级菜单缓存的例子。 最…...
《实战AI智能体》Deepseek可以做什么?自然语言理解与分析
在人工智能技术快速迭代的今天,Deepseek凭借其先进的自然语言处理能力,正在重塑人机交互的边界。本文将从技术实现维度,深入解析该平台在自然语言理解、知识推理与文本分类三大核心领域的技术突破与应用实践。 一、深度语义理解引擎 Deepseek构建了多层级的语义解析架构,实…...
虚拟主机认证功能
一.认证功能 类型: 1.基于客户端地址的认证 2.基于用户的认证 1.基于客户端地址的认证 nginx是一款模块化软件,功能都是基于模块实现的。 如上图所示,访问认证是使用的这个access_module模块。 这个模块也给我们提供了一些指令…...
BGP协议深度解析:从背景到术语的全面梳理
引言 在复杂的网络架构中,不同自治系统(AS)之间的路由交互至关重要。BGP(Border Gateway Protocol,边界网关协议)作为自治系统间的动态路由协议,承担着跨 AS 路由传递的关键任务。本文将深入探讨…...
初步认识线程
概念 一个线程就是一个 "执行流",每一个线程之间都可以按照顺序执行自己的代码,多个线程之间可以 "同步" 执行多份代码 比如说,原本一个人做的事情,现在交给三个人一起做,那么这三个人就是线程 使用原因 那么为什么要有线程呢?我们直接使用进程不可以…...
【从零开始学习计算机科学】数字逻辑(一)绪论
【从零开始学习计算机科学】数字逻辑(一)绪论 概论信息与数字数字系统中常用的概念数字信号的描述方法概论 从数字(集成)电路的出现到计算机到网络到今天的移动互联网,数字电路是所有现代信息技术的基础。那么数字电路的基础又是什么呢?就是数字逻辑。所有数字系统都是基…...
Tomcat与Jetty的选择
Tomcat与Jetty的对比分析,分核心区别、性能表现及选型建议三部分: 一、核心区别对比 对比维度TomcatJetty架构设计多层级容器结构(Server→Service→Engine等),复杂度高基于Handler链的轻量级设计,扩展性强…...
用AI学编程2——python学习1
一个py文件,学会所有python所有语法和特性,给出注释,给出这样的文件 Python 学习整合文件 """ Python 学习整合文件 包含 Python 的基础语法、数据结构、函数定义、面向对象编程、异常处理、文件操作、高级特性等内容 每个部…...
【教程】宝塔提示请不要将网站根目录设置到以下关键目录中
【教程】宝塔提示请不要将网站根目录设置到以下关键目录中 【教程】宝塔提示请不要将网站根目录设置到以下关键目录中更换目录解决问题 先在宝塔下载一个 【教程】宝塔提示请不要将网站根目录设置到以下关键目录中更换目录解决问题_起尔网【教程】宝塔提示请不要将网站根目录设…...
html常用的文本标签以及属性
HTML标签 HTML通过一系列的标签(也成为元素),来定义文本,图像,链接等等,HTML标签是由尖括号包围的关键字。 标签通常成对出现,包括开始标签和结束标签(也成为双标签)&a…...
城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 在城市霓虹灯夜景拍摄中,由于现场光线复杂等因素,照片可能无法完全呈现出当时的视觉感受。通过 Lr 调色,可以弥补拍摄时的不足。例如,运用基本调整面板中的曝光、对比度、阴影等工具,可以处理出画面的整体明暗…...
c#面试题整理
1.如何保持数据库的完整性,一致性 最好的方法:数据库约束(check,unique,主键,外键,默认,非空) 其次是:用触发器 最后:才是自己些业务逻辑,这个效率低 2.事…...
数据库基础以及基本建库建表的简单操作
文章目录 一、数据库是啥1.1、数据库的概念1.1、关系型数据库、非关系型数据库1.1、数据库服务器,数据库与表之间的关系 二、为啥要使用数据库2.1:传统数据文件存储2.2:数据库存储数据2.3、结论 三、使用数据库了会咋样四、应该咋用数据库&am…...
基于spring boot使用@Sl4j的日志功能,注解引入后爆红未生效
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 问题描述问题分析解决方案 📃文章…...
《深度剖析架构蒸馏与逻辑蒸馏:探寻知识迁移的差异化路径》
在人工智能模型优化的前沿领域,架构蒸馏与逻辑蒸馏作为知识蒸馏的关键分支,正引领着模型小型化与高效化的变革浪潮。随着深度学习模型规模与复杂度的不断攀升,如何在资源受限的情况下,实现模型性能的最大化,成为了学术…...
使用OpenCV来获取视频的帧率
在OpenCV中,获取视频的帧率(FPS, Frames Per Second)是一个常见的操作,尤其是在处理视频流或进行视频分析时。帧率表示每秒钟视频中的帧数,这个参数对于视频播放速度和时间计算非常重要。 以下是如何使用OpenCV来获取…...
计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量
一、引言 在科技快速发展的背景下,3D 目标检测技术在自动驾驶和机器人领域中具有重要作用。 在自动驾驶领域,车辆需实时、准确感知周围环境中的目标物体,如行人、车辆、交通标志和障碍物等。只有精确检测这些目标的位置、姿态和类别&#x…...
vue-cli3+vue2+elementUI+avue升级到vite+vue3+elementPlus+avue总结
上一个新公司接手了一个vue-cli3vue2vue-router3.0elementUI2.15avue2.6的后台管理项目,因为vue2在2023年底已经不更新维护了,elementUI也只支持到vue2,然后总结了一下vue3的优势,最后批准升级成为了vitevue3vue-router4.5element…...
Jmeter进行http接口测试详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要针对http接口进行测试,使用 jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较…...
大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比
目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式,实现一般是通过SQL能直接生成数据API,同时能对产生的数据API进行全生命周期的管理,典型的SQL2API的实现模式。 以下是针对…...
靶场之路-VulnHub-DC-6 nmap提权、kali爆破、shell反连
靶场之路-VulnHub-DC-6 一、信息收集 1、扫描靶机ip 2、指纹扫描 这里扫的我有点懵,这里只有两个端口,感觉是要扫扫目录了 nmap -sS -sV 192.168.122.128 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.4p1 Debian 10deb9u6 (protoc…...
nginx服务器实现上传文件功能_使用nginx-upload-module模块
目录 conf文件内容如下html文件内容如下上传文件功能展示 conf文件内容如下 #user nobody; worker_processes 1;error_log /usr/logs/error.log; #error_log /usr/logs/error.log notice; #error_log /usr/logs/error.log info;#pid /usr/logs/nginx.pid;even…...
32.C++二叉树进阶1(二叉搜索树)
⭐上篇文章:31.C多态4(静态多态,动态多态,虚函数表的存储位置)-CSDN博客 ⭐本篇代码:c学习/18.二叉树进阶-二叉搜索树 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分…...
RV1126+FFMPEG多路码流监控项目
一.项目介绍: 本项目采用的是易百纳RV1126开发板和CMOS摄像头,使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图):通过采集摄像头的VI模块,再通过硬件编码VENC模块进行H264/H265的编码压缩,并把压缩后的…...
doris: SQL Server
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 SQL Server 数据库。本文档介绍如何配置 SQL Server 数据库连接。 使用须知 要连接到 SQL Server 数据库,您需要 SQL Server 2012 或更高版本,或 Azure SQL 数据库。 SQL Server 数据库的 JDBC 驱动…...
valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug
valgrind --toolhelgrind ./your_program 如果检测的对象是大型程序,可以设定仅在某些函数中开启 valgrind 的检测: Valgrind 提供了一些客户请求(client requests),可以在代码中插入特定的宏来控制 Valgrind 的行为。…...