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

docker——基础知识

简介

一、什么是虚拟化和容器化

​ 实体计算机叫做物理机,有时也称为寄主机;

​ 虚拟化:将一台计算机虚拟化为多台逻辑计算机;

​ 容器化:一种虚拟化技术,操作系统的虚拟化;将用户空间软件实例分割成多个独立的单元,变成多个实例;docker就是容器技术的事实标准;

二、为什么要虚拟化和容器化

​ 1.资源利用率高;

​ 2.环境标准化,保证测试的环境保持不变;

​ 3.资源弹性伸缩,可以灵活实现资源扩缩容;

​ 4.支持差异化的环境;

​ 5.沙箱安全,容器之间不会互相影响;

​ 6.比虚拟机更加的轻量化,启动更快,一般的虚拟机启动会加载整个内核,而容器以进程的方式运行于内核上,启动就会更快;

​ 7.维护和扩展更加容易,进行复制粘贴镜像文件快速扩展;

三、虚拟化实现方式

3.1应用程序执行环境分层

​ 应用程序层、库函数层、操作系统层、硬件层;

3.2虚拟化常见类别

​ 虚拟机:对硬件层抽象接口进行模拟,模拟出一种虚拟的硬件设备再将操作系统包括之上的层嫁接到虚拟硬件上;

​ 容器:对操作系统的接口进行模拟,将函数库层以上的功能置于操作系统中,可以使用进程的方式启动;

​ JVM之类的虚拟机:在函数库层与应用程序层之间添加一层接口,对下提供不同的版本支持不同操作系统,对上提供统一的运行环境;

3.3常见虚拟化实现

3.3.1主机虚拟化

​ 主机虚拟化:通过在物理服务器上安装一个虚拟化层实现;分为两种一种是虚拟层运行在硬件之上(典型框架Vmware ESX),一种是虚拟机运行在操作系统之上(Vmware Workstation);使用Hypervisor实现;

3.3.2容器虚拟化

​ 容器虚拟化实现原理:通过namespace进行各程序的隔离,加上cgroups的控制进行虚拟化;

3.3.2.1namespace

是什么

​ namespace:是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。

​ Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前namespace 里的进程,对其他 namespace 中的进程没有影响。

​ Linux 提供了多个 API 用来操作 namespace,它们是 clone()、setns() 和 unshare() 函数,为了确定隔离的到底是哪项 namespace,在使用这些 API 时,通常需要指定一些调用参数:CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER、CLONE_NEWUTS 和CLONE_NEWCGROUP。如果要同时隔离多个 namespace,可以使用 | (按位或)组合这些参数。

namespace隔离的全局系统资源

​ UTS:主机名和域名,对应参数是CLONE_NEWUTS;

​ IPC:信号量、消息队列、共享内存等进程间通信资源,对应参数是CLONE_NEWIPC;

​ PID:进程编号,对应参数是CLONE_NEWPID ;

​ NETWORK:网络设备、网络栈、端口,对应参数是CLONE_NEWNET;

​ MOUNT:文件系统挂载点,对应参数是CLONE_NEWNS;

​ USER:用户和用户组,对应参数是:CLONE_NEWUSER;

3.3.2.2空间隔离实战

基础知识

1.dd命令,用于读取,转换并输出数据;

dd 参数
#参数包括
#if=文件名:输入文件名;of=文件名:输出文件名;ibs=bytes:一次读入的字节数;obs=bytes:一次输出的字节数;bs=bytes:同时指定输入输出的字节数;cbs=bytes:一次转换的字节数;skip=blocks:从输入文件开头跳过blocks个块之后开始复制;seek=blocks:从输出文件开头跳过blocks个块之后再开始复制;count=blocks:仅拷贝blocks个块;conv=<关键字>:输出文件内容进行转换#如:
#dd if=/dev/zero of=test.img bs=8k count=1024 
#dd if=in.txt of=out.txt conv=ucase

2.mkfs命令,创建Linux文件系统,即格式化;

#如:
#mkfs -t ext4 ./test.img
对此文件进行格式化

3.df命令,显示磁盘使用情况;

df 参数
#-a表示将所有含有0blocks的文件系统显示出来
#-h使用人类可读的方式
#-H与-h类似,但是单位是1000不是1024
#-t限制文件系统的类型
#-T显示文件系统的形式

4.mount命令,加载文件系统到指定的加载点,Windows会自动挂载,但是Linux需要手动挂载;

