【Docker】Docker Container操作案例 | 综合实战

文章目录

  • Docker Container操作案例
    • 容器的基本操作
    • 容器状态迁移
    • 容器批量处理技巧
    • 容器交互模式
      • attached模式
      • detached模式
      • interactive模式
    • 容器与宿主机内容复制
    • 容器自动删除
    • 容器自动重启
    • 容器环境变量设置
    • 容器详情查看
    • 容器执行单行命令
    • 容器镜像导入导出
    • 容器日志查看
    • 容器资源查看
  • Docker Container综合实战
    • 综合实战一:Mysql容器化安装
    • 综合实战二:Redis容器化安装
      • Redis简介
      • Redis 容器创建
    • 综合实战三:C++容器制作
    • 综合实战四:SpringBoot容器制作
    • 综合实战五:容器资源更新
  • 常见问题


Docker Container操作案例

容器的基本操作

  1. 通过nginx镜像文件创建容器
docker run -d --name mynginx001 -p 8101:80 nginx:1.22.0

在这里插入图片描述

  1. 查看容器是否正常运行

在这里插入图片描述

  1. 查看容器详细信息
docker container inspect mynginx001

在这里插入图片描述

  1. 查看日志信息
docker logs -f mynginx001

在这里插入图片描述

  1. 删除容器
docker rm mynginx001

在这里插入图片描述


容器状态迁移

  1. 创建并运行容器
#更具镜像ID创建容器
docker create --name mynginx002 -p 8102:80 3a8963c304a2
#启动容器
docker start mynginx002

在这里插入图片描述

  1. docker kill 和 doker stop
docker kill mynginx002
docker stop mynginx002

在这里插入图片描述

  1. docker pause 剥夺容器CPU资源
docker pause mynginx002
docker unpause mynginx002

在这里插入图片描述


容器批量处理技巧

在这里插入图片描述

  • -a:表示打印所有的容器信息, 包括正在运行和已经退出的
  • -q: 表示只返回容器 ID
  • -f: 表示基于给的条件过滤 等价于 --filter 选项

💕 容器的批量搜索

通过名称、运行状态和祖先(镜像)进行过滤

#通过名字进行过滤
docker ps -f name=mywebsite4
#通过运行状态进行过滤
docker ps -f status=exited

在这里插入图片描述

docker ps -f ancestor=nginx:1.24.0

在这里插入图片描述

只返回ID信息

docker ps -q

在这里插入图片描述

💕 容器的批量操作

停止掉正在运行的所有容器

docker stop `docker ps -q`

在这里插入图片描述

重启所有已经停止的容器

docker start `docker ps -a -q`

在这里插入图片描述


容器交互模式

attached模式

attached 模式创建的容器会在前台运行。

创建attached模式的容器

docker run --name mynginx006 -p 8106:80 nginx:1.24.0

在这里插入图片描述

如果杀死attached模式下的容器会发生什么

在这里插入图片描述


detached模式

detached模式是指将容器进行后台运行

创建detached模式的容器

docker run --name mynginx007 -p 8107:80 -d nginx:1.24.0

在这里插入图片描述
在这里插入图片描述

docker logs -f mynginx007

在这里插入图片描述

docker attach会将detached容器转换为attach容器

docker attach mynginx007

在这里插入图片描述


interactive模式

当我们创建好一个容器之后, 可能需要去容器内部获取一些信息或执行一些命令,就需要进入到交互式模式。例如创建一个 Ubuntu 容器之后,需要到系统里输入各种Shell 命令和系统进行交互就需要进入交互式模式才可以完成。interactive模式 就是交互式模式

  • -i:保持容器运行。通常与 -t 同时使用,加入 it 这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
  • 为容器重新分配一个伪输入终端,通常与 -i 同时使用

创建一个交互式模式容器

docker run -it --name mynginx008 -p 8108:80 nginx:1.24.0 bash

