linux 网络工具(二)

linux 网络工具

    • 1. ip命令簇
      • 4.1 address
      • 4.2 link
      • 4.3 route
      • 4.4 rule
    • 2. 其他常用命令
      • 2.1 ifup/ifdown
      • 2.2 配置主机名
      • 2.3 设置DNS服务器指向
      • 2.4 配置域名解析
      • 2.5 ss
      • 2.6 路由相关配置文件
      • 2.7 查看机器可用端口
      • 2.8 traceroute
      • 2.9 dhclient

在这里插入图片描述

1. ip命令簇

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。
在这里插入图片描述

NAME
       ip - show / manipulate routing, devices, policy routing and tunnels

SYNOPSIS
       ip [ OPTIONS ] OBJECT { COMMAND | help }

OPTIONS:

命令作用
-V显示指令版本信息
-f [family]指定要使用的协议。协议标识可以是inet、inet6、ipx、dnet、bridge、link 之一。如果此选项不存在,则从其他参数中推测协议族。如果命令行的其余部分没有提供足够的信息来推测该族,则ip会退回到默认值,通常是 inet 或 any 。link 是一个特殊的系列标识符,表示不涉及网络协议。
-s输出更为详细的信息。如果这个选项出现两次或者多次,输出的信息将更为详细。
-4是 -f inet 的简写。
-6是 -f inet6 的简写。
-0是 -f link 的简写。
-o对每条记录都使用单行输出。
-r查询域名解析系统,用获得的主机名代替主机IP地址。

OBJECT:
可以针对哪些网络参数进行动作,包括有:

对象说明
address网络设备的IP(v4或者v6)地址信息
link网络设备信息
maddress多播地址
mourte组播路由缓存条目
monitor监控网络链接消息
netns管理网络命名空间
ntable管理邻居表缓存操作
neighbour邻居表
route路由表
ruleIP策略
tunnelIP隧道
tuntap管理tun/tap设备

COMMAND:

对象说明
add新增
delete删除
show(or list)显示
set设置参数

由于该命令涉及功能实在庞大,所以挑选些常用的进行演示:

4.1 address

address是最常用的option之一,主要针对ip地址设置

  1. 显示当前IP地址信息

    可以写成
    ip address 或 ip addr 或 ip ad 或 ip a

    由于在OBJECT中只有address以a为首字母,所以只要能区分出来是address,那么address|addr|ad|a都可以

    [root@node1 ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ...
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
        inet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33
           valid_lft 83848sec preferred_lft 83848sec
        inet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    ...
    
  2. 给设备enp0s8设置ip地址(临时)

    ip addr add 192.168.1.200/24 dev enp0s8
    
  3. 给设备enp0s8移除ip地址

    [root@node1 ~]# ip addr add 192.168.71.184/24 dev ens33
    [root@node1 ~]# ip addr del 192.168.71.184/24 dev ens33
    

4.2 link

link是针对设备设置的option

  1. 列出所有设备
    [root@node1 ~]# ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
    
  2. 启动一个网络设备
    [root@node1 ~]# ip l set ens33 up
    
  3. 开启混杂模式
    ip link set dev enp0s8 promisc on 
    
  4. 设置MTU值,即设置最大传输单元
    ip link set enp0s8 mtu 1000
    
  5. 设置mac地址
    ip link set enp0s8 address a0:0a:b0:0b:c0:0c 
    
  6. 添加一对虚拟网卡
     ip link add  r1-inside type veth peer name r1-outside
    

4.3 route

route是设置路由相关信息的option

[root@node1 ~]# ip route
default via 192.168.71.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1
192.168.71.0/24 dev ens33 proto kernel scope link src 192.168.71.183 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

显示路由表做简要说明如下:

  • 路由第一部分是一个IP或者IPv6地址,也可以跟着一个斜杠和掩码长度(如:192.168.0.0/24)。如果没有掩码长度,ip命令就假定是一个单一ip 地址。
  • dev 是关键字,其后面是网卡的名字
  • via 关键字,其后面是下一跳路由器的地址。其实就是网关IP。
  • metric 关键字,其后面跟一个数字,定义路由的优先值。Metric的值越小,优先级越高,没有则为0。
  • src 关键字,其后面跟一个IP地址,在向目的发送数据包时,选择的源地址。
  • proto关键字,其后面是IP地址设置的方式,如:static、dhcp,比较特殊的是kernel。
  1. 列出所有路由,show可缺省
[root@node1 ~]# ip route
default via 192.168.71.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1
192.168.71.0/24 dev ens33 proto kernel scope link src 192.168.71.183 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
  1. 添加一个缺省网关
ip route add default via  10.0.3.254  dev enp0s8
  1. 删除一个缺省网关
ip route deletedefault via  10.0.3.254  dev enp0s8

4.4 rule

rule是策略路由相关的option

基于策略的路由比传统路由在功能上更强,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

在linux系统中,一条路由策略rule主要包含三个信息,即rule的优先级,条件,路由表。其中rule的优先级数字越小表示优先级越高,然后是满足什么条件下由指定的路由表来进行路由。

在linux系统启动时,内核会为路由策略数据库配置三条缺省的规则,即rule 0,rule 32766, rule 32767(数字是rule的优先级,0优先级最高)

[root@node1 ~]# ip rule show
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

在linux系统中是按照rule的优先级顺序依次匹配。假设系统中只有优先级为0,32766及32767这三条规则。那么系统首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到匹配的路由;如果没有找到路由,就会匹配下一个不空的规则,在这里只有32766规则,那么将会在主路由表里寻找路由;如果没有找到匹配的路由,就会依据32767规则,即寻找默认路由表;如果失败,路由将失败。

有3个默认的规则,在/etc/iproute2/rt_tables中存储。

[root@node1 ~]# cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
...
  • 255 :local 本地路由表存有本地接口地址,广播地址,已及NAT地址. local表由系统自动维护…管理员不能操作此表
  • 254:main 主路由表 传统路由表,ip route若没指定表亦操作表254.一般存所有的路由
  • 253:default 默认路由表一般存放默认路由

进行路由时,正是根据路由规则来进行匹配,按优先级从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的

语法:

[root@node1 ~]# ip rule help
Usage: ip rule { add | del } SELECTOR ACTION
       ip rule { flush | save | restore }
       ip rule [ list [ SELECTOR ]]
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]
            [ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]
            [ uidrange NUMBER-NUMBER ]
