Reactive Streams 规范翻译

翻译自 Reactive Streams Reactive Streams 注:Reactive Streams 直译为响应式流,这里保留英文原词。 Reactive Streams 是一项提议,旨在为具有无阻塞背压的异步处理流提供标准。这包括针对运行环境(JVM 和 JavaScript)以及网络协议的努力。 Reactive Streams 是为了提供一个无阻塞背压异步流式处理的标准的一个提议。 JDK9 java.util.concurrent.Flow 在 JDK 9 的 java.util.concurrent.Flow 中可用的接口,分别为 1 :1 语义上各自对应于 Reactive Streams。这意味着将会有一个迁移期,库(Libraries)将采用 JDK 中的新类型,但是由于库的完全语义等效以及 Reactive Streams <-> Flow 适配器库和直接与 JDK Flow 类型兼容的 TCK,因此这个迁移期预计会很短。 如果你有兴趣了解有关 JVM Reactive Streams,请阅读此 文章 问题 在异步系统中,处理流数据(尤其是数量未先确定的的“实时”数据)需要特别注意。最突出的问题是,需要控制资源消耗,这样快速数据源不会压垮流目的地。为了在并行网络主机或一台多核机器上并行地使用计算资源,需要异步。 Reactive Streams 的主要目标是管理跨异步边界的流数据交换(考虑将元素传递到另一个线程或线程池),同时确保接收方不强制缓存任意数量的数据。换句话说,背压是此模型中不可或缺的一部分,以使在线程之间进行调节的队列收到限制。如果背压的通信是同步的,则异步处理的好处将被抵消(另请看 Reactive Manifesto),因此必须注意对 Reactive Streams 实现的所有方面进行完全无阻塞和异步行为授权。 本说明书旨在允许创建许多符合要求的实现,这些实现通过遵守规则将能够平滑地互相操作,并在流应用程序的整个处理图中保留上述好处和特性。 范围 Reactive Streams 的范围是找接口、方法和协议的最小集,这些接口、方法和协议将描述实现目标——无阻塞背压的异步处理流,所需要的操作和实体。 端用户 DSLs(领域特定语言)或者协议绑定 API(应用编程接口)有目的地被排除在范围之外,以鼓励和支持可能使用不同编程语言的不同实现,以尽可能地遵循其平台的习惯用法。 我们预计,接受这个 Reactive Streams 规范以及它的实现经验将共同导向广泛的集成,例如,包括将来 JDK 版本中的 Java 平台支持或者在将来的网页浏览器中网络协议的支持。 工作组 基本含义 基本含义定义了如何通过背压来调节流中元素的传输。元素的传输方式,传输过程中的表现形式或者背压的信号发送方式均不属于本规范的一部分。 ...

十一月 17, 2019 · 1 分钟 · Lex Cao

选择一个英文名字

简介 最近我在寻找一个方法给自己取一个英文名字,然后我发现这篇文章,如何选择一个英文名字。该文章在选择一个英文名字提出了一个行之有效的方法,我用该方法制作了一个应用来帮助选择一个英文名字。 你可以在 这里 尝试一下。 我会在下面展开讲一下那篇文章和这个应用。 文章所说 以下是文章原文。 Do not try to be creative in picking an English name. Avoid: Do not try to pick a fun or cute-sounding name from a movie, television, or video game character Do not pick a name that you think sounds cool or trendy, because Americans will think it sounds stupid Do not pick a name because your friends think it sounds cute, because your friends are not the Americans you have to interact with in the future Do not translate some positive-sounding word in your language into English and make that into your name Do: ...

十一月 10, 2019 · 2 分钟 · Lex Cao

Jekyll / Hugo / Hexo 比较

