linux对网络的监控操作学习--端口、流量、IP

文章目录

  • linux对网络的监控操作学习--端口、流量、IP
    • 理解Netfilter队列
    • 设置iptables规则以使用队列
    • 使用用户空间程序处理队列中的数据包
      • linux用户空间
          • 使用Python实现
          • 使用rust实现功能
    • 综合应用
    • 注意事项
    • 其他实现方式
      • nftables
      • firewalld
      • ufw (Uncomplicated Firewall)
      • tc (Traffic Control)
      • SELinux
      • Auditd
      • Fail2ban
      • Snort
      • Suricata
      • NetfilterQueue
      • Conntrack-tools
      • PfSense/OPNsense

linux对网络的监控操作学习–端口、流量、IP

在Linux中,使用NFQUEUE来处理iptables规则匹配的数据包需要与用户空间程序协作。NFQUEUE将数据包发送到一个用户空间的队列,然后由用户空间程序决定对这些数据包进行什么操作(比如接受、丢弃、修改等)。

理解Netfilter队列

Netfilter队列(nfqueue)是一种机制,允许iptables的数据包经过用户空间程序的处理后再决定是否接受、拒绝或修改这些数据包。这种机制提供了一种灵活的方式来对网络数据包进行深入分析和处理。

设置iptables规则以使用队列

首先,你需要设置iptables规则,将特定的流量定向到nfqueue队列。

例如,如果你想要对进入网卡eth0上的所有TCP流量进行处理,可以使用以下命令:

sudo iptables -A INPUT -i eth0 -p tcp -j NFQUEUE --queue-num 0

这条命令的意思是:将进入eth0接口、协议为TCP的所有数据包加入到编号为0的队列中。

sudo iptables -A FORWARD -j NFQUEUE --queue-num 666

这个命令将所有转发的数据包发送到编号为666的NFQUEUE。

使用用户空间程序处理队列中的数据包

linux用户空间

Linux系统中的用户空间程序指的是运行在用户空间的软件应用程序,与运行在内核空间的内核程序相对。用户空间和内核空间是操作系统内存中的两个主要区域,它们为操作系统的运行提供了隔离和保护机制。

  1. 用户空间(User Space):用户空间是指非内核代码运行的内存区域,即普通的应用程序运行的地方。这些应用程序不能直接访问硬件设备,它们通过系统调用(System Calls)与内核空间通信,请求内核执行诸如读写文件、发送网络数据包、访问硬件设备等操作。用户空间提供了一个相对安全的环境,因为即使用户空间的程序崩溃,也不会直接影响到系统的稳定性。

  2. 内核空间(Kernel Space):内核空间是操作系统内核运行的内存区域。内核是操作系统的核心部分,负责管理计算机的硬件资源,如处理器、内存和外设。内核空间的代码可以直接访问硬件设备,并执行CPU指令。由于具有这样的权限,内核空间的代码必须非常可靠,任何错误都可能导致整个系统崩溃。

用户空间程序的例子非常广泛,包括但不限于:

  • 文本编辑器:如Vim、Emacs等。
  • Web浏览器:如Firefox、Chrome等。
  • 办公软件:如LibreOffice、OpenOffice等。
  • 开发工具:如GCC、Clang、Python解释器等。
  • 图形界面:如GNOME、KDE等。
  • 数据库:如MySQL、PostgreSQL等。
  • 网络服务:如Apache HTTP服务器、Nginx等。

总之,用户空间程序包括几乎所有普通用户直接使用的软件应用程序,而这些程序通过与内核空间进行交互,来实现对硬件资源的访问和管理。

接下来,你需要有一个用户空间程序来处理这个队列中的数据包。这个程序可以使用libnetfilter_queue库来与nfqueue交互。

可以根据需要编写程序来分析、修改或决定是否接受这些数据包。

使用Python实现

一个简单的例子是使用Python编写的程序,该程序依赖于NetfilterQueue库来处理数据包:

#安装scapy以运行下列代码
pip install scapy
from netfilterqueue import NetfilterQueue
import scapy.all as scapy

def process_packet(packet):
    scapy_packet = scapy.IP(packet.get_payload())  # 将数据包转换为Scapy可处理的格式
    if scapy_packet.haslayer(scapy.TCP):
        if scapy_packet[scapy.TCP].dport == 80:
            if "特定模式" in str(scapy_packet[scapy.Raw].load):
                print("检测到特定模式,数据包被丢弃")
                packet.drop()  # 丢弃数据包
                return
    packet.accept()  # 其他情况接受数据包

