最多宝藏 最多宝藏 问题描述 寻宝队来到了埋藏宝藏的山洞入口,根据藏宝图显示,山洞中的藏宝室按照二叉树的形式分布,除与山洞入口相连的root藏宝室外,每个藏宝室有且只有一个"父’藏宝室相联,藏宝室之问被安装了特殊监控装置,如果拿了两个直接相联的藏宝室的宝物或者拿了root藏宝室的宝物,藏宝洞的大门将会永远关闭,给定二叉树的root,返回寻宝队可以成功从藏宝洞中最多取出的宝物数量。 代码实现 2022-05-26 Software DataStruct 树
Dubbo 启动时检查 Dubbo 启动时检查 Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true",可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。 另外,如果你的 Spring 容器是懒加载的,或者通过 2022-05-26 Software BackEnd Distributed Dubbo
Maven Dependency scope Maven Dependency scope scope的分类 compile(编译依赖范围):如果没有指定,就会默认使用该依赖范围,使用此依赖范围的Maven依赖,对于编译,测试,运行三种classpath都有效。 test(测试依赖范围):使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖,典型例子是JUnit,它只有在编译测 2022-05-26 Software Language Java Maven
Maven 原理 Maven 原理 依赖加载规则 Maven 解析 pom.xml 文件时,同一个 jar 包只会保留一个,如果面对多个版本的jar包则使用一下规则处理。 依赖路径最短优先原则:一个项目Demo依赖了两个jar包,其中A-B-C-X(1.0),A-D-X(2.0),由于X(2.0)路径最短,所以项目使用的是X(2.0) pom文件中申明顺序优先:当路径长度相同时,maven会根据pom文件声明 2022-05-26 Software Language Java Maven
Spring IoC 控制反转 Spring IoC 控制反转 IoC本质 控制反转,是把传统上由程序代码直接操控的对象的调用权交给容器,由容器来创建对象并管理对象之间的依赖关系,DI是对IoC更准确的描述,即由容器动态的将某种依赖关系注入到组件之中。 IoC 容器 BeanFactory:是一个工厂类,它是一个负责生产和管理bean的工厂,在Spring中,BeanFactory是IoC容器的核心接口,它的职责包括:实例 2022-05-26 Software Language Java SpringFramework Spring
食物链 食物链 问题描述 如图所示为某生态系统的食物网示意图,现在给你 n 个物种和 m 条能量流动关系,求其中的食物链条数。 物种的名称为从 1 到 n 编号,M 条能量流动关系形如。 123456a1 b1a2 b2a3 b3......am-1 bm-1am bm 其中 ai bi 表示能量从物种 ai 流向物种 bi,注意单独的一种孤立生物不算一条食物链。 代码实现 1234567891 2022-05-26 Software Algorithm DFS
至多包含K个不同字符的最长子串 至多包含K个不同字符的最长子串 问题描述 给定一个字符串 s,找出至多包含 k 个不同字符的最长子串 T 123456789示例 1:输入: s = "eceba", k = 2输出: 3解释:则 T 为 "ece",所以长度为 3示例 2:输入: s = "aa", k = 1输出: 2解释:则 T 为 "aa" 2022-05-26 Software Algorithm 滑动窗口
Dubbo 直连提供者 Dubbo 直连提供者 Dubbo 中点对点的直连方式。 在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。 通过 XML 配置 如果是线上需求需要点对点,可在 <dubbo:reference> 中配置 url 指向提供 2022-05-26 Software BackEnd Distributed Dubbo
Dubbo 多版本 Dubbo 多版本 在 Dubbo 中为同一个服务配置多个版本。 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。 可以按照以下的步骤进行版本迁移: 在低压力时间段,先升级一半提供者为新版本。 再将所有消费者升级为新版本。 然后将剩下的一半提供者升级为新版本。 老版本服务提供者配置: 1<dubbo:service interface=" 2022-05-26 Software BackEnd Distributed Dubbo
Spring MVC 全局异常处理 Spring MVC 全局异常处理 SpringBoot中,@ControllerAdvice 即可开启全局异常处理,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用@ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。 自定义异常类 123456789101112131415161718192021222324252627282930 2022-05-26 Software Language Java SpringFramework SpringMVC
Spring Boot 概述与原理 Spring Boot 概述与原理 Spring Boot概述 Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速,敏捷地开发新一代基于 Spring 框架的应用程序,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。 Spr 2022-05-26 Software Language Java SpringFramework SpringBoot
分布式事务 分布式事务 分布式事务是指事务的参与者,支持事务的服务器,资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 例如在大型电商系统中,下单接口通常会扣减库存,减去优惠,生成订单 id,而订单服务与库存,优惠,订单 id 都是不同的服务,下单接口的成功与否,不仅取决于本地的 db 操作,而且依赖第三方系统的结果,这时候分布式事务就保证这些操作要么全部成功,要么全部失败,本质上来说,分布 2022-05-26 Software BackEnd Distributed
得到目标值的最少行动次数 得到目标值的最少行动次数 问题描述 将 sourceX, sourceY 转换成 targetX, targetY 最少需要多少次计算,给定两个数字(x, y),允许以下两种计算: 同时对两个数加 1,即(x, y) -> (x+1, y+1) 同时对两个数乘 2,即(x, y) -> (x2, y2) 求要将(x, y)转换成(X, Y),至少需要多次计算,如果不能转换,返回 2022-05-26 Software Algorithm BFS
JVM 内存结构 JVM 内存结构 Java 虚拟机的内存空间分为 5 个部分: 程序计数器。 Java 虚拟机栈。 本地方法栈。 堆。 方法区。 注意:JDK 1.8 同 JDK 1.7 比,最大的差别就是:元空间(元数据区)取代了永久代,元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现,不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。 程序计数器(PC 寄存 2022-05-26 Software Language Java JavaSE JVM
Mybatis 初始化 Mybatis 初始化 Spring 环境 pom.xml 12345678910<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version></de 2022-05-26 Software Language Java Mybatis
Maven 插件 Maven 插件 Spring Boot spring-boot-maven-plugin插件用来打包,我们只需要在pom.xml中加入以下配置。 12345678<build> <plugins> <plugin> <groupId>org.springframework.boot</groupI 2022-05-26 Software Language Java Maven
Spring 整合Swagger Spring 整合Swagger 简介 号称世界上最流行的API框架,Restful Api 文档在线自动生成器,即API 文档与API 定义同步更新。 官网:https://swagger.io/ pom.xml 12345<dependency> <groupId>io.springfox</groupId> <artifactId&g 2022-05-26 Software Language Java SpringFramework Spring
Spring MVC 跨域 Spring MVC 跨域 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域。 资源跳转:A链接,重定向,表单提交。 资源嵌入:<link>,<script>,<img>,<frame>等dom标签,还有样式中background:url(),@font-face()等文件外链。 脚本请求:js发起的ajax 2022-05-26 Software Language Java SpringFramework 实例
Spring MVC WebMvcConfigurer Spring MVC WebMvcConfigurer WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,基于java-based方式的Spring MVC配置,需要创建一个配置类并实现WebMvcConfigurer 接口。 WebMvcConfigurerAdapter 抽象类是对Web 2022-05-26 Software Language Java SpringFramework SpringMVC
Spring Boot MVC 自动配置原理 Spring Boot MVC 自动配置原理 官方文档地址:https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configuration Spring MVC Auto-configuration Spring Boot prov 2022-05-26 Software Language Java SpringFramework SpringBoot