随笔分类 - Java面试题精选汇总(答案)
摘要:流行的分布式事务方案有三种:异步消息确保型、TCC事务补偿型、最大努力通知型。 三种解决方案均是基于柔性事务实现最终一致性。 异步消息确保型方案,基于MQ中间件实现,或者说是对MQ不支持分布式事务进行的改进,使用场景比较广,适合于对实时性要求不高的应用场景。 TCC事务补偿型方案,采用两阶段实现,但
阅读全文
摘要:1 Proactor和Reactor Proactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。 I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图: 1.1 select,poll,epol
阅读全文
摘要:在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会
阅读全文
摘要:Netty的简单介绍Netty 是一个 NIO client-server(客户端服务器)框架,使用 Netty 可以快速开发网络应用,例如服务器和客户 端协议。 Netty 提供了一种新的方式来使开发网络应用程序,这种新的方式使得它很容易使用和有很强的扩展性。 Netty 的内部实现时很复杂的,但
阅读全文
摘要:Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较多。 单例模式—在spring配置文件中定义的bean默认为单例模式。 模板方法—用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemp
阅读全文
摘要:1、事务认识大家所了解的事务Transaction,它是一些列严密操作动作,要么都操作完成,要么都回滚撤销。Spring事务管理基于底层数据库本身的事务处理机制。数据库事务的基础,是掌握Spring事务管理的基础。这篇总结下Spring事务。事务具备ACID四种特性,ACID是Atomic(原子性)
阅读全文
摘要:一、代理模式介绍 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 简言之,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。 代理模式UML类图 举
阅读全文
摘要:JDK动态代理与Cglib动态代理 JDK动态代理: 1.能够继承静态代理的全部优点.并且能够实现代码的复用.2.动态代理可以处理一类业务.只要满足条件 都可以通过代理对象进行处理.3.动态代理的灵活性不强.4.JDK 的动态代理要求代理者必须实现接口, , 否则不能生成代理对象. . 1 pack
阅读全文
摘要:主要分析点: 一、Spring开源框架的简介 二、Spring下IOC容器和DI(依赖注入Dependency injection) 三、Spring下面向切面编程(AOP)和事务管理配置 一、Spring开源框架的简介 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Ja
阅读全文
摘要:Spring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext,认识一下Bean的生命周期活动,对更好的利用它有很大的帮助: 下面以BeanFactory为例,说明
阅读全文
摘要:一、描述 BeanFactory: 是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能; ApplicationContext: 应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能; 1) 国际化(Messa
阅读全文
摘要:缓存穿透和缓存失效的预防和解决 缓存穿透: 认识 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 认识 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据
阅读全文
摘要:一、Redis为什么是单线程 注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。 因为CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者网络带宽,既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
阅读全文
摘要:一、需要了解的基础1、Redis实现数据持久化的两种实现方式: RDB:指定的时间间隔内保存数据快照 AOF:先把命令追加到操作日志的尾部,保存所有的历史操作 二、RDB 实现 Redis数据持久化(默认方式) 1、编辑 redis.conf注:使用whereis redis命令查看redis安装在
阅读全文
摘要:一、redis启动时载入持久化文件的流程。 二、redis两种持久化机制 两种持久化机制是RDB和AOF机制,下面介绍下是什么和优缺点。 RDB持久化是指用数据集快照的方式记录redis数据库的所有键值对。 两个命令:SAVE命令会阻塞主进程来完成写文件,BGSAVE命令会创建子进程来完成写文件,主
阅读全文
摘要:Redis的内部结构如下图所示: 各功能模块说明如下: File Event: 处理文件事件(在多个客户端中实现多路复用,接受它们发来的命令请求(读事件),并将命令的执行结果返回给客户端(写事件)) Time Event: 时间事件(更新统计信息,清理过期数据,附属节点同步,定期持久化等) AOF:
阅读全文
摘要:1. string类型 string为最简单类型,一个key对应一个value 2. list类型 list是一个链表结构,主要功能是push、pop以及获取一个范围的所有值等。 使用list结构,可以轻松实现最新消息排行,另一个应用是消息队列,可以利用list的push操作,将任务存在list中,
阅读全文
摘要:Volatile实现原则 有volatile变量修饰的共享变量进行写操作的时候,会多出一行以Lock为前缀的汇编代码, 这个前缀指令会在多核处理器下引发两件事情: 1.将当前处理器缓存行的数据写回到系统内存。 2.这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。 概括性解释 为了提高
阅读全文
摘要:InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于Po
阅读全文
摘要:数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个
阅读全文

浙公网安备 33010602011771号