泷羽sec学习打卡-云技术基础1-docker

news2024/11/19 12:10:13

声明
学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负


关于云技术基础的那些事儿-Base1

    • 一、云技术基础
      • 什么是云架构?
      • 什么是云服务?
      • 什么是云分类?
      • 共享责任模型
      • 云架构使用什么技术?
      • 集成部署有什么作用?
      • 云设计模式由有哪些?
      • 安全控制有哪些方式?
      • 容器与云
    • 搭建属于自己的容器--Docker
      • 什么是docker呢?
      • 为什么不用kail搭建docker容器?
      • 在 Ubuntu 上安装docker有哪些方式呢?
        • 1、 前置条件
        • 2、卸载旧版本
        • 3、开始安装 Docker
    • 如何使用apt安装docker呢?
      • 使用 APT 安装(推荐方式)
      • 通过 .deb 包手动安装
      • 使用脚本自动安装 Docker
      • 测试docker是否安装成功
      • 在Ubuntu中安装加速器
      • 容器的真相
      • Linux中的命名空间详解
      • docker中有命名空间吗?docke用什么配置文件限制访问呢?
    • 实践是检验真理的唯一标准


在过去,搭建一个应用程序可真是个大工程。得去购买服务器,租赁机房,进行安装、上架,还得拧螺丝、接网线。但如今,情况大不相同啦。现在很多基础设施都已经云化了。我们可以直接找像阿里云、腾讯云这样的云服务器厂家,购买一些云服务器,短短几分钟就能申请下来。基于这些云服务器,我们可以轻松地进行各种各样的应用部署。

一、云技术基础

什么是云架构?

不管是防御系统还过是进攻系统,强大的底层技术基础都是必不可少的。

从防御的角度来看,只有了解底层技术,我们才能知道如何构建防御体系。从进攻的角度讲,了解底层技术才能发现漏洞并开发出漏洞利用的方法。所以呢,攻击者和防御者都必须清楚对方的运作方式。

以前构建系统的时候,需要购买设备、租用数据中心机柜,然后搭建基础设施。随着处理器的不断进化,虚拟机出现了。它能把一台机器的资源分成多台机器来使用,提高了资源利用率,变得更加灵活可拓展,实现了从裸机基础设施到虚拟化基础设施的转变。接着,容器化技术登场,进一步提高了效率,实现了服务器、网络和存储的虚拟交付。现在,我们把最新一代的基础设施称为“云”,它可不是单一的技术哦,而是众多技术的集合。

什么是云服务?

云是一种 IT 基础设施系统,它将资源的创建抽象在容错、地理分布和可扩展的物理基础设施之上。并以服务器的形式按需求交付能力,非常易于使用,可以自动创建服务器、存储、网络等等。云基础架构必须稳定,不能频繁出现中断。地理分布的云基础设施能够提高容错能力,而且云必须能够快速扩展,以满足各种需求。

有很多公有云服务商,比如 Amazon Web Services(AWS)、Azure、Google(GCP),还有华为云、腾讯云、阿里云等等。组织可以使用 OpenStack 等工具在自己的数据中心搭建私有云,或者一部分业务运行在私有云中,一部分运行在公有云中。

什么是云分类?

  1. 基础设施即服务(IaaS):就像提供建筑材料和工具,让你可以自己搭建房子。
  2. 平台即服务(PaaS):类似有了基本框架的房子,你只需进行装修和布置。
  3. 软件即服务(SaaS):直接给你一个装修好可以直接入住的房子。

共享责任模型

云服务在提供容错和扩展的同时,也在不同层面增加了安全性的模糊性。如果是 AWS 程序漏洞导致大量数据泄露,AWS 不承担责任。但如果 AWS 数据中心物理安全遭到破坏,客户数据被盗取,AWS 就得承担责任。

云架构使用什么技术?

  1. 虚拟化:把一台机器的资源分成多台虚拟机器,多台裸机汇集形成资源集群,隔离资源的使用,灵活且可扩展资源池。它抽象了硬件安装过程,但仍有改进空间,并非专为云而生。技术栈的灵活性和可定制性提升,促使了容器的出现。
  2. 容器:容器就像一个个独立的小空间,允许开发人员与堆栈各部分灵活交互,实现按需生成服务,提高网络抽象程度,方便应用迁移扩展,更高效地使用资源。系统管理和网络工程可以外包给其他公司。云是多种技术的集合。
  3. 组件选择:确定架构(这很难改),选择绑定或非绑定组件,可以自己开发、用开源的或者购买。云原生组件是为分布式系统设计的,CNCF 认证不是必须的,要安全编码,部分是开源的。
  4. 基础设施即代码(IaC):包括引导介质(Packer)、安装系统(Terraform)、自动配置(Ansible)、状态强制(Monit)。

集成部署有什么作用?

使用持续集成和持续交付(CICD)管道来构建环境,包括测试、测量和扫描代码更改的自动化测试和部署(GitOps)。要做到有弹性可靠,即任何单点故障都有故障转移或其他机制,让业务能持续提供(这叫冗余)。全球负载均衡(GSLB,比如智能 DNS、GTM)能解决客户单访问的单点故障隐患。还要平衡控制,控制保护系统免受漏洞和内部攻击的组件,应平衡控制和可用性。

云设计模式由有哪些?

云架构设计不必从头开始,采用已检验的设计模式是最佳选择。

  1. 微服务架构:为松散耦合、模块化服务而设计,微服务协同工作完成整体服务。每个服务都可以独立修改代码和重用,提高系统整体弹性和容错。大多数云利用微服务架构,云原生应用被构建充当微服务,便于水平扩展。安全优势是每个微服务应用强化、隔离,单一服务漏洞对整体系统影响小。缺点是调试更复杂,需要跨不同服务跟踪事务;性能可能有短板。
  2. 零信任架构:对资源的每个请求都需要验证来源已授权,然后授权短期访问(用令牌)。实现零信任架构的一种常见方法是 Open ID Connect(OIDC)联盟访问。授权处于活动状态时可以访问任何联合内服务。密码重置是针对零信任架构的常见攻击方式。

安全控制有哪些方式?

  1. 网络控制:传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WAN。SDN 可以对不同的接口(如 API 或 GUI)设置网络规则。通过 mTLS 不仅能加密流量,还能对客户端进行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提升,甚至破坏整个基础设施。现代访问管理系统多使用令牌进行访问控制,提供对服务的短时访问权。JWT 通常用于访问云端资源,伪造和破解密码是常见攻击手段。另一种类型的权限控制机制是强制访问控制 MAC。
  2. 身份管理:企业通常用 AD、LDAP 进行身份管理。AWS IAM 是身份和访问管理的公共云服务。Google 联盟认证 OIDC 经常用于 2FA。云身份提供者(IdP)作为真实身份来源,是更安全的解决方案,比如 Azure AD。

容器与云

虚拟化中每个 VM 需要运行自己的操作系统,大大增加了总体开销。容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。容器是对虚拟化的补充,而非取代。容器的系统开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。容器使用映像作为模板生成,映像相当于计算机硬盘。容器使用不同发行版文件加载内核,运行容器。

搭建属于自己的容器–Docker

这里的我选择使用ubuntu搭建docker的容器

什么是docker呢?

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

以下是 Docker 的一些关键特性和概念:

容器化(Containerization)
Docker 使用容器来隔离应用和环境,这与传统的虚拟化技术不同,容器共享宿主机的操作系统内核,但提供隔离的用户空间。
镜像(Images):
Docker 镜像是一个轻量级、可执行的软件包,包含了运行应用所需的代码、运行时、系统工具、系统库和设置。镜像是创建 Docker 容器的基础。
容器(Containers)
容器是镜像的运行实例。容器可以被创建、启动、停止、删除等。每个容器都是独立的,并且与其他容器隔离。
Dockerfile:
Dockerfile 是一个文本文件,包含了一系列的指令和参数,用于自动构建 Docker 镜像。
Docker 客户端和守护进程:
Docker 使用客户端-守护进程架构。Docker 守护进程(dockerd)运行在宿主机上,管理 Docker 对象,如镜像、容器、网络和卷。Docker 客户端(docker)是用户用来与守护进程交互的命令行工具。
Docker 仓库(Registries):
Docker 仓库用于存放 Docker 镜像。最知名的公共仓库是 Docker Hub,用户可以上传(push)和下载(pull)镜像。企业也可以搭建私有仓库。
Docker 网络(Networking)
Docker 提供了网络功能,允许容器之间以及容器与外部世界之间进行通信。Docker 支持多种网络配置,包括桥接网络、覆盖网络和自定义网络。
Docker 卷(Volumes)
Docker 卷是一种数据持久化机制,允许数据在容器之间共享,以及在容器和宿主机之间共享。卷独立于容器的生命周期,即使容器被删除,卷中的数据也不会丢失。
Docker Compose:
Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用程序。使用 YAML 文件来配置应用程序的服务,然后使用一个简单的命令 docker-compose up 来启动和停止所有服务。
安全性:
Docker 提供了多种安全特性,包括内核能力、AppArmor、Seccomp、用户命名空间等,以确保容器的安全性。
可移植性:
Docker 容器可以在多种环境中运行,包括物理机、虚拟机、数据中心和云平台。
轻量级:
由于容器共享宿主机的内核,因此启动速度快,资源占用少。

为什么不用kail搭建docker容器?

因为kail是secure的系统,镜像很大,工具众多,ubuntu系统稳定,但是容器还是得centos7真正的稳定,后面我将搭建一些网恋避险的网站,使用就是云服务器中的centos7。这个嘛就后续分享,现在我们继续搭建docker容器,后续咱学习Kubernetes 容器,Podman容器。容器有很多,咱会其中几个即可,就像数据库一样,学到就用到。

在 Ubuntu 上安装docker有哪些方式呢?

在 Ubuntu 上生成 CentOS 7 容器,可以使用 Docker 这个流行的容器化工具。步骤如下:
注意:如果时用的虚拟机记得网卡选择桥接,不然就需要配置dns,比较繁琐,

1、 前置条件

操作系统要求
Docker 支持以下版本的 Ubuntu 64 位操作系统:

  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Impish 21.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)
  • CPU 架构要求:x86_64 (或 amd64), armhf, arm64, 和 s390x 均支持 Docker 安装。
2、卸载旧版本

如果你之前安装过老版本的 Docker , 请先执行如下面命令卸载:

sudo apt-get remove docker docker-engine docker.io containerd runc

这里我未安装,所以也就不存咋卸载一说
在这里插入图片描述

3、开始安装 Docker

Ubuntu 支持如下几种方法安装 Docker:
通过 apt 安装,后续升级更方便(推荐方法);
手动下载 .deb 包安装,完全手动管理升级;
使用脚本自动安装 Docker, 适用于测试、开发环境中;
一般来说,选择使用apt安装方便且实用快捷

如何使用apt安装docker呢?

使用 APT 安装(推荐方式)

1、更新 apt 包索引:

sudo apt-get update

在这里插入图片描述
2、由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们需要添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

在这里插入图片描述

注意:这里安装的时候若是在终端中安装,那不需要换行符\,若是通过vim编辑后执行,则需要换行,额外空间yes即可
3、为了确认所下载软件包的合法性,需要添加 Docker 的 GPG 密钥,为了确保下载速度,走的国内源,注释的为国外源

sudo mkdir -p /etc/apt/keyrings
# 国内源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

