算法思想
十大经典排序算法
1. 冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1 | function bubbleSort(arr) { |
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1 | function bubbleSort(arr) { |
处理一段业务逻辑,首先要确保数据输入的正确性,所以需要先对数据进行检查,保证数据在语义上的正确性,再根据数据进行下一步的处理。
前端可以通过 js 程序校验数据是否合法,后端同样也需要进行校验。而后端最简单的实现就是直接在业务方法中对数据进行处理,但是不同的业务方法可能会出现同样的校验操作,这样就出现了数据的冗余。为了解决这个情况,JSR 303 出现了。
JSR 303 使用 Bean Validation,即在 Bean 上添加相应的注解,去实现数据校验。这样在执行业务方法前,都会根据注解对数据进行校验,从而减少自定义的校验逻辑,减少代码冗余。
1 | <dependency> |
如果在一个git仓库中嵌套了一个git仓库,那么被嵌套的git仓库的改动,不能被大git仓库检测到。
解决方案:
可以使用submodule,当引入子仓库时,使用如下命令即可:
1 | git submodule add https://github.com/子仓库 |
作用类似git clone,但是他会在父仓库的下面新建.gitmodules文件,并且包含以下内容
1 | [submodule "apps/firstApp"] |
这一段表示子仓库的位置,以及子仓库的远程仓库的地址。
删除子仓库并且commit之后,这个文件和这个子仓库有关的部分就会消失。
本质和第一个方案类似,它会把总仓库内的所有内容拉取下来(包含子仓库):
1 | git clone --recursive https://github.com/总仓库 |
这两种方案可以同时维护两个仓库,字仓库也可以随时拉取更新
删除子仓库
git submodule deinit <submodule_path>git rm <submodule_path>git addgit commit -m "Remove submodule <submodule_path>"Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等。
Spring Cloud Gateway 具有如下特性:
到底为什么要用 IoC 和 AOP
IoC 解决了以下问题:
AOP 解决了以下问题: