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

【后端】Docker学习笔记

文章目录

  • Docker
    • 一、Docker安装(Linux)
    • 二、Docker概念
    • 三、Docker常用命令
    • 四、数据卷
    • 五、自定义镜像
    • 六、网络
    • 七、DockerCompose

Docker

Docker是一个开源平台,主要基于Go语言构建,它使开发者能够将应用程序及其依赖项打包到一个轻量级、可移植的容器中。容器技术的核心概念是将操作系统和应用程序隔离在一个容器内,这极大地提高了效率和灵活性。

与传统的虚拟化技术相比,Docker提供了一种更轻量级的方案。它是一个进程级别的虚拟化,可以隔离文件、进程和资源等,而无需模拟整个操作系统。此外,Docker容器可以在几乎任何主流的Linux机器上运行,无论是物理机、虚拟机还是云服务器。

一、Docker安装(Linux)

如果linux中没有安装过yum工具,首先要安装一个yum工具:

yum install -y yum-utils

接下来配置一个Docker的安装源:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

然后执行命令安装Docker:

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

接下来启动一下Docker:

# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

由于Docker的仓库在国外,下载镜像会非常慢,所以需要配置一个阿里云镜像加速。

在这里插入图片描述

二、Docker概念

当我们利用 Docker 安装应用时,Docker 会自动搜索并下载应用镜像 (image) 。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。

Docker 会在运行镜像时创建一个隔离环境,称为容器 (container)。容器可以形象理解为独属于docker的阉割版微型操作系统。它有自己的内存空间,有自己的文件系统,甚至有自己的网络空间。

镜像仓库,存储和管理镜像的平台。Docker 官方维护了一个公共仓库, Docker.Hub。开发者可以将自己的应用的镜像上传到这个公共仓库之中,比如MySQL、redis等都在公共仓库上有自己的镜像。

镜像就相当于一个“免安装”的软件,只需要下载下来就可以直接启动。不用关心各种配置、依赖、操作系统的差异。

三、Docker常用命令

所有的命令都可以通过--help参数查看它的参数列表以及用法。


  • docker pull 镜像名称:版本号:从docker.pub中拉取对应镜像

  • docker images:查看所有的本地镜像

  • docker rmi 镜像名:版本:删除对应镜像


  • docker save 参数 镜像名:版本:将镜像打包到本地

    • 参数-o 镜像名.tar:把镜像保存成tar文件,或者也可以tar.gz打包压缩
  • docker load 参数:将save的镜像tar包重新加载为镜像文件

    • 参数-i tar文件名

  • docker run 参数 镜像名:版本:创建容器并运行一个镜像,如果没有镜像则会自动pull镜像
    • 参数-d:让容器在后台运行
    • 参数--name:给容器起个名字,必须唯一
    • 参数-p 宿主机端口号:容器端口号:将创建的容器的端口号3306映射到宿主机的端口号3307。容器拥有自己的IP地址,但是docker的宿主机之外的主机是无法看到容器的。所以只能通过让外部主机访问宿主机,再让宿主机将请求映射到Docker容器的端口中。
    • 参数-e key=value:设置环境变量,这个是由镜像的制作者决定的。使用者直接上docker.pub直接查看有哪些环境变量,按需要配置即可。可以配置多个-e参数。
    • 要在容器中运行的镜像名字:镜像名称一般由两部分组成,[repository]:[tag],镜像名:版本。比如mysql:5.7。如果没有指定版本号,默认是latest的镜像。

在这里插入图片描述

(反斜杠是为了美观进行的换行,不加也可)。


  • docker stop 容器名:停止容器中线程的运行。比如如果容器中运行的是MySQL,会停掉MySQL。

  • docker start 容器名:启动停止的容器

  • docker ps:查看各个容器的状态

  • docker inspect 容器名:查看具体容器的状态,比如它的数据卷、网络配置等等。

  • docker rm 容器名:删除容器

  • docker logs 容器名:查看容器运行日志

  • docker exec -it 容器名 bash:进入容器内部,使用命令行进行交互

四、数据卷

虽然可以使用命令进入容器中,但是由于容器只是一个最小化的系统环境,它只具备运行镜像所需的环境,是不会具备vim等编辑器的,所以容器中的文件无法进行修改。