mount 参数
#-l表示显示已加载的文件系统列表
#device表示指定设备的文件系统
#dir表示挂接到的目录下
#-t可以支持的文件系统,可以自动识别不指定
#-o 可选项 loop将一个文件当作一个磁盘,ro采用只读方式挂接,rw采用只写方式挂接#如
#mount test.img /data/testmymount

5.unshare命令,使用与父程序不共享的命名空间运行程序,即给运行的程序创建一个新的命名空间;

unshare [选项] 程序 [参数]
#-i表示不共享ipc空间
#-m表示不共享mount空间
#-n表示不共享net空间
#-p表示不共享pid空间
#-u表示不共享uts空间
#-U表示不共享user空间
#-V版本查看
#--fork创建一个子进程,执行unshared传入的参数
#--mount-proc表示执行子进程之前将proc优先挂载过去#案例1——uts隔离
unshare -u /bin/bash
#案例2——pid隔离
需要注意应该创建一个子进程,否则会因为新的命名空间会使用unshare的pid作为新空间的父进程,但是空间却看不到unshare进程而无法创建;
unshare --fork --mount-proc -p /bin/bash
#案例3——文件系统隔离
创建-m命名空间,目录和镜像文件,进行挂载;

6.umount 挂载点,取消文件挂载,之后再删除目录即可

3.3.2.3cgroups

是什么

​ cgroups(Control Groups) 是 linux 内核提供的一种机制,这种机制可以根据需求把一系列系统任务及其子任务整合 ( 或分隔 ) **到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。**简单说,cgroups 可以限制、记录任务组所使用的物理资源。本质上来说,cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。

​ 换句话说就是一堆进程配对不同的配置文件,实现对资源精细化地控制,优先级控制,进程控制,统计

可以控制的子系统:

在这里插入图片描述

3.3.2.4控制组实战

基础知识

1.pidstat命令,用于监控全部或者指定进程的CPU、内存、线程、设备IO等系统资源的占用情况;

pidstat [选项] [时间间隔] [次数]
#-u默认参数,不加选项显示cpu的统计情况
#-r显示内存的统计情况
#-d显示io统计情况
#-p指定进程号,all表示所有进程
#-C指定命令
#-l显示命令名和参数

2.stress命令,压力测试工具;

stress [选项 [参数]]
#-c 进程数,产生n个进程,每个进程循环调用sqrt函数产生CPU压力,用户CPU
#-i 进程数,产生n个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘中产生IO压力,内核CPU
#-m 进程数,产生n个进程,每个进程循环调用malloc/free函数分配和释放内存,--vm-bytes B:指定分配内存大小 --vm-keep:一直占用内存,不释放
#-d 进程数,产生n个进程,每个进程不断执行write和unlink,--hdd-bytes B:指定文件大小
#-t 秒数,n秒结束进程
#-q 程序在运行过程中不进行输出

实操

进行控制需要在控制组目录下创建控制组,进行配置并且挂接,需要注意取消控制并删除目录需要将tasks和cgroup.procs清空,当还是无法删除时,需要退出终端再次进行删除即可

案例1:cgroups信息查看

#版本查看
cat /proc/filesystems|grep cgroup
#子系统查看
cat /proc/cgroups
#挂载信息查看
mount -l|grep cgroup
#查看进程的cgroup限制
cat /proc/$$/cgroup
/sys/fs/cgroup/cpu目录下存放着cpu控制组信息,cpu.cfs_period_us表示时间片的数量,cpu.cfs_quota_us表示可以使用数量,-1表示不受控制;

案例2:使用cgroups对内存进行控制

1.创建控制组
mount |grep cgroup
cd /sys/fs/cgroup/memory
mkdir test_memlimit/
cd test_memlimit/
2.限制内存20m
echo '20971520'>memory.limit_in_bytes
3.将进程添加到控制组中
echo 'pid'>tasks
#当内存不足是进程就会挂掉

案例3:使用cgroups对CPU进行控制

1.创建CPU控制组
mount |grep cgroup
cd /sys/fs/cgroup/cpu
mkdir test_mycpu
cd test_mycpu
2.创建stress进程打满CPU,使用pidstat监控stress
stress -c 1 -q
pidstat -C stress -p ALL -u 2 1000
3.使用控制组对CPU进行限制
cpu.cfs_period_us表示cpu带宽,将CPU的一次运行切成了10万份,每一个是一个时间片
cpu.cfs_quota_us表示控制组中进程可以使用的带宽;
4.将stress添加到控制组当中
echo 'pid'>tasks
#会导致cpu使用率倍限制
3.3.2.5Linux容器——LXC

