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

云原生--核心组件-容器篇-5-Docker核心之-容器

1、Docker容器的定义与核心概念

  • 定义:
    Docker容器是基于Docker镜像运行的轻量级、独立、可移植的运行环境,它封装了应用程序及其依赖项,提供了一个隔离的执行空间。容器化应用比传统的虚拟机更加高效,因为它们共享主机操作系统的内核,而不是像虚拟机那样需要完整的操作系统实例。

  • 核心关系:

    • 镜像(Image):只读模板,用于创建容器。它包含运行某个特定应用所需的操作系统、库、环境变量和文件等。
    • 容器(Container):镜像的运行实例,具有读写层(可写层)。可以基于同一个镜像启动多个容器,并且每个容器都是相互隔离的。
      即:镜像如同一个模板,定义了应用程序运行所需的一切要素,而容器则是依据这个模板启动的一个或多个实例。可以把镜像想象成一个软件的安装包,容器就是安装并运行这个软件后的状态。
  • 类比:

    • 镜像:类似“类(Class)”,定义容器的结构。
    • 容器:类似“对象(Object)”,是镜像的具体实例。

2、Docker容器的核心特性

(1)、轻量级与快速启动

  • 原理:
    容器共享宿主机的内核,不需要像虚拟机那样为每个实例分配独立的操作系统,因此占用资源少,仅包含应用程序和依赖,启动速度快。通常,容器可以在几毫秒内启动,而虚拟机可能需要几分钟。
  • 优势:
    • 启动时间<1秒(对比虚拟机的分钟级)。
    • 资源占用极低(仅需应用程序所需资源)。

(2)、隔离性

每个容器都在自己独立的命名空间中运行,与宿主机上的其他进程和容器相互隔离。这意味着容器内的应用程序无法直接访问其他容器或宿主机的资源,除非进行了明确的配置。例如,不同容器可以使用相同的端口而不会发生冲突。

  • 实现技术:
    • 命名空间(Namespaces):隔离进程、网络、文件系统等资源(如PID、NET、MOUNT)。
    • 控制组(Cgroups):限制容器的资源使用(CPU、内存、磁盘I/O)。
  • 效果:
    容器间互不干扰,与宿主机也隔离,确保安全性和稳定性。

(3)、可移植性

由于容器包含了应用程序及其所有依赖,因此可以在任何支持Docker的环境中运行,无论是开发环境、测试环境还是生产环境,都能保证应用程序的一致性。

  • 跨平台运行:
    容器可以在任何支持Docker的环境中运行(Linux、Windows、macOS、云平台)。
  • 环境一致性:
    通过镜像确保开发、测试、生产环境的行为一致,避免“在我的机器上能运行”的问题。

(4)、灵活性

  • 动态管理:
    可随时启动、停止、删除容器,或通过编排工具(如Kubernetes)实现弹性扩缩容。

3、Docker容器的工作原理

(1)、构建与运行流程

  1. 构建镜像:
    通过Dockerfile定义镜像的构建步骤(如安装依赖、复制文件)。
  2. 创建容器:
    使用docker run命令基于镜像启动容器,添加可写层。
  3. 运行与交互:
    容器进程在隔离的环境中运行,所有修改仅影响可写层。
  4. 停止与删除:
    容器停止后,数据默认丢失(除非持久化存储)。

(2)、分层存储机制

  • 镜像层:
    容器继承镜像的只读层,共享宿主机文件系统。
  • 可写层:
    容器启动时在顶层添加读写层,所有修改在此层记录。

