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

Docker 安装与基本操作

目录

一、Docker 概述

1、Docker 简述

2、Docker 的优势

3、Docker与虚拟机的区别

4、Docker 的核心概念

1)镜像

2)容器

3)仓库

 

二、Docker 安装

1、命令:

2、实操:

 

三、Docker 镜像操作

1、命令:

2、实操:

四、Docker 容器操作

1、命令:

2、实操:


 

一、Docker 概述

1、Docker 简述

。Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
。Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
。Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。
。Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
。Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2、Docker 的优势

。灵活:即使是最复杂的应用也可以集装箱化。
。轻量级:容器利用并共享主机内核。
。可互换:可以即时部署更新和升级。
。便携式:可以在本地构建,部署到云,并在任何地方运行。
。可扩展:可以增加并自动分发容器副本。
。可堆叠:可以垂直和即时堆叠服务。

3、Docker与虚拟机的区别

特性:    Docker容器:虚拟机:
启动速度秒级分钟级
计算能力损耗     几乎无  损耗 50%左右
性能     接近原生    弱于
系统支持量(单机)上千个    几十个
隔离性        资源隔离/限制    完全隔离

4、Docker 的核心概念

1)镜像

Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

2)容器

Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

3)仓库

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

 

二、Docker 安装

1、命令:

目前 Docker 只能支持 64 位系统。1、#关闭防火墙与安全机制
systemctl stop firewalld && setenforce 02、#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 ------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
------------------------------------------------------------3、#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 4、#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.iosystemctl start docker.servicesystemctl enable docker.service ------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
------------------------------------------------------------5、#查看 docker 版本信息
docker version6、# docker 信息查看
docker info  

2、实操:

acf58aeeec8546329e3c175710ff6496.png

d8a70f02f03d41719221246feefc72c6.png

985aa57299334d5183d9e37feb15fe7e.png

c09a313199f1444981dbf71b842d3c06.png

b120f2b731da4ccda747a91fb3a8c9b5.png

 

三、Docker 镜像操作

1、命令:

1.#搜索镜像
格式:docker search <关键字>
docker search nginx2.#获取镜像
格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull nginx3.#镜像加速下载
浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://ony4klnh.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker4.#查看镜像信息
镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。
#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json5.#查看下载到本地的所有镜像
docker images------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
------------------------------------------------------------6.#根据镜像的唯一标识 ID 号,获取镜像详细信息
格式:docker inspect 镜像ID号
docker inspect a8758716bb6a---------------------------------------------------------------
●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点
---------------------------------------------------------------7.#为本地的镜像添加新的标签
格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:webdocker images | grep nginx   #查看nginx 镜像文件信息8.#删除镜像
格式:
docker rmi 仓库名称:标签	#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号	  #会彻底删除该镜像#注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
docker rmi nginx:web  #删除标签为 web 的镜像9.#存出镜像:将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest  #存出镜像命名为nginx 到当前目录下ls -lh   #查看10.#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件#将nginx镜像文件导入到镜像库中
docker load < nginx  11.#上传镜像(需要搭梯子,无法翻墙就没法儿进行这一步,图示仅为步骤,结果并未成功)
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。docker tag nginx:latest soscscs/nginx:web		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login							    	#登录公共仓库
Username:soscscs
password:abc123
docker push soscscs/nginx:web					#上传镜像

2、实操:

ee0b17e406304a21aa21fbc33b75b55e.png

b7af62f6e64741a18055010f11cc2b58.png

4e528a97511c469c8866dda64728ee0d.png

a9703bab896841ff88861d3271725ae7.png

6044483e043c43d99a9cd6dc8e1f807f.png

56659b858afc431198f0b9eff9829290.png

e171f7ab7cf74aeb98d8cec7125a728f.png

28b447ddd5af491eb4fd09b58dfa9c81.png

0cf3791427374fa7ad609ceb2cc90962.png

9ce40f4c8e974cdd9555b2eecd0912c7.png

 

四、Docker 容器操作

1、命令:

1.#容器创建:就是将镜像加载到容器的过程。
新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
格式:docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell docker create -it nginx:latest /bin/bash2.#查看容器的运行状态
docker ps -a			#-a 选项可以显示所有的容器3.#启动容器
格式:docker start 容器的ID/名称
docker start 837bbf55a7dcdocker ps -a4.#创建并启动容器
可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。
注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。docker run centos:7 /usr/bin/bash -c ls /docker ps -a		#会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了5.#在后台持续运行 docker run 创建的容器
需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"docker ps -a				#可以看出容器始终处于 UP,运行状态docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器6.#终止容器运行
格式:docker stop 容器的ID/名称
docker stop e5a8e7efb7fcdocker ps -a   #查看所有容器7.#容器的进入
需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。docker start e5a8e7efb7fc	#启动先前关闭的容器,进入容器前需确保容器正在运行docker exec -it e5a8e7efb7fc /bin/bash
ls
exit		   #退出容器后,容器仍在运行
docker ps -a   #显示所有容器docker run -it centos:7 bash      #不加 -d 选项会创建容器后直接进入容器进行交互,但是退出容器,容器也会停止
exit
docker ps -a8.#复制文件到容器中
echo abc123 > ~/test.txt
docker cp ~/test.txt e5a8e7efb7fc:/opt/9.#从容器复制文件到主机
docker cp e5a8e7efb7fc:/opt/test.txt ~/abc123.txt10.#容器的导出与导入
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。#导出格式:docker export 容器ID/名称 > 文件名
docker export e5a8e7efb7fc > centos7.tardocker export -o centos7.tar e5a8e7efb7fc#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test		#导入后会生成镜像,但不会创建容器docker import centos7.tar -- centos7:test11.#删除容器
格式:docker rm [-f] 容器ID/名称
docker rm 164e44a780bf				#删除已经终止状态的容器docker rm -f e5a8e7efb7fc			#强制删除正在运行的容器#批量停止容器
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
或
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop#批量删除所有容器
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
或
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm#批量删除镜像
docker images | awk 'NR>=2{print "docker rmi "$3}' | bash
#删除none(容器已经被删除,但它们的镜像仍存在于系统中)镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi#批量清理后台停止的容器
docker rm $(docker ps -a -q)

2、实操:

8545093df74a4dd0bfb393d378515992.png

7921d277155d47c99c9bd7303846bba4.png

823c560ce1bc462fbdb00251e235fc72.png

6cd808f2532740a5a661b7150c4fb682.png

5a238b9613cc4ac3b5c4706de97ac98c.png

f3047ffa9ce94744a6f3681ffad79707.png

91bb55370e874c61b69f5dc137a2febd.png

12f883fc9a004c67ba3b6971acf8b741.png

4f1a4485edd840e592092f5d1013c6c9.png

fb562c93c6bb494ebd6af0e3205c6bbf.png

93ed375ce0d04e32bc4e838250374dc5.png

5590d07e9b5b40fdbea1283426f0460b.png

4c9e63ed17ff40fdaa5bf81d59c5efc1.png

ae10371fda994839868d1af663cbecac.png

b1ccdee62a5f4ff19352675639a05f8e.png

b58c7e95078348319c460c2ee9cd29cc.png

 

相关文章:

Docker 安装与基本操作

目录 一、Docker 概述 1、Docker 简述 2、Docker 的优势 3、Docker与虚拟机的区别 4、Docker 的核心概念 1&#xff09;镜像 2&#xff09;容器 3&#xff09;仓库 二、Docker 安装 1、命令&#xff1a; 2、实操&#xff1a; 三、Docker 镜像操作 1、命令&#xff1…...

译文带你理解Python的dataclass装饰器

dataclass 是 Python dataclasses 模块中的一个 decorator。当使用 dataclass 装饰器时&#xff0c;它会自动生成一些特殊方法&#xff0c;包括&#xff1a; _ _ init _ _&#xff1a;用于初始化字段的构造函数_ _ repr _ _&#xff1a;对象的字符串表示_ _ eq _ _&#xff1a…...

【C语言】实现程序的暂停

编写程序时&#xff0c;有时候需要让程序在某些地方暂停执行&#xff0c;等待用户输入或者观察程序执行结果。在 C 语言中&#xff0c;有多种方法可以实现程序的暂停&#xff0c;包括 system("pause")、getchar() 和 while ((c getchar()) ! \n && c ! EOF)…...

Hana SQL+正则表达式

目录 一、Pre 前言 二、知识点拆解 1&#xff09;case when…then…else 2&#xff09;json_value 函数 拓展资料 3&#xff09;CAST 函数 拓展资料 4) ROUND 函数 5&#xff09;occurences_regexpr 函数 拓展资料 6&#xff09;正则表达式 拓展资料 三、整合分析…...

【笔记】顺利通过EMC试验(16-41)-视频笔记

