Linux云计算SRE-第十五周

1.总结Dockerfile的指令和Docker的网络模式

一、Dockerfile 核心指令详解
1、基础构建指令

指令

功能描述

关键特性

FROM

指定基础镜像(必须为首条指令)

- 支持多阶段构建:FROM node AS builder
scratch 表示空镜像

RUN

在镜像构建时执行命令

- Shell格式:RUN apt-get update
- Exec格式:RUN ["/bin/bash", "-c", "echo hello"]
- 避免多层:合并命令减少镜像层数

CMD

容器启动时执行的默认命令(可被覆盖)

- 仅最后一个生效
- 与 ENTRYPOINT 组合时作为参数

ENTRYPOINT

容器启动时固定执行的命令(需用 --entrypoint 覆盖)

- 与 CMD 组合:ENTRYPOINT ["java", "-jar"] + CMD ["app.jar"] → java -jar app.jar
- Shell格式会忽略 CMD 参数 

 示例:

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y curl
CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT ["curl", "-s", "http://ip.cn"]
2、文件与环境配置 
指令功能描述关键区别
COPY复制本地文件到镜像(推荐)- 不支持自动解压
- 目标路径需以 / 结尾
ADD复制文件并支持自动解压(谨慎使用)- 自动解压 tar/gzip 等压缩文件
- 从 URL 下载文件
ENV设置环境变量(构建和运行时均有效)- 支持多变量:ENV A=1 B=2
ARG定义构建时变量(仅在构建阶段有效)- 可通过 --build-arg 覆盖

  示例:

COPY ./app /usr/src/app
ADD http://example.com/app.tar.gz /data/
ENV NODE_ENV=production
ARG VERSION=1.0
3、元数据与优化指令 
指令功能描述使用场景
LABEL添加镜像元数据(替代 MAINTAINER- 多键值对:LABEL author="admin" version="1.0"
VOLUME声明匿名数据卷(实现数据持久化)- 避免容器重启数据丢失
- 需配合 -v 挂载使用
USER切换运行用户(提升安全性)- 需确保用户已存在
HEALTHCHECK定义容器健康检查- 支持间隔、超时和重试参数

   示例:

LABEL maintainer="admin@example.com"
VOLUME ["/var/lib/mysql"]
USER nobody
HEALTHCHECK --interval=30s CMD curl -f http://localhost
二、Docker 网络模式深度解析  

Docker提供了多种网络模式,以便在容器间建立网络通信和连接外部网络。以下是Docker的主要网络模式及其实例:

1、Bridge模式
概述:
Bridge模式是Docker的默认网络模式。
在Bridge模式下,Docker会创建一个名为docker0的虚拟网桥,并为每个容器分配一个IP地址。
容器之间以及容器与宿主机之间都可以通过IP地址进行通信。
实例:
创建一个名为httpd的容器,并将宿主机的80端口映射到容器的80端口:

docker run -d --name httpd -p 80:80 httpd

验证容器的网络配置:

docker exec -it httpd cat /etc/hosts

2、Host模式
概述:
在Host模式下,容器直接使用宿主机的网络,与宿主机共享网络接口。
容器的网络配置与宿主机相同,可以通过宿主机的IP地址直接访问容器。
特点:
容器与宿主机共享网络栈,因此具有相同的IP地址和端口空间。
适用于对网络性能要求较高、网络隔离性要求较低或需要访问主机上网络服务的场景。
实例:
将一个Node.js创建的简单Web服务器容器设置为Host模式:

docker run --net=host my_web_server

现在,可以通过在浏览器中访问http://localhost:3000来查看运行中的Web服务器(假设Web服务器在容器的3000端口上运行)。
3、Container模式
概述:
在Container模式下,新创建的容器会共享另一个已存在容器的网络命名空间。
新容器可以使用已存在容器的IP地址和端口配置,实现网络资源的共享。
实例:
假设已经有一个名为nginx1的容器在运行,可以启动另一个名为nginx2的容器,并使其共享nginx1的网络命名空间:

docker run --name nginx2 --net=container:nginx1 nginx:v1

4、None模式
概述:
在None模式下,容器没有自己的网络接口和IP地址。
这种模式通常用于需要自定义网络配置的容器,或者只需要与宿主机或其他容器进行本地通信的容器。
实例:
创建一个使用None网络模式的Ubuntu容器:

docker run -itd --net=none --name ubuntu-test1 ubuntu /bin/bash

5、自定义模式
概述:
自定义模式允许用户创建自己的网络,并指定子网、IP地址范围、网关等网络配置。
自定义网络可以提供更好的隔离和网络管理。
自定义网络实例:

# 创建自定义桥接网络
docker network create \--driver=bridge \--subnet=172.20.0.0/24 \--gateway=172.20.0.1 \app-net# 容器加入自定义网络(支持别名通信)
docker run -d --name web \--network=app-net \--network-alias=web01 \nginx:alpine

自定义模式优势:

  • 容器间可以通过别名通信(ping web01)

  • 支持网络策略(带宽限制、访问控制)

  • 跨主机通信(需配合overlay驱动)

2.搭建harbor私有仓库并且上传镜像到私有仓库

一、搭建harbor私有仓库
1、安装 docker
# 在ubuntu主机上,以root用户身份,安装docker所需要的依赖项
[root@ubuntu22 ~]# apt update && apt install -y apt-transport-https ca-certificates software-properties-common# 安装GPG证书
[root@ubuntu22 ~]# curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 写入软件源信息
[root@ubuntu22 ~]# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新APT包索引
[root@ubuntu22 ~]# apt update# 查看可用的Docker-CE版本
[root@ubuntu22 ~]# apt-cache madison docker-ce# 安装指定版本的Docker-CE和Docker-CE-CLI
[root@ubuntu22 ~]# apt -y install docker-ce=5:25.0.5-1~ubuntu.22.04~jammy docker-ce-cli=5:25.0.5-1~ubuntu.22.04~jammy containerd.io# 验证Docker是否安装成功
[root@ubuntu22 ~]# docker --version
[root@ubuntu22 ~]# systemctl status docker2、新版docker自带docker compose命令
[root@ubuntu22 ~]#docker compose  version
Docker Compose version v2.33.0
[root@ubuntu22 ~]#alias docker-compose="docker compose"3、下载Harbor安装包并解压缩
[root@ubuntu22 ~]# wegt https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
[root@ubuntu22 ~]# mkdir /apps
[root@ubuntu22 ~]# tar xvf harbor-offline-installer-v2.12.2.tgz -C /apps/
[root@ubuntu22 harbor]#ls
common.sh  harbor.v2.12.2.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare4、编辑 harbor 配置文件
[root@ubuntu22 ~]# mv /apps/harbor/harbor.yml.tmpl /apps/harbor/harbor.yml
[root@ubuntu22 ~]# vim /apps/harbor/harbor.yml
#只需要修改下面两行
hostname = 10.0.0.100          #修改此行,指向当前主机IP或FQDN,建议配置IP
harbor_admin_password = 123456 #修改此行指定harbor登录用户admin的密码,默认用户/密码
:admin/Harbor12345
data_volume: /data/harbor      #建议修改数据目录路径,使用大容量的高速磁盘,默认为/data
#如果不使用https,还需要将下面行注释掉
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
#可选项
ui_url_protocol = http #默认即可,如果修改为https,需要指定下面证书路径
ssl_cert = /data/cert/server.crt #默认即可,https时,需指定下面证书文件路径
ss_cert_key = /data/cert/server.key   #默认即可,https时,需指定下面私钥文件路径5、运行 harbor 安装脚本
#先安装python
[root@ubuntu22 ~]# apt -y install python3
#安装docker harbor 
[root@ubuntu22 ~]# /apps/harbor/install.sh
[root@ubuntu22 ~]# docker ps

 6、登录 harbor 主机网站
用浏览器访问: http://10.0.0.100/
用户名: admin 
密码: 即前面harbor.cfg中指定的密码123456

二、使用单主机Harbor
1、建立项目

 2、创建用户和项目授权
3、命令行登录 Harbor
[root@ubuntu22 harbor]# vim /etc/docker/daemon.json 
{"registry-mirrors": ["https://docker.1ms.run","https://kpczdzbv.mirror.aliyuncs.com"],"insecure-registries": ["10.0.0.100:80"] 
}
[root@ubuntu22 harbor]# systemctl daemon-reload
[root@ubuntu22 harbor]# systemctl restart docker
#非交互登录
[root@ubuntu22 harbor]# echo "M92-zhang" | docker login 10.0.0.100:80 -u zhangyao --password-stdin
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded#查看进程是否添加上面设置
[root@ubuntu22 harbor]# ps aux|grep dockerd
4、给本地镜像打标签并上传到 Harbor 
[root@ubuntu22 harbor]# docker tag docker.1ms.run/library/alpine 10.0.0.100:80/example/alpine:3.11
[root@ubuntu22 harbor]# docker push 10.0.0.100:80/example/alpine:3.11
The push refers to repository [10.0.0.100:80/example/alpine]
08000c18d16d: Pushed 
3.11: digest: sha256:ec1b05d1eac264d9204a57f4ad9d4dc35e9e756e9fedaea0674aefc7edb1d6a4 size: 527

访问harbor网站验证上传镜像成功: 

3.总结JumpServer的安装和使用

JumpServer是一款堡垒机产品,它是全球首款完全开源的堡垒机,使用GNU GPL v2.0开源协议,是符合4A(认证Authentication、授权Authorization、账号Account、审计Audit)的专业运维审计系统。以下是对JumpServer的安装和使用的总结:

一、JumpServer的安装

环境准备
硬件要求:建议配置为4Core/8GB RAM/300GHDD,但2个CPU、4G内存、至少50G硬盘也可满足基本需求(屏幕录制功能非常占磁盘空间)。
软件要求:
操作系统:如CentOS。
Python:需要Python 3.6或更高版本。
数据库:MySQL或MariaDB,版本需大于等于5.6。
Redis:用于cache和celery broke。
其他:如yum-utils、device-mapper-persistent-data、lvm2等依赖包。
安装步骤
安装Docker:通过yum安装Docker及其依赖,并配置开机启动。
下载JumpServer安装包:从JumpServer的官方GitHub仓库或国内镜像站点下载最新版本的安装包。
解压并配置:解压安装包,并根据需要修改配置文件,如数据库连接信息、加密密钥等。
启动JumpServer:使用Docker Compose或相关命令启动JumpServer服务。

在Rocky Linux 8.10和Ubuntu 22.04系统上基于Docker部署JumpServer的完整操作指南:
#三种方式安装jumpserver
# ubuntu上docker安装jumpserver
# 创建一个名为jumpserver-net的docker网络,后续容器会加入此网络来实现通信
[root@ubuntu ~]#docker network create jumpserver-net# 使用vim编辑器创建并编辑mysqld.cnf文件,用于配置MySQL
[root@ubuntu ~]#vim mysqld.cnf
[mysqld]
default_authentication_plugin=mysql_native_password# 从Docker Hub拉取MySQL 8.0.29-oracle版本的镜像
[root@ubuntu ~]#docker pull mysql:8.0.29-oracle
# 从Docker Hub拉取Redis 6.2.14版本的镜像
[root@ubuntu ~]#docker pull redis:6.2.14# 运行MySQL容器
# --name指定容器名为mysql
# -e设置环境变量,如MySQL的root密码、数据库名、用户及密码
# -d表示后台运行
# -v挂载本地的mysqld.cnf配置文件到容器内
# --restart always容器异常退出时自动重启
# --network指定容器加入的网络
[root@ubuntu ~]#docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jumpserver -e MYSQL_USER=jumpserver -e MYSQL_PASSWORD=123456 -d -v./mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf --restart always --network jumpserver-net mysql:8.0.29-oracle# 运行Redis容器,-d后台运行,--name指定容器名,--restart always自动重启,--network加入指定网络
[root@ubuntu ~]#docker run -d --name redis --restart always --network jumpserver-net redis:6.2.14# 进入MySQL容器的交互式终端,登录MySQL数据库
[root@ubuntu ~]#docker exec -it mysql sh
mysql -uroot -p123456
mysql>exit# 进入Redis容器的交互式终端,设置Redis密码
[root@ubuntu ~]#docker exec -it redis sh
redis-cli
127.0.0.1:6379>CONFIG set requirepass  123456
127.0.0.1:6379>exit
# 验证Redis密码是否设置成功
redis-cli
127.0.0.1:6379>auth 123456
127.0.0.1:6379>exit# 生成一个50位的随机字符串,用作SECRET_KEY
[root@ubuntu ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c50
aRSvqx9Ln6Vi4tKRp6on7T7WS0XZlFPQCZzQmfL8xSYXsaQCHf
# 生成一个30位的随机字符串,用作BOOTSTRAP_TOKEN
[root@ubuntu ~]# cat /dev/urandom | tr -dc '[:alnum:]' | head -c30
vsyLcLXhe85yXC0tD9EvROhAR6kHD7# 从Docker Hub拉取jumpserver/jms_all:v3.10.3版本的镜像
[root@ubuntu ~]# docker pull jumpserver/jms_all:v3.10.3# 运行jumpserver容器
# --name指定容器名
# -p映射容器端口到宿主机端口
# -e设置多个环境变量,关联MySQL、Redis等服务的配置
# --privileged=true赋予容器特权模式
# -v挂载多个目录,用于数据持久化
# --network加入指定网络
# --restart always异常退出自动重启
[root@ubuntu ~]# docker run --name jms_all -d \-p 80:80 \-p 2222:2222 \-p 30000-30100:30000-30100 \-e SECRET_KEY=aRSvqx9Ln6Vi4tKRp6on7T7WS0XZlFPQCZzQmfL8xSYXsaQCHf \-e BOOTSTRAP_TOKEN=vsyLcLXhe85yXC0tD9EvROhAR6kHD7 \-e CORE_HOST=http://jms_all:8080 \-e LOG_LEVEL=ERROR \-e DB_HOST=mysql \-e DB_PORT=3306 \-e DB_USER=jumpserver \-e DB_PASSWORD=123456 \-e DB_NAME=jumpserver \-e REDIS_HOST=redis \-e REDIS_PORT=6379 \-e REDIS_PASSWORD='123456' \--privileged=true \-v /opt/jumpserver/core/data:/opt/jumpserver/data \-v /opt/jumpserver/koko/data:/opt/koko/data \-v /opt/jumpserver/lion/data:/opt/lion/data \-v /opt/jumpserver/magnus/data:/opt/magnus/data \-v /opt/jumpserver/kael/data:/opt/kael/data \-v /opt/jumpserver/chen/data:/opt/chen/data \-v /opt/jumpserver/web/log:/var/log/nginx \--network jumpserver-net  \--restart always          \jumpserver/jms_all:v3.10.3# ubuntu0上在线安装jumpserver
# 使用curl下载并执行快速安装脚本,进行jumpserver的在线安装
[root@ubuntu0 ~]# curl -sSL  https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash# ubuntu1上dokcker compose安装jumpserver
# 创建一个名为jumpserver的目录
[root@ubuntu1 ~]# mkdir jumpserver
# 进入刚创建的jumpserver目录
[root@ubuntu1  jumpserver]# cd  jumpserver# 使用vim编辑器打开当前目录下的docker-compose.yaml文件,准备编辑用于编排容器服务的配置内容
[root@ubuntu1  jumpserver]# vim docker-compose.yaml
# 声明使用的Docker Compose文件版本为3.8,不同版本语法和特性略有差异
version: '3.8'services:mysql:image: mysql:8.0container_name: jms_mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-123456}MYSQL_DATABASE: ${DB_NAME:-jumpserver}healthcheck:test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]interval: 10stimeout: 5sretries: 3start_period: 30svolumes:- ${VOLUME_DIR:-./data}/mysql/data:/var/lib/mysqlnetworks:- netredis:image: redis:7.0container_name: jms_redisrestart: alwayscommand: redis-server --requirepass ${REDIS_PASSWORD:-123456}environment:REDIS_PASSWORD: ${REDIS_PASSWORD:-123456}healthcheck:test: ["CMD", "redis-cli", "-a", "$$REDIS_PASSWORD", "ping"]interval: 10stimeout: 5sretries: 3start_period: 10svolumes:- ${VOLUME_DIR:-./data}/redis/data:/datanetworks:- netjumpserver:image: jumpserver/jms_all:v3.10.3container_name: jms_allprivileged: truerestart: alwaysenvironment:SECRET_KEY: ${SECRET_KEY:-SYmfImNk3TfMCmKmb7h3SYZjfTR6e2jVAjfLZxHAQqIxOdAWLv}BOOTSTRAP_TOKEN: ${BOOTSTRAP_TOKEN:-9Gd3SM0tR6gmbirptLYdkqXN82ZrQh}LOG_LEVEL: ${LOG_LEVEL:-ERROR}DB_HOST: mysqlDB_PORT: 3306DB_USER: rootDB_PASSWORD: ${DB_PASSWORD:-123456}DB_NAME: ${DB_NAME:-jumpserver}REDIS_HOST: redisREDIS_PORT: 6379REDIS_PASSWORD: ${REDIS_PASSWORD:-123456}DOMAINS: ${DOMAINS:-}ports:- "${HTTP_PORT:-80}:80"- "${SSH_PORT:-2222}:2222"depends_on:mysql:condition: service_healthyredis:condition: service_healthyhealthcheck:test: ["CMD", "curl", "-fsL", "http://localhost/api/health/"]interval: 10stimeout: 5sretries: 3start_period: 90svolumes:- ${VOLUME_DIR:-./data}/core/data:/opt/jumpserver/core/data- ${VOLUME_DIR:-./data}/koko/data:/opt/jumpserver/koko/data- ${VOLUME_DIR:-./data}/lion/data:/opt/jumpserver/lion/data- ${VOLUME_DIR:-./data}/chen/data:/opt/jumpserver/chen/data- ${VOLUME_DIR:-./data}/kael/data:/opt/jumpserver/kael/data- ${VOLUME_DIR:-./data}/nginx/logs:/var/log/nginxnetworks:- netnetworks:net:driver: bridgenetworks:# 定义名为net的网络,供上述服务使用,用于容器间通信net:
# 在ubuntu1系统的jumpserver目录下,执行这条命令
# docker compose up 用于启动由当前目录下的docker-compose.yaml文件定义的所有服务
# 它会读取该配置文件,拉取所需镜像(如果本地不存在),创建并启动相关容器,按照文件中定义的依赖关系、网络配置、环境变量等设定来运行整个服务栈
# 各个容器之间的网络连接、端口映射、数据卷挂载等配置都会生效,让整个Jumpserver应用及其依赖的MySQL、Redis服务协同工作
[root@ubuntu1  jumpserver]# docker compose up
二、JumpServer的使用