ACTION := [ table TABLE_ID ]
          [ nat ADDRESS ]
          [ realms [SRCREALM/]DSTREALM ]
          [ goto NUMBER ]
          SUPPRESSOR
SUPPRESSOR := [ suppress_prefixlength NUMBER ]
              [ suppress_ifgroup DEVGROUP ]
TABLE_ID := [ local | main | default | NUMBER ]

SELECTOR具体参数如下:

From — 源地址
To — 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos — IP包头的TOS(type of sevice)域
Dev — 物理接口
Fwmark — 防火墙参数

ACTION动作:

Table 指明所使用的表
Nat 透明网关
Action prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息

策略路由一般手工添加路由表,路由表的添加只需编辑rt_tables文件,规定表序号,表名即可

ip rule add from 192.168.1.112/32 [tos 0x10] table 202 pref 999 prohibit 
ip rule add to 192.168.1.2 pref 1000 table 201
ip rule add from 192.168.1.0/24 pref 1001 table 201
ip rule add [from 0/0] table test1 pref 1003 

以上内容参考乐大师

2. 其他常用命令

2.1 ifup/ifdown

ifup - bring a network interface up
ifdown - take a network interface down

ifup iface/ifdown iface

启用关闭网卡

注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-iface来识别接口并完成配置,所以没有配置文件无法使用此命令

2.2 配置主机名

  1. hostname命令:
    查看:hostname
    配置:hostname HOSTNAME

    重启后失效

  2. hostnamectl命令:
    hostnamectl status显示当前主机名设定
    hostnamectl set-hostname abc 设置主机名

    设置立即生效,而且会写入/etc/hostname文件

  3. 修改配置文件:/etc/hostname

    root@ubuntu:~# cat /etc/hostname
    ubuntu1
    
     重启后生效
    
  4. nmcli gen hostname

    [root@node1 ~]# nmcli gen hostname node1-centos
    [root@node1 ~]# cat /etc/hostname
    node1-centos
    

    设置立即生效,而且会写入/etc/hostname文件

2.3 设置DNS服务器指向

配置文件/etc/resolv.conf

	nameserver 8.8.8.8

注意:最多可以设置3个域名

2.4 配置域名解析

配置文件:/etc/hosts

			192.168.70.128  cluster-endpoint	

2.5 ss

用于显示socket状态

ss [option] [filter]

option选项:

选项说明
-ttcp
-uudp
-wraw socket
-l监听连接
-a所有状态
-n数字格式
-p相关程序及其pid
-e扩展格式信息
-m内存用量
-o计时器信息
[root@node1 ~]# ss -nltp
State      Recv-Q Send-Q                        Local Address:Port                                       Peer Address:Port
...
LISTEN     0      128                                    [::]:80                                                 [::]:*                   users:(("nginx",pid=1354,fd=7),("nginx",pid=1353,fd=7),("nginx",pid=1352,fd=7))
LISTEN     0      128                                    [::]:22                                                 [::]:*                   users:(("sshd",pid=1155,fd=4))
LISTEN     0      100                                   [::1]:25                                                 [::]:*                   users:(("master",pid=1347,fd=13))
[root@node1 ~]# ss -nltp|grep 22
LISTEN     0      5      192.168.122.1:53                       *:*                   users:(("dnsmasq",pid=1636,fd=6))
LISTEN     0      128          *:22                       *:*                   users:(("sshd",pid=1155,fd=3))
LISTEN     0      128       [::]:22                    [::]:*                   users:(("sshd",pid=1155,fd=4))

详细参考:Linux之ss命令

2.6 路由相关配置文件

CentOS的网络配置文件路径位于/etc/sysconfig/network-scripts/目录下,其中ifcfg-*文件为网络接口的配置文件,route-*文件为路由配置文件

永久添加路由 重启network服务生效 支持用#注释

  • 方法一

    a、添加默认网关,即默认路由

    两块网卡在配置文件ifcfg-ethX中不配置网关,在/etc/sysconfig/network中设置默认网关

    vim /etc/sysconfig/network
    
    GATEWAY=192.168.14.254
    

    b、添加路由 创建/etc/sysconfig/static-routes配置文件

    vim /etc/sysconfig/static-routes
    
    any net 192.168.15.0/24 gw 192.168.14.254
    
    any host 123.57.223.144 gw 192.168.14.254
    
    any host 123.57.190.33/32 gw 192.168.8.1
    
  • 方法二
    在/etc/sysconfig/network-scripts/下创建配置文件route-ethX

    vim /etc/sysconfig/network-scripts/route-eth0
    
    0.0.0.0/0 via 192.168.14.254 dev eth0 这条为默认路由,另一种格式 default 192.168.14.254 dev eth0
    
    192.168.15.0/24 via 192.168.14.254 dev eth0
    
    123.57.223.144 via 192.168.14.254 dev eth0
    
    vim /etc/sysconfig/network-scripts/route-eth1
    
    123.57.190.33 via 192.168.8.1 dev eth1
    

配置完重启服务 service network restart

2.7 查看机器可用端口

[root@node-252 ~]#  sysctl -a |grep port_range
net.ipv4.ip_local_port_range = 32768    60999
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"

2.8 traceroute

显示数据包到主机间的路径,traceroute命令用于追踪数据包在网络上的传输时的全部路径,Centos7默认发送的数据包大小是60字节。

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址

命令格式

traceroute [-dFlnrvx][-f<存活数值>][-g<网关>][-i<网络界⾯>]\
					[-m<存活数值>][-p<通信端⼝>][-s<来源地址>][-t<服务类型>][-w<超时秒数>]\
					[主机名称或IP地址][数据包大小]

主机:指定目的主机IP地址或主机名。

命令选项

    -d:使用Socket层级的排错功能;
    -f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;
    -F:设置勿离断位;
    -g<网关>:设置来源路由网关,最多可设置8个;
    -i<网络界面>:使用指定的网络界面送出数据包;
    -I:使用ICMP回应取代UDP资料信息;
    -m<存活数值>:设置检测数据包的最大存活数值TTL的大小;
    -n:直接使用IP地址而非主机名称;
    -p<通信端口>:设置UDP传输协议的通信端口;
    -r:忽略普通的Routing Table,直接将数据包送到远端主机上。
    -s<来源地址>:设置本地主机送出数据包的IP地址;
    -t<服务类型>:设置检测数据包的TOS数值;
    -v:详细显示指令的执行过程;
    -w<超时秒数>:设置等待远端主机回报的时间;
    -x:开启或关闭数据包的正确性检验。

示例

