云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
一、Harbor部署
1.验证python版本
[root@docker2 ~]#python --version
2.安装pip
[root@docker2 ~]# yum -y install python2-pip
#由于版本过低,需要对其进行一个升级
#更新pip
[root@docker2 ~]#pip install --upgrade pip
3.指定版本号
[root@docker2 ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
#查看pip版本
[root@docker2 ~]# pip list
Package Version
pip 20.3
4.安装docker-compose
[root@docker2 ~]# pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple#查看docker-compose版本[root@docker2 ~]# pip listPackage Versiondocker-compose 1.26.2
5.安装docker
#docker.sh脚本的具体内容如下:#---------------------------------------------------------------------------------------
# 创建一个配置文件,确保在系统启动时加载 overlay 和 br_netfilter 内核模块
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF # 立即加载 overlay 和 br_netfilter 内核模块
modprobe overlay
modprobe br_netfilter # 创建一个 sysctl 配置文件,配置 Kubernetes 网络设置
cat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1 # 允许对桥接接口的iptables过滤
net.bridge.bridge-nf-call-ip6tables = 1 # 允许对桥接接口的ip6tables过滤
net.ipv4.ip_forward = 1 # 启用 IPv4 转发,以支持 pod 网络
EOF # 重新加载 sysctl 配置,应用新的网络设置
sysctl --system # 安装 yum-utils、设备映射持久数据和 lvm2,这些是后续安装 Docker 所需的工具
yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加阿里云 Docker 仓库,以便于通过 yum 安装 Docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装 Docker 及相关组件,包括 Docker CLI、containerd、Buildx 和 Compose 插件
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y#---------------------------------------------------------------------------------------#拖拽安装docker的脚本[root@docker2 ~]# rz -E
rz waiting to receive.#查看[root@docker2 ~]# ls
anaconda-ks.cfg docker.sh#让docker.sh脚本生效[root@docker2 ~]# source docker.sh #上传daemon.json文件[root@docker2 harbor]# scp root@192.168.1.32:/etc/docker/daemon.json /etc/docker/#编辑daemon.json文件[root@docker2 harbor]# vim /etc/docker/daemon.json{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries": ["http://192.168.1.24"]}#编辑docker.service文件[root@docker2 harbor]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd#启动docker[root@docker2 harbor]# systemctl start docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.#重新加载daemon[root@docker2 harbor]# systemctl daemon-reload#再次启动docker[root@docker2 harbor]# systemctl start docker
6.安装harbor
#下载harbor包
[root@docker2 ~]# rz -E
rz waiting to receive.
#查看
[root@docker2 ~]# ls
anaconda-ks.cfg docker.sh harbor-offline-installer-v2.11.1.tgz#查看docker版本
[root@docker2 ~]# docker --versionDocker version 26.1.4, build 5650f9b#解压harbor
[root@docker2 ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz #查看[root@docker2 ~]# lsanaconda-ks.cfg docker.sh harbor harbor-offline-installer-v2.11.1.tgz#切入harbor目录[root@docker2 ~]# cd harbor/#查看[root@docker2 harbor]# lscommon.sh harbor.v2.11.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
7.复制harbor.yml文件
[root@docker2 harbor]# cp harbor.yml.tmpl harbor.yml
8.编辑harbor.yml文件
[root@docker2 harbor]# vim harbor.yml


9.查看端口状态
[root@docker2 harbor]# netstat -lnput | grep 80[root@docker2 harbor]# netstat -lnput | grep 5000
10.执行
#执行prepare
[root@docker2 harbor]# ./prepare
#执行install.sh
[root@docker2 harbor]# ./install.sh
11.上传镜像
[root@docker2 harbor]# docker pull centos
12.打标签
[root@docker2 harbor]# docker tag centos:latest 192.168.1.24/library/ddcentos:v0
13.下载镜像
[root@docker2 harbor]# docker push 192.168.1.24/library/ddcentos:v0
14.登录docker镜像仓库
[root@docker2 harbor]# docker login http://192.168.1.24
Username: admin
Password:
Error response from daemon: Get "http://192.168.1.24/v2/": dial tcp 192.168.1.24:80: connect: connection refused
15.浏览器访问:

16.开启容器
#查看所有容器[root@docker2 harbor]# docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99c3f62458f4 goharbor/nginx-photon:v2.11.1 "nginx -g 'daemon of…" 32 minutes ago Up 3 seconds (health: starting) 0.0.0.0:80->8080/tcp, :::80->8080/tcp nginx
dd3ef1a8cdfc goharbor/harbor-jobservice:v2.11.1 "/harbor/entrypoint.…" 32 minutes ago Exited (128) 3 minutes ago harbor-jobservice
8999a3b7136d goharbor/harbor-core:v2.11.1 "/harbor/entrypoint.…" 32 minutes ago Exited (128) 2 minutes ago harbor-core
444ce3ab8f55 goharbor/harbor-portal:v2.11.1 "nginx -g 'daemon of…" 32 minutes ago Exited (128) 2 minutes ago harbor-portal
8a8cd273a779 goharbor/registry-photon:v2.11.1 "/home/harbor/entryp…" 32 minutes ago Exited (128) 2 minutes ago registry
dbf40ab53516 goharbor/redis-photon:v2.11.1 "redis-server /etc/r…" 32 minutes ago Up 2 minutes (healthy) redis
59f6ebcbaa18 goharbor/harbor-registryctl:v2.11.1 "/home/harbor/start.…" 32 minutes ago Exited (128) 2 minutes ago registryctl
a7b8abe38923 goharbor/harbor-db:v2.11.1 "/docker-entrypoint.…" 32 minutes ago Exited (128) 2 minutes ago harbor-db
9cc010ff2807 goharbor/harbor-log:v2.11.1 "/bin/sh -c /usr/loc…" 32 minutes ago Up 2 minutes (healthy) 127.0.0.1:1514->10514/tcp harbor-log#开启关闭的容器[root@docker2 harbor]# docker start harbor-jobservice harbor-core harbor-portal registry registryctl harbor-db
harbor-jobservice
harbor-core
harbor-portal
registry
registryctl
harbor-db
17.访问验证
#再次登录docker镜像仓库[root@docker2 harbor]# docker login http://192.168.1.24
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded#再次下载镜像[root@docker2 harbor]# docker push 192.168.1.24/library/ddcentos:v0
The push refers to repository [192.168.1.24/library/ddcentos]
74ddd0ec08fa: Pushed
v0: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
#浏览器访问验证:
能够看到我们所创建的镜像---ddcentos

18.共享镜像
切到docker机器:
#启动docker
[root@docker ~]# systemctl start docker
#编辑daemon.json文件
[root@docker ~]# vim /etc/docker/daemon.json

#重新启动docker
[root@docker ~]# systemctl restart docker
#到访问页面复制拉取命令

#使用复制的连接,添加同时共享的镜像[root@docker ~]# docker pull 192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc: Pulling from library/ddcentos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for 192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc#查看镜像#可以看到被共享的镜像[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos httpd0 db3cae3b5002 2 days ago 280MB
192.168.1.32:5000/centos_nginx v0 1c2a0901c77a 3 days ago 368MB
centos nginx 1c2a0901c77a 3 days ago 368MB
centos httpd e9a1ee725b43 6 days ago 311MB
centos yum 82ca12d9b058 6 days ago 261MB
registry latest cfb4d9904335 11 months ago 25.4MB
centos latest 5d0da3dc9764 2 years ago 231MB
192.168.1.24/library/ddcentos <none> 5d0da3dc9764 2 years ago 231MB
二、部署Docker-compose
1.Docker-compose 核⼼概念
docker compose 是 docker 官⽅的开源项⽬,负责实现对 docker 容器集群的快速编排;
docker compose可以管理多个 docker 容器组成的应⽤;
需要定义⼀个 YAML 格式的配置⽂件 docker-compose.yml,写 好多个容器之间的调⽤关系;
Docker-compose 将管理的容器分为三层:⼯程(project)、 服务(service)、容器(container)
⼯程:
运⾏ compose 的⽬录下所有的⽂件,包括 dockercompose.yml、extends ⽂件、环境变量⽂件等组成⼀个⼯程, 若⽆特殊指定⼯程,⼯程名即为当前⽬录名。⼯程的默认配置⽂ 件为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数⾃定义配置⽂件,其定义了多个有依赖关系的服务及 每个服务运⾏的容器。
服务:
⼀个⼯程中包含多个服务,每个服务中定义了容器运⾏的镜像、参数、依赖等,⼀个服务中可包括多个容器实例。
容器:
被 docker-compose 管理或部署的容器集群,调⽤ docker 服务提供的 API 来对容器进⾏管理,只要操作的平台⽀ 持 docker API,即可在其上进⾏ compose 的容器编排。
2.YAML⽂件的格式和语法
1、YAML ⽂件格式
yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。
yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表 示,键值对⽤冒号分隔,数组⽤中括号括起来,hash
⽤花括号括起来。
yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒 号“: ”分隔
在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml ⽂件的可读性和⼀致性
key: value
对于字符串值,可以使⽤单引号或者双信号将其括起来,这样可以避免出现特殊字符或空格等问题
name: 'Meng Mr'
age: "34"
如果值包含特殊字符(如冒号或短横线),则应该使⽤引号将其括起来
description: "This is a YAML file: good for configuation files."
2、YAML 注意事项
(1)不⽀持制表符 tab 键缩进,需要使⽤空格缩进。
(2)通常开头缩进 2 个空格。
(3)字符后缩进 1 个空格,如:冒号,逗号,横杠。
(4)⽤ # 表示注释。
(5)如果包含特殊字符⽤单引号引起来。
(6)布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起 来,这样分析器会将它们解释为字符串。
3、列表和数组
在yaml中,可以使⽤“-”符号表示⼀个列表和数组
4、嵌套数据结构
yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系, 可使⽤ # 号表示注释信息。
3.docker compose 命令选项
1.build:重新构建服务2.ps:列出容器3.up:启动所有的docker-compose服务4.up -d:启动所有docker-compose服务并在后台运行5.exec:进入容器实例内部6.:指定一个服务器启动数量7.top:显示容器进程8.logs:查看容器输出日志9.down:停止并删除容器、网络、卷、镜像10.stop:停止服务11.start:启动服务12.restart:重启服务13.config:检查配置14.config -q:检查配置,有问题才有输出15.--version:查看版本
4.YAML⽂件内常⽤指令字段
(1)version
指定了Docker compose编排⽂件的版本
Docker Compose ⽬前有三个版本,分别为 Version1、Version2和Version3。
Version1 是较早的版本,它将来会被弃⽤。
Version2 是⽬前的稳定版本,⽀持更多的指令。
Version3 在功能上与 Version2 类似,但进⾏了⼀些改进和 扩展,例如增加了对 Docker BuildKit
的⽀持,可以加速构 建过程。
(2)services
指定了在 docker compose 编排中要运⾏的服务,每个服务都有⼀ 个名称,并指定要使⽤的镜像
和容器的配置选项。
(3)image
指定要使⽤的 docker 镜像。
(4)build
允许在 docker compose 编排中指定 dockerfile 的位置。
(5)environment
指定了要设置的环境变量。
(6)volumes
挂载宿主机路径或命名卷
(7)ports
指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端
⼝号低于 60,可能会与系统保留的 知名端⼝冲突。
(8)expose
⽤于在 docker 容器内部暴露端⼝的选项。
(9)networks
加⼊⽹络,引⽤顶级 networks 条⽬.
(10)hostname
设定容器主机名
(11)command
指定容器启动时要运⾏的命令,覆盖构建时的默认命令
5.安装Docker-compose
1.下载pip
[root@docker3 ~]# yum -y install python2-pip
2.升级pip到最新版本
[root@docker3 ~]# pip install --upgrade pip
3.指定版本号
[root@docker3 ~]# pip install --upgrade pip==20.3 -i Simple Index
4.使用pip安装docker-compose
[root@docker3 ~]# pip install docker-compose -i Simple Index
rz waiting to receive.
5.安装docker
[root@docker3 ~]# lsanaconda-ks.cfg docker.sh
#让docker.sh脚本文件生效
[root@docker3 ~]# source docker.sh
6.远程复制daemon.json文件到本地目录
[root@docker3 test]# scp root@192.168.1.32:/etc/docker/daemon.json /etc/docker/
7.编辑配置文件
#编辑daemon.json 文件[root@docker3 test]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries": ["http://192.168.1.35"]}#编辑docker.service文件[root@docker3 test]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd
8.加载deamon
[root@docker3 test]# systemctl daemon-reload
9.启动docker
[root@docker3 test]# systemctl start docker
10.创建目录
#创建test目录
[root@docker3 ~]# mkdir test
#切入test目录
[root@docker3 ~]# cd test/[root@docker3 test]# ls
#创建html目录
[root@docker3 test]# mkdir html
#写入内容
[root@docker3 test]# echo "我是被编排的nginx" > ./html/index.html
#访问验证

#使用tree命令查看
[root@docker3 test]# tree
.
└── html
└── index.html1 directory, 1 file
11.创建yml文件
[root@docker3 test]# vim docker-compose.ymlversion: "3"
services:nginx:container_name: c1image: "nginx:latest"ports:- "80:80"volumes:- /root/test/html/:/usr/share/nginx/html/
12.启动docker-compose容器集群
[root@docker3 test]# docker compose up -d
WARN[0000] /root/test/docker-compose.yml: `version` is obsolete
[+] Running 8/8✔ nginx Pulled 89.7s ✔ e4fff0779e6d Pull complete 26.1s ✔ 2a0cb278fd9f Pull complete 31.0s ✔ 7045d6c32ae2 Pull complete 31.0s ✔ 03de31afb035 Pull complete 31.0s ✔ 0f17be8dcff2 Pull complete 31.0s ✔ 14b7e5e8f394 Pull complete 31.0s ✔ 23fa5a7b99a6 Pull complete 31.1s
[+] Running 2/2✔ Network test_default Created 0.1s ✔ Container c1 Started 0.9s
13.查看及验证
#查看镜像[root@docker3 test]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 5ef79149e0ec 2 weeks ago 188MB#查看容器[root@docker3 test]# docker ps --allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESebfbdb329f7a nginx:latest "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp c1
相关文章:
云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
一、Harbor部署 1.验证python版本 [rootdocker2 ~]#python --version 2.安装pip [rootdocker2 ~]# yum -y install python2-pip #由于版本过低,需要对其进行一个升级 #更新pip [rootdocker2 ~]#pip install --upgrade pip 3.指定版本号 [rootdocker2 ~]# p…...
lambda表达式用法——C#学习笔记
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 实例如下: 代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.…...
【C++ Primer Plus习题】11.6
问题: 解答: main.cpp #include <iostream> #include "Stonewt.h" using namespace std; const int SIZE 6;int main() {Stonewt stone_arr[SIZE] { 253.6,Stonewt(8,0.35),Stonewt(23,0) };double input;Stonewt eleven Stonewt(11, 0.0);Stonewt max st…...
Redis八种数据结构简介
Redis数据结构 Redis新旧版本中一共出现过八种数据结构,分别是SDS、双向链表、压缩列表、整数集合、哈希表、跳表、quicklist、listpack。 SDS SDS是用于存储Redis中字符串的数据结构,Redis底层使用的语言是C语言,因此字符串也是C语言的字…...
数据治理策略:确保数据资产的安全与高效利用
数据治理策略:确保数据资产的安全与高效利用 在数字化时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为企业面临的重要挑战。数据治理策略的制定和执行&a…...
ts格式转mp4,四款亲测好用软件推荐!
在这个数字视频时代,我们经常会遇到各种视频格式兼容性问题,尤其是从网络下载的高清电影或电视剧集,很多时候都是以TS格式存储。然而,当我们想要在移动设备、社交媒体或视频编辑软件中播放、上传时,MP4格式因其广泛的兼…...
10、Django Admin修改标题
admin from django.contrib import admin from .models import Category, Origin, Hero, Villain # 添加以下代码 admin.site.site_header "系统管理" admin.site.site_title "管理员界面" admin.site.index_title "欢迎来到这里ÿ…...
ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
ESRI ArcGIS Pro 3.1.5 主要新功能包括: 改进的数据编辑和管理:支持更多数据格式和更精细的属性表操作。增强的空间分析工具:新增和优化空间分析工具,提高数据分析效率。更好的3D可视化:改进3D渲染性能,支…...
人工智能,语音识别也算一种人工智能。
现在挺晚了,还是没有去睡觉,自己在想什么呢,也不确定。 这是一篇用语音写的文章,先按自己的想法说出来,然后再适当修改,也许就是一个不错的文章。 看来以后就不需要打字了,语音识别度很高&#…...
Token和Refresh Token
获取令牌(Token) 和 刷新令牌(Refresh Token) 在认证和授权机制中有不同的使用场景和目的,二者主要的区别和为什么需要刷新令牌可以通过以下几点解释: 1. 获取令牌和刷新令牌的区别 获取令牌(Token&#x…...
STM32(一)简介
一、stm32简介 1.外设接口 通过程序配置外设来完成功能 2.系统结构 3.引脚定义 4.启动配置 5.最小系统电路...
接口测试工具:Postman详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性…...
Linux中全局变量配置,/etc/profile.d还是/etc/profile
全局环境变量可以放在 /etc/profile 或 /etc/profile.d/ 中,但两者的使用方式和目的有所不同: /etc/profile 作用: /etc/profile 是一个系统范围的启动脚本,在用户登录时执行。它主要用于设置全局环境变量和配置,适用于所有用户。…...
【java入门】关键字、标识符与变量初识
🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养ǹ…...
Java常用类库
Java常用类库 1. **Java基础类库**1.1 **java.lang**1.2 **java.util**1.3 **java.io**1.4 **java.nio**1.5 **java.time** 2. **第三方类库**2.1 **Apache Commons**2.2 **Google Guava**2.3 **Jackson**2.4 **Lombok** 3. **Spring相关类库**4. **并发类库**4.1 **java.util.…...
2024年高教社杯数学建模国赛C题超详细解题思路分析
本次国赛预测题目难度,选题人数如下所示 难度评估 A:B:C 1.8:1.3:1 D:E1.5:1 选题人数 A:B:C 1:1.5:2.8 D:E0.5:1.2 C题一直以来都是竞赛难度最低、选题人数最多的一道本科生选题,近三年C题的选题人数一直都是总参赛队伍的一半左右,2023年…...
深度学习(七)-计算机视觉基础
计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取,图 像的压缩编码,图像的存储和传输,图像的合成,三维图像重建,图像增强,图像修复,图像的分类和识别,目…...
机器人笛卡尔空间轨迹规划原理与MATLAB实现
机器人笛卡尔空间轨迹规划是指在给定的笛卡尔坐标系(通常是三维空间坐标系)中规划机器人的末端执行器(如抓手、焊枪等)的移动路径。这种规划方式直观且易于理解,因为它直接关联到任务空间中机器人的位置和姿态。下面将…...
数据结构:树与二叉树
1、树的基本概念 1.1树的定义 树是n个结点的有限集。 若n0,称为空树;若n>0称为非空树,非空树有且仅有一个称之为根的结点。 除根结点以外的其余结点可分成m个互不相交的有限集T1,T2,......Tm,每个有限集合本身又是一棵树,并…...
BUUCTF—[网鼎杯 2020 朱雀组]phpweb
题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 funcsystem&pls 直接读取源码…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
