项目笔记草稿

  1. 数据库外键去除

    1. 外键检查降低性能
    2. 耦合性太高,有时候两个关系表不一定在同一个库
  2. SpringBoot自动装配:

    1. @SpringBootApplication
      1. @SpringBootConfiguration
      2. @ComponentScan:排除一些bean
      3. @EnableAutoConfiguration
        1. @AutoConfigurationPacakge
        2. @Import(AutoConfigurationImportSelector.class)
          1. META-INF/spring.factories
            1. AutoConfig
              1. @EnableConfigurationProperties
              2. @ConditionalOnXxx
              3. @AutoConfigureAfterXxx
  3. Spring事务传播

    • REQUIRED

    • REQUIRES_NEW:调用方(上层)发生异常不会影响被调用方

    • MANDATORY

    • SUPPORTS

    • NEVER

    • NOT_SUPPORTED

    • NESTED

      • 如果当前已有事务,则挂起当前事务,然后开启一个子事务(SAVEPOINT)
        • 调用者(父事务)提交,所有子事务(savepoint)提交
        • 调用者(父事务)回滚,所有子事务(savepoint)回滚
        • 子事务(savepoint)提交和回滚,不影响父事务(其它子事务)的提交和回滚
        • 只有父事务发生提交和回滚后,子事务才会被其它事务可见
      • 如果当前没事务,同 REQUIRED
  4. SpringBoot 默认提供的 spring.factories 里面包含了事务配置(TransactionAutoConfiguration),无需 @EnableTransactionManager

  5. AOP 实现每个调用记录调用时间与日志打印

  6. 分类连接查询的一对多关系使用 MyBatis 的 ResultMap 直接实现

  7. 用延时队列替换springboot scheduler 实现订单超时关闭

  8. nginx

    1. 模型:master-workers-connections

    2. 信号通信

    3. IO多路复用、非阻塞

    4. 配置文件

                           nginx.conf 配置结构
      +----------------------------------------------------------------------+
      | main全局配置                                                          |
      | +-----------------------------------------------------------------+  |
      | |event 配置工作模式以及连接数                                         |  |
      | +-----------------------------------------------------------------+  |
      |                                                                      |
      | +-----------------------------------------------------------------+  |
      | |http http模块相关配置                                              |  |
      | |                                                                 |  |
      | |                                                                 |  |
      | | +-------------------------------------------------------------+ |  |
      | | |server 虚拟主机配置,可以有多个                                  | |  |
      | | |                                                             | |  |
      | | | +---------------------------------------------------------+ | |  |
      | | | |location 路由规则,表达式                                   | | |  |
      | | | |                                                         | | |  |
      | | | +---------------------------------------------------------+ | |  |
      | | |                                                             | |  |
      | | | +---------------------------------------------------------+ | |  |
      | | | |upstream 集群,内网服务器                                   | | |  |
      | | | |                                                         | | |  |
      | | | +---------------------------------------------------------+ | |  |
      | | +-------------------------------------------------------------+ |  |
      | +-----------------------------------------------------------------+  |
      +----------------------------------------------------------------------+
      
      
      • location:静态资源
    5. nginx -s stop 暴力停止

    6. nginx -s quit 优雅停止

    7. nginx -t 检查配置文件格式

    8. nginx -c file-path 设置配置文件

    9. 利用linux定时任务定时切割日志

    10. 指令

      • include:将指定文件内容拷贝到当前配置文件中替换当前include
  9. redis

    • 无磁盘主从赋值,直接写socket,不写RDB文件
    • max memory 选项设置最大内存
    • MAXMEMORY POLICY 设置淘汰策略
      • valatile-lru:在设置了超时时间的key里进行lru删除
      • allkeys-lru:在所有key里进行lru
      • valatile-lfu
      • allkeys-lfu
      • valatile-random
      • allkeys-random
      • valatile-ttl:将快要过期的删除
      • noeviction:不删除
    • 缓存穿透:布隆过滤器缺点,一旦某个hash添加之后就无法删除,因为可能有多个数据hash到同一个槽,无法确定该槽是否有多个数据;另外还需要额外维护一层

   转载规则


《项目笔记草稿》 阿钟 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录