nfqueue = NetfilterQueue()
nfqueue.bind(666, process_packet)  # 绑定到之前设置的队列编号666

try:
    print("开始处理队列...")
    nfqueue.run()
except KeyboardInterrupt:
    print("停止处理队列")

nfqueue.unbind()  # 释放绑定的队列

在这个示例中,我们使用了Scapy库来解析和操作数据包。首先,我们将NetfilterQueue获取的原始数据包转换为Scapy可以处理的格式。然后,我们检查每个TCP数据包,如果它是针对端口80(HTTP通常使用的端口),我们就检查数据包的负载是否包含“特定模式”。如果是,我们就调用packet.drop()来丢弃这个数据包,否则我们就接受这个数据包。

使用rust实现功能

使用libpnet库来处理网络数据包,以及nfqueue库来与Netfilter队列交互。

Cargo.toml文件中,你可以添加如下依赖

[dependencies]
pnet = "0.28.0"
nfqueue = "0.6.0"

处理数据包

use nfqueue::{Queue, Verdict};
use pnet::packet::tcp::TcpPacket;
use pnet::packet::Packet;
use std::net::Ipv4Addr;

fn main() {
    let mut queue = Queue::new();
    queue.open();
    queue.bind(0).expect("无法绑定到队列");
    queue.set_mode_copy(0xffff).expect("无法设置模式");

    loop {
        let nfmsg = queue.recv().expect("接收错误");
        let payload = nfmsg.get_payload();
        let ipv4_packet = pnet::packet::ipv4::Ipv4Packet::new(payload).unwrap();

        if ipv4_packet.get_next_level_protocol() == pnet::packet::ip::IpNextHeaderProtocols::Tcp {
            if let Some(tcp_packet) = TcpPacket::new(ipv4_packet.payload()) {
                if tcp_packet.get_destination() == 80 {
                    // 这里添加基于数据包内容进行过滤的逻辑
                    // 例如,检查HTTP请求的Host头部或其他特定模式
                    // 如果匹配,则丢弃数据包
                    // queue.set_verdict(nfmsg, Verdict::Drop);
                }
            }
        }

        // 如果不匹配任何过滤条件,则接受数据包
        queue.set_verdict(nfmsg, Verdict::Accept);
    }
}

使用nfqueue库来接收Netfilter队列中的数据包,并使用pnet库来解析IPv4和TCP数据包。这个程序会持续运行,并对每个接收到的数据包进行处理。如果数据包是针对HTTP服务的(目的端口为80),你可以在这里添加自己的逻辑来检查数据包内容并决定是否丢弃它。

综合应用

通过上述步骤,你可以实现对特定网络流量的深度监控和管理。

比如,你可以基于数据包内容进行过滤,阻止特定类型的流量,或者实现基于内容的路由决策等。

注意事项

  • 使用nfqueue时,确保系统中安装了相应的库和工具。
  • 根据实际需求调整iptables规则和用户空间程序的逻辑。
  • 考虑到性能和安全性,仔细规划哪些流量需要通过nfqueue处理。

通过结合iptables和队列,你可以实现复杂且灵活的网络管控策略,有效地管理和保护你的网络环境。

其他实现方式

nftables

nftables是iptables的后继者,提供了一个更现代和简洁的方式来管理网络相关的钩子。它使用一个新的命令行工具nft并提供了一个新的配置语法。

  • 安装步骤: 大多数现代Linux发行版已经预装了nftables。如果没有,可以通过包管理器安装,如sudo apt install nftables。
  • 特点: 提供了一个统一的框架替代ip(6)tables,并且有更简洁的语法。
  • 优缺点: 优点是配置更加直观,性能更好;缺点是相对较新,部分老系统可能不支持。
  • 基本操作: 使用nft命令创建、编辑规则和表,如nft add rule ip filter input tcp dport 22 accept。
  • 高级用法: 支持更复杂的过滤逻辑,如使用集合和映射来管理规则。
  • 使用场景: 适用于需要高级网络配置和细粒度控制的环境。

firewalld