是什么

​ LXC(LinuX Containers)Linux 容器,一种操作系统层虚拟化技术,为 Linux 内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享 API 来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得 Linux 用户可以容易的创建和管理系统或应用容器;

​ 换句话说就是将软件本身和库以及软件运行所依赖的共享操作系统配置(内核资源)进行打包;通过使用namespace和cgroups技术来调用内核资源;

将LXC以进程的方式运行,内部存放大量的封装好的包,从上往下调用库文件,系统调用,内核中使用namespace和cgroups机制调用内核资源,在向下调用驱动程序;

​ 但是缺点就是将容器放到另一台主机上运行,并不能很好地支持;

3.3.2.6LXC实战

基础知识

常用命令

1.lxc-checkconfig,检查系统环境是否满足容器的使用需要;

lxc-checkconfig

2.lxc-create,创建lxc容器;

​ 模板的路径在/usr/share/lxc/templates/目录下;

lxc-create -n 容器名 -t 模板名称 -- 后面加模板的参数 #-r 表示发行的版本 -a表示CPU架构

3.lxc-start,启动容器;

lxc-start -n 容器名 -d#-d表示在后台运行

4.lxc-ls,列出所有容器,-f表示打印常用的信息;

lxc-ls -f#以表格的形式打印常用信息

5.lxc-info,查看容器相关的信息;

lxc-info -n 容器名

6.lxc-attach,进入容器执行命令;

lxc-attach -n 容器名 命令

7.lxc-stop,停止容器,释放cpu和内存;

lxc-stop -n 容器名

8.lxc-destroy,删除处于停机状态的容器,释放磁盘空间;

lxc-destroy -n 容器名

安装lxc:

1.安装yum源
yum install -y epel-release
2.安装程序
yum install -y lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt lxc-extra debootstrap
3.启动服务
systemctl start lxc
systemctl start libvirtd
systemctl status lxc
systemctl status lxc

实操

案例1:容器的创建;

​ 需要使用root权限执行,容器创建好之后会自动形成一个用户,此用户就是容器中对应的root;

lxc-create -n container1 -t ubuntu -- -r  xenial -a amd64

案例2:设置成后台运行,否则就需要进行登录;

lxc-start -n lxchost1 -d

案例3:进入容器,进入之后可以观察到已经和原宿主机有了很大的差别,已经形成了隔离;

方式一:容器创建好之后的root用户名,ip使用lxc-ls -f查看
ssh 用户名@主机ip
方式二:
lxc-attach -n 容器名 --clear-env -- /bin/bash

案例4:停止容器

lxc-stop -n lxchost1

案例5:释放容器

lxc-destroy -n lxchost1

3.4Docker是什么

3.4.1docker本质

​ 本质就是LXC的增强版,本身不是容器,是容器的易用工具,是使用Go语言实现的一个开源项目;容器是Linux内核中的技术,docker在使用上进行了简易处理;

​ 相较于LXC,不再使用模板来实现容器的创建,而是使用了镜像技术(把一个操作系统用户空间所需要使用到的组件实现编排好,并整体打包成一个文件,image文件),然后将镜像文件集中放在一个仓库中;需要时只要执行命令就可以创建好,变成了基于镜像文件启动容器,使用docker-run,docker-stop实现启动和停止一个容器;

​ 镜像打包,包括应用程序(包括依赖的动态库),配置文件,运行环境(相关开发包),操作系统相关依赖(操作系统库文件)全部分装成一个镜像文件;

​ 优点就是可以支持一次封装,到处运行,通过build,ship,run实现;

3.4.2docker引擎迭代

​ 最早的docker就是对LXC进行了二次包装,也就是容器引擎是LXC;之后形成了自己的容器引擎libcontainer,之后又研发了RunC,截至目前docker的容器引擎还是RunC;而运行时容器引擎是containerd;也就是说现在docker引擎是靠containerd调用RunC来完成容器管理;

3.4.3docker和虚拟机的区别

​ 1.磁盘占用,传统虚拟机占用几到几十GB的空间,而docker容器占用几十到几百MB;

​ 2…CPU和内存占用,传统虚拟机占用高,docker容器占用少,因为docker容器不经过中间的虚拟化层,效率高;另外虚拟化层的实例大小过大,一般是几百MB大小,而docker容器启动之后是一个进程,没有虚拟化实例的消耗;

