当前位置: 首页 > news >正文

Linux入门攻坚——12、Linux网络属性配置相关知识2

CentOS 7网络属性配置

传统命名机制:以太网eth[0,1,2,...],wlan[0,1,2...]
可预测功能的命名机制:
    udev支持多种不同的命名方案:
        Firmware ,拓扑结构

    在对待设备文件这块,Linux改变了几次策略。早期,设备文件仅仅是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是udev--一个用户空间程序。
在工作中多次碰到这样的要求:linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。现在新增加了一个外置的磁盘阵列,通过SCSI卡连接。但接上这个磁盘阵列后,/dev/sda变成了磁盘阵列的硬盘了,原来内置的SCSI硬盘变成了 /dev/sdb,现在希望将设备文件固定下来。过去,这个比较麻烦,因为/dev/sda等文件都是linux内核自动分配的。很难固定下来,除非你更改加载SCSI卡驱动程序的顺序,让内置硬盘连接的SCSI卡比外接磁盘阵列连接的SCSI卡的驱动模块先加载到内核,这样就能保证/dev/sda总是指向内置的硬盘。但这种解决方法毕竟不太完美,而且对于其他的即插即用设备,如USB设备等都不适用。
udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。udev能够实现所有devfs实现的功能。但udev运行在用户模式中,而devfs运行在内核中。据称:devfs具有一些不太容易解决的先天缺陷。

udev的工作过程:
1. 当内核检测到在系统中出现了新设备后,内核会在sysfs文件系统中为该新设备生成一项新的记录,一般sysfs文件系统会被 mount到 /sys目录中。新记录是以一个或多个文件或目录的方式来表示。每个文件都包含有特定的信息。
 2. udev在系统中是以守护进程的方式udevd在运行,它通过某种途径,检测到新设备的出现,通过查找设备对应的sysfs中的记录得到设备的一些信息。
 3. udev 会根据/etc/udev/udev.conf文件中的udev_rules指定的目录,逐个检查该目录下的文件,这个目录下的文件都是针对某类或某个设备应该施行什么措施的规则文件。udev读取文件是按照文件名的ASCII字母顺序来读取的,如果udev一旦找到了与新加入的设备匹配的规则,udev 就会根据规则定义的措施对新设备进行配置。同时不再读后续的规则文件。

    (1)网卡命名机制
        systemd对网络设备的命名方式:
            1)如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如:eno1;
            2)如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如:ens1;
            3)如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;
            4)如果用户显示启动,也可根据MAC地址进行命名,enx2387aadc56;
            5)上述均不可用,则使用传统命名机制;

        上述命名机制中,有的需要biosdevname程序的参与;

    (2)名称组成格式
            en:ethernet
            wl:wlan,无线局域网设备
            ww:wwan,无线广域网设备
        名称类型:
            o<index>:集成设备的设备索引号;
            s<slot>:扩展槽的索引号,支持虚拟设备
            x<MAC>:基于MAC地址的命名;
            p<bus>s<slot>:enp2s1

    网卡设备的命名过程:
        第一步:
            udev,辅助工具程序/lib/udev/rename_device,根据 /usr/lib/udev/rules.d/60-net.rules的指示,查找/etc/sysconfig/network-scripts/下的ifcfg-文件,如果HWADDR相同,将其中的DEVICE值作为网卡的名字。


        第二步:
            biosdevname会根据/usr/lib/udev/rules.d/71-biosdevname.rules所定义的规则进行命名


        第三步:
            通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description.rules
            ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH

对于CentOS6,是在/lib/udev/rules.d/目录下。

    回归传统命名方式:
        1)编辑/etc/default/grub配置文件
            GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"

        2)为grub2生成其配置文件
            grub2-mkconfig -o /etc/grub2.cfg
        3)重启系统

地址配置工具:nmcli

0.8.1版本:nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

1.18.8版本:
nmcli [OPTIONS...] {help | general | networking | radio | connection | device |
             agent | monitor} [COMMAND] [ARGUMENTS...]

