渗透测试学习笔记(二)kali相关
一.kali 基础工具
- NetCat -网络工具中的瑞士军刀:允许用户通过 TCP 或 UDP 协议发送和接收数据。
- WireShark-开源抓包软件
- TCPdump-命令行抓包分析工具
二. 被动信息收集
2.1 被动信息收集指从公开渠道获取信息,主要是已经公开的信息。
要点:
- 与目标系统不产生直接交互(扫描)
- 尽量避免留下一切痕迹
收集内容 |
---|
IP 地址段 |
域名信息 |
邮件地址 |
文档图片 |
公司地址 |
公司组织架构 |
联系电话/传真号码 |
人员姓名/职务 |
目标系统使用的技术架构 |
公开的商业信息 |
2.2 信息用途
- 用所有已获得的信息来描述目标,还原目标真实情况。
- 通过分析描述中的目标来发现其弱点
- 社会工程学攻击
- 物理缺口
域名信息收集工具
- nslookup -域名解析和网络故障排除。
- nslookup 有两种模式
交互模式:一个会话执行多个查询或操作
命令行模式:执行一次性简单查询或者将其嵌入脚本中
-
dig-域名系统(DNS)查询工具,常用于域名解析和网络故障排除。比 nsloop 有更强大的功能
-
域名字典爆破
通过尝试多个可能得域名来猜测有效的域名或子域名
字典的选择与使用
字典爆破工具
字典工具 | 描述 | 使用命令 |
---|---|---|
fierce | 开源网络安全工具:用于域名扫描和子域名枚举 | fierce --dns-servers 8.8.8.8 --domain XXX.com.cn |
dnsenum | 枚举域名信息的开源工具:执行多种 DNS 查询来收集与目标域名相关的信息 | dnsenum -dnsserver 8.8.8.8 XXX.com -o sina.xml |
dbsrecon | 域名枚举和信息收集 |
- 域名注册信息
-
whois 命令
-
用于查询和获取域名额注册信息,可以查看特定域名注册商,域名所有者,注册日期,过期日期,DNS 服务器等信息。
whois -h whois.apnic.net 192.0.43.10
三. 搜索引擎
Shodan
专门用于搜索和互联网连接的设备和系统。他主要关注物联网设备,工业控制系统,服务器和其他网络设备等特定的联网设备
ZoomEye
ZoomEye 专门用于搜索与互联网上的网络设备和系统相关的信息。它被称为网络空间搜索引擎,与 Shodan 类似。
https://www.shodan.io/
工作原理:通过自动化程序定期爬取互联网上的网页内容,建立庞大索引数据库
筛选语法!!!
四.社工字典
- cupp
按个人信息生成专属的密码字典。
Common User Password Profiler(CUPP,通用用户密码探查器):
https://github.com/Mebus/cupp
- Exif
Exif (Exchangeable Image File Foemat) 用于存放数字图像喝音频文件元数据的标准格式,通常用于 JPEG,TIFT 和 RAW 图像中,用于记录与图像相关的信息。
Exif 提供了关于图像的拍摄参数、设备信息、拍摄时间等详细的元数据
五. 主动信息收集
- 扫描(IP,端口,服务等)
- 直接与目标系统交互通信
- 使用受控第三方电脑进行探测,使用代理
5.2 二层发现
- 通过 ARP 协议发现同网段下存活的主机
优点:扫描速度快,可靠
缺点:不可路由,只能发现本网段主机,常用于获得某台主机控制权后,以此作为跳板发现其网段内其他主机
- arping
ARPing:(Address Resolution Protocol pinging)用于获取与指定 IP 地址相关联的 MAC 地址
arping 192.168.230.1 -c 1
查看是否有 ARP 欺骗
arping 192.168.230.1 -d
3.nmap
Namp(Network Mapper)用于探测主机,端口和服务等信息,提供丰富功能
:扫描网段所有存活主机。
nmap 10.133.30.1-254 -sn
: 扫描文件中的主机是否存活
nmap -iL iplist.txt -sn
- Netdiscover
基于 APR 协议的网络扫描工具,发现本地网络中活动主机的 IP 地址和 MAC 地址
- 专门用与二层发现,无线和交换网络环境
- 主动和被动探测
示例 01:指定网络接口,扫描网段存活主机。
netdiscover -i eth0 -r 1.1.1.0/24
- Scapy
#!/usr/bin/pythonimport logging
import subprocess
import sysfrom scapy.all import *
from scapy.layers.l2 import ARPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./arp_disc.py <interface>")print("Example: ./arp_disc.py eth0")sys.exit()interface = str(sys.argv[1])
ip = subprocess.check_output("ifconfig " + interface + " | grep 'inet ' | cut -d 't' -f 2 | cut -d ' ' -f 2", shell=True).strip().decode()
print("IP address:", ip)
prefix = ip.split('.')[0] + '.' + ip.split('.')[1] + '.' + ip.split('.')[2] + '.'for addr in range(0, 254):answer = sr1(ARP(pdst=prefix + str(addr)), timeout=0.1, verbose=0)if answer == None:passelse:print(prefix + str(addr))print("END")
sys.exit()
5.3 三层发现
通过 ip。icmp 协议发现存活主机
优点:速度比较快
缺点:经常被边界防火墙过滤
- ping
- Scapy
#!/usr/bin/pythonimport logging
import subprocess
import sysfrom scapy.all import *
from scapy.layers.inet import IP, ICMPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./pinger.py </24 network address>")print("Example: ./pinger.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):answer = sr1(IP(dst=prefix + str(addr))/ICMP(), timeout=0.1, verbose=0)if answer == None:passelse:print(prefix + str(addr))print("END")
sys.exit()
- nmap
nmap -sn 1.1.1.100-250
- fping
fping(Fast Ping)用于测试主机的可达性和响应时间。与标准 ping 工具不同,fping 具有一些额外的功能和选项。支持并发探测与批量操作。 - fping 1.1.1.1 -c 2
- traceroute
5.3 四层发现
主要是基于 TCP、UDP 协议来发现存活主机
优点:
- 可路由且结果可靠
- 不太可能被防火墙过滤
- 甚至可以发现所有端口都被过滤的主机
缺点:
基于状态过滤的防火墙可能过滤扫描
全端口扫描速度慢
原理:
TCP
- 全连接扫描(TCP Connect Scan):扫描器尝试与目标主机的端口建立完整的 TCP 连接。如果连接成功建立,则说明该端口是开放的,目标主机存活。
- 半开放扫描(SYN 扫描,TCP SYN Scan):扫描器发送一个 TCP SYN 包(同步包)到目标主机的指定端口,如果收到目标主机的 TCP SYN/ACK 包(同步/应答包),则表示该端口是开放的(主机存活);如果收到目标主机的 RST 包(复位包)或没有收到任何响应,则表示该端口是关闭的。
- ACK 扫描:发送未经请求的 ACK 包到目标主机的端口,通过观察返回的响应或未响应来判断端口的状态。大多数操作系统对于未经请求的 ACK 包会返回一个 RST 包。在很多情况下可能被防火墙或入侵检测系统所阻止。
UDP
- 扫描器向目标主机的指定端口发送一个 UDP 数据包,然后根据接收到的响应进行判断。(例如,ICMP 端口不可达消息)
5.3.2 Scapy
#!/usr/bin/pythonimport logging
import sysfrom scapy.all import *
from scapy.layers.inet import IP, TCPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./ACK_ping.py </24 network address>")print("Example: ./ACK_ping.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):response = sr1(IP(dst=prefix + str(addr))/TCP(dport=2222, flags='A'), timeout=0.1, verbose=0)try:if int(response[TCP].flags) == 4:print(prefix + str(addr))except:passprint("END")
sys.exit()
UDP 的脚本 UDP_ping.py
#!/usr/bin/pythonimport logging
import sysfrom scapy.all import *
from scapy.layers.inet import IP, UDPlogging.getLogger("scapy.runtime").setLevel(logging.ERROR)if len(sys.argv) != 2:print("Usage: ./UDP_ping.py </24 network address>")print("Example: ./UDP_ping.py 172.16.36.0")sys.exit()address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'for addr in range(0, 254):response = sr1(IP(dst=prefix + str(addr))/UDP(dport=2222), timeout=0.1, verbose=0)try:if int(response[IP].proto) == 1:print(prefix + str(addr))except:passprint("END")
sys.exit()
5.3.3 nmap
nmap 1.1.1.100-254 -PU 53 -sn
5.3.4 hping3
nmap 1.1.1.100-254 -PU 53 -sn
相关文章:
渗透测试学习笔记(二)kali相关
一.kali 基础工具 NetCat -网络工具中的瑞士军刀:允许用户通过 TCP 或 UDP 协议发送和接收数据。WireShark-开源抓包软件TCPdump-命令行抓包分析工具 二. 被动信息收集 2.1 被动信息收集指从公开渠道获取信息,主要是已经公开的信息。 要点࿱…...
Python中的正交配对测试库:allpairspy
Python中的正交配对测试库:allpairspy 简介Python 中的 All-Pairs Testing 库安装 allpairspy使用 allpairspy 库的代码示例运行结果总结 简介 All-Pairs Testing (正交配对测试) 是一种广泛应用于软件测试中的组合测试方法,其核心思想是通过生成所有可…...
循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
文章目录 部署一个web服务Kubernetes Port ForwardKubernetes ServicesClusterIP ServiceNodePort ServiceLoadBalancer Service 部署一个web服务 准备 Kubernetes 集群后,创建一个名为 web 的新 namespace,然后在该 namespace 中部署一个简单的 web 应…...
SpringBoot【八】mybatis-plus条件构造器使用手册!
一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 经过上一期的mybatis-plus 入门教学,想必大家对它不是非常陌生了吧,这期呢,我主要是围绕以下几点展开,重点给大家介绍 里…...
《HTML 的变革之路:从过去到未来》
一、HTML 的发展历程 图片: HTML 从诞生至今,经历了多个版本的迭代。 (一)早期版本 HTML 3.2 在 1997 年 1 月 14 日成为 W3C 推荐标准,提供了表格、文字绕排和复杂数学元素显示等新特性,但因实现复杂且缺乏浏览器…...
给我的小程序加了个丝滑的搜索功能,踩坑表情包长度问题
前言 最近在用自己的卡盒小程序的时候,发现卡片越来越多,有时候要找到某一张来看看笔记要找半天,于是自己做了一个搜索功能,先看效果: 怎么样,是不是还挺不错的,那么这篇文章就讲讲这样一个搜索…...
高阶数据结构--B树B+树实现原理B树模拟实现--Java
目录 一、B-树概念 二、B-树插入分析 1.用序列{53, 139, 75, 49, 145, 36, 101}构建B树的过程如下: 2.插入过程总结 三、B树插入实现 四、B树 1.B树概念 2.B树的特性 五、B树应用 1.索引 2.Mysql索引 3.InnoDB 一、B-树概念 1970 年, R.Bayer 和…...
CTF: 在本地虚拟机内部署CTF题目docker
step 1 安装基本依赖 sudo apt-get update sudo apt-get install -y \ca-certificates \curl \gnupg \lsb-releasestep 2 安装docker sudo apt-get remove docker docker.io containerd runc sudo apt-get update sudo apt-get install \apt-transport-https \ca-certificate…...
深度学习详解
深度学习(Deep Learning,DL)是机器学习(Machine Learning,ML)中的一个子领域,利用多层次(深层)神经网络来自动从数据中提取特征和规律,模仿人脑的神经系统来进…...
qt QCommandLineParser详解
1、概述 QCommandLineParser是Qt框架中提供的一个类,专门用于解析命令行参数。它简化了命令行参数的处理过程,使得开发者能够轻松定义、解析和验证命令行选项和参数。QCommandLineParser适用于需要从命令行获取输入的控制台应用程序,以及需要…...
支撑40多个委办局150余个应用场景,AI数字笔迹在多个领域助力数字重庆建设
12月6日,以“聚焦创新应用,AI引领赋能”为主题的2024 AI数字笔迹创新应用发展论坛在重庆两江新区举办。本届论坛由重庆市大数据应用发展管理局和重庆两江新区管理委员会联合指导,重庆亲笔签数字科技有限公司主办。现场来自政府部门、高等院校…...
MySQL 表字段太多超长问题及解决方案
哈喽,各位小伙伴们,你们好呀,我是。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学…...
LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Ollama与OpenWebUI
背景 你是不是也有私有化部署大模型的需求?如今有了 Ollama , HuggingFace , ModelScope 等开源平台,我们可以非常方便地搭建一个属于自己的大模型,如果网速给力,真是分分钟~~。简单起见,这篇文…...
【数据结构】哈夫曼树
哈夫曼树 路径长度:从树中一个结点到另一个结点之间的分支构成这两个节点之间的路径,路径上的分支数目称为路径长度 树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记为WPL ∑ k 1 n w k l k \sum^{n}_{k1}w_kl_k …...
网络安全法-网络运行安全
第三章 网络运行安全 第一节 一般规定 第二十一条 国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护制度的要求,履行下列安全保护义务,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或者被窃取、篡改&…...
188-下翻便携式6U CPCI工控机箱
一、板卡概述 下翻式CPCI便携工控机,系统采用6u cpci背板结构,1个系统槽,7个扩展槽, 满足对携带的需求,可装标准6U8槽CPCI主板,8个扩展槽, 满足客户对空间扩展的需求.可宽温服务的工作产品,15高亮度液晶显示屏,超薄88键笔记本键盘,触摸式鼠标,加固型机箱结构,使它能够适应各种复…...
【0362】Postgres内核 XLogReaderState readBuf 有完整 XLOG page header 信息 ? ( 7 )
上一篇: 【0361】Postgres内核 page_read 读取所请求数据长度(至少 short page header)( 6 ) 文章目录 1. 检查 page_read 返回值 readLen2. 根据 readBuf 计算 XLogPageHeader 大小2.1 验证 XLOG Page header2.2 更新 XLogReaderState 读取状态信息1. 检查 page_read 返回…...
调度系统:Luigi 的主要特性和功能
Luigi 是一个开源的 Python 工作流管理工具,用于构建批处理作业管道,特别适用于数据工程领域。它被设计用来编排任务和处理任务间的依赖关系,支持自动化复杂的 ETL 流程、数据分析、模型训练等任务。 Luigi 的主要特性和功能: 任…...
GO泛型
泛型是goSDK1.18版本之后才引入的新特性,即C中的模板。 为什么要有泛型? 我们现在要写一个两数相加的函数,相加的逻辑很简单,但是如果传入不同的类型,那么我们就需要再写一个函数,定义不同的参数类型&#…...
【笔记】C语言转C++
网课链接:【C语言 转 C 简单教程】 https://www.bilibili.com/video/BV1UE411j7Ti/?p27&share_sourcecopy_web&vd_source4abe1433c2a7ef632aeed6a3d5c0b22a 网课老师B站id:别喷我id 视频总时长:01:55:27 以下笔记是我通过此网课整理 建议先…...
Python 单例模式工厂模式和classmethod装饰器
前言: Python作为面向对象的语言,显然支持基本的设计模式。也具备面向对象的语言的基本封装方法:属性、方法、继承、多态等。但是,做为强大的和逐渐发展的语言,python也有很多高级的变种方法,以适应更多的…...
源码编译构建LAMP
源码编译构建LAMP 文章目录 源码编译构建LAMPLAMPDISCUZ论坛 1.安装编译工具等2.apache3.mysql4.php5.部署论坛网站6.其他6.其他 LAMPDISCUZ论坛 1.安装编译工具等 安装说明: 配置yum源 从阿里云下载新的配置文件 curl -o /etc/yum.repos.d/CentOS-Base.repo htt…...
如何让verilog支持二维数组,三维数组作为I/O ports
写在前面 先看看verilog中的一维数组,二维数组,三维数组长啥样? wire [31:0]data1;//一维数组 wire [31:0]data2 [0:15];//二维数组 wire [31:0]data3 [0:15][0:15];//三维数组众所周知,verilog只支持一维数组作为I/O ports&…...
字符编码讲解(C#)
在学习和编码的过程中,极容易遇到如下概念,他们有些是字符编码,有些是涉及的相关概念,接下来我将围绕下面的熟悉又陌生的概念做详细解释,并且梳理其之间的关系 UTF8, Unicode ,ASCII࿰…...
Unreal Engine 中的UI界面开发
推荐的使用方式 轻量级 HUD:使用 Canvas 绘制简单的文本、调试信息或基础 UI(如准星、血量条等)。 复杂 UI:使用 UMG(Unreal Motion Graphics)和 Slate 进行布局和交互,避免手动管理 Canvas 绘制…...
聚类及Python下实现 K-means 算法
聚类 聚类是无监督学习中的一种重要方法,旨在将数据集中相似的数据对象划分到同一个簇中,使得不同簇之间的数据对象差异尽可能大。在大数据环境下,聚类可以帮助挖掘数据中的隐藏结构和模式,应用场景十分广泛,比如在客…...
【中间件开发】Redis基础命令详解及概念介绍
文章目录 前言一、Redis相关命令详解及原理1.1 string、set、zset、list、hash1.1.1 string1.1.2 list1.1.3 hash1.1.4 set1.1.5 zset 1.2 分布式锁的实现1.3 lua脚本解决ACID原子性1.4 Redis事务的ACID性质分析 二、Redis协议与异步方式2.1 Redis协议解析2.1.1 redis pipeline…...
分布式文件存储 - - - MinIO从入门到飞翔
MinIO从入门到飞翔 文章目录 MinIO从入门到飞翔 0、前言1、分布式文件系统2、MinIO 介绍3、 MinIO安装(docker)4、基本概念5、通过代码上传文件到MinIO6、封装MinIO为starter7、在其他项目中集成封装好的模块 0、前言 对象存储是一种数据存储架构&a…...
Cadence学习笔记 1 原理图库绘制
基于Cadence 17.4,四层板4路HDMI电路 目录 一、原理图绘制及封装制作 1、原理图库绘制简介 一、原理图绘制及封装制作 1、原理图库绘制简介 File--Change Product,选择OrCAD Capture CIS。绘制原理图和原理图库都是用CIS完成 更改界面颜色:…...
Unity 制作一个视频播放器(打包后,可在外部编辑并放置新的视频)
效果展示: 在这里,我把视频名称(Json)和对应的视频资源都放在了StreamingAssets文件夹下,以便于打包后,客户还可以自己在外部增加、删除、修改对应的视频资料。 如有需要,请联细抠抠。...
python爬虫--小白篇【爬虫实践】
一、前言 1.1、王者荣耀皮肤爬虫 根据王者荣耀链接,将王者荣耀的全部英雄的全部皮肤图片爬取保存到本地。经过分析得到任务的三个步骤: 根据首页全部英雄列表连接获取全部英雄的名称hero_name以及对应的hero_id;根据单个英雄的hero_name和h…...
CountDownLatch阻塞后countDown未执行会如何?
背景 某项目封装了 Kafka 消费者 API,根据传递的消费者线程数,创建 N 个消费者线程同时消费对应 topic 的数据,并在线程启动后收集到全局列表中,方便在程序调用 stop 流程时逐个停止。 主控类在创建 Kafka 消费线程时使用了 Cou…...
《MySQL 查询进阶:复杂查询语句的魅力》
一、引言 MySQL 的复杂查询语句就像是一把神奇的钥匙,能够打开数据世界的大门,展现出数据的无限魅力。本文将带你深入探索 MySQL 查询进阶技巧,从常用查询到子查询,再到视图的运用,让你领略复杂查询语句的强大功能。 …...
Vue解决跨域问题
要解决 Vue 项目的跨域问题并通过 vue.config.js 配置代理,可以按照以下步骤修改 vue.config.js 文件。你提供的代码大部分已经正确,只需要做一些格式上的调整。以下是正确的 vue.config.js 配置: // vue.config.jsmodule.exports {devServ…...
大语言模型(LLM)与智能机器人的应用分析
系列文章目录 前言 近年来,大型语言模型(LLM)的集成彻底改变了机器人领域,使机器人能够以人类熟练程度进行交流、理解和推理。本文探讨了 LLM 对机器人的多方面影响,并针对在不同领域利用这些模型的关键挑战和机遇进行了研究。通过将 LLM 应用程序分类并分析核心机器人元素…...
String【Redis对象篇】
🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…...
Elasticsearch高性能实践
前言 本方案主要从运维层面分析es是实际生产使用过程中的参数优化,深入理解es各个名词及含义,深入分析es的使用过程中应注意的点,详细解释参数设置的原因以及目的,主要包括系统层面,参数层面。除此之外,优…...
Maven 安装配置(详细教程)
文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型(POM)的项目管理和自动化构建工具。它主要服务于 Java 平台,但也支持其他编程语言…...
sql server 创建索引实验
创建一个非主键索引,大小30G,数据文件增加了30G,日志文件增长了50G,4分钟完成, (日志文件增加设置为2048MB 或者 256MB 执行时间都是4分钟,没有多大的时间差异) 实验环境: 主机cpu…...
解决Vue项目中npm install卡住问题的详细指南
解决Vue项目中npm install卡住问题的详细指南 引言 在开发Vue项目时,我们经常会遇到npm install命令卡住的问题,特别是在构建依赖树时。本文将分享一些实用的解决方案,帮助您快速解决这一常见问题。 问题描述 在执行npm install时…...
手机实时提取SIM卡打电话的信令声音--社会价值(一、方案解决了什么问题)
手机实时提取SIM卡打电话的信令声音 --社会价值(一、方案解决了什么问题) 一、前言 这段时间,我们在技术范围之外陷入了一个自证或者说下定义的怪圈,即要怎么样去介绍或者描述:我们是一个什么样的产品。它在当前这个世界上,处于…...
35.1 thanos项目介绍和二进制部署
本节重点介绍 : 核心优点 无需维护存储,存储高可用: 利用廉价的公有云对象存储,高可用长时间存储,数据降采样:利用Compactor降采样完全适配原生prometheus查询接口:Query实现多级数据缓存配置 二进制部署 …...
【中工开发者】鸿蒙商城实战项目(启动页和引导页)
创建一个空项目 先创建一个新的项目选择第一个,然后点击finish 接下来为项目写一个名字,然后点击finish。 把index页面的代码改成下面代码块的代码,就能产生下面的效果 Entry Component struct Index {build() {Column(){Blank()Column(){…...
云计算IaaS-PaaS-SaaS三种服务模式转至元数据结尾
在当今数字化时代,云计算已经成为推动企业创新与发展的核心力量。而云计算的模型主要有三种:IAAS、PAAS 和 SAAS,它们各自在云计算的庞大体系中扮演着独特且关键的角色,恰似一座大厦的不同楼层,共同构建起强大而灵活的…...
Python爬虫:如何优雅地“偷窥”商品详情
在这个信息爆炸的时代,获取商品详情已经不再是简单的点击和浏览。我们需要的是速度、效率,还有一点点的...偷偷摸摸。没错,今天我们要聊的是如何使用Python爬虫来“偷窥”商品详情。别担心,我们保证一切都是合法合规的,…...
自动化测试报错:Exception managing chrome: error decoding response body
报错:Exception managing chrome: error decoding response body 报错解释: 这个错误通常发生在使用Selenium WebDriver时,尝试管理(例如关闭)Chrome浏览器时出现了问题。具体来说,是在解码Chrome浏览器响…...
Dataset 与 JavaRDD
是的,Dataset 底层确实是基于 RDD 实现的,但它是通过更高层次的抽象和优化来提供更强大和易用的功能。以下是关于 Dataset 底层实现的一些详细信息: 1. RDD 是基础 RDD(弹性分布式数据集) 是 Spark 最基础的抽象&…...
【后端面试总结】Golang defer的实现原理和常见面试问题
前言 在Go语言中,defer关键字用于延迟函数的执行,即在包含defer语句的函数返回之前执行。这一特性使得defer在资源释放、文件关闭、解锁资源等场景中非常有用。本文将深入探讨defer的实现原理,并总结一些常见的面试问题。 基本使用 defer通…...
http 502 和 504 的区别
首先看一下概念: 502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。503:由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢…...
农业园区气象站
农业园区气象站是一种专为农业生产和科研设计的气象监测设备,它集成了多种传感器和技术,用于实时、准确地监测和记录农业园区内的气象数据。以下是农业园区气象站的主要功能和用处: 一、主要功能 实时监测:农业园区气象站能够实时…...