Docker基础详解

Docker 技术详解

一、概述

Docker官网:https://docs.docker.com/

菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html

1.1 什么是Docker?

Docker 是一个开源的容器化平台,它允许开发者将应用程序和其依赖项打包到一个称为容器的标准化单元中。容器可以在任何支持 Docker 的环境中运行,确保了应用程序在不同环境中的一致性。

1.2 Docker的发展历程

  • 2013年:Docker项目启动
  • 2014年:Docker 1.0发布
  • 2015年:Docker Compose发布
  • 2016年:Docker Swarm发布
  • 2017年:Docker企业版发布
  • 2018年:Docker Desktop发布
  • 2019年:Docker Desktop for Windows 2.0发布
  • 2020年:Docker Desktop for Mac with Apple Silicon发布
  • 2021年:Docker Compose V2发布
  • 2022年:Docker Desktop 4.0发布

1.3 Docker的优势

  • 环境一致性:确保开发、测试、生产环境的一致性
  • 快速部署:容器化应用可以快速部署和扩展
  • 资源隔离:每个容器都有独立的资源空间
  • 轻量级:相比虚拟机,容器更加轻量级
  • 可移植性:一次构建,到处运行

1.4 Docker的应用场景

  • 微服务架构
  • 持续集成/持续部署(CI/CD)
  • 开发环境标准化
  • 应用程序隔离
  • 快速原型开发

二、安装与配置

2.1 下载地址

官方下载地址
  • Docker Desktop for Windows: https://www.docker.com/products/docker-desktop
  • Docker Desktop for Mac: https://www.docker.com/products/docker-desktop
  • Docker Engine for Linux: https://docs.docker.com/engine/install/
阿里云镜像下载地址
  • Docker CE 镜像:https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/
  • Docker Desktop for Windows:https://mirrors.aliyun.com/docker-toolbox/
  • Docker Desktop for Mac:https://mirrors.aliyun.com/docker-toolbox/

2.2 镜像加速器配置

阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
腾讯云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
网易云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.3 Windows安装

  1. 下载Docker Desktop for Windows
  2. 运行安装程序
  3. 启用WSL2(Windows Subsystem for Linux)
  4. 配置系统要求:
    • Windows 10/11 专业版、企业版或教育版
    • 启用Hyper-V和Windows容器功能
    • 至少4GB RAM

2.4 Linux安装

# Ubuntu安装
sudo apt-get update
sudo apt-get install docker.io# CentOS安装
sudo yum install docker-ce docker-ce-cli containerd.io

2.5 配置Docker

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker命令

3.1 基础命令

# 查看Docker版本
docker version# 查看Docker信息
docker info# 查看帮助
docker --help

3.2 镜像命令

# 查看本地镜像
docker images# 搜索镜像
docker search nginx# 拉取镜像
docker pull nginx:latest# 删除镜像
docker rmi -f 镜像ID

3.3 容器命令

# 运行容器
docker run [参数] 镜像名# 常用参数
-d          # 后台运行
-it         # 交互式运行
-p          # 端口映射
--name      # 容器命名
-v          # 数据卷挂载
--network   # 网络设置

3.4 高级命令

# 查看容器资源使用情况
docker stats# 查看容器日志
docker logs -f 容器ID# 进入容器内部
docker exec -it 容器ID /bin/bash# 查看容器详细信息
docker inspect 容器ID# 查看容器端口映射
docker port 容器ID# 查看容器变更
docker diff 容器ID# 复制文件到容器
docker cp 本地文件路径 容器ID:容器内路径# 从容器复制文件
docker cp 容器ID:容器内路径 本地文件路径

3.5 批量操作命令

# 停止所有容器
docker stop $(docker ps -aq)# 删除所有容器
docker rm $(docker ps -aq)# 删除所有镜像
docker rmi $(docker images -q)# 清理未使用的数据卷
docker volume prune# 清理未使用的网络
docker network prune# 清理所有未使用的资源
docker system prune -a

四、Docker镜像

4.1 镜像原理

  • 镜像是一个轻量级、可执行的独立软件包
  • 包含运行某个软件所需的所有内容
  • 采用分层存储架构

4.2 镜像操作

# 构建镜像
docker build -t 镜像名:标签 .# 推送镜像
docker push 镜像名:标签# 导入导出镜像
docker save -o 文件名.tar 镜像名
docker load -i 文件名.tar

