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

Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH

BIND编译安装

对于没有rpm包,需要源代码编译安装。

1、下载源代码:bind-9.12.2-P1.tar.gz,解压:tar -xf bind-9.12.2-P1.tar.gz
2、完善环境:
  1)增加用户组named:groupadd -g 53 named
  2)增加用户named(系统用户):useradd -r -u 53 -g  named named 
3、执行configure:进入加压后的目录,执行
    ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
    make
    make install
4、编译安装后,没有配置文件,即没有named.conf和named.rfc1912.zones等配置文件;没有rndc相关的配置文件;所以需要手工建立。同时相关命令也不能直接调用,相关库文件、头文件、资料文件需要添加到搜索路径中,即导出这些文件:

1)导出二进制命令路径,需要将路径输出到PATH环境变量中:在/etc/profile.d/下建立named.sh文件,内容如下:  export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
然后重读一下文件:. /etc/profile.d/named.sh  ,然后就可以直接调用这些命令了。
  2)导出库文件,其他程序用到这些开发库,如果不导出,也无法使用,即找不到,所以要导出:
在/etc/ld.so.conf.d/下新建named.conf文件,内容是bind的库文件位置:
/usr/local/bind9/lib
然后要通知系统重读此配置文件,生成库文件搜索路径:ldconfig -v
  3)导出头文件:ln -sv /usr/local/bind9/include/ /usr/include/named
  4)导出帮助手册,即man目录,即将安装的man目录加入到搜索路径中,编辑/etc/man.config文件:添加MANPATH路径:

  5)创建bind的配置文件/etc/named/named.conf,因为我们编译安装是配置了配置文件路径是/etc/named。

options {directory "/var/named";    //全局配置只配置这一项就可以运行了,其他采用默认配置
};zone "." IN {type hint;file "named.ca";
};zone "localhost" IN {type master;file "localhost.zone";allow-update { none; };
};zone "0.0.127.in-addr.arpa" IN {type master;file "named.local";allow-update { none; };
};

然后这些库文件也需要我们自己创建:/var/named/named.ca、/var/named/localhost.zone、/var/named/named.local
根节点库文件,可以通过:dig -t NS . @ip获得,这里ip是可以连接互联网的机器:
将结果拷贝到named.ca中:dig -t NS . @192.168.138.2 > /var/named/named.ca
创建解析库文件:/var/named/localhost.zone:

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (20240524011h5m7d1d )IN	NS	localhost.
localhost.	IN	A	127.0.0.1

解析库文件:/var/named/named.local
 

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (20240524011h5m7d1d )IN	NS	localhost.
1	IN	PTR	localhost.