理解下镜像层和容器的可写层:

  • 镜像层(Image Layers)
    Docker镜像是由一系列只读层组成的(一条指令代表一个只读层),每层代表镜像的一个变更。例如,当你在Dockerfile中使用一条指令(如RUN, COPY, 或者CMD),它会在前一层的基础上创建一个新的层。这种设计有几个好处:

    • 高效性:因为每一层都是只读的,所以一旦某一层被创建,它的内容就不会改变。这使得Docker可以缓存这些层,并在构建新镜像时重用它们,从而加快构建速度。
    • 分层存储:多个镜像可以共享相同的底层,这样不仅节省了存储空间,也提高了传输效率。
  • 容器的可写层(Container’s Writable Layer)
    当从一个镜像启动一个容器时,Docker会在该镜像的最上层添加一个可写的临时层。这个可写层用于存储容器运行时的所有修改,比如文件系统的变化、环境变量的更新等。关键点包括:

    • 隔离性:容器的所有更改都仅限于其自身的可写层,不会影响到底层镜像或其他基于同一镜像的容器。
    • 持久化选项:如果需要保存容器内的数据或配置更改,可以通过Docker卷(Volumes)或者绑定挂载(Bind Mounts)来实现数据的持久化。否则,在容器停止并删除后,所有在可写层中的更改都会丢失。
  • 示例说明
    简单的Dockerfile来构建一个Nginx服务。
    dockerfile示例:

FROM nginx:latest
COPY ./html /usr/share/nginx/html

解释:

  1. 镜像层:

    • 第一层只读层是获取官方的Nginx镜像。
    • 第二层只读层是将本地的html文件夹复制到镜像中/usr/share/nginx/html目录下。
  2. 容器的可写层:

    • 当你基于这个镜像启动一个容器时,Docker会在这个镜像的顶部添加一个可写层。
    • 如果你在容器内修改了/usr/share/nginx/html/index.html文件,这个修改会被记录在容器的可写层中,而原始镜像保持不变。

这种方式确保了镜像的不可变性和容器间的独立性,同时也允许单个容器在其生命周期内进行必要的自定义调整。通过这种方式,Docker实现了高效、灵活的应用程序部署解决方案。

(3)、生命周期

  • 状态:
    • created:刚创建,未运行。
    • running:容器正在运行。
    • paused:暂停状态(进程挂起)。
    • exited:已停止(正常或异常退出)。
    • dead:停止后被自动删除。

4、Docker容器的存储管理

(1)、数据持久化方案

  • 绑定挂载(Bind Mount):
    将宿主机的目录挂载到容器内,数据持久化到宿主机。

bash示例:

docker run -v /host/path:/container/path my-image
  • Docker卷(Volume):
    Docker管理的独立存储,解耦数据与容器生命周期。

bash示例:

docker volume create my-volume
docker run -v my-volume:/container/path my-image
  • 临时数据:
    容器停止后,默认删除可写层数据(适用于无状态服务)。

(2)、存储驱动

  • 默认驱动:
    根据宿主机类型选择(如overlay2用于Linux)。
  • 功能:
    管理分层文件系统,支持快照和回滚。

5、Docker容器的网络与通信

(1)、网络模式

  • 默认桥接网络(bridge):
    容器通过NAT访问外部网络,容器间可通过IP通信。
  • 主机模式(host):
    容器共享宿主机的网络栈,无网络隔离。
  • 自定义网络:
    通过docker network create定义自定义网络(如overlay网络用于多主机)。

扩展:

  • 什么是NAT?
    NAT(Network Address Translation,网络地址转换)是一种在网络技术中常用的方法,用于修改网络数据包中的源或目标IP地址信息。NAT的主要目的是允许多个设备共享一个公共IP地址来访问互联网,这在IPv4地址资源有限的情况下尤为重要。
    NAT通常部署在一个路由器或者防火墙上,在家庭网络和企业网络中非常常见。当内部网络的设备尝试访问外部网络时,NAT会将该设备的私有IP地址转换为公共IP地址;当响应返回时,NAT再将公共IP地址转换回原始的私有IP地址。

  • 容器通过NAT访问外部网络
    这意味着容器本身可能拥有一个私有的、局域网内的IP地址,这个地址通常是不可路由的(即不能直接从外部网络访问)。当容器尝试与外部网络通信时,宿主机上的NAT机制会将容器发出的数据包的源IP地址替换为主机的公共IP地址,这样请求就能正确到达目的地。当响应返回时,NAT再次发挥作用,将目的IP地址从主机的公共IP转换回容器的私有IP地址,从而实现双向通信。

  • 容器间可通过IP通信
    这意味着在同一台Docker主机上运行的容器可以直接通过它们各自的IP地址进行通信。这些容器通常会被分配到同一个虚拟网络中,默认情况下,Docker使用桥接网络模式(bridge network),在这种模式下,Docker会在宿主机上创建一个虚拟网络交换机,并为每个容器分配一个独立的IP地址。这样一来,容器之间就可以像在同一物理网络中的不同计算机那样相互通信了。
    不过需要注意的是,如果容器分布在不同的Docker主机上,则需要额外的配置(如跨主机网络、overlay网络等)才能让这些容器通过IP地址互相通信。此外,对于位于不同子网或由NAT分隔开来的容器,直接基于IP地址的通信可能会受到限制,这时可能需要用到端口映射或其他网络策略来实现互连。