[root@localhost rules.d]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }OPTIONS-a, --ask                                ask for missing parameters-c, --colors auto|yes|no                 whether to use colors in output-e, --escape yes|no                      escape columns separators in values-f, --fields <field,...>|all|common      specify fields to output-g, --get-values <field,...>|all|common  shortcut for -m tabular -t -f-h, --help                               print this help-m, --mode tabular|multiline             output mode-o, --overview                           overview mode-p, --pretty                             pretty output-s, --show-secrets                       allow displaying passwords-t, --terse                              terse output-v, --version                            show program version-w, --wait <seconds>                     set timeout waiting for finishing operationsOBJECTg[eneral]       NetworkManager's general status and operationsn[etworking]    overall networking controlr[adio]         NetworkManager radio switchesc[onnection]    NetworkManager's connectionsd[evice]        devices managed by NetworkManagera[gent]         NetworkManager secret agent or polkit agentm[onitor]       monitor NetworkManager changes

nmcli general {status | hostname | permissions | logging} [ARGUMENTS...]


nmcli networking {on | off | connectivity} [ARGUMENTS...]
nmcli connection {show | up | down | modify | add | edit | clone | delete |
                        monitor | reload | load | import | export} [ARGUMENTS...]


     modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+


setting.property:
    ipv4.address
    ipv4.gateway
    ipv4.dns
    ipv4.method
nmcli c modify ens33 -ipv4.address 192.168.138.139/24      删除IP

添加网关:[root@localhost rules.d]# nmcli c modify ens33 ipv4.gateway 192.168.138.2
错误:修改连接 "ens33" 失败:ipv4.gateway: 如果没有配置地址,网关会无法设置

[root@localhost rules.d]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4c3624ae-a8b2-4dbc-8aec-5e475bc122c8
DEVICE=ens33
ONBOOT=yes
PEERDNS=no
PEERROUTES=no
[root@localhost rules.d]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4c3624ae-a8b2-4dbc-8aec-5e475bc122c8
DEVICE=ens33
ONBOOT=yes
PEERDNS=no
PEERROUTES=no
IPADDR=192.168.138.139
PREFIX=24
GATEWAY=192.168.138.2
[root@localhost rules.d]# 

出现错误,IP地址配的是dhcp,查看/etc/sysconfig/network-scripts/ifcfg-ens33,如上,然后增加了一个IP:192.168.138.139/24,然后再增加网关,就成功了。
 nmcli device {status | show | set | connect | reapply | modify | disconnect |
                    delete | monitor | wifi | lldp} [ARGUMENTS...]

Linux语言环境管理命令:localectl

nmtui工具:nmtui

主机名称配置工具:hostname与hostnamectl命令:

网络客户端工具:lftp,ftp,lftpget,wget

安装:yum install lftp

lft [-p port] [-u user [, password]] server

在CentOS7下访问windows下的ftp服务器时,中文出现乱码,登录后进行如下设置(CentOS7的LANG=zh_CN.UTF-8):

lftp admin@192.168.138.1:/> set ftp:charset gbk
lftp admin@192.168.138.1:/> set file:charset utf8

下载文件,使用get(下载单个文件),或mget(同时下载多个文件),mget *,下载所有文件

lftpget URL

ftp已落后,不建议使用了。

wget :
    wget [option]...  URL...
        -q:静默模式
        -c:续传
        -O:保存位置(另存为别的名字)
        --limit-rates=:指定传输速率

nmap,ncat,tcpdump

nmap:“Network Mapper(网络映射器)”。是一款网络探测和安全审核的工具。目标是快速地扫描大型网络。它使用原始IP报文来发现网络上有哪些主机,主机提供什么服务(应用程序名和版本),服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及其它功能。

用法:nmap [Scan Type(s)] [Options] {target specification}
其中,target Specification用于指定扫描的目标,可以是一个主机或是一个网络,主机可以使用IP或主机名等。如指定一个IP:192.168.138.137,指定一个名字,如:www.baidu.com,指定一个网络,如:192.168.138.0/24,使用IP地址,四个数字部分都可以使用范围表示:如192.168.138.1-254,代表扫描192.168.138.1到192.168.138.254,或者192.168.138-140.1-254。使用逗号是列出多个值,如192.168.138.1,3-5,代表192.168.138.1,192.168.138.3,192.168.138.4,192.168.138.5.
选项:
    -sL:仅仅列出要扫描的目标列表

    -sP:ping扫描,仅仅确定主机是否在线

