0%

Eureka是Netfilx开源的服务发现组件,本身是一个基于REST的服务。它包含EurekaServer和EurekaClient两部分,SpringCloud将它集成在子项目Spring Cloud Netfilx中,实现了微服务的注册与发现。 Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用。 Eureka简单来讲就是Netflix开源的一款提供服务注册和发现的产品,Spring Cloud Netflix提供的胶水代码更换了一些初始化配置,并增加了更人性化的界面,可以这样理解,Spring Cloud Netflix让Eureka更简单易用,下面我们看看如何实现Eureka的高可用。

在日常使用SpringBoot的开发中,如果想要引入某个组件,几乎都是直接引入一个SpringBootStarter就完事,分析了SpringBoot的具体启动流程以及自动配置的原理其实很容易明白官方的starter是如何运行起来的,并且我们可以制作一个自己的SpringBootStarter,并且我会把自制的SpringBootStarter推送到公服,本篇文章会记录一个完整的开发流程。

Spring如何解决循环依赖是经常会被面试官问到的一个问题,这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不一定能够一下子思考出其中的原理。本文主要针对这个问题,从源码的角度对其实现原理进行讲解,彻底搞懂Spring究竟是如何解决循环依赖的。

Spring的丰富生态备受开发者青睐,尤其是自从SpringBoot出现之后去掉了原来的复杂配置,因为SpringBoot的理念就是约定大于配置,这让我们省去了很多需要手动配置的过程,就拿SpringMVC来说吧各种XML配置直接劝退初学者,但是SpringBoot的易用性简直是成为了推广Spring生态的利器。本篇文章主要是结合SpringBoot的源码,来探究SpringBoot应用程序的启动流程!

在之前文章中记述了堆的实现(插入方式建堆、heapify方式建堆以及堆排序) 《 堆的实现及其应用 》 。今天来看看索引堆是个什么东西,对于我们所关心的这个数组而言,数组中的元素位置发生了改变。正是因为这些元素的位置发生了改变,我们才能将其构建为最大堆。 如果元素十分复杂的话,比如像每个位置上存的是一篇上万字的文章。那么交换它们之间的位置将产生大量的时间消耗。并且由于数组元素的位置在构建成堆之后发生了改变,那么我们就很难索引到它,很难去改变它。可以在每一个元素上再加上一个属性来表示原来的位置可以解决,但是这样的话,必须将这个数组遍历一下才能解决。针对以上问题,我们就需要引入索引堆(Index Heap)的概念。

Lock是可中断锁,而synchronized不是可中断锁。现假设线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用synchronized,如果A不释放,B将一直等下去,不能被中断;如果使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情。获取锁超时机制还是属于不可中断,属于超时被动放弃去竞争锁,而lockInterruptibly是可主动放弃竞争锁行为的一种方式。

Oracle官方于2018年9月26日宣布Java11正式发布。目前Oracle 官方也已经宣布Java11正式可以商用,这是Java 大版本周期变化后的第一个长期支持版本,非常值得关注。最新发布的Java11一共包含17个JEP(JDK Enhancement Proposals,JDK 增强提案)。对于企业来说,选择Java11将意味着长期的、可靠的、可预测的技术路线图。其中免费的OpenJDK11确定将得到OpenJDK社区的长期支持,LTS版本将是可以放心选择的版本。由于JDK9和JDK10都是一个过渡版本,JDK11的特性是在JDK9中就有的,我在博客里也做了总结 《 JDK9新特性(一)》 《JDK9新特性(二)》 ,其中已经介绍过的新特性将不会在这篇文章出现。

在上一篇的文章我记述了JDK9的两个最重要的特性:一个是模块化,一个是jShell。另外就是String底层存储结构和StreamAPI的一些改动与优化。本次要记述主要的特性是全新的多分辨率图像API、全新的HTTP客户端API(其实是借鉴OkHTTP的框架,或者说是整合吧)、Deprecated相关API、智能Java编译工具与动态编译器、统一的JVM日志系统、javadoc对H5的支持、JavaScript引擎升级:Nashorn。然后再谈谈JDK9还需要什么吧,也就是对未来Java的展望。