总结来说,NAT允许容器使用私有IP地址并通过Docker主机的公共IP地址访问外部网络,而容器间的直接IP通信依赖于它们是否处于同一虚拟网络环境中。

(2)、端口映射

  • 语法:
docker run -p <主机端口>:<容器端口> my-image
  • 示例:
docker run -p 8080:80 nginx   将容器的80端口映射到主机的8080端口

6、Docker容器的常用命令

在这里插入图片描述

(1)、docker run

从指定镜像创建并启动一个容器。
bash示例:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

参数:

  • -d:后台运行容器。
  • -p:发布容器的端口到主机上。
  • -v:挂载主机目录到容器中(卷)。

(2)、docker start/stop/restart

分别用于启动、停止和重启容器。
bash示例:

docker start CONTAINER_ID
docker stop CONTAINER_ID
docker restart CONTAINER_ID

(3)、docker ps

列出当前正在运行的容器。
bash示例:

docker ps

使用-a参数可以查看所有容器(包括已停止的)。

(4)、docker exec

在运行中的容器内执行命令。
bash示例:

docker exec -it CONTAINER_ID /bin/bash

这个命令允许你进入容器内部进行调试或修改。

(5)、docker rm

删除一个或多个容器。
bash示例:

docker rm CONTAINER_ID

(6)、与宿主机和其他容器的交互

  • 端口映射
    通过端口映射,可以将容器内的端口暴露给宿主机,使得外部可以访问容器内的应用程序。
    bash示例:
docker run -p 8080:80 nginx

解释:
上述命令将容器内的80端口映射到宿主机的8080端口,这样就可以通过访问宿主机的8080端口来访问容器内运行的Nginx服务。

  • 数据卷挂载
    数据卷是用于在宿主机和容器之间共享数据的机制。可以将宿主机的目录或文件挂载到容器内,这样容器内对挂载点的读写操作实际上是对宿主机上对应目录或文件的操作。
    bash示例:
docker run -v /host/path:/container/path my_app

解释:
此命令将宿主机的 /host/path 目录挂载到容器的 /container/path 目录。

  • 网络通信
    Docker提供了多种网络模式,如桥接网络、主机网络、无网络等。默认情况下,容器使用桥接网络,通过宿主机的网络接口与外部通信。也可以创建自定义网络,让多个容器在同一个网络中相互通信。
    bash示例:
docker network create my_network
docker run --network my_network my_app1
docker run --network my_network my_app2

解释:
上述命令创建了一个名为my_network的自定义网络,并将两个容器my_app1和my_app2加入到这个网络中,这样它们就可以相互通信。

  • 监控容器资源使用情况
    使用docker stats命令可以实时查看容器的CPU、内存、网络和磁盘I/O等资源使用情况。
    bash示例:
docker stats my_container
  • 查看容器日志
    使用docker logs命令可以查看容器的日志信息。
    bash示例:
docker logs my_container

解释:
若要实时查看日志,可以使用 docker logs -f 命令。

7、Docker容器的应用场景

(1)、开发环境一致性

  • 场景:开发者在本地通过容器复现生产环境,减少“在我机器上能工作”的问题。
    bash示例:
docker run -it -v $(pwd):/app my-python-env

(2)、微服务架构

  • 优势:
    • 每个服务独立打包为容器,隔离性强。
    • 通过编排工具(如Kubernetes)实现弹性扩缩容。

(3)、持续集成/持续部署(CI/CD)

开发者可以使用Docker来构建代码,并将其打包成容器,然后在测试或生产环境中轻松部署这些容器。

  • 流程:
    1. 构建镜像并推送到仓库。
    2. 在CI/CD系统中拉取镜像并部署。
  • 工具:Jenkins、GitLab CI、GitHub Actions。