firewalld是一个动态管理防火墙的工具,它提供了区域(zone)-based的防火墙配置。firewalld使用firewall-cmd命令行工具进行管理,并可以使用nftables作为其后端。

  • 安装步骤: 通常预装在Fedora、CentOS等发行版上,可以通过sudo yum install firewalld安装。
  • 特点: 基于区域(zone)的防火墙管理,支持动态更新规则而不中断当前连接。
  • 优缺点: 优点是易于管理和动态配置;缺点是可能不如直接使用iptables/nftables灵活。
  • 基本操作: 使用firewall-cmd来管理规则,如firewall-cmd --zone=public --add-port=22/tcp --permanent。
  • 高级用法: 支持富规则(rich rules),可以添加更详细的规则条件。
  • 使用场景: 适用于桌面用户或需要频繁变更规则的服务器。

ufw (Uncomplicated Firewall)

ufw是一个面向用户友好的前端工具,用于管理基于netfilter的防火墙。它旨在简化防火墙配置过程。

  • 安装步骤: 在Ubuntu和Debian上通常预装,否则可以通过sudo apt install ufw安装。
  • 特点: 易于使用的命令行界面,适合初学者。
  • 优缺点: 优点是简单易用;缺点是功能相对有限,不适合复杂的网络环境。
  • 基本操作: 使用ufw allow和ufw deny来简单地允许或拒绝流量。
  • 高级用法: 可以通过编辑配置文件来实现更复杂的规则设置。
  • 使用场景: 适合新手或者对防火墙要求不高的个人用户。

tc (Traffic Control)

tc是Linux内核中的流量控制工具。它可以用来控制网络流量的速率以及处理网络接口上的数据包排队。

  • 安装步骤: tc通常作为iproute2包的一部分,默认安装在大多数Linux系统上。
  • 特点: 强大的流量控制工具,可以控制带宽分配、排队策略等。
  • 优缺点: 优点是功能强大、灵活;缺点是学习曲线陡峭,配置复杂。
  • 基本操作: 使用tc qdisc add来添加排队规则,如限制接口速率。
  • 高级用法: 可以配置复杂的排队策略和类别(class)系统来进行细致的带宽管理。
  • 使用场景: 适用于需要详细控制网络流量行为的高级用户和服务器管理员。

SELinux

安全增强型Linux(SELinux)可以用来细粒度控制程序的网络访问能力。

  • 安装步骤:SELinux通常作为许多Linux发行版的一部分预装,如Red Hat和CentOS。确保SELinux已安装可以使用命令 sestatus。

  • 特点:SELinux提供了强制访问控制(MAC),它使用安全策略来限制程序能够访问的资源。

  • 优缺点:

    • 优点: 提供了非常强大的安全性,可以细粒度地控制系统权限。
      缺点: 配置复杂,学习曲线陡峭。
  • 基本操作:

    • 查看状态: sestatus
    • 切换模式: setenforce Enforcing 或 setenforce Permissive
    • 管理策略: 使用 semanage 命令。
  • 高级用法:

    • 创建自定义策略模块。
    • 使用audit2allow根据审计日志生成策略。
  • 使用场景:

    • 适用于需要高级安全性要求的环境,如金融服务、政府机构等。

Auditd

[!NOTE]

点击链接可查看对应具体介绍博文。

auditd是Linux系统的审计守护进程,可以记录系统上的所有活动,包括网络活动,提供详细的审计功能。

Fail2ban

Fail2ban是一个入侵防御软件框架,能够自动修改防火墙规则来封禁那些看起来有恶意行为、例如密码猜测尝试的IP地址。

  • 安装步骤:

    • 通常通过包管理器安装,例如在基于Debian的系统上使用 sudo apt install fail2ban。
  • 特点:

    • Fail2ban是一个入侵防御软件,可以监控日志文件(如SSH)并封禁显示恶意行为特征的IP地址。
  • 优缺点:

    • 优点: 简单易用,可以有效减少自动化攻击。
    • 缺点: 对复杂或分布式攻击的防御能力有限。
  • 基本操作:

    • 启动服务:sudo systemctl start fail2ban
    • 查看封禁的IP列表:sudo fail2ban-client status sshd
  • 高级用法:

    • 自定义jail配置文件来监控不同的服务和日志文件。
    • 编写复杂的过滤器正则表达式来匹配更加复杂的攻击模式。
  • 使用场景:

    • 适用于任何暴露在互联网上的服务器,特别是那些受到频繁恶意登录尝试的服务器。