这里我选择用国内源,国外的源下载太慢了,当然也可以直接编辑源为一个vim文件进行执行
在这里插入图片描述
设置国内镜像源:你可以配置 Docker 使用国内的镜像源,比如阿里云的镜像源,以加速镜像的拉取。创建或编辑 /etc/docker/daemon.json 文件
具体的源url如下:
注意:这里的源文件时是非常重要的,其他源可能报错无法访问,毕竟ubuntu的服务器在国外。ubuntu比较坑,没有vim
使用命令:apt install vim
在这里插入图片描述
是不是不想手动敲,学会信息收集,ubuntu是无法从主机复制路径的噢,相信大家会信息收集到解决方式的,winscp,vm tools也可以。

在这里插入图片描述

再次强调,没有源,是无法访问docker 的hello world镜像的噢
4、向 sources.list 中添加 Docker 软件源

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
#  echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

在这里插入图片描述
5、安装 Docker
更新 apt 软件包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose:

 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

在这里插入图片描述
在这里插入图片描述
选择yes即可
在这里插入图片描述
到这里也就安装完成了
在这里插入图片描述
注意: 运行 apt-get update 报 GPG 错误?
​ 你默认的 umask 可能设置不正确,导致无法检测到 repo 的公钥文件。运行以下命令,然后再次尝试更新 apt 索引:sudo chmod a+r /etc/apt/keyrings/docker.gpg

6、如何安装指定版本的 Docker ?
要想安装特定版本的 Docker, 需要先获取 repo 中可用的版本号,然后再安装:

apt-cache madison docker-ce
docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

第二列中显示的即为版本号,如5:20.10.163-0ubuntu-jammy.

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin

通过 .deb 包手动安装

如果你无法通过 apt 安装 Docker, 还可以手动下载指定版本的 .deb 包来安装。注意,每次升级时,同样需要下载一个新的 .deb 包。

1、访问 https://download.docker.com/linux/ubuntu/dists/ , 选择你的 Ubuntu 版本,然后进入 pool/stable/, 选择对应的 CPU 架构: amd64、 armhf、arm64s390x,下载.deb 安装包。
安装 Docker, 将下面的路径更改为你下载的 .deb 包路径:

sudo dpkg -i /path/to/package.deb

使用脚本自动安装 Docker

在测试或开发环境中, Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

若你想安装测试版的 Docker, 可以从 test.docker.com 获取脚本后再执行它:

$ curl -fsSL test.docker.com -o get-docker.sh

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在 Ubuntu 系统中。

测试docker是否安装成功

1、启动 Docker

# 设置 Docker 服务开机自动启动
sudo systemctl enable docker
# 启动 Docker 服务
sudo systemctl start docker

2、建立 Docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。
出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

  • 建立 docker 组:
sudo groupadd docker
  • 将当前用户加入 docker 组:
sudo usermod -aG docker $USER

在这里插入图片描述

  • 验证 Docker 是否安装成功
    运行 Docker 并打印 hello-world:
sudo docker run hello-world

在这里插入图片描述
此命令会下载测试镜像,并基于此镜像运行容器,然后在打印 hello-world 后退出容器。若成功打印信息,表示 Docker 安装成功。

当然docker的使用还未真正开始
具体的使用手册,大家可以学习如下
:学会使用docker

在Ubuntu中安装加速器

  1. 安装/升级 Docker 客户端
    推荐安装 1.10.0 以上版本的 Docker 客户端,参考文档 docker-ce
  2. 配置镜像加速器
    针对 Docker 客户端版本大于 1.10.0 的用户
    您可以通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

创建 Apache 容器后台运行:“docker container run -d --rm -p 8080:80 httpd”。

在这里插入图片描述

常用命令:

  • docker container ls”:查看所有容器。

