CentOS 7下JumpServer安装及配置(超详细版)

前言

Jumpserver是一种用于访问和管理远程设备的Web应用程序,通常用于对服务器进行安全访问。它基于SSH协议,提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具,其提供了强大的访问控制功能,可以轻松实现用户、主机、命令和审计日志的管理。

Jumpserver的主要功能包括:

  1. 访问控制:Jumpserver提供了灵活的访问控制,可以根据用户、角色、主机、命令和时间等因素实现精细的控制。

  2. 统一认证:Jumpserver支持LDAP、AD、Radius等认证方式,可以实现与企业内部认证系统的集成。

  3. 会话管理:Jumpserver可以记录所有SSH会话并生成审计日志,以便管理人员了解用户的操作情况。

  4. 实时监控:Jumpserver可以实时监控SSH会话,并提供了实时监控面板,可以随时了解用户的操作情况。

  5. 审计日志:Jumpserver提供了完整的审计日志功能,包括用户登录、会话记录、命令执行情况等,方便管理人员进行安全审计和追溯。

  6. 多租户:Jumpserver支持多租户功能,可以实现不同租户的资源隔离和安全管理。

总之,Jumpserver是一款功能强大的安全访问控制系统,可以为企业提供强大的安全管理和审计功能。

目录

1 环境配置

2 修改字符集

3 安装软件包

4 编译安装

5 克隆(git clone)

6 下载Jumpserver

7 配置Jumpserver

 7.1 安装所需的Python modules

 7.2 安装Redis

 7.3 安装MySQL

 7.4 修改Jumpserver配置文件

 7.5 把配置写入config.yml文件

8 启动/关闭Jumpserver

9 部署koko

 9.1 使用docker部署

 9.2 手工下载部署

  9.2.1 部署

  9.2.2 启动koko 

 10 部署guacamole

 10.1 部署

 10.2 列出本地镜像

11 部署luna

12 配置nginx 

 12.1 nginx的安装

 12.2 配置nginx

 12.3 运行nginx

 12.4 修改nginx的主配置文件

13 Jumpserver登录测试


1 环境配置

(1)关闭防火墙。

systemctl stop firewalld

(2)关闭SELinux。

setenforce 0

# setenforce 1    #设置SELinux为强制模式
# setenforce 0    #设置SELinux为宽容模式

普及:

获取SELinux状态:

getenforce

getenforce是一个Linux命令,用于查看SELinux(Security-Enhanced Linux)安全机制的状态(SELinux是一款基于Linux内核的安全模块)。该命令可以显示当前SELinux的强制模式状态:enforcing(强制模式)、permissive(宽容模式)或disabled(禁用模式)。

2 修改字符集

修改字符集,否则可能报“input/output error”问题,因为日志里打印了中文。【逐个输入并运行以下命令】

localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

3 安装软件包

yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

如图,显示“完毕!”即表示我们安装成功!

接下来我们使用wget命令下载个Python的包,下载时间过长,耐心等待。

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 

为了确保我们安装成功,我们可以使用ls命令查看下

如图即表示安装成功~接下来我们使用tar命令解压压缩包。

tar xf Python-3.6.1.tar.xz 

 使用ls命令查看,发现有Python-3.6.1即表示我们解压成功!

4 编译安装

首先我们要进入到Python-3.6.1这个目录。

cd Python-3.6.1

 编译安装(时间漫长,耐心等待)

./configure && make && make install

5 克隆(git clone)

进入opt目录下

cd /opt

使用Python3的环境。

python3 -m venv py3
source /opt/py3/bin/activate

运行完毕后会出现:(py3) [root@localhost opt]# 

使用git命令克隆

git clone git://github.com/kennethreitz/autoenv.git

【问题解决】 http://t.csdnimg.cn/OQUcr

问题一:

fatal: unable to connect to github.com:

github.com[0: 20.205.243.166]: errno=???? 

这是因为有些网络环境可能会限制Git 协议默认使用端口的访问,或者直接阻止使用Git协议。因此,我们需要将git://github.com/替换为https://github.com/,这样可以确保与GitHub进行通信。

git clone https://github.com/kennethreitz/autoenv.git

问题二:

fatal: unable to access 'https://github.com/kennethreitz/autoenv.git/': TCP connection reset by peer

我们需要取消http和https代理。 