如果有一个需求:

在这里插入图片描述

应该如何修改容器中的html文件呢?这就需要用到数据卷了。

数据卷(volume)是一个虚拟目录,是容器目录与宿主机目录映射的桥梁。想要更改容器中的文件,只能通过数据卷进行修改。

具体来说,需要创建一个数据卷,然后将数据卷挂载到容器目录和宿主机目录,之后容器目录和宿主机目录就建立起了映射,对宿主机目录做修改,都能映射到容器所在目录。

创建、查看、删除数据卷的命令如图。

在这里插入图片描述

应该如何挂载数据卷到容器目录和宿主机目录呢?==当创建容器的时候,就需要同时挂载数据卷到容器目录和宿主机目录了,否则创建完容器之后,是无法进行挂载的。==在创建容器(docker run)时,直接加上参数-v 数据卷名:容器内目录完成容器目录数据卷的挂载(这里没有宿主机目录是因为docker默认根据容器目录创建了一个对应的宿主机目录并将数据卷挂载到该目录了)。可以使用docker inspect 数据卷名查看数据卷挂载的宿主机目录,然后进入该目录进行操作。

在这里插入图片描述

上边宿主机目录是docker自动指定的,实际上也可以自己手动指定。

在这里插入图片描述

如果指定本地目录,数据卷的名称默认为该本地目录的名称。例如,如果要将本地的/path/to/local/dir目录挂载到容器中,则数据卷的名称为/path/to/local/dir。

五、自定义镜像

Java项目可以通过docker进行部署,这就需要会使用docker制造一个镜像。

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

传统部署一个Java应用,通常需要:

  • 准备一个linux服务器
  • 安装jre并配置环境变量
  • 拷贝jar包
  • 运行jar包

看似,镜像中只需要jre和jar包就足够了,但是Java程序需要jre中的jvm去执行,jvm是需要跟操作系统进行交互的,所以还需要准备好具体的操作系统环境。具体来说,是操作系统的系统函数。问题来了,需要用到哪些系统函数呢?

可以使用一个笨方法,直接把整个操作系统的所有系统函数塞到镜像中,这样就绝对没问题。

所以,制作一个镜像的步骤如下:

  • 准备一个linux运行环境(系统函数库),debian、ubuntu、centos都行
  • 安装jre并配置环境变量
  • jar包
  • 一个操作系统的脚本,启动这个脚本能够自动运行java -jar命令启动jar包

这四个部分的内容,事实上并不会混合在一起放到镜像中去(当然也可以这样做,但是混在一起并不明智,难道所有的东西都要制作者自己去找吗?)。而是每个部分都作为一个子镜像(有些子镜像已经有别人做好了,比如linux的环境),四个子镜像组合成为一个镜像。在docker中,将这四部分内容称为有四个层(layer)

在这里插入图片描述

最底下的几层称为**基础镜像。**这些镜像都是别人已经做好的通用镜像,开发者可以基于这些镜像来制作自己的镜像。

最上的层称为入口。一般是程序启动的脚本和参数。

开发者只需要描述自己想要制作的镜像的结构(基础镜像、中间层、入口),docker就会自动完成整个镜像的构建。

需要在Dockfile文件中使用指令来描述镜像结构。常见指令如图:

在这里插入图片描述

这并不是所有的命令,如果有更多的需求可以查看官方文档。

可以基于Ubuntu的基础镜像自己搭建一个Java应用的镜像。当然,也有更加方便的镜像,已经把Java的所有的环境都配置好,只需要把jar包塞到镜像之中然后配置入口就可以了。

在这里插入图片描述

当编写好了Dockfile,可以利用一个命令来将Dockfile构建成镜像:

docker build -t 镜像名:版本 Dockerfile所在目录(如果在当前目录,指定为.)

之后,就是将这个镜像使用docker save打包成tar,然后发给另一个开发者,然后另一个开发者使用docker load加载镜像,然后使用docker run创建容器并运行镜像即可。

六、网络

