工程结构规约
今天开始,逐步进入工程实操阶段。
一、作业评审
首先孤尽老师对上周的作业做了讲解,对集中图的用途做了进一步的阐述。
1.1 用例图
关注角色和角色要做的事情,事情之间有extend关系和include关系。
extend是继承关系,可以理解成选做(选择其中一种方式做);
include是包含关系,用户可以做其中的所有事情。
1.2 类图
关注用例描述中识别出的业务对象,他们的属性和行为,以及他们之间的关系。
学习类之间的六种关系:实现、继承、组合、聚合、依赖、关联。
1.3 时序图
关注一个业务流程中,有哪些对象在协作,随着时间的推进,系统在做什么。
1.4 状态图
关注状态和状态迁移条件。
1.5 活动图
活动图(UML家族)和流程图之间的关系,活动图多了泳道、并发等。
活动图关注由多少系统参与了协作,每个业务活动瞬间判断,循环是怎么进行的。
二、应用分层
2.1 分层的意义
可扩展、可维护。
2.2 MVC
重点在于M,M包括数据和数据的处理逻辑(大家理解会不一样)。
2.3 分成异常处理
这个我先做个记录,在项目中如何落地,需要考虑一下。
2.4 分层领域模型
DO、DTO、BO、Query、VO如何去用,也是在项目中落地的事情,如果每一层都这么去搞,项目中来回转,会降低开发效率。
三、深入理解MAVEN
3.1 maven主要功能
依赖管理:基于仓库
规范目录结构: 约定优于配置
完整的项目构建阶段: task组合
支持多种插件
MAVEN依赖仲裁
- 按照DependencyManager版本声明进行仲裁
- 如无仲裁声明,则按照依赖最短路径确定版本
- 若相同路径,则按照第一声明优先原则
依赖冲突解决方案
依赖resolve
可以使用mvn:resolve来看一下发布jar包所有的依赖情况。
TCP/IP
了解协议后,对服务器配置,具有很好的指导意义。
服务器配置最佳实践
高并发服务建议
实践指导:调小TCP协议的time_wait超时时间
原理说明:TCP协议的time_wait超时时间操作系统默认是240s, 过长,可能端口资源被占满,无法建立新的连接。
调大服务器最大句柄数
实践指导:调整最大句柄数为65535
原理说明:linux一个连接对应一个fd,而默认最大配置为1024,连接数很大时,无法建立新的连接。
JVM环境参数配置
实践指导1:配置XX:+HeapDumpOnOutOfMemoryError参数 原理:JVM碰到OOM时,可以输出dump信息
实践指导2:JVM的Xms和Xmx设置一样大 原理: 避免在GC后调整堆大小带来的压力