Liu · Blog

记录点滴,成就未来

0%

进程和线程的区别有哪些?

进程:进程独占内存空间,是并发程序在执行过程中分配和管理资源的基本单位
线程:是进程的一个执行单元,是cpu调度的最小单位,一个进程可以有多个线程,并且线程共享进程的内存资源,线程间切换更加快速,让进程子任务得以并发执行

进程和线程的关系是怎么样的?

1、运行一个程序会产生一个进程,进程中最少包含一个线程(主线程)
2、每个进程对应一个jvm实例,多个线程共享jvm中的堆
3、主线程可以创建子线程

阅读全文 »

谈谈你对java的理解

1、它是一种面向对象语言,它的特性有:封装、继承、多态、泛型、lambda
2、支持跨平台,编译成.class文件后,再由jvm虚拟机翻译运行
3、垃圾回收器,程序员不用过多关注内存分配和回收

JVM架构是怎么样的?

1、ClassLoader类加载器子系统:加载(双亲委派)、连接、初始化
2、RuntimeData运行时数据区:方法区、堆区、栈区(虚拟机栈)、本地方法栈、寄存器栈
3、ExecutionEngine执行引擎:解释器、编译器、垃圾回收器
4、NativeInterface:本地方法的接口

阅读全文 »

RabbitMQ有几种通信模式?

6种

1、简单模式:一个生产者,一个消费者,一个消息队列,不设置交换机,使用的默认交换机

2、工作队列模式:一个生产者,多个消费者,一个消息队列,不设置交换机,使用默认的交换机

3、发布订阅模式:将交换机和队列进行绑定,当消息发送到交换机时,交换机会将消息发送到绑定的队列

4、路由模式:将交换机和队列进行绑定,并且指定路由key,根据路由key将消息发送到相应的队列

5、通配符模式:与路由模式的不同就是路由key可以使用通配符

6、RPC模式

阅读全文 »

什么是分布式锁?为什么要用分布式锁?

在使用本地线程锁时,本质上是在内存中存放一个标记,如果该标记中有线程存在则表示获得了锁,删除该线程则释放锁。但是在分布式系统中,每个微服务都不是同一个jvm,它们的内存是不共享的,所以它们的锁也是不共享的,自然而然就无法实现互斥锁了。

所以这就需要使用到分布式锁了,分布式锁本质就是让那个标记所有微服务都可见,并且共用一个,这样就能实现互斥。

阅读全文 »

什么是分布式事务?为什么要使用分布式事务?

在某个业务中需要对数据库进行多次写操作时,为了防止出错我们都会使用本地事务,但在分布式架构下本地事务就无法满足需求了。分布式事务就是实现了跨服务,跨数据源的ACID

阅读全文 »

Redis的事务机制是怎么样的?

它本质是一组命令的集合

1、Redis的事务是基于队列实现的,开启事务后把事务中的命令添加到一个队列,然后依次执行。

2、它没有隔离级别的概念,在执行EXEC之前数据都放入队列缓存

3、Redis的事务不保证原子性,没有回滚,事务中任意命令执行失败其余命令都会继续执行

阅读全文 »

Mysql执行SQL的流程是怎么样的?

1、客户端提交SQL

2、查询缓存,命中则直接返回(key为这条SQL语句),未命中则进行查表操作

3、SQL解析器生成一个解析树

4、预处理器处理解析树,并重新生成一个解析树,并改写SQL

5、查询优化器根据解析树生成SQL执行计划

6、执行引擎根据执行计划调用存储引擎的API接口进行查询数据,存储引擎常见的有InnoDB、MyISAM等,这是一个可插拔的设计,可以自定义存储引擎

7、最后返回给客户端并进行缓存

阅读全文 »

Eureka注册中心

服务者注册时保存的数据结构是什么?

服务者启动时,会根据配置文件决定是否注册到Eureka中,默认就是注册的,注册成服务时,会向Eureka发送REST请求,并携带自己的信息,Eureka会把这些信息保存到一个双层Map的结构中。

第一层Map的key就是服务的id,一般是spring.application.name属性

第二层Map是服务的实例id,一般由Host + 服务名称 + 端口组成

value则是服务的实例对象

阅读全文 »

问:为什么Spring Boot项目打包成Jar包也能运行?

答:因为在pom文件中引入了spring-boot-starter-web依赖,而这个包包含了tomcat依赖,最后由Spring Boot对其自动化配置,所以Spring Boot项目打包成Jar包也能运行。

问:Spring Boot中@Import有几种用法?

答:

4种,分别为:直接导入Bean到IOC容器、通过config类导入多个Bean到IOC容器、

导入ImportSelector实现类:用文本导入该文本所表示全限定类名的Bean,key为全限定类名

导入ImportBeanDefinitioonReigstrar实现类:与上面不同的是可以指定key

阅读全文 »

1. 基础知识

1.1 分布式基础理论

1

2

3

1.1 分布式系统概述

《分布式系统原理与范型》定义:

“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”

分布式系统(distributed system)是建立在网络之上的软件系统。

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

阅读全文 »