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

C++GO语言微服务之Dockerfile docker-compose②

目录

 

01 12-yaml文件书写规则01 12-yaml文件书写规则

02 13-yaml中的数据类型

03 14-docker-compose配置文件格式

04 15-docker-compose中的关键字

05 16-prots和volumes关键字的使用

06 17-volumes_from的使用

07 18-extends的使用

08 19-networks的使用

09 20-docker-compose启动和关闭容器

10 21-docker-compose的start stop rm命令


 

01 12-yaml文件书写规则01 12-yaml文件书写规则

2. docker-compose
Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker
Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用
docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用
多个容器进行开发的场景。
知道yaml文件格式
docker-compose工具工作的时候需要使用一个配置文件
默认的名字: docker-compose.yaml/yml
docker-compose中常用关键字
docker-compose操作命令
启动, 关闭, 查看

02 13-yaml中的数据类型

2.1 docker-compose 的安装
#
# 当一个镜像A被作为其他镜像B的基础镜像时,这个触发器才会被执行,
# 新镜像B在构建的时候,会插入触发器中的指令。
ONBUILD [command]
# 原始镜像 -> 纯净版
-> 修改 ONBUILD ["echo", "hello,linux"]
# 基于原始镜像制作新镜像 -> 镜像A
-> 启动镜像A -> 不会输出hello, linux
# 基于镜像A制作了镜像B
-> 启动镜像B -> 会输出 hello, linux
1
2
3
4
5
6
7
8
9
10
11
12
构建新镜像的时候不使用缓存机制
docker build -t 新镜像名:版本号 --no-cache
1
2 2.2 yaml 文件格式
#
YAML有以下基本规则: 1、大小写敏感 2、使用缩进表示层级关系 3、禁止使用tab缩进, 只能使用空格键
4、缩进长度没有限制(只能使用空格缩进),只要元素对齐就表示这些元素属于一个层级。 5、使用#表示注
释 6、字符串可以不用引号标注
"字符串"
'字符串'
字符串
123 -> 整数
123a
yaml中的三种数据结构
map - 散列表
list - 数组
scalar - 纯量
#安装依赖工具
sudo apt-get install python-pip -y
#安装编排工具
sudo pip install docker-compose
#查看编排工具版本
sudo docker-compose version
#查看命令帮助
docker-compose --help

03 14-docker-compose配置文件格式

 

04 15-docker-compose中的关键字

2.2 yaml 文件格式
#
YAML有以下基本规则: 1、大小写敏感 2、使用缩进表示层级关系 3、禁止使用tab缩进, 只能使用空格键
4、缩进长度没有限制(只能使用空格缩进),只要元素对齐就表示这些元素属于一个层级。 5、使用#表示注
释 6、字符串可以不用引号标注
"字符串"
'字符串'
字符串
123 -> 整数
123a
yaml中的三种数据结构
map - 散列表
list - 数组
scalar - 纯量

05 16-prots和volumes关键字的使用

字符串
布尔值
- true
- false
整数
浮点数
- 12.1
NULL
- 使用 ~ 来表示
1
2
3
4
5
6
7
8
9
# 1
Websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
# 使用json表示
{"Websites":{"YAML": "yaml.org", "Ruby": "ruby-lang.org" }}
# 2
languages:
- Ruby
- Perl
- Python
- c
# 使用json表示
{"languages":["Ruby", "Perl", "Python", "c"]}
# 3
-
- Ruby
- Perl
- Python
-
- c
- c++
- java
# 使用json表示
[["Ruby", "Perl", "Python"], ["c", "c++", "java"]]
# 4
-
id: 1
name: huang
-
id: 2
name: liao
# 使用json表示
[{"id":1, "name":"huang"}, {"id":2, "name":"liao"}]

06 17-volumes_from的使用

2.3 docker-compose 配置文件
#
一份标准配置文件应该包含
version
services
networks
version: '2' # docker-compose的版本
services: # 服务
web: # 服务名, 自己起的, 每个服务器名对应一个启动的容器
image: nginx:latest # 容器是基于那个镜像启动 的
container_name: myweb
ports: # 向外开发的端口
- 8080
networks: # 容器启动之后所在的网络
- front-tier
environment: # ENV
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: docker-compose
command: tree -L 3
extends:
file: common.yml
service: webapp
lb:
image: dockercloud/haproxy
ports:
- 80:80
networks:
- front-tier
- back-tier
volumes: # 数据卷挂载 docker run -v xxxx:xxxx
- /var/run/docker.sock:/var/run/docker.sock
depend_on:
- web
- redis
- lb
redis:
image: redis
networks:
- back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge

07 18-extends的使用

一份标准配置文件应该包含
version
services
networks
version: '2' # docker-compose的版本
services: # 服务
web: # 服务名, 自己起的, 每个服务器名对应一个启动的容器
image: nginx:latest # 容器是基于那个镜像启动 的
container_name: myweb
ports: # 向外开发的端口
- 8080
networks: # 容器启动之后所在的网络
- front-tier
environment: # ENV
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: docker-compose
command: tree -L 3
extends:
file: common.yml
service: webapp
lb:
image: dockercloud/haproxy
ports:
- 80:80
networks:
- front-tier
- back-tier
volumes: # 数据卷挂载 docker run -v xxxx:xxxx
- /var/run/docker.sock:/var/run/docker.sock
depend_on:
- web
- redis
- lb
redis:
image: redis
networks:
- back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44三大部分,其中最关键的就是 services 和 networks 两个部分,下面先来看 services 的书写规则。
Image
在 services 标签下的第二级标签是 web,这个名字是用户自己自定义,它就是服务名称。 image 则是指定
服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
command
使用 command 可以覆盖容器启动后默认执行的命令。
container_name
容器启动之后的名字
如何查看:
docker ps
depends_on
一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,必然会因为容器依赖问题而启动失
败。例如在没启动数据库容器的时候启动了应用容器,这时候应用容器会因为找不到数据库而退出,为了
避免这种情况我们需要加入一个标签,就是 depends_on,这个标签解决了容器的依赖、启动先后的问题。
environment
environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中。
services:
web:
image: 镜像名/镜像ID
1
2
3
command: tree -L 3
# 也可以写成类似 Dockerfile 中的格式:
command: [tree, -L, 3]

08 19-networks的使用

environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: docker-compose
1
2
3
4
ports:
- "3000" # 宿主机的端口是随机分配的, 3000是容器开发的对外端口 // -P
- "8000:8000" -> 一般这样写就可以
- "127.0.0.1:8001:8001"
- 55:55 -> 不推荐这样写
1
2
3
4
5
docker run -v /home/go:/xxx
# 宿主机或容器的映射路径如果不存在, 会自动创建出来
volumes:
# 这是宿主机目录, 容器的映射目录会自动创建
- /var/lib/mysql
# 按照绝对路径映射
- /opt/data:/var/lib/mysql
# 相对路径的映射
# ./ 目录是docker-compose配置文件所在的目录
# 如果是相对路径, ./是必须要写的, ../
- ./cache:/tmp/cache
# 指定容器中对文件的操作权限, 默认rw
- /home/go/configs:/etc/configs/:ro
# 文件映射
- ./temp/a.txt:/temp/b.sh

09 20-docker-compose启动和关闭容器

volumes_from
从其它容器或者服务挂载数据卷,可选的参数是 :ro或者 :rw,前者表示容器只读,后者表示容器对数据卷
是可读可写的。默认情况下是可读可写的。
extends
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: docker-compose
1
2
3
4
ports:
- "3000" # 宿主机的端口是随机分配的, 3000是容器开发的对外端口 // -P
- "8000:8000" -> 一般这样写就可以
- "127.0.0.1:8001:8001"
- 55:55 -> 不推荐这样写
1
2
3
4
5
docker run -v /home/go:/xxx
# 宿主机或容器的映射路径如果不存在, 会自动创建出来
volumes:
# 这是宿主机目录, 容器的映射目录会自动创建
- /var/lib/mysql
# 按照绝对路径映射
- /opt/data:/var/lib/mysql
# 相对路径的映射
# ./ 目录是docker-compose配置文件所在的目录
# 如果是相对路径, ./是必须要写的, ../
- ./cache:/tmp/cache
# 指定容器中对文件的操作权限, 默认rw
- /home/go/configs:/etc/configs/:ro
# 文件映射
- ./temp/a.txt:/temp/b.sh
volumes_from:
- service_name # 服务名
- service_name:ro
- container:container_name # 挂载容器
- container:container_name:rw

