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

就业班 2401--3.11 Linux Day15--ftp数据传输测试server和client+谷歌验证码登录远程连接

文件服务器

路漫漫其修远兮,吾将上下而求索.

构建NFS远程共享存储

一、NFS介绍

文件系统级别共享(是NAS存储) ---------  已经做好了格式化,可以直接用。 速度慢比如:nfs,samba
=====================================================
NFS 
NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在 Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS 共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。
​
#NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。
因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。
​
那RPC和NFS之间又是如何之间相互通讯的?
​
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。
实验环境准备两台机器
支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.246.160
客户端:web1 192.168.246.161
centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
#systemctl stop firewalld
#systemctl disable firewalld    
#setenforce 0

二、实战

NFS-server操作
[root@nfs-server ~]# yum -y install rpcbind  #安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils #安装nfs服务。
启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html  #制作test文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件
/nfs-dir        192.168.246.0/24(rw,no_root_squash,sync)
​
可选参数注释:
ro:只读
rw:读写
*:表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。

[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #制作开机启动
web1  客户端操作
[root@web1 ~]# yum -y install rpcbind
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# mkdir /qf #创建挂载点
[root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir /qf  #挂载
-t:指定文件系统类型
[root@web1 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
192.168.246.160:/nfs-dir nfs4       17G  1.4G   16G   8% /qf
[root@web1 ~]# ls /qf
index.html
[root@web1 ~]# umount /qf  #取消挂载
​
​
制作开机挂载
[root@client.qfedu.com ~]# vim /etc/fstab
192.168.246.160:/nfs-dir    /qf          nfs     defaults        0 0
[root@client.qfedu.com ~]# mount -a

ftp及lftp

  • 文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载、删除文件。FTP服务器端可以同时提供给多人共享使用。

  • FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

FTP Server
作用:提供文件共享服务,实现上传下载
端口:
21号,建立tcp连接  默认端口
20号:传输数据

一、FTP基础

软件包:        vsftpd
FTP端口:       控制端口:21/tcp 
配置文件:       /etc/vsftpd/vsftpd.conf
1. ftp主动模式
ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
​
21端口建立连接
20端口传输数据
2. ftp被动模式
ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据

二、Vsftp 服务器简介

  • 非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。

三、vsftpd配置

1. 安装vsftpd[ftp服务端]
FTP Server(服务端)
实验环境--准备两台机器
关闭防火墙和selinux
#systemctl stop firewalld
#systemctl disable firewalld    
#setenforce 0
=========================================
ftp-server 192.168.246.160
client 192.168.246.161
==========================================
[root@ftp-server ~]# yum install -y vsftpd
[root@ftp-server ~]# systemctl start vsftpd
[root@ftp-server ~]# systemctl enable vsftpd
#FTP默认共享目录:/var/ftp
[root@localhost ~]# mkdir /var/ftp/upload  #创建自己的共享目录
[root@ftp-server ~]# touch /var/ftp/upload/test.txt  #创建文件到共享目录
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub upload
[root@ftp-server ftp]# chown ftp.ftp * -R  #修改根目录的属主与属组
[root@ftp-server ftp]# ll 
total 0
drwxr-xr-x. 2 ftp ftp 22 Aug  3 03:15 pub
drwxr-xr-x. 2 ftp ftp 22 Aug 27 03:15 upload
  • 重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而默认的属主属组是root。

  • 注意:

- 修改完配置之后需要重启完服务才能生效
- 还需要从新从客户端登陆,否则修改后的配置看不到效果。
2. 编辑配置文件
[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf ----找到29行将下面的注释取消
30 anon_umask=022  #添加匿名用户上传下载目录权限掩码
34 anon_other_write_enable=YES

[root@ftp-server ~]# systemctl restart vsftpd
FTP Clinet(客户端)
关闭防火墙和selinux
[root@client ~]# yum -y install lftp #安装客户端
get命令(下载,首先要开启下载功能)
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
drwxr-xr-x    2 14       50              6 Oct 30  2018 upload
lftp 192.168.246.160:/> cd upload/
lftp 192.168.246.160:/upload> ls
-rw-r--r--    1 14       50              0 Aug 02 19:14 test.txt
lftp 192.168.246.160:/upload> get test.txt   #下载
lftp 192.168.246.160:/upload> exit
[root@client ~]# ls  #会下载到当前目录
anaconda-ks.cfg  test.txt
​
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:/upload> mkdir dir  #也可以创建目录
mkdir ok, `dir' created
​
put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)
[root@client ~]# touch a.txt  #创建测试文件
[root@client ~]# mkdir /test/  #创建测试目录
[root@client ~]# touch /test/b.txt #在测试目录下面创建测试文件
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> cd upload/
lftp 192.168.246.160:/upload> put /root/a.txt  #上传文件
lftp 192.168.246.160:/upload> ls
-rw-------    1 14       50              0 Nov 16 12:14 a.txt
drwx------    2 14       50              6 Aug 02 19:17 dir
lftp 192.168.246.160:/upload> mirror -R /root/test/  #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
lftp 192.168.246.160:/upload> ls
drwx------    2 14       50             23 Nov 16 12:18 test
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt
​
lftp 192.168.246.160:/upload> mirror test/  #下载目录
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
lftp 192.168.246.160:/upload> exit
[root@cllient ~]# ls
anaconda-ks.cfg  a.txt  test
[root@client ~]# cd test/
[root@client test]# ls
b.txt
3. ftp配置本地用户登录

创建测试用户

创建 zhangsan、lisi  密码都设置为 “123456”

[root@ftp-server ~]# useradd zhangsan 
[root@ftp-server ~]# useradd lisi
[root@ftp-server ~]# echo '123456' | passwd --stdin  zhangsan  #设置密码
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
[root@ftp-server ~]# echo '123456' | passwd --stdin  lisi 
Changing password for user lisi.
passwd: all authentication tokens updated successfully.

配置本地用户ftp配置文件

[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf  ---添加注释并修改 
anonymous_enable=NO           #将允许匿名登录关闭
#anon_umask=022                #匿名用户所上传文件的权限掩码 
#anon_upload_enable=YES        #允许匿名用户上传文件
#anon_mkdir_write_enable=YES   #允许匿名用户创建目录
#anon_other_write_enable=YES    #是否允许匿名用户有其他写入权(改名,删除,覆盖)
103 chroot_list_enable=YES     #启用限制登陆用户在主目录里面
104 # (default follows)
105 chroot_list_file=/etc/vsftpd/chroot_list  #限制登陆的用户在这个文件列表中,一行一个用户
106 allow_writeable_chroot=YES  #允许限制的用户对目录有写权限
新添加
local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制

重启vsftpd

[root@ftp-server ~]# vim /etc/vsftpd/chroot_list
zhangsan
[root@ftp-server ~]# systemctl restart vsftpd

四、客户端操作

[root@ftp-client ~]# lftp 192.168.153.137 -u zhangsan
Password: 
lftp zhangsan@192.168.153.137:~> ls
lftp zhangsan@192.168.153.137:~> mkdir aaa
mkdir ok, `aaa' created
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
lftp zhangsan@192.168.153.137:~> put /root/test.txt 
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
-rw-r--r--    1 1000     1000            0 Aug 02 20:59 test.txt
​
服务器端查看
[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ls
aaa  test.txt
[root@ftp-server zhangsan]# ll
total 0
drwxr-xr-x. 2 zhangsan zhangsan 6 Aug  3 04:55 aaa
-rw-r--r--. 1 zhangsan zhangsan 0 Aug  3 04:59 test.txt

Linux禁止root用户远程登陆

认识sshd_congfig配置文件
[root@testpm ~]# vim /etc/ssh/sshd_config
​
#Port 22  #监听端口,默认监听22端口   【默认可修改】
#AddressFamily any  #IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址  【默认可修改】
#ListenAddress ::  #指明监听的IPV6的所有地址格式
​
#LogLevel INFO    #日志记录级别,默认为info
#LoginGraceTime 2m   #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
#PermitRootLogin yes #是否允许管理员直接登录,'yes'表示允许,实际生产中建议修改为no
#MaxAuthTries 6  #最大认证尝试次数,最多可以尝试6次输入密码超过之后断开连接
#MaxSessions 10  #最大允许保持多少个连接。默认值是 10
​
#PubkeyAuthentication yes  #是否开启公钥验证
禁止root用户远程登录
[root@testpm ~]# vim /etc/ssh/sshd_config
37 #LoginGraceTime 2m
38 #PermitRootLogin yes  #默认为允许root用户远程登陆
39 #StrictModes yes
进行修改如下
[root@testpm ~]# vim /etc/ssh/sshd_config
37 #LoginGraceTime 2m
38 PermitRootLogin no #将注释打开并将yes修改为no
39 #StrictModes yes
保存退出并重启sshd服务
[root@testpm ~]# systemctl restart sshd

谷歌验证登录

配置本地yum源

[root@localhost ~]# yum install -y git automake libtool pam-devel bzip2 wget vim ntpdate
校对时间(时间一定要对,不然会出大问题)
#修改时区
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
#校对时间
[root@localhost ~]# ntpdate time.windows.com

下载工具包

[root@localhost ~]# wget http://repository.timesys.com/buildsources/l/libpam-google-authenticator/libpam-google-authenticator-1.0/libpam-google-authenticator-1.0-source.tar.bz2

解压

[root@localhost ~]# tar -xjvf libpam-google-authenticator-1.0-source.tar.bz2

编译安装

[root@localhost ~]# cd libpam-google-authenticator-1.0
[root@localhost ~]# make && make install

修改ssh服务的配置

[root@localhost ~]# echo "auth required pam_google_authenticator.so" >> /etc/pam.d/sshd
#修改sshd配置文件
[root@localhost ~]# vim /etc/ssh/sshd_config
这个是文件自己有的不需要自己添加ChallengeResponseAuthentication yes
#重启sshd服务
[root@localhost ~]# systemctl restart sshd

使用令牌工具生成登录密钥

[root@localhost ~]# google-authenticator
google-authenticator 
​
Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@localhost.localdomain%3Fsecret%3DWLJCY4JSNGQNH454                                                                           
Your new secret key is: WLJCY4JSNGQNH454
Your verification code is 635811
Your emergency scratch codes are:1826391256060832395718222056963990543013
​
Do you want me to update your "/root/.google_authenticator" file (y/n) y
​
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
​
By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y
​
If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) n

使用动态码登录服务器(WindTerm不行,finalshell可以)

然后重新登陆即可,需要下载一个谷歌验证器(app),就有验证码!!!!!

补充

(ftp和http)区别

FTP(File Transfer Protocol,文件传输协议)和HTTP(Hypertext Transfer Protocol,超文本传输协议)是两种在计算机网络中常用的协议,它们的主要区别体现在以下几个方面:

  1. 定义和用途:FTP主要被用于文件传输,特别是在两台计算机之间互相传送文件。无论是上传文件还是下载文件,FTP都是非常适用的协议。而HTTP则主要是为网页浏览设计的,它用于从服务器读取Web页面内容,使得用户可以通过浏览器浏览和交互网页。
  2. 运作方式:FTP使用两个TCP连接,一个是命令链路,用于在FTP客户端与服务器之间传递命令;另一个是数据链路,用于上传或下载数据。而HTTP协议则是基于请求/响应范式的,通常是在用户代理和源服务器之间通过一个单独的连接来完成。
  3. 时效性和连接方式:FTP具有较高的延时,并且可能需要执行冗长的登录进程。相比之下,HTTP的连接是实时的,即使存在延时,也是非常细微的差距。
  4. 安全性:FTP在传输文件时并不提供加密功能,因此传输的数据可能会被第三方截获。而HTTP虽然本身也不提供加密,但可以通过HTTPS(HTTP Secure)协议实现加密传输,确保数据的安全性。
  5. 控制信息的传送方式:FTP的控制信息是带外(out-of-band)传送的,即控制信息和数据信息的传输是分开的。而HTTP的控制信息是带内(in-band)传送的,即在同一个TCP连接中既发送请求和响应首部行,也传输实际的数据。
  6. 状态管理:FTP服务器在整个会话期间需要保留用户的状态信息,而HTTP是无状态的,每个请求都是独立的。

综上所述,FTP和HTTP各有其特点和适用场景,用户应根据具体需求选择适当的协议。FTP适用于大量数据的传输和文件管理,而HTTP则更适合用于浏览和交互式的Web应用。

 

绿色的还是关闭的,大概率是个工具,是正常的!

showmount -e 1912.42.45.11

看有没有可以挂载的nfs

showmount -a 刷新配置

放到后台,跳过这个选项,确保客户端正常运行。

相关文章:

就业班 2401--3.11 Linux Day15--ftp数据传输测试server和client+谷歌验证码登录远程连接

文件服务器 路漫漫其修远兮,吾将上下而求索.构建NFS远程共享存储 一、NFS介绍 文件系统级别共享(是NAS存储) --------- 已经做好了格式化,可以直接用。 速度慢比如:nfs,sambaNFS NFS:Networ…...

有点NB的免费wordpress主题模板

一个不错的黄色模板,用WP免费主题模板搭建家政服务公司网站。 https://www.wpniu.com/themes/15.html...

安全防御第七次作业

拓扑图如图所示: 问题:在FW7和FW8之间建立一条IPSEC通道保证10.0.2.0/24网段 可以正常访问到192.168.1.0/24 注:基础配置我在此省略了 一、NAT配置 FW4: FW6: 二、在FW4上做服务器映射 三、配置IPSEC FW5&#xff…...

解决跨域问题的FastAPI应用及常见报错解析

介绍: 跨域问题在前后端分离的Web应用中经常会遇到。FastAPI作为一个快速、现代化的Python Web框架,在处理跨域问题上也提供了一些解决方案。本文将介绍如何使用FastAPI来解决跨域问题,并分析一些常见的报错及解决方法。 正文: …...

NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

By Toradex秦海 1). 简介 NXP i.MX8 系列处理器均为异构多核架构 SoC,除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心,还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心,本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-…...

2步破解官方sublime4

sublime简要破解流程 1.下载sublime官方最新版2. 破解流程 1.下载sublime官方最新版 打开 官方网站下载 portable version 版,省的安装。。解压到任意位置,备份 sublime_text.exe 文件 2. 破解流程 打开网址把文件 sublime_text.exe 拖入网页搜索替换…...

【智能家居】东胜物联ODM定制ZigBee网关,助力能源管理解决方案商,提升市场占有率

背景 本文案例服务的客户是专业从事智能家居能源管理的解决方案商,其产品与服务旨在帮助用户监测、管理和优化能源消耗,以提高能源使用效率。 随着公司的扩张,为了增加市场占有率,他们希望找到更好的硬件服务支持,以…...

Python爬虫实战第三例【三】【上】

零.实现目标 爬取视频网站视频 视频网站你们随意,在这里我选择飞某速(狗头保命)。 例如,作者上半年看过的“铃芽之旅”,突然想看了,但是在正版网站看要VIP,在盗版网站看又太卡了,…...

解释器模式

解释器模式(Interpreter Pattern)是一种行为型设计模式,它用于定义一种语言的文法,并提供一个解释器来解释该语言中的表达式。这个模式主要用于解决问题领域中存在的特定语言或表达式的解释和执行问题。它将一个问题分解成一系列的…...

【UI自动化测试】如何提高UI自动化脚本的稳定性,

设计方面: 用例解耦、减少用例之前的互相依赖,避免影响其他用例的执行; 用例执行过后对测试场景还原,避免影响其他用例的执行; 脚本失败后可以加入testng的重试机制,提高用例的稳定性; PO模式…...

什么叫聊天中信息传达的框架效应framing effect,或展望理论Prospect theory

什么叫聊天中信息传达的框架效应,或展望理论 设计不能为产品带来良好体验?可能是你不懂心理学 框架效应- 维基百科,自由的百科全书 框架(社会科学)-展望理论 - 经济百科 jingjibaike 3 Answer 框架效应The theory of framing effects…...

日常开发Git命令

场景: 在远程库创建分支后,在本地开发后-合并代码-push到远程库 命令行 #查看现在分支 git branch #切换到master分支 git checkout master #拉取远程库修改 git pull git branch #切换到修改的分支 git checkout feature/s3-use-internel-name #merg…...

嵌入式学习第二十五天!(网络的概念、UDP编程)

网络: 可以用来:数据传输、数据共享 1. 网络协议模型: 1. OSI协议模型: 应用层实际收发的数据表示层发送的数据是否加密会话层是否建立会话连接传输层数据传输的方式(数据包,流式)网络层数据的…...

实操keepalived(高可用)+Nginx(四层代理+七层代理),实现高可用、负载均衡以及动静分离

一 vrrp技术 VRRP 相关术语 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,i通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。 协议版本: VRRPv2 (常用) 和VRRPv3:0 VRRPv2仅适用于IPv4网络,VRRPv3适用…...

ES6基础3

函数的扩展 基本用法 函数参数的默认值 ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。 参数变量是默认声明的,所以不能用let或const再次声明。下面代码中,参数变量x是默认声明的,在函数体中,不能用let或c…...

HarmonyOS 数据持久化 关系型数据库之 初始化操作

上文 HarmonyOS 数据持久化之首选项 preferences 我们有说用户首选项 但它只能处理一些比较简单的数据类型结构 的持久化处理 如果是一些批量较大 结构较为复杂的数据结构 那么 首选项就无法满足了 我们就要选择 关系型数据库 通过 SQLite 组件实现的一种本地数据库&#xff0…...

伊芙丽签约实在智能,实在Agent数字员工助力品牌效能飙升

近日,国内知名时尚女装品牌伊芙丽与实在智能达成合作,引入业内领先的平台级自动化产品实在Agent数字员工——取数宝,自动获取天猫、淘宝、抖音等线上平台营销数据,开启全域化营销的“提效之旅”。 实在Agent智能体 伊芙丽集团成立…...

第十五届蓝桥杯-UART接收不定长指令的处理

学习初衷: 不仅仅为了比赛! 目录 一、问题引入 二、UART常用的三种工作模式 1.UART工作在中断模式 2.UART工作在DMA模式下 3.uart工作在接收转空闲的模式下 三、获取指令中需要的数据 四、printf函数的实现 一、问题引入 问题引入:请…...

网络 协议 UDP编程

网络:数据传输,数据共享 1.网络协议模型: OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式(数据报、流式&#xff09…...

3505. 这也是一道排序题

一、题目 输入 10 7334774857 8461862436 540886577 5245195052 9194400521 5412986878 6694133363 1186771950 1405713915 7115286932 输出 -29430338967 二、思考 构造差分数组:C[i] A[i1] - A[i] 由题目条件可知:当A[i] A[i1] A[i-1] - A[i]时&am…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...