【JavaWeb学习Day13】
Tlias智能学习系统
需求:
部门管理:查询、新增、修改、删除
员工管理:查询、新增、修改、删除和文件上传
报表统计
登录认证
日志管理
班级、学员管理(实战内容)
部门管理:
01准备工作
开发规范-开发模式
前后端混合开发缺点:分工不明确、不便管理、难以维护
前后端分离开发:当前最为主流的开发模式:前后端分离
开发流程:
开发规范-Restful风格
REST(REpresentational State Transfer),表述性状态转换,它是一种软件架构风格。
注意:
1.REST是风格,是约定方式,约定不是规定,可以打破
2.描述功能模块通常使用复数形式(加s),表示此类资源,而非单个资源。如:users、books...
Apifox
介绍:Apifox是一款集成了Api文档、Api调试、Api Mock、Api测试的一体化协作平台。
作用:接口文档管理、接口请求测试、mock服务。
官网:Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。
工程搭建:
1.创建SpringBoot工程,并引入Web开发起步依赖、mybatis、mysql驱动、lombok。
2.创建数据库表dept,并在application.yml中配置数据库的基本信息。
CREATE TABLE dept (id int unsigned PRIMARY KEY AUTO_INCREMENT COMMENT 'ID, 主键',name varchar(10) NOT NULL UNIQUE COMMENT '部门名称',create_time datetime DEFAULT NULL COMMENT '创建时间',update_time datetime DEFAULT NULL COMMENT '修改时间'
) COMMENT '部门表';
INSERT INTO dept VALUES (1,'学工部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(2,'教研部','2023-09-25 09:47:40','2024-08-09 15:17:04'),(3,'咨询部','2023-09-25 09:47:40','2024-07-30 21:26:24'),(4,'就业部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(5,'人事部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(6,'行政部','2023-11-30 20:56:37','2024-07-30 20:56:37');
spring:application:name: tlias-web-management#mysql连接配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/tliasusername: rootpassword: 1234
mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.准备基础代码结构,并引入实体类Dept以及统一的响应结果封装类Result。
package com.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {private Integer id;private String name;private LocalDateTime createTime;private LocalDateTime updateTime;
}
package com.itheima.pojo;
import lombok.Data;
import java.io.Serializable;
/*** 后端统一返回结果*/
@Data
public class Result {
private Integer code; //编码:1成功,0为失败private String msg; //错误信息private Object data; //数据
public static Result success() {Result result = new Result();result.code = 1;result.msg = "success";return result;}
public static Result success(Object object) {Result result = new Result();result.data = object;result.code = 1;result.msg = "success";return result;}
public static Result error(String msg) {Result result = new Result();result.msg = msg;result.code = 0;return result;}
}
02查询部门
接口开发:
思路分析:明确了查询部门的需求之后,再来梳理一下实现该功能时,三层架构每一层的职责:
Controller:1.接收请求 2.调用service层 3.响应结果
Service:调用Mapper接口方法
Mapper:Selselect id, name, create_time, update_time from dept order by update_time desc ;(SQL)
代码实现:
1). Controller层
在 DeptController
中,增加 list
方法,代码如下:
/*** 部门管理控制器*/
@RestController
public class DeptController {
@Autowiredprivate DeptService deptService;
/*** 查询部门列表*/@RequestMapping("/depts")public Result list(){List<Dept> deptList = deptService.findAll();return Result.success(deptList);}
}
2). Service层
在 DeptService
中,增加 findAll
方法,代码如下:
public interface DeptService {/*** 查询所有部门*/public List<Dept> findAll();
}
在 DeptServiceImpl
中,增加 findAll
方法,代码如下:
@Service
public class DeptServiceImpl implements DeptService {@Autowiredprivate DeptMapper deptMapper;
public List<Dept> findAll() {return deptMapper.findAll();}
}
3). Mapper层
在 DeptMapper
中,增加 findAll
方法,代码如下:
@Mapper
public interface DeptMapper {/*** 查询所有部门*/@Select("select * from dept")public List<Dept> findAll();}
数据封装:
1.问题:
实体类属性名 和 数据库表查询返回的字段一致,mybatis会自动封装。
如果实体类属性名 和 数据库表查询返回的字段名不一致,不能自动封装。
2.解决方案:
手动结果映射:通过@Results以及@Result进行手动结果映射。
package com.itheima.mapper;
import com.itheima.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface DaotMapper {/***查询所有的部门数据*/@Results({@Result(column = "create_time",property = "createTime"),@Result(column = "update_time",property = "updateTime")})@Select("select id, name, create_time, update_time from dept order by update_time desc ;")List<Dept> findAll();
}
起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样。
public interface DaotMapper {/***查询所有的部门数据*/@Select("select id, name, create_time createTime, update_time updateTime from dept order by update_time desc ;")List<Dept> findAll();
}
3.开启驼峰(camel)命名:如果字段名和属性名符合驼峰命名规则,mybatis会自动通过驼峰命名规则映射。(推荐方式)mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl#开启驼峰命名映射开关map-underscore-to-camel-case: true
前后端联调测试
将资料中提供的前端工程文件夹中的压缩包,拷贝到一个没有中文不带空格的目录下,解压。
启动nginx,访问测试:http://localhost:90
前端工程请求服务器的地址为http://localhost:90/api/depts,是如何访问到后端的tomcat服务器的?
(反向代理是一种网络架构,通过代理服务器为后端的服务器做代理,客户端的请求直接代理服务器,然后转发给后端的服务器。(安全,灵活,负载均衡))
Nginx配置文件:
1.location:用于定义匹配路径的规则。
2.^~ /api/:表示精确匹配,即只匹配以/api/开头的路径。
3.rewrite:该指令用于重写匹配到的路径。
4.proxy_pass:该指令用于代理转发,他将匹配到的请求转发给位于后端的指令服务器。
03删除部门
思路分析:
明确了查询部门的需求之后,再来梳理一下实现该功能时,三层架构每一层的职责:
Controller:1.接收请求参数 2.调用service层 3.响应结果
Service:调用Mapper接口方法
Mapper:delete from dept where id = ?;(SQL)
Controller接收参数:
接收请求参数:DELETE /depts?id=8 (简单参数)
方式一:通过原始的HttpServletRequest对象获取请求参数
/*** 删除部门-方式一:通过原始的HttpServletRequest对象获取请求参数*/
@DeleteMapping("/depts")
public Result delete(HttpServletRequest request){String idStr = request.getParameter("id");int id = Integer.parseInt(idStr);System.out.println("根据ID删除部门:"+id);return Result.success();
}
方式二:通过Spring提供的@RequestParam注解,将请求参数绑定给方法形参。
(注意:一旦声明了@RequestParam,该参数在请求时必须传递,如果不传递将会报错,因为默认required为true)
/*** 删除部门-方式二:通过Spring提供的@RequestParam注解,将请求参数绑定给方法形参。*/
@DeleteMapping("/depts")
public Result delete(@RequestParam("id") Integer deptId){System.out.println("根据ID删除部门:"+deptId);return Result.success();
}
方式三:如果请求参数与形参变量名相同,直接定义方法形参即可接收(省略@RequestParam)
/*** 删除部门-方式三:如果请求参数与形参变量名相同,直接定义方法形参即可接收(省略@RequestParam)*/
@DeleteMapping("/depts")
public Result delete(Integer id){System.out.println("根据ID删除部门:"+id);return Result.success();
}
04新增部门
05修改部门
06日志技术
相关文章:
【JavaWeb学习Day13】
Tlias智能学习系统 需求: 部门管理:查询、新增、修改、删除 员工管理:查询、新增、修改、删除和文件上传 报表统计 登录认证 日志管理 班级、学员管理(实战内容) 部门管理: 01准备工作 开发规范-…...
mapStruct 使用踩坑指南
一、缓存机制 经常因为变更字段(通常会这样),导致启动失败。需要清理生成的文件。 /Users/uzong/IdeaProjects/uzong-crm/uzong-crm-manager/src/main/java/com/uzong/crm/manager/GroupManager.java:14:67 java: 找不到符号符号: 方法 getId()位置: 类型为com.u…...
Hive详细讲解-概述与环境搭建
文章目录 1.Hive概述1.2.Hive架构原理1.3Driver 2.Hive最小化模式安装部署3.生产环境hive安装部署4.将hive的元数据存储到Mysql5.元数据库概述6.Hive服务的部署6.1HiveServer26.2Metastore 7.HiveServer2使用7.1Metastore嵌入模式配置7.2Metastore独立模式配置* 8.hive常用的参…...
【算法】数论基础——约数个数定理、约数和定理 python
目录 前置知识约数约数个数定理约数和定理实战演练总结 前置知识 需要掌握:唯一分解定理(算术基本定理) 约数 约数,即因数,定义为: 如果一个整数a可以被另一个整数b整除(即 a mod b 0),那么b就…...
【阅读笔记】基于整数+分数微分的清晰度评价算子
本文介绍的是一种新的清晰度评价算子,整数微分算子分数微分算子 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类:灰度梯度评价函数、频域函数和统计学函数,其中灰度梯度评价函数具有计算简单,评价效果好等优点…...
【技术】TensorRT 10.7 安装指南(Ubuntu22.04)
原文链接:https://mengwoods.github.io/post/tech/008-tensorrt-installation/ 本文安装的版本如下: Ubuntu 22.04 Nvidia Driver 538.78 CUDA 12.2 cuDNN 8.9.7 TensorRT 10.7 安装前的准备(可选) 在安装新版本之前…...
Linux权限有关
文章目录 一、添加普通用户二、Xshell下命令行的知识三、 Linux和Windows操作系统四、再探指令和Linux权限五、用户相关用户切换: 今天我们学习与Linux有关的权限等内容,以及一些零碎知识帮助我们理解Linux的系统和Xshell的原理。 本篇是在Xshell环境下执行的。 一…...
vue router路由复用及刷新问题研究
路由复用问题 当路由匹配路径未发生变化时,只是相关的参数发生了变化,路由跳转时,会发现虽然地址栏中的地址更新到了新的链接,但是页面渲染并未触发响应路由组件的created,mounted等钩子函数,也就意味着组件并没有被重…...
XML实体注入漏洞攻与防
JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574...
【论文阅读】RT-SKETCH: GOAL-CONDITIONED IMITATION LEARNING FROM HAND-DRAWN SKETCHES
RT-Sketch:基于手绘草图的目标条件模仿学习 摘要:在目标条件模仿学习(imitation learning,IL)中,自然语言和图像通常被用作目标表示。然而,自然语言可能存在歧义,图像则可能过于具体…...
27. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表服务
报表是每个记账应用所具备的功能,要实现报表功能就需要把账本的核心功能(记账)完成,因此报表服务作为本专栏第一部分单体应用开发中最后一个要实现的功能,这一篇文章很简单,我们一起来实现一个简单的报表服…...
LeetCode - #194 Swift 实现文件内容转置
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
【全栈】SprintBoot+vue3迷你商城(9)
【全栈】SprintBootvue3迷你商城(9) 往期的文章都在这里啦,大家有兴趣可以看一下 后端部分: 【全栈】SprintBootvue3迷你商城(1) 【全栈】SprintBootvue3迷你商城(2) 【全栈】Spr…...
ThreeJS示例教程200+【目录】
Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…...
《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记
paper:Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal 目录 摘要 1、介绍 2、相关工作 2.1 阴影去除 2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM) 3、方…...
PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10
1.环境搭建 硬件环境:CANoe、待测设备(包含UDS诊断模块) 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…...
基于java实现规则引擎设计思路
背景 去年底换了公司,目前在做HR招聘系统,产品要求:管理端手动配置发布招聘要求(支持多个招聘条件AND与OR关系编排);当C端用户报名该职位时,系统执行该规则,返回报名成功或失败。根据技术调研,采用db存规则…...
TCP协议:互联网数据传输的守护者
在互联网的浩瀚海洋中,数据如同涓涓细流,无时无刻不在流动。而这些数据的稳定、可靠传输,离不开一个重要的协议——TCP(Transmission Control Protocol,传输控制协议)。TCP协议作为互联网协议族中的核心成员…...
2025美国大学生数学建模竞赛(美赛)B题完整思路分析论文(35页)(含模型、可运行代码和运行结果)
2025美国大学生数学建模竞赛B题完整思路分析论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码(仅供参考) 4.1.4问题1样例代码运行结…...
InceptionV1_V2
目录 不同大小的感受野去提取特征 经典 Inception 网络的设计思路与运行流程 背景任务:图像分类(以 CIFAR-10 数据集为例) Inception 网络的设计思路 Inception 网络的运行流程 打个比方 多个损失函数的理解 1. 为什么需要多个损失函数&#…...
面向对象设计原则
面向对象最大的优势是抵御变化 理解隔离变化: 从宏观面来看,面向对象构建方式更能适应软件的变化,能将变化所带来的影响减为最少。 各司其职:从微观层面来看,面向对象的方式更强调各个类的责任。由于需求变化导致的新…...
近年流行的开发技术
Web 开发领域 前端技术 HTML5、CSS3 和 JavaScript HTML5:作为网页结构的基础,引入了新的语义化标签(如<header>、<nav>、<article>等),增强了网页的可读性和搜索引擎优化效果,同时支持…...
Go语言中的Select
Select 在 Go 语言中,select 是一种用于处理多个通道操作的控制结构。它允许你同时监听多个通道上的通信操作(发送或接收),并根据哪个操作先完成来执行相应的代码块。select 是 Go 并发编程中的一个重要工具,常用于实…...
SQL调优讨论
说明:狭义的SQL调优,指对慢SQL(一般是Select语句,或包含Select的语句)优化,在不改变查询结果的情况下提高SQL执行效率。广义上的SQL调优,指对某个慢查询优化,通过一些类操作提高查询…...
【STM32】-TTP223B触摸开关
前言 本文章旨在记录博主STM32的学习经验,我自身也在不断的学习当中,如果文章有写的不对的地方,欢迎各位大佬批评指正。 准备工作 今天这篇文章介绍的是触摸开关这一外围硬件。 ST-link调试器STM32最小系统板单路TTP223B触摸传感器模块LE…...
华为数据之道-读书笔记
内容简介 关键字 数字化生产 已经成为普遍的商业模式,其本质是以数据为处理对象,以ICT平台为生产工具,以软件为载体,以服务为目的的生产过程。 信息与通信技术平台(Information and Communication Technology Platf…...
Zookeeper(28)Zookeeper的线性化写入和顺序一致性读是什么?
Zookeeper 是一个分布式协调服务,它在设计上提供了强一致性的保证,其中包括线性化写入和顺序一致性读。这两种一致性模型确保了在分布式系统中数据的一致性和操作的确定性。 线性化写入(Linearizable Writes) 线性化写入保证在任…...
Ubuntu安装GitLab
在 Ubuntu 上安装 GitLab 的步骤如下。这里以 GitLab Community Edition(CE)为例: 前提条件 确保你的 Ubuntu 系统是 20.04 或更高版本。确保你的系统满足 GitLab 的硬件要求。 步骤 更新系统包: sudo apt update sudo apt upg…...
Stable Diffusion 3.5 介绍
Stable Diffusion 3.5 是由 Stability AI 推出的最新一代图像生成模型,是 Stable Diffusion 系列的重要升级版本。以下是关于 Stable Diffusion 3.5 的详细信息: 版本概述 Stable Diffusion 3.5 包含三个主要版本: Stable Diffusion 3.5 L…...
力扣hot100-->滑动窗口、贪心
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...
### 2.5.3 二叉树的基本操作
2.5.3 二叉树的基本操作 // 获取树中节点的个数 int size(Node root);// 获取叶子节点的个数 int getLeafNodeCount(Node root);// 子问题思路-求叶子结点个数// 获取第K层节点的个数 int getKLevelNodeCount(Node root,int k);// 获取二叉树的高度 int getHeight(Node root);…...
GAEA 社区:从用户到共同创造者
GAEA 模型最引人注目的方面之一是,它将用户视为共同创造者,而不仅仅是被动的消费者。在许多中心化平台中,用户就是用户。但在 GAEA 的生态系统中,每个人都在推动进步。无论您是贡献计算能力、分享有价值的数据还是帮助改进模型&am…...
记录一个连不上docker中的mysql的问题
引言 使用的debian12,不同发行版可能有些许差异,连接使用的工具是navicat lite 本来是毫无思绪的,以前在云服务器上可能是防火墙的问题,但是这个桌面环境我压根没有使用防火墙。 直到 ying192:~$ mysql -h127.0.0.1 -uroot ERROR 1045 (28…...
doris:MySQL Load
Doris 兼容 MySQL 协议,可以使用 MySQL 标准的 LOAD DATA 语法导入本地文件。MySQL Load 是一种同步导入方式,执行导入后即返回导入结果。可以通过 LOAD DATA 语句的返回结果判断导入是否成功。一般来说,可以使用 MySQL Load 导入 10GB 以下的…...
使用vitepress搭建自己的博客项目
一、介绍can-vitepress-blog 什么是CAN BLOG CAN BLOG是基于vitepress二开的个人博客系统,他能够方便使用者快速构建自己的博客文章,无需繁琐的配置和复杂的代码编写。 CAN BLOG以antdv为UI设计基础,简洁大方,界面友好…...
Yii框架中的扩展:如何使用外部库
在Yii框架中,扩展功能的一种常见且有效的方式是使用外部库。这些外部库可以帮助开发者实现特定的功能,如调用第三方API、处理图片、生成PDF文件或发送邮件等。以下是使用外部库扩展Yii框架的详细步骤: 一、安装外部库 使用Composerÿ…...
【Elasticsearch】inference ingest pipeline
Elasticsearch 的 Ingest Pipeline 功能允许你在数据索引之前对其进行预处理。通过使用 Ingest Pipeline,你可以执行各种数据转换和富化操作,包括使用机器学习模型进行推理(inference)。这在处理词嵌入、情感分析、图像识别等场景…...
Linux的基本指令(上)
1.ls指令 语法:ls [选项] [目录或文件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。 常用选项: -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。 -d 将…...
【贪心算法】洛谷P1106 - 删数问题
2025 - 01 - 22 - 第 46 篇 【洛谷】贪心算法题单 - 【贪心算法】 - 【学习笔记】 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 目录 文章目录 目录P1106 删数问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路代码 P1106 删数问题 题目描述 键盘输入一个高…...
【人工智能】Python中的知识图谱构建与应用
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能技术的不断发展,知识图谱已成为信息检索、推荐系统、自然语言处理等领域的重要技术之一。本文将详细介绍如何使用Python构建知…...
Spring WebSocket 与 STOMP 协议结合实现私聊私信功能
目录 后端pom.xmlConfig配置类Controller类DTO 前端安装相关依赖websocketService.js接口javascripthtmlCSS 效果展示简单测试连接: 报错解决方法1、vue3 使用SockJS报错 ReferenceError: global is not defined 功能补充拓展1. 安全性和身份验证2. 异常处理3. 消息…...
【Matlab高端绘图SCI绘图模板】第05期 绘制高阶折线图
1.折线图简介 折线图是一个由点和线组成的统计图表,常用来表示数值随连续时间间隔或有序类别的变化。在折线图中,x 轴通常用作连续时间间隔或有序类别(比如阶段1,阶段2,阶段3)。y 轴用于量化的数据&#x…...
java后端之事务管理
Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…...
常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
1.FFmpeg FFmpeg是一个非常强大的开源多媒体处理框架,它提供了一系列用于处理音频、视频和多媒体流的工具和库。它也是最流行且应用最广泛的框架! 官方网址:https://ffmpeg.org/ FFmpeg 的主要特点和功能: 编解码器支持: FFmpe…...
如何移植ftp服务器到arm板子?
很多厂家提供的sdk,一般都不自带ftp服务器功能, 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk:复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…...
牛批,吾爱出品
可能是因为从事IT的原因,我身边的大多数朋友也是从事相关工作的,而IT工作往往需要长时间对着电脑。这样就很容易眼睛疲劳。今天给大家推荐几款,希望有对有需要的小伙伴有所帮助,大家可以收藏以来哦。 CareUEyes CareUEyes是一款绿…...
基于 Android 的日程管理系统的设计与实现
标题:基于 Android 的日程管理系统的设计与实现 内容:1.摘要 基于 Android 的日程管理系统旨在帮助用户更高效地管理个人日程安排。该系统采用了 Android 平台的优势,结合了简洁的界面设计和强大的功能,为用户提供了便捷的日程管理体验。 在设计与实现过…...
Kubectl 与 Helm 详解
在 Kubernetes 生态中,kubectl 和 Helm 是两个核心工具,分别用于直接管理 Kubernetes 资源和简化应用的部署与管理。本文将深入探讨 kubectl 和 Helm 的功能、使用场景、部署与更新方式,并对比它们的优缺点。 1. Kubectl 详解 1.1 什么是 Kubectl? kubectl 是 Kubernetes…...
centos搭建docker registry镜像仓库
centos搭建docker registry镜像仓库 简介 Docker Registry是一个存储和分发Docker镜像的服务。它允许用户上传、下载和管理 Docker 镜像,为容器化应用的部署提供了便利。 拉取镜像 docker image pull registry证书配置 创建镜像仓库的镜像数据目录和证书目录&…...
Pyecharts之饼图与多饼图的应用
在数据可视化领域,饼图是一种常用的图表类型,特别适合展示数据的比例关系。Pyecharts 为我们提供了强大的饼图绘制功能,不仅可以轻松绘制各种饼图,还能对饼图的样式和数据标签进行深度定制,并且可以组合多个饼图以满足…...