• 编程思想和技术体系建立


    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: 支持格式化的输出,减少+字符串的输出。 减少字符串对象的创建

  • 相关阅读:
    Linux配置dhcp自动获取ip地址
    CentOS7密码复杂度配置
    JDK切换和BurpSuite破解
    python操作Elasticsearch7.x
    mongoShake docker 部署 (mongoshake:2.6.5)
    elasticsearch 7.x 安装使用(ik,elasticsearch head )
    mongoDB -- 全文索引
    商业模式画布
    Vue全家桶--12 Vue-CLI 3.x 脚手架构建项目
    Vue全家桶--11 Webpack和Vue-Loader打包资源
  • 原文地址:https://www.cnblogs.com/qianbing/p/12746068.html
Copyright © 2020-2023  润新知