摘要文章针对堆外内存与DirectBuffer进行深入分析,了解Java对于堆外内存处理的机制。1. 堆栈内存堆栈内存指的是堆内存和栈内存:堆内存是GC管理的内存,栈内存是线程内存。堆内存结构:还有一个更细致的结构图(包括MetaSpace还有code cache):注意在Java8以后PermGen被MetaSpace代替,运行时可自动扩容,并且默认是无限大我们看下面一段代码来简单理解下堆栈的关
摘要主要是介绍了的redis的哨兵机制以及底层原理。哨兵模式(raft)与Zookeeper模式(zab)选主的总结Redis中的Sentinel选主相对来说更简单,因为不涉及事务状态的一致性Sentinel选主是基于raft协议,Zookeeper则基于Zab协议 二者都是收到半数的选票就选举成功,同样的都是分布式部署 Se
摘要当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行 change buffer 中与这个页有关的操作。通过这种方式就能保证这个数据逻辑的正确性。需要说明的是,
摘要消息队列的消息重复消费,你能跟我介绍这是怎么样子的场景么?消息重复消费是使用消息队列之后,必须考虑的一个问题,也是比较严重和常见的问题,但凡用到了消息队列,我第一时间考虑的就是重复消费的问题。就比如有这样的一个场景,用户下单成功后我需要去一个活动页面给他加GMV(销售总额),最后根据他的GMV去给他发奖励,这是电商活动很常见的玩法。我只能告诉你这样的活动页面10000%是用异步去加的,不然你想
摘要本博文主要是介绍的在大厂面试过程中涉及到数据库中相关的问题和解答。帮助大家更好的学习与连接数据库相关的原理。一、数据的索引方面问题如果一个高配的机器,redo log 设置太小,会发生什么情况。每次事务提交都要写 redo log,如果设置太小,很快就会被写满,也就是下面这个图的状态,这个“环”将很快被写满,write pos 一直追着 CP。这时候系统不得不停止所有更新,去推进 checkp
摘要主要是讲述Dubbo的服务调用过程。Dubbo大致流程首先我们已经知晓了远程服务的地址,然后我们要做的就是把我们要调用的方法具体信息告知远程服务,让远程服务解析这些信息。然后根据这些信息找到对应的实现类,然后进行调用,调用完了之后再原路返回,然后客户端解析响应再返回即可。调用具体的信息首先客户端肯定要告知要调用是服务端的哪个接口,当然还需要方法名、方法的参数类型、方法的参数值,还有可能存在多个
摘要 主要是分析分Springboot的自动装配的原理并从源码的上分析其原理。随着时间的迁移Spring Boot 越来越多的出现在Java 后端程序员的视野中,Spring Boot 之所以会那么流行,很大的一个原因是自身集成了很多的Bean,简化了传统Sring 项目琐碎的文件配置。这些自动配置的Bean 在入口类启动的时候完成注入,并由Spring 的IoC 容器管理。所以在使用某
摘要主要是讲解Spring Boot 拦截器的原理和使用。拦截器的主要是基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在Service或者一个方法前调用一个方法,或者在方法后调用一个方法,甚至在抛出异常的时候做业务逻辑的操作拦截器介绍拦截器的作用类似于Servlet 中的Filter,都可以用于对处理器进行预处理和后处理。在Spring MVC 与Spring Boot 中使用
摘要主要讲解SqlSessionFactory对象创建过程和源码分析.在SqlSessionFactory对象创建的过程中,对MyBatis 全局配置文件与SQL 映射文件中的信息进行了解析与保存,为后续创建会话(SqlSession)提供了基础MyBatis基于接口形式的编程主要步骤:1.创建SqlSessionFactory对象。2.根据SqlSessionFac
摘要主要讲解SqlSession对象创建过程和源码分析。sqlSessionFactory创建SqlSession对象的过程进行了源码分析,最后返回的SqlSession中包含有两个重要的对象,分别是configuration与executor。configuration对象在创建SqlSessionFactory的时候就已经被创建出来了,用来保存全局配置文件与SQL 映射文件中的信息,execu
摘要Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例。如何从多个服务 Provider 组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略。一、LoadBalance(负载均衡)定义负载均衡职责是将网络请求或者其他形式的负载“均摊”到不同的服务节点上,从而避免服务集群中部分节点压力过大、资源紧张,而另一部分节点比较空闲的情况。通过合理的负载均衡
摘要本文将总结Dubbo早大厂面试中的问题和解答。一、Dubbo设计模式面试问题1.1 知道什么是SPI嘛?SPI 是 Service Provider Interface,主要用于框架中,框架定义好接口,不同的使用者有不同的需求,因此需要有不同的实现,而 SPI 就通过定义一个特定的位置,Java SPI 约定在 Classpath 下的 META-INF/services/ 目录里创建一个以服
ava.sql.Driver接口了。你想一下首先市面上的数据库五花八门,不同的数据库底层协议的大不相同,所以首先需要定制一个接口,来约束一下这些数据库,使得 Java 语言
摘要带着大家再来看看 Dubbo 服务引入全流程。同时对dubbo消费者的相关的源码分析。服务发现大致原理Provider将注册到注册中心, Consumer操作从注册中心得知 Provider 的信息,然后自己封装一个调用类和Provider 进行深入地交流。而之前已经提到在 Dubbo中一个可执行体就是 Invoker,所有调用都要向 Invoker 靠拢
摘要如何阅读源码,是每个程序员需要面临的一项挑战,为什么需要阅读源码?从实用性的角度来看,主要有三个目的:第一,解决手头的新问题或者新需求;第二,真正理解一部分理论的落地实现;第三,应对面试。端正心态在准备投身到阅读源码的事业之前,首先需要端正一下心态:阅读源码是一场持久战,浅尝辄止的话,顶多能写几篇水文,吸点粉糊弄下新手,对自身实力的提高没有显著作用。阅读源码是锦上添花,不是雪中送炭。如果你进入
[code="java"]package com;import java.io.File;import java.io.FileOutputS
摘要本文将深入的学习与分析JVM虚拟机的原理和相关的调优的相关实例。知识脑图JVM的编译优化及底层原理实现
摘要本章主要介绍的数据机构的中的红黑树的理解与学习。红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完
[url]http://www.jiancool.com/article/50723356810/在工作中,我们常常需要对List或者Map等集合结果过滤或者排序,这里我通过使用apache commons和google guava中的方法,简单实现了一下,方便以后使用。
例子中使用的是apache commons3.1和google-guava14,最新版本是18
apache项目下载