docker把Java应用成功部署了,而Java应用是需要用到redis、MySQL等数据库的。redis、MySQL可以做成镜像运行在容器之中。redis和MySQL的容器都有一个ip地址,它们的ip地址是由docker分配的。启动一个镜像,docker会给该镜像的容器分配一个ip地址,第二次启动同一个镜像时,docker会再次给该镜像的容器分配一个ip地址,前后两次分配的ip地址有可能不同。

现在问题来了,Java应用程序中似乎不能知道redis和MySQL的ip地址。

docker是通过自定义网络来解决这个问题的。各个容器之间通过容器名来访问彼此,由docker通过容器名获取该容器的ip地址然后访问该容器,而不是直接通过ip来访问彼此

docker的自定义网络的常用命令如下:

在这里插入图片描述

值得注意的是,每一个容器在创建的时候都会默认指定给一个默认网络bridge,在这个网络中,是不能够通过容器名访问容器的。只能通过ip地址。只有通过自定义网络才能具备容器名访问的功能。

也可以通过创建一个容器的时候(docker run)通过参数--network 自定义网络名直接将该容器加入自定义网络。使用这种方式,会将默认网络直接覆盖为自定义网络。

在一个springboot工程中,如果它之后要使用docker进行部署,那么配置文件中的mysql数据源信息也要记得修改,数据源的主机应该写为容器的名字,而不是ip地址。

在这里插入图片描述

一般在本地进行开发的时候,此时,还没有进入docker环境,所以会使用本机MySQL的ip地址。

在部署的时候,如果要使用docker进行部署,则必须要使用容器名代替配置文件中的ip地址。

七、DockerCompose

如果现在有Java应用程序的镜像,MySQL的镜像,redis的镜像,包括一些微服务中间件的镜像,那么手动部署起来会非常麻烦。

如果手动进行部署,会非常麻烦,这时候,就出现了一种技术,能够将相互关联的镜像同一部署,提高部署的效率。这就是DockerCompose。

DockerCompose 通过一个单独的 docker-compose.yml 模板文件 (YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的 Docker 容器的快速部署。

在DockerCompose之中,各个相互关联的容器的整体称为项目(project),每一个容器称为一个服务(service)。各个服务写在一个yml文件之中,之后通过该文件进行统一部署。

在这里插入图片描述

实际上,项目文件之中写的内容跟docker run差不多。docker run的各种参数实际上就是在描述容器的启动状态,所以项目文件中的每一个服务也需要有这些信息。将来读取该文件进行部署的时候,实际上就是自动化运行了多个docker run命令。

在这里插入图片描述

yml文件之中还可以自定义镜像(仍然需要手动制作Dockerfile,不过免去了生成镜像的命令)。

image-20231231232129114

yml文件之中还可以创建自定义网络。其他容器需要用到自定义网络,只需要写上在yml文件中创建的自定义网络名即可。

在这里插入图片描述

最后,DockerCompose文件制作完毕,执行以下命令即可将所有容器一次性创建:

docker compose [options] [command]

以下是docker compose的常用命令(有一个-d参数也很常用,能够让创建的容器在后台运行):

在这里插入图片描述

所以,最后,开发者要使用docker部署一整个项目,只需要写Dockerfile文件,然后再写DockerCompose文件即可。

在这里插入图片描述

当然,docker的功能还远不止如此。以上学习的内容都仅限于单个服务器中,如果需要集群部署,docker也是可以做到的。不过作为一个后端开发人员,以上知识就足够了,更加深入的docker知识需要运维人员去了解。

相关文章:

【后端】Docker学习笔记

文章目录 Docker一、Docker安装(Linux)二、Docker概念三、Docker常用命令四、数据卷五、自定义镜像六、网络七、DockerCompose Docker Docker是一个开源平台,主要基于Go语言构建,它使开发者能够将应用程序及其依赖项打包到一个轻…...

UE5.1_Gameplay Debugger启用

UE5.1_Gameplay Debugger启用 重点问题: Gamplay Debugger启用不知道? Apostrophe、Tilde键不知道是哪个? Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger...

【论文阅读+复现】SparseCtrl: Adding Sparse Controls to Text-to-Video Diffusion Models

SparseCtrl:在文本到视频扩散模型中添加稀疏控制。 (AnimateDiff V3,官方版AnimateDiffControlNet,效果很丝滑) code:GitHub - guoyww/AnimateDiff: Official implementation of AnimateDiff. paper:htt…...

速盾cdn:ddos防护手段

速盾CDN采用多种手段来进行DDoS防护,以确保网络和网站的正常运行。以下是速盾CDN可能采用的一些主要DDoS防护手段: 实时监测和分析: 速盾CDN实时监测网络流量,通过分析流量模式来检测异常行为,以迅速发现潜在的DDoS攻击…...

STL——queue容器

1.queue基本概念 概念:queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 队列容器允许从一端新增元素,从另一端移除元素。 队列中只有队头和队尾才可以被外界使用,因此队列不允许…...

gitLab页面打tag操作步骤

作者:moical 链接:gitLab页面打tag简单使用 - 掘金 (juejin.cn) 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ---------------------------------------------------------------------…...

神秘的Cookie和Session

Cookie 1.Cookie是什么? Cookie是浏览器提供的持久化储存数据的方式。 2.从哪里来? Cookie从服务器中来,存储到客户端中。一个客户端就对应着一个浏览器。 服务器代码中决定了什么样的数据会储存到客户端中,通过HTTP相应的Se…...

springboot接口文档

Swagger 在Spring Boot中生成和维护接口文档的一个常用方法是使用Swagger。Swagger是一个开源软件框架,它帮助开发者设计、构建、记录和使用RESTful Web服务。下面是在Spring Boot项目中使用Swagger来创建接口文档的详细步骤:1. 添加Swagger依赖 在你的Spring Boot项目的pom…...

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈

深入浅出图解C#堆与栈 C# HeapingVS Stacking第一节 理解堆与栈 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.csdn.n…...

Maven的使用和配置

Maven的使用和配置 起源: Apache 软件基金会(非营业的组织,把一些开源软件维护管理起来) maven 是apache的一个开源项目,是一个优秀的项目构建(管理)工具, maven 管理项目中的jar,以及jar与jar之间的依赖 maven 可…...

MongoDB 数据类型

目录 BSON 类型 二进制数据(Binary Data) ObjectId ObjectId定义 文档中的ObjectId ObjectId的单调性 字符串(String) 时间戳(Timestamps) 日期(Date) BSON类型的排序 数…...

Java 将 List 转换为 String常见方式

将 List 转换为 String的几种方式 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成…...

Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)

