linux常用网络工具汇总三
linux常用网络工具汇总
- 6. 抓包工具
- 6.1 wireshark
- 安装
- 界面介绍
- 使用
- 过滤器
- TCP协议示例
- 关于wireshark的缺点
- 6.2 tcpdump
- 命令格式
- 关键字
- 使用
- 关于tcpdump的缺点
- 6.3 fiddler
- 6.4 burpsuite
6. 抓包工具
6.1 wireshark
Wireshark
(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
这款软件在windows和macOS中使用较多,但也支持linux,毕竟提供了源码。
安装
下载地址 官网,一定要看好是官网才下载哦
注意:win10以前的系统,安装4.0的版本,win10及以后版本安装4.2版本,具体看下说明
安装期间会提示安装Npcap,勾选安装即可,如果已安装了,可以忽略
Npcap是一组网络通信工具集,提供了捕获网络数据包的功能。通过这些工具,用户可以截获、分析和过滤网络上传输的数据包,对于网络安全、系统开发和网络故障排查等领域有着重要的应用。
安装完成会提示选择网卡
界面介绍
wireshark和大多数软件相似,WireShark 界面包含一些常用的菜单和工具栏等,详细包括:
- 菜单栏
- 工具栏
- 过滤器
- 数据包列表面板
- 数据包详细信息面板
- 数据包字节信息面板
- 抓包按钮
下面我们来详细了解一下wireshark的使用方法
使用
wireshark有几种使用场景,包括:
- 直接抓取流量包分析
- 导入流量包分析(可以通过
tcpdump
等工具在linux导出流量包数据)
这里如果抓取的流量包后缀名是.cap
或.pcap
,在导入的时候可以看到一个小鲨鱼鳍标识的文件,比较方便。
========================================================================================================
下面我们从一个ping
示例开始,简单介绍如何使用wireshark
- 使用抓取的机器
ping
一台机器,尽量选择能ping
的通的,这里我们使用192.168.202.129 ping 192.168.202.128
- 使用wireshark开始抓取流量包
- 在过滤器添加筛选条件
icmp
(后面会详细介绍过滤器) - 一般就可以看到成对的流量包(request和reply)
- 打开一个
request
请求包,查看详细信息
我们知道ICMP协议使用IP协议的服务进行传输,属于网络层的协议。在IPv4中,ICMP报文是在IP数据报内被封装传输的。具体来说,IPv4数据报的协议字段值为1表示该报文携带了ICMP消息。这表明ICMP与IPv4之间的紧密联系,其中ICMP利用IPv4的传输机制来发送和接收控制消息
在本例的IPv4
(Internet Protocol Version 4
)协议中,我们看到
Protocol:ICMP(1)
Source Address:192.168.202.129
Destination Address:192.168.202.128
在ICMP
(Internet Control Message Protocol
),我们可以看到一些类型信息,比如Type:8(Echo(ping)request)
,校验信息等等
- 在
reply
回复包中,我们可以看到
在IPv4
中,我们可以看到Protocol
、Source Address
和Destination Address
信息和预期一致
在ICMP
中,我们看到Type
、校验信息和时间戳等等
过滤器
抓包过滤器
在抓包前使用,它的过滤有一个基本的语法格式:BPF语法格式。
BPF(全称 Berkeley Packet Filter),中文叫伯克利封包过滤器,它有四个核心元素:类型、方向、协议 和 逻辑运算符。
类型Type:主机(host)、网段(net)、端口(port)方向Dir:源地址(src)、目标地址(dst)协议Proto:各种网络协议,比如:tcp、udp、http逻辑运算符:与( && )、或( || )、非( !)
四个元素可以自由组合,比如:
src host 192.168.31.1
抓取源IP为 192.168.31.1 的数据包
tcp || udp
抓取 TCP 或者 UDP 协议的数据包
显示过滤器
在抓包后或者抓包的过程中使用。
显示过滤器的语法包含5个核心元素:IP、端口、协议、比较运算符和逻辑运算符。
IP地址:ip.addr、ip.src、ip.dst端口:tcp.port、tcp.srcport、tcp.dstport协议:tcp、udp、http比较运算符:> < == >= <= !=逻辑运算符:and、or、not、xor(有且仅有一个条件被满足)
五个核心元素可以自由组合,比如:
ip.addr == 192.168.32.121
显示IP地址为 192.168.32.121 的数据包
tcp.port == 80
显示端口为 80 的数据包
ip.dst==192.168.202.129 and icmp
目的地址是192.168.202.129并且使用icmp协议
TCP协议示例
本节将使用wireshark
演示TCP协议的三次握手和四次挥手的过程
- 在虚拟机安装
nginx
,开启web服务
[root@node-252 ~]# systemctl start nginx
[root@node-252 ~]# ss -nlput|grep -w 80
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=2173,fd=6),("nginx",pid=2172,fd=6))
- 打开
wireshark
并设置过滤器
tcp and tcp.port == 80
- 网页访问服务器80端口
- 查看
wireshark
抓取信息
下面使用wireshark辅助我们详细分析TCP建立连接和断开连接的过程
我们知道TCP建立连接的过程,三次握手
包括:
服务器和客户端建立连接之前,服务器均处于LISTEN状态
一. 客户端向服务器发送连接请求SYN
[第一次握手]
8 2.484246 192.168.202.1 192.168.202.128 TCP 66 51613 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM
客户端处于状态是SYN_SENT,发送
SYN
包,seq=0
服务器处于LISTEN状态
二. 服务器向客户端发送连接响应SYN, ACK
[第二次握手]
9 2.484397 192.168.202.128 192.168.202.1 TCP 66 80 → 51613 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM WS=128
服务器处于 SYN_RCVD状态,服务端收到客户端的
SYN
包并发送服务端SYN ACK
包,之后等待客户端对连接请求的确认(ACK包),此时服务器向客户端发送的包seq=0
,ack=seq(客户端的seq)+1=1
三. 客户端对连接请求的确认ACK
[第三次握手]
10 2.484504 192.168.202.1 192.168.202.128 TCP 54 51613 → 80 [ACK] Seq=1 Ack=1 Win=65536 Len=0
服务器接收到客户端回复的包后,服务器和客户端处于连接状态
客户端向服务器回复的ACK
包,ACK=seq(服务器seq)+1=1
这里一直用0,1如果觉得迷糊,可以查看seq
和ACK
的原始数据(raw)
,seq=ack(服务器的seq)+1=1
此时服务器和客户端处于连接状态ESTABLISH
然后我们看到一些HTTP协议的相关内容
11 2.485264 192.168.202.1 192.168.202.128 HTTP 529 GET / HTTP/1.1
12 2.485469 192.168.202.128 192.168.202.1 TCP 60 80 → 51613 [ACK] Seq=1 Ack=476 Win=30336 Len=0
13 2.494322 192.168.202.128 192.168.202.1 HTTP 235 HTTP/1.1 304 Not Modified
14 2.696190 192.168.202.128 192.168.202.1 TCP 235 [TCP Retransmission] 80 → 51613 [PSH, ACK] Seq=1 Ack=476 Win=30336 Len=181
这里由于我们之前测试访问过这个网页,浏览器在本地生成了缓存。所以显示未修改,我们把nginx
首页更新下内容
[root@node-252 ~]# echo "hello,this is tcp status show" > /usr/share/nginx/html/index.html
再次抓取
3077 2117.746787 192.168.202.1 192.168.202.128 HTTP 529 GET / HTTP/1.1
3078 2117.749914 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [ACK] Seq=1 Ack=476 Win=30336 Len=0
3079 2117.750087 192.168.202.128 192.168.202.1 TCP 290 80 → 56888 [PSH, ACK] Seq=1 Ack=476 Win=30336 Len=236 [TCP segment of a reassembled PDU]
3080 2117.750222 192.168.202.128 192.168.202.1 HTTP 84 HTTP/1.1 200 OK (text/html)
我们看到服务器向客户端通过TCP
的数据包[PSH, ACK
]发送了一些内容,打开第四条记录,可以看到如下内容
看到最后一行确实是我们修改的内容
TCP断开连接的过程,四次挥手
包括:
一. 由于客户端长时间未访问服务器,所以服务器主动断开连接 [第一次挥手]
3085 2122.759948 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [FIN, ACK] Seq=267 Ack=476 Win=30336 Len=0
服务器向客户端发送
FIN
报文,此时Seq=267 Ack=476
,并处于FIN_WAIT_1
状态
二. 客户端收到连接释放报文段FIN
报文后,确认可以断开,并向服务器发送ACK
应答报文 [第二次挥手]
3086 2122.760042 192.168.202.1 192.168.202.128 TCP 54 56888 → 80 [ACK] Seq=476 Ack=268 Win=65280 Len=0
客户端向服务器发送的回复报文,包括
Seq=Ack(服务器)=476 Ack=Seq+1=268
服务器接收到客户端的回复报文后,状态切换为FIN_WAIT_2
三. 确认无数据传输或数据传输完毕后,客户端向服务器发送一个FIN,ACK
结束响应报文 [第三次挥手]
3087 2122.760119 192.168.202.1 192.168.202.128 TCP 54 56888 → 80 [FIN, ACK] Seq=476 Ack=268 Win=65280 Len=0
在发送完成ACK报文后,客户端还可以继续完成业务数据的发送,待剩余数据发送完成后,或者CLOSE-WAIT(关闭等待)截止后,客户端会向服务器发送一个FIN,ACK结束响应报文,表示被动断开方的数据都发送完了,然后,客户端进入LAST_ACK状态。
Seq=476 Ack=268
,这里的序列号和确认号和第二次挥手相同
四. 服务器发送最后的确认报文 [第四次挥手]
3088 2122.760245 192.168.202.128 192.168.202.1 TCP 60 80 → 56888 [ACK] Seq=268 Ack=477 Win=30336 Len=0
主动断开方收在到FIN,ACK断开响应报文后,还需要进行最后的确认,向被动断开方发送一个ACK确认报文,然后,自己就进入TIME_WAIT状态,等待超时后最终关闭连接。处于TIME_WAIT状态的主动断开方,在等待完成2*MSL的时间后,如果期间没有收到其他报文,则证明对方已正常关闭,主动断开方的连接最终关闭。
Seq=268(客户端Ack) Ack=477(客户端Seq+1)
关于wireshark的缺点
Wireshark的缺点主要包括:
- 学习曲线较陡:要灵活使用Wireshark,需要具备一定的网络基础知识,对于初学者来说,这可能会构成一定的难度。
- HTTPS数据包分析限制:由于Wireshark是在链路层获取数据包信息,因此无法分析加密的HTTPS数据包内容。虽然可以对HTTPS数据包进行解密,但这需要一定的操作复杂度,并且可能耗费大量时间。
- 企业级环境中效率低下:在现代企业级环境中,使用Wireshark通过传统方式进行快速采集和分析数据包,尤其是涉及业务、应用及用户性能问题的智能告警和关联分析时,效率低下,且某些功能无法实现。
6.2 tcpdump
tcpdump
是一个网络数据采集分析工具,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not
等逻辑语句来帮助你去掉无用的信息。
一般使用linux作为服务器操作系统,并不会配置图形界面,所以为了直观分析网络数据采集结果,大都是通过
wireshark
+tcpdump
组合使用,即通过tcpdump
采集数据,通过wireshark
进行分析。
- 安装
apt install -y tcpdump #debian系列
yum install -y tcpdump #redhat系列
命令格式
SYNOPSIStcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ --number ] [ -Q|-P in|out|inout ][ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ --immediate-mode ] [ --version ][ expression ]tcpdump [协议类型] [源或目标] [主机名称或IP] [or/and/not/!条件组合] [源或目标] [主机名或IP] [or/and/not/!条件组合] [端口] [端口号] …… [or/and/not/!条件组合] [条件]
- 常用参数
-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组,并将链路层的头最小化
-b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F #从指定的文件中读取表达式,忽略其他的表达式
-i #指定监听网络接口 #常用
-l #使标准输出变为缓冲形式,可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N #不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出,即只输出较少的协议信息
-r #从指定的文件中读取数据,一般是-w保存的文件
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕 #常用
-s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出,而不是相对值
-T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv #输出相信的保报文信息
关键字
- 数据类型的关键字:
host、port、net
host 192.168.130.1表示一台主机
net 192.168.130.0表示一个网络网段
port 80 指明端口号为80
在这里如果没有指明数据类型,那么默认就是host
- 数据传输方向的关键字:
src、dst、dst or src、dst and src
这些关键字指明了传输的方向,比如src 192.168.130.1说明数据包源地址是192.168.130.1。dst net 192.168.130.0指明目的网络地址是192.168.130.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。
-
协议关键字:
ip、arp、rarp、udp
-
其他关键字:
运算类型:or、and、not、!
辅助功能型:gateway、less、broadcast、greater
使用
注:使用tcpdump需要root权限
- 抓取
icmp
协议数据包
tcpdump -i any icmp -w icmp.pcap
-i any
为任意网络接口,即任意网卡,条件为筛选icmp
,-w icmp.pcap
保存为icmp.pcap
文件
导入到wireshark
呈现的数据内容
2. 添加条件抓取icmp
协议数据包
[root@node-252 ~]# tcpdump -i ens33 icmp and host 192.168.202.128 -v -w icmp.pcap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 24
指定网卡为ens33,本次指定主机为
192.168.202.128
,-v
显示详细信息,会提示Got 24
即抓取的包数量,当有多个条件时,需要使用关键字and or
- 继续添加条件
tcpdump -s0 -vnn -i ens33 icmp and src 192.168.202.128 -w icmp.pcap
-s0
防止包截断,-nn
不进行端口名称转换,src
源地址为192.168.202.128
,类似还可以指定dst
目的地址,dst net
目的网络,src net
源网络
常用的示例
### 过滤主机 ###
tcpdump -i eth0 host 192.168.1.70 #抓取所有经过 eth0,目的或源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 src host 192.168.1.70 #抓取所有经过 eth0,源地址是 192.168.1.70 的网络数据
tcpdump -i eth1 dst host 192.168.1.70 #抓取所有经过 eth0,目的地址是 192.168.1.70 的网络数据### 过滤端口 ###
tcpdump -i eth0 port 22 #抓取所有经过 eth0,目的或源端口是 22 的网络数据
tcpdump -i eth1 src port 22 #抓取所有经过 eth0,源端口是 22 的网络数据
tcpdump -i eth1 dst port 22 #抓取所有经过 eth0,目的端口是 22 的网络数据### 过滤协议 ###
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 ip
tcpdump -i eth0 icmp
tcpdump -i eth0 arp
当我们发现流量异常的时候,我们可能不会指定太多条件,因为当时可能无法判断出协议、端口和地址等信息来源,所以往往使用最宽泛的条件,然后通过wireshark
进行过滤筛选
tcpdump -i ens33 -w any.pcap
关于tcpdump的缺点
以下是一些 tcpdump 的缺点:
- 性能影响:tcpdump 在运行时会捕获所有网络流量,这可能会对系统性能产生一定影响。
- 复杂的过滤器:tcpdump 的过滤器相对复杂,需要一定时间学习和掌握。
- 无用输出:默认情况下,tcpdump 输出的包含大量信息,很难直接获取有用的数据。
- 不易于集成:tcpdump 主要是命令行工具,不易于与其他系统或应用程序集成。
- 缺乏用户界面:tcpdump 没有用户友好的界面,难以用于非专业人士。
- 安全问题:如果不正确配置,tcpdump 可能会捕获敏感数据,带来安全风险。
针对这些缺点,解决方法可能包括:
- 使用 tcpdump 的 -i 参数指定网络接口,限制捕获范围。
- 使用 tcpdump 的表达式优化过滤器,精确匹配所需的数据包。
- 使用 tcpdump 的 -w 参数将捕获的数据包保存到文件中,然后使用其他工具(如 Wireshark)分析。
- 使用 tcpdump 的 -C 参数设置数据包的存储上限,防止磁盘空间耗尽。
- 使用 tcpdump 的 -q 参数减少输出信息量。
- 使用 tcpdump 的 -Z 参数将进程放到后台运行。
- 使用 tcpdump 的 -z 参数设置捕获数据包的时间限制。
结合使用 tcpdump 和其他网络工具,如 wireshark 或 tshark 进行更复杂的分析。
6.3 fiddler
fiddler是一个http
协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
-
官网:https://www.telerik.com/fiddler
-
原理图
代理工具嘛,在客户端和服务器之间加了一层
下载安装
- 选择
FIDDLER TOOLS
>Fiddler Classic
- 点击
Try For Free
- 进入到以下页面,它会问你用 Fiddler 做什么?然后再填写你的邮箱,选上
Country
,勾选上I agree
以及I accept
,再点击Download For Windows
然后就会下载 FiddlerSetup.5.0.20244.10953-latest.exe
,当前我下载的版本
运行.exe
,安装完成后,会有如下提示
界面介绍及使用可以参考 https://blog.csdn.net/xhmico/article/details/133852152,介绍的非常详细
6.4 burpsuite
Burp Suite 是用于攻击web应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
参考 https://blog.csdn.net/m0_68483928/article/details/140502752 介绍的比较详细
相关文章:

