<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[边城白衣的博客]]></title><description><![CDATA[一介白衣，几句白话]]></description><link>https://blog.youkuaiyun.com/elinespace</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; elinespace]]></copyright><item><title><![CDATA[JEP 444：虚拟线程]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/135711861</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/135711861</guid><author>elinespace</author><pubDate>Sat, 20 Jan 2024 10:25:34 +0800</pubDate><description><![CDATA[Java 虚拟线程规范]]></description><category></category></item><item><title><![CDATA[JVM内存泄露故障诊断]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/103444254</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/103444254</guid><author>elinespace</author><pubDate>Sun, 08 Dec 2019 13:42:06 +0800</pubDate><description><![CDATA[感兴趣的朋友可以关注"猿学堂社区"，系统化技术内容分享平台。或加入“猿学堂社区”微信交流群。
猿学堂师资均为一线互联网资深技术专家，提供专业、深度、体系化的技术课程，一站式技术解决方案。与技术专家线上线下深度互动、答疑解惑。在线学习笔记与课程完美结合。

本章主要是为如何诊断内存泄露问题提供一些建议方法。
如果应用程序执行时间越来越长，或者如果操作系统的执行速度越来越慢，这说明可能存在内存泄露问...]]></description><category></category></item><item><title><![CDATA[你真的需要微服务吗？]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/103227990</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/103227990</guid><author>elinespace</author><pubDate>Sun, 24 Nov 2019 20:00:13 +0800</pubDate><description><![CDATA[感兴趣的朋友可以关注"猿学堂社区"，系统化技术内容分享平台。或加入“猿学堂社区”微信交流群

1、前述
自互联网尤其是云平台爆发以来，软硬件基础设施的服务模式不断更新，从早期的IaaS、PaaS、SaaS三大件，到后来的FaaS、BaaS、DaaS，一切以aaS格式表述的新词从各个服务公司的口中提出来，成为技术服务模式的前沿和潮流。所有平台式技术服务的输出，都会以不同形式降低原有的软件开发及运维...]]></description><category></category></item><item><title><![CDATA[在Java中构建响应式微服务系统——第三章 构建响应式微服务]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/82531072</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/82531072</guid><author>elinespace</author><pubDate>Sat, 08 Sep 2018 17:00:47 +0800</pubDate><description><![CDATA[第三章 构建响应式微服务

在本章中，我们将使用Vert.x构建我们的第一个微服务。由于大多数微服务系统使用HTTP进行交互，因此我们将以HTTP微服务作为开始。但是由于系统包含多个相互通讯的微服务，因此我们会构建另一个微服务消费第一个（作为第一个的消费者）。然后，我们将说明为什么这样一个设计不是完全的拥抱响应式微服务。最后，我们将实现基于消息的微服务，以领会消息如何提升响应性。



第一个微服...]]></description><category></category></item><item><title><![CDATA[在Java中构建响应式微服务系统——第二章 理解响应式微服务和Vert.x]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80793365</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80793365</guid><author>elinespace</author><pubDate>Sun, 24 Jun 2018 18:45:37 +0800</pubDate><description><![CDATA[第二章 理解响应式微服务和Vert.x

微服务实际上不是一个新事物。它们起源于20世纪70年代的研究，由于微服务是一种更快迁移、更容易交付价值以及提升敏捷的方法，最近已经成为人们关注的焦点。然而，微服务源于基于Actor的系统、服务设计、动态和自治系统、领域驱动设计以及分布式系统。微服务的细粒度模块化设计不可避免的会导致开发人员创建分布式系统。我敢肯定，你已经注意到，分布式系统是很难的。它们故障...]]></description><category></category></item><item><title><![CDATA[在Java中构建响应式微服务系统——第一章 介绍]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80785654</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80785654</guid><author>elinespace</author><pubDate>Sat, 23 Jun 2018 18:00:58 +0800</pubDate><description><![CDATA[第一章 介绍

这份报告针对对开发微服务和分布式应用感兴趣的开发者和架构师。它不会讲解分布式系统的基础，而是关注于响应式，它有利于构建高效的微服务系统。微服务可以被看作是基本的模块化思想的延伸：程序通过消息传递而不是直接的API调用连接，以便它们可以在多个服务之间分布式。为什么微服务如此受欢迎？这主要是由于两个因素的结合：云计算以及快速扩容和缩容的需求。云计算使得部署成千上万的小型服务变得方便；伸...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第十二章 结束]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80781526</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80781526</guid><author>elinespace</author><pubDate>Sat, 23 Jun 2018 10:34:13 +0800</pubDate><description><![CDATA[第十二章 结束

这是本指南的最后一部分，让我们花点时间来概括一下前面几章中的重要收获，然后再给出更多有用的资源。



12.1 概述

我们通过使用Vert.x构建一个Wiki web应用作为开始。首次迭代是典型的“快速但令人不快的快速原型”，它展示了我们使用Web模板的服务端渲染以及使用关系数据库持久化，可以快速且轻易构建应用程序。 
下一步，展示了如何通过连续的重构提升设计：首先分离每个技...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第十一章 使用基于事件总线的跨越边界消息的实时Web特征]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80717135</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80717135</guid><author>elinespace</author><pubDate>Sun, 17 Jun 2018 10:28:58 +0800</pubDate><description><![CDATA[第十一章 使用基于事件总线的跨越边界消息的实时Web特征


  相应代码位于本指南仓库的step-10目录下


在本指南的前面部分，我们看到事件总线用于Verticle中的通讯，使用Vert.x应用内部的消息传递。开发者只需要注册一个消费者接收消息并且发送/发布消息。

SockJS事件总线桥接将这些能力扩展到客户端浏览器中。它创建了一个分布式的事件总线，不仅跨越集群中的多个Vert.x实例，...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第十章 使用AngularJS的客户端Web应用]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80711513</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80711513</guid><author>elinespace</author><pubDate>Sat, 16 Jun 2018 10:17:29 +0800</pubDate><description><![CDATA[第十章 使用AngularJS的客户端Web应用


  相应代码位于本指南仓库的step-9目录下


截止目前，我们的Web界面使用了传统的服务端渲染HTML内容。某些应用类型可以利用客户端渲染，避免全页面重新加载并且接近本地应用体验，以提升用户体验。

许多受欢迎的框架便是因为这个目的而存在。我们为本指南选择了流行的AngularJS框架，但是可以不失一般性的同等选择React、Vue.js...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第九章 利用RxJava进行响应式编程]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80675371</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80675371</guid><author>elinespace</author><pubDate>Wed, 13 Jun 2018 10:31:54 +0800</pubDate><description><![CDATA[第九章 利用RxJava进行响应式编程


  相应代码位于本指南仓库的step-8目录下


截止目前，我们已经探索了Vert.x技术栈的多个部分，使用基于回调的API。它仅仅可以正常工作，而且这个编程模型对于开发者在许多语言中是非常熟悉的。尽管如此，它可能有点繁琐，尤其当你组合几个事件源或者处理复杂的数据流时。

而这正是RxJava闪耀的地方，Vert.x无缝的集成了它。



9.1 启用...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第八章 安全和访问控制]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80663688</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80663688</guid><author>elinespace</author><pubDate>Tue, 12 Jun 2018 12:25:08 +0800</pubDate><description><![CDATA[第八章 安全和访问控制


  相应代码位于本指南仓库的step-7目录下


使用Vert.x，安全和访问控制非常容易实现。在本章中，我们将介绍：


迁移HTTP到HTTPS
添加用户认证以及基于分组的权限到Web应用中
使用JWT对Web API进行访问控制


8.1 在Vert.x中支持HTTPS

Vert.x为SSL加密网络链接提供了支持。在生产环境中暴露HTTP服务器比较常见的方式...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第七章 公开Web API]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80559368</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80559368</guid><author>elinespace</author><pubDate>Sun, 03 Jun 2018 19:36:42 +0800</pubDate><description><![CDATA[第七章 公开Web API

使用我们已经讲到的vertx-web模块公开Web HTTP/JSON API非常简单。我们将使用以下URL方案公开Web API：


GET /api/pages 给出一个包含所有wiki页面名称和标识的文档
POST /api/pages 从一个文档创建新的wiki页
PUT /api/pages/:id 从一个文档更新wiki页面
DELETE /api/pa...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第六章 与第三方的Web服务集成]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80558824</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80558824</guid><author>elinespace</author><pubDate>Sun, 03 Jun 2018 18:33:41 +0800</pubDate><description><![CDATA[第六章 与第三方的Web服务集成


  相应代码位于本指南仓库的step-5目录下。


现代应用很少位于孤岛之上，因为它们需要与其它（分布式）应用和服务集成。集成通常采用API实现，这些API通过多功能的HTTP协议公开。

本章展示了如何使用Vert.x的HTTP客户端API与第三方Web服务集成。



6.1 场景：备份到GitHub Gist

GitHub Gist服务（https:...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第五章 测试Vert.x代码]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80470846</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80470846</guid><author>elinespace</author><pubDate>Sun, 27 May 2018 17:21:08 +0800</pubDate><description><![CDATA[第五章 测试Vert.x代码


  相应代码位于本指南仓库的step-4目录。


到目前为止，我们已经开发了未包含测试的Wiki实现。这自然不是一种好的实践，因此让我们看一下如何为Vert.x代码编写测试。



5.1 开始

vertx-unit模块提供了工具来测试Vert.x中的异步操作。除此之外，你还可以使用你选择的测试框架，如JUnit。

使用JUnit，需要的Maven依赖如下：...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第四章 重构为Vert.x服务]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80470153</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80470153</guid><author>elinespace</author><pubDate>Sun, 27 May 2018 16:16:30 +0800</pubDate><description><![CDATA[第四章 重构为Vert.x服务

与我们最早的实现相比，前面的重构已经是向前一大步，因为我们提取出了独立且可配置的Verticle，并且在事件总线之上使用异步消息进行链接。我们还看到，我们可以同时部署一个指定Verticle的几个实例，以便更好地处理负载以及更好地利用CPU内核。

在这一节，我们将看到如何设计和使用Vert.x服务。服务的主要优势是，它定义了一个接口用于执行Verticle公开的...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第三章 重构为独立可重用的Verticle]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80381261</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80381261</guid><author>elinespace</author><pubDate>Sun, 20 May 2018 12:12:26 +0800</pubDate><description><![CDATA[第三章 重构为独立可重用的Verticle


  版权声明：本文为博主自主翻译，转载请标明出处。 https://blog.youkuaiyun.com/elinespace/article/details/80377709 
  相应的代码位于本指南代码仓库的step-2目录下


通过第一次迭代，我们得到了一个可工作的Wiki应用。然而它的实现存在以下问题：


HTTP请求处理和数据库访问代码交织在相...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第二章 使用Vert.x编写最小可用Wiki]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80377709</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80377709</guid><author>elinespace</author><pubDate>Sat, 19 May 2018 20:44:26 +0800</pubDate><description><![CDATA[第二章 使用Vert.x编写的最小可用Wiki


  相应的源代码位于该指南代码库的step-1目录下


我们将从第一次迭代开始，最简单的代码可能是使用Vert.x编写一个Wiki。而下一次迭代将在代码库中引入更多的简洁以及适当的测试，我们将看到基于Vert.x的快速原型是一个既简单又现实的目标。

现阶段，Wiki将使用HTML页面的服务端渲染以及通过JDBC链接进行数据持久化。为了完成这些...]]></description><category></category></item><item><title><![CDATA[Vert.x Java开发指南——第一章 介绍]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/80373294</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/80373294</guid><author>elinespace</author><pubDate>Sat, 19 May 2018 12:18:57 +0800</pubDate><description><![CDATA[第一章 介绍

该指南是Vert.x异步编程的一个入门介绍，主要针对那些熟悉主流、非异步Web开发框架和库（如Java EE、Spring）的开发者。



1.1 关于该手册

我们假定读者已经熟悉Java编程语言及其生态系统。

我们将以一个Wiki Web应用作为开始，它开始采用关系数据库和服务端页面渲染；然后我们通过几个步骤逐步演进该应用，直到它成为一个现代的单页应用，并且拥有实时Web的...]]></description><category></category></item><item><title><![CDATA[G1垃圾回收器起步]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/78852469</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/78852469</guid><author>elinespace</author><pubDate>Wed, 20 Dec 2017 14:05:15 +0800</pubDate><description><![CDATA[原文地址概述目的本教程涵盖了如何使用G1垃圾回收器以及G1如何与Hotspot JVM一起使用的基础知识。你将了解G1回收器内部的功能、用于启用G1的关键命令行开关以及输出G1操作日志的选项。完成所需时间大约1小时介绍本教程涵盖了JVM G1垃圾回收器的基础知识。第一部分提供了JVM概述以及垃圾回收和性能介绍。接下来回顾了Hotspot JVM中CMS垃圾回收器是如何工作的。然后，一步步指导在Hot]]></description><category></category></item><item><title><![CDATA[Java HotSpot VM内存管理白皮书]]></title><link>https://blog.youkuaiyun.com/elinespace/article/details/78822114</link><guid>https://blog.youkuaiyun.com/elinespace/article/details/78822114</guid><author>elinespace</author><pubDate>Sat, 16 Dec 2017 21:16:44 +0800</pubDate><description><![CDATA[本文由博主自行翻译，未经博主授权，不得随意转发。后续博主会陆续发布一系列关于JVM内存管理的文章，敬请期待。
1、介绍Java2平台标准版本（J2SE）的一个优点就是它的自动内存管理功能，使得开发人员与显式的内存管理的复杂性分隔开。本文对Sun J2SE5.0版本中Java HotSpot虚拟机（JVM）内存管理提供了一份概述。它描述了用于执行内存管理的垃圾回收器，并给出了一些关于选择和配置垃圾回收]]></description><category></category></item></channel></rss>