(4)、数据服务隔离

  • 场景:
    在单台宿主机上运行多个数据库实例(如MySQL、PostgreSQL)。

bash示例:

docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root mysql:8.0

8、Docker容器与虚拟机的对比

在这里插入图片描述

9、容器的最佳实践

(1)、最小化镜像
使用轻量级基础镜像(如alpine),减少镜像体积。
(2)、单进程原则
每个容器仅运行一个主进程,避免复杂性。
(3)、持久化数据
使用卷或绑定挂载存储持久化数据,避免容器重启丢失。
(4)、安全加固

  • 使用非root用户运行容器。
  • 限制容器资源(CPU、内存)。
    (5)、监控与日志
    集成监控工具(如Prometheus)和日志系统(如ELK)。

10、常见问题解答

(1)、容器停止后数据丢失怎么办?

  • 解决方案:
    使用卷(Volume)或绑定挂载(Bind Mount)持久化数据。

(2)、如何查看容器的详细信息?

bash示例:

docker inspect <容器ID/名称>    # 查看容器的元数据

(3)、容器与镜像的区别是什么?

  • 镜像:只读模板,用于创建容器。
  • 容器:镜像的运行实例,具有可写层。

11、总结

  • Docker容器是现代DevOps和云原生的核心组件,通过轻量级虚拟化、环境一致性、快速部署等特性,解决了传统应用部署的痛点。
  • 关键价值:
    • 隔离性:确保应用独立运行。
    • 可移植性:跨平台无缝迁移。
    • 高效性:秒级启动,资源利用率高。

逆风前行,Dare To Be!!!

相关文章:

云原生--核心组件-容器篇-5-Docker核心之-容器

1、Docker容器的定义与核心概念 定义&#xff1a; Docker容器是基于Docker镜像运行的轻量级、独立、可移植的运行环境&#xff0c;它封装了应用程序及其依赖项&#xff0c;提供了一个隔离的执行空间。容器化应用比传统的虚拟机更加高效&#xff0c;因为它们共享主机操作系统的内…...

一、I/O的相关概念

I/O的相关概念 1、I/O I/O即Input和Output&#xff0c;用户进程执行I/O操作&#xff0c;归结起来&#xff0c;也就是向操作系统发出请求&#xff0c;读请求就把数据填到缓冲区里&#xff0c;写数据就把缓冲区里数据排干&#xff0c;目的地可以是磁盘也可以是其他通道。进程通…...

django filter 日期大于当前日期的

在Django中&#xff0c;如果你想要过滤出日期大于当前日期的记录&#xff0c;你可以使用Django的QuerySet API中的__gt&#xff08;大于&#xff09;操作符。这里是如何做到这一点的步骤&#xff1a; 确定你的模型&#xff1a;首先&#xff0c;确保你有一个模型&#xff08;Mo…...

Unreal Engine 实现智慧水库周边环境以及智慧社区模拟的实例

下面分别为你介绍使用 Unreal Engine 实现智慧水库周边环境以及智慧社区模拟的实例。 智慧水库周边环境模拟 1. 场景搭建 地形与地理特征&#xff1a;利用 Unreal Engine 的地形编辑工具&#xff0c;依据水库实际的地理测绘数据构建地形。模拟山脉、丘陵、河流等周边地貌&am…...

[MCU]SRAM

MCU存储体系 1.SRAM 2.FLASH 3.TCM SRAM SRAM&#xff08;Static Random-Access Memory&#xff09;:静态随机存取存储器. 特点&#xff1a;访问速度快、断电丢失、不 SRAM分类 1.系统SRAM&#xff1a;连接在系统总线上&#xff0c;所有外设和CPU都可访问 2.TCM SRAM&…...

【dockerredis】用docker容器运行单机redis

一、实验环境 操作系统&#xff1a;CentOS7.5 Minimal docker版本&#xff1a;18.06-ce redis版本&#xff1a;6.0.6 二、安装docker 关闭selinux # setenforce 0 # sed -i s/^SELINUX.*/SELINUXpermissive/g /etc/selinux/config 下载docker二进制安装包 # yum -y install…...