linux常用网络工具汇总三
linux常用网络工具汇总 6. 抓包工具6.1 wireshark安装界面介绍使用过滤器TCP协议示例关于wireshark的缺点 6.2 tcpdump命令格式关键字使用关于tcpdump的缺点 6.3 fiddler6.4 burpsuite 6. 抓包工具 6.1 wireshark Wireshark(前称Ethereal)是一个网络封…...

Linux中nano编辑器详解
nano 是一个简单的文本编辑器,通常预装在大多数 Linux 发行版中。它非常适合初学者使用,因为它有一个用户友好的界面和易于理解的命令集。下面是对 nano 编辑器的详细说明。 启动 nano 要启动 nano 并打开一个文件进行编辑,你可以在终端中输…...

26-vector arraylist和linkedlist的区别
Vector, ArrayList, 和 LinkedList 是Java中常见的三种列表实现,它们各自具有不同的特点和适用场景。 同步性与线程安全: Vector 是同步的,即线程安全的,它的所有方法都是同步的,可以由两个线程安全地访问…...

20-redis穿透击穿雪崩
Redis中的缓存穿透、缓存击穿和缓存雪崩是三种常见的缓存问题: 缓存穿透:指缓存和数据库中都没有的数据,但用户还是源源不断地发起请求,导致每次请求都会直接访问数据库,从而可能压垮数据库。缓存击穿&…...