用户管理
管理用户:管理用户是资产被控服务器上的root用户,JumpServer使用此用户可以推送系统用户、获取资产硬件信息等。
系统用户:用于登录资产的用户。
普通用户:登录JumpServer的用户,如运维、开发等。可以创建用户组,将用户添加到用户组,便于管理。
资产管理
在JumpServer中添加各类资产,如服务器、网络设备、数据库应用等。
对资产进行分类和组织,便于后续授权和管理。
授权管理
以资产树方式授权资产,将不同的资产授权给不同的用户组或用户。
可以设置精细的权限控制,如只允许用户执行特定命令或访问特定文件。
日志审计
JumpServer会监控并记录用户的所有操作行为。
管理员可以查看用户的操作记录,进行审计和回放。
如发现不良或危险操作,可以及时中断并采取相应的安全措施。
会话管理
JumpServer支持在线会话功能,管理员可以查看当前正在进行的会话。
可以对会话进行中断、终止等操作,确保系统的安全性。
文件管理
JumpServer支持文件管理功能,用户可以将文件直接拖拽上传至服务器。
默认的存放位置可以在配置文件中进行修改。
危险命令限制
管理员可以设置危险命令列表,禁止用户执行这些命令。
如用户尝试执行危险命令,JumpServer会进行拦截并记录相关操作。

