誉天程序员-瀑布模型-敏捷开发模型-DevOps模型比较

文章目录

  • 2. 项目开发-开发方式
    • 2.1. 瀑布开发模型
    • 2.2. 敏捷开发模型
    • 2.3. DevOps开发模型
    • 2.4. 区别
  • 自增主键策略
    • 1、数据库支持主键自增
      • 自增和uuid方案优缺点

2. 项目开发-开发方式

由传统的瀑布开发模型、敏捷开发模型,一跃升级到DevOps开发运维一体化开发模型。

2.1. 瀑布开发模型

大而全,流程界限明显,团队庞大隔离分工明确,沟通成本大,效率变低。
在这里插入图片描述

2.2. 敏捷开发模型

将庞大的小组分成多个小组,每个小组形成快速迭代,打破部门边界,以项目模块为核心组织人员。沟通效率,开发效率显著提升。
在这里插入图片描述

2.3. DevOps开发模型

而开发运维一体化是敏捷开发的更深入的延续,同时最大特点是基于约定大于配置的思想,利于很多新兴的开发工具,形成一套自动化的体系。利于自动化极大减少了人力成本和沟通时间。所以开发效率又一次有了质的飞跃。
GitLab(Gitee)形成代码仓库。Junit实现单元测试。Maven实现一套编译、测试、打包、发布、部署的命令集,并按约定形成一套自动执行命令的机制。Docker实现一套容器化机制,其效率高过VM虚拟机百倍甚至更高。K8s实现Docker的编排,使其实现分布式、高并发、高可用集大成的平台。这些各自领域的精英通过Jinkens的监控和调配,将整个软件开发过程实现,同时实现闭环自循环。
开发者提交代码到GitLab上,Jinkens设置hook钩子,对代码进行监控,发现开发者更新了代码,就调用Maven的compile编译命令,先进行基础语法的检查,编译通过后,调用Maven test命令,自动调用开发者所写的单元测试类,测试每个类的每个方法,同时可以结合mock技术实现供给模拟数据。单元测试通过后,继续调用Maven package打包命令,完成项目的发布。通过Jinkens调用Dockerfile实现docker的自动化部署和运行。Docker运行后形成web环境,用户可以直接访问网站去执行某个服务。可以看到这个流程非常复杂,但功能特别的强大。特别再配合SpringCloud微服务架构后,直接可以升级到大型架构,轻松支持百万级、千万亿,甚至亿级的超大型并发项目的实现。

在这里插入图片描述

在这里插入图片描述

2.4. 区别

在这里插入图片描述

自增主键策略

1、数据库支持主键自增

不同的数据库实现方式不同,SQL标准没有定义,都是数据库厂商自己扩展。
例如:mysql 它 auto_increment,自增主键,在数据库中对每个表的自增主键都会单独维护一个值。
每插入一条数据,它的值+1。

它在大型的项目中,或分布式项目中有问题。
1)值范围可能溢出,out of value
2)自增并发容易出现,产生了相同的值,sqlServer。不适合高并发。
3)分布式合并统计时,先把表的数据合并起来,然后进行统计。
都是按序号自增,两张表合并时,无法合并。

新的方案:字符串,特点:唯一性(主键、合并表)
1)UUID,32位,以16进制来表达
UUID:机器码(网卡)-唯一性+时间戳(纳秒)+顺序号(理论上唯一)
SELECT UUID(),LENGTH(UUID())
表达范围2^32长度,唯一性

自增和uuid方案优缺点

1)自增int/long,运算速度快
2)uuid相比太长32位,字符串速度慢

mybatisplus采用新的uuid策略,雪花snowflake算法。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

swagger相关问题

swagger相关问题 swagger版本为&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.9.6</version> </dependency> <dependency><groupId&…

Grafana集成prometheus(4.Grafana添加预警)

上文已经完成了grafana对prometheus的集成及数据导入&#xff0c;本文主要记录grafana的预警功能&#xff08;以内存为例&#xff09; 添加预警 添加入口&#xff08;2个&#xff09; databorard面板点击edit&#xff0c;下方有个Alert的tab&#xff0c;创建Alert rules依赖…

IDEA偶尔编译的时候不识别lombok

偶尔IDEA启动项目的时候会识别不到lombok,识别不到get()跟set()方法 方案 在settings添加下面代码 -Djps.track.ap.dependenciesfalse

自然语言处理学习笔记(二)————语料库与开源工具

目录 1.语料库 2.语料库建设 &#xff08;1&#xff09;规范制定 &#xff08;2&#xff09;人员培训 &#xff08;3&#xff09;人工标注 3.中文处理中的常见语料库 &#xff08;1&#xff09;中文分词语料库 &#xff08;2&#xff09;词性标注语料库 &#xff08;3…

我理解的音响设备音频放大器地线环路共地回路造成交流声干扰哼声的分析,信号接地,工业仪表接地的问题

我理解的音响设备音频放大器地线环路共地回路造成交流声干扰哼声的分析&#xff0c;信号接地&#xff0c;工业仪表接地的问题 wxleasyland 2023.8 一、地线环路造成交流声哼声 家里插座中有一个的PE地线&#xff0c;相当于大地。 设备1的“信号地”接到家里三脚插座的PE地线…

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础2

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片&#xff1a;K210&#xff08;64位双核带硬件FPU和卷积加速器的 RISC-V CPU&#xff09; 显示屏&#xff1a;LCD_2.8寸 320*240分辨率&#xff0c;支持电阻触摸 摄像头&#xff1a;OV2640&#xff0c;200W像素 扬声器&#…

