编程思想和技术体系建立
1. 编码规约(阿里规范---熟读)
2. 面向对象思想(继承、封装、多态)
3.解耦(高内聚 低耦合)
4.重构
5.设计原则
单一原则
开闭原则
6.面向接口编程
如:1. jdk1.8函数式编程
2. lombok实现@Sel4j接口 ---> 实现方式两种 Log4j 或 LogBack
7.约定>配置>编码
8.分层思想 ---解耦
9.流式计算、链式编程
.....
面向对象、面向接口、面向切面、面向资源(restful)
1. 面向对象:一切皆对象,对象把程序和数据封装起来提供对外访问的能力。
封装:通过控制访问权限来控制对象之间的互访权限 public private protected
有利于程序的可维护性,有利于应用程序的解耦。
继承:子类具有自己特有的属性和方法,并且子类使用父类的方法也可以覆盖(重写)父类方法,在某些语言中还支持多继承,但是也带来了覆盖的复杂性。
继承是代码复用的基础机制、
多态:
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
多态存在的三个必要条件
- 继承
- 重写
- 基类引用指向派生类对象(引用还是指向基类)
2. 面向接口编程
接口是一种规范和约束,更高层的抽象更像是一类行为,面向接口编程只是代码层体现的一种格式体现而已,真正的面向接口设计更贴近面向行为编程。
面向接口的好处是耦合性低
3. 面向切面编程 AOP
通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术
举例:日志、全局异常处理、事务处理、性能统计
@ControllerAdvice + exception 全局异常处理
4. 面向资源编程 restful
- 在REST中的一切都被认为是一种资源。
- 每个资源由URI标识。
- 使用统一的接口。处理资源使用POST,GET,PUT,DELETE操作类似创建,读取,更新和删除(CRUD)操作。
- 无状态。每个请求是一个独立的请求。从客户端到服务器的每个请求都必须包含所有必要的信息,以便于理解。
- 通信都是通过展现。例如XML,JSON
事务影响数据库QPS(每秒查询数)
1. @Transactional 本地事务 多个写操作
2. 分布式事务--微服务 跨数据库,不同服务
阿里seata
轻量级
补偿机制、回滚机制
工具类
- hutool
- guava---google
- fastjson
docker
- 镜像
- 容器
- 仓库
设计模式
单例 ---> IOC
工厂
策略(多态) ----> treeSet
静态代理 ---->java Thread
动态代理 ----->AOP
装饰模式 ------>IO各种流
模板设计 ------->抽象类protected
门面设计 -------->facede
log4j + slf4j比较
(1)log4j的配置
1:新建resources,里面新建log4j.properties:
不用改代码,修改日志级别,方便调试;
2:不用记忆,网上粘贴复制即可;
3:日志级别:
Error/Warning: 严重的错误级别
INFO: 关键信息,如: 某个玩家捡了某个道具,打了什么装备.
Debug: 调试信息。 调试时看到,不是调试就关闭不输出.
(2)log4j的使用
注意: 设置的级别 <= 当前级别的等级,则输出.
如: 设置的Debug,那么DEBUG INFO ERROR WARNING就会输出出来;
设置的是INFO,那么INFO ERROR WARNING就会输出;
所以,开发时选择Debug,还希望可以输出控制台; 发布时选择INFO,直接输出到文件,不输出控制台;
(3)slf4j的Log日志的使用
1: slf4j是基于log4j的更上层的一个系统,用法和log4j是一样的;
2: 支持格式化的输出,减少+字符串的输出。 减少字符串对象的创建