从运行报表结果可以看到,只报告在线的主机及其MAC地址,没有其他信息。
    -p<port range>:扫描开放相关端口的主机

    -A:激烈扫描模式,会扫描很多信息,包括操作系统、端口、服务、等等。

这里只是入门,nmap更详细的使用需要以后使用中再精通。
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
      Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
     -iL <inputfilename>: Input from list of hosts/networks
      -iR <num hosts>: Choose random targets
      --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
      --excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
      -sL: List Scan - simply list targets to scan
      -sP: Ping Scan - go no further than determining if host is online
      -P0: Treat all hosts as online -- skip host discovery
      -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
      -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
      -n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
SCAN TECHNIQUES:
      -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
      -sN/sF/sX: TCP Null, FIN, and Xmas scans
      --scanflags <flags>: Customize TCP scan flags
      -sI <zombie host[:probeport]>: Idlescan
      -sO: IP protocol scan
      -b <ftp relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
      -p <port ranges>: Only scan specified ports
        Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
      -F: Fast - Scan only the ports listed in the nmap-services file)
      -r: Scan ports sequentially - don't randomize
SERVICE/VERSION DETECTION:
      -sV: Probe open ports to determine service/version info
      --version-light: Limit to most likely probes for faster identification
      --version-all: Try every single probe for version detection
      --version-trace: Show detailed version scan activity (for debugging)
OS DETECTION:
      -O: Enable OS detection
      --osscan-limit: Limit OS detection to promising targets
      --osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
      -T[0-6]: Set timing template (higher is faster)
      --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
      --min-parallelism/max-parallelism <numprobes>: Probe parallelization
      --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Specifies
      probe round trip time.
      --host-timeout <msec>: Give up on target after this long
      --scan-delay/--max-scan-delay <msec>: Adjust delay between probes
FIREWALL/IDS EVASION AND SPOOFING:
      -f; --mtu <val>: fragment packets (optionally w/given MTU)
      -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
      -S <IP_Address>: Spoof source address
      -e <iface>: Use specified interface
      -g/--source-port <portnum>: Use given port number
      --data-length <num>: Append random data to sent packets
      --ttl <val>: Set IP time-to-live field
      --spoof-mac <mac address, prefix, or vendor name>: Spoof your MAC address
OUTPUT:
  -oN/-oX/-oS/-oG <file>: Output scan results in normal, XML, s|<rIpt kIddi3,
     and Grepable format, respectively, to the given filename.
      -oA <basename>: Output in the three major formats at once
      -v: Increase verbosity level (use twice for more effect)
      -d[level]: Set or increase debugging level (Up to 9 is meaningful)
      --packet-trace: Show all packets sent and received
      --iflist: Print host interfaces and routes (for debugging)
      --append-output: Append to rather than clobber specified output files
      --resume <filename>: Resume an aborted scan
      --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
      --no-stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
MISC:
      -6: Enable IPv6 scanning
      -A: Enables OS detection and Version detection
      --datadir <dirname>: Specify custom Nmap data file location
      --send-eth/--send-ip: Send packets using raw ethernet frames or IP packets
      --privileged: Assume that the user is fully privileged
      -V: Print version number
      -h: Print this help summary page.
EXAMPLES:
      nmap -v -A scanme.nmap.org
      nmap -v -sP 192.168.0.0/16 10.0.0.0/8
      nmap -v -iR 10000 -P0 -p 80
ncat:ncat即Netcat,用于从TCP/UDP连接中读取或发送网络数据,连接和重定向套接字
有如下作用:
    端口侦听,ncat 可以作为 server 以 TCP 或 UDP 方式侦听指定端口;
    端口扫描,ncat 可以作为 client 发起 TCP 或 UDP 请求;
    机器之间传输文件;
    机器之间网络测速。
命令格式:ncat [OPTIONS...] [hostname] [port]
选项说明:

-4/6
    强制只使用 IPv4/IPv6 地址。
-d, --delay <time>
    读/写之间等待时间。
-h, --help
    打印出帮助信息。
-k, --keep-open
    在当前连接完成后继续侦听另一个连接。注意如果不使用 -l 选项,则使用此选项是错误的。
-l, --listen
    指定应该侦听传入的连接,而不是启动到远程主机的连接。将此选项与 -p、-s 或 -z 选项结合使用是错误的。此外,使用 -w 选项指定的超时将被忽略。