​ 3.启动速度,传统虚拟机启动慢,docker容器较快;

​ 4.安装管理,传统虚拟机需要专门的运维技术,而docker容器仅需要使用一个命令就可以实现docker的启动和停止;

​ 5.应用部署,传统虚拟机需要手动部署,将将镜像文件拷贝或者是部分文件拷贝部署,而docker容器可以实现自动部署,速度快,如:更新迭代时,生成新的镜像文件上传到仓库中,部署仅需要从仓库中拉取不同的版本即可;

​ 6.隔离性,传统虚拟机是系统级别上的隔离,而docker容器是进程级别的隔离;

​ 7.封装程度,传统虚拟机将整个操作系统进行了封装,而docker容器只需要将应用程序及相关的各种依赖进行打包即可;

3.4.4docker为什么比虚拟机利用率高,启动快

利用率高

​ 1.docker不需要对硬件资源进行虚拟化,运行在docker容器中的程序使用的是实际的物理机资源,不需要创建虚拟机实例占用资源;

​ 2.运行效率高,docker容器中的程序直接靠实际的物理机运行,而传统虚拟机先是经过虚拟层,然后才经过实际物理机运行;

启动快

​ 传统虚拟机需要加载虚拟机实例内核,容器不需要加载内核,而是共用内核的方式运行;

3.4.5docker和JVM虚拟化的区别

​ 1.性能,JVM上的程序运行时需要进行维护抽象出来的虚拟层,换句话说就是除了执行程序的正常逻辑消耗之外,要有部分消耗用来进行虚拟层和函数库层的交互,而docker几乎没有性能上的损失,直接就是调用函数库;

​ 2.虚拟层面,JVM在函数库层,docker在操作系统层;

​ 3.代码无关性,JVM只能支持特定代码的运行,而docker模拟的是操作系统支持任何相同平台的应用程序;

​ 4.隔离性,JVM不涉及隔离主机,只是封装不同操作系统的函数库层差异,对上提供统一的接口,而docker隔离主机,使得不同容器执行时所看到的内容互不可见;

相关文章:

docker——基础知识

简介 一、什么是虚拟化和容器化 ​ 实体计算机叫做物理机&#xff0c;有时也称为寄主机&#xff1b; ​ 虚拟化&#xff1a;将一台计算机虚拟化为多台逻辑计算机&#xff1b; ​ 容器化&#xff1a;一种虚拟化技术&#xff0c;操作系统的虚拟化&#xff1b;将用户空间软件实…...

SAP MMRV/MMPV 物料账期月结月底月初开关

公告&#xff1a;周一至周五每日一更&#xff0c;周六日存稿&#xff0c;请您点“关注”和“在看”&#xff0c;后续推送的时候不至于看不到每日更新内容&#xff0c;感谢。 这是一条刮刮乐&#xff0c;按住全部选中&#xff1a;点关注的人最帅最美&#xff0c;欢迎&#xff1…...

五分钟看懂如何解决FP独立站的广告投放问题

在数字化时代的浪潮中&#xff0c;跨境电商的独立站成为了商家们的新宠。与传统的电商平台相比&#xff0c;独立站在品牌建设、市场定位以及客户体验上提供了更多的自由度和创新空间。然而&#xff0c;这些独立站尤其是销售FP产品的站点&#xff0c;在广告投放上遇到了重重障碍…...

学习分享-FutureTask

前言 今天再改简历的时候回顾了之前实习用到的FutureTask&#xff0c;借此来回顾一下相关知识。 FutureTask 介绍 FutureTask 是 Java 并发包&#xff08;java.util.concurrent&#xff09;中的一个类&#xff0c;用于封装异步任务。它实现了 RunnableFuture 接口&#xff0…...

Javaweb02-XML概述

第一章 XML概述 1.XML基本概念 什么是xml&#xff1f; **a.**引入的原因&#xff1a;为了解决不同不同语言之间的数据传输的格式不同 **b.**概念&#xff1a;XML是一种可扩展标记语言&#xff0c;适用于不同数据之间的数据交换 **c.**XML文档&#xff1a;通过元素的嵌套&a…...

Linux shell编程基础

Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问 Linux 内核的服务。 Shell 脚本&#x…...

2024.6.12 作业 xyt

今日课堂练习&#xff1a;vector构造函数 #include <iostream> #include <vector> using namespace std;void printVector(vector<int> &v) {vector<int>::iterator iter;for(iterv.begin(); iter ! v.end(); iter){cout << *iter <<…...