选择一个合适的静态网站生成器比较难,尤其是当你第一次想要搭建一个博客网站的时候。这是我第一次搭建一个博客并且没有足够的时间去尝试所有常见的生成器,我选择了 Jekyll 作为第一次搭建使用的生成器,尽管它可能不是最好的一个。我准备以后再尝试其他生成器。 这是我从 Google 找到的一些简要的描述,希望它能对你选择什么生成器开始搭建网站有帮助。 我从 GitHub 选择了以下三个静态博客生成器进行比较 Jekyll Hugo Hexo 什么是静态网站生成器 HTML 文件; 没有服务端处理或者数据库交互; 比动态网站更安全; 利于使用 CDN 进行扩展; 缓存会带来比动态网页更高的效率; 请求超快速。 Jekyll 使用语言 Ruby; GitHub 支持; 使用 GitHub Pages 免费部署。 优势 免费且开源; RubyGems 支持构建主题为 gems 方便分发; 简单便捷使用; 强大的 GitHub Pages 支持; 开箱即用的合适的默认极简主题。 劣势 当网站内容不断增加后,构建速度会明显变慢。 功能 Liquid 模版引擎; 基于 Gem 主题; Markdown 和 YAML 类型支持; Sass 预处理 CSS 支持; 官方插件支持 CoffeeScript。 Hugo 使用语言 Go. 优势 免费开源; 速度非常快,对构建速度做了优化; 内置支持很多功能: 动态 API 请求的内容; 无限制内容类型; shortcakes, 一个灵活的 Markdown 替代; 国际化; 别名重定向; 分页。 预制的 Go 模版和模式; 无需依赖(不用安装 Go,因为它是编译好的二进制); 功能强大的内容模型。 劣势 主题使用 Go 模版,所以需要熟悉 Go; 没有内置默认主题; 缺少扩展性和插件(因为 Go 是编译型语言)。 功能 Go 模版; 国际化; 支持动态 API。 Hexo 使用 Node.js. 优势 相当快速; 在 GitHub Pages 部署简单; 中文支持(可能是劣势对于非中文用户); 中文社区。 劣势 没有英文。 功能 EJS 模版引擎; 支持 中文; 对于 HTML + CSS + Javascript 非常友好。 我正在使用 Jekyll ...

十月 30, 2019 · 1 分钟 · Lex Cao

Jekyll 不使用插件支持多语言

实现目标 支持多语言,英文为主,中文为辅; 当访问 / 根目录下页面,比如 /about.html /posts/hello-world 显示英文页面; 当访问 /zh/ 目录下页面,比如 /zh/about.html /zh/posts/hello-world 显示中文页面; 当访问 ../hello-world 文章时,可以通过链接跳转到对应语言页面; archive 和 index 页面中仅显示出当前语言页面。 相关缺陷 404 页面无法配置,只能在 404.html 页面写上两种语言; 支持多语言文章的分页插件 jekyll-paginate-v2 没在 GitHub Pages 支持的插件白名单内,目前本博客首页不支持分页。多语言分页详见下文; 多语言时间表示有点麻烦,需要做一些字符串处理工作,能实现但是不太优雅,具体可以参考 Jekyll-Date-Formatting。 开始配置 最初,我搜索到 i18n 插件 Jekyll-Multiple-Languages-Plugin。 该仓库的 Star 数是多语言插件中最多的,同时里面也列出了相关其他多语言插件,已经比较完善,不想折腾的可以直接使用。 目前我为了简单和可定制化,同时省略掉插件中不必要的功能,选择使用自定义规则来实现多语言功能。 1. 单个博文配置 每一篇文章和页面需要定义两个属性: uid 标示文章唯一,一篇文章的中文版本和英文版本 uid 相同; 注意:uid 可以设置为任意命名,比如 document_id 。 locale 标示文章语言,一篇文章被渲染后作为哪种语言展示。 所以每篇文章的 Front Matter 新增如下设置 --- uid: hello-world locale: zh --- 2. 对于文章 posts 每篇文章都需要在 Front Matter 中写上 locale 重复多余。不要重复自己。我准备使用不同文件夹来区分不同语言的文章,然后在配置文件设置 locale 的默认值。 ...

十月 26, 2019 · 3 分钟 · Lex Cao

你好 世界

博客配置: 静态网页生成器 Jekyll 3.8.5 Ruby 2.6.0 主题 lagrange 网页分析 Google Aynalysis Baidu Aynalysis 部署 GitHub Pages 这是我的第一篇文章,作为最简单的 “你好 世界”,我想记录一下该博客的诞生过程,以及如果你也想搭建一个自己的博客应该怎么做。 本文章将会涉及三个部分: 选择博客类型 准备好所需内容 将他们编排起来 第一步 选择博客类型 根据前端网页是否与后台服务器或者数据库交互分为:静态网站 / 动态网站 静态网站: 仅依靠 HTML / CSS / JS 没有后台服务器存储数据 数据是预先生成的 动态网站: 依赖前端 HTML / CSS / JS 数据从后台服务器获取 能够动态响应用户请求 所以,静态博客: 文章预先生成 不依赖后台服务器 动态博客: 文章从后台服务器获取 前端页面动态获取 考虑到刚接触到博客搭建,先从简单的静态博客入手。目前 GitHub 上有很多开源的静态网站生成器,这里我选择使用 Jekyll。 选择合适的静态博客生成器请看 [Jekyll / Hugo / Hexo 比较]({{ “/zh/posts/jekyll-hugo-hexo” | relative_url }})。 第二步 准备好所需内容 准备内容涉及以下方面: 博客文章 博客介绍 作者信息 博客域名 博客文章 提前写好文章准备发布 ...

十月 1, 2019 · 2 分钟 · Lex Cao