June's Studio.

June's Studio.

it's better to burn out than to fade away

设计模式
JDK 中有哪些设计模式? 参考答案:JDK 常用的设计模式如下: ① 工厂模式 java.text.DateFormat 工具类,它用于格式化一个本地日期或者时间。 public final static DateFormat getDateInstance(); public final static DateFormat getDateInstance(int style); public final static DateFormat getDateInstance(int style,Locale locale); 加密类 KeyGenerator keyGenerat
分布式事务常见解决方案
分布式事务:在分布式系统中一次操作需要由多个服务协同完成,这种由不同的服务之间通过网络协同完成的事务称为分布式事务 2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。 1、第一阶段:准备阶段 由事务协调者询问通知各个事务参与者,是否准备好了执行事务,具体流程图如下: * ① 协调者向所有参与者发送事务内容,询问是否可以提交事务,并等待答复 * ② 各参与者执行本地事务操作,将 undo 和 redo 信息记入事务日志中(但不提交事务)
MQ-消息队列之推还是拉,RocketMQ 和 Kafka 是如何做的
推拉模式 首先明确一下推拉模式到底是在讨论消息队列的哪一个步骤,一般而言我们在谈论推拉模式的时候指的是 Comsumer 和 Broker 之间的交互。 默认的认为 Producer 与 Broker 之间就是推的方式,即 Producer 将消息推送给 Broker,而不是 Broker 主动去拉取消息。 想象一下,如果需要 Broker 去拉取消息,那么 Producer 就必须在本地通过日志的形式保存消息来等待 Broker 的拉取,如果有很多生产者的话,那么消息的可靠性不仅仅靠 Broker 自身,还需要靠成百上千的 Producer。 Broker 还能靠多副本等机制来保证消息
MQ-kafka服务器宕机了,消息会丢失吗
消息队列可谓是高并发下的必备中间件了,而 Kafka 作为其中的佼佼者,经常被我们使用到各种各样的场景下。 随着 Kafka 而来得,还有三个问题:消息丢失、消息重复、消息顺序。我们首先聊聊消息丢失的问题。 可靠性级别 回到标题提出的问题:我们是否真的能保证 Kafka 消息不丢失? 答案是:我们无法保证 Kafka 消息不丢失,只能保证某种程度下,消息不丢失。 这里所说的某些情况,从严重程度依次为:Kafka 宕机、服务器宕机、机房地震、城市毁灭、地球毁灭。不要觉得树哥在危言耸听,如果你的服务器部署在乌克兰的首都,那是不是就会遭遇城市毁灭的风险了?因此,我们根据业务的重要程度,设置
SpringBoot常见面试题2
问题:如何实现拦截器? 参考答案:在 Spring Boot 中拦截器的实现分为两步: 1. 创建一个普通的拦截器,实现 HandlerInterceptor 接口,并重写接口中的相关方法; 2. 将上一步创建的拦截器加入到 Spring Boot 的配置文件中,并配置拦截规则。 具体实现如下。 ① 实现自定义拦截器 import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframewo
SpringBoot常见面试题
问题:Spring 和 Spring Boot 有什么区别? 参考答案:作为 Java 开发人员对 Spring 框架都很熟悉,Spring 为 Java 程序提供了全面的基础架构支持,包含了很多非常实用的功能,如 Spring JDBC、Spring AOP、Spring ORM、Spring Test 等,这些模块的出现,大大的缩短了应用程序的开发时间,同时提高了应用开发的效率。 Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,使用它可以不再依赖 Spring 应用程序中的 XML 配置,为更快、更高效的开发
Spring常见面试题
问题:介绍一下 Spring? 参考答案:Spring 是一款顶级开源框架,它是包含了众多工具方法的 IoC 容器。 Spring 包含了很多模块,比如 spring-core、spring-beans、spring-aop、spring-context、spring-expression、spring-test 等,使用 Spring 可以帮我们快速的开发 Java 程序。 问题:Spring 有什么优点? 参考答案:Spring 优点如下: 1. 开源免费的热门框架,稳定性高、解决问题成本低; 2. 方便集成各种优秀的框架; 3. 降低了代码耦合性,通过 Spring 提供的
Java-wait()和sleep()区别
sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中断,也就是线程在休眠的过程中,如果收到中断信号,都可以进行响应,并抛出 InterruptedException 异常。那 sleep 和 wait 的区别都有哪些呢?接下来,我们一起来看。 区别一:语法使用不同 wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出 IllegalMonitorStateException 的异常,如下代码所示: 初看代码好像没啥问题,编译器也没报错,然而当我们运行以上程序时就会发生如下错误:
Java-限流
一、限流操作: 限流那些方法 常见的限流: * Netflix的hystrix * 阿里系开源的sentinel * 说白了限流,为了处理高并发接口那些方式:队列,线程,线程池,消息队列、 kafka、中间件、sentinel:直接拒绝、Warm Up、匀速排队等 技术层面: * 判断是否有相同的请求,可以通过自身缓存挡住相同请求 * 用负载均衡,比如nginx * 用缓存数据库,把热点数据get到缓存中,redis,ES * 善于使用连接池 业务层面: *
Java-垃圾回收
判断对象是否可回收 如何判断一个对象属于垃圾对象呢? 引用计数法 对于一个对象 A,只要有任意一个对象引用了 A,则 A 的计数器加 1,当引用失效的时候,引用计数器就减 1。如果 A 的应用计数器为 0,则对象 A 就不可能再被使用。 缺点:虽然循环引用的问题可通过 Recycler 算法解决,但是在多线程环境下,引用计数变更也要进行昂贵的同步操作,性能较低,早期的编程语言会采用此算法。 可达性分析算法 通过一系列的称为 GC Roots 的对象作为起始点,从这些节点开始向下搜索,搜索所走过的循环称为引用链。当一个对象到 GC Roots 没有任何引用链的时候,则证明此对象是不可达
avatar
June
witness me
FRIENDS
ddatsh