6)修改文件权限:
  /var/named/下的所有文件:chmod 640 ./*   ;  chown :named *
  chmod 640 /etc/named/named.conf   ; chown :named /etc/named/named.conf
5、启动服务,成为缓存名称服务器:
  named -u named -f -g -d 3,运行于前台
  named -u named,运行于后台

启动过程中多次出现某目录或文件权限不够的提示,即permission denied,修改其属组权限后,系统运行正常

6、配置rndc,使用rndc工具时,提示
[root@study610-f2 named]# rndc reload
rndc: neither /etc/named/rndc.conf nor /etc/named/rndc.key was found
使用rndc-confgen产生:

按照提示分别拷贝相关内容到rndc.conf和named.conf中

# 以下为named.conf文件内容
options {directory "/var/named";
};zone "." IN {type hint;file "named.ca";
};zone "localhost" IN {type master;file "localhost.zone";allow-update { none; };
};zone "0.0.127.in-addr.arpa" IN {type master;file "named.local";allow-update { none; };
};zone "mytestcc.com" IN {type master;file "mytestcc.com.zone";allow-update { none; };
};# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {algorithm hmac-sha256;secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};controls {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf# 以下为rndc.conf文件内容
# Start of rndc.conf
key "rndc-key" {algorithm hmac-sha256;secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};options {default-key "rndc-key";default-server 127.0.0.1;default-port 953;
};
# End of rndc.conf

重新启动named进程,即可使用rndc进行管理。

远程登录
登录到主机中,经历了 本地终端——>远程终端——>安全远程终端 几个阶段,最开始,主机提供相应的硬件接口,在此接口上连接VGA和键盘,实现登录主机,即本地终端登录,此时主机不需要额外的进程来处理与终端的通讯,随着网络的发展,出现在远端通过网络登录主机的需求,要实现的是同本地终端类似的功能,因为需要通过网络连接,并且要把网络包内容并在主机上解包并并运行其中的内容,就需要额外进程来负责,分为服务器端和客户端,服务器端实现接收客户端的输入内容,与主机交互将内容交给主机执行,将主机执行结果打包反馈给客户端,客户端要实现模拟本地终端的功能,实现内容输入和接收返回内容的展示,这需要双方遵守相同的规则,即需要终端通信协议,此时交互内容是明文在网络上传递;随着网络安全威胁越来越高,上述交互很容易被窃取,于是要求安全的网络交互,就出现了安全的远程终端,随之也就有安全终端协议。

Telnet

一种不安全的远程终端协议telnet协议的实现,C/S架构,监听端口23/tcp。

telnet的使用:
1)安装:yum install telnet-server

安装后有telnet-server.x86_64 和telnet.x86_64 两个程序包,一个是服务器端程序包,一个是客户端程序包。telnet server是一个独特的服务,工作于基于超级守护进程管理的瞬时守护进程模式。

2)telnet server的启动:
  chkconfig telnet on
  service xinetd restart
查看:

xinetd叫超级守护进程,下面的没有运行级别的,像telnet叫瞬时守护进程。xinetd代瞬时守护进程监听,在有用户访问时,唤醒瞬时守护进程。像telnet进程使用的频度不高,不需要时刻监听。

3)登录,因为telnet是明文传输,禁止使用管理员账户登录,使用普通用户登录:
在windows上:

OpenSSH

ssh:secure shell ,Protocol,即是一种协议。监听在tcp的22号端口,实现安全的远程登录。
OpenSSH:ssh协议的开源实现。dropbear是另一种实现。
Telnet:实现远程登录,但是没有安全保护,早期的远程登录。端口23/tcp

SSH协议版本:
  v1:基于CRC-32做MAC,不安全:易遭到man-in-middle攻击
  v2:双方主机协商选择安全的MAC方式。基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证。

两种方式的用户登录认证:  基于password、基于key
  通过ssh host登录服务器,客户端必须认证一下这台主机是不是就是要连接的那台主机,一般使用密钥对方式验证,客户端用主机的公钥解密主机发送的内容验证通过,即证明是需要的主机。关于客户端中主机的公钥,在第一次登录时,主机会发送这个公钥,在客户端会提醒是否保存这个公钥,就是让客户端使用者确定主机,接受保存后下一次访问,就会直接使用这个公钥。

基于密钥登录:客户端生成密钥对,将公钥发送给远程主机中对应登录用户的家目录下的某个文件中,以后此用户再登录时,主机用此公钥解密客户端的信息,依此来判断客户端的合法性,而不需要输入口令。此公钥是不允许公开的。

具体保存在~/.ssh/known_hosts中。

OpenSSH是C/S架构,客户端(C端)有ssh,(scp,sftp),windows客户端有xshell,putty,securecrt;对于Linux下的ssh客户端,配置文件为/etc/ssh/ssh_config;服务器端(S端):sshd,配置文件为/etc/ssh/sshd_config

客户端工具:ssh命令
  ssh [user]@host [command]:没有user,默认使用linux当前登录用户,指定了user,以指定的特定user登录。
  ssh [ -l user ] host [command]: 
  参数  -p port:远程服务器监听的端口;
           -X :支持X11转发
           -Y:支持信任的x11转发;

  客户端配置文件格式,/etc/ssh/ssh_config
    Host PATTERN
        PARAMETER VALUE

# Host *    # *号代表所有主机
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask    # 第一次登录时,会提示是否接受密钥,设置no不提问
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
Host *GSSAPIAuthentication yes
# If this option is set to yes then remote X11 clients will have full access
# to the original X11 display. As virtually no X11 client supports the untrusted
# mode correctly we set this to yes.ForwardX11Trusted yes
# Send locale-related environment variablesSendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT SendEnv LC_IDENTIFICATION LC_ALL LANGUAGESendEnv XMODIFIERS

基于密钥的认证(不需要密码进行登录):
  (1)在客户端生成密钥对
        ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
  (2) 把公钥传输至远程服务器对应用户的家目录
        ssh-copy-id [ -i [ identity_file] ] [ user@] machine
  (3)登录验证:ssh 
  (4)安全提醒:不要使用root,可以登录后切换至root

实操:
  1)客户端生成密钥对:


  2)把公钥传输至远程服务器端对应用户的家目录

在服务器中查看:

注意,authorized_keys文件的权限为:-rw-------,即600,这是为了确保安全。
  3)测试:

结果直接登录,没有提示输入密码。

scp命令
  scp [options]  SRC ...  DEST/
  存在两种情形:
    PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
    把远程文件拉到本地来,以哪个用户登录到哪台远程主机上去拉文件,即远程主机的用户
    PUSH:scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
    把本地文件推送给(复制给)远程主机。也是远程主机用户。
    常用选项:
        -r :递归复制
        -p :保持源文件的属性信息
        -q :静默模式
        -P PORT:指明remote host的监听的端口;

scp也基于ssh,因为在上一步设置了基于密钥的认证,所以复制过程也不需要输入密码。

sftp命令
  sftp [user@]host
同scp,也是基于ssh

服务器端:sshd
  配置文件/etc/ssh/sshd_config

#	$OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
# 以#加空格开头的是注释,以#开头后无空格的是配置项,去掉#就是配置#Port 22    # sshd服务监听的端口,默认22
#AddressFamily any  # IP家族,any表示IPv4和IPv6
#ListenAddress 0.0.0.0  # 监听本机所有IPv4地址
#ListenAddress ::# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2    # 使用协议的哪个版本# Centos6上sshd的配置
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key# 在7.x版本,即centos7上,配置如下
#HostKey /etc/ssh/ssh_host_rsa_key
##HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key    # 在用户登录时发送给用户的公钥,即保存在客户端用户家目录.ssh下know_hosts中的公钥
#HostKey /etc/ssh/ssh_host_ed25519_key# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h    # 对称密钥重新生成时间间隔
#ServerKeyBits 1024# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV  # 日志使用AUTHPRIV,保存在/var/log/secure
#LogLevel INFO# Authentication:#LoginGraceTime 2m      # 登录的宽限时间(等待输入用户密码时间)
#PermitRootLogin yes    # 是否允许root直接登录,默认是可以的
#StrictModes yes        # 是否严格检查格式
#MaxAuthTries 6         # 最大认证重试次数
#MaxSessions 10         # 最大会话数#RSAAuthentication yes  
#PubkeyAuthentication yes
#AuthorizedKeysFile	.ssh/authorized_keys   # 客户端采用密钥认证时,客户端的公钥在服务器端的保存位置
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes  # 允许基于口令认证方式登录# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no    # Kerberos options   # 实现第三方统一认证的一种认证方式
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes# GSSAPI options 
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no# Set this to 'yes' to enable PAM authentication, account processing, 
# and session processing. If this is enabled, PAM authentication will 
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes       # 允许客户端调用服务器端的图形程序
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes        # DNS的反向解析功能,默认是开启的,一般设为no,否则,客户端登录时会发生被卡住一会的现象
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none# no default banner path
#Banner none# override default of no subsystems
Subsystem	sftp	/usr/libexec/openssh/sftp-server    # 支持sftp# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	ForceCommand cvs server

在ssh命令中使用 -X选项支持X11转发或-Y选项支持信任的x11转发

ssh服务的最佳实践
  1、不要使用默认端口;
  2、禁止使用Protocol version 1;
  3、限制可登录用户:配置文件中AllowUsers和AllowGroups,白名单;
   实操: 添加两个用户:gentoo和centos,在没配置白名单前都能登录:

在服务器的配置文件/etc/ssh/sshd_config的最后添加:AllowUsers root centos
然后重载服务:service sshd restart
再次测试登录,centos可以登录,但是gentoo无法登录:

  也可以使用黑名单:DenyUsers
  4、设定空闲会话超时时长;
  5、利用防火墙设置ssh访问策略;
  6、仅监听特定的IP地址;
  7、基于口令认证时,使用强密码策略;
        随机密码:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
  8、使用基于密钥的认证;
  9、禁止使用空密码;
  10、禁止root用户直接登录;
  11、限制ssh的访问频度和并发在线数;
  12、做好日志,经常分析;

ssh协议的另一个实现:dropbear
  1)安装:yum install dropbear
  2)生成密钥对,启动服务:        
        dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
        dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
        dropbear -p [ip:]port -F -E

连接测试:

  3)可以作为客户端连接其他远程主机,工具是dbclient
    dbclient root@host

OpenSSL-重温
  三个组件:
  openssl:多用途的命令行工具;
  libcrypto:加密解密库;
  libssl:ssl协议的实现

PKI:Public Key Instructure,公钥基础设施
  CA、RA、CRL、证书存取库

建立私有CA(一个组织内部使用):两种方式
  OpenCA和 openssl,OpenCA比较专业,使用也比较复杂;openssl简单易用

证书申请及签署步骤:
  1)生成申请请求;
  2)RA核验;
  3)CA签署;
  4)获取证书;

创建私有CA:
  openssl的配置文件:/etc/pki/tls/openssl.cnf  

安装上面配置信息创建对应的文件、目录
  1)创建所需文件,在/etc/pki/CA目录下
    # touch index.txt
    # echo 01 > serial
    确保certs 、crl、 newcerts、 private子目录存在
  2)CA自签证书,要想生存证书,要有密钥对
# (umask 077;openssl genrsa -out private/cakey.pem 2048)   # 生成私钥,-out与配置文件一致
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650  -out /etc/pki/CA/cacert.pem     # 自签证书生成
    -new:生成新证书签署请求
    -x509:专用于cA生成自签证书
    -key:生成请求时用到的私钥文件,证书需要公钥,通过私钥自动生成
    -days:证书有效期限
    -out:证书的保存路径,与配置文件中的配置保持一致
这个文件发送给需要使用证书的客户机,导入到信任的根证书颁发机构中。
  3)发证
    (a)用到证书的主机生成证书请求
      生成私钥、利用私钥生成证书签署请求文件
    (b)把证书签署请求文件传输给CA
    (c)CA签署证书,并将证书发还给用户
    (d)查看证书中的信息:
        openssl x509 in /PATH/FROM/CERT_FILE -noout -text| -subject | -serial
    (e)吊销证书:
        <1>获取要吊销的证书的serial
        <2>CA先根据客户提交的serial与subject,对比检验是否与index.txt中信息一致;
        吊销证书:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
        生成吊销证书的编号(第一次吊销一个证书时):echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表:openssl ca -gencrl -out thisca.crl
        查看crl文件:openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
实操:
  a)、 (umask 077; openssl genrsa -out httpd.key 2048)  # 生成私钥

  openssl req -new -key httpd.key -days 365 -out httpd.csr  # 生成证书签署请求文件

  b)、发送此请求文件至CA:
  scp httpd.csr root@192.168.138.139:/tmp

  c)、CA签发证书
  openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
出现错误:

原因分析:在前面安装python时,对openssl进行了编译安装,所以现在的openssl使用的是编译安装后的高版本,其配置文件使用的是/usr/local/openssl/ssl目录下的openssl.cnf
错误排除:修改/usr/local/openssl/ssl/openssl.cnf配置文件,将其中的dir = ./demoCA,修改为dir=/etc/pki/CA应该就可以了。排查前面的操作,除了这个配置文件,其他都是在/etc/pki/CA目录下,所以openssl的配置文件只修改ca的目录配置即可。

再次签发:

证书签发成功。

生成的证书应该保存在/etc/pki/CA/certs下。

d)客户端取回证书:scp /tmp/httpd.crt root@192.168.138.138:/tmp

e)查看证书信息:

f)吊销证书:

至此,证书签发完毕。

相关文章:

Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH

BIND编译安装 对于没有rpm包&#xff0c;需要源代码编译安装。 1、下载源代码&#xff1a;bind-9.12.2-P1.tar.gz&#xff0c;解压&#xff1a;tar -xf bind-9.12.2-P1.tar.gz 2、完善环境&#xff1a; 1&#xff09;增加用户组named&#xff1a;groupadd -g 53 named 2&…...

1.5.3 基于Java配置方式使用Spring MVC

本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式&#xff0c;Java配置方式提供了一种更为简洁和灵活的配置方法。 项目创建与配置 创建一个Jakarta EE项目&#xff0c;并设置项目名称和位置。选择Jakarta EE 10版本&#xff0c;不添加依赖&a…...

Artifactory清理二进制文件丢失的制品

一、摘要 当制品上传到 Artifactory 时&#xff0c;Artifactory 会在数据库中记录制品的相关元数据信息&#xff0c;包括文件路径、大小、校验和&#xff08;如 MD5、SHA1&#xff09;、上传时间、索引、依赖等。实际的制品二进制文件会存储在指定的存储后端&#xff0c;具体的…...

C#中的数组探索

在C#编程语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储固定大小的同类型元素序列。本文将深入探讨C#数组的各个方面&#xff0c;包括定义、赋值、范围操作、切片、多维数组&#xff08;矩形与锯齿形&#xff09;、简化初始化表达式以及边界检查。 数组定义…...

身份认证与口令攻击

身份认证与口令攻击 身份认证身份认证的五种方式口令认证静态口令动态口令(一次性口令)动态口令分类 密码学认证一次性口令认证S/KEY协议改进的S/KEY协议 其于共享密钥的认证 口令行为规律和口令猜测口令规律口令猜测 口令破解操作系统口令破解Windows密码存储机制Windows密码破…...

卷积网络迁移学习:实现思想与TensorFlow实践

摘要&#xff1a;迁移学习是一种利用已有知识来改善新任务学习性能的方法。 在深度学习中&#xff0c;迁移学习通过迁移卷积网络&#xff08;CNN&#xff09;的预训练权重&#xff0c;实现了在新领域或任务上的高效学习。 下面我将详细介绍迁移学习的概念、实现思想&#xff0c…...

Ansible04-Ansible Vars变量详解

目录 写在前面6 Ansible Vars 变量6.1 playbook中的变量6.1.1 playbook中定义变量的格式6.1.2 举例6.1.3 小tip 6.2 共有变量6.2.1 变量文件6.2.1.1 变量文件编写6.2.1.2 playbook编写6.2.1.3 运行测试 6.2.2 根据主机组使用变量6.2.2.1 groups_vars编写6.2.2.2 playbook编写6.…...

Flutter 中的 SliverCrossAxisGroup 小部件:全面指南

Flutter 中的 SliverCrossAxisGroup 小部件&#xff1a;全面指南 Flutter 是一个功能丰富的 UI 开发框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;SliverCrossAxisGroup 是一个较少被使用的组…...

开源还是闭源这是一个问题

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

数据结构与算法笔记:基础篇 - 栈:如何实现浏览器的前进和后退功能?

概述 浏览器的前进、后退功能&#xff0c;你肯定很熟悉吧&#xff1f; 当依次访问完一串页面 a-b-c 之后&#xff0c;点击浏览器的后退按钮&#xff0c;就可以查看之前浏览过的页面 b 和 a。当后退到页面 a&#xff0c;点击前进按钮&#xff0c;就可以重新查看页面 b 和 c。但…...

【AIGC】大型语言模型在人工智能规划领域模型生成中的探索

大型语言模型在人工智能规划领域模型生成中的新应用 一、引言二、LLM在规划领域模型生成中的潜力三、实证分析&#xff1a;LLM在规划领域模型生成中的表现四、代码实例&#xff1a;LLM在规划领域模型生成中的应用五、结论与展望 一、引言 随着人工智能技术的迅猛发展&#xff0…...

从零开始学习Slam-旋转矩阵旋转向量四元组(二)

本文参考&#xff1a;计算机视觉life 仅作笔记用 书接上回&#xff0c;上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点&#xff1a; 本着绕谁谁不变的变则 假设绕z轴旋转θ&#xff0c;旋转矩阵为&#xff1a; 再回顾一下旋转向量的表示以及这个基本记不…...

基于Spring Security添加流控

基于Spring Security添加流控的过程&#xff1a; 步骤1: 添加依赖 确保项目中包含了Spring Security和Sentinel-Core的相关依赖。在Maven项目中&#xff0c;可以在pom.xml中添加如下依赖&#xff1a; <!-- Spring Security --> <dependency><groupId>org.…...

Python | Leetcode Python题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; class Solution:def getRow(self, rowIndex: int) -> List[int]:row [1, 1]if rowIndex < 1:return row[:rowIndex 1]elif rowIndex > 2:for i in range(rowIndex - 1):row [row[j] row[j 1] for j in range(i 1)]row.inser…...

物联网应用系统与网关

一. 传感器底板相关设计 1. 传感器设计 立创EDA传感器设计举例。 2. 传感器实物图 3. 传感器测试举例 测试激光测距传感器 二. 网关相关设计 1. LORA&#xff0c;NBIOT等设计 2. LORA&#xff0c;NBIOT等实物图 3. ZigBee测试 ZigBee测试 4. NBIoT测试 NBIoT自制模块的测试…...

系统稳定性概览

系统稳定性 系统稳定性&#xff0c;包括&#xff1a;监控、 告警、性能优化、慢sql、耗时接口等。 系统的稳定性的治理&#xff0c;可以围绕这几方面展开。 监控 Prometheus 监控并收集数据。监控 qps&#xff0c;tps&#xff0c; rt , cpu使用率&#xff0c;cpu load&#…...

Redis-Cluster模式基操篇

一、场景 1、搞一套6个主节点的Cluster集群 2、模拟数据正常读写 3、模拟单点故障 4、在不停服务的情况下将集群架构改为3主3从 二、环境规划 6台独立的服务器&#xff0c;端口18001~18006 192.169.14.121 192.169.14.122 192.169.14.123 192.169.14.124 192.169.14.125 192…...

Golang | Leetcode Golang题解之第113题路径总和II

题目&#xff1a; 题解&#xff1a; type pair struct {node *TreeNodeleft int }func pathSum(root *TreeNode, targetSum int) (ans [][]int) {if root nil {return}parent : map[*TreeNode]*TreeNode{}getPath : func(node *TreeNode) (path []int) {for ; node ! nil; no…...

云计算与 openstack

文章目录 一、 虚拟化二、云计算2.1 IT系统架构的发展2.2 云计算2.3 云计算的服务类型 三、Openstack3.1 OpenStack核心组件 一、 虚拟化 虚拟化使得在一台物理的服务器上可以跑多台虚拟机&#xff0c;虚拟机共享物理机的 CPU、内存、IO 硬件资源&#xff0c;但逻辑上虚拟机之…...

golang语言的gofly快速开发框架如何设置多样的主题说明

本节教大家如何用gofly快速开发框架后台内置设置参数&#xff0c;配置出合适项目的布局及样式、主题色&#xff0c;让你您的项目在交互上加分&#xff0c;也是能帮你在交付项目时更容易得到客户认可&#xff0c;你的软件使用客户他们一般都是不都技术的&#xff0c;所以当他们拿…...

lynis安全漏洞扫描工具

Lynis是一款Unix系统的安全审计以及加固工具&#xff0c;能够进行深层次的安全扫描&#xff0c;其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息&#xff0c;脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…...

C++ 多重继承的内存布局和指针偏移

在 C 程序里&#xff0c;在有多重继承的类里面。指向派生类对象的基类指针&#xff0c;其实是指向了派生类对象里面&#xff0c;该基类对象的起始位置&#xff0c;该位置相对于派生类对象可能有偏移。偏移的大小&#xff0c;等于派生类的继承顺序表里面&#xff0c;排在该类前面…...

centos时间不对

检查当前时区是否正确 timedatectl status如果时区不正确&#xff0c;使用以下命令设置正确的时区&#xff08;将Asia/Shanghai替换为您所在的时区&#xff09;&#xff1a; timedatectl set-timezone Asia/Shanghai如果时区正确但时间不准确&#xff0c;使用以下命令同步网络…...

通过Redis实现防止接口重复提交功能

本功能是在切面执行链基础上实现的功能&#xff0c;如果不知道切面执行链的同学&#xff0c;请看一下我之前专门介绍切面执行链的文章。 在SpringBoot项目中实现切面执行链功能-CSDN博客 1.定义防重复提交handler /*** 重复提交handler**/ AspectHandlerOrder public class …...