git config --global --unset http.proxy
git config --global --unset https.proxy

 如图即表示我们成功啦~

克隆完成后,source默认使用bashrc

echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc

 使环境变量生效。

source ~/.bashrc

6 下载Jumpserver

我们还是使用克隆命令(git clone)下载并进入jumpserver目录(cd jumpserver)并将工作目录切换到主分支(git checkout master)。(时间漫长,耐心等待)

git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master

在此过程中遇到同等问题还是取消http、https代理即可。

7 配置Jumpserver

 7.1 安装所需的Python modules

进入 jumpserver 目录时将自动载入 python 虚拟环境.

echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env

安装依赖RPM包

cd requirements/

 输入y

 

yum -y install $(cat rpm_requirements.txt)

 安装Python依赖

pip install --upgrade pip

 阿里云源下载(更快)

pip install -r requirements.txt

【问题解决】

ERROR: Could not open requirements file: [Errno 2] 没有那个文件或目录: 'requirements.txt'

先创建requirements.txt 

pip freeze > requirements.txt

重新执行命令

pip install -r requirement.txt

 7.2 安装Redis

yum -y install redis

设置开机自启

systemctl enable redis

 启动redis

systemctl start redis

 7.3 安装MySQL

在centos里,默认的数据库是mariadb

yum -y install mariadb mariadb-devel mariadb-server

启动mariadb

systemctl start mariadb

设置开机自启

systemctl enable mariadb

进入mariadb

mysql

 创建jumpserver数据库默认使用utf8字符集

create database jumpserver default charset 'utf8';

 给本机授权

grant all on jumpserver.* to 'jumpserveradmin'@'127.0.0.1' identified by 'jumpserverpwd';

刷新数据库

flush privileges;

\q退出

\q

 7.4 修改Jumpserver配置文件

先进入/opt/jumpserver目录下。(因为我们刚才在/opt/jumpserver/requirements下,所以直接cd ..进入上一目录即可。)

cd ..
cp config_example.yml config.yml

生成随机SECRET_KEY
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`

 注意:A-Za-z0-9 中不能有空格!且符号`不能写错,位置也不能错,否则将会遇到“-bash: /dev/urandom: 权限不够”的情况。

echo $SECRET_KEY

把SECRET_KEY写入bashrc中。

echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

生成随机BOOTSTRAP_TOKEN
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
echo $BOOTSTRAP_TOKEN

 

把BOOTSTRAP_TOKEN写入bashrc中。

echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

 7.5 把配置写入config.yml文件

逐个运行如下指令

sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml
echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"

echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"

确认内容有没有错误 vi config.yml

vi config.yml

修改如图所示内容

修改成如图所示:

配置完成啦~

8 启动/关闭Jumpserver

在/opt/jumpserver路径下。

启动

./jms start 

【看到一堆ok即表示启动成功,如果没成功显示error则表示配置有问题,则重新vi config.yml配置】

 后台启动(后台运行使用 -d 参数)

./jms start -d

关闭

./jms stop

【问题解决】http://t.csdnimg.cn/8XoNi

Traceback (most recent call last):
  File "./jms", line 11, in <module>
    import django
ModuleNotFoundError: No module named 'django'

 

使用pip install 模块名下载。

pip install Django

下载完成后重新启动就好。

如果下载不成功,出现一堆红色下载不成功。

更新 pip 到最新版本 

pip install --upgrade pip

再执行一次就好了。

pip install Django

 最后一行显示successfully installed等表示成功安装django。

成功啦~

9 部署koko

koko支持终端管理,默认端口(port)为2222。

【提供两种方法,自行选择部署】

 9.1 使用docker部署

下载docker

yum -y install docker

 

启动docker

systemctl start docker

查看自己的IP地址。(IP地址在“2:ens33:”中inet后面)

ip a

Server_IP=自己的IP地址。

Server_IP=192.168.10.111

查看BOOTSTRAP_TOKEN值

echo $BOOTSTRAP_TOKEN

 根据查看的值输入下面指令。(值不一样,不要照搬下面指令)

BOOTSTRAP_TOKEN=BZYt8bkFhzZjAjc2
docker run --name jms_koko -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_koko:1.5.5

显示comolete就说明部署完成啦~

 9.2 手工下载部署

【本人采用docker部署,所以手工部署就不附图啦~】

  9.2.1 部署

