T31-工程结构规约学习笔记

218 阅读3分钟

1. 应用分层

1.1 为什么要分层?

  1. 隐藏下层业务逻辑的复杂性
  2. 提高系统的组件化和可维护性 可扩展性、可维护性 计算机领域的任何问题都可以通过增加一个中间层解决

1.2 MVC框架模式

Model 数据以及数据的处理

1.3 推荐分层结构

image.png

1.4 分层异常处理

image.png

1.5 分层领域模型

  1. DO(Data Object)此对象与数据库表结构一一对应,通过DAO层向上传输数据源对象
  2. DTO(Data Transfer Object)数据传输对象,Service或Manager向外传输的对象
  3. BO(Business Object) 业务对象,可以由Service层输出的封装业务逻辑的对象
  4. Query 数据查询对象,各层接受上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输
  5. VO(View Object) 显示层对象,通常是Web向模版渲染引擎层传输的对象 image.png

2. Maven

2.1 什么叫做构建

image.png

2.2 Java项目构建工具

  1. 传统工具 Ant
  2. 主流构建工具 Maven
  3. 新兴构建工具 Gradle

2.3 Maven的主要功能

  1. 依赖管理
  2. 规范目录结构
  3. 完整的项目构建阶段
  4. 支持多种插件

2.4 Maven的依赖仲裁

  1. 按照DependencyManager版本声明进行仲裁
  2. 如无仲裁声明,则按照依赖最短路径确定版本
  3. 若相同路径,则按照第一声明优先原则

2.5 Maven依赖排除

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
   </exclusions>
</dependency>

3. 二方库

3.1 什么是二方库

  1. 一方库 本工程中的各模块的相互依赖
  2. 二方库 公司内部的依赖库,一般指公司内部的其他项目发布的jar包
  3. 三方库 公司之外的开源库,比如apache、alibaba、google等

3.2 二方库GroupID、ArtifactID定义

1.GroupID 
格式:com.{公司/BU}.业务线{.子业务线},最多4级 
正例 com.taobao.jstorm 或者com.alibaba.dubbo.register
2. ArtifactID
格式:产品线名-模块名。语义不重复不遗漏,先到中央仓库去查证一下
正例 dubbo-client /fastjson-api /jstorm-tool

image.png

3.3 二方库中Version的命名方式

二方库版本号命名方式:主版本号.次版本号.修订号 image.png

3.4 二方库引用规约

  1. 线上应用不要依赖sNAPSHOT版本
  2. 正式发布的类库必须去中央仓库查证,使RELEASE版本号有延续性
  3. 正式发布的类库版本号不允许覆盖升级
  4. 二方库的新增或升级,保证除功能点之外的其他jar包仲裁结果不变
  5. 二方库里定义的枚举类型,参数中可以使用,返回值不允许使用
  6. 依赖一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致
  7. 禁止在依赖中出现相同的GroupId,相同的ArtifactId,但是不同的Version

3.5 二方库引用建议

  1. 底层基础技术框架、核心数据管理平台、或近硬件端系统谨慎引入第三方实现
  2. 所有版本仲裁使用<dependencyManagement> 语句块
  3. 二方库不要有配置项
  4. 不要使用不稳定的工具包或者Utils类

3.6 二方库发布原则

image.png

4. TCP/IP

4.1 TCP/IP的五层结构

image.png

4.2 IP协议的报头

image.png

4.3 TCP协议的报头

image.png

4.4 TCP的三次握手

4.4.1 为什么需要三次握手?

  1. 信息对等
  2. 防止超时

4.4.2 回答好三次握手

image.png

image.png

4.5 TCP的四次挥手断开连接

image.png

image.png

image.png

4.6 高并发服务器参数调优

image.png

补充

问题:各个图都是在什么阶段用?
1. 用例图 需求分析阶段
2. 状态图 设计阶段
3. 类图 开发前
4. 时序图 开发前、开发中
5. 活动图 需求分析后期