如何快速开发项目,提高开发效率
文章目录
- 一、问题描述
- 二、问题解决
- 1.需求分析
- 2.架构设计
- 3.技术选型
- 4.正式开发
一、问题描述
有很多小伙伴在开发一个项目的时候,总是需要很长时间,效率很低,其实本质是没有掌握开发项目的关键和技巧
我下面列举一些问题,不知道大家在开发中有没有遇到过
-
开发到一半不知道接下来应该做什么业务了,你没听错,有的小伙伴业务流程还没规划好就开始开发了,那到后面可能会因为新加的业务影响到已完成的业务。
-
开发到一半发现数据库设计的有问题,可能我们新加一张表就能解决,那如果是需要添加字段,减少字段甚至修改字段的类型呢,那可能就需要改动大量的代码了。
-
因为版本不兼容导致很多离奇的bug,好一点的可以修改一些配置来进行解决,但也有很多是修改一处报错,又因出现一个报错
-
开发起来会觉得很累(简单代码的重复开发),不知道有多少人还在手动创建service层、mapper层的代码(其实用MybatisX插件一键就可以h直接生成了)
-
遇到不会的技术实现,还非要花很长时间去自己想的
其中的每一点对于开发进度来说都会耽误很长时间
二、问题解决
1.需求分析
需求分析是最关键的部分,对需求进行分析,提炼和归纳,以确定项目的功能、特性、性能等方面的需求
- 可以明确自己或者用户的需求和期望,从而去确定项目的功能和特性,为项目开发提供明确的方向和目标
- 避免开发出与预期不符的项目,减少因修改或重构代码而产生的开发成本和时间
- 促进团队成员之间的协作和沟通,提高开发效率和质量
- 改善软件的可维护性和可扩展性,降低后期维护和升级的成本和风险
2.架构设计
- 明确业务需求与目标:
- 根据业务需求分析和预期的增长情况,合理地划分微服务边界,确定哪些功能应该被封装为独立的服务。
- 复杂性管理:
- 微服务架构设计有助于将复杂的大系统分解成一系列可管理的小服务,每个服务都可以独立开发、部署和扩展,从而降低系统的整体复杂性。
- 可扩展性和弹性:
- 设计时考虑服务的水平扩展能力,通过负载均衡、容器化(如Docker)和云原生基础设施(如Kubernetes)实现服务的高可用性和弹性伸缩。
- 技术选型与标准化:
- 明确选用的技术栈,如Spring Boot作为基础框架、Spring Cloud作为微服务全家桶工具集,以及数据库、缓存、消息队列等中间件的选择和整合策略。
- 模块化与解耦:
- 设计松耦合的服务接口和数据模型,确保服务间相互独立,减少变更带来的连锁反应,并支持服务的迭代升级。
- 服务治理与运维友好:
- 预先设计服务注册与发现机制、熔断限流、链路追踪、日志监控、配置中心等功能,使得后期运维更加便捷高效。
- 未来演进与灵活性:
- 考虑到业务未来的演化,设计应具有足够的灵活性,方便新增服务、调整现有服务或废弃不再需要的服务。
3.技术选型
这点在项目开发前也一定要计划,避免出现不兼容的情况
例如:
如果你想通过中间件实现异步处理,那你是选用RabbitMQ还是Kafka
如果你想只用一个工具库,那它兼容的Java版本是多少呢?
4.正式开发
正式开发中有很多技巧,上到现成的模板,下到好用的快捷键,以下分享的无排序,按需所取
模板和脚手架
后端开发都可以在github中查找一些通用的开发模板,其中包含权限认证和简单的增删改查和一些工具。
前端开发也有一些脚手架,例如Ant Design Pro又或者github中的openapi-typescript-codegen,通过后端的开发文档自动生成代码
这些都可以大大减少开发时间
学会搜索
看到这个可能很多会疑惑,我不会难道还不会去搜吗?不不不,我这里指的当然不是这个意思
而且大家在刚开始开发项目遇到一个小难点的时候心里多少会有一种项目,我一定要自己想出来,不得不说,这样的想法是对的,这其中思考的过程也是很宝贵的。但我们不能在思考的过程中钻牛角尖,一个问题,想10分钟还没有头绪,就应该去寻求外界的帮助,百度、朋友等等。有的时候真的只需要别人一点就好。
看文档
当我们用到一个工具库的时候,我们遇到想实现的功能,但又不知道去哪里找的时候,请一定要记住,直接去官方文档中去寻找,官方文档是最直接的方法,当然有些小伙伴看文档会有些困难,那得快点提升,网上有很多教程。
快捷键
好的快捷键一定能让开发效率如虎添翼
通用快捷键
打开剪切板:WIN + V (有很多人小伙伴可能想复制一个之前复制的代码还要重新去找,其实可以直接查询之前复制和剪切的记录)
打开文件资源管理器:WIN + E
新建文件夹:Ctrl + Shirt + N
重命名:Ctrl + F2
删除文件夹:Ctrl + D
IDEA快捷键
重命名: Shirt + F6
删除没有被调用的引入包:Ctrl + Alt + O
全局替换:Ctrl + Shirt + R
替换:Ctrl + R
相关文章:
如何快速开发项目,提高开发效率
文章目录 一、问题描述二、问题解决1.需求分析2.架构设计3.技术选型4.正式开发 一、问题描述 有很多小伙伴在开发一个项目的时候,总是需要很长时间,效率很低,其实本质是没有掌握开发项目的关键和技巧 我下面列举一些问题,不知道…...
面试笔记——多线程使用场景
线程池使用场景(CountDownLatch, Future) CountDownLatch CountDownLatch(闭锁/倒计时锁)用来进行线程同步协作,等待所有线程完成倒计时(一个或者多个线程,等待其他多个线程完成某件…...
02.0 基于Verilog控制LED灯每秒钟闪烁一次
本段代码是为Verilog初学者提供的一个名为led_blink简单实例Verilog模块,其功能是控制6个LED灯同步闪烁,每秒钟闪烁一次。 本例代码用于理解时序逻辑的概念,理解多个always模块完全并行执行的概念,讲授时可以与C语言的执行过程进行…...
C语言创建文件夹和多级目录
C调用系统命令创建多级目录 #include <stdio.h> #include <stdlib.h>int main() {const char *path "a/b/c";// 创建目录命令的字符串char mkdir_command[100];sprintf(mkdir_command, "mkdir %s", path);// 调用系统命令system(mkdir_comma…...
2024.5.6
#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口大小this->resize(1000,740);//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\Administrator\\Desktop\\pictrue\\Plants.png"));//设置窗口标题this-…...
mybatis配置获取自增主键
mybatis配置获取自增主键 【/n】 01 使用场景 当需要刚刚插入数据库的数据对应的新增主键时,通过配置xml文件,使数据库返回新增主键id,并把主键id与类参数对应 02 涉及配置 注解TableId(type IdType.AUTO):在类主键id通过配…...
完整、免费的把pdf转word文档
在线工具网 https://www.orcc.online 支持pdf转word,免费、完整、快捷 登录网站 https://orcc.online 选择需要转换的pdf文件: 等待转换完成 点击蓝色文件即可下载 无限制,完整转换。...
使用 Lua 协程模拟 Golang 的 go defer 编程模式
封装 go 函数 在 使用 Lua 协程处理异步回调函数 中已经介绍 这里简要列下: 封装 go 函数---go 函数创建并启动一个协程 ---param _co_task function 函数原型 fun(_co:thread) function go(_co_task)local co coroutine.create(_co_task) -- 创建的协程是暂停的…...
网络通信协议,UDP和TCP,初步了解
UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种常见的网络通信协议,用于在计算机网络中进行数据传输。 1. TCP:Transmission Control Protocol(传输控制协议…...
Golang | Leetcode Golang题解之第61题旋转链表
题目: 题解: func rotateRight(head *ListNode, k int) *ListNode {if k 0 || head nil || head.Next nil {return head}n : 1iter : headfor iter.Next ! nil {iter iter.Nextn}add : n - k%nif add n {return head}iter.Next headfor add > …...
美业SaaS系统多门店收银系统源码-【分润常见问题】讲解(一)
美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 ▶ 分润常见问题: 1、分润金额基数 所有分润计算的基数均为平台订单中各个商…...
Chatbot 在教育中的应用
Chatbot 在教育中的应用 基本信息 这篇博客主要介绍几篇Chatbot在教育领域中应用的文章,根据文章的侧重点不同,分为介绍教育理论,与介绍系统设计两类。从问题定义、技术方法、教育学理论、实验设计、结论证据几个方面概括各篇文章。 博…...
Apache和Nginx的区别以及如何选择
近来遇到一些客户需要lnmp环境的虚拟主机,但是Hostease这边的虚拟主机都是基于Apache的,尽管二者是不同的服务器软件,但是大多数情况下,通过适当的配置和调整两者程序也是可以兼容的。 目前市面上有许多Web服务器软件,…...
深入探索Element-UI:构建高效Web前端的利器
深入探索Element-UI:构建高效Web前端的利器 引言:前端框架的选择与Element-UI的定位一、Element-UI初探二、快速上手:安装与配置三、核心组件深度解析四、实用功能与进阶技巧五、性能优化与最佳实践六、实战案例分析七、与其他技术栈的集成 安…...
在Ubuntu 24.04 LTS (Noble Numbat)上安装nfs server以及nfs client
在Ubuntu 24.04 LTS (Noble Numbat)上,我使用的是最小化安装, 当然server版本的Ubuntu在安装的时候可能会有网络不通的问题,解决办法见如下文章: ubuntu 24.04 server 仅NAT模式上网设置静态IP设置-CSDN博客文章浏览阅读489次,点赞9次,收藏3次。在Ubuntu 24.04 上设置网…...
供应链|经典论文解读:(s,S) 策略在动态库存下的最优性
文章考虑了具有订购成本(由单位成本加上重新订购成本组成)的动态库存问题。具体而言,对于每个时期,系统在中期开始是做出一系列采购决策——这些采购有助于库存的积累,并在随后的周期被需求所消耗。每时期系统会产生各…...
Python从0到100(二十):文件读写和文件操作
一、文件的打开和关闭 有了文件系统可以非常方便的通过文件来读写数据;在Python中要实现文件操作是非常简单的。我们可以使用Python内置的open函数来打开文件,在使用open函数时,我们可以通过函数的参数指定文件名、操作模式和字符编码等信息…...
AI+客服行业落地应用
一、客服行业变迁 1.传统客服时代 (1)客服工作重复性高,技术含量低 (2)呼出效率低,客服水平参差不齐 (3)管理难度高,情绪不稳定 (4)服务质量…...
40 生产者消费者模型
生产者消费者模型 概念 为何要使用生产者消费者模型,这个是用过一个容器解决生产者和消费的强耦合问题。生产者和消费者之间不需要通讯,通过阻塞队列通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列…...
QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框
菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件,添加配置 因为之后用到lambda; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