五、容器数据卷

5.1 数据卷概念

  • 数据卷是宿主机中的一个目录或文件
  • 容器数据卷可以实现数据持久化
  • 支持容器间数据共享

5.2 数据卷操作

# 创建数据卷
docker volume create 数据卷名# 挂载数据卷
docker run -v 数据卷名:容器内路径 镜像名# 查看数据卷
docker volume ls

六、DockerFile

6.1 DockerFile指令

# 基础镜像
FROM 镜像名:标签# 维护者信息
MAINTAINER 作者名# 构建参数
ARG 参数名=默认值# 环境变量
ENV 环境变量名=值# 工作目录
WORKDIR 路径# 复制文件
COPY 源路径 目标路径# 添加文件
ADD 源路径 目标路径# 执行命令
RUN 命令# 暴露端口
EXPOSE 端口号# 启动命令
CMD ["命令", "参数"]

6.2 构建过程

  1. 编写Dockerfile
  2. 构建镜像:docker build -t 镜像名 .
  3. 运行容器:docker run -d 镜像名

七、Docker网络原理

7.1 网络模式

  • bridge:桥接模式(默认)
  • host:主机模式
  • none:无网络模式
  • container:容器模式

7.2 网络操作

# 创建网络
docker network create 网络名# 查看网络
docker network ls# 连接容器到网络
docker network connect 网络名 容器名

八、IDEA整合Docker

8.1 安装插件

  1. 打开IDEA设置
  2. 搜索"Docker"
  3. 安装Docker插件

8.2 配置Docker

  1. 配置Docker连接
  2. 设置Docker主机地址
  3. 配置证书路径(如需要)

8.3 使用Docker

  • 构建镜像
  • 运行容器
  • 管理容器
  • 查看日志

九、Docker Compose

9.1 基本概念

  • 用于定义和运行多容器Docker应用
  • 使用YAML文件配置应用服务
  • 一键部署多个容器

9.2 常用命令

# 启动服务
docker-compose up -d# 停止服务
docker-compose down# 查看服务状态
docker-compose ps# 查看服务日志
docker-compose logs

十、Docker Swarm

10.1 集群管理

  • 创建Swarm集群
  • 添加节点
  • 部署服务
  • 管理集群

10.2 常用命令

# 初始化Swarm
docker swarm init# 加入集群
docker swarm join# 部署服务
docker service create# 查看服务
docker service ls

十一、CI/CD Jenkins

11.1 Jenkins安装

  1. 拉取Jenkins镜像
# 拉取Jenkins LTS版本镜像
docker pull jenkins/jenkins:lts# 创建Jenkins数据卷
docker volume create jenkins_home# 运行Jenkins容器
docker run -d \--name jenkins \-p 8080:8080 \-p 50000:50000 \-v jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \jenkins/jenkins:lts
  1. 配置Jenkins
  • 访问 http://localhost:8080
  • 获取初始管理员密码:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  • 安装推荐插件
  • 创建管理员账户
  • 配置Jenkins URL

11.2 配置Docker集成

  1. 安装Docker插件
  • 进入 Manage Jenkins > Manage Plugins
  • 安装以下插件:
    • Docker Pipeline
    • Docker plugin
    • Docker API Plugin
    • docker-build-step
  1. 配置Docker凭据
  • 进入 Manage Jenkins > Manage Credentials
  • 添加Docker凭据:
    • 类型选择:Username with password
    • 添加Docker Hub账号信息
    • 或添加私有镜像仓库凭据
  1. 创建Docker构建任务
// Jenkinsfile示例
pipeline {agent anyenvironment {DOCKER_IMAGE = 'your-app'DOCKER_TAG = 'latest'}stages {stage('Checkout') {steps {git 'your-git-repo-url'}}stage('Build') {steps {sh 'mvn clean package'}}stage('Docker Build') {steps {script {docker.build("${DOCKER_IMAGE}:${DOCKER_TAG}")}}}stage('Docker Push') {steps {script {docker.withRegistry('https://registry.example.com', 'registry-credentials') {docker.image("${DOCKER_IMAGE}:${DOCKER_TAG}").push()}}}}stage('Deploy') {steps {sh """docker pull ${DOCKER_IMAGE}:${DOCKER_TAG}docker-compose up -d"""}}}
}

