Irving.gx

Thinking will not overcome fear but action will.

高频java面试题目以及解答

机会只留给那些准备充分的人

1.分布式事务怎么实现 2PC:投票阶段和提交阶段。一个协调者与多个本地事务执行者。协调者会向多个事务执行者提交执行事务的请求,参与者执行完事务之后会记录自身是执行成功还是失败,然后会把执行结果发给协调者,假如有执行失败的节点就回滚,否则就进行提交。 这篇博客写的不错 分布式事务实现原理 2.spring aop的原理 是通过动态代理实现的,有两种动态代理方式,JDK动态代理(通过...

你应该知道的Java面试题解答

http://ifeve.com/java-interview-question/对于这个网站上提出的面试题的解答

前言 这篇博客是对 http://ifeve.com/java-interview-question/ 对于这个网站上提出的面试题的解答 基础题目 1.Java线程的状态 java线程一共有6种状态,分别是 初始状态(NEW) 运行状态(RUNNABLE) 阻塞状态(BLOCKED) 等待(WAITING) 超时等待(TIMED_WA...

阅读seata源码收获

阅读seata源码收获

前言 seata是一个阿里研发的开源的分布式事务解决方案,用于在微服务架构下提供高可用以及简单易用的分布式事务服务。 在高并发情况下保证获取到list的最后一个元素 在高并发访问的情况下需要获取到list当中的最后一个元素,看到这个代码中有一个地方是如下这种方式获取的。这种方式是在一个while循环当中去获取最后一个元素,假如此时有多个线程对这个list进行操作(比如删除元素操作)的...

阅读caffine源码收获

阅读caffine源码收获

前言 首先说一下这个开源框架是做什么的,caffine是一个缓存框架,类似于guava cache,不过比guava性能更高,在jmh测试中同样的线程数,caffine的读写throughput都要比guava要好很多,采用了W-TinyLFU算法(高命中率、低内存占用) java poet 在caffine当中大量使用了JavaPoet来自动化生成java源码文件。那么JavaPoet...

MAC安装flink以及简单应用

MAC安装flink以及简单应用

前言 在mac中如何安装flink,并且基于flink的简单应用 安装flink 首先通过brew安装flink brew install apache-flink 在安装好之后,可以通过 flink --version 来查看flink的版本号(注意是两个-符号) 上面就可以看到flink已经安装成功了。 启动flink 可以通过flink安装目录当中的start...

mac安装ElasticSearch以及kibana

手把手教你在mac上安装ElasticSearch以及kibana

前言 ElasticSearch是一个功能强大的全文搜索引擎,基于Lucene,Lucene是一套用于全文检索和搜索的代码程序库。ES可以直接拆箱使用,而Lucene却不能,前者和后者的关系类似于汽车和引擎的关系。https://db-engines.com/en/ranking 这个网站上是各大数据库的使用情况的排名,可以看到es目前出于第8位。 ES可以做的事情非常多,主要是实时的...

Redis服务器

机会只留给那些准备充分的人

在这一篇当中我们对于redis服务器做简要的分析。redis服务器的代码位于src/server.c当中,这一个文件有4000+行,如果对每个api进行分析的话, 反倒有一种一叶障目不见泰山的感觉,所以这一篇我们首先对于服务器的整体流程进行分析,然后对于其中重要的代码进行解读。  首先我们说下redis服务器执行命令的简要流程。不管是什么服务器,一般的流程都分为三步,客户端发出命令,服务器...

Redis事件处理

机会只留给那些准备充分的人

redis是一种事件驱动的程序,什么是事件呢,比如我们向redis输入一个命令执行或者redis在某个时间点到来的时候执行一定的动作,这些都是事件。 redis服务器会处理文件事件以及时间事件两类,前者是服务器和客户端通过套接字进行通信或者和其他服务器进行通信时所采取动作的抽象,后者是服务器 对定时事件操作的抽象。 服务器对于socket所采取的连接,读取,写入,关闭等等操作都是文件事件,...

Redis数据持久化之RDB方式

机会只留给那些准备充分的人

Redis是一种内存数据库,它将自己的数据保存在内存当中,这也是访问redis之所以快速的一个原因。将数据放在内存当中的一个问题就是当服务器进程退出 的时候数据会丢失,那么为了在一段时间内能够长久保存这些数据就需要将这些数据持久化,也就是保存在硬盘当中,redis提供了两种方式来进行数据的持久化, RDB以及AOF这两种持久化方式。在这一章当中我们先分析一下RDB方式。 RDB文件是一种二...

Redis数据结构之AOF方式

机会只留给那些准备充分的人

在上一篇当中我们分析了redis持久化的其中一种方式,也就是RDB的方式,这种方式的实现和我们的直观想法非常类似,也就是内存当中有什么, 就把这些存在的数据经过编码以及压缩之后存储一份到硬盘当中,恢复的时候再从硬盘中读取。关于这种方式一个能够想象得到的问题就是如果redis当中的数据量很大 ,每次持久化的时候就要把这么多数据备份一份,那么对于资源的消耗是比较大的,那么能否有一种比较简单巧...