开发细节问题

开发流程

  1. 了解需要做什么
  • 产品或者老大提需求,给我需求文档,或者效果图,或者接口文档,让我明确我需要做什么
  1. 我分析需求
  • 分析需要什么技术,然后技术选型,遇到需要用到的不懂的需要进行技术的研究
  1. 分步骤完成
  • 实际开发就是一步一步的去做就完事儿了
  1. 测试
  • 开发过程中我们会自己测试
  • 功能差不多了,需要交给专业的测试去测试
  1. 修复测试提交的bug清单
  • 修复bug,直到没有问题,那就可以上线了

在这里插入图片描述

开发团队配置

后台:前端:终端:产品:测试:设计= 8:4:2:2:2

  • 后台负责接口,管理系统
  • 前端负责网页,小程序,h5页面
  • 终端负责android,ios,windows应用程序
  • 产品负责需求
  • 测试负责测试代码
  • 设计负责出效果图

项目开发多久

  • 一个版本的上线一般是4个月
  • 小版本是1个月左右更新
  • 临时的小需求,一般一周左右更新
  • 如果有一些重大bug需要fix,那么可能发现了就会立马修复,立马发版本

git如何进行分支管理

  • 规范的公司,会遵循git Flow,git Flow可以解决90%+的协同开发问题

Git Flow 的常用分支
Production 分支
也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改

Develop 分支
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支

Feature 分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release

Release分支
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支

Hotfix分支
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release

在这里插入图片描述
Release 分支
Release分支基于Develop分支创建,打完Release分支之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于Develop分支新建Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
在这里插入图片描述
Hotfix 分支
hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。
在这里插入图片描述

环境分几种

公司最基本有生产环境和测试环境,测试环境的数据都是测试数据

  • 有的公司分DEV FAT UAT PRO

Development environment 开发环境,用于开发者调试使用
Feature Acceptance Test environment 功能验收测试环境,用于软件测试者测试使用
User Acceptance Test environment 用户验收测试环境,用于生产环境下的软件测试者测试使用
Production environment 生产环境

  • 有的公司也这么分dev、test、pre、pro四大环境

pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。
pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样
test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。
dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。

最近比较流行的Apollo 配置中心,就支持dev,fat,uat,pro 四种部署环境。

服务器

老大或者pm直接给一个文档,文档上写着你所需要用到得服务器,所以具体台数,你可以说不知道,开发的时候pm只给你了个操作的这几台服务器,具体几台,你也不知道

中小企业用阿里云的比较多,阿里云提供整体方案,扩容容易
小企业3~5台吧,中型企业看规模
什么配置呢?可以参考下阿里云的配置
在这里插入图片描述

通用型2核8g,40g,3mbit/s 一年差不多2000

项目并发

要看具体项目和公司用户量甚至分不同的服务

我们首先应该知道的常见软件的并发能力

tomcat 调优后500左右
mysql并发 2000左右
nginx 1w左右
redis 5w左右
OpenRestry 1w乃至 100w 以上单机并发连接

支付宝大促的时候也就8w-10w的qps

5000的并发量 已经不小了。如果抗的了5千,说明这个网站有 50-100万人同时在线。 用户量 一定是个过亿的网站。 一个大型网游 同时100万人在线的都很少

应对并发怎么做

1000并发,用tomcat,springmvc框架加缓存就可以应对,1万的并发在关键节点使用内存处理也很容易

测试并发能力

  1. 可以通过Jmeter工具或者LoadRunner工具
  2. 可以通过CountDownLatch编写代码并发测试

