1、Spring could和Spring boot
答:
Spring Could:
Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。
我所理解的Spring Cloud就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等操作,而Spring Cloud为我们提供了一套简易的编程模型,使我们能在Spring Boot的基础上轻松地实现微服务项目的构建。
Spring Boot:
Spring Boot的设计是为了让你尽可能快的跑起来Spring 应用程序并且尽可能减少你的配置文件。目的是用来简化新Spring 应用的初始搭建以及开发过程。
Spring Boot总结一下以下几点:
(1)为所有 Spring 开发提供一个更快更广泛的入门体验。
(2)零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。
(3)集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。
(4)提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。
(5)Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备。
2、Spring
答:Spring是一个开源框架,Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
https://blog.csdn.net/qq_22583741/article/details/79589910
3、Spring的注解
答:https://www.cnblogs.com/xiaoxi/p/5935009.html
4、Spring的IOC
答:IOC控制反转,把创建对象的权利交给框架来,用于削减程序的耦合,即降低程序中的依赖关系。
https://www.cnblogs.com/xdp-gacl/p/4249939.html
5、Spring的AOP
答:面向切面编程。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
https://blog.csdn.net/q982151756/article/details/80513340
6、Mybatis
答:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
https://blog.csdn.net/lj1314ailj/article/details/79712305?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160443994819215646552585%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160443994819215646552585&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-3-79712305.first_rank_ecpm_v3_pc_rank_v2&utm_term=mybatis&spm=1018.2118.3001.4449
7、线程的建立
答:使用Thread类或者使用Runnable接口
8、线程死锁
答:产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。
(1)互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
(2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。
(3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
(4)循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。
9、如何避免线程死锁
答:(1)加锁顺序(线程按照一定的顺序加锁)
(2)加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
(3)死锁检测
10、String、StringBuffer和StringBuilder的区别
答:(1)运行速度:StringBuilder > StringBuffer > String。String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
(2)在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。
(3)String:适用于少量的字符串操作的情况。StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况。
https://www.cnblogs.com/su-feng/p/6659064.html
13、=和==和===的区别
答:Java中=是赋值运算,而==判断值是否相等,===是判断的是值及类型是否完全相等,而===只在JavaScript中有。
https://blog.csdn.net/qq_42244874/article/details/80786949
14、String A = “hello”和String B = new String(“hello”)是否一样
答:不一样
String A="hello" 是声明一个String类型的 变量,变量的值是hello
String B = new String("hello") 是声明一个String类型的对象,对象的内容是hello
15、索引类型有哪些
答:单例索引,唯一索引,主键索引,组合索引,全文索引