-n, --nodns
    不要在任何指定的地址、主机名或端口上执行任何 DNS 或服务查找。
-t, --telnet
    使 nc 发送 RFC 854 DON'T 和 WON'T 响应 RFC 854 的 DO 和 WILL 请求。这使得使用 nc 编写 telnet 会话脚本成为可能
-U, --unixsock
    指定使用 Unix 域套接字。
-u, --udp
    使用 UDP 代替默认选项 TCP。
-v, --verbose
    显示命令执行过程。
-z
    表示 zero,只扫描侦听守护进程,而不向它们发送任何数据。此选项与 -l 选项结合使用是错误的
-C, --crlf
    发送 CRLF 作为换行符。
-i, --idle-timeout <time>
    空闲读/写超时时间。
-p,  --source-port <port>
    指定源端口,但须受特权限制和可用性限制。将此选项与 -l 选项结合使用是错误的。
-s, --source <addr>
    设置本地主机送出数据包的 IP 地址。注意将此选项与 -l 选项结合使用是错误的。
-w, --wait <time>
    如果连接和 stdin 空闲超过指定秒数,则连接将被关闭。-w 标志对 -l 选项没有影响。缺省不超时。
-o, --output <filename>
    将会话数据转储到文件。
-x, --hex-dump <filename>
    将会话数据作为十六进制转储到文件。
--version
    显示版本信息。

监听本地端口:使用-l选项
ncat -vl 8888     

在192.168.138.137的8888端口启动监听,在132机器上连接此端口。
双方可以通话了,类似聊天功能。
文件传输:把 A 机器上的一个文本文件发送到 B 机器上,需注意操作次序,receiver 先侦听端口,sender 向 receiver 所在机器的该端口发送数据。

检查SSH版本信息:

tcpdump:一个运行在命令行下的抓包工具。
语法:
tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ -P in|out|inout ]
               [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ expression ]

-a  将网络地址和广播地址转变成名字
-d  将匹配信息包的代码以人们能够理解的汇编格式给出
-dd  将匹配信息包的代码以c语言程序段的格式给出
-ddd 将匹配信息包的代码以十进制的形式给出
-D   显示所有可用网络接口的列表
-e  在输出行打印出数据链路层的头部信息
-f  将外部的Internet地址以数字的形式打印出来
-l  使标准输出变为缓冲行形式
-L   列出指定网络接口所支持的数据链路层的类型后退出
-n  不把网络地址转换成名字,即不做反向域名解析
-q   简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短
-t   在每行的输出中不输出时间
-tt  在每行的输出中会输出时间戳
-ttt 输出每两行打印的时间间隔(以毫秒为单位)
-tttt 在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)

-v   产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
-vv  产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。
-vvv 产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来
-c  在收到指定的包的数目后,tcpdump就会停止
-F  从指定的文件中读取表达式,忽略其它的表达式
-i  指定监听的网络接口
-r  从指定的文件中读取包(这些包一般通过-w选项产生)
-w  直接将数据报写入文件中,并不分析和打印出来
-T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议)
-s   tcpdump 默认只会截取前 `96` 字节的内容,要想截取所有的报文内容,可以使用 `-s number`, `number` 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-S  seq ack 使用绝对序列号,而不是相对序列号
-Z  后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限

tcpdump -i ens33    #捕获指定接口(网卡)的数据包

tcpdump -i ens33 -c 3       #捕获指定个数的数据包(3个数据包)
tcpdump -A -i ens33 -c 3    #用ASCII码格式输出捕获的数据包
tcpdump -XX -i ens33        #用十六进制和ASCII码格式显示捕获的数据包


tcpdump -D    #显示可用的系统接口


tcpdump -w mydata.pcap -i ens33 -c 10      #把捕获的数据包写入到一个.pcap后缀的文件中

tcpdump -r tempDump.pcap    #读取捕获数据包文件的内容

tcpdump -n -i eth0    # 单个 n 表示不解析域名,直接显示 IP
tcpdump -i eth0 tcp    #捕获TCP类型的数据包,tcp可以换成其他,icmp如

tcpdump -i eth0 port 22   #捕获指定端口(这里是22)的数据包