三、JumpServer实际操作

访问Web界面
地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin 密码: admin

1、创建用户

2、创建用户组并添加用户

 3、在控制台中账号管理的账号模版,点击创建,创建账号模版root-dev、root-tests、dev-devs、test-tests、wordpress-mysql

 4、在控制台中资产管理的资产列表对应的资产树Default,创建节点开发组和测试组。Default/开发组,点击添加资产到列表 ,创建资产-主机10.0.0.100和10.0.0.108。Default/测试组,点击添加资产到列表 ,创建资产-主机10.0.0.130和10.0.0.140。

5、在控制台中权限管理的资产授权,创建资产授权规则开发组授权和测试组授权、开发组授权MYSQL。在控制台中权限管理的命令过滤 ,创建命令组。基于命令组,在控制台中权限管理的命令过滤,创建命令过滤规则。

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

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

相关文章

Linux:进程概念

目录 1 冯诺依曼体系 2 操作系统(Operator System) 3 如何理解管理 3.1计算机管理硬件 3.2 管理逻辑图 3.3 怎样管理 4 什么是进程&#xff1f; 5 查看进程 5.1 ps ajx显示所有进程信息 5.2 /proc(内存文件系统) 5.2.1 ls /proc/PID 5.2.2 ls /proc/PID -al ​ 5…