进入/opt目录。

cd /opt

使用wget命令下载压缩包。【官方网站:https://github.com/jumpserver/koko/releases】

wget https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-37daa82-linux-amd64.tar.gz

 解压

tar -xf koko-master-37daa82-linux-amd64.tar.gz

 进入/opt/kokodir

cd /opt/kokodir

授权

chown -R root:root /opt/kokodir

先使用cp命令备份一下(cp 源文件路径  目标文件夹)

cp config_example.yml config.yml

 编辑config.yul   https://docs.jumpserver.org/zh/v3/installation/source_install/koko_install/#13

vi config.yml

BOOTSTRAP_TOKEN需要 jumpserver/config.yml 里面获取,保证一致】 

# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME: {{ Hostname }}# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080   # Core 的地址# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: ********  # 和 Core config.yml 的值保持一致# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0# 监听的SSH端口号, 默认2222
SSHD_PORT: 2222            # 使用 0.0.0.0:2222# 监听的HTTP/WS端口号,默认5000
HTTPD_PORT: 5000           # 使用 0.0.0.0:5000# 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY: null# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_FILE: data/keys/.access_key# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG           # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR# SSH连接超时时间 (default 15 seconds)
# SSH_TIMEOUT: 15# 语言 [en,zh]
# LANGUAGE_CODE: zh# SFTP的根目录, 可选 /tmp, Home其他自定义目录
# SFTP_ROOT: /tmp# SFTP是否显示隐藏文件
# SFTP_SHOW_HIDDEN_FILE: false# 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
# REUSE_CONNECTION: true# 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
# ASSET_LOAD_POLICY:# zip压缩的最大额度 (单位: M)
# ZIP_MAX_SIZE: 1024M# zip压缩存放的临时目录 /tmp
# ZIP_TMP_PATH: /tmp# 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
# CLIENT_ALIVE_INTERVAL: 30# 向资产发送心跳包的重试次数,默认为3
# RETRY_ALIVE_COUNT_MAX: 3# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local# Redis配置
# REDIS_HOST: 127.0.0.1      # 如果需要部署多个 koko, 需要通过 redis 来保持会话
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_CLUSTERS:
# REDIS_DB_ROOM:

  9.2.2 启动koko 

./koko

 10 部署guacamole

【基于HTML5和 JavaScript 的VNC查看器】

 10.1 部署

docker run --name jms_guacamole -d -p 8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_guacamole:1.5.5

显示如图所示内容即表示部署成功!

【问题解决】

/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See '/usr/bin/docker-current run --help'.

启动下docker就好啦~

systemctl start docker

或者重新启动下docker服务。

systemctl restart docker.service

 10.2 列出本地镜像

docker images

11 部署luna

与nginx结合支持Web Terminal前端。

进入opt目录。

cd /opt/

wget命令下载luna压缩包。

wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz

 【问题解决】http://t.csdnimg.cn/h1KAe

[root@localhost opt]# wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
--2023-10-10 10:41:10--  https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
无法建立 SSL 连接。

原因:

wget在使用HTTPS协议时,默认会去验证其网站的证书,而这个证书验证经常会失败。

问题解决:

方法一:在后面加“--no-check-certificate”。(执行时候不验证SSL)

--no-check-certificate

【在最后加,在wget后面加还会报同样的错误】 

搞定啦~ 

方法二:将https换成http (更换协议,将https协议换成http)

解压

tar xf luna.tar.gz

授权

chown -R root:root luna

12 配置nginx 

 12.1 nginx的安装

http://t.csdnimg.cn/p03bl

1.配置nginx所需环境

yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

pcre使nginx支持http rewrite模块

openssl 使nginx支持ssl

zlib提供nginx对http包的内容进行gzip压缩

2.获取nginx压缩包