11.3 自动化部署流程

  1. 代码提交触发构建
  • 配置Git Webhook
    # 在Git仓库中配置Webhook
    - URL: http://your-jenkins-url/github-webhook/
    - Content type: application/json
    - 选择触发事件:Push events
    
  • 设置构建触发器
    // Jenkinsfile中的触发器配置
    triggers {githubPush()// 或使用cron表达式定时触发cron('H/15 * * * *')
    }
    
  • 配置分支策略
    // 多分支流水线配置
    pipeline {agent nonestages {stage('Build') {when {branch 'main'  // 主分支}steps {// 构建步骤}}stage('Test') {when {branch 'develop'  // 开发分支}steps {// 测试步骤}}}
    }
    
  1. 构建Docker镜像
  • 编写Dockerfile
    # 多阶段构建示例
    FROM maven:3.8.4-openjdk-11 AS builder
    WORKDIR /app
    COPY pom.xml .
    COPY src ./src
    RUN mvn clean package -DskipTestsFROM openjdk:11-jre-slim
    WORKDIR /app
    COPY --from=builder /app/target/*.jar app.jar
    EXPOSE 8080
    CMD ["java", "-jar", "app.jar"]
    
  • 配置构建参数
    // Jenkinsfile中的参数配置
    parameters {string(name: 'VERSION', defaultValue: '1.0.0', description: '版本号')choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'], description: '部署环境')booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试')
    }
    
  • 设置构建环境
    // Jenkinsfile中的环境配置
    environment {DOCKER_BUILDKIT = 1MAVEN_OPTS = '-Xmx2048m'JAVA_HOME = tool 'JDK11'
    }
    
  1. 推送到镜像仓库
  • 配置镜像仓库地址
    // Jenkinsfile中的仓库配置
    environment {REGISTRY = 'registry.example.com'REGISTRY_CREDENTIALS = 'registry-credentials'
    }
    
  • 设置镜像标签策略
    // Jenkinsfile中的标签策略
    script {def imageTag = "${env.BUILD_NUMBER}-${env.GIT_COMMIT.take(7)}"docker.build("${REGISTRY}/${DOCKER_IMAGE}:${imageTag}")docker.tag("${REGISTRY}/${DOCKER_IMAGE}:${imageTag}", "${REGISTRY}/${DOCKER_IMAGE}:latest")
    }
    
  • 配置推送权限
    # 配置Docker登录
    docker login registry.example.com -u username -p password# 或使用Jenkins凭据
    withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASSWORD')]) {sh "docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PASSWORD}"
    }
    
  1. 部署到目标服务器
  • 配置部署环境
    # docker-compose.yml示例
    version: '3.8'
    services:app:image: ${DOCKER_IMAGE}:${DOCKER_TAG}ports:- "8080:8080"environment:- SPRING_PROFILES_ACTIVE=${ENVIRONMENT}- DB_HOST=dbdepends_on:- dbdb:image: mysql:8.0environment:- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}volumes:- db_data:/var/lib/mysql
    
  • 设置部署策略
    // Jenkinsfile中的部署策略
    stage('Deploy') {when {branch 'main'  // 仅主分支部署}steps {script {// 滚动更新策略sh """docker-compose pulldocker-compose up -d --no-deps --build app"""}}
    }
    
  • 配置健康检查
    # docker-compose.yml中的健康检查
    services:app:healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]interval: 30stimeout: 10sretries: 3
    

11.4 最佳实践

  1. 安全性配置
  • 使用Docker安全扫描
    # 使用Trivy进行安全扫描
    docker run aquasec/trivy image your-image:tag# 使用Snyk进行安全扫描
    snyk test --docker your-image:tag
    
  • 配置镜像签名
    # 使用Docker Content Trust
    export DOCKER_CONTENT_TRUST=1
    docker push your-image:tag
    
  • 实施访问控制
    # 配置Docker访问控制
    {"authorization-plugins": ["authz-broker"],"tls": true,"tlscacert": "/path/to/ca.pem","tlscert": "/path/to/server-cert.pem","tlskey": "/path/to/server-key.pem"
    }
    
  1. 性能优化
  • 使用多阶段构建
    # 优化后的多阶段构建
    FROM node:16 AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run buildFROM nginx:alpine
    COPY --from=builder /app/dist /usr/share/nginx/html
    COPY nginx.conf /etc/nginx/conf.d/default.conf
    
  • 优化镜像大小
    # 使用.dockerignore排除文件
    .git
    node_modules
    npm-debug.log
    Dockerfile
    .dockerignore
    
  • 配置缓存策略
    # docker-compose.yml中的缓存配置
    services:app:build:cache_from:- your-image:latestcache_to:- type=inline
    
  1. 监控告警
  • 配置构建通知
    // Jenkinsfile中的通知配置
    post {success {emailext body: '构建成功!', subject: '构建通知', to: 'team@example.com'}failure {emailext body: '构建失败!', subject: '构建失败通知', to: 'team@example.com'}
    }
    
  • 设置部署状态监控
    # Prometheus监控配置
    metrics:- name: container_cpu_usagetype: gaugehelp: "Container CPU usage"- name: container_memory_usagetype: gaugehelp: "Container memory usage"
    
  • 配置错误告警
    // Jenkinsfile中的错误处理
    try {sh 'docker-compose up -d'
    } catch (Exception e) {currentBuild.result = 'FAILURE'error "部署失败: ${e.message}"
    }
    
  1. 备份策略
  • 定期备份Jenkins配置
    # Jenkins配置备份脚本
    #!/bin/bash
    BACKUP_DIR="/backup/jenkins"
    DATE=$(date +%Y%m%d)# 备份Jenkins配置
    tar -czf ${BACKUP_DIR}/jenkins_config_${DATE}.tar.gz /var/jenkins_home/# 保留最近30天的备份
    find ${BACKUP_DIR} -name "jenkins_config_*.tar.gz" -mtime +30 -delete
    
  • 备份Docker镜像
    # Docker镜像备份脚本
    #!/bin/bash
    BACKUP_DIR="/backup/docker"
    DATE=$(date +%Y%m%d)# 备份所有镜像
    docker images | grep -v "REPOSITORY" | awk '{print $1":"$2}' | while read image; dodocker save -o ${BACKUP_DIR}/${image//\//_}_${DATE}.tar $image
    done
    
  • 配置数据恢复方案
    # 数据恢复脚本
    #!/bin/bash
    BACKUP_FILE=$1# 恢复Jenkins配置
    tar -xzf ${BACKUP_FILE} -C /var/jenkins_home/# 重启Jenkins服务
    docker restart jenkins
    

十二、故障排查与常见问题

12.1 常见问题解决方案

  1. 容器无法启动
# 查看容器日志
docker logs 容器ID# 检查容器状态
docker inspect 容器ID# 检查端口占用
netstat -tulpn | grep 端口号# 检查容器资源限制
docker stats 容器ID
  1. 镜像构建失败
# 查看构建日志
docker build -t 镜像名 . --progress=plain# 清理构建缓存
docker builder prune# 检查Dockerfile语法
docker build -t 镜像名 . --no-cache
  1. 网络连接问题
# 检查网络配置
docker network inspect 网络名# 检查DNS配置
docker run --rm busybox nslookup 域名# 检查防火墙规则
iptables -L

12.2 性能优化建议

  1. 容器资源限制
# 限制CPU使用
docker run --cpus=2 镜像名# 限制内存使用
docker run --memory=512m 镜像名# 限制IO
docker run --device-read-bps=/dev/sda:1mb 镜像名
  1. 存储优化
# 使用数据卷
docker run -v 数据卷名:容器内路径 镜像名# 使用绑定挂载
docker run -v 本地路径:容器内路径 镜像名# 使用tmpfs
docker run --tmpfs /tmp 镜像名

十三、Docker与Kubernetes集成

13.1 基本概念

  • Pod:Kubernetes中最小的部署单元
  • Service:服务发现和负载均衡
  • Deployment:声明式更新
  • ConfigMap:配置管理
  • Secret:密钥管理

13.2 部署示例

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: your-image:tagports:- containerPort: 8080resources:limits:cpu: "1"memory: "512Mi"requests:cpu: "500m"memory: "256Mi"

13.3 服务配置

# service.yaml
apiVersion: v1
kind: Service
metadata:name: my-app-service
spec:selector:app: my-appports:- port: 80targetPort: 8080type: LoadBalancer

13.4 配置管理

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: my-app-config
data:config.json: |{"database": {"host": "db-service","port": 3306}}

参考资料

  • Docker 官方文档
  • Docker Hub
  • Docker Compose 文档
  • Jenkins 官方文档

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

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

相关文章

FastPillars:一种易于部署的基于支柱的 3D 探测器

FastPillars&#xff1a;一种易于部署的基于支柱的 3D 探测器Report issue for preceding element Sifan Zhou 1 , Zhi Tian 2 , Xiangxiang Chu 2 , Xinyu Zhang 2 , Bo Zhang 2 , Xiaobo Lu11{}^{1}start_FLOATSUPERSCRIPT 1 end_FLOATSUPERSCRIPT11footnotemark: 1 Chengji…

NLP语言模型训练里的特殊向量

1. CLS 向量和 DEC 向量的区别及训练方式 (1) CLS 向量与 DEC 向量是否都是特殊 token&#xff1f; CLS 向量&#xff08;[CLS] token&#xff09;和 DEC 向量&#xff08;Decoder Input token&#xff09;都是特殊的 token&#xff0c;但它们出现在不同类型的 NLP 模型中&am…

字节跳动 UI-TARS 汇总整理报告

1. 摘要 UI-TARS 是字节跳动开发的一种原生图形用户界面&#xff08;GUI&#xff09;代理模型 。它将感知、行动、推理和记忆整合到一个统一的视觉语言模型&#xff08;VLM&#xff09;中 。UI-TARS 旨在跨桌面、移动和 Web 平台实现与 GUI 的无缝交互 。实验结果表明&#xf…

基于Python深度学习的鲨鱼识别分类系统

摘要&#xff1a;鲨鱼是海洋环境健康的指标&#xff0c;但受到过度捕捞和数据缺乏的挑战。传统的观察方法成本高昂且难以收集数据&#xff0c;特别是对于具有较大活动范围的物种。论文讨论了如何利用基于媒体的远程监测方法&#xff0c;结合机器学习和自动化技术&#xff0c;来…

【漫话机器学习系列】168.最大最小值缩放(Min-Max Scaling)

在机器学习和数据预处理中&#xff0c;特征缩放&#xff08;Feature Scaling&#xff09; 是一个至关重要的步骤&#xff0c;它可以使模型更稳定&#xff0c;提高训练速度&#xff0c;并优化收敛效果。最大最小值缩放&#xff08;Min-Max Scaling&#xff09; 是其中最常见的方…

开源测试用例管理平台

不可错过的10个开源测试用例管理平台&#xff1a; PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案&#xff0c;使团队能够在不受限的情况下适应具体的测…

鸿蒙阔折叠Pura X外屏开发适配

首先看下鸿蒙中断点分类 内外屏开合规则 Pura X开合连续规则: 外屏切换到内屏,界面可以直接接续。内屏(锁屏或非锁屏状态)切换到外屏,默认都显示为锁屏的亮屏状态。用户解锁后:对于应用已适配外屏的情况下,应用界面可以接续到外屏。折叠外屏显示展开内屏显示折叠状态…

DRM_CLIENT_CAP_UNIVERSAL_PLANES和DRM_CLIENT_CAP_ATOMIC

drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); drmSetClientCap(fd, DRM_CLIENT_CAP_ATOMIC, 1); 这两行代码用于启用 Linux DRM&#xff08;Direct Rendering Manager&#xff09;客户端的两个关键特性&#xff0c;具体作用如下&#xff1a; 1. drmSetClientCap…

敏捷开发10:精益软件开发和看板kanban开发方法的区别是什么

简介 精益生产起源于丰田生产系统&#xff0c;核心是消除浪费&#xff0c;而看板最初是由丰田用于物料管理的信号卡片&#xff0c;后来被引入软件开发。 Kanban 后来引入到敏捷开发中&#xff0c;强调持续交付和流程可视化。 精益软件开发原则是基于精益生产的原则&#xff0…

用matlab探索卷积神经网络(Convolutional Neural Networks)-3

5.GoogLeNet中的Filters 这里我们探索GoogLeNet中的Filters&#xff0c;首先你需要安装GoogLeNet.在Matlab的APPS里找到Deep Network Designer,然后找到GoogLeNet&#xff0c;安装后的网络是没有右下角的黄色感叹号的&#xff0c;没有安装的神经网络都有黄色感叹号。 一个层&a…

Verilog中X态的危险:仿真漏掉的bug

由于Verilog中X态的微妙语义,RTL仿真可能PASS,而网表仿真却会fail。 目前进行的网表仿真越来越少,这个问题尤其严重,主要是网表仿真比RTL仿真慢得多,因此对整个回归测试而言成本效益不高。 上面的例子中,用Verilog RTL中的case语句描述了一个简单的AND函数,它被综合成AN…

PyTorch中知识蒸馏浅讲

知识蒸馏 在 PyTorch 中,使用 teacher_model.eval() 和冻结教师模型参数是知识蒸馏(Knowledge Distillation)中的关键步骤。 ​1. teacher_model.eval() 的作用 目的: 将教师模型切换到评估模式,影响某些特定层(如 Dropout、BatchNorm)的行为。 ​具体影响: ​Dropo…

Odoo/OpenERP 和 psql 命令行的快速参考总结

Odoo/OpenERP 和 psql 命令行的快速参考总结 psql 命令行选项 选项意义-a从脚本中响应所有输入-A取消表数据输出的对齐模式-c <查询>仅运行一个简单的查询&#xff0c;然后退出-d <数据库名>指定连接的数据库名&#xff08;默认为当前登录用户名&#xff09;-e回显…

ChatGPT 迎来 4o模型:更强大的图像生成能力与潜在风险

OpenAI 对 ChatGPT 进行重大升级&#xff0c;图像生成功能即将迎来新的 4o 模型&#xff0c;并取代原本的 DALLE。此次更新不仅提升了图像生成质量&#xff0c;还增强了对话内容和上传文件的融合能力&#xff0c;使 AI 生成的图像更加智能化和精准化。 4o 模型带来的革新 Ope…

Python 实现的运筹优化系统代码详解(整数规划问题)

一、引言 在数学建模的广袤领域里&#xff0c;整数规划问题占据着极为重要的地位。它广泛应用于工业生产、资源分配、项目管理等诸多实际场景&#xff0c;旨在寻求在一系列约束条件下&#xff0c;使目标函数达到最优&#xff08;最大或最小&#xff09;且决策变量取整数值的解决…

Visual Studio Code配置自动规范代码格式

目录 前言1. 插件安装2. 配置个性化设置2.1 在左下角点击设置按钮 &#xff0c;点击命令面板&#xff08;或者也可以之间按快捷键CtrlShiftP&#xff09;2.2 在弹出的搜索框输入 settings.json&#xff0c;打开首选项&#xff1a;打开工作区设置&#xff1b;2.3 在settings.jso…

【分布式】Hystrix 的核心概念与工作原理​

熔断机制​ Hystrix 的熔断机制就像是电路中的保险丝。当某个服务的失败请求达到一定比例&#xff08;例如 50%&#xff09;或者在一定时间内&#xff08;如 20 秒&#xff09;失败请求数量超过一定阈值&#xff08;如 20 个&#xff09;时&#xff0c;熔断开关就会打开。此时…

TypeScript 中 await 的详解

TypeScript 中 await 的详解 1. 基本概念2. 语法要求3. 工作原理4. 与 Promise 的比较5. 实践中的注意事项总结 本文详细介绍了 TypeScript 中 await 的工作原理、语法要求、与 Promise 的关系以及实践中需要注意的问题&#xff0c;同时针对代码示例进行了优化和补充说明。 1.…

ThreadLocal 深度解析

一、引言 在多线程编程的复杂世界中&#xff0c;数据共享与隔离是一个核心且具有挑战性的问题。ThreadLocal 作为 Java 并发包中的重要工具&#xff0c;为我们提供了一种独特的线程局部变量管理方式&#xff0c;使得每个线程都能拥有自己独立的变量副本&#xff0c;避免了多线…

VMware安装Ubuntu实战分享

在日常开发和学习过程中&#xff0c;很多人都会选择在VMware虚拟机上安装Ubuntu&#xff0c;以便进行Linux环境的体验和开发调试。本文将详细分享在VMware Workstation上安装Ubuntu的全过程&#xff0c;并结合个人经验&#xff0c;提供一些实用的小技巧&#xff0c;帮助大家顺利…