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

搭建内网开发环境(一)|基于docker快速部署开发环境

引言

最近因需要搭建一套简易版的纯内网的开发环境,服务器采用 centos8.0,容器化技术采用 docker 使用 docker-compose 进行容器编排。
该系列教程分为两大类:

  • 软件安装和使用,这类是开发环境常用的软件部署和使用,涉及到的应用有:
    • docker
    • nexus
    • gitea
    • mysql
    • redis
    • minio
  • 应用部署实战:通过实战将开发好的程序部署到搭建好的开发环境中

docker

安装

对于 docker 的安装分为两种情形,一种是服务器能够访问外网,这种安装比较简单,一种是不能访问外网,对于纯内网安装,需要提前准备好安装文件,复制到内网服务器上。

在线安装

  1. 卸载旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
  1. 设置 docker 仓库,方便安装和更新 docker,由于官方的源比较慢,可以使用第三方的源
# 安装所需要的软件包# 使用官方源
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云第三方源
sudo yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学第三方源
sudo yum-config-manager \--add-repo \https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 安装 docker enginer
    1. 安装最新版本

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

  1. 指定版本安装
    1. 查看版本号:yum list docker-ce --showduplicates | sort -r

image.png

  2. 选择版本号进行安装:`sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io`
  1. 启动 docker
    1. 启动命令:systemctl start docker
    2. 查看是否启动成功,通过 docker info 命令输出 docker 版本信息则安装成功

image.png

  1. 卸载 docker
    1. 删除安装包

yum remove docker

  1. 删除镜像、容器等相关文件

rm -rf /var/lib/docker

离线安装

如果服务器没有外网的情况下,如果通过在线直接获取安装包,这种情况下需要先将安装包准备好上传到服务器在进行安装。

下载安装包
  1. 进入官网下载页面进行选择对应的版本下载,页面链接https://download.docker.com/linux/static/stable/x86_64/

image.png

