接手项目要做的事项
总结:在接手别人的项目时,至少应该自己整理并绘画四个图
1、产品脑图:帮助你理解产品的功能;
2、UML时序图:帮助你源代码的核心技术实现;
3、整体业务泳道图:帮助你从整体上熟悉业务的流程;
4、系统架构图:帮助你掌握目前服务器的部署情况和网络链路。
熟悉产品、熟悉业务、熟悉技术
接手一个旧项目,第一要义:尽快熟悉你的产品。这个产品具体主要功能是什么?是给谁使用的?客户群体是谁?目前大概注册和使用的用户有多少?上游供应商是谁?项目组的其他成员还有哪些?等等这些项目和产品背景信息都要搞清楚。
第二要义:尽快熟悉业务。业务很关键,你要对接手的产品所在的行业有一定的理解和学习。也就是我们通常所说的特定领域的业务。这个业务到底是做电商、还是做广告、还是做游戏、还是做ToB的系统集成,不同领域的术语和知识也不同。
第三要义:快速了解当前项目所用到的技术栈、编程语言、开发框架、数据库、环境要求等。技术是基础。
开始开发一些小需求和小功能
当你要开始开发新的需求时,先不要着急去改代码。
因为,你会发现,写代码很简单,但要写出100%符合原来业务逻辑和规则的代码就很难。
也就是说,编程语言的代码语法不难,难就难在完整理解和全盘掌握原来代码的业务逻辑。
为此,你可以使用ProcessOn、Xmind、Viso等在线工具或本地软件,先自我梳理一遍目前产品和技术上的思维脑图、核心业务逻辑的时序图、整体业务流程的泳道图、目前系统的架构图。至少可以梳理这四个图。
例如,产品功能的思维脑图梳理,帮助你了解产品的功能和形态。通过点击、浏览、体验和使用产品的每一个页面,你可以边操作边梳理。
然后,打开本地IDE代码编辑器,找到对应页面和接口背后的源代码,定位到最底层、最核心、最重要、最复杂的代码模块,边浏览源代码、边整理核心的时序图。这一块工作,可以让你抓住项目的底层本质和核心,熟悉原来的代码风格、编程范式、设计模式、高并发的处理方式、各模块的依赖关系等。
第三个图,是整体业务的泳道图。它可以让你知道整体的系统上下游的数据流向、底层的依赖系统和网络链路。当你的系统出现问题了,你知道可以找谁。
最后一部分是面向技术架构的系统架构图。这部分,你可以通过nginx日记、或者阿里开通的服务、以及内部记录的资料找出你的系统都调用了哪些第三方接口。例如短信接口用的是哪家?有没用到OSS对象存储?CDN用了什么?数据库是用云服务还是自建的?你要清楚地知道目前有多少台服务器,是如何部署和相互调用的,网络链路是怎样的。从用户发起请求打开页面开始,系统在背后都做了哪些事情?
接手实战经验:
- 开通各种资源权限:云账号、git、流水线、机器部署、监控、告警、日志、配置文件管理、网关、负载均衡、数据库、redis、ES、产品体验账号
- 体验产品功能、梳理功能脑图、产品服务的客户、用户和数据量级、qps等
- 整理服务调用的第三方接口、第三方依赖、消息监听、消息发送、存储方式(数据库、缓存、ES、COS……)、CDN、服务部署方式
- 梳理服务的定时任务、服务启动时初始化内容、拦截器过滤器的内容
- 本地启动服务、配置文件管理方式、发布上线流程
- 准备日常查问题处理问题的工具:常用数据库查询语句SQL等
业务(项目是业务的一环) —> 产品(项目) —> 代码(技术栈)
切记勿一开始就一行一行代码的抠,需要开发或者修改代码的时候再细看,否则既容易把自己绕晕又低效,需要快速全局把控,然后快速做需求,根据情况平时再细细梳理到完全掌控。
参考:CTO来教你:技术人员突然离职,如何接手他的项目?-腾讯云开发者社区-腾讯云
相关文章:
接手项目要做的事项
总结:在接手别人的项目时,至少应该自己整理并绘画四个图 1、产品脑图:帮助你理解产品的功能; 2、UML时序图:帮助你源代码的核心技术实现; 3、整体业务泳道图:帮助你从整体上熟悉业务的流程&a…...
【Web】攻防世界Web_php_wrong_nginx_config
这题考察了绕过登录、目录浏览、后门利用 进来先是一个登录框,随便怎么输前端都直接弹窗 禁用js后再输入后登录 查看源码,好家伙,不管输什么都进不去 直接扫目录 访问/robots.txt 访问/hint.php 访问/Hack.php 抓包看一下 cookie里isLogin0…...
Flume采集Kafka并把数据sink到OSS
安装环境 Java环境, 略 (Flume依赖Java)Flume下载, 略Scala环境, 略 (Kafka依赖Scala)Kafak下载, 略Hadoop下载, 略 (不需要启动, 写OSS依赖) 配置Hadoop 下载JindoSDK(连接OSS依赖), 下载地址Github 解压后配置环境变量 export JINDOSDK_HOME/usr/lib/jindosdk-x.x.x expo…...
flutter,uni-app开发调试ios
一、申请ios开发者账号 二、ios开发者配置 ios 开发者需要配置的地方 https://developer.apple.com/account/resources/certificates/list Certificates(证书): 作用: 证书用于对应用程序和开发者进行身份验证,确保安全性和可…...
MybatisBatchUtils功能介绍
MybatisBatchUtils 是一个 MyBatis 框架的工具类,主要用于简化 MyBatis 中批量操作的代码编写。该工具类封装了 MyBatis 中的批量操作方法,可以方便地进行批量插入、更新和删除等操作。 一般来说,使用 MyBatis 进行批量操作需要先设置 JDBC 驱…...
Flutter使用flutter_gen管理资源文件
pub地址: https://pub.dev/packages/flutter_gen 1.添加依赖 在你的pubspec.yaml文件中添加flutter_gen作为开发依赖 dependencies:build_runner:flutter_gen_runner: 2.配置pubspec.yaml 在pubspec.yaml文件中,配置flutter_gen的参数。指定输出路…...
vue3 setup语法糖,常用的几个:defineProps、defineEmits、defineExpose、
vue3和vue2组件之间传参的不同 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖。 <script setup> 中的代码会在每次组件实例被创建的时候执行。 任何在 <script setup> 声明的顶层的绑定 (包括变量,函数声明࿰…...
JC/T 2087-2011建筑装饰用仿自然面艺术石检测
建筑装饰用仿自然面艺术石是指以硅酸盐水泥、轻质骨料为主要原料经浇筑成型的饰面装饰材料。 JC/T 2087-2011建筑装饰用仿自然面艺术石测试: 测试项目 测试方法 外观质量 GB/T 18601 尺寸偏差 GB/T 18601 体积密度 GB/T 9966.3 吸水率 GB/T 9966.3 压缩强…...
C语言——写一个简单函数,找两个数中最大者
#include <stdio.h>int max( int a, int b ) { return a>b ? a:b; }int main() { int a, b;printf("输入两个数:\n");scanf("%d %d", &a, &b);printf("max %d\n", max(a, b));return 0; }输出结果:...
机器学习中的混淆矩阵
混淆矩阵是用于评估分类模型性能的表格,它展示了模型在不同类别上的预测情况。对于二分类问题,混淆矩阵的构成如下: 假设有两个类别:正例(Positive)和负例(Negative)。 真正例&…...
QT基础实践之简易计算器
文章目录 简易计算器源码分享演示图第一步 界面设计第二步 设置槽第三步 计算功能实现 简易计算器 源码分享 链接:https://pan.baidu.com/s/1Jn5fJLYOZUq77eNJ916Kig 提取码:qwer 演示图 第一步 界面设计 这里直接用了ui界面,如果想要自己…...
南大通用 GBase 8s数据库级别权限
对于所有有权使用指定数据库的用户都必须赋予其数据库级别的用户权限。在GBase 8s 中,数据库级别的用户权限有三种,按权限从低到高排列依次为:CONNECT、RESOURCE、DBA。 1. CONNECT 这是级别最低的一种数据库级别用户权限。拥有该权限的用户…...
对话式数据需求激增,景联文科技提供高质量多轮对话数据定制采集标注服务
大模型的快速发展使得数据服务需求激增,产品整体处于供不应求状态。对话式数据集成为当下需求热点,人们对于更复杂、更真实的多轮对话数据需求不断增加,定制化服务占据市场需求主流。 通过对多轮对话数据的训练,模型可以更好地理解…...
python第1天之常识及环境安装
前言: 当谈到编程语言的流行度时,Python绝对是其中之一。Python是一种高级编程语言,其语法简单易懂,适用于各种不同的应用领域,包括Web开发、数据分析、人工智能等。在本文中,我们将探讨一些关于Pyth…...
中国高纯石英砂行业市场研究与投资前景报告(2024版)
内容简介: 高纯石英砂纯度高、品质好,生产的石英制品具有耐高温、耐腐蚀、低热膨胀性、高度绝缘性和透光性等优异的物理化学属性,被广泛用于光伏、电子、高端电光源、薄膜材料、国防科技等领域,是高端制造行业不可替代的原辅材料…...
遭到美国做空机构“灰熊”做空后,人工智能公司商汤科技股价暴跌
来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,在遭到美国做空机构Grizzly Research(灰熊)指控夸大收入后,商汤科技的股价在周二一度下跌了9.7%。 Grizzly Research在周二发布的一份报告中称,商汤…...
异常数据检测 | Python实现孤立森林(IsolationForest)异常检测
孤立森林(IsolationForest)异常检测 IsolationForest[6]算法它是一种集成算法(类似于随机森林)主要用于挖掘异常(Anomaly)数据,或者说离群点挖掘,总之是在一大堆数据中,找出与其它数据的规律不太符合的数据。该算法不采样任何基于聚类或距离的方法,因此他和那些基于距离的的…...
营销互动类小游戏策划与开发
制定并开发一款营销互动小游戏需要经过一系列策划和实施步骤。以下是一个基本的流程,你可以根据自己的具体情况进行调整: 明确目标:确定小游戏的目标,是提高品牌知名度、增加销售、促进用户互动还是其他目标。 了解目标受众&…...
主机的容器化技术介绍
☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、什么是容器 容器是一个标准化的单元,是一种轻量级、可移植的软件打包技术,容器将软件代码及其相关依赖打包,使应用程序可以在任何计算介质运行。例如开发人员在自己的…...
网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』
🔭个人主页: 北 海 🛜所属专栏: 神奇的网络世界 💻操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌤️前言🌦️正文1.网络发展1.1.背景1.2.类型 2.网络协议2.1.什么是协议2.2.协议…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