游戏引擎学习第247天:简化DEBUG_VALUE

欢迎。关于纹理传输的详细情况。 上周我们刚刚完成了纹理下载的相关工作&#xff0c;但实际上并没有完全解决这个问题。问题的核心是&#xff0c;当前关于纹理下载的正确方式仍然存在较大的不确定性。尽管我们在进行纹理下载的工作时已有一定进展&#xff0c;但依旧有不少模糊…...

Super Sample Tasker 学习-1

一、Super-Simple Tasker (SST) 是一个基于事件的、抢占式的、优先级基础的实时操作系统&#xff08;RTOS&#xff09;内核&#xff0c;完全符合 Rate Monotonic Analysis/Scheduling (RMA/RMS) 的要求。 此STT RTOS主要分成两大类&#xff0c;分别是抢占式SST和非抢占式STT0&…...

【C++】类和对象【中上】

目录 一、类与对象1、构造函数2、析构函数3、拷贝构造函数 个人主页<—请点击 C专栏<—请点击 一、类与对象 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默…...

概率论与统计(不确定性分析)主要应用在什么方面?涉及到具体知识是什么?

用户问的是概率论与统计&#xff08;不确定性分析&#xff09;的主要应用方面&#xff0c;涉及的具体知识以及具体公式。首先&#xff0c;我需要确定概率论与统计在哪些领域有应用&#xff0c;比如工程、金融、医学、数据科学等等。然后&#xff0c;具体知识部分应该包括概率论…...

java面向对象编程【高级篇】之多态

目录 &#x1f680;前言&#x1f914;什么是多态&#xff1f;&#x1f31f;多态的优缺点&#x1f4af;优点&#x1f4af;缺点 &#x1f31f;类型转换&#x1f4af;自动类型转换&#x1f4af;强制类型转换 &#x1f680;前言 大家好&#xff01;我是 EnigmaCoder。 本文介绍java…...

低压电工常见知识点

一.工厂用电 1.工厂一般有电源380V和220V。 三相:黄绿红 蓝 双色 助记符:王力宏 分别对应第一相(R),第二相(S)&#xff0c;第三相(T)&#xff0c;零线(N),地线(PE) 单相:红 黑 对应火线(L) 零线(N) 左零右火 二.人体安全电压是36V 三.变压器的讲解 变压器的符号…...

【Android】硬件合成器 HWC

硬件合成器(HWC) 深度解析 一、HWC 基本概念 硬件合成器(Hardware Composer, HWC)是Android显示系统的核心组件&#xff0c;负责高效管理图形层的合成与显示。作为SurfaceFlinger的关键模块&#xff0c;HWC通过硬件加速实现图层合成&#xff0c;显著提升性能并降低功耗。 二…...

【Android】dialogX对话框框架

文章目录 DialogX一、引入二、基础对话框 MessageDialog 和 输入对话框 InputDialog2.1.0 显示一个简单对话框2.1.1 构造对话框2.1.2 按钮点击回调2.2 输入对话框按钮点击回调2.3自定义布局2.4自定义进入和关闭动画 三、等待框WaitDialog和提示框TipDialog3.1 等待框3.2 提示框…...

解决 Elasticsearch 启动错误:failed to obtain node locks

1.遇到的问题&#xff1a; 在使用 Elasticsearch 时&#xff0c;可能会遇到以下错误&#xff1a; java.lang.IllegalStateException: failed to obtain node locks, tried [[path_to_data]] with lock id [0]; maybe these locations are not writable or multiple nodes were…...

DeepSeek:重构人类文明的智能引擎

一、技术革命&#xff1a;从通用智能到认知跃迁 1.1 架构创新&#xff1a;混合专家系统的突破 DeepSeek的混合专家&#xff08;MoE&#xff09;架构实现了对传统Transformer的颠覆性革新。其256个专家模块通过动态路由算法&#xff0c;在处理文本、图像、代码等多模态数据时&…...

(云计算HCIP)HCIP全笔记(九)本篇介绍操作系统基础,内容包含:操作系统组成、分类和定义,Linux的特性结构和Linux版本分类