Snort

Snort是一个开源网络入侵检测系统(NIDS),可以实时监测网络流量并进行分析,以检测和防止入侵。

  • 安装步骤:

    • Snort通常从源代码编译安装,或者从其官方网站下载预编译的二进制文件。
  • 特点:
    Snort是一个功能强大的网络入侵检测系统(NIDS),可以进行实时流量分析和数据包记录。

  • 优缺点:

    • 优点: 非常灵活,有大量的社区支持和规则集。
    • 缺点: 配置和维护较为复杂,需要专业知识。
  • 基本操作:

    • 配置snort.conf文件。
    • 运行Snort以监控网络流量:snort -q -A console -i eth0 -c /etc/snort/snort.conf
  • 高级用法:

    • 编写自定义规则以检测特定的攻击和威胁。
    • 使用Snort作为一个内联IPS(入侵防御系统)。
  • 使用场景:

    • 适用于需要实时监控和分析网络流量以检测潜在威胁的企业和数据中心环境。

Suricata

Suricata是一个高性能的网络IDS、IPS和网络安全监控工具。

  • 安装步骤:

    • 通过包管理器安装,例如 sudo apt install suricata,或从源代码编译安装。
  • 特点:

    • Suricata是一个高性能网络IDS、IPS和网络安全监测工具。
  • 优缺点:

    • 优点: 多线程设计,可以处理高吞吐量的网络流量;支持自动化规则更新。
    • 缺点: 和Snort一样,配置较为复杂,并且对资源的要求相对较高。
  • 基本操作:

    • 配置suricata.yaml文件。
    • 启动Suricata来监控指定接口:suricata -c /etc/suricata/suricata.yaml -i eth0
  • 高级用法:

    • 使用Suricata的高级特征,如HTTP/2分析、TLS指纹等。
    • 集成到其他安全工具链中,如ELK栈进行日志分析。
  • 使用场景:

    • 适用于需要先进威胁检测和事件响应的大型网络环境。

NetfilterQueue

[!NOTE]

开篇主要介绍内容

NetfilterQueue库允许用户空间程序决定接收、拒绝或修改通过iptables的数据包。

  • 安装步骤:

    • NetfilterQueue通常作为Python库安装,可以使用 pip install NetfilterQueue 安装。
  • 特点:

    • NetfilterQueue允许Python程序接收由iptables生成并放入队列中的数据包,进行处理后再放回网络堆栈。
  • 优缺点:

    • 优点: 可以在用户空间对数据包进行灵活处理。
    • 缺点: 性能限制,不适合处理高速网络流量。
  • 基本操作:

    • 使用Python脚本与NetfilterQueue交云,并处理数据包
    • 在iptables中设置规则将数据包重定向到NFQUEUE。
  • 高级用法:

    • 结合数据包分析工具(如Scapy)来实现复杂的数据包修改和分析逻辑。
  • 使用场景:

    • 适合研究、开发和测试环境,以及需要自定义数据包处理逻辑的场合。

Conntrack-tools

这是一组用户空间工具,用于管理与netfilter相关的连接跟踪系统。

  • 安装步骤:

    • 通过包管理器安装,例如 sudo apt install conntrack。
  • 特点:

    • Conntrack-tools是用于管理netfilter的连接跟踪系统的工具集。
  • 优缺点:

    • 优点: 提供了丰富的命令行工具来管理和监控连接跟踪表。
    • 缺点: 主要面向专业用户,对新手可能不够友好。
  • 基本操作:

    • 查看当前跟踪的连接:conntrack -L
    • 删除跟踪条目:conntrack -D
  • 高级用法:

    • 使用conntrack事件来触发自定义脚本和警报。
    • 集成到复杂的网络监控和管理系统中。
  • 使用场景:

    • 适用于需要细粒度网络连接跟踪和分析的环境,如大型数据中心或ISP运营商。

PfSense/OPNsense