文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…...

idea 出现Cannot resolve symbol ‘springframework‘解决方法

Maven手动重新加载 1)File–>Invalidate Caches / Restart… 清理缓存,重启idea客户端 2)File–>Maven–>Reload project重新从maven中加载工程依赖的组件...

ubuntu22.04安装anacoda遇到的坑

这几天把用了3年的windows10换成了ubuntu22.04 各种环境都得配置,本文记录下遇到的坑。 1、anacoda在ubuntu上也可以用官方也提供了安装包,但是没有图形界面,需要以命令行的方式安装和运行配置 1.1 安装:官网下载后,…...

window的OPen方法,弹窗的特征

文章目录 一、介绍二、弹窗的特征 一、介绍 window.open() 方法是 JavaScript 中的一个内置方法,用于在浏览器中打开一个新的窗口或标签页。 语法: window.open(url, name, features, replace)二、弹窗的特征 open方法参数说明: 参数说明url要载入窗…...

DFS算法查找所有路径详解

DFS算法查找所有路径详解 算法介绍 深度优先搜索(Depth-First Search,DFS)是一种图遍历算法,它从起始节点开始,沿着一条路径尽可能深入,直到达到最深的节点,然后回溯到前一节点,继…...

单片机的存储、堆栈与程序执行方式

一、单片机存储区域 如图所示位STM32F103ZET6的参数: 单片机的ROM(内部FLASH):512KB,用来存放程序代码的空间。 单片机的RAM:64KB,一般都被分配为堆、栈、变量等的空间。 二、堆和栈的概念 …...

Web3开发成本和主要特性

多年来,技术不断进步,可帮助您的业务领先于竞争对手。如今,您可以看到许多更新和变化,使技术更加先进,对企业更加有用。到现在为止,web1.2和2.0比较流行,但是要知道web 3才是技术之父&#xff0…...

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)