1. 操作系统基础 1.1 操作系统的定义 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;&#xff0c;是管理和控制计算机硬件与软件资源的计算机程序&#xff08;系统软件&#xff09;。 1.2 操作系统的组成 通常站在用户角度&#xff0c;操作系统由内核和…...

Nginx的默认主配置文件 “/etc/nginx/nginx.conf“ 解读

安装Nginx后的默认主配置文件 “/etc/nginx/nginx.conf” 解读 详见如下配置及注释&#xff1a; # 指定 Nginx 工作进程运行的用户和用户组。这里指定以www - data用户来运行 Nginx 工作进程。 # 在基于 Debian 和 Ubuntu 的系统中&#xff0c;www-data 用户是默认存在的&…...

【AI模型学习】GPT——从v1到v3

文章目录 GPT-1GPT vs BERTGPT-2GPT-3Ai代码 GPT-1 GPT-1&#xff08;Generative Pretrained Transformer 1&#xff09;是 OpenAI 在2018年发布的第一个大规模预训练生成模型。它开创了基于 Transformer 的 预训练-微调 (pretraining-finetuning) 框架&#xff0c;在自然语言…...

用Function Calling让GPT查询数据库(含示例)

在本文中&#xff0c;我们通过一个简单的示例&#xff0c;介绍了 GPT模型结合Function Calling技术查询数据库 的基本流程。 Function Calling 是OpenAI推出的一项功能&#xff0c;允许大模型根据用户提问&#xff0c;自动生成函数调用指令&#xff0c;并由程序端实际执行外部操…...

DHCP 服务器运行流程图

以常见的 DHCP v4 为例,其完整流程如下: 一、客户端请求 IP 地址阶段 DHCPDiscover:客户端启动后,会以广播的形式发送 DHCPDiscover 报文,目的是在网络中寻找可用的 DHCP 服务器。该报文中包含客户端的 MAC 地址等信息,以便服务器能够识别客户端。DHCPOffer:网络中的 D…...

3. 使用idea将一个git分支的部分提交记录合并到另一个git分支

目录 1. 需求&#xff1a; 2. 操作步骤&#xff1a; &#xff08;1&#xff09;步骤一&#xff1a;idea切换项目分支到test上 &#xff08;2&#xff09;步骤二&#xff1a;在log窗口筛选出dev分支的提交记录 &#xff08;3&#xff09;步骤三&#xff1a;选中需要合并的记…...

GAEA情感坐标的技术架构与系统集成

为构建 AI 情感数据层&#xff0c;GAEA 整合了DePIN 网络、GODHOOD ID和情感坐标系三大核心组件&#xff0c;有效安全地整合用户数据&#xff0c;确保数据处理透明、高效、去中心化。架构如下&#xff1a; DePIN 网络&#xff1a;该去中心化基础设施为安全的数据传输和存储提供…...

04.通过OpenAPI-Swagger规范让Dify玩转Agent

dify安装 cd dify cd docker cp .env.example .env docker compose up -d准备自定义工具 我自建的PowerDNS&#xff0c;它的swagger如下&#xff1a; https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml 但需要加上&#x…...

idea软件配置移动到D盘

默认idea的配置在c盘&#xff0c;我现在软件配置已经15G了_(ཀ」 ∠)__ 。 需要关闭idea 移动软件 若是免安装版的直接移动本地软件目录就行了&#xff0c; 安装版的可以使用c盘搬家软件迁移。 移动配置本地文件 原位置&#xff1a; C:\Users\用户\AppData\Local\JetBrains…...

本安型交换机 + TSN:煤矿智能化的关键拼图

第二十三届太原煤炭&#xff08;能源&#xff09;工业技术与装备展览会于4月24日在潇河国际会展中心圆满落幕。作为矿山通信领域的创新企业&#xff0c;光路科技&#xff08;Fiberroad&#xff09;携多款核心产品集中亮相&#xff0c;涵盖万兆TSN矿用交换机、全千兆多光电融合交…...

基于SpringBoot+PostgreSQL+ROS Java库机器人数据可视化管理系统

以下是系统设计的详细方案&#xff1a; 1. 系统架构 ----------------- ------------------------ --------------------- -------------------- | 用户浏览器 | ---->| 前端应用 (SPA) | ---> | Spring Boot 后端 | ---> | ROS…...