10 21-docker-compose的start stop rm命令

# 在一个yaml文件中引用另外一个yaml中的设置
extends:
file: common.yml
service: webapp
# docker-compose.yaml
version: '2' # docker-compose的版本
services: # 服务
web: # 服务名, 自己起的, 每个服务器名对应一个启动的容器
extends:
file: sub-compose.yaml
service: demo1
web1: # 服务名, 自己起的, 每个服务器名对应一个启动的容器
image: nginx:latest # 容器是基于那个镜像启动 的
container_name: myweb
ports: # 向外开发的端口
- 8080
networks: # 容器启动之后所在的网络
- front-tier
- back-tier
environment: # ENV
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: docker-compose
command: tree -L 3

 

 

 

 

 

相关文章:

C++GO语言微服务之Dockerfile docker-compose②

目录 01 12-yaml文件书写规则01 12-yaml文件书写规则 02 13-yaml中的数据类型 03 14-docker-compose配置文件格式 04 15-docker-compose中的关键字 05 16-prots和volumes关键字的使用 06 17-volumes_from的使用 07 18-extends的使用 08 19-networks的使用 09 20-docker…...

【计算机视觉】OpenCV实战项目:Face-Mask-Detection 项目深度解析:基于深度学习的口罩检测系统

Face-Mask-Detection 项目深度解析:基于深度学习的口罩检测系统 一、项目概述项目特点 二、项目运行方式与执行步骤(一)环境准备(二)项目结构(三)执行步骤 三、重要逻辑代码解析(一&…...

鸿蒙OSUniApp 实现的语音输入与语音识别功能#三方框架 #Uniapp

UniApp 实现的语音输入与语音识别功能 最近在开发跨平台应用时,客户要求添加语音输入功能以提升用户体验。经过一番调研和实践,我成功在UniApp项目中实现了语音输入与识别功能,现将过程和方法分享出来,希望对有类似需求的开发者有…...

python:一个代理流量监控的媒体文件下载脚本

前言 一个mitmproxy代理服务应用,作用是监听系统流量,并自动下载可能的video媒体文件到本地。 如果你没有安装mitmproxy或没有做完准备工作,请参考我的这篇文章: python:mitmproxy代理服务搭建-CSDN博客 文件架构目录…...

openfeign与dubbo调用下载excel实践

一、前言 openfeign和dubbo均是rpc框架 RPC(Remote Procedure Call,远程过程调用)框架 是一种允许程序像调用本地方法一样调用远程服务器上函数的技术。它隐藏了底层网络通信的复杂性,让开发者可以专注于业务逻辑,实现…...

Android多媒体——媒体start流程分析(十三)

当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。 一、媒体播放流程 对于媒体播放流程的 Java 层和 JNI 层与前面的示例基本相同,这里不再重复展示了,我们直接从 mediap…...

数据库系统概论(八)SQL单表查询语言超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论(八)SQL单表查询语言超详细讲解(附带例题表格对比带你一步步掌握) 前言一、创建表(了解一下就好,后面会详细讲)二、数据查询的概念2.1 什么是数据查询?2.2 数据查询的…...

【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners

【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 I…...

C++23 中的 ranges::starts_with 与 ranges::ends_with

文章目录 功能介绍ranges::starts_withranges::ends_with 示例代码编译器支持总结 C23 标准引入了 ranges::starts_with 和 ranges::ends_with,这两个算法由提案 P1659R3 提出,旨在为任意范围提供检查前缀和后缀的功能。 功能介绍 ranges::starts_wit…...

2025 uniapp的请求封装工具类以及使用【拿来就用】

一、创建一个http请求封装的js文件,名字自定义:my_http.js /*** 基础API请求地址(常量,全大写命名规范)* type {string}* constant*/ let BASE_URL //通过环境来判断基础路径 if (process.env.NODE_ENV development…...

Axure设计之内联框架切换页面、子页面间跳转问题

在Axure中,你可以通过以下步骤实现主页面中的内联框架在点击按钮时切换页面内容,从A页面切换到B页面。(误区:子页面之间切换不要设置“框架中打开链接”然后选“父级框架”这个交互) 主框架页面(左侧导航展…...

PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结

笔记 1 神经网络搭建和参数计算 1.1 构建神经网络模型 import torch import torch.nn as nn # 线性模型和初始化方法 ​ ​ # todo:1-创建类继承 nn.module类 class ModelDemo(nn.Module):# todo:2-定义__init__构造方法, 构建神经网络def __init__(self):# todo:2-1 调用父…...

适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO

​一、软件介绍 文末提供程序和源码下载 该项目利用 Ultralytics 最先进的 YOLO11 模型将您的 iOS 设备转变为用于对象检测的强大实时推理工具。直接从 App Store 下载该应用程序,或浏览我们的指南,将 YOLO 功能集成到您自己的 Swift 应用程序中。 二、…...

why FPGA喜欢FMC子卡?

FMC 即 FPGA Mezzanine Card ( FPGA中间层板卡),由子板模块、载卡两构成。 FMC 载卡:为子板模块提供插槽,使用母座FMC连接器。载卡连接器引脚与具有可配置IO资源的芯片例如FPGA引脚通过PCB设计连接在一起。。 盘古100…...

【优选算法 | 字符串】字符串模拟题精选:思维+实现解析

算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表 在众多字符串算法题中,有一类题目看起来没有太多算法技巧,却经常让人“翻车”——那就是字符串模拟题。这类题型往往不依赖复杂的数据…...

比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述

合肥某车间凌晨两点依然灯火通明,工程师正在调试的银白色设备,即将颠覆整个电动车行业 —— 比亚迪全固态电池产线的曝光,标志着中国新能源汽车产业正式迈入 “技术定义市场” 的新纪元。 一、技术突破的底层逻辑 比亚迪全固态电池的核心竞…...

UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍

PPT下载地址:https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中,Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…...

OpenHarmony轻量系统--BearPi-Nano开发板网络程序测试

本文介绍RISC-V架构海思Hi3861开发板,通过Linux开发环境运行OpenHarmony轻量化系统,下载测试网络例程的过程与步骤。 OpenHarmony操作系统分类 轻量系统(mini system) 面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备&#x…...

k8s 中使用 Service 访问时NetworkPolicy不生效问题排查

背景 针对一个服务如下NetworkPolicy, 表示只有n9e命名空间的POD才能访问 k8s-man 服务 kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata:name: k8s-mannamespace: n9elabels:app: k8s-manversion: v1 spec:podSelector:matchLabels:app: k8s-manversion: v1…...

2025 AI如何重构网络安全产品

威胁检测与防御 利用机器学习算法提升威胁检测能力 :AI能够分析大量的网络数据和行为模式,通过机器学习算法自动识别出潜在的威胁和异常行为。例如,Darktrace的Cyber AI Analyst基于真实SOC数据训练,可推进威胁调查,提…...

ARM杂谈——临界段保护恢复的中断状态可靠吗

0 前言 在MCU中,临界段保护是指在多任务或多线程环境中,确保某段代码在执行时不会被其他任务或中断打断,从而避免数据竞争或不一致的问题。临界段保护通常用于共享资源的访问,如全局变量、硬件寄存器等。 我们有一些常用的临界段…...

数据库MySQL学习——day10()

文章目录 1. 什么是子查询(Subquery)?2. 创建样例表:商品表 products3. 插入示例数据4. 子查询的三种常用位置4.1 子查询在 WHERE 子句中(最常见)4.2 子查询在 FROM 子句中(可以当成临时表&…...

YashanDB V23.4 LTS 正式发布|两地三中心、库级闪回重磅特性上线,生产级可用性再升级

近日,YashanDB V23.4 LTS(Long-Term Support Release)版本正式发布,新版本深度契合关键行业数字化转型对数据库“业务永续、风险可控”的核心诉求,打造两地三中心秒级容灾、库级闪回秒级恢复、MySQL全面兼容等重磅特性…...

AI规则引擎:解锁SQL数据分析新姿势

一、AI 规则引擎与 SQL 的奇妙邂逅 在当今数字化时代,数据如同石油,是企业发展和创新的核心驱动力。而如何从海量的数据中提取有价值的信息,成为了企业面临的关键挑战。人工智能规则引擎和 SQL,作为数据分析领域的两大重要工具&a…...

Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南

简介 在移动开发领域,跨平台技术正在重塑开发范式。Kotlin Multiplatform (KMP) 作为 JetBrains 推出的多平台开发框架,结合了 Kotlin 的简洁性与原生性能优势,使开发者能够高效共享业务逻辑。而 Flutter 凭借其高性能渲染引擎(Skia)和丰富的组件库,成为混合开发的首选方…...

FunASR:语音识别与合成一体化,企业级开发实战详解

简介 FunASR是由阿里巴巴达摩院开源的高性能语音识别工具包,它不仅提供语音识别(ASR)功能,还集成了语音端点检测(VAD)、标点恢复、说话人分离等工业级模块,形成了完整的语音处理解决方案。 FunASR支持离线和实时两种模式,能够高效处理多语言音频,并提供高精度的识别结果。…...

【Spark分析HBase数据】Spark读取并分析HBase数据

Spark读取并分析HBase数据 一、摘要二、实现过程三、小结 一、摘要 Apache Spark 是一个快速、通用的大数据处理引擎,提供了丰富的 API 用于数据处理和分析。HBase 是一个分布式、可扩展的 NoSQL 数据库,适合存储海量结构化和半结构化数据。Spark 与 HB…...

探索直播美颜SDK的核心算法:图像增强与AI美颜技术详解

一款优秀的直播美颜SDK不仅能让主播拥有完美的在线形象,还能帮助平台吸引更多用户。然而,这背后的关键在于其核心算法——从基本的图像增强到前沿的AI美颜技术,每一步都至关重要。今天,我们就来深入探讨这些技术背后的秘密。 一、…...

全新linux网络配置工具nmcli:

1.Linux全新网络管理工具nmcli的使用 ,网络管理命令行工具nmcli 在nmcli中有2个命令最为常用: (1)nmcli connection 表示连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c (2)nmcl…...

LeetCode100.5 盛最多水的容器

对于这题,首先明确的是:盛水的体积取决于两垂线间的距离与两垂线中最短的长度。 那么使用双指针,在每次移动时,只移动其中最短的那个,因为若移动最长的那个,体积不会变大。 class Solution { public:int …...

AI开发者的算力革命:GpuGeek平台全景实战指南(大模型训练/推理/微调全解析)

目录 背景一、AI工业化时代的算力困局与破局之道1.1 中小企业AI落地的三大障碍1.2 GpuGeek的破局创新1.3 核心价值 二、GpuGeek技术全景剖析2.1 核心架构设计 三、核心优势详解‌3.1 优势1:工业级显卡舰队‌‌‌3.2 优势2:开箱即用生态‌3.2.1 预置镜像库…...

Java元注解

Java 元注解(Meta-Annotations) 元注解是指用于注解其他注解的注解,Java 提供了5个内置的元注解: 1. Target 指定注解可以应用的目标元素类型。 Target(ElementType.TYPE) // 只能用于类、接口或枚举 public interface MyAnno…...

FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写

在Xilinx Kintex 7系列FPGA上实现对DDR3 SDRAM的读写,主要依赖Xilinx提供的Memory Interface Generator (MIG) IP核,结合Vivado设计流程。以下是详细步骤和关键点: 1. 准备工作 硬件需求: Kintex-7 FPGA(如XC7K325T&…...

深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察

深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察 前言 GpuGeek专注于人工智能与高性能计算领域的云计算平台,致力于为开发者、科研机构及企业提供灵活、高效、低成本的GPU算力资源。平台通过整合全球分布式数据中心资源&#…...

散列表(1)

散列表概念 键通过散列函数后转换为数组的下标,在对应的下标位置上存储相应的信息 键------>散列函数-------->数组下标------->存储信息 散列函数 散列函数就是一个函数,能够将给定的key转换为特定散列值。hashValuehash(key&…...

E. 23 Kingdom【Codeforces Round 1024 (Div. 2)】

E. 23 Kingdom 思路: 这道题的核心在于如何构造一个数组b,使得每个数的最远两个出现位置之差总和最大。通过分析,我们发现要最大化总美丽值,应尽可能让每个数的首次出现尽可能靠左、末次出现尽可能靠右。这样每个数的距离贡献j-i…...

TTS-Web-Vue系列:Vue3实现侧边栏与顶部导航的双向联动

🔄 本文是TTS-Web-Vue系列的最新文章,重点介绍如何在Vue3项目中实现侧边栏与顶部导航栏的双向联动功能。通过Vue3的响应式系统和组件通信机制,我们构建了一套高效、流畅的导航联动方案,让用户在不同入口都能获得一致的导航体验。 …...

【C++】模板(初阶)

一、模板与泛型编程 我们先来思考一下:如何实现一个通用的交换函数? void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right te…...

大模型微调实战:基于GpuGeek平台的低成本高效训练方案

文章目录 引言一、GpuGeek平台使用入门1. 注册与账号设置2. 控制台功能概览3. 快速创建GPU实例3. 预置镜像与自定义环境 二、GpuGeek平台核心优势解析1. 显卡资源充足:多卡并行加速训练2. 镜像超多:开箱即用的开发环境3. 计费灵活:按需付费降…...

黑马k8s(六)

1.Deployment(Pod控制器) Selector runnginx 标签选择:会找pod打的标签 执行删除之后,pod也会删除,Terminating正在删除 如果想要访问其中的一个pod借助:IP地址端口号访问 假设在某一个瞬间,…...

WEB安全--Java安全--CC1利用链

一、梳理基本逻辑 WEB后端JVM通过readObject()的反序列化方式接收用户输入的数据 用户编写恶意代码并将其序列化为原始数据流 WEB后端JVM接收到序列化后恶意的原始数据并进行反序列化 当调用: ObjectInputStream.readObject() JVM 内部逻辑: → 反…...

16S18S_OTU分析(3)

OTU的定义 OTU:操作分类单元是在系统发生学研究或群体遗传学研究中,为了便于进行分析,人为给某一个分类单元(如品系、种、属、分组等)设置的同一标志。目的:OTU用于将相似的序列归为一类,以便于…...

嵌入式开发学习日志(数据结构--单链表)Day20

一、gdb调试 (一)一般调试步骤与命令 1、gcc -g (调试版本,内含调试信息与源码;eg:gcc -g main.c linklist.c) 2、gdb a.out(调试可执行文件,eg:gdb …...

nginx报错-[emerg] getpwnam(“nginx“) failed in /etc/nginx/nginx.conf:2

报错 - nginx: [emerg] getpwnam(“nginx”) failed in /etc/nginx/nginx.conf:2 问题描述: nginx: [emerg] getpwnam(“nginx”) failed in /etc/nginx/nginx.conf:2 问题原因: 是因为配制文件中使用的启动账户在系统中并没有找到 解决方法&#x…...

Linux系统编程——fork函数的使用方法

在 Linux 系统编程 中,fork() 函数是创建新进程的关键系统调用。fork() 在当前进程(父进程)中创建一个几乎完全相同的子进程。子进程和父进程从调用 fork() 的位置继续执行,但它们是两个独立的进程,每个进程都有自己的…...

Linux进程信号处理(26)

文章目录 前言一、信号的处理时机处理情况“合适”的时机 二、用户态与内核态概念重谈进程地址空间信号的处理过程 三、信号的捕捉内核如何实现信号的捕捉?sigaction 四、信号部分小结五、可重入函数六、volatile七、SIGCHLD 信号总结 前言 这篇就是我们关于信号的最…...

黑马Java跟学.最新AI+若依框架项目开发(一)

黑马Java跟学.最新AI若依框架项目开发.一 前瞻为什么学习若依?AI局限性若依是什么?创新项目开发新方案课程安排前置知识 一、若依搭建若依版本官方非官方 RuoYi-Vue运行后端项目初始化项目Git下载Maven构建 MySQL相关导入sql配置信息 Redis相关启动配置信息 项目运…...

【自学30天掌握AI开发】第1天 - 人工智能与大语言模型基础

自学30天掌握AI开发 - 第1天 📆 日期和主题 日期:第1天 主题:人工智能与大语言模型基础 🎯 学习目标 了解人工智能的发展历史和基本概念掌握大语言模型的基本原理和工作机制区分不同类型的AI模型及其特点理解AI在当前社会中的…...

(十六)Java String类全面解析

一、String类概述 1.1 String的本质 在Java中,String类可能是使用最频繁的类之一,但它也是最容易被误解的类之一。从本质上讲,String代表的是一个不可变的Unicode字符序列。这种不可变性(immutability)是String类设计的核心特性。 java S…...

Android架构之自定义native进程

在Android五层架构中,native层基本上全是c的世界,这些c进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c子进程,也是这众多的c进程,构建了整个android世界的native层。 …...