B/B+树与mysql索引

数据结构操作网站&#xff1a;https://www.cs.usfca.edu/~galles/visualization/Algorithms.html B树 算法平均最差空间O(n)O(n)搜索O(log n)O(log n)插入O(log n)O(log n)删除O(log n)O(log n) B树 算法平均最差空间O(n)O(n)搜索O(log n)O(log n)插入O(log n)O(log n)删除O(…

SQL命令详解之增删改数据

目录 简介 1 添加数据 1.1 基础语法 1.2 SQL 练习 2 修改数据 2.1 基础语法 2.2 SQL 练习 ​3 删除数据 3.1 基础语法 3.2 SQL 练习 总结 简介 在数据库操作中&#xff0c;增、删、改是最基础的操作&#xff0c;它们通常对应着SQL中的INSERT、DELETE和UPDATE命令。…

爱普生可编程晶振 SG-8101CE 在智能家居领域展现出的优势

在智能家居的全场景应用中&#xff0c;设备间的协同效率、数据传输的稳定性以及系统运行的可靠性&#xff0c;成为衡量用户体验的核心标准。爱普生 SG-8101CE 可编程晶振以其卓越的性能&#xff0c;为智能门锁、传感器、中控系统等设备提供核心动力&#xff0c;助力厂商打造更可…