目录 视频链接 P1:电子设备中有哪些主要骚扰源 P2:怎样减小DC模块的骚扰 P3:PCB上的辐射源究竟在哪里 P4:怎样控制PCB板的电磁辐射 P5:多层线路板是解决电磁兼容问题的简单方法 P6:怎样处理地线上的裂缝 P7:怎样降低时钟信号的辐射 P8:为什么IO接口的处理特别重要 P9…...

Qlik Sense 调用NPrinting生成On-Demand报表

安装 Qlik Sense On-Demand 报表控件 On-Demand 报表控件添加按钮&#xff0c;该按钮按需生成 Qlik NPrinting 报表。它包括在 Dashboard bundle 中。 当您希望用户能够使用应用程序中的选择作为过滤器在 Qlik Sense 中打印预定义 Qlik NPrinting 报表时&#xff0c;On-Deman…...

ElasticSearch重建/创建/删除索引操作 - 第501篇

历史文章&#xff08;文章累计500&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…...

数据写入HBase(scala)

package sourceimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject ffff {def main(args: Array[String]): Unit {//hbase连接配置val conf …...

Codeforces Round 799 (Div. 4)

目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…...

为什么要用云手机养tiktok账号

在拓展海外电商市场的过程中&#xff0c;许多用户选择采用tiktok短视频平台引流的策略&#xff0c;以提升在电商平台上的流量&#xff0c;吸引更多消费者。而要进行tiktok引流&#xff0c;养号是必不可少的一个环节。tiktok云手机成为实现国内跨境养号的一种有效方式&#xff0…...

vue pc端网页实现自适应

一、基本原理 pc端做自适应可以用rem来实现&#xff0c;啥是rem&#xff0c;自己百度 二、新建rem.ts文件 // rem等比适配配置文件 // 基准大小 const baseSize 14 // 设置 rem 函数 function setRem () {// 当前页面宽度相对于 1920宽的缩放比例&#xff0c;可根据自己需要…...

Android 13以上版本读写SD卡权限适配

如题&#xff0c;最近工作上处理的问题&#xff0c;把解决方案简单逻列出来&#xff0c;供有需要的朋友参考之 解决方案&#xff1a; 1、配置权限 <uses-permission android:name"android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name&q…...

并查集模板:食物链详解

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int N 50010;static int n,m; //n个动物,m局判断static int[] p new int[N]; //p[i]是i的根节点static int[] d new int[N]; //d[i]表示i到…...

使用WAF防御网络上的隐蔽威胁之反序列化攻击

​ 什么是反序列化 反序列化是将数据结构或对象状态从某种格式转换回对象的过程。这种格式通常是二进制流或者字符串&#xff08;如JSON、XML&#xff09;&#xff0c;它是对象序列化&#xff08;即对象转换为可存储或可传输格式&#xff09;的逆过程。 反序列化的安全风险 反…...

05. 交换机的基本配置

文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1&#xff1a;交换机的基本原…...

yolo将标签数据打到原图上形成目标框

第一章 目标&#xff1a;为了查看自己在标注标签时是否准确&#xff0c;写了这段代码来将标注的框打到原图上 第二章 步骤&#xff1a;进行反归一化得到坐标画出矩形框 第二行是目标图片对应的txt,第三行是目标图片 第三章 全部代码如下&#xff1a; import cv2 import …...

002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红

【ai阅读源码-dolphinscheduler】 DolphinScheduler 开发手册1、软件要求2、克隆代码库3、编译打包4、代码风格5、新建数据库&#xff0c;导入元数据。6&#xff0c; 启动后端6.1 启动api-server 6.2 启动master-server6.3 启动worker-server 7 启动前端 DolphinScheduler 开发…...

python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录

文章目录 1. 选择日志文件格式&#xff1a; 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式&#xff0c;如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件&#xff1a; 使⽤Python的文件操作功能打开日志文件&#xff0c;以便…...

代码随想录算法训练营DAY6 | 哈希表(1)

DAY5休息一天&#xff0c;今天重启~ 哈希表理论基础&#xff1a;代码随想录 Java hash实现 &#xff1a;java 哈希表-CSDN博客 一、LeetCode 242 有效的字母异位词 题目链接&#xff1a;242.有效的字母异位词 思路&#xff1a;设置字典 class Solution {public boolean isAnag…...

【嵌入式学习】C++QT-Day3-C++基础

笔记 见我的博客&#xff1a;https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...