[root@node-136 ~]# traceroute -n 110.242.68.3 -m 50 -I
traceroute to 110.242.68.3 (110.242.68.3), 50 hops max, 60 byte packets
 1  192.168.81.1  0.497 ms  0.465 ms  0.437 ms
 2  42.180.224.129  23.652 ms  23.630 ms  23.636 ms
 3  42.87.241.213  14.185 ms  14.148 ms  13.821 ms
 4  113.230.175.153  51.780 ms  51.995 ms  52.711 ms
 5  219.158.104.206  46.380 ms  46.832 ms *
 6  110.242.66.166  34.280 ms  34.513 ms  34.470 ms
 7  221.194.45.130  36.360 ms  35.232 ms  35.641 ms
 8  * * *
 9  * * *
10  * * *
11  110.242.68.3  34.648 ms  34.787 ms  34.467 ms

记录按序列号从1开始,每个记录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实3就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 http://rumenz.com,表示向每个网关发送4个数据包。

同一行有多个ip,因为到达目标主机的路径有多个,所以路径中的ip可能也会显示多个

有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

2.9 dhclient

用dhclient动态配置IP地址。dhclient 命令与网卡的设备名(如eth0)一起使用时,向DHCP服务器请求一个IP地址和其他功能:

dhclient eth0

一般而言,由DHCP服务器配置的网络选项包括:IP地址、子网掩码、访问外部网络的网关地址以及此网络上任何DNS服务器的IP地址。
换言之,dhclient eth0命令不仅能像ip命令那样分配IP地址,而且还会在路由表中建立默认的路由(由ip route命令可以得到路由表)。此外,它还会把DNS服务器的IP地址添加到/etc/resolv.conf配置文件中。

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

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

相关文章

vue3+elementPlus:el-drawer新增修改弹窗复用

在el-drawer的属性里设置:title属性&#xff0c;和重置函数 //html<!-- 弹窗 --><el-drawerv-model"drawer":title"title":size"505":direction"direction":before-close"handleClose"><el-formlabel-posit…

yolov8 细胞分割数据集准备及训练

1、数据 下载:https://universe.roboflow.com/motherson-hm/5-part-diff 500来张,5个类别(嗜碱性细胞、嗜酸细胞、淋巴细胞、单核细胞、中性粒细胞) yolo 分割数据标注格式: 与检测类似,就是坐标分割有多个 2、训练 训练yaml: seg_data.yaml (与检测格式一样) …

Guava自加载缓存LoadingCache使用指南

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天我们来聊聊缓存。在Java世界里&#xff0c;高效的缓存机制对于提升应用性能、降低数据库负担至关重要。想象一下&#xff0c;如果每次数据请求都要跑到数据库里取&#xff0c;那服务器岂不是要累趴了&#x…

SpringBoot发布项目到docker

Dockerfile FROM openjdk:11 # 作者 MAINTAINER chenxiaodong<2774398338qq.com># 安装 vim # RUN yum -y install vim# 环境变量 # 进入容器后的默认工作目录 ENV WORKPATH /usr/local/webapp ENV EXECFILE Docker2Application-0.0.1-SNAPSHOT.jarRUN mkdir -p $WORKPA…

论文分享 | 利用单模态自监督学习实现多模态AVSR

以下文章来源于智能语音新青年 &#xff0c;作者ttslr 论文地址&#xff1a; https://aclanthology.org/2022.acl-long.308.pdf 代码仓库&#xff1a; https://github.com/LUMIA-Group/Leveraging-Self-Supervised-Learning-for-AVSR 训练一个基于Transformer的模型需要大量的…

从0开始学前端day1

script setup 在script里写一个setup的作用 自动注册子组件属性和方法无需返回&#xff0c;执行完后自动更新支持props和context Vue 3中的props和context props是一种用于父子组件通信的机制。父组件可以通过props向子组件传递数据&#xff0c;子组件则可以通过props接收来…

Android : 画布绘制矩形和文字 让其居中显示简单应用

示例图&#xff1a; CenterView.java package com.example.demo;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.View;public class Center…

大数据Doris(四十二):使用物化视图

文章目录 使用物化视图 一、​​​​​​​创建物化视图

听GPT 讲Rust源代码--src/tools(29)

File: rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs 在Rust源代码中&#xff0c;rust/src/tools/clippy/clippy_lints/src/unused_peekable.rs这个文件是Clippy工具中一个特定的Lint规则的实现文件&#xff0c;用于检测未使用的Peekable迭代器。 Peekable迭代器…

Bind for 0.0.0.0:2379 failed: port is already allocated