在这里插入图片描述

  • docker exe -it 899 /bin/bash”:进入特定容器。
    首先需要知道容器id:
    列出所有容器(包括未运行的): docker ps -a
    在这里插入图片描述
    列出正在运行的容器:docker ps
    在这里插入图片描述
    进入特定 docker exec -it [id] /bin/bash
    通过docker ps 就可以获取到容器的id
    在这里插入图片描述
    容器还有很多的命令,容器docker的命令很多,大家自行学习和了解,也可以在官方文档上进行学习。
    容器要学的东西很多,一时半会是写不完的,咱现在就先了解下,后面慢慢再来系统的学习下docker。
    Podman 是 Docker 的替代产品,无守护进程。
  • sudo podman run -d --r-m --network host httpd”:运行容器。
  • podman pod create --name wha”:创建空 pod。
  • podman run -d --pod wha httpd”:在 pod 中运行容器。
  • podman run -pod wha -it alpine/curl /bin/asho”:在 pod 中运行可找东西的工具并互动。

大部分容器化过程都采用开放容器计划(OCI)标准,所以 Podman 和 Docker 可互操作。

容器的真相

Linux 没有单一被称为“容器”的特性。实际上,“容器”是阻止进程访问其他进程和资源的特性组合,发生在内核级别,可以控制其限制级别。
容器的历史:

  • 197x 年代引入 chroot,可以指示进程的新根目录,但不完美。命名空间可实现每个进程分离网络、进程和其他命名空间。
  • 1999 年 FreeBSD 发布 Jails,在 chroot 之上提供更多限制(Linux 不支持)。
  • 2002 年引入命名空间,分离内核资源。
  • 2006 年谷歌引入进程容器,后被称为 cgroup,可限制特定进程的内存和 CPU 资源。结合 cgroup 和命名空间发布了 Linux 容器(LXC)项目。

Linux 中有八种用户命名空间:挂载、进程 ID、网络、进程间通信、UTS、用户 ID、控制组、时间、syslog。

Linux中的命名空间详解

在Linux操作系统中,命名空间(namespaces)是一种内核级别的特性,用于将系统资源隔离开来,使得在不同命名空间中的进程看到不同的系统视图。Linux提供了多种类型的命名空间,每种都隔离了不同的系统资源。以下是一些常用的Linux命名空间:

Mount Namespace(挂载命名空间)

用于隔离文件系统挂载点。在不同的挂载命名空间中,可以有不同的挂载点和文件系统结构。
UTS Namespace(UNIX Time-Sharing System Namespace)

用于隔离网络主机名和域名。在不同的UTS命名空间中,可以有不同的主机名和NIS域名。
IPC Namespace(进程间通信命名空间)

用于隔离进程间通信设施,如System V IPC、POSIX消息队列等。
Network Namespace(网络命名空间)

用于隔离网络设备、网络栈、端口等网络资源。在不同的网络命名空间中,可以有不同的网络配置和网络接口。
PID Namespace(进程ID命名空间)

用于隔离进程编号。在不同的PID命名空间中,进程ID是独立的,一个进程在不同的命名空间中可以有不同的PID。
User Namespace(用户命名空间)

用于隔离用户和组ID。在不同的用户命名空间中,可以有不同的用户和组ID映射。
Cgroup Namespace(控制组命名空间)

用于隔离控制组层次结构,允许对资源进行更细粒度的控制。
Time Namespace(时间命名空间)

用于隔离系统时间。在不同的时间命名空间中,可以有不同的时钟和定时器。
Signal Namespace(信号命名空间)

用于隔离信号的发送和接收。

docker中有命名空间吗?docke用什么配置文件限制访问呢?

Docker 默认不使用用户命名空间。为防止特权内核调用,它使用内核 capabilities 和 seccomp 配置文件限制访问。Linux 有特权或非特权进程。非特权进程有正确权限可写入系统文件,特权进程几乎无所不能。当非特权用户只需要特殊权限时,可使用 Capabilities。Linux 将一些系统级任务分组为 40 多个类别,称为 Capabilities。
常见 Capabilities:

  • CAP_CHOWN:允许进程修改文件所有者。
  • CAP_NET_ADMIN:对网络配置执行管理任务。
  • CAP_NET_BIND_SERVICE:允许绑定低于 1024 的端口。
  • CAP_NET_RAW:允许使用 RAW 套接字。
  • CAP_SYS_ADMIN:“根”权限(危险),启用过多功能集。
  • CAP_SYS_BOOT:允许重新启动主机。
  • CAP_SYS_MODULE:允许加载和卸载内核模块。
  • CAP_SYS_TIME:允许进程设置系统时钟。
  • CAP_SYS_CHROOT:允许使用 chroot。
  • CAP_AUDIT_WRITE:允许写入内核审计日志。
    提升工具权限有隐患,可能被恶意用户利用,破坏系统、窃取敏感信息或完全控制整个系统。

