diff --git a/README.md b/README.md index 54d171e..a3ff916 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Chinese translations for classic IT resources. # 系统设计实例 1. [重叠实验设施:更多、更好、更快地实验](overlapping-experiment-infrastructure-more-better-faster-experimentation/README.md) - `Google`这篇8年前2010年的关于『实验基础设施』设计的论文,现在看来仍然是关于这个领域最有深度和体系的资料。不单说明了,实验设施的系统设计,还包含实验的进阶主题如:实验可信度、敏感度、围绕实验数据驱动的整体流程。对于了解`Growth Hacking`/`ABTest`的同学,可以有效的学习实验设施的系统设计,尤其是重叠实验设施要考虑多方面的需求、维度,如何建模是很复杂的;对于不了解`Growth Hacking`/`ABTest`这个领域知识的同学,可以通过这篇文章,学习一个复杂系统整体的思考和设计的模式,包含需求、场景、模型设计、产品流程、落地关键。 + `Google`这篇10年前2010年的关于『实验基础设施』设计的论文,现在看来仍然是关于这个领域最有深度和体系的资料。不单说明了,实验设施的系统设计,还包含实验的进阶主题如:实验可信度、敏感度、围绕实验数据驱动的整体流程。对于了解`Growth Hacking`/`ABTest`的同学,可以有效的学习实验设施的系统设计,尤其是重叠实验设施要考虑多方面的需求、维度,如何建模是很复杂的;对于不了解`Growth Hacking`/`ABTest`这个领域知识的同学,可以通过这篇文章,学习一个复杂系统整体的思考和设计的模式,包含需求、场景、模型设计、产品流程、落地关键。 # 分布式系统/大数据 @@ -77,7 +77,7 @@ Chinese translations for classic IT resources. 1. [理解`Kotlin`协程:自底向上的视角](kotlin-coroutines-bottom-up/README.md) `Kotlin`的协程应该是`Java`生态中最好的协程实现,在生产环境(`Android` / 后端场景)也有比较多实际应用。 无论是`Kotlin`语言还是`Kotlin`协程,都非常注重务实与开发者友好,`Kotlin`协程以大家习惯的命令式/过程式的编程方式写出非阻塞的高效并发程序。 - 但并发编程是计算机最复杂的主题之一,即使是用协程的编写方式;再者`Kotlin`协程的友好使用方式,对于使用者理解协程背后的运行机制其实反而是个障碍。而真正的理解协程才能让使用协程做到心中有数避免踩坑。这篇文章自底向上视角的讲解方式,正是有意于正面解决这个问题:如何有效理解`Kotlin`协程运行机制。 + 但并发编程是计算机最复杂的主题之一,即使是用协程的编写方式;再者`Kotlin`协程的友好使用方式,对于使用者理解协程背后的运行机制其实反而是个障碍。而真正的理解协程才能让使用协程做到心中有数避免踩坑。这篇文章自底向上视角的讲解方式,正是有意于正面解决这个问题:如何有效理解`Kotlin`协程的运行机制。 1. [`Java` `Fork/Join`框架](a-java-fork-join-framework/README.md) _Doug Lea_ 大神关于`Java 7`引入的他写的`Fork/Join`框架的论文。[反应式编程](https://www.reactivemanifesto.org/zh-CN)(`Reactive Programming`/`RP`)作为一种范式在整个业界正在逐步受到认可和落地,是对过往系统的业务需求理解梳理之后对系统技术设计/架构模式的提升总结。`Java`作为一个成熟平台,对于趋势一向有着稳健的接纳和跟进能力,有着令人惊叹的生命活力:`Java 7`提供了`ForkJoinPool`,支持了`Java 8`提供的`Stream`,另外`Java 8`还提供了`Lambda`(有效地表达和使用`RP`需要`FP`的语言构件和理念);有了前面的这些稳健但不失时机的准备,在`Java 9`中提供了面向`RP`的官方[`Flow API`](https://community.oracle.com/docs/DOC-1006738),实际上是直接把[`Reactive Streams`](http://www.reactive-streams.org/)的接口加在`Java`标准库中,即[`Reactive Streams`规范](https://github.com/reactive-streams/reactive-streams-jvm#specification)转正了。`Reactive Streams`是`RP`的基础核心组件,`Java`提供了`Flow API` 标志着 `RP`完成了由 **集市**式的自由探索阶段 向 **教堂**式的规范统一阶段 的转变。通过上面这些说明,可以看到`ForkJoinPool`的基础重要性。 diff --git a/generic-io-api-in-java-and-api-design/README.md b/generic-io-api-in-java-and-api-design/README.md index 44c6abc..6c5eba5 100644 --- a/generic-io-api-in-java-and-api-design/README.md +++ b/generic-io-api-in-java-and-api-design/README.md @@ -1,4 +1,4 @@ -原文链接:[A generic input/output API in Java](https://dzone.com/articles/generic-inputoutput-api-java) - _Rickard Öberg_ (PS:[文章原始链路](http://www.jroller.com/rickard/entry/a_generic_input_output_api)已失效) +原文链接:[A generic input/output API in Java](https://dzone.com/articles/generic-inputoutput-api-java) - _Rickard Öberg_ (PS:[文章原始链接](http://www.jroller.com/rickard/entry/a_generic_input_output_api)已失效) 译文发在:[【译】Java的通用I/O API](http://oldratlee.com/474/tech/java/generic-io-api-in-java-and-api-design.html),2012-05-11 ## 🍎 译序 diff --git a/kotlin-coroutines-bottom-up/README.md b/kotlin-coroutines-bottom-up/README.md index 734f4cc..af5fe8b 100644 --- a/kotlin-coroutines-bottom-up/README.md +++ b/kotlin-coroutines-bottom-up/README.md @@ -6,10 +6,12 @@ 无论是`Kotlin`语言还是`Kotlin`协程,都非常注重务实与开发者友好: -- `Kotlin`语言:相对`Java`,方便简洁(如字符串插值、`smart cast`、`data class`、统一原生类型与包装类型、扩展方法、命名参数、默认参数)与安全(如非空类型)。 -- `Kotlin`协程:以大家习惯的命令式/过程式的编程方式写出非阻塞的高效并发程序。 +- `Kotlin`语言:相对`Java`, + - **方便简洁**。如字符串插值、`smart cast`、`data class`、统一原生类型与包装类型、扩展方法、命名参数、默认参数 + - **安全**。如有效解决`Java`中司空见惯`NullPointerException`的非空类型 +- `Kotlin`协程:以**大家习惯的**命令式/过程式的编程方式写出**非阻塞的高效**并发程序。 -但并发编程是计算机最复杂的主题之一,即使是用协程的编写方式;再者`Kotlin`协程的友好使用方式,对于使用者理解协程背后的运行机制其实反而是个障碍。而真正的理解协程才能让使用协程做到心中有数避免踩坑。这篇文章自底向上视角的讲解方式,正是有意于正面解决这个问题:如何有效理解`Kotlin`协程运行机制。 +但并发编程是计算机最复杂的主题之一,即使是用协程的编写方式;再者`Kotlin`协程的友好使用方式,对于使用者理解协程背后的运行机制其实反而是个障碍。而真正的理解协程才能让使用协程做到心中有数避免踩坑。这篇文章自底向上视角的讲解方式,正是有意于正面解决这个问题:如何有效理解`Kotlin`协程的运行机制。 考虑到原文中只给了代码示例但没有给出代码工程,不方便读者直接运行起来以跟着文章自己探索,译者提供了示例代码的可运行代码工程,参见`GitHub`仓库:[`oldratlee/kotlin-coroutines-bottom-up`](https://github.com/oldratlee/kotlin-coroutines-bottom-up)。 diff --git a/overlapping-experiment-infrastructure-more-better-faster-experimentation/README.md b/overlapping-experiment-infrastructure-more-better-faster-experimentation/README.md index 8cc43c6..329c08d 100644 --- a/overlapping-experiment-infrastructure-more-better-faster-experimentation/README.md +++ b/overlapping-experiment-infrastructure-more-better-faster-experimentation/README.md @@ -3,7 +3,7 @@ ## 🍎 译序 -`Google`这篇8年前2010年的关于『实验基础设施』设计的论文,现在看来仍然是关于这个领域最有深度和体系的资料。不单说明了,实验设施的系统设计,还包含实验的进阶主题如:实验可信度、敏感度、围绕实验数据驱动的整体流程。 +`Google`这篇10年前2010年的关于『实验基础设施』设计的论文,现在看来仍然是关于这个领域最有深度和体系的资料。不单说明了,实验设施的系统设计,还包含实验的进阶主题如:实验可信度、敏感度、围绕实验数据驱动的整体流程。 - 对于了解`Growth Hacking`/`ABTest`的同学,可以有效的学习实验设施的系统设计,尤其是重叠实验设施要考虑多方面的需求、维度,如何建模是很复杂的; - 对于不了解`Growth Hacking`/`ABTest`这个领域知识的同学,可以通过这篇文章,学习一个复杂系统整体的思考和设计的模式,包含需求、场景、模型设计、产品流程、落地关键。 @@ -285,7 +285,7 @@ _Kohavi_ 假设实验与对照实验有相同的大小,比如