自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

转载 Spring Boot 的单元测试和集成测试

学习如何使用本教程中提供的工具,并在 Spring Boot 环境中编写单元测试和集成测试。1. 概览本文中,我们将了解如何编写单元测试并将其集成在 Spring Boot 环境中。你可在网上找到大量关于这个主题的教程,但很难在一个页面中找到你需要的所有信息。我经常注意到初级开发人员混淆了单元测试和集成测试的概念,特别是在谈到 Spring 生态系统时。我将尝试讲清楚不同注解在不同上...

2019-09-27 07:52:00 328

转载 Containers vs Serverless:你选择谁,何时选择?

两者都是当今技术时代的热门话题,也都被视为是开发技术的竞争对手。首先,还有相当多的好奇和担心。此外,两者都是可供工程师使用的、高效的、机器无关的抽象。但是,在冠军之间,有一个不可逾越的鸿沟。你要么在容器区域,要么选择 Serverless。除此之外,如果你愿意将两者结合起来,那将是一个强大的组合。预计到 2021 年,Serverless 将达到 77.2 亿美元 的规模。但对容器...

2019-09-26 08:09:00 178

转载 Java13新特性

Java 13 的官方开发目标包含改进垃圾收集、应用程序的类数据共享和文本块Java 开发工具包(JDK)13,标准 Java 的下一个版本,现在可作为候选版本使用,所有新功能都已锁定。JDK 13提出了一种功能,但从未添加到官方列表中,即用于打包自包含 Java 应用程序的 jpackage 工具,已经无缘晋级。JDK 13 不再考虑它。[新的 Java 已经来了!了解 Jakar...

2019-09-24 07:24:00 208

转载 Java中创建对象的5种方法

将会列举5种方法去创建 Java 对象,以及他们如何与构造函数交互,并且会有介绍如何去使用这些方法的示例。作为一个 Java 开发人员,我们每天都会创建大量的 Java 对象,但是我们通常会使用依赖管理系统去创建这些对象,例如 Spring 。然而,我们可以有更多的方式去创建对象,让我们一起在文章中去学习这些方法吧。这里列举在 Java 中创建对象的五种方式,下面将介绍它们的示例,以...

2019-09-23 08:34:00 100

转载 最好的重试是指数后退和抖动

1. 概述在本教程中,我们将探讨如何使用两种不同的策略改进客户端重试:指数后退和抖动。2. 重试在分布式系统中,多个组件之间的网络通信随时可能发生故障。客户端应用程序通过实现重试来处理这些失败。设想我们有一个调用远程服务的客户端应用程序—— PingPongService 。interface PingPongService { String call(String ...

2019-09-22 22:06:00 416

转载 杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为面向微服务的体系结构,这可能是许多层面上阻碍和冲突的根源。虽然Greenfield (未开发的)面向微服务的体系结构实现可以坚持对当前微服务的严格解释-设计原则。但在面向微服务的体系结构中,分解的遗留应用程序存...

2019-09-17 07:40:00 92

转载 使用Quarkus在Openshift上构建微服务的快速指南

在我的博客上,您有机会阅读了许多关于使用Spring Boot或Micronaut之类框架构建微服务的文章。这里将介绍另一个非常有趣的框架专门用于微服务体系结构,它越来越受到大家的关注– Quarkus。它是作为下一代Kubernetes/Openshift原生Java框架引入的。它构建在著名的Java标准之上,如CDI、JAX-RS和Eclipse MicroProfile,这些标准将...

2019-09-16 08:54:00 149

转载 Java EE—最轻量级的企业框架?

确保高效发展进程的建议很久以前,J2EE,特别是应用程序服务器被认为过于臃肿和“重量级”。对于开发人员来说,使用此技术开发应用程序会非常繁琐且令人沮丧。但是,由于 J2EE 框架的名称已更改为Java EE,因此该假设不再适用。 Java EE 与其他企业框架相比区别在哪以及框架轻量级的标准是什么?在选择技术时,需要考虑的最重要方面之一是开发人员在开发过程中的生产力。工程师应该花费尽...

2019-09-13 20:30:00 105

转载 杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为面向微服务的体系结构,这可能是许多层面上阻碍和冲突的根源。虽然Greenfield (未开发的)面向微服务的体系结构实现可以坚持对当前微服务的严格解释-设计原则。但在面向微服务的体系结构中,分解的遗留应用程序存...

2019-09-12 06:57:00 90

转载 使用Spring Boot和RxJava的构建响应式REST API

我不打算解释什么是响应式编程,也不解释为什么要使用它。我希望你已经在其他地方了解过,如果没有,你可以使用Google去搜索它。在本文中,我将告诉您如何使用专门针对Spring Boot和RxJava的响应式编程。让我们开始吧。1.预备知识在你继续阅读之前,我希望你能理解如何使用Spring Boot和RxJava创建简单的REST API。如果不能,你可以在Baeldung上了解更...

2019-09-10 21:25:00 282

转载 JVM体系结构详解

每个Java开发人员都知道字节码将由JRE (Java运行时环境)执行。但是很多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码、解释代码并执行代码。作为开发者,了解JVM的体系结构非常重要,因为它使我们能够更有效地编写代码。在本文中,我们将更深入地了解Java中的JVM体系结构和JVM的不同组件。什么是JVM呢?虚拟机是物理机的软件实现。Jav...

2019-09-04 22:36:00 113

转载 如何成为更好的程序员?

阅读本文并了解如何使用具有功能组合的声明性代码成为更好的程序员。在许多情况下,具有功能组合的声明性解决方案提供优于传统命令式代码的代码度。阅读本文并了解如何使用具有功能组合的声明性代码成为更好的程序员。在本文中,我们将仔细研究三个问题示例,并研究两种不同的技术(命令式和声明性)来解决这些问题。本文中的所有源代码都是开源的,可从https://github.com/minborg/i...

2019-09-02 08:32:00 72

转载 Tesseract:简单的Java光学字符识别

1.1 介绍开发具有一定价值的符号是人类特有的特征。对于人们来说识别这些符号和理解图片上的文字是非常正常的事情。与计算机那样去抓取文字不同,我们完全是基于视觉的本能去阅读它们。另一方面,计算机的工作需要具体的和有组织的内容。它们需要数字化的表示,而不是图形化的。有时候,这是不可能的。有时,我们希望自动化的完成用双手从图像重写文本的任务。针对这些任务,光学字符识别(OCR)被设计成...

2019-08-28 21:59:00 241

转载 Java 迭代接口:Iterator、ListIterator 和 Spliterator

1. 简介当我们使用 for 或 while 循环来遍历一个集合的元素,Iterator 允许我们不用担心索引位置,甚至让我们不仅仅是遍历一个集合,同时还可以改变它。例如,你如果要删除循环中的元素,那么 for 循环不见得总是可行的。结合自定义的迭代器,我们可以迭代更为复杂的对象,以及向前和向后移动,并且知晓如何利用其优势也将变得非常清楚。本文将深入讨论如何使用 Iterator ...

2019-08-27 08:12:00 173

转载 Spring Boot 默认指标从哪来?

了解有关 Spring Boot 默认指标及其来源的更多信息。您是否注意到 Spring Boot 和 Micrometer 为您的应用生成的所有默认指标? 如果没有 - 您可以将 actuator 依赖项添加到项目中,然后点击 / actuator / metrics 端点,在那里您将找到有关 JVM 、进程、Tomcat、流量等的有用信息。 然后,添加一些缓存,数据源 或 JPA ...

2019-08-26 09:06:00 107

转载 Top11 构建和测试API的工具

立刻像专业人士一样构建API组织正在改变他们已经在软件应用项目中成功的微服务架构模型,这就是大多数微服务项目使用API(应用程序接口)的原因。我们要为微服务喝彩,因为它相对于其他的模型有各种先进的特性。与此类似,这些数据存储区具有独立的命令来处理每个数据存储区;此外,它还允许软件提供商更快地部署组件。如果更新了一个应用程序,则不需要更新其余的应用程序;它们可以继续其功能。我们正处...

2019-08-25 21:18:00 137

转载 Top 10 顶级项目管理工具

成功的项目都要归功于成功的项目管理。这些工具帮你踏上成功之旅!项目管理是成功完成项目并使公司变得伟大的秘诀。不,这不是标题党(clickbait) —— 我已经看到两家软件公司(我在那里工作)因为项目管理不善而在1 - 2年内濒临破产,其他一些人看到他们的产品发布推迟了几个月。虽然我同意,与其他大多数学科一样,项目管理中也有很多骗人的把戏,但这并没有降低其重要性和影响。适用于项目管理...

2019-08-17 21:52:00 189

转载 数据作为微服务 分布式数据集中集成

1.引言Microservices(微服务)是新软件项目中所青睐的架构设计。随着从单一系统到分布式系统的演化不仅发生在应用程序空间中,而且发生在数据存储中,管理数据成为最困难的挑战之一,然而,要从这种类型的方法中获得最大的收益,需要克服前面的几个需求。本文研究了将数据作为服务实现的一些考虑事项。在遵循微服务设计指南时,我们找到一些对数据处理的参考。其中一些常见的方向包括:每个服务...

2019-08-05 09:44:00 93

转载 Spring WebClient vs. RestTemplate

1. 简介本教程中,我们将对比 Spring 的两种 Web 客户端实现 —— RestTemplate 和 Spring 5 中全新的 Reactive 替代方案 WebClient。2. 阻塞式 vs 非阻塞式客户端Web 应用中,对其他服务进行 HTTP 调用是一个很常见的需求。因此,我们需要一个 Web 客户端工具。2.1. RestTemplate 阻塞式客户端很长一...

2019-07-31 11:57:00 93

转载 利用微设计实现可持续高效的基础设施

了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系。技术决策既困难又严肃,可以决定项目的成败。如何找到合适的技术栈?“微设计基础架构”(MDI)是一种新方法,它使用“设计思维”中的回忆来开发最佳,易于理解且是公司范围内公认的基础架构或技术堆栈。技术和基础设施决策具有挑战性,因为必须结合不同的要求(公司,应用,未来的安全等),找到合适的解决...

2019-07-26 09:22:00 73

转载 使用 Spring Framework 时常犯的十大错误

Spring 可以说是最流行的 Java 框架之一,也是一只需要驯服的强大野兽。虽然它的基本概念相当容易掌握,但成为一名强大的 Spring 开发者仍需要很多时间和努力。在本文中,我们将介绍 Spring 中一些常见的错误,特别是面向 Web 应用程序和 Spring Boot。正如 Spring Boot 官网 所说,Spring Boot 对应该如何构建 Production-Re...

2019-07-24 09:47:00 66

转载 为什么选择 Spring 作为 Java 框架

1. 概述在本文中,我们将讨论 Spring 作为最流行的 Java 框架之一的主要价值体现。最重要的是,我们将尝试理解 Spring 成为我们选择框架的原因。Spring 的详细信息及其组成部分已在我们 之前的教程中广泛介绍。 因此,我们将跳过介绍性的“如何”部分,并主要关注“为什么”。2. 为什么使用任何框架?在我们开始任何关于 Spring 的讨论之前,首先让我们了解为什么...

2019-07-23 09:05:00 108

转载 Scrum是脆弱的,不敏捷的

正如标题所示,这篇文章是关于 Scrum 的两个不同方面。第一部分涉及 Scrum 不敏捷,第二部分涉及 Scrum 脆弱。在详细介绍之前,简短的免责声明:我在这篇文章(以及一般博客中)中提出的所有内容都是我个人观点,并不代表我现任雇主,我的前雇主和任何未来雇主的观点。Scrum 是不敏捷的我猜人们对这个标题的典型反应会是“这怎么可能? Scrum 不是敏捷的?Scrum 不是第一...

2019-07-19 11:32:00 151

转载 Solr 全文搜索

1. 概述在本文中,我们将探讨一个Apache Solr搜索引擎中的基本概念 - 全文搜索。Apache Solr是一个开源框架,旨在处理数百万的文档。我们将通过使用Java库- SolrJ的示例来介绍它的核心功能。2. maven配置由于Solr是开源的 - 我们可以简单地下载二进制文件并在我们的应用程序中单独启动服务器。要与服务器通信,我们将为SolrJ客户端...

2019-07-18 11:20:00 97

转载 Java并发之线程封闭

读者们好! 在这篇博客中,我们将探讨线程封闭是什么意思,以及我们如何实现它。 所以,让我们直接开始吧。1. 线程封闭大多数的并发问题仅发生在我们想要在线程之间共享可变变量或可变状态时。如果在多个线程之间操作共享变量,则所有线程都将能够读取和修改变量的值,从而出现意外或不正确的结果。一种简单的避免此问题的方式是不在线程之间共享数据。 这种技术称为线程封闭,是在我们的应用程序中实现线...

2019-07-16 10:39:00 53

转载 Java中的关键字synchronized

1. 介绍在Java并发系列的文章中,这个是第二篇文章。在前面的一篇文章中,我们学习了Java中的Executor池和Excutors的各种类别。在这篇文章中,我们会学习synchronized关键字以及我们在多线程的环境中如何使用。2. 什么是同步?在一个多线程的环境中,多个线程同时访问相同的资源的情况是存在的。例如,两个线程试图写入同一个文本文件。它们之间没有任何的同...

2019-07-12 09:38:00 62

转载 Java并发框架:Executor

介绍随着当今处理器中可用的核心数量的增加, 随着对实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行。 Java 提供了自己的多线程框架,称为Executor 框架.1. Executor 框架是什么?Executor 框架包含一组用于有效管理工作线程的组件。Executor API 通过Executors将任务的执行与要执行的实际...

2019-07-09 09:19:00 55

转载 消息驱动式微服务:Spring Cloud Stream & RabbitMQ

1. 概述在本文中,我们将向您介绍Spring Cloud Stream,这是一个用于构建消息驱动的微服务应用程序的框架,这些应用程序由一个常见的消息传递代理(如RabbitMQ、Apache Kafka等)连接。Spring Cloud Stream构建在现有Spring框架(如Spring Messaging和Spring Integration)之上。尽...

2019-07-08 09:29:00 311

转载 JVM中的本机内存跟踪

1.概述有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存。这些额外的分配最终会使消耗的内存超出-Xmx限制。在本教程中,我们将列举JVM中的一些常见内存分配源,以及它们的大小调整标志,然后学习如何使用本机内存跟踪监视它们。2.原生分配堆通常是Java应用程序中最大的内...

2019-07-06 18:17:00 71

转载 性能监控: SPF4J介绍

1. 总体介绍性能测试是一项在软件生命开发周期中总是被置于最后一环的活动。我们经常依靠Java profilers去帮助发现性能问题。在这篇文章中,我们将会学习关于 Java 的简单性能测试框架 - SPF4J。它提供了可以加在我们代码中的 API。因此,我们可以将性能监视变为我们组件的一部分。2. 度量捕获和可视化的基本概念在我们开始之前,让我们用一个简单的例子...

2019-07-05 09:36:00 106

转载 Spring Batch 入门级示例教程

我将向您展示如何使用Spring Boot创建一个的Spring Batch的Hello World示例。(循序渐进)因此,如果您是Spring Batch的初学者,您一定会喜欢本指南。准备好了吗?如果您想了解更多关于Spring Batch的信息,请访问Spring Batch教程页面。1.Spring Batch框架工作原理在深入研究代码之前,让我们先看看...

2019-07-03 09:09:00 259

转载 使用 Spring Boot Actuator 构建 RESTful Web 应用

Spring Boot Actuator是 Spring Boot 的一个子项目。通过它,可以很轻易地为应用提供多种生产级服务。本教程中,你将通过构建一个应用来学习如何添加这些服务。1. 你需要构建什么本教程将带你使用 Spring Boot Actuator 创建一个 “hello world”RESTful Web 服务。你需要构建一个 HTTP GET 请求服...

2019-07-02 09:39:00 82

转载 回调“地狱”和反应模式

了解更多有关基于反应流的方法以及如何避免回调地狱的信息。更好地理解基于反应流的方法的有用性的方法之一是它如何简化非阻塞 IO 调用。本篇文章将简要介绍进行同步远程调用所涉及的代码类型。然后,我们将演示非阻塞 IO 中的分层如何高效使用资源(尤其是线程),引入了称为回调地狱带来的复杂性以及基于反应流方法如何简化编程模型。1. 目标服务客户端调用表示城市详细信息的目标...

2019-06-28 10:34:00 157

转载 Java动态规划

1. 介绍动态规划典型的被用于优化递归算法,因为它们倾向于以指数的方式进行扩展。动态规划主要思想是将复杂问题(带有许多递归调用)分解为更小的子问题,然后将它们保存到内存中,这样我们就不必在每次使用它们时重新计算它们。要理解动态规划的概念,我们需要熟悉一些主题:什么是动态规划?贪心算法简化的背包问题传统的背包问题Levenshtein...

2019-06-27 09:18:00 146

转载 ApplicationContextRunner如何简化自动配置测试

1. 概览众所周知,自动配置是Spring Boot的关键功能之一, 但测试自动配置可能会很棘手。在以下部分中,我们将展示ApplicationContextRunner如何简化自动配置测试。2. 测试自动化配置方案ApplicationContextRunner是一个实用程序类,它运行ApplicationContext并提供AssertJ样式断言。最好用作...

2019-06-25 09:40:00 165

转载 Jest — ElasticSearch Java 客户端

1. 介绍任何使用过Elasticsearch的人都知道,使用基于rest的搜索API构建查询可能是单调乏味且容易出错的。在本教程中,我们将研究Jest,一个用于Elasticsearch的HTTP Java客户端。Elasticsearch提供了自己原生的Java客户端,然而Jest提供了更流畅的API和更容易使用的接口。2. Maven 依赖...

2019-06-24 09:33:00 114

转载 微服务之旅:从Netflix OSS到 Istio Service Mesh

在这篇文章中,我们从Netflix开始,通过Envoy和Istio的崛起,快速浏览微服务的历史.微服务是具有边界上下文的松散耦合服务,使您能够独立开发,部署和扩展服务。它还可以定义为构建独立开发和部署的分布式系统的架构模式。 在微服务架构中处理服务之间的通信是一项挑战,因为它们需要在不可靠的网络中相互通信。1. 微服务架构的复杂性分布式应用的一个问题是它们通过网络进行通信...

2019-06-21 12:07:00 62

转载 如何排查Java内存泄漏?看完我给跪了!

没有经验的程序员经常认为Java的自动垃圾回收完全使他们免于担心内存管理。这是一个常见的误解:虽然垃圾收集器做得很好,但即使是最好的程序员也完全有可能成为严重破坏内存泄漏的牺牲品。让我解释一下。当不必要地维护不再需要的对象引用时,会发生内存泄漏。这些泄漏很糟糕。首先,当程序消耗越来越多的资源时,它们会对计算机施加不必要的压力。更糟糕的是,检测这些泄漏可能很困难:静态分析通常很难精...

2019-06-20 09:35:00 87

转载 Spring Security 表单登录

1. 简介本文将重点介绍使用Spring Security登录。 本文将构建在之前简单的Spring MVC示例之上,因为这是设置Web应用程序和登录机制的必不可少的。2. Maven 依赖要将Maven依赖项添加到项目中,请参阅Spring Security with Maven一文。 标准的spring-security-web和spring-security-con...

2019-06-18 09:18:00 107

转载 Java 8 Collectors to Map

1. 介绍在本教程中,我们将讨论Collectors类的toMap()方法。我们使用它将流收集到一个Map实例中。对于本教程中涉及的所有示例,我们将使用图书列表作为数据源,并将其转换为不同的Map实现。2. List 转换 Map我们将从最简单的情况开始,将List 转换 Map。Book类定义如下:class Book { private St...

2019-06-17 09:49:00 191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除