通过docker中的内核capabilities ,我们知道一般来说docker中都是非特权的进程,不同的进程执行也是需要排队的,故提升权限是很重要的,可以使用常见的Capabilities参数进行提权。这不仅仅在渗透中很有用,在实际搭建靶场和网站时也是非常有用的。

实践是检验真理的唯一标准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

03-axios常用的请求方法、axios错误处理

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

Spring Boot 与腾讯云 MySQL 监听 Binlog 数据变化,并使用 UI 展示页面效果

引言 在现代的分布式系统和微服务架构中&#xff0c;数据同步和变更监控是保证系统一致性和实时性的核心问题之一。MySQL 数据库的 binlog&#xff08;二进制日志&#xff09;功能能够记录所有对数据库的修改操作&#xff0c;如插入&#xff08;INSERT&#xff09;、更新&…

Spring Boot汽车资讯:科技与速度的新纪元

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足&#xff0c;创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…

thinkphp6模板调用URL方法生成的链接异常

var uul params.url ;console.log(params.url);console.log("{:Url(UserLog/index)}");console.log("{:Url("uul")}"); 生成的链接地址 UserLog/index /jjg/index.php/Home/UserLog/index.html /jjg/index.php/Home/Index/UserLog/index.html…

NodeJS 百度智能云文本转语音(实测)

现在文本转语音的技术已经非常完善了&#xff0c;尽管网络上有许多免费的工具&#xff0c;还是测试了专业的服务&#xff0c;选择了百度的TTS服务。 于是&#xff0c;在百度智能云注册和开通了文本转语音的服务&#xff0c;尝试使用NodeJS 实现文本转语音服务。但是百度的文档实…

UML 类图讲解

UML 类图符号含义 在 UML 类图中&#xff0c;每个符号都有其特定的含义。以下是常见符号的解释&#xff1a; : Public&#xff08;公共访问权限&#xff09;-: Private&#xff08;私有访问权限&#xff09;#: Protected&#xff08;受保护访问权限&#xff09;~: Package&…

【GAT】 代码详解 (1) 运行方法【pytorch】可运行版本

GRAPH ATTENTION NETWORKS 代码详解 前言0.引言1. 环境配置2. 代码的运行2.1 报错处理2.2 运行结果展示 3.总结 前言 在前文中&#xff0c;我们已经深入探讨了图卷积神经网络和图注意力网络的理论基础。还没看的同学点这里补习下。接下来&#xff0c;将开启一个新的阶段&#…

远程控制步骤

当远在千里之外的朋友想求助你帮他找到他电脑上的文件、或者是给他安装软件时。但是你给他说了他又找不到&#xff0c;那么这时你就可以通过控制对方的电脑去做一系列的操作。 如何远程控制对方的电脑非常关键。 方法一&#xff08;Windows自带远程桌面功能&#xff09;&#…

C指针之舞——指针探秘之旅

❤博客主页&#xff1a;折枝寄北-CSDN博客 ❤专栏内容&#xff1a;C语言学习专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.3001.5482 指针基础学习 在之前的博客文章中&#xff0c;简单总结了指针的基础概念 我们知道了指针的概念&#xf…

前端 JS 浅拷贝与深拷贝

目录 一、问题引出 二、浅拷贝 1、通过解构重构实现浅拷贝 三、深拷贝 1、自定义实现深拷贝 2、JSON实现深拷贝 四、总结 一、问题引出 基础类型的数据存放&#xff1a; let a 100let b aconsole.log("a:" a, "b:" b)a 50console.log("a…