如何构建最小堆?

方式1&#xff1a;上浮调整 /*** 上浮调整(小的上浮)*/ public static void smallUp1(int[] arr, int child) {int parent (child - 1) / 2;while (0 < child && arr[child] < arr[parent]) { // 0 < child说明这个节点还是叶子arr[child] arr[child] ^ ar…...

基于Netty实现安全认证的WebSocket(wss)客户端

1.Netty服务端 服务端代码参考【基于Netty实现安全认证的WebSocket&#xff08;wss&#xff09;服务端-CSDN博客】 2.Netty客户端 客户端代码参考【基于Netty实现WebSocket客户端-CSDN博客】中两种都可以&#xff1b;这里用的是第一种。 新增SslHandler的代码&#xff1a; …...

代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集

01背包问题 二维 代码随想录 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;| 关于背包问题&#xff0c;你不清楚的地方&#xff0c;这里都讲了&#xff01;| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 1.dp数组定义 dp[i][j] 下标为[0,i]之间的物品&…...

redis常见使用场景

文章目录 redis常见使用场景全局ID位统计购物车用户消息时间线timeline抽奖商品筛选分布式锁限流redis实现计数器排行榜消息队列redis 如何实现延时队列 redis生产常用的场景 redis常见使用场景 Redis 是一种高性能的内存数据库&#xff0c;广泛应用于各种场景中。以下是 Redi…...

模糊C均值(FCM)算法更新公式推导

模糊C均值&#xff08;FCM&#xff09;算法更新公式推导 目标函数 FCM的目标函数为&#xff1a; J m ∑ i 1 n ∑ j 1 k u i j m ∥ x i − c j ∥ 2 J_m \sum_{i1}^n \sum_{j1}^k u_{ij}^m \|x_i - c_j\|^2 Jm​i1∑n​j1∑k​uijm​∥xi​−cj​∥2 其中&#xff1a; …...

金融创新浪潮下的拆分盘投资探索

随着数字化时代的步伐加速&#xff0c;金融领域正经历着前所未有的变革。在众多金融创新中&#xff0c;拆分盘作为一种新兴的投资模式&#xff0c;以其独特的增长机制&#xff0c;吸引了投资者的广泛关注。本文将对拆分盘的投资逻辑进行深入剖析&#xff0c;并结合具体案例&…...