QTTabBar在重置Internet Explorer后失效

网上常见的办法是&#xff1a; 打开IE浏览器>>设置>>Internet选项>>高级。勾选启用第三方浏览器扩展&#xff0c;重启后生效。 打开IE浏览器-设置–管理加载项&#xff0c;启用QTTabBar。 实际在Win10上使用的时候会遇到点开IE自动跳转到Edge的问题。这时…...

Django之云存储(一)

一、介绍 用户上传的文件以及项目中使用的静态文件,除了保存在本地服务器,还在可以保存在云服务中,比如: 阿里云七牛云(课程选用)亚马逊云等1.1、使用方式 注册账号 七牛云开发者平台 实名认证 创建空间...

推挽与开漏输出

一般来说&#xff0c;微控制器的引脚都会有一个驱动电路&#xff0c;可以配置不同类型的数字和模拟电路接口。输出模式一般会有推挽与开漏输出。 推挽输出 推挽输出&#xff08;Push-Pull Output&#xff09;&#xff0c;故名思意能输出两种电平&#xff0c;一种是推&#xf…...

Sora和快手可灵背后的核心技术 | 3DVAE:通过小批量特征交换实现身体和面部的三维形状变分自动编码器

【摘要】学习3D脸部和身体生成模型中一个解开的、可解释的和结构化的潜在表示仍然是一个开放的问题。当需要控制身份特征时,这个问题尤其突出。在本文中,论文提出了一种直观而有效的自监督方法来训练一个3D形状变分自动编码器(VAE),以鼓励身份特征的解开潜在表示。通过交换不同…...

ArcGIS Pro SDK (三)Addin控件 2 窗格界面类

ArcGIS Pro SDK &#xff08;三&#xff09;Addin控件 2 窗格界面类 目录 ArcGIS Pro SDK &#xff08;三&#xff09;Addin控件 2 窗格界面类15 ArcGIS Pro 后台选项卡15.1 添加控件15.2 Code15.2.1 选项卡按钮15.2.2 选项卡页 16 ArcGIS Pro 窗体16.1 添加控件16.2 Code 17 A…...

Ubuntu 20.04.6 LTS系统使用命令编辑静态IP地址【笔记】

rootubuntu-machine:/home# cat /etc/issue Ubuntu 20.04.6 LTS \n \l1、切换到root身份 sudo su2、编辑静态IP地址&#xff0c;示例以01-network-manager-all.yaml&#xff0c;个别系统可能是00-network-manager-all.yaml&#xff0c;以安装系统生成的文件为准。 vim /etc/n…...

Python第二语言(八、Python包)

目录 1. 什么是Python包 2. 创包步骤 2.1 new包 2.2 查看创建的包 2.3 拖动文件到包下 3. 导入包 4. 安装第三方包 4.1 什么是第三方包 4.2 安装第三方包-pip 4.3 pip网络优化 1. 什么是Python包 包下有__init__.py就是包&#xff0c;无__init__.py就是文件夹。于Ja…...

Pipeline流水线组件

文章目录 1、新建pipeline流水线2、定义处理器3、定义处理器上下文4、pipeline流水线实现5、处理器抽象类实现6、pipeline流水线构建者7、具体处理器实现8、流水线测试9、运行结果 1、新建pipeline流水线 package com.summer.toolkit.model.chain;import java.util.List; impo…...

闪灵CMS电子商城系统源码v5.0(自带微信小程序)

源码介绍 闪灵CMS电子商城系统源码&#xff0c;双语带手机版&#xff0c;PHPMYSQL进行开发&#xff0c;网站安装简单、快捷。 闪灵CMS系统更新日志 1.修复&#xff1a;修复了开启强制https后&#xff0c;说明文档重定向过多的问题 2.修复&#xff1a;修复了商品名称过长时无…...

基于SSM的旅游民宿预定系统【源码】【运行教程】

基于SSM的旅游民宿预定系统 一、项目介绍1. 游客功能2. 管理员功能3. 高级功能 二、项目技术栈三、项目运行四、项目演示总结 大家好&#xff0c;这里是程序猿代码之路&#xff01;随着旅游业的快速发展&#xff0c;民宿作为一种独特的住宿方式越来越受到游客的喜爱。为了提升用…...

PgSQL技术内幕 - psql与服务端连接与交互机制