在这里插入图片描述
在这里插入图片描述

在交互式模式容器中退出会发生什么

在这里插入图片描述

容器的interactive模式之和后台运行的容器交互

#创建一个后台运行的容器
docker run -d --name mynginx010 -p 8110:80 nginx:1.24.0
#容器的interactive模式之和后台运行的容器交互
docker exec -it mynginx010 bash

在这里插入图片描述
在这里插入图片描述


容器与宿主机内容复制

  1. 启动一个nginx服务并在宿主机上编辑一个index.html文件

在这里插入图片描述

docker cp mynginx011:/usr/share/nginx/html/index.html .

在这里插入图片描述

  1. 将编辑好的文件拷贝回容器中
docker cp ./index.html mynginx011:/usr/share/nginx/html/

在这里插入图片描述

这里我们需要注意的是,容器和容器之间不能通过docker cp命令进行文件的拷贝。


容器自动删除

交互模式下启动一个nginx容器

docker run -it --rm --name mynginx012 -p 8112:80 nginx:1.24.0 bash

在这里插入图片描述

后台启动一个nginx服务

docker run -d --rm --name mynginx012 -p 8112:80 nginx:1.24.0

在这里插入图片描述


容器自动重启

容器重启选项如下:

#默认值不自动重启
docker run --restart=no [容器名] 
#若容器的退出状态非 0,则自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
docker run --restart=on-failure:3 [容器名] : on-failure 
#容器退出时总是重启
docker run --restart=always [容器名] :always
#容器退出时总是重启,但不考虑 Docker 守护进程启动时就已经停止的容器
docker run --restart=unless-stopped [容器名] unless-stopped 
#如果容器启动时没有设置–restart 参数,则通过下面命令进行更新:
docker update --restart=always [容器名]

容器异常停止,会自动重启吗

#创建一个容器,设置为总是重启
docker run -d --name mynginx025 -p 8125:80 --restart=always nginx:1.24.0

在这里插入图片描述

docker stop容器后还会重启吗

docker stop mynginx025

在这里插入图片描述


容器环境变量设置

为容器设置多个环境变量

  1. 通过多个-e配置多个环境变量
docker run -it --rm -e MYTEST=1 -e MYTEST2=2 -e MYTEST3=3 nginx:1.24.0 bash

在这里插入图片描述

  1. 通过配置文件设置多个环境变量
#创建容器时指定环境变量配置文件
docker run -it --rm --env-file=./myenv nginx:1.24.0 bash

在这里插入图片描述


容器详情查看

#指定一系列参数创建容器
docker run -d --name mynginx029 -p 8029:80 -e MYTEST=1 -h mynginx029.com nginx:1.24.0
#查看容器摘要信息
docker ps
#查看容器详情
docker container inspect mynginx029

在这里插入图片描述


容器执行单行命令

我们可以直接借助 docker 的容器环境执行一些命令,比如容器中有某个命令而宿主机上没有这个时候借助容器可以完成某些任务。

#假定宿主机上没有ping指令和ifconfig指令
docker run --rm busybox:1.36.0 ping www.baidu.com
docker run --rm busybox:1.36.0 ifconfig

在这里插入图片描述


容器镜像导入导出

  1. 启动一个nginx容器并修改其首页内容
cd /usr/share/nginx/html/
echo "I am from cjl docker" > index.html

在这里插入图片描述

  1. 将容器保存为tar包
docker export -o mynginx030.tar mynginx030

在这里插入图片描述

  1. 把tar包还原为一个镜像,并使用该镜像运行一个容器
#将该tar包还原为镜像
docker import mynginx030.tar mynginx:v0.30
#使用该镜像运行一个容器
docker run -d --name mynginx030 -p 8030:80 mynginx:v0.30
docker run -d --name mynginx030 -p 8030:80 mynginx:v0.30 nginx -g "daemon off;"

在这里插入图片描述