Pytest之fixture的常见用法

文章目录 1.前言2.使用fixture执行前置操作3.使用conftest共享fixture4.使用yield执行后置操作 1.前言 在pytest中&#xff0c;fixture是一个非常强大和灵活的功能&#xff0c;用于为测试函数提供固定的测试数据、测试环境或执行一些前置和后置操作等&#xff0c; 与setup和te…

植物大战僵尸金铲铲版 v1.1.6(windows+安卓)

游戏简介 《植物大战僵尸金铲铲版》是由“古见xzz”、“对不起贱笑了”、“是怪哉吖”等联合开发的民间魔改版本&#xff0c;融合了原版塔防玩法与《金铲铲之战》的自走棋元素&#xff0c;属于非官方同人作品。 游戏特点 合成升星机制&#xff1a;三个相同低星植物可合成更高…

Matplotlib基础知识总结

1、简介 安装使用pip install matplotlib命令即可&#xff1b; 2、基本绘图流程 3、pyplot基础语法 &#xff08;1&#xff09;创建画布与创建子图 figure语法说明&#xff1a;figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone, frameonTrue)&#xff1…

实例分割 | yolov11训练自己的数据集

前言 因工作要求使用的都是yolov5系列的模型&#xff0c;今天学习一下最先进的yolov11&#xff0c;记录一下环境配置及训练过程。 1.项目下载及环境安装 源码位置&#xff1a;yolov11 可以看到&#xff0c;这里要求python版本大于等于3.8&#xff0c;我这里安装python3.10.…

【MongoDB】在Windows11下安装与使用

官网下载链接&#xff1a;Download MongoDB Community Server 官方参考文档&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型&#xff0c;其他默认 注意&#xff0c;此选…

【prometheus】Pushgateway安装和使用

目录 一、Pushgateway概述 1.1 Pushgateway简介 1.2 Pushgateway优点 1.3 pushgateway缺点 二、测试环境 三、安装测试 3.1 pushgateway安装 3.2 prometheus添加pushgateway 3.3 推送指定的数据格式到pushgateway 1.添加单条数据 2.添加复杂数据 3.SDk-prometheus-…