方法一:在官网(https://nginx.org/en/download.html)直接下载.tar.gz压缩包,然后直接拉到linux里面/使用rz命令上传。(1.如果压缩包拉不进去,使用yum -y install lrzsz指令,再进行拉取。2.rz命令上传需先下载rz)

yum -y install lrzsz

方法二:使用wget命令下载(需要系统提前安装wget,如果没有安装,使用yum install wget进行安装。)

3.解压

解压到 /usr/local 下

tar xzvf nginx-1.23.1.tar.gz -C /usr/local/

4.配置

进入解压后的目录下。

cd /usr/local/nginx-1.23.1/

 可以配置啦~ O(∩_∩)O哈哈~

./configure --prefix=/usr/local/nginx 

5.编译安装

make && make install

 

编译安装成功!

 12.2 配置nginx

cd /usr/local/nginx/conf/

ls命令查看

创建conf.d文件夹

mkdir conf.d

cd conf.d/

 创建并编辑Jumpserver.conf【注意:一定是以.conf结尾。】

vi Jumpserver.conf

写入内容如下:

server {listen 80;client_max_body_size 100m;  # 录像及文件上传大小限制location /luna/ {try_files $uri / /index.html;alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改}location /media/ {add_header Content-Encoding gzip;root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改}location /static/ {root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改}location /socket.io/ {proxy_pass       http://localhost:5000/socket.io/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /koko/ {proxy_pass       http://localhost:5000/koko/;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /guacamole/ {proxy_pass       http://localhost:8081/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location / {proxy_pass http://localhost:8080;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

 12.3 运行nginx

/usr/local/nginx/sbin/nginx

 后面加-t,显示ok,successful即表示运行成功~

 12.4 修改nginx的主配置文件

cd /usr/local/nginx/conf/

编辑nginx.conf文件。

vi nginx.conf 

编辑前:

在keepalive_timeout  65;下面添加如下命令。

include /usr/local/nginx/conf/conf.d/*.conf;

编辑后: 

编辑完成后保存退出。

重新启动nginx。

/usr/local/nginx/sbin/nginx -s reload

没有报错,就可以开始登录测试吧~

【如果报错,则表示刚才配置文件编写有问题,回去重新检查。】

13 Jumpserver登录测试

浏览器使用IP地址登录。

错误页面

 正确页面会显示Jumpserver开源堡垒机登录页面。

好啦,接下来就可以使用Jumpserver开源堡垒机啦~

创作不易,给个三连吧~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CakePHP 3.x/4.x反序列化RCE链

最近网上公开了cakephp一些反序列化链的细节&#xff0c;但是没有公开poc&#xff0c;并且网上关于cakephp的反序列化链比较少&#xff0c;于是自己跟一下 &#xff0c;构造pop链。 CakePHP简介 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Contr…

物联网AI MicroPython传感器学习 之 HX711称重传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 下图是一款量程为5kg的称重传感器&#xff0c;采用悬臂梁方式安装。传感器主体结构是一个开孔金属条&#xff0c;金属条上下表面各贴有两个应变电阻&#xff0c;当金属条受力发生变形时时&…

C# 中大小端Endian

大小端可以找下资料很多&#xff0c;都是文字的。我每次遇到大小端问题就会搜资料&#xff0c;总是记不住。我自己用用图片记录一下&#xff0c;以备直观的从内存中看到。 在C#中可以用BitConverter.IsLittleEndian来查询。 几个数字在内存中 我们来观察一下&#xff0c;我的…

数据仓库Hive(林子雨课程慕课)

文章目录 9.数据仓库Hive9.1 数据仓库的概念9.2 Hive简介9.3 SQL语句转换为MapReduce作业的基本原理9.4 Impla9.4.1 Impala简介9.4.2 Impala系统架构9.4.3 Impala查询执行过程9.4.4 Impala与Hive的比较 9.5 Hive的安装和基本操作9.5.1 Hive安装9.5.2 Hive基本操作 9.数据仓库Hi…

【【萌新的SOC学习之SD卡读写TXT文本实验】】

萌新的SOC学习之SD卡读写TXT文本实验 SD卡 Secure Digital Card SD卡的引脚定义 我们会用的数据脚就这几个 对于我们FPGA 其实更会倾向于选择 SPI的功能 而TF卡相对于SD卡的区别在于 SD卡只有一个电源地 这里相对于原本的SPI多了一个CD引脚 CD信号是相当于一个卡检测…

某医疗机构:建立S-SDLC安全开发流程,保障医疗前沿科技应用高质量发展

某医疗机构是头部资本集团旗下专注大健康领域战略性投资与运营的实业公司&#xff0c;市场规模超300亿。该医疗机构已完成数字赋能&#xff0c;形成了标准化、专业化、数字化的疾病和健康管理体系&#xff0c;将进一步规划战略方向&#xff0c;为人工智能纳米技术、高温超导、生…

虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用

CAN&#xff08;Controller Area Network&#xff09;总线是一种广泛应用于汽车和工业领域的通信协议&#xff0c;用于实时数据传输和设备之间的通信。而虹科的PCAN-Explorer 6软件是一款功能强大的CAN总线分析工具&#xff0c;为开发人员提供了丰富的功能和灵活性。本文将重点…

PBA.客户需求分析 需求管理

一、客户需求分析 1 需求的三个层次: Requirement/Wants/Pains 大部分人认为&#xff0c;产品满足不了客户需要&#xff0c;是因为客户告知的需求是错误的&#xff0c;这听起来有一些道理&#xff0c;却没有任何意义。不同角色对于需求的理解是不一样的。在客户的需求和厂家的…

风电光伏混合储能功率小波包分解、平抑前后波动性分析、容量配置、频谱分析、并网功率波动分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

UE4和C++ 开发-UE4怎么删除C++类

1 关闭visual stdio&#xff0c;关闭UE4引擎。 2 打开你的项目文件夹。找到你要删除的.h,.cpp文件删除。 3、删除Binaries文件夹。 4 右击.uproiect文件&#xff0c;点击Generate Visual Studio project files. 5 双击.uproiect文件,忽略警告打开就看到已经删除了想要删除的C类…

Python【控制台输出案例】

要求&#xff1a;在控制台上上输入如下案例 *********** *********** *********** 代码1如下&#xff1a; layer int(input("请输入你要打印的行数&#xff1a;")) index 1 while index < layer:print("*"*10)index 1 ps:为了确保index 1语句在循…

安全的Sui Move是Web3大规模采用之路的基石

没有信任&#xff0c;就没有Web3的大规模采用。还有其他重要障碍阻碍了首个十亿用户的到来&#xff0c;包括令人困惑的用户体验、复杂的身份验证模式以及不确定的监管体系&#xff0c;但所有障碍中&#xff0c;要数大多数人对区块链技术持怀疑和不信任态度最严重。 对于许多人…

【动态规划】123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 123. 买卖股票的最佳时机 III&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 188. 买卖股票的最佳时机 IV&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4…

docker搭建rocketmq集群

单机搭建 1 拉取rocketMq镜像 docker pull rocketmqinc/rocketmq:4.3.2 2 创建挂在目录 mkdir -p /mydata/rocketmq/data/namesrv/logs /mydata/rocketmq/data/namesrv/store mkdir -p /mydata/rocketmq/data/broker/logs /mydata/rocketmq/data/broker/store mkd…

flink1.15 savepoint 超时报错 java.util.concurrent.TimeoutException

savepoint命令 flink savepoint e04813d4e7480c526912eb4d32bba510 hdfs://flink/flink/migration/savepoint56650 -Dyarn.application.id=application_1683808492336_1222报错内容 org.apache.flink.util.FlinkException: Triggering a savepoint for the job e04813d4e7480…

Java开发-参数校验@NotEmpty、@NotBlank、@NotNull

大家好&#xff0c;我是小资。今天给大家说下参数校验。 标题中说的这三个注解所在的包路径为import javax.validation.constraints.*; 千万不要导错包哦&#xff0c;因为他们在好多包里都存在。开发只需引入Spring-web依赖就可以使用了。轻轻松松干掉多余的if-else。 下面我…

Springboot 订餐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 订餐管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

基于图像识别的迁移学习之一

案例分析 加载数据部分同上一个案例&#xff0c;只需把数据输入到预训练的VGG-16或者ResNet50中。VGG-16的网络结构为右侧图绿色栏所示&#xff0c;其中block1中有2个包含64个卷积核的卷积层&#xff0c;block2包含2个128个卷积核的卷积层&#xff0c;block3有3个包含256个卷积…

ESP32网络开发实例-从LittleFS加载Web页面文件

从LittleFS加载Web页面文件 文章目录 从LittleFS加载Web页面文件1、应用介绍2、软件准备3、硬件准备4、Web页面代码与LittleFS文件系统上传4.1 Web页面代码实现4.2 Web页面代码上传5、Web服务器代码实现在文中,将展示如何构建一个 Web 服务器,为存储在 ESP32 的LittleFS文件系…

LeetCode142:环形链表II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…