这里我们发现导出的镜像无法直接运行一个容器,这时因为docker export命令将容器导出为镜像时丢失了部分镜像的数据,因此我们需要补齐这些信息才能运行容器


容器日志查看

启动nginx容器并查看日志

#查看容器所有日志
docker logs mynginx031

在这里插入图片描述

docker logs -f mynginx031

在这里插入图片描述

将日志信息重定向到文件中

#将标准输出日志重定向到info.log 标准错误日志重定向到err.log
docker logs mynginx031 > info.log 2 > err.log

在这里插入图片描述

#进入docker存储的根目录下
cd /data/var/lib/docker
#查看容器的container id
docker ps
#进入该容器id的目录下
cd 8f0f3b8ca830a004acf5f0ebefd3cbd83020077eee6d25e940cdcee337d51709/
#以.log结尾的就是日志文件

在这里插入图片描述


容器资源查看

查看容器的资源占用情况

docker stats mynginx031

在这里插入图片描述

docker top mynginx031 aux

在这里插入图片描述


Docker Container综合实战

综合实战一:Mysql容器化安装

  1. 进入 mysql 的镜像网站,查找 mysql 的镜像

在这里插入图片描述

  1. 用docker直接运行一个mysql服务
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 8201:3306 -d mysql:5.7

在这里插入图片描述

  1. 进入mysql容器中检查mysql容器是否正常工作
docker exec -it mysql bash

在这里插入图片描述

查看基本操作是否正常

在这里插入图片描述

  1. 通过可视化工具远程连接mysql

在这里插入图片描述
在这里插入图片描述


综合实战二:Redis容器化安装

Redis简介

在 Web 应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候 Web 站点基本上访问和并发不高、交互也较少。而在后来,随着访问量的提升,使用关系型数据库的 Web 站点多多少少都开始在性能上出现了一些瓶颈,而瓶颈的源头一般是在磁盘的 I/O 上。而随着互联网技术的进一步发展,各种类型的应用层出不穷,这导致在当今云计算、大数据盛行的时代,对性能有了更多的需求,主要体现在以下几个方面:

  1. 低延迟的读写速度:应用快速地反应能极大地提升用户的满意度
  2. 支撑海量的数据和流量:对于搜索这样大型应用而言,需要利用 PB 级别的数据和能应对百万级的流量

为了克服这一问题, NoSQL 应运而生,它同时具备了高性能、可扩展性强、高可用等优点,受到广泛开发人员和仓库管理人员的青睐。

Redis 是什么

Redis 全称 Remote Dictionary Server,中文名为远程字典服务器。

Redis 是现在最受欢迎的 NoSQL 数据库之一, Redis 是一个使用 ANSI C 编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value 存储系统
  • 开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、 Key-Value 数据库,并提供多种语言的 API

Redis的应用场景

几乎所有的大厂都在使用 Redis。 Redis 提供了多种数据类型, String 类型、哈希类型、列表类型、集合类型和顺序集合类型,借助这些类型可以方便的实现多种应用,如缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、实时排行榜、社交网络。

Redis生活案例

Redis 就像一个新华字典,可以根据某个字符可以很快的找到字典对应的字。

在这里插入图片描述


Redis 容器创建

  1. 下载redis镜像并启动redis容器

在这里插入图片描述

docker run --name redis -d -p 8300:6379 redis:7

在这里插入图片描述

  1. 进入redis容器检查是否正常工作
docker exec -it redis bash

在这里插入图片描述

  1. 通过可视化工具远程连接redis服务

在这里插入图片描述
在这里插入图片描述


综合实战三:C++容器制作

镜像源

镜像源就是把官方的源做一个镜像,你可以在这下载软件。比如 ubuntu 官方源在国外,下载软件可能会很慢,这时候就需要换成国内的镜像源。我们基于 ubuntu 来制作 C++容器,运行输出HelloWorld可以把镜像源当做一个代理商,比如买车本来要去车厂,但是设置了一个个 4s 店以后,
我去 4s 店就好了,不用跑到车厂。

  • 中科大源
  • 清华源