机器学习算法-支持向量机SVM

支持向量机-python实现 由于本菜鸟目前还没有学习到软间隔和核函数的处理&#xff0c;so&#xff0c;先分享的硬间隔不带核函数&#xff0c;也就是不涉及非线性可分转化成线性可分的逻辑&#xff0c;后续如果学的懂&#xff0c;就在本篇文章的代码中继续拓展核函数等。 先来看…...

【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试

服务器边缘测试性能测试 1. 长连接连续请求测试2. 超时连接释放测试13. 超时连接释放测试24. 超时连接释放测试35. 数据中多条请求处理测试6. PUT大文件上传测试7. 服务器性能测试 #include "httpserver.hpp" #define WWWROOT "./wwwroot"std::string Requ…...

【Spring Boot】Maven中引入 springboot 相关依赖的方式

Maven中引入 springboot 相关依赖的方式 1. 不使用版本管理&#xff08;不推荐&#xff09; 如果项目中没有统一版本管理&#xff0c;那么每个依赖都必须显式声明 <version>。 示例&#xff1a; <dependency><groupId>org.springframework.boot</group…...

SpringCloud核心组件Eureka菜鸟教程

关于Spring Cloud Eureka的核心概念 Eureka 是 Netflix 开源的一款基于 REST 的服务发现工具&#xff0c;主要用于中间层服务器的云端负载均衡。它通过维护一个服务注册表来实现服务之间的通信1。在 Spring Cloud 中&#xff0c;Eureka 提供了一个高可用的服务注册与发现机制&a…...

DuckDB:现代数据分析的“SQLite“内核革命

在数据工程、数据科学快速演进的今天&#xff0c;一个新的名字正在快速蹿红&#xff1a;DuckDB。 有人称它是数据分析领域的SQLite&#xff0c;也有人称它为下一代轻量级OLAP引擎。 无论哪种称呼&#xff0c;都离不开一个事实&#xff1a; DuckDB 重新定义了小型数据仓库和本地…...

【计算机网络分类全解析】从局域网到广域网的工程实践

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1&#xff1a;局域网IP扫描案例2&#xff1a;VLAN配置 运行结果验证 三、性能对比测试方法论量…...

Spark 技术体系深度总结

一、核心技术架构 1. 分布式计算模型 Spark基于弹性分布式数据集&#xff08;RDD&#xff0c;Resilient Distributed Dataset&#xff09;构建核心抽象&#xff0c;通过分区&#xff08;Partition&#xff09;实现数据分布式存储&#xff0c;每个分区可独立进行并行计算。RDD…...

金融数据分析(Python)个人学习笔记(13):自然语言处理

一、导入库和函数 pip install wordcloud pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba pip install gensimimport pandas as pd import numpy as np import jieba二、载入新闻数据 sinanews pd.read_csv(my_sinanews2.csv,encodinggbk) sinanews结果&a…...

ReACT Agent 实战

1. Agent 概述 关于到底什么是 Agent&#xff0c;目前业界并没有一个统一的定义&#xff0c;比如 OpenAI 倾向于将 Agent 看作是大模型能力的延伸&#xff0c;而 LangChain 则侧重于 Agent 是 workflow 的编排。我们没必要去纠结定义&#xff0c;可以简单理解 Agent 并不是某一…...

【JavaScript】关系运算符--非数值类型、Unicode编码表

1、关系运算符--非数值类型 对于非数值进行比较时&#xff0c;会将其转换为数字然后再比较。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,…...

【Pandas】pandas DataFrame rtruediv

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象&#xff08;如 DataFrame、Series 或标量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

重构数字信任基石:Java 24 网络安全特性的全维度革新与未来防御体系构建

引言&#xff1a;从技术迭代到安全范式的根本性跃迁 在量子计算威胁渐近、分布式系统架构复杂化、数据资产价值指数级增长的 2025 年&#xff0c;Java 平台迎来了自 Java 1.0 以来最具革命性的安全架构升级 ——Java 24 版本。这不仅仅是一次常规的特性更新&#xff0c;而是通…...

HTML倒数