PgSQL技术内幕 - 客户端psql与服务端连接与交互机制 简单来说&#xff0c;PgSQL的psql客户端向服务端发起连接请求&#xff0c;服务端接收到请求后&#xff0c;fork出一个子进程&#xff0c;之后由该子进程和客户端进行交互&#xff0c;处理客户端的SQL等&#xff0c;并将结果返…...

实现开发板三盏灯点亮熄灭

实现开发板三盏灯点亮熄灭 typedef struct {volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsigned int OSPEEDR; // 0x08volatile unsigned int PUPDR; // 0x0Cvolatile unsigned int IDR; // 0x10volatile unsigned int OD…...

外汇天眼:盈透证券为客户提供更丰富的欧洲衍生品交易渠道

电子交易巨头盈透证券&#xff08;纳斯达克代码&#xff1a;IBKR&#xff09;今日宣布&#xff0c;通过Cboe欧洲期权交易所&#xff08;CEDX&#xff09;新增欧洲股票期权和欧洲指数期货及期权。这一新增功能使得盈透证券的客户可以在单一统一平台上&#xff0c;除了股票、期权…...

论文阅读Rolling-Unet,卷积结合MLP的图像分割模型

这篇论文提出了一种新的医学图像分割网络Rolling-Unet&#xff0c;目的是在不用Transformer的前提下&#xff0c;能同时有效提取局部特征和长距离依赖性,从而在性能和计算成本之间找到良好的平衡点。 论文地址&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/2…...

Linux Shell命令vim使用

一、引例 以判断引出&#xff08;学过C其他语言容易接受&#xff09;。 简单命令说明&#xff1a; -e 测试文件是否存在 -f 测试文件是否为普通文件 -d 测试文件是否为目录 -r 测试当前用户对某文件是否具有“可读”权限 -w 测试当前用户对某文件是否具有“可写”权限…...

如何将 API 管理从 Postman 转移到 Apifox

上一篇推文讲到用 Swagger 管理的 API 怎么迁移到 Apifox&#xff0c;有许多同学反馈说能不能介绍一下 Postman 的迁移以及迁移过程中需要注意的事项。那么今天&#xff0c;它来了&#xff01; 从 Postman 迁移到 Apifox 的方法有两种&#xff1a; 导出 Postman 集合 &#x…...

用链表实现的C语言队列

一、队列概述 在数据结构中&#xff0c;队列是一种先进先出&#xff08;FIFO&#xff09;的线性表。它在许多应用场景中非常有用&#xff0c;例如任务调度、进程管理、资源管理等。队列是一种重要的数据结构&#xff0c;其主要特点是先进先出&#xff08;FIFO, First In First …...

国产SDI视频均衡驱动器,功能与 LMH0387/LMH0344 一致

视频均衡驱动器&#xff0c;功能与 LMH0387 一致、LMH0344。本期间支持 DVB-ASI&#xff0c;作为驱动器能够选择输出速率&#xff0c;作为均衡接收器能支持100m以上传输距离&#xff08;线缆类型Belden 1694A&#xff09;。最大支持3Gbps 速率的信号 2 产品特征 a&#xff09…...

如何用Xinstall CPS结算系统打破传统营销桎梏,实现用户增长?

在互联网流量红利逐渐衰退的今天&#xff0c;App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系&#xff0c;成为了众多企业急待解决的问题。而在这个关键时刻&#xff0c;Xinstall CPS结算系统应运而生&#xff0c;以其独特的优势帮助企业解决了一系列…...

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2+bx+c0 的两个根:

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2bxc0 的两个根: b2-4ac 称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。 如果它为 0&#xff0c;方程式就只有一个根。如果它是负值&#xff0c;方程式无实根。 编写程序&#xff0c;提示…...

如何提高网站收录?

GSI服务就是专门干这个的&#xff0c;这个服务用的是光算科技自己研发的GPC爬虫池系统。这个系统通过建立一个庞大的站群和复杂的链接结构&#xff0c;来吸引谷歌的爬虫。这样一来&#xff0c;你的网站就能更频繁地被谷歌的爬虫访问&#xff0c;从而提高被收录的机会。 说到效…...

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…...

Javaweb04-Servlet技术2(HttpServletResponse, HttpServletRequest)

Servlet技术基础 HttpServletResponse对象 HttpServletResponce对象是继承ServletResponse接口&#xff0c;专门用于封装Http请求 HttpServletResponce有关响应行的方法 方法说明功能描述void setStatus(int stauts)用于设置HTTP响应消息的状态码&#xff0c;并生成响应状态…...