摘要:
为什么需要分布式事务 什么是事务 事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。 通俗的说,事务是指程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所做的所有更改都会被撤销。 数据库事务正 阅读全文
摘要:
Spring是什么? Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE一站式轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开 阅读全文
摘要:
什么是Elasticsearch? Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。 全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当查询时,根据事先建立的索引进行 阅读全文
摘要:
什么是Redis Redis 是一个使用 C 语言写成的,开源的高性能key-value非关系缓存数据库。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。Redis的数据都基于缓存 阅读全文
摘要:
什么是MQ? MQ就是消息队列。是软件和软件进行通信的中间件产品。 使用消息队列的优点有哪些? (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的。消息生产者和消费者都不知道对方的存在; (2)异步:主流 阅读全文
摘要:
为什么要使用MQ? 因为项目做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq。 主要作用有以下几点: 解耦:系统耦合度降低,没有强依赖关系 异步:不需要同步执行的远程调用可以有效提高响应时间 削峰:请求达到峰值后,后端service还可以保持固定消费速率消费,不会被压垮 R 阅读全文
摘要:
什么是kafka? Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。目标是实现一个为处理实时数据提供一个统一、高吞吐、低延迟的平台。 名词解释 消息:Record。Kafka是消息引擎,这里的消息就是Kafka处理的主要对象。主体:Topic。主题就是承载消息的 阅读全文
摘要:
什么是 Lock 接口 JDK5 之后在 JUC 中加入了 Lock 接口,该接口中只有6个方法的声明。Lock 锁是显式锁,锁的持有与释放都必须手动编写,当前线程使用 lock() 方法与 unlock() 对临界区进行加锁与释放锁,当前线程获取到锁之后,其他线程由于无法持有锁将无法进入临界区,直 阅读全文
摘要:
什么是阻塞队列 阻塞队列最大的特性在于支持阻塞添加和阻塞删除方法: 阻塞添加:当阻塞队列已满时,队列会阻塞加入元素的线程,直到队列元素不满时才重新唤醒线程执行加入元素操作。 阻塞删除:但阻塞队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作 Java 中的阻塞队列接口 Bloc 阅读全文
摘要:
计算机网络模型 TCP/IP 与 OSI 都是为了使网络中的两台计算机能够互相连接并实现通信与回应,但他们最大的不同在于,OSI 是一个理论上的网络通信模型,而 TCP/IP 则是实际上的网络通信标准。 OSI七层模型 物理层 实现计算机节点之间比特流的透明传输,规定传输媒体接口的标准,屏蔽掉具体传 阅读全文
摘要:
Servlet API中forward()与redirect()的区别? 从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。 redi 阅读全文
摘要:
AQS 的工作原理 什么是 AQS AQS,Abstract Queued Synchronizer,抽象队列同步器,是 J.U.C 中实现锁及同步组件的基础。工作原理就是如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态,如果被请求的共享资源被占用, 阅读全文
摘要:
CountDownLatch 什么是 CountDownLatch CountDownLatch,闭锁,就是一个基于 AQS 共享模式的同步计数器,它内部的方法都是围绕 AQS 实现的。主要作用是使一个或一组线程在其他线程执行完毕之前,一直处于等待状态,直到其他线程执行完成后再继续执行。 Count 阅读全文
摘要:
在 Java 中,实现多线程的主要有以下四种: (1)继承 Thread 类,重写 run() 方法;(2)实现 Runnable 接口,实现 run() 方法,并将 Runnable 实现类的实例作为 Thread 构造函数的参数 target;(3)实现 Callable 接口,实现 call( 阅读全文
摘要:
JMM 内存模型 什么是 JMM 内存模型 Java 内存模型是 Java 虚拟机定义的一种多线程访问 Java 内存各个变量的访问规范,主要围绕如何解决并发过程中的原子性、可见性、有序性这三个问题来解决线程的安全问题。 Java 内存模型将内存分为了主内存和工作内存(也称为栈空间)。主内存存放所有 阅读全文
摘要:
何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过 阅读全文
摘要:
为什么使用异常 异常的处理机制可以确保我们程序的健壮性,提高系统可用率。在我们的程序设计当中,任何时候任何地方都有可能会出现异常,在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值。虽然可以解决异常问题 阅读全文
摘要:
内部类:可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个编译时概念,编译后外部类及其内部类会生成两个独立的class文件: OuterClass.class和OuterClass$InnerClass.class。 在Java中内部类主要分为四种:成员内部类、局部内部类、匿名内 阅读全文
摘要:
封装 什么是封装 封装,就是将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过该对象对外提供的接口来访问该对象。 使用封装有几大好处 (1)良好的封装能够减少耦合。(2)类内部的结构可 阅读全文