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包,需要源代码编译安装。 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&…...

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

Artifactory清理二进制文件丢失的制品
一、摘要 当制品上传到 Artifactory 时,Artifactory 会在数据库中记录制品的相关元数据信息,包括文件路径、大小、校验和(如 MD5、SHA1)、上传时间、索引、依赖等。实际的制品二进制文件会存储在指定的存储后端,具体的…...
C#中的数组探索
在C#编程语言中,数组是一种基本的数据结构,用于存储固定大小的同类型元素序列。本文将深入探讨C#数组的各个方面,包括定义、赋值、范围操作、切片、多维数组(矩形与锯齿形)、简化初始化表达式以及边界检查。 数组定义…...

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

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

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 小部件:全面指南 Flutter 是一个功能丰富的 UI 开发框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverCrossAxisGroup 是一个较少被使用的组…...
开源还是闭源这是一个问题
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

数据结构与算法笔记:基础篇 - 栈:如何实现浏览器的前进和后退功能?
概述 浏览器的前进、后退功能,你肯定很熟悉吧? 当依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a。当后退到页面 a,点击前进按钮,就可以重新查看页面 b 和 c。但…...

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

从零开始学习Slam-旋转矩阵旋转向量四元组(二)
本文参考:计算机视觉life 仅作笔记用 书接上回,上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点: 本着绕谁谁不变的变则 假设绕z轴旋转θ,旋转矩阵为: 再回顾一下旋转向量的表示以及这个基本记不…...
基于Spring Security添加流控
基于Spring Security添加流控的过程: 步骤1: 添加依赖 确保项目中包含了Spring Security和Sentinel-Core的相关依赖。在Maven项目中,可以在pom.xml中添加如下依赖: <!-- Spring Security --> <dependency><groupId>org.…...

Python | Leetcode Python题解之第119题杨辉三角II
题目: 题解: 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,NBIOT等设计 2. LORA,NBIOT等实物图 3. ZigBee测试 ZigBee测试 4. NBIoT测试 NBIoT自制模块的测试…...
系统稳定性概览
系统稳定性 系统稳定性,包括:监控、 告警、性能优化、慢sql、耗时接口等。 系统的稳定性的治理,可以围绕这几方面展开。 监控 Prometheus 监控并收集数据。监控 qps,tps, rt , cpu使用率,cpu load&#…...

Redis-Cluster模式基操篇
一、场景 1、搞一套6个主节点的Cluster集群 2、模拟数据正常读写 3、模拟单点故障 4、在不停服务的情况下将集群架构改为3主3从 二、环境规划 6台独立的服务器,端口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
题目: 题解: 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核心组件 一、 虚拟化 虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之…...

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

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
使用 uv 工具快速部署并管理 vLLM 推理环境
uv:现代 Python 项目管理的高效助手 uv:Rust 驱动的 Python 包管理新时代 在部署大语言模型(LLM)推理服务时,vLLM 是一个备受关注的方案,具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...
day51 python CBAM注意力
目录 一、CBAM 模块简介 二、CBAM 模块的实现 (一)通道注意力模块 (二)空间注意力模块 (三)CBAM 模块的组合 三、CBAM 模块的特性 四、CBAM 模块在 CNN 中的应用 一、CBAM 模块简介 在之前的探索中…...

多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...

vue3 手动封装城市三级联动
要做的功能 示意图是这样的,因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...

如何使用CodeRider插件在IDEA中生成代码
一、环境搭建与插件安装 1.1 环境准备 名称要求说明操作系统Windows 11JetBrains IDEIntelliJ IDEA 2025.1.1.1 (Community Edition)硬件配置推荐16GB内存50GB磁盘空间 1.2 插件安装流程 步骤1:市场安装 打开IDEA,进入File → Settings → Plugins搜…...