前言 假设您需要一个网页打开后&#xff0c;自动间隔 N 秒进行一次自动刷新&#xff0c;且不依赖 js &#xff0c;那么本文可以帮助到您&#xff0c;以最简单的方式实现需求。 实现代码 TIPS&#xff1a;借助 <meta http-equiv"refresh" content"X"&g…...

【C++】类和对象(上)

文章目录 上文链接一、类&#xff08;class&#xff09;1. 类的定义2. 类与结构体3. 访问限定符4. 类域 二、对象1. 实例化2. 对象大小 三、this 指针1. 什么是 this 指针2. 小练习 上文链接 【C】入门基础知识&#xff08;下&#xff09; 一、类&#xff08;class&#xff09;…...

Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)

Transformer四模型回归打包&#xff08;内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型&#xff09; 目录 Transformer四模型回归打包&#xff08;内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型&#xff09;预测效果基本介绍程序设计参…...

多级缓存入门:Caffeine、Lua、OpenResty、Canal

之前写过——Google Guava Cache简介 本文系统学习一下多级缓存 目录 0.什么是多级缓存商品查询业务案例导入1.JVM进程缓存初识Caffeine实现JVM进程缓存2.Lua语法入门HelloWorld数据类型、变量和循环函数、条件控制3.Nginx业务编码实现多级缓存安装OpenRestyOpenResty快速入门…...

在AWS Glue中实现缓慢变化维度(SCD)的三种类型

根据缓慢变化维度&#xff08;SCD&#xff09;的三种核心类型&#xff08;类型1、类型2、类型3&#xff09;&#xff0c;以下是基于AWS Glue的实现设计、步骤及测试用例&#xff1a; 一、AWS Glue实现SCD的设计与步骤 1. SCD类型1&#xff08;覆盖旧值&#xff09; 设计目标&…...

业务校验工具包-validate-utils介绍

validate-utils介绍 1. 概述 validate-utils是一个基于Hibernate Validator的轻量级校验框架,旨在简化和增强Java应用程序中的数据校验工作。该工具包提供了一系列常见的校验场景,帮助开发人员快速实现数据验证,提高代码的可维护性和可靠性。 2. 功能特性 2.1 集合数据量…...

参数规模:衡量大语言模型体量的标尺

大语言模型的体量差异通过参数数量呈现。业界标杆如GPT-3拥有1750亿参数&#xff0c;Grok-1更达到3140亿级别&#xff0c;而Llama系列则提供70亿至700亿参数的轻量化选择。这里的"70B"并非指训练数据量&#xff0c;而是模型内部结构的复杂度指标——每个参数如同微型…...

JS 中call、apply 和 bind使用方法和场景

call 方法 核心特性 立即执行函数&#xff0c;并显式指定 this 值和逐个传递参数。语法&#xff1a;func.call(thisArg, arg1, arg2, …) 使用场景 借用其他对象的方法 const person { name: "Alice" }; function greet(greeting) {console.log(${greeting}, ${t…...

ZeroGrasp:零样本形状重建助力机器人抓取

25年4月来自CMU、TRI 和 丰田子公司 Woven 的论文“ZeroGrasp: Zero-Shot Shape Reconstruction Enabled Robotic Grasping”。 机器人抓取是具身系统的核心能力。许多方法直接基于部分信息输出抓取结果&#xff0c;而没有对场景的几何形状进行建模&#xff0c;导致运动效果不…...

第2讲、Tensor高级操作与自动求导详解

1. 前言 在深度学习模型中&#xff0c;Tensor是最基本的运算单元。本文将深入探讨PyTorch中两个核心概念&#xff1a; Tensor的广播机制&#xff08;Broadcasting&#xff09;**自动求导&#xff08;Autograd&#xff09;**机制 这些知识点不仅让你更加灵活地操作数据&#…...

(MySQL)表的操作

目录 表的创建 语法 创建表的案例 查看表的结构 修改表的操作 修改表名 ​编辑 添加一个字段(列) 修改一个字段的类型 修改字段名 删除字段名(删除列) 删除指定的表 表的插入数据 数据库的备份和恢复 我们来学习表的操作 表的创建 语法 CREATE TABLE [if not ex…...