Docker容器五种网络驱动模式详解
Docker 网络用于在容器之间以及容器与外部网络之间提供通信功能。它允许容器在隔离的网络环境中运行,同时也能根据需要与其他容器或外部网络进行交互。通过使用网络驱动,Docker 可以创建不同类型的网络,以满足各种应用场景的需求。
传统上,大多数计算解决方案都被认为是单一用途的解决方案—您通常不会遇到单个主机(或虚拟机)承载多个工作负载(尤其是生产工作负载)的机器。对于容器,情况发生了变化。随着轻量级容器和高级编排平台(如Kubernetes和DC/OS)的出现,在同一主机上运行不同工作负载的多个容器以及分布在多个主机上的应用程序的不同实例是非常常见的。在这种情况下,容器网络有助于允许(或限制)跨容器通信。为了方便这个过程,Docker提供了不同的网络模式。
值得注意的是,Docker的所有网络模式都是通过软件定义网络(SDN)实现的。具体来说,在Linux系统上,Docker修改iptables规则以提供所需的访问/隔离级别。使用Docker的标准安装,可以使用以下网络驱动程序:Bridge 、 Host 、Overlay 、Macvlan、None, 下面详细说明每个网络驱动模式。
bridge 网络(默认网络类型)
-
应用场景
用于在同一宿主机上运行的容器之间进行通信。这是最常见的应用场景,例如,一个 Web 应用容器和一个数据库容器运行在同一台服务器上,它们可以通过 bridge 网络相互连接。比如,一个基于 Django 的 Web 应用容器需要连接到一个 MySQL 容器,就可以使用 bridge 网络实现通信。
-
优势
简单易用,是 Docker 默认的网络模式,对于初学者和大多数常见的容器间通信场景很方便。容器可以自动分配 IP 地址,并且可以通过容器名称进行通信,不需要手动配置复杂的网络设置。例如,在一个开发环境中,多个微服务容器可以快速地通过 bridge 网络连接起来进行开发和测试。
host 网络
-
应用场景
当容器需要直接使用宿主机的网络栈时非常有用。例如,一些性能要求极高的网络应用,如网络性能测试工具(如
iperf
),如果使用 host 网络,容器的网络性能可以更接近直接在宿主机上运行的性能。另外,一些需要与宿主机上特定网络服务紧密集成的容器,比如监控宿主机网络接口的容器,也可以使用 host 网络。 -
优势
网络性能好,因为容器直接使用宿主机的网络接口,减少了网络层的开销。容器的网络端口和宿主机的网络端口是相同的,外部网络访问容器就像直接访问宿主机一样,对于一些需要直接暴露服务的应用比较方便,不需要进行端口映射。
none 网络
-
应用场景
适用于那些完全不需要网络连接的容器。例如,一些只在本地进行数据处理,不需要与外部或其他容器通信的容器,如某些离线的数据处理任务容器,像只进行本地文件格式转换的容器就可以使用 none 网络。
-
优势
提供了最高程度的网络隔离。对于一些安全要求极高的容器,使用 none 网络可以确保容器不会因为网络攻击而受到威胁,因为它根本没有网络连接。同时,对于资源有限的环境,如果不需要网络功能,使用 none 网络可以节省网络相关的资源。
overlay 网络
-
应用场景
用于跨多个 Docker 宿主机的容器之间的通信。在集群环境中,当有多个容器分布在不同的物理服务器上,并且需要相互通信时,overlay 网络就可以发挥作用。例如,在一个分布式的微服务架构中,不同服务器上的微服务容器需要相互协作,就可以通过 overlay 网络实现通信。
-
优势
支持跨主机通信,能够构建复杂的分布式容器网络。它可以通过软件定义网络(SDN)的方式进行配置,提供了灵活的网络拓扑结构。可以将多个不同物理位置的容器连接在一起,形成一个统一的虚拟网络,方便进行容器的部署和管理。
macvlan网络
-
应用场景
当需要为容器分配独立的 MAC 地址,使其在网络中看起来像独立的物理设备时使用。例如,在一些企业网络环境中,需要容器具有独立的网络标识,就像传统的物理服务器一样,这时可以使用 macvlan 网络。
-
优势
容器可以获得真实的物理网络接口的特性,在网络层面上,容器就如同直接连接到网络中的物理设备。这对于需要深度集成到现有物理网络架构中的容器应用很有帮助,并且可以更好地利用网络设备的功能,如 VLAN 等。
bridge示例
首先创建一个简单的 Web 应用容器和一个数据库容器的示例。假设 Web 应用是一个基于 Python Flask 的简单应用,数据库使用 MySQL。
创建一个名为flask_app
的目录,在其中创建app.py
文件,内容如下:
from flask import Flask
from flask_mysqldb import MySQLapp = Flask(__name__)
app.config['MYSQL_HOST'] ='mysql_container' # 使用容器名称来连接数据库
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'test_db'mysql = MySQL(app)@app.route('/')
def index():cur = mysql.connection.cursor()cur.execute("SELECT * FROM test_table")data = cur.fetchall()cur.close()return str(data)if __name__ == "__main__":app.run(host='0.0.0.0', port=5000)
在flask_app
目录下创建Dockerfile
:
FROM python:3.9
WORKDIR /app
COPY. /app
RUN pip install flask flask - mysqldb
EXPOSE 5000
CMD ["python", "app.py"]
对于 MySQL 容器,创建一个mysql
目录,在其中创建init.sql
文件,内容如下:
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(255));
INSERT INTO test_table (data) VALUES ('Test Data');
在mysql
目录下创建Dockerfile
:
FROM mysql:8.0
COPY init.sql /docker - initdb.d/
ENV MYSQL_ROOT_PASSWORD=password
EXPOSE 3306
构建和运行容器:
-
首先构建两个容器:
进入
flask_app
目录,执行docker build -t flask-app.
构建 Flask 应用容器。进入
mysql
目录,执行docker build -t mysql-container.
构建 MySQL 容器。 -
然后运行容器:
先运行 MySQL 容器:
docker run -d --name mysql_container mysql-container
再运行 Flask 应用容器:
docker run -d -p 5000:5000 --name flask_container --link mysql_container flask - app
-
这里
--link
选项用于在flask_container
和mysql_container
之间建立连接,并且由于它们在默认的 bridge 网络下,flask_app
中的代码可以通过容器名称mysql_container
来访问 MySQL 容器。
overlay示例:
假设在一个分布式的微服务架构中有两个微服务,一个是用户服务(user-service
),一个是订单服务(order-service
),它们分布在不同的 Docker 宿主机上。
首先,在两台宿主机上都需要配置 overlay 网络。假设网络名称为my-overlay-network
,可以使用docker network create - d overlay my-overlay-network
命令来创建(这一步需要在支持 overlay 网络的 Docker Swarm 环境中进行)。
对于user-service
,创建user-service
目录,在其中创建app.py
文件,内容如下(简单的示例,假设使用 Flask):
from flask import Flask
import requestsapp = Flask(__name__)@app.route('/user - order - info/<user_id>')
def user_order_info(user_id):order_service_url = "http://order - service:5001/order - for - user/{}".format(user_id)response = requests.get(order_service_url)return response.textif __name__ == "__main__":app.run(host='0.0.0.0', port=5000)
在user-service
目录下创建Dockerfile
:
FROM python:3.9
WORKDIR /app
COPY. /app
RUN pip install flask requests
EXPOSE 5000
CMD ["python", "app.py"]
对于order-service
,创建order-service
目录,在其中创建app.py
文件,内容如下:
from flask import Flaskapp = Flask(__name__)@app.route('/order - for - user/<user_id>')
def order_for_user(user_id):# 简单的示例,返回一个固定的订单信息return "Orders for user {}: [Order 1, Order 2]".format(user_id)if __name__ == "__main__":app.run(host='0.0.0.0', port=5001)
在order-service
目录下创建Dockerfile
:
FROM python:3.9
WORKDIR /app
COPY. /app
RUN pip install flask
EXPOSE 5001
CMD ["python", "app.py"]
-
构建容器:
在第一台宿主机上进入
user-service
目录,执行docker build - t user-service-container.
构建user-service
容器。在第二台宿主机上进入
order-service
目录,执行docker build - t order-service-container.
构建order-service
容器。 -
运行容器:
在第一台宿主机上运行
user-service
容器:docker run -d --network my-overlay-network --name user-service-container user-service-container
在第二台宿主机上运行
order - service
容器:docker run -d --network my-overlay-network --name order-service - container order-service-container
这里,通过
--network my-overlay-network
选项,两个分布在不同宿主机上的容器可以相互通信。user-service
可以通过http://order-service:5001
访问order-service
,实现了跨主机的微服务通信。
host示例:
以iperf
网络性能测试工具为例。
创建iperf
目录,在其中创建Dockerfile
:
FROM ubuntu:latest
RUN apt - get update && apt - get install - y iperf
EXPOSE 5201
CMD ["iperf", "-s"]
构建容器:docker build -t iperf - container.
运行容器:docker run -d --network host --name iperf_server iperf - container
这里--network host
表示容器使用主机网络。在这种模式下,容器的iperf
服务会直接绑定到宿主机的5201
端口(假设没有其他程序占用),就像直接在宿主机上运行iperf - s
一样。当在外部网络中的其他设备上运行iperf - c <宿主机IP>
时,就可以直接连接到这个容器中的iperf
服务进行网络性能测试。
Macvlan网络示例
假设要将一个容器作为一个独立的网络设备连接到企业网络的 VLAN 中。
首先,创建macvlan-container
目录,在其中创建Dockerfile
(以 Ubuntu 为例):
FROM ubuntu:latest
RUN apt-get update && apt-get install - y iputils-ping
EXPOSE 80
CMD ["ping", "8.8.8.8"]
构建容器:docker build -t macvlan-container.
假设企业网络的 VLAN 接口为eth0
,子网为192.168.1.0/24
,网关为192.168.1.1
。创建 macvlan 网络:
docker network create - d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 - o parent = eth0 my-macvlan-network
运行容器:
docker run -d --network my-macvlan-network --name macvlan - container macvlan-container
这个容器使用--network my-macvlan-network
加入 macvlan 网络,它会获得一个独立的 MAC 地址,在网络中就像一个独立的物理设备,可以与企业网络中的其他设备(如通过ping
命令测试与外部的8.8.8.8
通信)进行通信,并且可以根据企业网络的配置(如 VLAN 等)进行相应的网络操作。
None网络示例
假设创建一个简单的文件处理容器,用于将一个文本文件中的内容转换为大写。
创建一个text_processing
目录,在其中创建process.py
文件,内容如下:
def process_file():with open("input.txt", "r") as file:content = file.read()processed_content = content.upper()with open("output.txt", "w") as file:file.write(processed_content)
if __name__ == "__main__":process_file()
text_processing
目录下创建Dockerfile
:
FROM python:3.9
WORKDIR /app
COPY. /app
RUN pip install - - no - network
CMD ["python", "process.py"]
- 构建容器:
docker build -t text-processing-container.
- 运行容器:
docker run -d --network none --name text_processing_container text-processing-container
这个容器使用--network none
选项,意味着它没有网络连接。它只会在本地容器内部执行文件处理任务,从input.txt
读取内容并将处理后的内容写入output.txt
,而不会与外部网络或其他容器进行交互。
相关文章:
Docker容器五种网络驱动模式详解
Docker 网络用于在容器之间以及容器与外部网络之间提供通信功能。它允许容器在隔离的网络环境中运行,同时也能根据需要与其他容器或外部网络进行交互。通过使用网络驱动,Docker 可以创建不同类型的网络,以满足各种应用场景的需求。 传统上&am…...
从客户跟进到库存管理:看板工具赋能新能源汽车销售
在新能源汽车市场日益扩张的今天,门店销售管理变得更加复杂和重要。从跟踪客户线索到优化订单流程,再到团队协作,效率低下常常成为许多门店的“隐形成本”。如果你曾为销售流程不畅、客户管理混乱而苦恼,那么一种简单直观的工具—…...
汽车IVI中控开发入门及进阶(41):视频播放器MPlayer
版本: MPlayer 1.5 2022年已发布。 MPlayer 1.5与最新FFmpeg版本(5.0)和当前FFmpeg开发版本(FFmpeg master)兼容。tarball已经包含一个FFmpeg快照,因此不需要单独获取它。如果想遵循MPlayer和FFmpeg的最新改进,强烈建议你使用开发版本。 MPlayer - The Movie Playerht…...
Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍
概述 伴随电子商务的持续演进,客户对于便利性、速度以及个性化服务的期许急剧攀升。企业务必要探寻创新之途径,以强化自身运营,并优化购物体验。达成此目标的最为行之有效的方式之一,便是将 AI 呼叫助手融入您的电子商务平台。我们…...
看板工具助力餐饮与酒店行业实现数字化转型,提升管理与运营效率
在餐饮与酒店行业,服务质量和客户体验是衡量企业成功的关键因素。随着客户需求的不断多样化以及市场竞争的加剧,传统的管理模式逐渐难以满足高效运营的需求。尤其在高峰期,如何优化内部流程、提高服务效率和响应速度,成为了许多餐…...
网络安全(3)_安全套接字层SSL
4. 安全套接字层 4.1 安全套接字层(SSL)和传输层安全(TLS) (1)SSL/TLS提供的安全服务 ①SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别…...
国标GB28181网页直播平台EasyGBS:网络摄像机中的音频及音频编码技术解析
在网络摄像机领域,音频质量及其编码方式对于视频监控系统的整体性能至关重要。音频作为视频监控系统的重要组成部分,不仅能够提供现场的声音信息,增强监控的实时性和准确性,还能在事件发生后为调查提供宝贵的语音证据。 一、网络摄…...
为何VisualRules更适合技术人员使用
什么是规则引擎 规则引擎是一种软件组件,它允许将业务规则从应用程序的核心代码中分离出来,以一种更加灵活、易于管理和维护的方式来定义、存储和执行这些规则。简单来说,它就像是一个专门处理规则的 “大脑”,可以根据预先设定的…...
PyTorch 2.0 以下版本中设置默认使用 GPU 的方法
PyTorch 2.0 以下版本中设置默认使用 GPU 的方法 在 PyTorch 2.0以下版本中,默认情况下仍然是使用 CPU 进行计算,除非明确指定使用 GPU。在 PyTorch 2.0 以下版本中,虽然没有 torch.set_default_device 的便捷方法,但可以通过显式…...
Redis篇-19--运维篇1-主从复制(主从复制,读写分离,配置实现,实战案例)
1、概述 Redis的主从复制(Master-Slave Replication)是一种数据冗余机制,它允许将一台Redis服务器的数据复制到其他Redis服务器。在主从复制中,有一台主服务器(Master)和一个或多个从服务器(Sl…...
springboot449教学资源共享平台(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统教学资源共享平台信息管理难度大,容错率低&am…...
Unbuntu下怎么生成SSL自签证书?
环境: WSL2 Unbuntu 22.04 问题描述: Unbuntu下怎么生成SSL自签证书? 解决方案: 生成自签名SSL证书可以使用OpenSSL工具,这是一个广泛使用的命令行工具,用于创建和管理SSL/TLS证书。以下是生成自签名…...
Ubuntu18.04——换源
一、前提说明 系统自带的源往往下载很慢,通过换源操作后,往往下载/更新 速度大幅提升 每种版本对应的不一样,例如Ubuntu18.04和Ubuntu20.04的有差异,所以换源需要根据不同版本对应的命令 二、操作步骤 0.备份原先的 /etc/apt/sou…...
crictl和ctr与docker的命令的对比
crictl是遵循CRI接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像 ctr是containerd的一个客户端工具, 接下来就是crictl的的常见命令,其中能完全替代docker命令的参照下列表格 操作crictldocker查看运行容器…...
Java 技术面试常见问题解析
1.说说Mybatis的缓存机制: MyBatis 是一个优秀的持久层框架,它简化了企业应用开发中数据库操作的代码。MyBatis 提供了一级缓存和二级缓存机制来优化对数据库的访问。 一级缓存 (SqlSession级别的缓存) 一级缓存是 MyBatis 中默认开启且无法关闭的缓存机制。它存…...
数据结构,链表的简单使用
任意位置删除: void Any_Del(LinkListPtr h,int a)//任意删 {if(NULLh||a>h->len){printf("删除失败");}LinkListPtr ph;for(int i0;i<a-1;i){pp->next;}LinkListPtr p2p;p2p2->next;p->nextp->next->next;free(p2);p2NULL;h-&g…...
go引用包生成不了vendor的问题
比如我要引入github.com/jinzhu/gorm这个包. 1. 首先获取包 go get github.com/jinzhu/gorm 这时go.mod文件中也有这个包依赖信息了. 2. 然后构建vendor go mod vendor 结果发现vendor目录下没有生成对应的包, 而且modules.txt也注释掉这个包了. 原因是没有其进行引用, go…...
C语言——实现求出最大值
问题描述:利用C语言自定义函数求出一维数组里边最大的数字 //利用函数找最大数#include<stdio.h>int search(int s[9]) //查找函数 {int i , max s[0] , max_xia 0;for(i0;i<9;i){if(s[i] > max){max_xia i;max s[max_xia];}}return max; } in…...
【CSS in Depth 2 精译_081】 13.1:CSS 渐变效果(下)——CSS 径向渐变(13.1.3)+ CSS 锥形渐变(13.1.4)
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点(上)13.1.2 颜色插值方法(中)13.1.3 径…...
【SH】Ubuntu Server 24搭建Web服务器访问Python程序研发笔记
文章目录 说个问题写个方案一、安装Ubuntu Server二、安装Web服务器采用Nginx服务器 三、安装Python及依赖创建项目虚拟环境 四、安装Python Web框架采用Flask框架创建和运行Flask应用(以后的重点) 五、安装WSGI服务器采用Gunicorn 六、配置Nginx七、验证…...
创建项目以及本地仓库和远程仓库并上传项目
创建项目以及本地仓库和远程仓库并上传项目 其详细流程如下: 1、本地创建项目 2、创建本地仓库(若使用idea在创建项目时选择了创建.git本地仓库,则此步骤省略) 进入到你需要上传的项目的目录下,右键找到Git Bah He…...
代码开发相关操作
使用Vue项目管理器创建项目:(vue脚手架安装一次就可以全局使用) windowR打开命令窗口,输入vue ui,进入GUI页面,点击创建-> 设置项目名称,在初始化git下面输入:init project&…...
ElasticSearch系列:利用runtime field实现日期字符串实现日期范围查询
在Elasticsearch中,如果你有一个时间字符串字段,并且你希望在查询时将其转换为date类型以便进行日期范围查询或其他日期相关的操作,你可以使用runtime_fields来实现这一转换。不过,与转换为UNIX时间戳不同,Elasticsear…...
前端:如何在静态目录下显示一张图片
假设已经配置(或默认配置好)public文件夹是静态资源文件夹,public文件夹中的资源会直接映射到根URL。 1. 我的前端图片保存路径是: F:\front\public\icon-favo.png 前端地址是:http://localhost:20002 我想要访问…...
Java设计模式 —— 【结构型模式】桥接模式详解
前言 现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。 首先我们看看用继承来实现: 我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。 试想…...
Qt同步读取串口
头文件 #include "InsScpi.h" #include <QObject> #include <QSerialPort>class TestSerial : public QObject {Q_OBJECT public:explicit TestSerial(QObject *parent nullptr);//打开设备bool openDevice(const QString &portName);//关闭设备…...
MySQL高可用
MySQL主从复制的过程是怎么样的 分为3个阶段: 写入binlog:主库修改数据后,会写入binlog日志,从库连接到主库后,主库会创建一个log dump线程,用于发送bin log的内容同步binlog:从库会专门创建一…...
OpenHarmony-3.HDF Display子系统(6)
Display 子系统 1.Display驱动模型介绍 当前操作系统和 SOC 种类繁多,各厂商的显示屏器件也各有不同,随之针对器件的驱动代码也不尽相同,往往是某一款器件驱动,只适用于某单一内核系统或 SOC,如果要迁移到其他内核或者…...
第10章:CSS最佳实践 --[CSS零基础入门]
代码组织 在CSS开发中,良好的代码组织和最佳实践对于项目的可维护性和扩展性至关重要。以下是两个示例,展示了如何遵循CSS最佳实践来组织代码。 示例 1: 使用 BEM(Block Element Modifier)命名法 BEM 是一种用于提高 CSS 可读性…...
备战美赛!2025美赛数学建模C题模拟预测!用于大家练手模拟!
完整的思路代码模型见文末 2025 美赛数学建模 C 题 模拟题:城市交通拥堵指数的预测与管理策略 背景 随着全球城市化进程的加快,交通拥堵问题成为城市发展的重要挑战之一。交通拥堵不仅影响居民出行效率,还增加了能源消耗和碳排放。近年来&…...
ESP8266 Ubuntu 安装
文章参考:https://blog.csdn.net/AUST_129/article/details/119406722文章浏览阅读1.8k次,点赞4次,收藏19次。参考:https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/linux-setup.htmlhttp://aicloud…...
tryhackme-Pre Security-Defensive Security Intro(防御安全简介)
任务一:Introduction to Defensive Security防御安全简介 此room的两个要点: Preventing intrusions from occurring 防止入侵发生Detecting intrusions when they occur and responding properly 检测发生的入侵并正确响应 防御安全还有更多内容。 除上…...
单片机:实现倒计时(附带源码)
使用单片机实现倒计时功能是一个常见的嵌入式应用,它能帮助你更好地理解如何进行时间控制和如何通过定时器实现精确的倒计时。通过该项目,你将学习如何使用单片机的定时器来进行时间计算,并通过LED或LCD显示倒计时的结果。 1. 项目概述 倒计…...
安全防御之可信计算技术
可信计算技术是一种计算机安全体系结构,旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段,确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…...
视频生成缩略图
文章目录 视频生成缩略图使用ffmpeg 视频生成缩略图 最近有个需求,视频上传之后在列表和详情页需要展示缩略图 使用ffmpeg 首先引入jar包 <dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><vers…...
PySide6程序框架设计
pyside6有一个优点自动适配高分辨ui pyqt5需要自己写这部分逻辑 1、主程序代码 DINGSHI01Main.py # -*- coding: utf-8 -*- import sys,time,copy from PySide6.QtWidgets import QWidget,QApplication from PySide6.QtCore import Qt from PySide6 import QtCore, QtGui, Q…...
WebSocket入门与结合redis
WebSocket是什么 WebSocket 是一种用于在客户端和服务器之间建立双向通信的协议,它能实现实时、持久的连接。与传统的 HTTP 请求响应模式不同,WebSocket 在建立连接后允许客户端和服务器之间相互发送消息,直到连接关闭。由于 WebSocket 具有…...
锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集
锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集 目录 锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOH预测 | 基于Bi…...
C# 结构体和类
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类(Class)二、结构体(Struct)示例代码(定义类和结构体)类的继承代码示例(…...
C语言中的内存管理:理解指针、动态内存分配与内存泄漏
在C语言中,内存管理是一个至关重要的主题。与许多高级语言不同,C语言要求程序员显式地管理内存的分配与释放。虽然这种做法提供了更高的灵活性和控制权,但也容易导致内存泄漏、越界访问等问题。正确地管理内存对于编写高效、稳定的C程序至关重…...
web:pc端企业微信登录-vue版
官方文档:developer.work.weixin.qq.com/document/pa… 不需要调用ww.register,直接调用ww.createWWLoginPanel即可创建企业微信登录面板 - 文档 - 企业微信开发者中心 (qq.com) 引入 //通过 npm 引入 npm install wecom/jssdk import * as ww from we…...
GC.2015.四年级
GC.2015.四年级.01.奖励 题目描述 晨晨班主任想奖励班里面的每个学生一只圆珠笔和铅笔,已知每只圆珠笔和铅笔的价格,以及班里面的学生人数n,你能帮助老师算出总价吗? 输入格式 第一行:一个整数n,代表班里…...
一篇文章掌握WebService服务、工作原理、核心组件、主流框架
目录 1、WebService定义 解决问题: 2、WebService的工作原理 2.1 实现一个完整的Web服务包括以下步骤 2.2 调用方式 3、Web Service的核心组件 3.1 XML 3.2 SOAP 3.3 WSDL 3.4 UDDI 4、主流框架 4.1 AXIS(已淘汰) 4.2 XFire 4.3 CXF 5、Soap协议详解…...
中软高科身份证云解码金融(银行)解决方案介绍
多年来,中软高科一直深耕身份证云解码领域,对身份证云解码应用于金融(银行),进行了大量且深入的研究。从长期调研来看,金融(银行)的痛点需求主要有: 传统身份证解码设备…...
Linux NVIDIA GPU linpack 测试
前言 多节点多GPU测试有点坑,这篇文章有解决方法。 环境 操作系统信息 lsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammycpu 信息 lscpuArchitecture: x86_64CPU op-mod…...
LiteFlow决策系统的策略模式,顺序、最坏、投票、权重
个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 想必大家都有听过或做过职业和性格测试吧,尤其是现在的毕业生,在投了简历之后经…...
“AI换脸”骗过人脸识别?黑产攻击新手段应如何防御?
在著名美剧《权力的游戏》中,有一个神秘的刺客组织叫“无面者”,这个组织中的人可以通过某种神秘手段切换无数种不同的面孔,实现“一人千面”。 电视剧毕竟魔幻。但如今,基于人工智能的深度合成伪造技术正在让“一人千面”成为现…...
面试题整理6----什么是进程最大数、最大线程数、进程打开的文件数,怎么调整
什么是进程最大数、最大线程数、进程打开的文件数,怎么调整 1. 进程最大数1.1 调整方法: 2. 最大线程数2.1 调整方法: 3. 注意事项 #linux 1. 进程最大数 进程最大数是指操作系统允许同时运行的进程数量上限。这个限制通常由内核参数 ulimi…...
android RadioButton + ViewPager+fragment
RadioGroup viewpage fragment 组合显示导航栏 1、首先主界面的布局控件就是RadioGroup viewpage <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools…...
Zabbix6.0升级为6.4
为了体验一些新的功能,比如 Webhook 和问题抑制等,升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档,确认组件要求的版本,否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…...