72项!湖北省2024年度第二批省级科技计划项目拟立项项目公示!

本期精选 SCI&EI ●IEEE 1区TOP 计算机类&#xff08;含CCF&#xff09;&#xff1b; ●EI快刊&#xff1a;最快1周录用&#xff01; 知网(CNKI)、谷歌学术期刊 ●7天录用-检索&#xff08;100%录用&#xff09;&#xff0c;1周上线&#xff1b; 免费稿件评估 免费匹配…

uniapp微信小程序转发跳转指定页面

onShareAppMessage 是微信小程序中的一个重要函数&#xff0c;用于自定义转发内容。当用户点击右上角的菜单按钮&#xff0c;并选择“转发”时&#xff0c;会触发这个函数。开发者可以在这个函数中返回一个对象&#xff0c;用于定义分享卡片的标题、图片、路径等信息。 使用场…

[N1CTF 2018]eating_cms

打开题目 只有个登录框&#xff0c;其他什么都没有&#xff0c;尝试了一下弱口令&#xff0c;没能成功 尝试访问一下register.php&#xff0c;看看能不能注册个账号 注册页面&#xff0c;随便注册个账号登陆一下 url中感觉是个注入点&#xff0c;尝试使用file伪协议读取一下us…

PMP–一、二、三模、冲刺–分类–5.范围管理–技巧–引导

文章目录 技巧一模5.范围管理--3.定义范围--工具与技术--引导--在研讨会和座谈会中使用引导技能来协调具有不同期望或不同专业知识的关键干系人&#xff0c;使他们就项目可交付成果以及项目和产品边界达成跨职能的共识。引导&#xff1a;题干关键词 “需求不同、需求差异、需求…

C语言-字符串指针及多变的访问方式

1、字符串指针 示例;输出字符串数组 1. #include <stdio.h> 2. #include <string.h> 3. 4. int main(){ 5. char str[] "<http://baidu.com>"; 6. int len strlen(str), i; 7. //直接输出字符串 8. printf("%s\\n", str); 9. //每次…

Linux之vim模式下全选命令

在Linux系统中&#xff0c;使用Vim编辑器进行全选操作可以通过以下几种方式实现&#xff1a; 1.使用键盘快捷键 按下 ”ggVG”&#xff08;先按下”g”&#xff0c;再按下”g”&#xff0c;再按下”V”&#xff0c;最后按下”G”&#xff09;可以全选当前文件内容。其中 ”g…

解决虚拟机未被自动分配ip

文章目录 1. 背景2. 解决步骤 1. 背景 从vulnhub下载的靶场文件&#xff0c;网络适配器模式设置为nat模式之后&#xff0c;启动虚拟机之后发现没有成功分配动态ip。推测是虚拟机分配的网卡名称和原先靶机作者设置网络配置文件 网络接口名称不一致导致。 2. 解决步骤 解决办法就…

【数据结构与算法】排序

文章目录 排序1.基本概念2.分类2.存储结构 一.插入排序1.1直接插入排序1.2折半插入排序1.3希尔排序 二.选择排序2.1简单选择排序2.2堆排序 三.交换排序3.1冒泡排序3.2快速排序 四.归并排序五.基数排序**总结** 排序 1.基本概念 排序&#xff08;sorting&#xff09;又称分类&…

5. ARM_指令集

概述 分类 汇编中的符号&#xff1a; 指令&#xff1a;能够编译生成一条32位机器码&#xff0c;并且能被处理器识别和执行伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令伪操作&#xff1a;不会生成指令&#xff0c;只是在编译阶段告诉编译器怎…

WPF MVVM框架

一、MVVM简介 MVC Model View Control MVP MVVM即Model-View-ViewModel&#xff0c;MVVM模式与MVP&#xff08;Model-View-Presenter&#xff09;模式相似&#xff0c;主要目的是分离视图&#xff08;View&#xff09;和模型&#xff08;Model&#xff09;&#xff0c;具有低…