unity TextMeshPro 富文本

<b>粗体标签</b> <i>斜体标签</i> <u>下划线标签</u> <s>删除线标签</s> <sup>上标标签</sup>前面后边上标签 5<sup>。</sup>C <sub>下标标签&#xff0c;如&#xff1a;</sub>H<sub&…

【练】要求定义一个全局变量 char buf[] = “1234567“,创建两个线程,不考虑退出条件,打印buf

要求定义一个全局变量 char buf[] "1234567"&#xff0c;创建两个线程&#xff0c;不考虑退出条件&#xff0c;另&#xff1a; A线程循环打印buf字符串&#xff0c;B线程循环倒置buf字符串&#xff0c;即buf中本来存储1234567&#xff0c;倒置后buf中存储7654321. 不…

动手学深度学习—卷积神经网络(原理解释+代码详解)

目录 1. 从全连接层到卷积层2. 图像卷积2.1 互相关运算2.2 卷积层2.3 图像中目标的边缘检测2.4 学习卷积核2.5 特征映射和感受野 3. 填充和步幅3.1 填充3.2 步幅 4. 多输入多输出通道4.1 多输入通道4.2 多输出通道4.3 11卷积核 5. 汇聚层5.1 最大汇聚层和平均汇聚层5.2 填充和步…

c 语言解析 时间字符串

#include <iostream> #include <ctime>int main(int argc, char *argv[]) {struct tm timeinfo;char cur_time[] "current time: 2021-09-06 23:50:13";// 解析时间到timeinfo中strptime(cur_time, "current time: %Y-%m-%d %H:%M:%S", &…

【快应用】adbutton如何直接下载广告而不跳落地页再下载

【关键词】 原生广告、adbutton、下载 【问题背景】 快应用中的原生广告推出了adbutton组件来直接下载广告app&#xff0c;在使用的时候&#xff0c;点击adbutton按钮的安装文案&#xff0c;不是直接下载广告app&#xff0c;而是跳转到落地页后直接下载&#xff0c;这种情形该…

Redis主从复制、哨兵机制、集群分片

目录 一.主从复制 1.概述 2.主从架构相比于单点架构的优势 3.主从复制原理和工作流程 第一次同步 第一阶段&#xff1a;建立链接、协商同步 第二阶段&#xff1a;主服务器同步数据给从服务器 第三阶段&#xff1a;主服务器发送新写操作命令给从服务器 基于长连接的命…

vscode 通过mongoose 连接mongodb atlas

了解mongodb 的项目结构 1.代表集群名称 > 2.代表数据库名称>3.代表每个 collection名称 三者范围为从大到小的关系 &#xff08;一对多&#xff09;。每个集群有不同的连接地址、用户信息&#xff08;Database Access&#xff09;、ip配置信息&#xff08;Network Acce…

Modbus TCP转Profinet网关modbus tcp转以太网

大家好&#xff0c;今天我们来聊一聊如何使用捷米特的Profinet转modbusTCP协议转换网关在博图上进行非透传型配置。 1, 首先&#xff0c;我们需要安装捷米特JM-TCP-PN的GSD文件&#xff0c;并根据现场设备情况配置modbusTCP地址。然后&#xff0c;在博图中添加该GSD文件&#x…

应用在测温仪中的数字温度传感芯片

测温仪&#xff08;thermometric indicator&#xff09;&#xff0c;是温度计的一种&#xff0c;用红外线传输数字的原理来感应物体表面温度&#xff0c;操作比较方便&#xff0c;特别是高温物体的测量。应用广泛&#xff0c;如钢铸造、炉温、机器零件、玻璃及室温、体温等各种…

一零六六、线程池、锁

线程池&#xff1a; 管理线程创建&#xff0c;销毁的一系列池子 如何创建线程池&#xff1f; ExecutorService executor Executors.newFixedThreadPool(n); 创建线程有多种方法&#xff0c;为何要用线程池&#xff1f; 减少性能开销,每次执行任务都新建线程造成cpu资源浪费…

Shell脚本学习-MySQL单实例和多实例启动脚本

已知MySQL多实例启动命令为&#xff1a; mysqld_safe --defaults-file/data/3306/my.cnf & 停止命令为&#xff1a; mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown 请完成mysql多实例的启动脚本的编写&#xff1a; 问题分析&#xff1a; 要想写出脚…

MINIO安装(centos7)

步骤1&#xff1a;安装wget 在开始安装MinIO之前&#xff0c;需要安装wget命令行工具。可以使用以下命令在CentOS系统中安装wget&#xff1a; sudo yum install wget 步骤2&#xff1a;下载MinIO wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio 将下…

分布式应用:ELK企业级日志分析系统

目录 一、理论 1.ELK 2.ELK场景 3.完整日志系统基本特征 4.ELK 的工作原理 5.ELK集群准备 6.Elasticsearch部署&#xff08;在Node1、Node2节点上操作&#xff09; 7.Logstash 部署&#xff08;在 Apache 节点上操作&#xff09; 8.Kiabana 部署&#xff08;在 Node1 节点…