Docker使用教程
Docker 名词解释 镜像(image):Docker镜像就是一个模板,可以通过这个模板来创建容器服务。容器(container):Docker利用容器技术,独立运行一个或者一组应用,通过镜像创建…...

poi-tl循环放图片+文字说明
这几天有个任务,服务端导出word要求从数据库取到多张图片,然后输出到word中,并且说明一共几张,当前是第几张。 网上翻了很久也没有找到示例,不过最终难题还是得到了攻克。 因为之前的代码是有一个导出的map,…...

数据结构之树的存储结构
一、顺序存储结构 顺序存储结构通常用于表示完全二叉树。在这种存储方式中,树中的节点被存储在一个连续的数组中。对于完全二叉树,如果父节点的索引是i(假设从0开始计数),那么它的左子节点的索引是2i1,右子…...

Zotero 常用插件介绍
1. Zotero 插件安装方法 下载以 .xpi 结尾的插件;打开 Zotero → 工具 → 插件 → 右上小齿轮图标 → Install Add-on From File ... → 选择下载好的 .xpi 插件安装 → 重启 Zotero 2. 常用插件介绍 2.1. Scholaread - 靠岸学术 Zotero 英文文献相关插件…...

WebSocket协议解析
文章目录 一、HTTP协议与HTTPS协议1.HTTP协议的用处2.HTTP协议的特点3.HTTP协议的工作流程4.HTTPS协议的用处5.HTTPS协议的特点6.HTTPS协议的工作流程 二、WebSocket协议出现的原因1. 传统的HTTP请求-响应模型2. 轮询(Polling)3. 长轮询(Long…...

ES6 (一)——ES6 简介及环境搭建
目录 简介 环境搭建 可以在 Node.js 环境中运行 ES6 webpack 入口 (entry) loader 插件 (plugins) 利用 webpack 搭建应用 gulp 如何使用? 简介 ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版…...

HarmonyOS开发案例:列表场景实例-TaskPool
介绍 本实例通过列表场景实例讲解,介绍在TaskPool线程中操作关系型数据库的方法,涵盖单条插入、批量插入、删除和查询操作。 效果图预览 使用说明 进入页面有insert(单条数据插入)、batch insert(批量数据插入)、query(查询操作)三个按钮,…...

谷歌浏览器如何隐藏书签
谷歌浏览器的书签栏是一个极为方便的功能,它能够帮助用户快速访问自己频繁使用的网页。然而,有些时候为了保护个人隐私或使浏览界面更为简洁,我们可能需要隐藏书签栏。接下来就为大家分享如何隐藏谷歌浏览器的书签栏,一起来看看吧…...

SQL - 视图
我们可以把查询或子查询存到视图里,视图的作用就像一张虚拟表,再次查询时,就不需要再写一次复杂的查询。创建视图 create view 视图名 as (查询); create or replace view clients_balance as (查询); create or replace view clients_balanc…...

centos7环境升级默认的gcc 4.8.5到gcc 8.2.0, 并且升级glibc到glibc 2.28
这里写目录标题 makegccglibc make #下载 wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz tar -xf make-4.2.tar.gz cd make-4.2 ./configure make -j4 make install mv /usr/bin/make /usr/bin/make_bak cp ./make /usr/bin/make -v GNU Make 4.2 Built for x86_64-pc-li…...

FastHTML:使用 Python 彻底改变 Web 开发
什么是 FastHTML?🌐 FastHTML 是一个现代 Python Web 应用程序框架,其真正目的是让 Python 开发人员轻松进行 Web 开发。它大大减少了对 JavaScript 和 CSS 构建交互式和可扩展 Web 应用程序的依赖。FastHTML 通过使用 Python 对象来表示 HTM…...

快速排序的深入优化探讨
快排性能的关键点分析 决定快排性能的关键点是每次单趟排序后,key对数组的分割,如果每次选key基本⼆分居中,那么快排的递归树就是颗均匀的满⼆叉树,性能最佳。但是实践中虽然不可能每次都是⼆分居中,但是性能也还是可…...

c语言杂谈系列:模拟虚函数
从整体来看,笔者的做法与之前的模拟多态十分相似,毕竟c多态的实现与虚函数密切相关 废话少说,see my code: kernel.c#include "kernel.h" #include <stdio.h>void shape_draw(struct shape_t* obj) {/* Call dr…...

短视频推广App不再难!Xinstall来帮忙
在短视频风靡的今天,如何利用这一热门媒介有效推广App,成为了许多推广者关注的焦点。而Xinstall,作为国内专业的App全渠道统计服务商,正是你解决这一难题的得力助手。 首先,Xinstall在数据维度上的优势无可比拟。它能…...

打靶记录13——doubletrouble
靶机: https://www.vulnhub.com/entry/doubletrouble-1,743/ 难度: 中 目标: 取得两台靶机 root 权限 涉及攻击方法: 主机发现端口扫描Web信息收集开源CMS漏洞利用隐写术密码爆破GTFObins提权SQL盲注脏牛提权 学习记录&am…...

awk文本处理工具
awk 是一个强大的文本处理工具,在Shell编程中常用于处理和分析文本数据。它可以按列处理数据,进行模式匹配,生成报告,执行计算等。以下是一些 awk 的主要功能和使用场景: 期待您的关注 美好的观念较美人尤为可爱 目录 …...

计算机毕业设计选题推荐-学院网站系统-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

Spring模块详解Ⅰ
目录 SpringSpring框架的主要功能模块1. Core Container(核心容器)2. Data Access/Integration(数据访问与集成)3. Web4. AOP (Aspect-Oriented Programming,面向切面编程)5. Instrumentation(工具集&#…...

C语言程序设计-练习篇
山海自有归期,风雨自有相逢。 一 下面代码的结果是什么? int main() { int i 0; for (i 0; i < 10; i) { if (i 5) //此处为赋值,i 5表达式结果为5 printf("%d ", i); //表达式为真&a…...

【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)
💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...

无源互调自动化测试软件应用案例分享:S参数和互调的高效测试
随着产品种类的丰富和市场需求的变化,合肥某电子技术公司意识到,传统的手工测试已无法满足公司持续发展的需要。于是,一场自动化测试转型悄然展开。 一、背景介绍 合肥某电子技术公司成立于2009年,专注于功分器、耦合器、负载器、…...

【6大设计原则】精通设计模式之里氏代换原则:从理论到实践,掌握代码演化的黄金法则
一、引言 1.1 设计模式的必要性 在软件开发的复杂性面前,设计模式提供了一套成熟的解决方案,它们是经过多年实践总结出来的,能够帮助我们应对各种编程难题。设计模式不仅仅是一种编程技巧,更是一种编程哲学,它能够提…...

国内服务器安装Docker提示Failed to connect to download.docker.com port 443的解决方案
解决方案 换国内镜像源。我用的是清华的。https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ 自己找自己对应的版本。 例如你的Ubuntu系统。就用下列命令 sudo curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/do…...

前端开发攻略---彻底弄懂跨域解决方案
目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…...

【HeadFirst 设计模式】装饰者模式的C++实现
一、案例背景 Starbuzz是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店,在对面街上肯定还会看到另一家。因为扩张速度实在太快了,他们准备更新订单系统,以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时&am…...

大白话解释TCP的三次握手和四次挥手
你好,我是沐爸,欢迎点赞、收藏和关注。个人知乎 TCP的三次握手是浏览器与服务器建立连接的过程,而四次挥手,是两者断开连接的过程。今天把客户端和服务端当做两个人,通过打电话的方式解释连接建立和断开的过程。 TCP…...