tcpdump -i eth0 src 源ip地址   #捕获请求源是 192.169.12.101 的数据包

tcpdump -i eth0 dst 目标ip地址   #捕获指定目的IP的数据包
tcpdump -i eth0 dst host 目标ip地址 and port 8800 -w data.pcap  #抓取指定网卡,指定IP和端口的数据包 并写入到data.pcap文件中

tcpdump host 192.168.12.101 and 192.168.1.201 -w out &  #后台抓取两主机之间的数据
tcpdump -nn 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度

tcpdump输出解释
tcpdump的Flags代表了这个数据包的用途,这些标记是TCP首部的内容
    [S] : SYN(开始连接)
    [S.]: SYN同步标识,以及确认[S]的ACK
    [P.] : PSH(推送数据)
    [F.] : FIN (结束连接)
    [R.] : RST(重置连接)
    [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG:紧急指针)
     [FP.]: 标记FIN、PUSH、ACK组合,这样做是为了提升网络效率,减少数据来回确认等

相关文章:

Linux入门攻坚——12、Linux网络属性配置相关知识2

CentOS 7网络属性配置&#xff1a; 传统命名机制&#xff1a;以太网eth[0,1,2,...]&#xff0c;wlan[0,1,2...] 可预测功能的命名机制&#xff1a; udev支持多种不同的命名方案&#xff1a; Firmware &#xff0c;拓扑结构 在对待设备文件这块&#xff0c;Linux改…...

如何自己实现一个分布式事务

实现分布式事务是一个复杂的过程&#xff0c;它需要精心设计并考虑数据的一致性、系统的可用性和分区容错能力。分布式事务确保在分布式系统中&#xff0c;即使是跨多个数据库、服务或消息队列&#xff0c;事务要么完全成功&#xff0c;要么完全失败。 以下是实现分布式事务的…...

使用Nonebot编写QQ机器人

使用 NoneBot 这个工具&#xff0c;来编写 QQ 机器人。 安装基础软件 一、安装 NoneBot 库 直接使用 pip 安装即可 pip install nonebot二、安装酷Q 软件和 HTTP API 插件 酷Q 软件可以直接到官网下载&#xff0c;https://cqp.cc/b/news&#xff0c;或者可以到网盘下载&am…...

认识SpringBoot中的条件注解

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…...

使用PAI-DSW搭建基于LangChain的检索知识库问答机器人

教程简述 在本教程中&#xff0c;您将学习如何在阿里云交互式建模&#xff08;PAI-DSW&#xff09;中&#xff0c;基于LangChain的检索知识库实现知识问答。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 LangChain是一个开源的框架&#xff0c…...

优雅的通过Shell脚本生成Go的程序包

前言 随着Go语言的普及&#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署&#xff08;CI/CD&#xff09;工具&#xff0c;用于自动化构建、测试和部署Go程序包&#xff0c;但存在一些部署在ECS服务器的Go程序包或需要手动编译…...

益生菌抗癌?补充这种益生菌,抑制肝癌,还改善肠道健康

撰文 | 宋文法 肠道菌群&#xff0c;是人体不可分割的组成部分&#xff0c;生活在我们肠道内的数万亿细菌对健康起着重要作用&#xff0c;它们影响着人的新陈代谢、消化能力、抵御感染、控制人体对药物的反应&#xff0c;甚至还能预防某些癌症。 非酒精性脂肪肝病&#xff0c;是…...

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…...

Linux环境vscode clang-format格式化:vscode clang format command is not available亲测有效!

问题现象 vscode安装了clang-format插件&#xff0c;但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案-亲测有效&#xff01; 确认本地安装了clang-format工具&#xff1a;终端输入clang-format&#xff08;也可能是clang-format-13等版本…...

Vue3前端 响应式数据 知识点