安装
  1. 解压安装包:tar -zxvf docker-20.10.9.tgz
  2. 安装到 /usr/bin/:mv /docker/* /usr/bin/
  3. 创建 docker 服务
    1. 编辑 /etc/systemd/system/docker.service,内容如下
[Unit]
Description=Docker Service
After=network.target
[Service]
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -S HUP $MAINPID
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
  1. 重启 docker 加载配置文件,并设置开启启动
    1. 重启:sudo systemctl daemon-reload && sudo systemctl restart docker
    2. 设置开机启动:sudo systemctl enable docker
  2. 查看docker是否启动成功,使用命令 systemctl status docker

设置镜像源

  1. 编辑 /etc/docker/daemon.json 文件,添加阿里云镜像源,内容如下:
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
  1. 重启 docker 使配置生效

sudo systemctl daemon-reload && sudo systemctl restart docker

纯内网如何下载镜像

如果是纯内网部署,且还搭建好私服(这个在后续的教程中会演示)如何获取 docker 镜像呢?
首先需要将部门需要的镜像提前准备好(后期部署好 docker 私服后可从私服下载镜像)先从一台外网机器下载好所需要的镜像,并导出镜像,发送到内网服务上,再在内网服务器上加载镜像到 docker 中;具体步骤如下:

  1. 在外网机器下载好需要的镜像文件
# 拉取 mysql 镜像
docker pull mysql:8.4.2
# 拉取 redis 镜像
docker pull redis:latest
# 拉取 minio 镜像
docker pull minio/minio:latest 
# 拉取 nexus 镜像
docker pull sonatype/nexus3:latest
# 拉取 gitea 镜像
docker pull gitea/gitea:latest
  1. 导出镜像文件
# 导出 mysql 镜像
docker save -o mysql.tar mysql:8.4.2
# 导出 redis 镜像
docker save -o redis.tar redis:latest
# 导出 minio 镜像
docker save -o minio.tar minio/minio:latest
# 导出 nexus3 镜像
docker save -o nexus3.tar sonatype/nexus3:latest
# 导出 mysql 镜像
docker save -o gitea.tar gitea/gitea:latest
  1. 发送到内网服务器

使用命令或者 FTP 工具将镜像文件拷贝到内网服务器

  1. 内网服务器加载镜像
# 加载 mysql 镜像
docker load -i mysql.tar
# 加载 redis 镜像
docker load -i redis.tar 
# 加载 minio 镜像
docker load -i minio.tar 
# 加载 nexus3 镜像
docker load -i nexus3.tar 
# 加载 mysql 镜像
docker load -i gitea.tar

docker-compose

简介

docker-compose 是 docker 官方的开源项目,用于定义和运行多个容器应用程序的工具,它允许用户通过 YAML 文件来配置应用程序服务,并通过 docker-compose 命令来启动、停止和管理整个应用程序。
docker-compsoe 简化了容器应用程序之间的部署和管理过程,使得开发者可以快速的搭建应用,并且可以应用在不同的系统环境中,减少配置错误带来的问题。

安装

在线安装

  1. 执行安装命令

sudo curl -L "[https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-$(uname](https://github.com/docker/compose/releases/tag/v2.29.1) -s)-$(uname -m)" -o /usr/bin/docker-compose

  1. 如需要安装其他版本的请替换上述命令的 v2.29.1 为想要的版本号,查看版本请前往https://github.com/docker/compose/releases
  2. 赋予可执行权限

sudo chmod +x /usr/bin/docker-compose

  1. 通过 docker-compose 验证是否安装成功

离线安装

  1. 下载安装包

点击前往官方下载安装文件,进入 https://github.com/docker/compose/releases,选择合适的版本进行下载
image.png

  1. 安装
    1. 将文件命名为 docker-compose 并将文件移动到 /usr/bin 中

sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose

  1. 赋予可执行权限

sudo chmod +x /usr/bin/docker-compose

  1. 通过 docker-compose 验证是否安装成功

image.png

卸载

通过 rm /usr/bin/docker-compose删除

常用命令

docker-compose 的常用命令格式为 docker-compose [OPTIONS] COMMAND,docker-compose 的命令与 docker 的命令非常相似,常用的命令有

  1. docker-compose up

用于根据指定文件创建和启动容器,如果没有指定文件默认为当前目录下的 docker-compose.yml 文件,常用的参数有:

参数说明
-f指定 compose 编排文件
-d后台执行
–force-recreate强制重新创建容器,即使未发生改动
–no-recreate如果容器存在,不重新创建,不能与–force-recreate 同时使用
–remove-orphans删除没有在 compose 文件中定义的容器
–build在启动容器前构建镜像
–no-build不自动构建镜像
–no-start创建服务后不启动
–scale将服务实例扩容到指定数量,会覆盖在 compose 文件中设置该选项
  1. docker-compose down

用于停止和删除容器、网络和卷,常用的参数有

参数说明
–rmi string删除服务关联的镜像,可选的参数有 all 删除所有镜像,local 删除本地镜像
-v, --volumes删除 compose 中声明的卷
–remove-orphans删除未在 compose 文件定义的容器
  1. docker-compose ps

查看由 docker-compose 管理的容器,默认使用当前目录下的 docker-compose.yml 文件可通过-f 指定 compose 文件,默认只显示正在运行的容器,可通过 docker-compose ps -a 查看所有容器

  1. docker-compose stats

查看对应 compose 文件管理的容器资源使用情况,默认查看正在运行的容器,通过 -a 参数查看所有

  1. docker-compose cp

在容器和宿主机之间复制文件

  1. 容器文件复制到宿主机

docker compose cp [OPTIONS] SERVICE:SRC_PATH DEST_PATH|-

  1. 宿主机文件复制到容器

docker compose cp [OPTIONS] SRC_PATH|- SERVICE:DEST_PATH

  1. docker-compose exec

在正在运行的容器中执行命令,格式为:docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]

  1. docker-compose start

启动对应 compose 文件对应的服务

  1. docker-compose restart

重启对应 compose 文件对应的服务

  1. docker-compose stop

停止对应 compose 文件对应的服务

实战 docker-compose 部署 mysql 、redis

mysql 和 redis 是常用的开发应用软件,本系列教程的后续多个应用也依赖于 mysql 和 redis,如果是纯内网可参考上述教程准备好镜像,在本教程后续会搭建 docker 私服,则不需要手动加载镜像

  1. 创建目录用于卷挂载
    1. mysql
      1. /opt/mysql/data:存放 mysql 数据
      2. /opt/mysql/conf.d/:存放 mysql 配置
      3. my.cnf 文件
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
max_allowed_packet=7096M
lower_case_table_names=1
  1. redis
    1. /opt/redis/data:存放 redis 数据
    2. /opt/redis/config:存放 redis 配置
    3. /opt/redis/logs:存放 redis 日志
    4. redis.conf 文件
################################## NETWORK #####################################
port 6379
tcp-keepalive 300
################################# GENERAL #####################################
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
################################ SNAPSHOTTING  ################################
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
################################# REPLICATION #################################
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
################################## SECURITY ################################################################ LAZY FREEING ####################################
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
############################## APPEND ONLY MODE ###############################
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes
################################ LUA SCRIPTING  ###############################
lua-time-limit 5000
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
########################### ACTIVE DEFRAGMENTATION #######################
jemalloc-bg-thread yes
  1. 创建网络:docker network create env-net
  2. 编写 docker-compose.yml
version: "3.8"networks:env-net:driver: bridge
services:db:image: mysql:8.4.2restart: on-failurecontainer_name: mysqlenvironment:- TZ=Asia/Shanghai- MYSQL_ROOT_PASSWORD=root- INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx1024m -XX:MaxDirectMemorySize=512m- MYSQL_USER=gitea- MYSQL_PASSWORD=gitea- MYSQL_DATABASE=giteaports:- "3306:3306"networks:- env-netvolumes:- /opt/mysql/data/:/var/lib/mysql/- /opt/mysql/conf.d/my.cnf:/etc/mysql/my.cnfprivileged: trueredis:image: redis:latestcontainer_name: redisrestart: on-failureports:- "6379:6379"command:redis-server /etc/redis/redis.confvolumes:- /opt/redis/data:/data- /opt/redis/config/redis.conf:/etc/redis/redis.conf- /opt/redis/logs:/logsnetworks:- env-netprivileged: true
  1. 启动,通过 sudo docker-compose up -d 启动,等待服务部署
  2. 查看是否部署成功,通过 docker-compose ps 查看容器状态

结语

本文介绍了 docker 和 docker-compose 在线和离线的两种方式,以及 docker-compose 的常见命令,最后实操如何利用 docker-compose 部署 mysql 和 redis。

相关文章:

搭建内网开发环境(一)|基于docker快速部署开发环境

引言 最近因需要搭建一套简易版的纯内网的开发环境&#xff0c;服务器采用 centos8.0&#xff0c;容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类&#xff1a; 软件安装和使用&#xff0c;这类是开发环境常用的软件部署和使用&#xff0c;涉…...

MATLAB R2023b配置Fortran编译器

MATLAB R2023b配置Fortran编译器 引言1. 安装Visual Studio 20192. 安装Intel API20243. 配置xml文件文件4. 设置环境变量5. MATLAB编译Fortran 引言 当我们需要用到MATLAB编译Fortran代码后进行调用计算时&#xff0c;整个配置流程较繁琐。下面以MATLAB R2023b为例&#xff0…...

2024新型数字政府综合解决方案(七)

新型数字政府综合解决方案通过集成人工智能、大数据、区块链和云计算技术&#xff0c;创建了一个高度智能化和互联互通的政府服务平台&#xff0c;旨在全面提升行政效率、服务质量和透明度。该平台实现了跨部门的数据整合与实时共享&#xff0c;利用人工智能进行智能决策支持和…...

搭建高可用k8s集群

高可用 Kubernetes V1.28.10 安装 文章目录 1. 环境介绍2. 准备工作2.1 修改主机名称2.2 修改hosts文件2.3 关闭防火墙和SLinux2.4 配置SSH免密访问2.4.1 主机名称: k8s-master-01 操作 2.5 配置yum源2.6 禁用Swarp分区2.7 同步时间2.8 配置内核转发及网桥过滤2.9 安装 IPVS 3…...

完美解决html2canvas + jsPDF导出pdf分页内容截断问题

代码地址&#xff1a;https://github.com/HFQ12333/export-pdf.git html2canvas jspdf方案是前端实现页面打印的一种常用方案&#xff0c;但是在实践过程中&#xff0c;遇到的最大问题就是分页截断的问题&#xff1a;当页面元素超过一页A4纸的时候&#xff0c;连续的页面就会…...

14 地址映射

14 地址映射 1、地址划分2、相关函数2.1 ioremap/iounmap2.2 mmap地址映射 3、总结 1、地址划分 明确&#xff1a;在linux系统中,不管是应用程序还是驱动程序&#xff0c;都不允许直接访问外设的物理地址,要想访问必须将物理地址映射到用户虚拟地址或者内核虚拟地址&#xff0…...

Java Resilience4j-RateLimiter学习

一. 介绍 Resilience4j-RateLimiter 是 Resilience4j 中的一个限流模块&#xff0c;我们对 Resilience4j 的 CircuitBreaker、Retry 已经有了一定的了解&#xff0c;现在来学习 RateLimiter 限流器&#xff1b; 引入依赖&#xff1b; <dependency><groupId>io.g…...

Nginx--地址重写Rewrite

一、什么是Rewrite Rewrite对称URL Rewrite&#xff0c;即URL重写&#xff0c;就是把传入Web的请求重定向到其他URL的过程 URL Rewrite最常见的应用是URL伪静态化&#xff0c;是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.php?id123 使用U…...

webflux源码解析(1)-主流程

目录 1.关键实例的创建1.1 实例创建1.2 初始化 2.处理请求的关键流程2.1 从ReactorHttpHandlerAdapter开始2.1 DispatcherHandler的初始化2.2查找mapping handler2.3 处理请求(执行handler)2.4 返回结果处理 3.webflux的配置装配参考&#xff1a; WebFlux是Spring 5.0框架推出的…...

ipad作为扩展屏的最简单方式

将iPad用作扩展屏幕有几种简单而有效的方法。以下是几种常见的方式&#xff1a; 1. Sidecar&#xff08;苹果官方功能&#xff09; 适用设备&#xff1a;iPad和Mac&#xff08;macOS Catalina及以上版本&#xff09;。功能&#xff1a;Sidecar 是苹果官方的功能&#xff0c;可…...

【卡码网Python基础课 17.判断集合成员】

目录 题目描述与分析一、集合二、集合的常用方法三、代码编写 题目描述与分析 题目描述&#xff1a; 请你编写一个程序&#xff0c;判断给定的整数 n 是否存在于给定的集合中。 输入描述&#xff1a; 有多组测试数据&#xff0c;第一行有一个整数 k&#xff0c;代表有 k 组测…...

生物研究新范式!AI语言模型在生物研究中的应用

–https://doi.org/10.1038/s41592-024-02354-y 留意更多内容&#xff0c;欢迎关注微信公众号&#xff1a;组学之心 Language models for biological research: a primer 研究团队及研究单位 James Zou–Department of Biomedical Data Science, Stanford University, Stan…...

python语言day08 属性装饰器和property函数 异常关键字 约束

属性装饰器&#xff1a; 三个装饰器实现对私有化属性_creat_time的get&#xff0c;set&#xff0c;del方法&#xff1b; 三个装饰器下的方法名都一样&#xff0c;通过message.creat_time的不同操作实现调用get&#xff0c;set&#xff0c;del方法。 __inti__&#xff1a; 创建并…...

day01JS-数据类型-01

1. 浏览器内核 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎&#xff0c;渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同&#xff0c;因此同一网页在不同的内核的浏览器里的渲染&#xff08;显示&#xff09;…...

MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)

专栏往期文章,包含本章 MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 手动实现一种基于高度覆盖值的建筑物点云提取方法,适用于高大的城市建筑物,比只利用高度提取建筑物的方法更加稳定和具有价值,主要…...

git的下载与安装(Windows)

Git是一个开源的分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称DVCS&#xff09;&#xff0c;它以其高效、灵活和强大的功能&#xff0c;在现代软件开发中扮演着至关重要的角色。 git官网&#xff1a;Git (git-scm.com) 1.进入git官网 2…...

腾讯云AI代码助手 —— 编程新体验,智能编码新纪元

阅读导航 引言一、开发环境介绍1. 支持的编程语言2. 支持的集成开发环境&#xff08;IDE&#xff09; 二、腾讯云AI代码助手使用实例1. 开发环境配置2. 代码补全功能使用&#x1f4bb;自动生成单句代码&#x1f4bb;自动生成整个代码块 3. 技术对话3. 规范/修复错误代码4. 智能…...

使用 ESP32 和 TFT 屏幕显示实时天气信息 —— 基于 OpenWeatherMap API

实时监测环境数据是一个非常常见的应用场景&#xff0c;例如气象站、智能家居等。这篇博客将带你使用 ESP32 微控制器和一个 TFT 屏幕&#xff0c;实时显示当前城市的天气信息。通过 OpenWeatherMap API&#xff0c;我们能够获取诸如温度、天气情况以及经纬度等详细的天气数据&…...

高阶数据结构——B树

1. 常见的搜索结构 以上结构适合用于数据量相对不是很大&#xff0c;能够一次性存放在内存中&#xff0c;进行数据查找的场景。如果数据量很大&#xff0c;比如有100G数据&#xff0c;无法一次放进内存中&#xff0c;那就只能放在磁盘上了&#xff0c;如果放在磁盘上&#xff0…...

Vue2中watch与Vue3中watch对比和踩坑

上一节说到了 computed计算属性对比 &#xff0c;虽然计算属性在大多数情况下更合适&#xff0c;但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法&#xff0c;来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时&#…...

在Java程序中执行Linux命令

在Java中执行Linux命令通常涉及到使用Java的运行时类 (java.lang.Runtime) 或者 ProcessBuilder 类来启动一个外部进程 1. 使用 Runtime.exec() Runtime.exec() 方法可以用来执行一个外部程序。它返回一个 Process 对象&#xff0c;可以通过这个对象与外部程序交互&#xff0…...

微信小程序在不同移动设备上的差异导致原因

在写小程序的时候用了rpx自适应单位&#xff0c;但是还是出现了在不同机型上布局不统一的问题&#xff0c;在此记录一下在首页做一个输入框&#xff0c;在测试的时候&#xff0c;这个输入框在不同的机型上到处跑&#xff0c;后来排查了很久都不知道为什么会这样 解决办法是后 …...

快速体验fastllm安装部署并支持AMD ROCm推理加速

序言 fastllm是纯c实现&#xff0c;无第三方依赖的高性能大模型推理库。 本文以国产海光DCU为例&#xff0c;在AMD ROCm平台下编译部署fastllm以实现LLMs模型推理加速。 测试平台&#xff1a;曙光超算互联网平台SCNet GPU/DCU&#xff1a;异构加速卡AI 显存64GB PCIE&#…...

报错:java: javacTask: 源发行版 8 需要目标发行版 1.8

程序报错&#xff1a; Executing pre-compile tasks... Loading Ant configuration... Running Ant tasks... Running before tasks Checking sources Copying resources... [gulimail-coupon] Copying resources... [gulimail-common] Parsing java… [gulimail-common] java…...

【数据结构篇】~单链表(附源码)

【数据结构篇】~链表 链表前言链表的实现1.头文件2.源文件 链表前言 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1、链式机构在逻辑上是连续的&#xff0c;在物理结构上不一定连续​ 2、结点一般是从…...

旋转图像(LeetCode)

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 解题 def rotate(matrix):n len(matrix)# 矩阵转置for i in range(n):for…...

入门 - vue中v-model的实现原理和完整用法详解

v-model介绍 v-model是vue的双向绑定的指令&#xff0c;能将页面上控件输入的值同步更新到相关绑定的data属性&#xff0c;也会在更新data绑定属性时候&#xff0c;更新页面上输入控件的值。在view层&#xff0c;model层相互需要数据交互&#xff0c;即可使用v-model。 双向绑…...

【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例

中国证监会在 2020 年启动了区块链建设试点工作&#xff0c;提出建设基于区块链的场外市场登记系统和交易报告库&#xff0c;利 用区块链去中心化、不易篡改、安全稳定等技术特点&#xff0c;构建区域性股权市场数字化信任机制&#xff0c;为区域性股权市场 提供基础支撑设施。…...

Nginx反向代理和前后端分离项目打包部署

Nginx反向代理 Nginx的定位&#xff1a;主要用于做反向代理&#xff0c;一般都是用它来做前端页面的服务器&#xff0c;动态资源代理到后端服务器。这样做的好处是可以避免跨域请求带来的不便。 使用Nginx主要是对Nginx中的nginx.conf文件进行配置&#xff1a; 虚拟主机配置…...

Spring 中ApplicationContext

ApplicationContext 是 Spring 框架中最重要的接口之一&#xff0c;用于提供 Spring IoC 容器的功能。它是一个比 BeanFactory 更高级的容器&#xff0c;负责管理 Spring bean 的生命周期&#xff0c;同时提供对各种企业服务的集成&#xff0c;例如事件传播、国际化、弱引用等。…...

python之时间 datetime、date、time、timedelta、dateutil

在 Python 中&#xff0c;处理日期和时间的常用库是 datetime。此外&#xff0c;还有一些第三方库如 pytz 和 dateutil 可以帮助处理时区和日期解析。 1. 使用 datetime 模块 导入模块 from datetime import datetime, date, time, timedelta获取当前日期和时间 now datet…...

【机器学习第11章——特征选择与稀疏学习】

机器学习第11章——特征选择与稀疏学习 11.特征选择与稀疏学习11.1子集搜索与评价子集搜索子集评价 11.2 过滤式选择11.3 包裹式选择11.4 嵌入式选择11.5 稀疏表示与字典学习稀疏表示字典学习 11.6 压缩感知 11.特征选择与稀疏学习 11.1子集搜索与评价 特征&#xff1a;描述物…...

LeetCode-day43-3137. K 周期字符串需要的最少操作次数

LeetCode-day43-3137. K 周期字符串需要的最少操作次数 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个长度为 n 的字符串 word 和一个整数 k &#xff0c;其中 k 是 n 的因数。 在一次操作中&#xff0c;你可以选择任意两个下标 i 和 j&#x…...

基于springboot的智能家居系统

TOC springboot198基于springboot的智能家居系统 研究背景与现状 时代的进步使人们的生活实现了部分自动化&#xff0c;由最初的全手动办公已转向手动自动相结合的方式。比如各种办公系统、智能电子电器的出现&#xff0c;都为人们生活的享受提供帮助。采用新型的自动化方式…...

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(七)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

C:每日一练:单身狗(2.0版本)

前言&#xff1a; 今天在刷题的时候突然看到一道题&#xff0c;疑似一位故题。仔细一看&#xff0c;欸&#xff01;这不是就是单身狗的升级版吗&#xff1f;我想那必须再安排一篇&#xff0c;不过由于本篇文章与上一篇单身狗文章所涉及的知识点基本相同&#xff0c;所以还请大…...

打破接口壁垒:适配器模式让系统无缝对接

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间协同工作。主要用途是将一个类的接口转换成客户期望的另一个接口&#xff0c;使得原本接口不兼容的对象可以一起工作。 一、适配器模式的组成 目标接口&#xff08…...

U-Boot 命令使用

U-Boot 是一种常用的引导加载程序&#xff0c;用于引导嵌入式系统。它提供了一系列命令以进行系统配置、引导操作和调试。 以下是一些常见的 U-Boot 命令及其用法&#xff1a; bootm&#xff1a;从指定的内存地址启动操作系统映像。 用法&#xff1a;bootm [addr] bootz&…...

谷歌的高级指令有哪些

今天会分享一些组合用法&#xff0c;这样就能节省许多时间可以放在跟进客户上面&#xff08;本文只介绍谷歌的搜索指令&#xff0c;并无推广&#xff09; part one 谷歌常用的搜索引擎指令&#xff1a; 1、Inurl&#xff0c;在网址中 2、Intext&#xff0c;在网页内容中 3、…...

Redis操作--RedisTemplate(一)介绍

一、介绍 1、简介 RedisTemplate 是 Spring Data Redis 提供的一个高级抽象&#xff0c;由 Spring 官方提供的方便操作 Redis 数据库的一个工具类&#xff0c;支持模板设计模式&#xff0c;使得操作 Redis 更加符合 Spring 的编程模型。还支持序列化机制&#xff0c;可以处理…...

GitLab环境搭建

GitLab环境搭建 一、环境搭建 1、更新系统软件包: sudo yum update2、安装docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install do…...

Socket编程TCP 基础

一.什么是Socket(套接字&#xff09; 定义&#xff1a;就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲&#xff0c;套接字上联应用进程&#x…...

JAVA中的Iterator与ListIterator

Java中的Iterator类是Java集合框架中的一个重要接口&#xff0c;它用于遍历集合中的元素。Iterator提供了三个基本操作&#xff1a;检查是否有下一个元素、获取下一个元素以及移除元素。下面将详细介绍Iterator类及其使用方法&#xff0c;并提供相应的代码例子和中文注释。 一、…...

高校疫情防控web系统pf

TOC springboot365高校疫情防控web系统pf 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行…...

复现nnUNet2并跑通自定义数据

复现nnUNet2并跑通自定义数据 1. 配置环境2. 处理数据集2.1 创建文件夹2.2 数据集格式转换2.3 数据集预处理 3. 训练4. 改进模型4.1 概要4.2 加注意力模块 1. 配置环境 stage1&#xff1a;创建python环境&#xff0c;这里建议python3.10 conda create --n nnunet python3.10 …...

Educational Codeforces Round 169 (Rated for Div. 2)(ABCDE)

A. Closest Point 签到 #define _rep(i,a,b) for(int i(a);i<(b);i) int n,m; int q[N]; void solve() {cin>>n;_rep(i,1,n)cin>>q[i];if(n!2)cout<<"NO\n";else if(abs(q[1]-q[2])!1)cout<<"YES\n";else cout<<"…...

成为Python砖家(2): str 最常用的8大方法

str 类最常用的8个方法 str.lower()str.upper()str.split(sepNone, maxsplit-1)str.count(sub[, start[, end]])str.replace(old, new[, count])str.center(width[, fillchar])str.strip([chars])str.join(iterable) 查询方法的文档 根据 成为Python砖家(1): 在本地查询Pyth…...

深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论

前言&#xff1a; JVM运行时数据区&#xff08;内存布局&#xff09;是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建&#xff0c;并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。 目录 一、由以下5大部分组成 1.…...

JAVA根据表名获取Oracle表结构信息

响应实体封装 import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;/*** author CQY* version 1.0* date 2024/8/15 16:33**/ Data NoArgsConstructor AllArgsConstructor Builder public class OracleTableInfo …...

网络性能优化

网络性能优化是确保网络稳定性、速度和可靠性的关键步骤。优化过程通常包括诊断问题、识别瓶颈以及实施具体的解决方案。以下是关于如何进行网络性能优化的详细指南&#xff1a; 一、问题诊断 网络性能监控 网络流量分析工具&#xff1a;使用Wireshark、NetFlow、Ntop等工具监…...