用于微服务通信的gRPC
在过去,软件应用程序是作为一个巨大的整体构建的,并且仍在进行中。然而,最近,微服务体系结构已经成为开发软件应用程序的流行选择。在微服务体系结构中,微服务通常需要相互通信。与传统的RESTfulWebAPI相比,基于gRPC的RPC框架可以更好地替代微服务通信。 什么是微服务体系结构? 微服务体系结构由许多(通常是数百个)小型、自治、自包含的服务组成。微服务是围绕业务能力构建的。微服务体系结构的一些
在过去,软件应用程序是作为一个巨大的整体构建的,并且仍在进行中。然而,最近,微服务体系结构已经成为开发软件应用程序的流行选择。在微服务体系结构中,微服务通常需要相互通信。与传统的RESTfulWebAPI相比,基于gRPC的RPC框架可以更好地替代微服务通信。 什么是微服务体系结构? 微服务体系结构由许多(通常是数百个)小型、自治、自包含的服务组成。微服务是围绕业务能力构建的。微服务体系结构的一些
函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值,而不是一系列改变程序状态的命令语句 维基百科 Java8引入了Lambda形式的函数式编程。术语Lambda来自Lambda演算,用于描述计算。 Lambda 我们可以将lambda表达式视为一个匿名函数,可以将其分配给变量并传递给方法,该方法接受函数接口作为参数
我尝试在Java+Spring Boot中实现它,我已经习惯了。 下面将描述HQL的实现等。 项目准备 开发环境 Windows10 Java 11(采用OpenJDK jdk11.0.4+11 OpenJ9 0.15.1) Maven 3.5.4 STS 4.4.0 创建一个基本Spring Boot项目 Spring Boot 2.1.9 添加GraphQL Java依赖项 使用graphql
LRU缓存 最近使用最少(LRU)缓存是一种缓存逐出算法,它按使用顺序组织元素。顾名思义,在LRU中,最长时间未使用的元素将从缓存中逐出。 例如,如果我们有一个容量为三项的缓存: 最初,缓存是空的,我们将元素8放在缓存中。元素9和6像以前一样被缓存。但现在,缓存容量已满,要放入下一个元素,我们必须逐出缓存中最近使用最少的元素。 在我们用Java实现LRU缓存之前,最好先了解一下缓存的一些方面: 所
Azure Service Fabric是一个分布式系统平台,可轻松打包、部署和管理可扩展且可靠的微服务。然而,Service Fabric有很大的表面积,有很多东西需要学习。本文简要介绍了Service Fabric,并描述了核心概念、编程模型、应用程序生命周期、测试、集群和运行状况监视。 核心概念 Service Fabric术语、应用程序模型和受支持的编程模型提供了更多的概念和描述,但以下是
Azure Service Fabric是一个分布式系统平台,可轻松打包、部署和管理可扩展且可靠的微服务和容器。ServiceFabric还解决了开发和管理云本机应用程序的重大挑战。 Service Fabric的一个关键区别在于它非常注重构建有状态的服务。您可以使用Service Fabric编程模型或运行以任何语言或代码编写的容器化有状态服务。除了Azure之外,您还可以在任何地方创建Serv
随着开发人员致力于创建更大、更复杂的应用程序,微服务在开发领域得到了越来越多的使用,这些应用程序作为小型服务的组合得到了更好的开发和管理,这些服务协同工作,实现了更广泛、更广泛的应用程序功能。 诸如Service Fabric之类的工具正在兴起,以满足使用逐件方法来思考和构建应用程序的需要。坦率地说,与同时考虑整个应用程序相比,这种方法不那么令人费解。 今天,我们将了解微服务、使用此功能的好处以及
内存管理是Java的强项,也是开发人员选择Java而不是其他平台和编程语言的众多原因之一。你创建对象,Java部署其垃圾收集器来分配和释放内存。但这并不是说Java是完美的。事实上,内存泄漏时有发生,而且在Java应用程序中经常发生。 本文是为了让您掌握如何检测、避免和修复Java中的内存泄漏。 你应该担心内存泄漏吗? 内存泄漏通常涉及少量内存资源,您可能不希望这些资源出现问题。但当您的应用程序返
Java agents(代理)是一种特殊类型的类,通过使用Java Instrumentation API,它可以拦截JVM上运行的应用程序,修改它们的字节码。Java代理不是一项新技术。相反,它们从Java5开始就存在了。但即使在这段时间之后,许多开发人员仍然对这个特性有误解,其他人甚至不知道。 在本文中,我们通过向您提供有关Java agents的快速指南来纠正这种情况。您将了解什么是Java
Class Loaders简介 Class Loaders类加载器负责在运行时将Java类动态加载到JVM(Java虚拟机)。此外,它们也是JRE(Java运行时环境)的一部分。因此,由于类加载器的存在,JVM不需要知道底层文件或文件系统就可以运行Java程序。 此外,这些Java类不会一次全部加载到内存中,而是在应用程序需要时加载。这就是类装入器出现的地方。它们负责将类加载到内存中。 在本文中,
Tomcat 9仅适用于运行CentOS 6或CentOS 7的虚拟服务器。如果您使用的是CentOS 5(Webmin)或CentOS 4(VPS)计划,并且需要Tomcat 9,则需要迁移到CentOS 6(ISPmanager)计划。 Tomcat9设计用于在JavaSE8及以上版本上运行。Tomcat9中不支持JavaSE7 警告Tomcat 9是Tomcat应用服务器的主要版本。此版本对
第一个示例演示变量声明上下文中的lambda。它将lambda()->{System.out.println(“running”);}分配给可运行接口类型的变量r。第二个示例类似,但演示了赋值上下文中的lambda(到先前声明的变量r)。 第三个示例演示了return语句上下文中的lambda。它使用指定的文件扩展名参数调用getFilter()方法以返回java.io.FileFilter
欢迎您是全球710万活跃的Java开发人员之一,也可能是1200万在一生中学习过Java语言的开发人员之一。 在本文中,我将指导您使用Corda构建第一个区块链应用程序,Corda是一个在JVM中运行的区块链平台,仅使用Java。准备好在Java同行中脱颖而出! 你需要什么… 在本文中,我不会详细介绍区块链是什么以及人们为什么需要区块链。我将直接进入编码,并在进行过程中解释去中心化的逻辑。因此,以
微服务是当今软件开发界的热门话题。还有一些很好的理由。 简单地说,随着应用程序变得越来越大、越来越复杂,使用单片方法构建企业应用程序的传统方法已经成为问题。因此,开发人员正在转向微服务软件开发体系结构,在该体系结构中,应用程序被构造为松散耦合服务的集合。这使得它们更容易构建,更重要的是更容易扩展和扩展。 让我们仔细看看微服务方法与单一方法的区别,并检查它们的相对优势和劣势。 巨石:我们过去的样子
在上一篇博文中,我概述了ApachePulsar中的地理复制功能。Apache Pulsar利用Apache BookKeeper提供的可扩展流存储,是一个消息传递系统,支持跨多个数据中心的同步地理复制(通过Apache BookKeeper)和异步地理复制(在Pulsar代理级别配置)。在这篇博文中,我将描述一些人们可以用来跨多个数据中心设置地理复制的模式。 异步地理复制只需30秒 首先,让我花
正如我们在Java Streams:流创建中所学到的,流管道由源、零个或多个中间操作和一个终端操作组成。 我们还了解到,streams流是懒惰的;仅当终端操作启动时,才对源数据执行计算。 在本文中,我们将进一步探讨streams流操作。 streams流操作 流操作可以是中间操作,也可以是终端操作。中间操作产生另一个流。同样,终端操作也会产生结果或副作用。 让我们看看Java流提供的一些操作。 过
Streams允许我们以声明的方式对数据集合进行计算。在一种声明式编程方式中,您不指定如何做,而是指定要做什么。您可以创建流管道来执行计算。流管道包括: 消息来源 零个或多个中间操作 终端操作 Java streams流是懒惰的。因此,仅当终端操作启动时才执行中间操作。 Java streams pipeline 流管道 让我们考虑一个从图书目录中查找所有java图书作者的例子。使用streams
Java 17计划于9月14日发布,来自不同供应商的版本将于当天或之后发布。Java 17的特殊之处在于,Oracle和OpenJDK社区决定,这将是一个长期受支持的版本,与Java 11和Java 8之前的版本一样。 自从Java 10引入快速发布节奏以来,除Oracle外,许多供应商都在加紧生产具有不同支持级别的可生产二进制文件,包括Amazon、Azul、BellSoft、Microsoft
在本文中,我将描述自第8版以来Java最重要、最有利于开发人员的特性。为什么会有这样的想法?您可以在Web上找到许多文章,其中列出了每个Java版本的新特性。然而,缺少文章简要概述自第8版以来最重要的变化。好的,但是为什么是第八版呢?令人惊讶的是,它仍然是Java最常用的版本。尽管Java17已发布,但所有这些都是值得一提的。你可以在Twitter上查看我的调查结果。正如您所看到的,46%以上的响
在本文中,您将了解Eclipse Collections集合提供的一些有用特性。您是否觉得Java Streams API有时还不够?我认为值得一看Eclipse集合。让我们讨论一下原因。 可变的或不变的 如果你喜欢Kotlin collections API,这个概念会吸引你。您可以创建可变和不可变集合。只有可变集合提供了添加新对象的方法。 Person p1 = new Person("Tes