- 博客(54)
- 收藏
- 关注
原创 JVM面试题
OOM是指JVM的内存不足堆内存如果在堆中没有内存完成对象实例的分配,并且堆无法再扩展时,将抛出OutOfMemoryError异常,抛出的错误信息是“java.lang.OutOfMemoryError:Java heap space”现在的JVM可以通过-Xmx和-Xms控制堆的大小,发生在堆上的OOM可能是存在内存泄漏或者堆大小分配不合理元空间。
2024-09-29 20:47:34
337
1
原创 Seataf分布式事务的使用
三阶段中有准备阶段(CanCommit)、预提交阶段(PreCommit)、提交阶段(DoCommit)两个阶段都不能保证数据绝对的一致性,可以人工干预通过脚本自动补偿差异的信息。redo一般用于恢复已确认但未写入数据库的数据,记录的是数据修改后的值。Saga事务核心就是将长事务拆分为多个本地短事务并依次正常提交。undo一般用于事务的取消与回滚,记录的是数据修改前的值;当事务执行失败后,补偿所有已完成的事务,如。执行不通过的事务,会尝试重试事务。两阶段中有预提交阶段和提交阶段。
2024-09-04 21:30:11
748
原创 OpenFeign
OpenFeign 中的拦截器是对服务调用者(也叫消费者)调用服务提供者的过程进行拦截。Spring MVC 中的拦截器是对客户端(浏览器)请求服务端的过程进行拦截。在服务消费者项目中创建一个名称为TraceIdFeignInterceptor 的拦截器类,并让其继承RequestInterceptor类。@Slf4j@Overridelog.debug("请求拦截了");
2024-09-02 21:22:09
615
原创 Nacos配置中心动态刷新原理
nacos模式:客户端间隔10毫秒请求一次服务端,通过在请求头中携带长轮询的超时时间,默认30秒,服务端在接收到客户端的请求后,会将其挂起一段时间(30秒),在这30秒中,如果配置有变化,服务端就立即将配置相应给客户端,如果没有变化,30秒后客户端会再次请求。主要是通过服务端控制响应给客户端的响应时间,来减少客户端无效的请求。但是占用服务端的资源,服务端需要消耗大量的资源去维护和客户端之间的心跳。push模式:服务端检测到变化,主动将新配置推送给客户端,时效性高,
2024-08-29 17:16:32
660
原创 微服务面试题
ribbon.ConnectTimeout :控制连接建立的超时时间。,因为配置文件在Nacos之前加载,之后加载的配置会覆盖先前配置。ribbon.ReadTimeout:从服务端读取数据的超时时间。
2024-08-28 14:31:19
700
原创 ElasticSearch
基于线程本地变量,每个线程都有自己的 MDC,线程在处理请求时可以将上下文信息设置到 MDC 中,这些信息会和该线程相关联。当日志事件发生时,日志框架会从 MDC 中获取相应的上下文信息,并将其包含在日志中。MDC是一个线程本地的、可维护的、可传递的上下文环境。侧重于生成更多的词语组合,适用于全面细致的分词。侧重于保存语句完整,适用于精简和精准的分词。IK分词器中针对中文分词提供了。
2024-08-22 20:20:36
389
原创 JUC介绍
早期计算机CPU是单核的,为了提高CPU的利用率,减少等待时间,使用到了并发工作的理论并发就是将CPU资源合理分配给多个任务,当一个任务执行I/O操作时,转去执行其他任务。
2024-08-17 16:52:49
873
原创 RabbitMQ面试题
在发布消息时,可以将消息标记为持久化(persistent),这样消息就会被持久化存储到磁盘上面,即使RabbitMQ服务器重启,消息也不会丢失。当消费者拉取消息后,由于网络或者服务器宕机的原因,MQ没有及时响应导致超时,MQ会认为第一次消费失败再去发送一次消息,导致发送消息重复。在消费端可以设置手动ACK模式,手动确认消息是否被正常处理,若存在异常或者未运行,则消息超时后不会被删除,会被重新投递。当消息不被正常使用时,可以设置过期时间或死信交换器将消息转入死信队列中,分析处理这些消息。
2024-08-14 20:31:36
1313
原创 如何保证数据不丢失?(死信队列)
用来存储死信的队列,并且队列中只由死信构成的消息队列是死信队列死信队列通常会绑定一个普通业务队列,当业务队列中的消息变成死信时会通过死信交换机传到死信队列中,我们就可以通过监视死信队列,对消息队列进行一些补偿,这个过程需要手动干预。
2024-08-14 19:58:44
453
原创 交互机与队列的介绍
扇型交换机,这个交换机没有路由概念,就算绑了路由键也是无视的,这个交换机在接收到消息后,会直接转发到绑定它的所有队列。主题交换机,这个交换机其实跟直连交换机流程差不多,但他的特点是它的路由键和绑定键之间有规则。所以主题交换机也就实现了扇形交换机的功能,和直连交换机的功能。直连型交互机,根据RoutingKey路由到不同的队列。
2024-08-14 08:51:33
379
原创 Redis相关面试题(二)
缓存击穿:是指当当某一个key的缓存过期时大并发量的请求同时访问key,瞬间击穿服务器直接访问到数据库,使得数据库处于负载情况缓存穿透:是指缓存服务器中没有缓存数据,数据库中也没用符合条件的数据,导致业务系统每次都绕过缓存服务器查询下游的数据库,缓存服务器完全失去作用缓存击穿是只击穿服务器端访问数据库,而缓存穿透是服务器端和数据库都没有的情况缓存雪崩:是指当大量缓存同时过期或者缓存服务宕机,所有请求都直接访问数据库,造成数据高负载,影响性能,甚至数据库宕机对于缓存穿透的防止常用的是布隆过滤器。
2024-08-08 14:22:19
665
1
原创 Session共享方法
在Web开发中,会话(Session)管理是跟踪用户与服务器之间交互的一种常见方法。Session 共享通常指的是在一个应用集群或多个应用服务之间保持用户的会话状态一致。这在负载均衡、微服务架构或者分布式系统中尤为重要。
2024-08-08 14:10:02
712
原创 关于Redis的面试题(一)
Redis是一个开源的远程字典服务,使用C语言编写、支持网络调用、基于内存亦可持久化的Key-Value数据库,并提供多种语言的API。
2024-08-05 15:24:01
817
原创 java面试题Spring部分(四)
*singletonObjects是一级缓存,存储的是完整创建好的单例bean对象。**在创建一个单例bean时,会先从singletonObjects中尝试获取该bean的实例,如果能够获取到,则直接返回该实例,否则继续创建该bean。**earlySingletonObjects是二级缓存,存储的是尚未完全创建好的单例bean对象。**在创建单例bean时,如果发现该bean存在循环依赖,则会先创建该bean的"半成品"对象,并将"半成品"对象存储到earlySingletonObjects中。
2024-08-03 09:21:04
1191
原创 Docker常用命令
拉去镜像推送镜像. 根据Dockerfile构建镜像从容器创建镜像docker images / dokcer image ls 列出本地镜像查找镜像显示镜像的历史记录> 保存docker rmi删除镜像 / dokcer image rm 删除多个镜像docker image prune 删除未使用的镜像导出镜像docker load -i 导入镜像docker tag 为镜像打标签。
2024-08-02 21:18:37
1153
原创 Java8 Stream操作流10条常用方法
map方法将每个元素转换成另一个类型,并返回新的流。可以将流中的元素累计起来,并生成一个单一的结果。用于收集流中的元素,并将他们转换成其他类型。与map类似,可以用来扁平化多层嵌套。检查是否有任何元素符合给定的条件。可以跳过流中的前n个元素。可以限制流中的元素数量。对流中的元素进行排序。
2024-07-29 09:57:54
494
原创 java面试题(第二天)Spring部分
Spring是一个非常强大的企业级Java开发框架,提供了一系列模块来支持不同的应用程序,如依赖注入、面向切面编程、事务管理、Web应用程序开发等。而SpringBoot的出现简化了Spring应用程序的开发和部署,特别是构建微服务和快速开发的应用程序相比于Spring,SpringBoot主要在几个方面提升使用Spring的效率,降低开发成本。
2024-07-26 20:38:33
959
原创 RBAC权限管理设置
Spring Security是一个用于在Java应用程序中实现身份验证和访问控制的强大框架。它可以轻松地集成到任何基于Spring的应用程序中,提供了一套丰富的功能来保护应用程序的安全性。
2024-07-24 22:07:48
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人