
面试
文章平均质量分 55
三郎君
写文章勤分享:巩固自己,帮助他人,何乐而不为!
展开
-
Java的版本区别
1:Java的版本区别 常用的 java 程序分为 Java SE、java EE、Java ME三个版本,介绍如下:1. Java SE(Java Platform,Standard Edition)java se 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE是基础包,但是也包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。2. ja原创 2021-03-22 17:20:31 · 642 阅读 · 0 评论 -
雪崩问题
雪崩问题微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。如果此时,某个服务出现异常:例如微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞:服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。这就好比,一个汽车生产线,生产不原创 2021-03-21 22:25:55 · 196 阅读 · 0 评论 -
详细搭建 Mybatis 开发环境和入门工程(必会)
详细搭建 Mybatis 开发环境和入门工程(必会)创建 maven 工程添加 Mybatis3.4.5 的坐标编写 User 实体类编写持久层接口 IUserDao编写持久层接口的映射文件 IUserDao.xml编写 SqlMapConfig.xml 配置文件编写测试类小结创建 maven 工程创建 mybatis01 的工程,工程信息如下:Groupid:com.itheimaArtifactId:mybatis01Packing:jar添加 Mybatis3.4.5 的坐标在 pom原创 2020-12-30 20:51:02 · 221 阅读 · 2 评论 -
什么是框架?框架要解决的问题?
什么是框架?框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。框架要解决的问题框架要解决的最重要的一个问题是技术整合的问题,在 J2EE 的 框架中,有着各种各样的技术,不同的软件企原创 2020-12-30 20:14:51 · 1729 阅读 · 0 评论 -
负载平衡的意义什么?
负载平衡的意义什么?在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程...原创 2020-12-16 14:19:06 · 666 阅读 · 0 评论 -
SpringBoot和SpringCloud的区别?
SpringBoot和SpringCloud的区别?SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot ,属于依赖的关系.Spring原创 2020-12-14 11:19:40 · 394 阅读 · 0 评论 -
Eureka和zookeeper都可以提供服务注册与发现的功能,两个的区别是什么?
Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用)1.当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新选leader。问题在于,选取leader时间过长,30 ~ 120s,且选取期间z原创 2020-12-14 11:17:09 · 310 阅读 · 0 评论 -
SpringCloud有什么优势?
SpringCloud有什么优势?使用 Spring Boot 开发分布式微服务时,我们面临以下问题:(1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。(2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。(3)冗余-分布式系统中的冗余问题。(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。(原创 2020-12-14 11:13:24 · 771 阅读 · 0 评论 -
什么是微服务?
什么是微服务?微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API),每个服务都围绕着具体的业务进行构建,并且能够被独立的构建在生产环境、类生产环境等。另外,应避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中原创 2020-12-14 11:09:26 · 109 阅读 · 0 评论 -
什么是SpringCloud?
什么是SpringCloud?Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。...原创 2020-12-14 11:06:08 · 113 阅读 · 0 评论 -
Redis事务详细介绍
Redis事务详细介绍Redis事务功能是通过MULTI、EXEC、DISCARD和WATCH 四个原语实现的Redis会将一个事务中的所有命令序列化,然后按顺序执行。1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”, 所以 Redis 的内部可以保持简单且快速。2.如果在一个事务中的命令出现错误,那么所有的命令都不会执行3.如果在一个事务中出现运行错误,那么正确的命令会被执行。1)MULTI命令用于开启一个事务,它总是返回OK。MULTI执行之后,客户原创 2020-12-14 11:03:30 · 143 阅读 · 0 评论 -
为什么Redis的操作是原子性的,怎么保证原子性的?
为什么Redis的操作是原子性的,怎么保证原子性的?对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis的操作之所以是原子性的,是因为Redis是单线程的。Redis本身提供的所有API都是原子操作,Redis中的事务其实是要保证批量操作的原子性。多个命令在并发中也是原子性的吗?不一定, 将get和set改成单命令操作,incr 。使用Redis的事务,或者使用Redis+Lua==的方式实现...原创 2020-12-14 10:58:46 · 5503 阅读 · 0 评论 -
Redis 常见性能问题和解决方案?
Redis 常见性能问题和解决方案?(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内(4) 尽量避免在压力很大的主库上增加从库(5) 主从复制不要用图状结构,用单向链表结构更为稳定, 即: Master <- Slave1 <- Slave2 <-Slav原创 2020-12-14 10:55:46 · 365 阅读 · 0 评论 -
Redis 为什么是单线程的?
Redis 为什么是单线程的?官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)Redis利用队列技术将并发访问变为串行访问1)绝大部分请求是纯粹的内存操作(非常快速)2)采用单线程,避免了不必要的上下文切换和竞争条件3)非阻塞IO优点:速度快,因为数据存在内存中,类似于HashMap,HashMap的原创 2020-12-14 10:52:19 · 247 阅读 · 0 评论 -
redis的过期策略以及内存淘汰机制
redis的过期策略以及内存淘汰机制redis采用的是定期删除+惰性删除策略。为什么不用定时删除策略?定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要将时间应用在处理请求,而不是删除key,因此没有采用这一策略.定期删除+惰性删除是如何工作的呢?定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(原创 2020-12-14 10:44:04 · 114 阅读 · 0 评论 -
redis的数据类型,以及每种数据类型的使用场景?
redis的数据类型,以及每种数据类型的使用场景回答:一共五种(一)String这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。(二)hash这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。(三)list使用List的数据结构,可以做简单的消息队列原创 2020-12-12 10:43:51 · 426 阅读 · 0 评论 -
单线程的?redis为什么这么快
单线程的redis为什么这么快(一)纯内存操作(二)单线程操作,避免了频繁的上下文切换(三)采用了非阻塞I/O多路复用机制原创 2020-12-12 10:42:14 · 112 阅读 · 0 评论 -
Memcache与Redis的区别都有哪些?
Memcache与Redis的区别都有哪些?1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,redis可以持久化其数据2)、数据支持类型 memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 ,提供list,set,zset,hash等数据结构的存储3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用原创 2020-12-12 10:41:13 · 316 阅读 · 0 评论 -
热点数据和冷数据是什么?
标题热点数据和冷数据是什么?热点数据,缓存才有价值对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。频繁修改的数据,看情况考虑使用缓存对于上面两个例子,寿星列表、导航信息都存在一个特点,是信息修改频率不高,读取通常非常高的场景。对于热点数据,比如我们的某IM产品,生日祝福模块,当天的寿星列表,缓存以后可能读取数十万次。再举个例子,某导航产品,我们将导航信息,缓存以后可能读取数百万次。数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存原创 2020-12-12 10:40:19 · 4857 阅读 · 0 评论 -
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题一、缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决办法:大多数系统设计者考虑用加锁( 最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存原创 2020-12-12 10:38:24 · 345 阅读 · 0 评论 -
Redis持久化机制
Redis持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。**实现:**单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制原创 2020-12-12 10:35:08 · 92 阅读 · 0 评论 -
mysql有哪些数据类型?
mysql有哪些数据类型1、整数类型包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。例子,假定类型设定为INT(5),原创 2020-12-12 10:33:07 · 1542 阅读 · 0 评论 -
解释更多 Staters 的内容?
能否举一个例子来解释更多 Staters 的内容?让我们来思考一个 Stater 的例子 -Spring Boot Stater Web。如果你想开发一个 web 应用程序或者是公开 REST 服务的应用程序。Spring Boot Start Web 是首选。让我们使用 Spring Initializr 创建一个 Spring Boot Start Web 的快速项目。Spring Boot Start Web 的依赖项下面的截图是添加进我们应用程序的不同的依赖项依赖项可以被分为:S原创 2020-12-10 14:02:27 · 463 阅读 · 0 评论 -
Spring Boot、Spring MVC 和 Spring 有什么区别?
Spring Boot、Spring MVC 和 Spring 有什么区别?1、SpringSpring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。2、Spring MVCSpring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView和 ViewResol原创 2020-12-10 13:58:33 · 2557 阅读 · 0 评论 -
如何重新加载Spring Boot上的更改,而无需重新启动服务器?
如何重新加载Spring Boot上的更改,而无需重新启动服务器?这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能原创 2020-12-10 13:54:24 · 581 阅读 · 0 评论 -
如何集成 Spring Boot 和 ActiveMQ?
如何集成 Spring Boot 和 ActiveMQ?对于集成 Spring Boot 和 ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。它只需要很少的配置,并且不需要样板代码。原创 2020-12-10 13:51:44 · 494 阅读 · 0 评论 -
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。bootstrap 配置文件有以下几个应用场景。使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;一些固定的不能被覆盖的属性原创 2020-12-10 13:50:46 · 2086 阅读 · 1 评论 -
SpringBoot 实现热部署有哪几种方式?
SpringBoot 实现热部署有哪几种方式?主要有两种方式:1 Spring Loaded2 Spring-boot-devtools原创 2020-12-10 09:37:07 · 623 阅读 · 1 评论 -
你如何理解 Spring Boot 中的 Starters?springboot常用的starter有哪些?
你如何理解 Spring Boot 中的 Starters?Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入spring-boot-starter-data-jpa 启动器依赖就能使用了。springboot常用的starter有哪些?spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支原创 2020-12-09 16:21:05 · 1452 阅读 · 0 评论 -
如何使用Spring Boot实现异常处理?
如何使用Spring Boot实现异常处理?Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。我们通过实现一个ControlerAdvice类,来处理控制器类抛出的所有异常。原创 2020-12-09 16:19:21 · 284 阅读 · 0 评论 -
Spring Boot中的监视器是什么?
Spring Boot中的监视器是什么?Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。...原创 2020-12-09 16:18:32 · 1679 阅读 · 0 评论 -
Spring Boot 需要独立的容器运行吗?
Spring Boot 需要独立的容器运行吗?可以不需要,内置了 Tomcat/ Jetty 等容器。原创 2020-12-09 16:17:21 · 1502 阅读 · 0 评论 -
如何在Spring Boot启动的时候运行一些特定的代码?
如何在Spring Boot启动的时候运行一些特定的代码?如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。CommandLineRunner:启动获取命令行参数...原创 2020-12-09 16:16:10 · 701 阅读 · 0 评论 -
如何理解 Spring Boot 中的 Starters?
如何理解 Spring Boot 中的 Starters?Starters是什么:Starters命名:Starters分类:Starters是什么:Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入springboot-starter-data-jpa启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一原创 2020-12-09 16:14:13 · 3865 阅读 · 0 评论 -
运行Spring Boot有哪几种方式?
运行Spring Boot有哪几种方式?1 打包用命令或者放到容器中运行2 用 Maven/Gradle 插件运行3 直接执行 main 方法运行原创 2020-12-09 16:10:23 · 2238 阅读 · 0 评论 -
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下3个注解:@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(excl原创 2020-12-09 16:09:23 · 2182 阅读 · 0 评论 -
什么是SpringBoot?为什么要用SpringBoot?
什么是SpringBoot?为什么要用SpringBoot?用来简化spring应用的初始搭建以及开发过程使用特定的方式来进行配置(properties或yml文件)创建独立的spring引用程序 main方法运行嵌入的Tomcat 无需部署war文件简化maven配置自动配置spring添加对应功能starter自动化配置spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用Spring Boot 优点非常多,如:一、原创 2020-12-09 16:07:11 · 510 阅读 · 0 评论 -
Mybatis的一级、二级缓存是什么?
Mybatis的一级、二级缓存:(1)一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session进行flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。(2)二级缓存:与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要原创 2020-12-09 16:04:29 · 698 阅读 · 2 评论 -
三郎数据结构算法学习笔记:如何根据序列构建平衡二叉搜索树?
如何根据序列构建平衡二叉搜索树?什么是平衡二叉搜索树(AVL)?1、AVL树的定义2、AVL树的特点什么是右单旋转?什么是左单旋转?什么是双旋转?RR RL LR什么意思?实例题目过程什么是平衡二叉搜索树(AVL)?1、AVL树的定义AVL树又称平衡二叉搜索树,它能保证二叉树高度相对平衡,尽量降低二叉树的高度,提高搜索效率2、AVL树的特点(1)AVL的左右子树高度之差的绝对值不超过1(2)树中的每个左子树和右子树都是AVL树(3)每个节点都有一个平衡因子,任一节点的平衡因子只能是(-1、0原创 2020-12-08 09:37:58 · 3167 阅读 · 5 评论 -
解释Spring支持的几种bean的作用域。
解释Spring支持的几种bean的作用域。Spring容器中的bean可以分为5个范围:(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。原创 2020-12-07 15:49:28 · 1126 阅读 · 0 评论