制作C++容器

  1. 下载Ubuntu镜像并启动容器
docker pull ubuntu:22.04
docker run -it --name mycpp ubuntu:22.04 bash

在这里插入图片描述

  1. 配置国内镜像源并安装gcc
sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
apt-get update
apt install -y gcc

在这里插入图片描述

当然 ,由于Ubuntu系统上可能没有安装vim,所以这里我们需要手动安装一下:

apt install -y vim
  1. 编辑代码并运行
#include <stdio.h>
int main()
{printf("hello docker!\n");return 0;
}

在这里插入图片描述


综合实战四:SpringBoot容器制作

编写demo

  1. 创建maven项目
    在这里插入图片描述

  2. 在下面pom.xml中修改配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.bit</groupId><artifactId>dockerdemo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>
  1. 编写主函数构建 Spring 容器、编写控制器
// 主函数构建Spring容器--Main.java
package com.bit;import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;
@SpringBootApplication
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class,args);}
}
// 编写控制器
package com.bit;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/hello")
public class ExampleController {@RequestMapping("")public String index(){return "Hello I am from docker!";}
}

下面进行代码测试:

在这里插入图片描述
在这里插入图片描述

  1. 使用maven打包生成jar包
    在这里插入图片描述
  2. 测试jar包是否可用

在这里插入图片描述
在这里插入图片描述

制作容器

  1. 下载Ubuntu镜像并启动容器、配置国内镜像源加速
docker run -it --name myjava -p 8080:8080 ubuntu:22.04 bash
sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
apt-get update

在这里插入图片描述

  1. 安装 jdk并检查是否正常运行
apt install -y openjdk-8-jdk
java -version

在这里插入图片描述

  1. 打开新的 shell 窗口,将 jar 拷贝到容器里面

在这里插入图片描述

docker cp ./dockerdemo-1.0-SNAPSHOT.jar myjava:/

在这里插入图片描述

  1. 在容器中启动Java服务,并使用浏览器进行访问
java -jar dockerdemo-1.0-SNAPSHOT.jar

在这里插入图片描述


综合实战五:容器资源更新

容器内存资源控制

  1. 在容器中启动Java服务,并使用docker stats进行监控。
docker run -it --name myjava2 adoptopenjdk/openjdk8
docker cp dockerdemo-1.0-SNAPSHOT.jar myjava2:/

在这里插入图片描述

  1. 通过docker update 更新容器占用的内存
docker update -m 10m --memory-swap 10m myjava2

在这里插入图片描述

  1. 停掉Java服务,并修改内存极小,看Java服务还能否启动
docker update -m 10m --memory-swap 10m myjava2
java -jar dockerdemo-1.0-SNAPSHOT.jar

在这里插入图片描述

容器CPU资源控制

  1. 在容器中启动Java服务,并执行一个命令,打满 cpu
docker run -it --name myjava3 adoptopenjdk/openjdk8
#Bash
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`
do
dd if=/dev/zero of=/dev/null &
done
#说明:
#cat /proc/cpuinfo |grep “physical id” | wc -l 可以获得 CPU 的个数,
我们将其表示为 N

在这里插入图片描述

  1. 对CPU资源占用率进行更改
docker update --cpu-period 100000 --cpu-quota 10000 myjava3

在这里插入图片描述


常见问题

docker create、 docker start 和 docker run 有什么区别?

docker create 命令从 Docker 映像创建一个全新的容器。但是,它不会立即运行它。

docker start 命令将启动任何已停止的容器。如果使用 docker create 命令创建容器,则可以使用此命令启动它。

docker run 命令是创建和启动的组合,因为它创建了一个新容器并立即启动它。实际上,如果 docker run 命令在您的系统上找不到上述映像,它可以从 Docker Hub 中提取映像。

docker import 和 docker load 有什么区别?

想要了解 docker load 与 docker import 命令的区别,还必须知道 docker savedocker export 命令:

  • docker save images_name:将一个镜像导出为文件,再使用 docker load 命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比 docker export 命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
  • docker export container_id:将一个容器导出为文件,再使用 dockerimport 命令将容器导入成为一个新的镜像,但是相比 docker save 命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

既可以使用 docker load 命令来导入镜像库存储文件到本地镜像库,也可以使用docker import 命令来导入一个容器快照到本地镜像库。

两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。

docker rm & docker rmi & docker prune 的差异?

  • docker rm : 删除一个或多个容器
  • docker rmi : 删除一个或多个镜像
  • docker prune: 用来删除不再使用的 docker 对象

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

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

相关文章

【牛客面试必刷TOP101】Day22.BM16 删除有序链表中重复的元素-II和BM21 旋转数组的最小数字

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;牛客面试必刷TOP101 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&…

代码随想录二刷——二叉树day19

文章目录 前言二叉树知识点二叉树的存储方式 一、654. 最大二叉树二、617. 合并二叉树三、700. 二叉搜索树中的搜索四、98. 验证二叉搜索树总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决…

c++之function和bind详解-SurfaceFlinger学习必备语法基础

背景 C中的function和bind是为了更方便地进行函数对象的封装和调用而设计的&#xff0c;在SurfaceFlinger源码中也是有很多使用部分。 比如分析Vsync相关源码时候有相关回调时候 可以看到这里的mRegistration就有个参数是 std::bind,怎么这里就可以进行回调呢&#xff1f; 所…

相机图像质量研究(14)常见问题总结:光学结构对成像的影响--伪像

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

探索嵌入式系统的未来发展:智能化、连接性和安全性

嵌入式系统作为一种集成在各种设备和系统中的计算机系统&#xff0c;正日益成为各行各业的重要组成部分。未来&#xff0c;嵌入式系统在智能化、连接性和安全性方面将迎来更加广阔的发展空间。 1.智能化是嵌入式系统未来发展的重要趋势 随着人工智能技术的不断进步&#xff0c…

棒球比赛

682. 棒球比赛 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成&#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时&#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops&#xff0c;其中 ops[i] 是你需要记录的第 i 项操…

HTB pwn Evil Corp

程序分析 初始化功能 申请了一块正常块和一块可以执行shellcode的空间 登录 向正常块写入数据 字符宽度转换 漏洞分析 所有的输入都使用了fgetws函数这个函数,这个函数会把整个串的每一个字符按最低两个宽来接收输入,如果存在unicode32等等更宽的字符这个函数会把每个字符都…

蓝桥杯:C++二分算法

在基本算法中&#xff0c;二分法的应用非常广泛&#xff0c;它是一种思路简单、编程容易、效率极高的算法。蓝桥杯软件类大赛中需要应用二分法的题目很常见。 二分法有整数二分和实数二分两种应用场景 二分法的概念 二分法的概念很简单&#xff0c;每次把搜索范围缩小为上一…

Linux常用指令总结

Linux内核的官方网站&#xff1a;https://www.kernel.org/ 目录 命令备忘录1.关机/重启/注销2.系统信息和性能查看3.磁盘和分区4.用户和用户组5.网络和进程管理6.常见系统服务命令7.文件和目录操作8.文件查看和处理9.打包和解压10.RPM包管理命令11.YUM包管理命令12.DPKG包管理命…

AJAX——AJAX入门

1 什么是AJAX&#xff1f; Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。 简单点说&#xff0c;就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON、XML、HTML和test文本等格式发送和接收数据。 AJAX最吸…

P2338 [USACO14JAN] Bessie Slows Down S

题目链接 分析 模拟当前的距离和时间&#xff0c;算出最靠前的减速事件&#xff0c;但是我们发现每次减速事件的顺序可能会发生改变&#xff0c;所以我们可以将两类事件分开处理&#xff0c;按时间排序&#xff0c;每次计算最先发生的减速事件&#xff0c;处理即可。 代码 …

【Android 逆向】程序员高危开发方向 ( 违法软件类型 | 赌博游戏 | 色情类应用 | 涉及金融类软件 | 爬虫类软件 | 区块链货币 | 甄别是否合法 )

文章目录 一、违法软件类型1、棋牌类赌博游戏2、色情类应用3、涉及金融类软件4、爬虫类软件5、区块链货币 二、甄别是否合法1、查看有没有正规的版号2、查看应用内的货币能否提现3、概率购物 一、违法软件类型 1、棋牌类赌博游戏 棋牌类 游戏开发 , 写这类游戏的程序员 很容易被…

突破编程_C++_面试(高级特性(1))

面试题1&#xff1a;什么是线程以及它在并发编程中的作用是什么 线程&#xff08; Thread &#xff09;是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进…

【深入理解BEVFormer】BEVFormer

任务场景 多模态融合和多传感器融合 BEV&#xff1a;鸟瞰图 这个特征空间与每个视角都相关 早期是用后融合&#xff0c;目前比较流行的是特征级融合 自身运动补偿&#xff1a;如果按照像素点进行特征对齐&#xff0c;需要指定偏移量 x y两个方向 特征空间是自己定义的&#xf…

NumPyML 源码解析(五)

numpy-ml\numpy_ml\preprocessing\nlp.py # 导入必要的库和模块 import re import heapq import os.path as op from collections import Counter, OrderedDict, defaultdict import numpy as np# 定义英文停用词列表&#xff0c;来源于"Glasgow Information Retrieval G…

NBlog个人博客部署过程记录 -- 后端springboot + 前端vue

项目是fork的Naccl大佬NBlog项目&#xff0c;页面做的相当漂亮&#xff0c;所以选择了这个。可以参考2.3的效果图 惭愧&#xff0c;工作两年了也每个自己的博客系统&#xff0c;趁着过年时间&#xff0c;开始搭建一下. NBlog原项目的github链接&#xff1a;Naccl/NBlog: &#…

毕业设计vue+php幼儿园网站系统yl567

幼儿园网站系统。采用vscode集成IDE对幼儿园网站系统统进行开发,整合系统的各个模块。 拟开发的幼儿园网站系统通过测试,确保在最大负载的情况下稳定运转,各个模块工作正常,具有较高的可用性。系统整体界面简洁美观,用户使用简单,满足用户需要。在因特网发展迅猛的当今社会,幼儿…

什么是Java中的JVM(Java虚拟机),你能解释一下JVM的体系结构吗?

什么是Java中的JVM&#xff08;Java虚拟机&#xff09;&#xff0c;你能解释一下JVM的体系结构吗&#xff1f; Java虚拟机&#xff08;JVM&#xff09;是Java程序的运行环境&#xff0c;它负责将Java字节码转换为机器码并执行。JVM是Java跨平台特性的关键&#xff0c;它使得Ja…

代码随想录算法训练营Day58|739. 每日温度、496.下一个更大元素 I

目录 739. 每日温度 前言——单调栈介绍 思路 算法实现 496.下一个更大元素 I 前言 思路 算法实现 总结 739. 每日温度 题目链接 文章链接 前言——单调栈介绍 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;…

【计算机网络】网络层之IP协议

文章目录 1.基本概念2.协议头格式3.网段划分4.特殊的IP地址5.IP地址的数量限制6.私有IP地址和公网IP地址7.路由 1.基本概念 IP地址是定位主机的&#xff0c;具有一个将数据报从A主机跨网络可靠的送到B主机的能力。 但是有能力就一定能做到吗&#xff0c;只能说有很大的概率。…