Python中文自然语言处理库SnowNLP

SnowNLP 介绍 SnowNLP 是一个基于 Python 的中文自然语言处理库&#xff0c;专为处理中文文本而设计。它受到 TextBlob 的启发&#xff0c;但与 TextBlob 不同的是&#xff0c;SnowNLP 没有使用 NLTK&#xff0c;所有的算法都是自己实现的&#xff0c;并且自带了一些训练好的字…

windows共享文件夹到麒麟桌面操作系统操作步骤

此文档是将windows的共享文件夹在麒麟桌面操作系统里实现访问。该文档是以windows11+kylinos-2303为例编写。 1、在windows上新建文件夹 2、右击myshare文件夹,点击属性,在属性窗口中点击【共享】页签,点击【共享】 3、点击文本框后边的向下箭头,选择Everyone,后点击…

《Qt窗口动画实战:Qt实现呼吸灯效果》

Qt窗口动画实战&#xff1a;Qt实现呼吸灯效果 在嵌入式设备或桌面应用中&#xff0c;呼吸灯效果是一种常见且优雅的UI动画&#xff0c;常用于指示系统状态或吸引用户注意。本文将介绍如何使用Qt动画框架实现平滑的呼吸灯效果。 一、实现原理 利用Qt自带的动画框架来实现&…

JavaWeb基础专项复习6(2)——AJAX补充

目录 1、load(url, [data], [callback]) 1.1 语法 1.2概述 1.3参数 url,[data,[callback]]String,Map/String,CallbackV1.0 1.4示例 HTML 代码: jQuery 代码: 2、get(url, [data], [callback], [type]) 2.1 语法 2.2 概述 2.3 参数 url,[data],[callback],[type]St…

稀疏数组学习

稀疏数组&#xff08;Sparse Array&#xff09; 是一种用于压缩存储大量默认值&#xff08;通常是 0&#xff09;的数组的数据结构。它通过只存储非默认值的元素及其位置来节省空间。稀疏数组常用于存储矩阵或二维数组&#xff0c;尤其是当数组中大部分元素为默认值时。 稀疏数…

一、Vscode、Git、Github账号及个人访问令牌

一、Vscode下载、安装 1.Vscode 下载地址 2. Vscode安装 3.Vscode 配置C 安装插件 中文插件&#xff08;安装后重启生效&#xff09; C 扩展包 MinGw下载 MinGw蓝奏云下载链接,密码&#xff1a;64xamingw-64 官网—>下载时需要访问Github&#xff0c;需要挂梯子 配…

【 实战案例篇三】【某金融信息系统项目管理案例分析】

大家好,今天咱们来聊聊金融行业的信息系统项目管理。这个话题听起来可能有点专业,但别担心,我会尽量用大白话给大家讲清楚。金融行业的信息系统项目管理,说白了就是如何高效地管理那些复杂的IT项目,确保它们按时、按预算、按质量完成。咱们今天不仅会聊到一些理论,还会通…

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时&#xff0c;添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为&#xff0c;我们可以将已登录状态的Cookies存储起来&#xff0c;并在下次自动化测试或爬虫任务中直接加载这些Cookies&#xff0c;从而跳过登录步骤。 Cookies简介 …

Ansys Zemax | 使用衍射光学器件模拟增强现实 (AR) 系统的出瞳扩展器 (EPE):第 3 部分

附件下载 联系工作人员获取附件 在 OpticStudio 中使用 RCWA 工具为增强现实&#xff08;AR&#xff09;系统设置出瞳扩展器&#xff08;EPE&#xff09;的示例中&#xff0c;首先解释了 k空间中光栅的规划&#xff0c;并详细讨论了设置每个光栅的步骤。 介绍 本文是四篇文…

Acwing 哞叫时间II

6134. 哞叫时间II - AcWing题库 题目大意&#xff1a;统计数组中子序列abb的数量&#xff1a; 做法&#xff1a;从右往左枚举倒数第二个b&#xff0c;查前面出现过多少次a&#xff0c;查的方法(开一个数组left[x]来统计当前及前面出现过多少次x&#xff0c;cnt记录不同x的数量…