这些是基于BSD的开源防火墙和路由器解决方案,它们提供了丰富的网络安全功能。

  • 安装步骤:

    • pfSense/OPNsense:
    • 下载ISO文件从官方网站。
    • 制作启动USB驱动器或光盘。
    • 在目标硬件上启动并遵循安装向导。
  • 特点:

    • 提供防火墙、VPN、IDS/IPS、负载均衡等多种功能。
    • 基于插件的系统,可以扩展功能。
    • 用户友好的Web界面管理。
    • 支持高可用性和多WAN配置。
  • 优缺点:

    • 优点:

      • 灵活而强大,适合从家庭办公室到企业环境。
      • 社区支持广泛,有大量的文档和论坛。
      • 定期更新和安全修补。
    • 缺点:

      • 对新手来说配置可能较为复杂。
    • 硬件兼容性问题可能会出现在特定的环境中。

    • OPNsense相对较新,社区和插件库可能不如pfSense成熟。

  • 基本操作:

    • 通过Web界面进行设备配置和监控。
    • 设置网络接口和VLANs。
    • 配置NAT规则和防火墙策略。
    • 实施用户认证和VPN设置。
  • 高级用法:

    • 设置高可用性集群,以防单点故障。
    • 配置和调优IDS/IPS(如Snort或Suricata)。
    • 实施流量整形和带宽管理。
    • 集成第三方服务和应用。
  • 使用场景:

    • 适用于需要稳固、可靠且功能全面的网络边界保护的环境。

    • 企业级路由器、防火墙替代解决方案。

    • 在需要高度可定制网络环境中作为VPN网关或IDS/IPS设备。

    • 对新手来说配置可能较为复杂。

    • 硬件兼容性问题可能会出现在特定的环境中。

    • OPNsense相对较新,社区和插件库可能不如pfSense成熟。

  • 基本操作:

    • 通过Web界面进行设备配置和监控。
    • 设置网络接口和VLANs。
    • 配置NAT规则和防火墙策略。
    • 实施用户认证和VPN设置。
  • 高级用法:

    • 设置高可用性集群,以防单点故障。
    • 配置和调优IDS/IPS(如Snort或Suricata)。
    • 实施流量整形和带宽管理。
    • 集成第三方服务和应用。
  • 使用场景:

    • 适用于需要稳固、可靠且功能全面的网络边界保护的环境。
    • 企业级路由器、防火墙替代解决方案。
    • 在需要高度可定制网络环境中作为VPN网关或IDS/IPS设备。

OPNsense致力于提供更现代化的用户界面和更频繁的更新,而pfSense则以稳定性和成熟的社区支持为特点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

考研数学|武忠祥VS张宇,谁讲得更全面❓

张宇和武忠祥都是很好的老师,你肯定也是这么觉得的,你自己也说了,跟着张宇看了几章,感觉不错,那就继续跟着啊,为什么听到同学说武忠祥好,你就动摇了呢。我们对于任何事情都要有自己的思考和规划…

SQL注入简单总结

一、SQL注入是什么 SQL注入即:是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服…

prompt问题【中间不好】

问题1:longchain 关键词在中间容易被忽略掉 Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding 论文对大模型在长文本情况下的性能做了一系列实验研究,发现了一个有趣的“Lost in the middle”现象&#x…

我与C++的爱恋:隐式类型转换

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好,本篇内容我们来介绍初始化列表,隐式类型转换以及explicit的内容 一、初始化列表 1.1 构造函数体赋值 在创建对象时,编译器…

【笔试强训】Day3 --- 简写单词 + dd爱框框 + 除2!

文章目录 1. 简写单词2. dd爱框框3. 除2! 1. 简写单词 【链接】:简写单词 解题思路:简单模拟题,主要是处理⼀下输⼊的问题。(也可以利用string类中的find函数,但时间复杂度会偏高) #include …

一套全院级PACS系统源码,实现影像检查的电子预约申请、电子诊断报告、 临床科室设立影像浏览终端等功能

一套全院级PACS系统源码,实现影像检查的电子预约申请、电子诊断报告、 临床科室设立影像浏览终端等功能 一套全院级PACS系统源码,包括放射、CT、超声、内镜、病理等科室影像及信息管理系统的建设,解决医学影像的采集、诊断、传输、存储&#…

电感与磁珠

电感是什么? 电感会通过产生感应电动势的方式来阻碍电流的变化,电流变化率越大,产生的感应电动势越大阻碍电流效果越明显。 [一]品质因数Q: 电感的品质因数Q值定义:电感的Q值也叫作品质因数,其为无功功率除以有功功率…