Jmeter的线程组
在这里插入图片描述
CountDownLatch并发测试

  • 测试线程
 import java.util.concurrent.CountDownLatch;

 public class MyThread implements Runnable {
 private final CountDownLatch startSignal;
 public MyTestThread(CountDownLatch startSignal) {
 super();
 this.startSignal = startSignal;
 }
 @Override
 public void run() {
 try {
 startSignal.await();
 //一直阻塞当前线程,直到计时器的值为0
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 //【实际测试操作】
 doWork();
 }
 private void doWork() {
 // TODO Auto-generated method stub
 System.out.println("do work");
 }
 }
  • 测试主方法
public class MyTest {
 public static void main(String[] args) {
 // 初始化计数器为 1
 CountDownLatch start=new CountDownLatch(1);
 //模擬16个线程
 for(int i=0;i<16;i++){
 MyTestThread tt =new MyTestThread(start);
 Thread t = new Thread(tt);
 t.start();
 }
 //计数器減 1
 start.countDown();
 //计数器为0,所有线程释放,同时并发
 }
 }
 

设计接口文档

数据安全方面:通信协议和数据格式

restful风格的请求信息,我们的数据报文用的是json进行封装,报文一般分为请求格式,响应格式,和返回的状态码

测试

单元测试、集成测试、确认测试、系统测试、验收测试

一般只是参与前3个的测试,确认测试就是看我们是否满足了每个需求

联调

前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合。

接口传递的数据如何保证安全性:

无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提供的接口来进行业务交互。网页或者app,只要抓下包就可以清楚的知道这个请求获取到的数据,这样的接口对爬虫工程师来说是一种福音,要抓你的数据简直轻而易举。

保证安全性

  1. 通信使用https
  2. 请求签名,防止参数被篡改
  3. 身份确认机制,每次请求都要验证是否合法
  4. 对所有请求和响应都进行加解密操作

前后端API交互如何保证数据安全性?

项目发布

  • 如果是静态资源,就是扔到指定的文件夹就好了
  • 如果项目是war,那就打包为war,扔到tomcat的webapps目录,会自动解压
  • 如果是springboot项目
    项目打包为了jar,那就扔到linux,java -jar xxx.jar 去执行
    项目打包为了docker容器,那就创建镜像去执行
    项目打包为war,也是扔到webappls目录下就可以了,会自动解压
  • Jekings

1、war扔到webapps
在这里插入图片描述
2、springboot 项目打包的jar运行
在这里插入图片描述
3、springboot 项目打包为war

修改打包形式
在这里插入图片描述
移除嵌入式tomcat插件
在这里插入图片描述
添加servlet-api的依赖
在这里插入图片描述
修改启动类,并重写初始化方法
在这里插入图片描述
然后打包

mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,

项目上线

上线的代码出现问题(查看日志)

  1. 如果公司没有elk之类的日志平台,那么就只能去查日志文件了
  2. 查日志文件,掌握一些常用的命令
  3. 如果是实时日志,可以通过tail -f 查看

1、一些常用命令
tail 、head、tac、sed、vim、cat、more、less

#tail
tail -n 100 catalina.out查询日志尾部最后100行的日志;
tail -n +100 catalina.out 查询100行之后的所有日志;
tail -fn 100 catalina.out 循环实时查看最后100行记录(最常用的)
配合着grep用, 例如 : tail -fn 100 catalina.out | grep – ‘关键字’
tail -n 6000 catalina.out |more -100 可以进行多屏显示(ctrl + f 或者 空格键可以快捷键)

#head
head -n 1000 catalina.out //查询日志文件中的头10行日志;
head -n -1000 catalina.out //查询日志文件除了最后10行的其他所有日志;

#tac
tac 则是由最后一行到第一行反向在萤幕上显示出来

#sed
//按照行号
sed -n '2,100p’catalina.out
//这样你就可以只查看文件的第5行到第10行。
//按照时间段
sed -n '/2019-01-17 10:07:10/,/2019-02-14 16:54:01/p’catalina.out

#less
less log.log
shift + G 命令到文件尾部 然后输入 ?加上你要搜索的关键字例如 ?1213
shift+n 关键字之间进行切换

#vim
1、进入vim编辑模式:vim filename
2、输入“/关键字”,按enter键查找
3、查找下一个,按“n”即可
退出:按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令
wq! 保存退出
q! 不保存退出

Linux grep 命令
ps -ef|grep详解
linux 中强大且常用命令:find、grep

管理需求和bug

  1. 简单的搞一些表格也可以的
  2. 进一步,可以用readmine,禅道,Tapd、teambition这样的团队协作工具

体验禅道

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值