Matplotlib图像基础 写在前面1 基本绘图实例:sin、cos函数图2 plot()函数详解**kwargs参数: 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面 前面我…...

005、数据类型

1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…...

软考网络工程师考试大纲(2018年最新版)

本书是全国计算机专业技术资格考试办公室组织编写的网络工程师考试大纲,本书除大纲内容外,还包括了人力资源和社会保障部、工业和信息化部的有关文件以及考试简介。 网络工程师考试大纲是针对本考试的计算机网络中级资格制定的。通过本考试的考生,可被用人单位择优聘任为工…...

【数据结构】栈【详解】

目录 栈的定义: 栈的声明与定义: 头文件的包含: 对栈的基本操作: 栈的初始化: 摧毁栈: 入栈: ​编辑 出栈: ​编辑 输出栈顶位置: 输出栈的当前大小: 判空操…...

CSS 纵向底部往上动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-bottom: isAnimating }"><!-- 元素内容 --&g…...

常用的 MySQL 可视化客户端

数据库可视化客户端&#xff08;GUI&#xff09;让用户在和数据库进行交互时&#xff0c;能直观地查看、创建和修改对象&#xff0c;如&#xff1a;表、行和列。让数据库操作变得更方便了。 今天&#xff0c;我们来了解下目前市场上最常用的 MySQL 可视化客户端。 官方&#x…...

C#使用SyntaxTree获取.cs文件中的属性名和注释

有时候&#xff0c;我们可能需要获取.cs文件中的属性和对应的注释来生成一些代码&#xff0c;比如SQL查询什么的。 但使用正则匹配有时候会不准确。搜索了下&#xff0c;发现微软提供了代码解析的API。 具体如下两个方法&#xff1a; /// <summary> /// 获取所有属性和…...

基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》&#xff0c;针对电能共享市场的交易机制进行研究&#xff0c;提出了基于价值认同的需求侧电能共享分布式交易策略&#xff0c;旨在降低电力市…...

门控循环单元(GRU)-多输入回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、全部代码数据分享&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译…...

电池管理系统BMS中SOC算法通俗解析(二)

下面简单介绍下我们BMS保护板使用的SOC估算方法。我们算法的主要是针对电流积分法计算SOC的局限性进行改进&#xff1a; ●电池包第一次上电使用开路电压法估算SOC。第一次上电&#xff0c;根据电池包厂家给出的电压和剩余容量二维关系图大概估算出目前电池包的剩余容量即SOC。…...

YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...

爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>

前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---&#xff1c;第三十一章 Scrapy Redis 初启动/conn说明书)&#xff1e;-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …...

PostgreSQL | 概念 | 什么是OLTPOLAP?

什么是OLTP&OLAP&#xff1f; 大白话理解&#xff1a;业务系统都可以称作OLTP&#xff0c;基于业务系统产生的数据进行数据分析和决策的都可以称为OLAP。 OLTP OLTP&#xff08; Online Transaction Processing&#xff09;在线事务处理系统 用途&#xff1a; 用于支持日…...

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷

2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 &#xff08;总分1000分&#xff09; 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目&#xff08;500分&#xff09; 服务器搭建与运维项目&#xff08;…...

Angular进阶之六:Progressive rendering

简介 Progressive Rendering 是一种提高 Web 应用性能的方法&#xff0c;允许页面在加载过程中逐步呈现&#xff0c;以提高用户体验。在本文中&#xff0c;我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering&#xff0c;特别是处理从服务器获取大量数据的…...

机器人中的数值优化之线性共轭梯度法

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1.无约束优化方法对比 2.Hessian-vec product 3.线性共轭梯度方法的步长​编辑 4.共轭梯度…...

嵌入式Linux C语言介绍

目录 一.前言 二.C语言的特点 一.前言 开发工具通常依赖于操作系统提供的各种功能和服务。许多开发工具都基于操作系统的API&#xff08;应用程序接口&#xff09;进行开发&#xff0c;这些API提供了文件处理、网络通信、图形界面等核心功能。没有操作系统的支持&#xff0c;…...

基于Java电影院票票务系统