永恒之蓝复现

目录 一、原理 二、实验环境 三、实验步骤 \1. 查询ip \2. 测试两台主机的连通性 \3. 查询指kali数据库的状态 \4. 此时就可以进行永恒之蓝漏洞扫描,(永恒之蓝利用的是ms17_010漏洞,因此到这一步之后的任务就是在kali 里寻找ms17_010漏…

比特币减半倒计时:NFT 生态将受到怎样的影响?

BTC 减半倒计时仅剩不到 1 天,预计在 4 月 20 日迎来减半。当前区块奖励为 6.25 BTC,减半后区块奖励为 3.125 BTC,剩余区块为 253。比特币减半无疑是比特币发展史上最重要的事件之一,每当这一事件临近,整个加密社区都充…

从零开始搭建网站(第二天)

今天把之前的htmlcssjs项目迁移过来,直接使用tspiniavue3vite组合,搭建过程可以看从零开始搭建性能完备的网站-思路过程(1)_自己架设一个芯参数网站-CSDN博客。之后安装一下volar扩展。迁移过来使用Vue重构时发现之前使用的左右两…

《深入浅出多模态》: 多模态经典模型:BLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

计算机网络——GBN协议实现

实验目的 编程模拟实现GBN可靠传输软件 实验内容 C 程序模拟实现Go-Back-N可靠数据传输,需要编写一个发送端程序和一个测试端程序来模拟传输过程 具体流程 1. 编写发送端程序,调用库实现socket连接,然后主要实现滑动窗口,接收…

IDEA开启自动导包,自动删包

找到file----------->Settings选项 找到Editor-------->General------------>Auto Import选项 勾选两个选项,在点击Apply,在点击ok 最后就ok了

详解数据结构:栈

一、顺序栈 顺序栈的存储方式如下: 从图中可以看出,顺序栈需要两个指针,base指向栈底,top指向栈顶。 typedef struct SqStack {ElemType *base; //栈底指针ElemType *top; //栈顶指针}SqStack; 说明: ElemType是元…

8款不同的404页面(网站404页面必备)

第1款 部分代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>404</title><link rel"stylesheet" href"css/style.css"></head> <body><div cla…

C语言转型之路:从C到C++的类与对象初探

欢迎来CILMY23的博客 本篇主题为 C语言转型之路&#xff1a;从C到C的类与对象初探 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏系列&#xff1a; Python | C语言 | 数据结构与算法 | C 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 写在前头…

hive搭建完整教学

目录 简介准备工作安装步骤&#xff08;一&#xff09;、下载hive包并解压到指定目录下&#xff08;二&#xff09;、设置环境变量&#xff08;三&#xff09;、下载MySQL驱动包到hive的lib目录下&#xff08;四&#xff09;、将hadoop的guava包拷贝到hive&#xff08;五&#…

美团财务科技Java后端一面:面向对象、类加载过程、全限定类名相同的类是否可以同时被加载

更多大厂面试内容可见 -> http://11come.cn 美团财务科技Java后端一面&#xff1a;面向对象、类加载过程、全限定类名相同的类是否可以同时被加载 如何理解面向对象&#xff1f; 面向对象 是具有对象概念的编程范式&#xff0c;面向对象将程序实现分为了一个个独立的对象&…

cdh cm界面HDFS爆红:不良 : 该 DataNode 当前有 1 个卷故障。 临界阈值:任意。(Linux磁盘修复)

一、表现 1.cm界面 报错卷故障 检查该节点&#xff0c;发现存储大小和其他节点不一致&#xff0c;少了一块物理磁盘 2.查看该磁盘 目录无法访问 dmesg检查发现错误 dmesg | grep error二、解决办法 移除挂载 umount /data10 #可以移除挂载盘&#xff0c;或者移除挂载目…

WPS的bug问题(解决方法->换成office吧):表格数据和透视图数据不一致问题,多次尝试确定该bug

1.软件版本 2.问题描述 我在原始表中对其中一列进行筛选&#xff0c;选择95%以上这个选项值&#xff0c;343个数据。 在筛选了95%以上这个选项之后&#xff0c;我的另一列的值全部是no&#xff0c;343个数据。 然后进行透视图之后&#xff0c;在绘制的图形中发现&#xff0c…