一、ref(基本类型数据&#xff0c;也可以定义对象类型的响应式数据。此时底层用的还是reactive) ref 创建基本类型的响应式数据 作用:定义响应式变量语法: let xxx ref(初始值)返回值: 一个 RefImp1 的实例对象&#xff0c;简称 ref对象或ref&#xff0c;ref 对象的 value 属…...

golang数据库连接池设置多少比较合适,如何设置?

设置数据库连接池的大小需要综合考虑应用程序的需求、数据库系统的性能、服务器资源等因素。连接池大小的不合理设置可能导致性能问题或资源浪费。 以下是一些建议&#xff1a; 考虑应用程序的并发需求&#xff1a; 连接池的大小应该足够满足应用程序的并发需求。如果你的应用…...

一、Mybatis 简介

本章概要 简介持久层框架对比快速入门&#xff08;基于Mybatis3方式&#xff09; 1.1 简介 https://mybatis.org/mybatis-3/zh/index.html MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投G…...

苹果Vision Pro将于1月27日上市!

在无数期待中&#xff0c;苹果全新产品Vision Pro头显终于定下上市日期。 彭博社记者马克古曼&#xff08;Mark Gurman&#xff09;于近日在X&#xff08;前推特&#xff09;平台爆料了这一信息&#xff0c;预计苹果Vision Pro头显将于2024年1月27日率先在美国上市。 在过去看…...

密码学(一)

文章目录 前言一、Cryptographic Primitives二、Cryptographic Keys2.1 Symmetric key cryptography2.2 asymmetric key cryptography 三、Confidentiality3.1 Symmetric key encryption algorithms3.2 asymmetric key block ciphers3.3 其他 四、Integrity4.1 secure hashing …...

VueRouter

1、用户权限问题 可以在路由全局前置守卫判断当前vuex里是否有token 有token值证明刚才登录过, 无token值证明未登录 router.beforeEach((to, from, next) > {const token store.state.tokenif (token) {// 如果有token, 证明已登录if (!store.state.userInfo.username) {/…...

什么是React.FC | 封装ant design弹框组件之:ant design 修改密码弹框组件

文章目录 一、什么是React.FC组件的 props 是什么意思二、封装ant design弹框组件之:ant design 修改密码弹框组件定义修改密码弹框组件使用修改密码弹框组件:[重要]关于提交时候,不同组件 表单数据共享报错:Button cannot be used as a JSX component.一、什么是React.FC …...

DHCP

一、DHCP 1.1 什么是dhcp DHCP动态主机配置协议&#xff0c;通常被应用在大型的局域网络环境中&#xff0c;主要作用是集中地管理、分配IP地址&#xff0c;使网络环境中的主机动态的获得IP地址、DNS服务器地址等信息&#xff0c;并能够提升地址的使用率。 DHCP作为用应用层协…...

VS code的使用介绍

VS code的使用介绍 简介下载和安装常用的插件使用教程快捷键 集成Git未找到 Git。请安装 Git&#xff0c;或在 "git.path" 设置中配置。操作步骤打开文件夹初始化仓库文件版本控制状态提交文件到git打开git操作栏位 好用的插件ChineseDraw.io Integration实体关系 Gi…...

【蓝桥杯选拔赛真题57】python兔子分胡萝卜 第十四届青少年组蓝桥杯python 选拔赛比赛真题解析

目录 python兔子分胡萝卜 一、题目要求 1、编程实现 2、输入输出...

Spring MVC中JSON数据处理方式!!!

添加json依赖 <!--spring-json依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency> 注解 RequestBody&#xff1a;作…...

学习JavaEE的日子 阶段回顾

标识符 含义&#xff1a;给类、变量、方法、接口取名字的时候使用到的字符序列 组成&#xff1a;大小写字母 、数字、$、_、中文 注意事项&#xff1a; 不能以数字开头 区分大小写字母 不能使用除了$和_以外的特殊符号 不能使用Java的关键字 考虑到编码问题不要使用中文 关…...

深入理解 Flink(一)Flink 架构设计原理

大数据分布式计算引擎设计实现剖析 MapReduce MapReduce 执行引擎解析 MapReduce 的组件设计实现图 Spark 执行引擎解析 Spark 相比于 RM 的真正优势的地方在哪里&#xff1a;&#xff08;Simple、Fast、Scalable、Unified&#xff09; DAG 引擎中间计算结果可以进行内存持…...

Python pip 常用指令

前言 Python的pip是一个强大的包管理工具&#xff0c;它可以帮助我们安装、升级和管理Python的第三方库。以下是一些常用的pip指令。 1. 安装第三方库 使用pip安装Python库非常简单&#xff0c;只需要使用pip install命令&#xff0c;后面跟上库的名字即可。 # 安装virtuale…...

Eureka工作原理详解

摘要&#xff1a;本文将详细介绍Eureka的工作原理&#xff0c;包括服务注册、服务发现、心跳检测等关键概念。通过阅读本文&#xff0c;您将了解到Eureka如何实现高可用、可扩展的服务注册中心。 一、引言 在微服务架构中&#xff0c;服务注册与发现是一个重要的环节。为了实…...

开源加解密库之GmSSL

一、简介 GmSSL是由北京大学自主开发的国产商用密码开源库&#xff0c;实现了对国密算法、标准和安全通信协议的全面功能覆盖&#xff0c;支持包括移动端在内的主流操作系统和处理器&#xff0c;支持密码钥匙、密码卡等典型国产密码硬件&#xff0c;提供功能丰富的命令行工具及…...

小程序分销商城,打造高效线上购物体验

小程序商城系统&#xff0c;为您带来前所未有的在线购物体验。它不仅提供线上商城购物、在线下单、支付及配送等功能&#xff0c;还凭借其便捷性成为众多商家的首选。 想象一下&#xff0c;商家可以展示琳琅满目的商品&#xff0c;包括图片、文字描述、价格及库存等详尽信息。而…...

Day2:【英文时评】当我们谈论海克斯科技的时候我们在谈论什么?(未完结)

1111...

Selenium-java 定位元素时切换iFrame时的方法

具体方法如下图所示&#xff0c;如果iFrame中嵌套多层iFrame需要逐层定位到需要的那一层iFrame,完成操作后&#xff0c;执行该代码&#xff1a;driver.switchTo() .defaultContent() ; 是返回最顶部的frame...

WinForms中的UI卡死

WinForms中的UI卡死 WinForms中的UI卡死通常是由于长时间运行的操作阻塞了UI线程所导致的。在UI线程上执行的操作&#xff0c;例如数据访问、计算、文件读写等&#xff0c;如果耗时较长&#xff0c;会使得UI界面失去响应&#xff0c;甚至出现卡死的情况。 解决方法 为了避免…...

Zookeeper设计理念与源码剖析

Zookeeper 架构理解 整体架构 Follower server 可以直接处理读请求&#xff0c;但不能直接处理写请求。写请求只能转发给 leader server 进行处理。最终所有的写请求在 leader server 端串行执行。&#xff08;因为分布式环境下永远无法精确地确认不同服务器不同事件发生的先后…...

dede网站被黑/软文发布推广平台

文章目录创建Python项目创建一个类实例化对象博文配套视频课程&#xff1a;24小时实现从零到AI人工智能 创建Python项目 PyCharm第一次创建Python项目时&#xff0c;因为需要配置Anaconda3目录而Anaconda默认有很多自带的科学库&#xff0c;因此项目创建成功后扫描科学库需要耗…...

网站建设页面带声音/seo搜索优化技术

1.编译安装ipvsadm 首先从LVS官网下载tarball&#xff0c;解压后make && make install即可。 要注意的是LVS的依赖有&#xff1a;popt-static、libnl、kernel。如果yum源里有就直接安装&#xff0c;如果没有就自行下载&#xff0c;但一定要对应上已有软件如popt或Linux…...

海报设计网站官网/南安网站建设

文章转自 http://ju.outofmemory.cn/entry/278349 https://www.jianshu.com/p/102c4df69af9 RequiredDuringSchedulingRequiredDuringExecution &#xff1a;在调度期间要求满足亲和性或者反亲和性规则&#xff0c;如果不能满足规则&#xff0c;则POD不能被调度到对应的主机上…...

新开家政如何做网站/百度公司名称

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

网站推广公司兴田德润/网络推广外包公司干什么的

ruby 变量类中范围Ranges are a sequence of data. For example, numbers 0 through 9 are a range. Letters a through z are a range. We can also define our own range. 范围是数据序列。 例如&#xff0c;数字0到9是一个范围。 字母a到z是一个range 。 我们还可以定义自己…...

网站空间怎么收费/电商网站规划

取决于stl的实现版本&#xff0c;&s[0]不一定是连续的。不强制要求内部实现是怎么做的&#xff0c;不过.c_str()和.data()返回的视图必须是保证连续的&#xff1f;&#xff1f;...