1、执行命令docker-compose -p docker-apisix up -d 报错 Error response from daemon: driver failed programming external connectivity on endpoint docker-apisix-etcd-1 (2a92a0cefff9194fcd1dad4bdeabf4201d9047ec2633eda455c6e46528668af4): Bind for 0.0.0.0:2379 fa…

Pandas教程(三)—— 数据清洗与准备

1.处理缺失值 1.1 数据删除函数 作用&#xff1a;删除Dataframe某行或某列的数据 语法&#xff1a;df.drop&#xff08; labels [ ] &#xff09; drop函数的几个参数&#xff1a; labels &#xff1a;接收一个列表&#xff0c;内含删除行 / 列的索引编号或索引名 axis &…

用友薪福社解决社会化用工难题,助力企业走上“降本增效”之路

“就业”一直是人们关注的重点。用人需求与求职人数环比均明显上升&#xff0c;人力资源市场活跃度也明显增强&#xff0c;但供求关系整体仍旧偏紧。在行业快速发展的前提下&#xff0c;如何快速缓解企业用工荒难题&#xff0c;成为当前诸多企业面临的困境。为了科学合规地降低…

金融贷款行业怎么精准获客,电销打吐了!教你两招

助贷行业&#xff0c;一般都会设有kpi&#xff0c;压力竞争都不小。虽然现在贷款电销大家对此意见不同&#xff0c;但是&#xff0c;不可否认&#xff0c;这个行业&#xff0c;电销就是它们最快速的获客方式。只要耐得住性子&#xff0c;有一份精准的话单&#xff0c;就可以开工…

二叉树数据结构:深入了解二叉树的概念、特性与结构

在探索栈和队列之后&#xff08;大家可以移步至我的数据结构专栏&#xff09;&#xff1a;T-rLN的数据结构专栏 我们转向了更为复杂而有趣的数据结构——二叉树。本文将引领我们进入二叉树的世界&#xff0c;从最基本的概念和结构开始&#xff0c;逐步深入了解二叉树的顺序结构…

Postman使用

Postman使用 Pre-request Script 参考&#xff1a; Scripting in Postman 可以请求、集合或文件夹中添加Pre-request Script&#xff0c;在请求运行之前执行JavaScript 如设置变量值、参数、Header和正文数据&#xff0c;也可以使用Pre-request Script来调试代码&#xff0…

解决Hive在DataGrip 中注释乱码问题

注释属于元数据的一部分&#xff0c;同样存储在mysql的metastore库中&#xff0c;如果metastore库的字符集不支持中文&#xff0c;就会导致中文显示乱码。 不建议修改Hive元数据库的编码&#xff0c;此处我们在metastore中找存储注释的表&#xff0c;找到表中存储注释的字段&a…

【汇编笔记】初识汇编-内存读写

汇编语言的由来&#xff1a; CPU是计算机的核心&#xff0c;由于计算机只认识二进制&#xff0c;所以CPU执行的指令是二进制。 我们要想让CPU工作&#xff0c;就得给他提供它认识的指令&#xff0c;这一系列的指令的集合&#xff0c;称之为指令集。 指令集&#xff1a; 不同的体…

VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处

引言&#xff1a; VR全景图片是通过虚拟现实技术制作出的具有沉浸感的图片&#xff0c;能够提供给用户一种身临其境的感觉。在宣传方面&#xff0c;它有着独特的优势和潜力&#xff0c;能够帮助吸引更多的潜在客户&#xff0c;那么VR全景图片制作时有哪些技巧&#xff0c;VR全…

【科普】家长们:如何早期发现孩子的听力问题?

孩子太小还不会说话&#xff0c; 或表达不准确&#xff0c; 家长往往很难发现他们听力下降&#xff1b; 那在生活中 如何发现孩子听力异常呢&#xff1f; 1、新生儿听力筛查 每一个新生儿出生后都要求做听力筛查&#xff0c;这样可以及早判断是否存在听力障碍的可能&#…

【Java 进阶篇】Jedis 操作 Set 与 SortedSet 详解

Redis 是一个强大的键值存储系统&#xff0c;而 Jedis 是 Redis 的 Java 客户端&#xff0c;为 Java 开发者提供了方便的操作接口。在这篇博客中&#xff0c;我们将深入探讨 Jedis 如何操作 Redis 中的 Set 和 SortedSet 数据结构。无论你是初学者还是有一些经验的开发者&#…