基于Java电影院票票务系统 功能需求 1、用户登录与注册&#xff1a;用户可以通过系统注册账号并登录系统&#xff0c;方便进行购票和管理个人信息。 2、个人信息管理&#xff1a;用户可以查看和修改个人信息&#xff0c;包括姓名、联系方式等。 3、影片信息查询&#xff1a…...

HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】

文章目录 一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专栏-31】1.1 项目背景1.2 ArkTS详解二.HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】2.1 ArkTS页面源码2.2 代码解析2.3 心得一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专…...

Unity坦克大战开发全流程——1)需求分析

实践项目&#xff1a;需求分析 该游戏共有三个主要部分&#xff1a;UI、数据储存、核心游戏逻辑&#xff0c;下面我们将从开始场景、游戏场景、结束场景三个角度切入进行分析。...

python练习2【题解///考点列出///错题改正】

一、单选题 【文件】 *1.【单选题】 ——文件&#xff1a;读取方法 下列哪个选项可以从文件中读取任意字节的内容&#xff1f;&#xff08;C &#xff09;A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的&#xff0…...

7.2 uvm_resource_db in UVM

uvm_resource_db是一个类型参数化 type-parameterized的类&#xff0c;它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问&#xff0c;并且没有添加新功能。因此&#xff0c;uvm_resource_db不是从uvm_resource类派生的。以下uvm_resour…...

洛谷——P3879 [TJOI2010] 阅读理解(STL:hash+set,c++)

文章目录 一、题目[TJOI2010] 阅读理解题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 二、题解基本思路&#xff1a;代码 一、题目 [TJOI2010] 阅读理解 题目描述 英语老师留了 N N N 篇阅读理解作业&#xff0c;但是每篇英文短文都有很多生词需要查字典&am…...

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录 之前发布过Window方式,这次结合以上主题,完善下Linux相关登入方式过程,纯属做个记录,有需要的朋友可以做个学习参考。 一、Windows环境提示“‘mysql’ 不是内部或外部命令,也不是可运行的程序或批…...

【基础】【Python网络爬虫】【13.免费代理与付费代理】(附大量案例代码)(建议收藏)

Python网络爬虫基础 一、免费代理1. 什么是代理IP2. 代理IP的类型3. 代理IP的作用4. 免费代理的潜在风险5. 免费代理网站 二、付费代理1. 找付费代理服务站点2. 生成获取代理的api接口3. python获取代理请求接口示例数据返回示例 4. 解决请求速率5. 品易代理使用注意事项代理添…...

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)

训练yolov5模型&#xff08;本地&#xff09; 训练文件 train.py训练如下图 一些参数的设置weights:对于weight参数&#xff0c;可以往Default参数中填入的参数有 cfg&#xff1a;&#xff08;缩写&#xff09;cfg参数可以选择的网络模型 data对于data hyp 超参数epochs 训练多…...

fastApi 项目部署

方式一&#xff0c;Uvicorn部署 Run a Server Manually - Uvicorn - FastAPI 1&#xff0c;linux服务器安装 python>3.8 2&#xff0c;安装 uvicorn : pip install "uvicorn[standard]" 3&#xff0c;上传项目到服务器 main.py from typing imp…...

python操作mysql数据库

说明&#xff1a;这里仅仅为了演示python操作MySQL数据库&#xff0c;真实环境中&#xff0c;最好把CURD分别封装为对应的方法。并将这些方法在类中封装&#xff0c;体现python面向对象的特征。python链接MySQL数据库 建表 create database mydb; use mydb; create table EMP…...

Redis6.0 Client-Side缓存是什么

前言 Redis在其6.0版本中加入了Client-side caching的支持&#xff0c;开启该功能后&#xff0c;Redis可以将指定的key-value缓存在客户端侧&#xff0c;这样当客户端发起请求时&#xff0c;如果客户端侧存在缓存&#xff0c;则无需请求Redis Server端。 Why Client-side Cac…...

Leetcode—1572.矩阵对角线元素的和【简单】

2023每日刷题&#xff08;七十三&#xff09; Leetcode—1572.矩阵对角线元素的和 实现代码 class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int n mat.size();if(n 1) {return mat[0][0];}int sum 0;int i 0, j n - 1;while(i &…...

基于SpringBoot的二手手机商城系统的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的二手手机商城系统的设计…...