摘要:一.为什么要使用消息队列? 消息队列的作用主要有以下三个 1.解耦(下游调用服务) 使用消息之前,处理完毕订单服务后需要去扣减库存,发送消息等操作,引入之后,可以把订单服务结束后放到消息队列中,下游服务订阅消息即可,完成订单服务与其他服务的解耦合。 2.异步操作(同步处理库存积分某些后续操作) 订单
阅读全文
摘要:一.日常工作中使用到的框架? 单机:Quartz,Spring Schedule 等框架; 分布式: SchedulerX,ElasticJob,xxlJob 等分布式任务调度 二.定时任务的作用 简单来讲为某个时间执行某些具体的任务 1.数据获取 2.财务账目核对 3.定时数据备份 4.定时更新数
阅读全文
摘要:一.造成oom的原因? 1.一次性申请的数据太多,比如一次性获取的数据放到list过多,可以分页查询等 2.内存未释放,比如使用jdbc大量连接无法释放,线程池拒绝策略未抛出异常,使用submit等待返回结果一直被阻塞,导致对象一直无法被回收,(因为程序无法结束),可以抛出异常,或者使用池化技术解决
阅读全文
摘要:一.什么是Dubbo,什么是RPC? Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底>层网络技术的协议
阅读全文
摘要:一.mysql和es的比较 1.mysql适合存储海量的数据,但是某些情况下的查询效率过低。 正常可以通过添加索引等加快查询速度,但是模糊查询的时候效率很低,会触发全局扫描 SELECT * FROM product WHERE title like '%优惠券%' 2.基于 Lucene 引擎构建
阅读全文
摘要:一.抽象类和接口的区别? 1. 接⼝的⽅方法默认是 public ,所有⽅方法在接⼝口中不不能有实现(Java 8 开始接⼝口⽅方法可以有默认实现),⽽而抽象类可以有⾮非抽象的⽅方法。 2.接⼝口中除了了 static 、 final 变量量,不不能有其他变量量,⽽而抽象类中则不不⼀一定。 3.⼀一
阅读全文
摘要:整理自b站 1.什么事分布式事务 2.请描述二阶段提交的基本过程,具体的应用 3.2PC协议中,如何处理协调者和参与者之间的通信故障,请列举一些解决方案 超时机制 心跳机制 事务管理器故障->备份 消息队列 3. 3PC讲一下 预提交第二阶段 将数据库的redolog和undolog记录到事务日志里
阅读全文
摘要:在java中可以使用join方法来实现,join会阻塞当前方法,调用的当前方法执行结束后,才会继续往下执行! public class Foo { public Foo() { } public void A(){ System.out.println("A"); } public void B()
阅读全文
摘要:一.反射 我们通常都是利利⽤用new ⽅方式来创建对象实例例,这可以说就是⼀一种“正射”,这种⽅方式在编译时候就确定了了类型信息。⽽而如果,我们想在时候动态地获取类信息、创建类实例例、调⽤用类⽅方法这时候就要⽤用到反射 二.反射原理 Java程序运行分为编译和运行两个步骤,编译后生成字节码文件,JV
阅读全文
摘要:一.意图 简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。 简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。 二.特点 根据外部传入的类型确定要创建哪一个具体类的对象,通过简单工厂模式,客户端无需关注对
阅读全文
摘要:一.意图 模板方法模式 (Template Method) 是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。,没有关联关系。 因此,在模板方法模式的类结构图中,只
阅读全文
摘要:一.意图 职责链模式(Chain Of Responsibility) 是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这个对象连成一条
阅读全文
摘要:Java提供了基本数据类型,并且提供了包装类型。(拆箱和装箱机制) Byte(对应 byte) Short(对应 short) Integer(对应 int) Long(对应 long) Float(对应 float) Double(对应 double) Character(对应 char) Boo
阅读全文
摘要:整理自b站up主 主要一点是最合适的是最好的,不必为了过于追求某项技术而冗余! 一.功能性需求 1.跟实际的业务需求是对应的! 2.所使用的技术框架是不是够先进,文档是否完善,使用过程中容易排查到问题 3.技术是否为开源的,够不够活跃,更新频率等 4.成本:学习成本,使用成本,迁移成本,维护成本,要
阅读全文
摘要:分布式锁,属于分布式系统,是一种跨进程的跨机器节点的互斥锁,它可以用来保证多机器节点对于共享资源访问的排他性。 分布式锁的锁定为多进程多机器节点 满足特性: 1.排他性:同一时刻只能有一个节点去访问资源 2.可重入性:允许获得锁的进程,可以在没有释放锁之前再次重新获得锁 3.超时释放:防止程序执行异
阅读全文
摘要:乐观锁:乐观的预计,认为冲突的概率很低!过程为:1.修改共享资源 2.验证是否发生冲突 3.若无其他线程修改,完成 4.若存在其他线程修改,放弃本次操作 悲观锁:悲观的预计,认为冲突的频率很高,很容易出现冲突,访问之前需要先上锁,每一时间内只有一个线程访问到共享资源 常见的乐观锁: CAS(comp
阅读全文