NetDiscover 是一款基于 Vert.x、RxJava2 实现的爬虫框架。因为我最近正好在学习 Kotlin 的 Coroutines,在学习过程中尝试改造一下自己的爬虫框架。所以,我为它新添加了一个模块:coroutines 模块。
在前一篇文章《使用 Kotlin + Spring Boot 进行后端开发》中,曾介绍过尝试使用 Kotlin 来做后端开发。这一次,尝试 WebFlux 以及协程。
The Actor Model for Concurrent Computation
2018-08-31 by Liuqingwen | Tags: Kotlin Android 翻译 | Hits
JetBrains开源其Kotlin语言 基于JVM的新编程语言。 Kotlin,类似 Xtend 一样,旨在提供一种更好的 Java 而非重建整个新平台。这两种语言都向下编译为字节码(虽然 Xtend 是首先转换成相应的 Java 代码,再让 Java 编译器完成繁重的工作),而且两者都引入了函数和扩展函数(在某个有限范围内静态地增加一个新方法到某个已有类型的能力)。Xtend 是基于 Eclipse 的,而 Kotlin 是基于 IntelliJ 的,两者都提供无界面构建。能够首先演变到其他 IDE 的语言有可能成为最后的赢家。
作者 | Deepu K Sasidharan 译者 | 张卫滨 策划 | 褚杏娟 本文最初发表于 okta 网站,经原作者 Deepu K Sasidharan 授权由 InfoQ 中文站翻译分享,未经许可禁止转载。 Java 19 已经于日前发布,其中最引人注目的特性就要数虚拟线程了,本文介绍了 Loom 项目中虚拟线程和结构化编程的基础知识,并将其与操作系统线程进行了对比分析。 Java 在其发展早期就具有良好的多线程和并发能力,能够高效地利用多线程和多核 CPU。Java 开发工具包(Ja
所以我从一个简单的Java程序开始,运行一个while循环直到EOF,然后进行JDBC调用来存储值。这是需要花一个小时才完成了,但后来我意识到程序的运行时比创建程序花费的时间更长。因此,任务并不像看起来那么容易。那可以做些什么呢?当然,我意识到我需要并行完成任务。
作为一个开发者来说,避免重复造轮子是很重要的,能让你节省很多时间去专注于开发自己的业务。2018年已经过去一大半了,今天介绍下今年以来业界内比较推崇的几个框架,希望能提高大家的开发效率。
使用DSL的编程风格,可以让程序更加简单干净、直观简洁。当然,我们也可以创建自己的 DSL。相对于传统的API, DSL 更加富有表现力、更符合人类语言习惯。
我们现在已经基本知道 Kotlin 中 DSL 的样子了。但是这些 DSL 都是怎样实现的呢?本节我们就通过实现一个极简的http DSL来学习创建 DSL 背后的基本原理。
RxJava 框架 是 ReactiveX ( Reactive Extensions 响应式编程扩展 ) 在 Java 语言 上的实现 , 该框架 提供了 一系列工具 和 操作符 简化了 异步编程 和 事件处理。
我们在前面的章节中,已经看到了 Kotlin DSL 的强大功能。例如Gradle 的配置文件 build.gradle (Groovy),以及前面我们涉及到的Gradle Script Kotlin(Kotlin)、Anko(Kotlin)等,都是 DSL。我们可以看出,使用DSL的编程风格,可以让程序更加简单干净、直观简洁。当然,我们也可以创建自己的 DSL。
官网:https://guobinhit.github.io/akka-guide/
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
从Scala的2.11.0版本开始,Scala的Actors库已经过时了。早在Scala2.10.0的时候,默认的actor库即是Akka。
3.4 Spark通信机制 前面介绍过,Spark的部署模式可以分为local、standalone、Mesos、YARN等。 本节以Spark部署在standalone模式下为例,介绍Spark的通信机制(其他模式类似)。 3.4.1 分布式通信方式 先介绍分布式通信的几种基本方式。 1. RPC 远程过程调用协议(Remote Procedure Call Protocol, RPC)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC假定某些传输协议的存在,如TCP或UD
有关Kotlin的最新资源我们都可以通过它的官网:https://kotlinlang.org/ 进行了解。
Rx响应式编程的系列框架中,很多朋友对RxJava是最熟悉的,其实它还有很多同胞。比如:RxKotin, RxSwift,RxPhp, RxGo, RxNet, RxJS...,一想到iOS必定对RxSwift很熟悉, Android开发对RxJava却情有独钟!今天就来涨涨RxKotin的姿势!
基础设施层 : 基础设施层 的 协程基础 Api 定义在 kotlin.coroutines.* 包下 ;
近日常有同学来问我如何阅读代码,关于这个问题的一般性答案我特别提了一个问题并自问自答。出于提供一个实际的例子的考量,正好此前综合地阅读 Spark 的 RPC 实现、Flink 基于 Akka 的 RPC 实现和 Actor Model 的通信模型,写成本文分享我阅读分布式计算系统 Spark 和 Flink 中的 RPC 实现的过程和思考。
我在前两篇文章中,带你一起学习了 MapReduce 和 Stream 计算模式,(分布式计算技术MapReduce 详细解读,分布式计算技术之流计算Stream,打通实时数据处理)相信你对批处理和流计算也有了一定的了解。虽然这两种计算模式对数据的处理方式不同,但都是以特定数据类型(分别对应静态数据和动态数据)作为计算维度。
淘宝从2018年开始对整体架构进行反应式升级, 取得了非常好的成绩。其中『猜你喜欢』应用上限 QPS 提升了 96%,同时机器数量缩减了一半;另一核心应用『我的淘宝』实际线上响应时间下降了 40% 以上。PayPal凭借其基于Akka构建的反应式平台squbs,仅使用8台2vCPU虚拟机,每天可以处理超过10亿笔交易,与基于Spring实现的老系统相比,代码量降低了80%,而性能却提升了10倍。能够取得如此好的成绩,人们不禁要问反应式到底是什么? 其实反应式并不是一个新鲜的概念,它的灵感来源最早可以追溯到90年代,但是直到2013年,Roland Kuhn等人发布了《反应式宣言》后才慢慢被人熟知,继而在2014年迎来爆发式增长,比较有意思的是,同时迎来爆发式增长的还有领域驱动设计(DDD),原因是2014年3月25日,Martin Fowler和James Lewis向大众介绍了微服务架构,而反应式和领域驱动是微服务架构得以落地的有力保障。紧接着各种反应式编程框架相继进入大家视野,如RxJava、Akka、Spring Reactor/WebFlux、Play Framework和未来的Dubbo3等,阿里内部在做反应式改造时也孵化了一些反应式项目,包括AliRxObjC、RxAOP和AliRxUtil等。 从目前的趋势看来,反应式概念将会逐渐深入人心, 并且将引领下一代技术变革。
移动端跨平台技术自移动开发诞生以来一直是个热门话题,一是持续关注研发效率,降本提效;二是一套代码多端运行可以提升多端业务逻辑的一致性;三是跨端技术方案通常意味着更佳的高效运维和缺陷修复。
本文主要讲解Scala的并发(并行)编程,那么为什么题目概称geotrellis使用(六)呢,主要因为本系列讲解如何使用Geotrellis,具体前几篇博文已经介绍过了。我觉得干任何一件事情基础很重要,就像当年参加高考或者各种考试一样,老师都会强调基础,这是很有道理的。使用Geotrellis框架的基础就是Scala和Spark,所以本篇文章先来介绍一下Scala编程语言,同样要想搞明白Scala并发(并行)编程,Scala基础也很重要,没有Scala语言基础就谈不上Scala并发编程也就更谈不
今天,Kotlin 官方博客正式发布了 Kotlin 1.3,还附带了一些开源库、构建工具和学习资源。
经常有人问: Akka的Actor和Scala的Actor有什么不同?这里的回答是,从actor 模型角度讲,没什么不同,它们都实现了actor model.
协程并不是 Kotlin 提出来的新概念,其他的一些编程语言,例如:Go、Python 等都可以在语言层面上实现协程,甚至是 Java,也可以通过使用扩展库来间接地支持协程。
1.2 程序执行的三种方式 1.2.1 编译执行 1.2.2 解释执行 1.2.3 虚拟机执行
原标题:Spring认证中国教育管理中心-Spring Data R2DBC框架教程七(Spring中国教育管理中心)
微服务这个词从2013年开始在社区兴起,据2016年一个比较活跃的开发者社区对2000多家企业(包括北美、欧洲、亚太的企业)做的调研报告,已经接近 30%的企业在使用微服务架构,而 15%的企业目前正在试验开发和测试微服务架构,还有 24%的企业正在积极学习和拥抱微服务架构。从这个数据来说,微服务架构正在得到越来越广泛的应用。 微服务这个概念并不是新出现的概念,但可以说是正当红的主角。什么是微服务?微服务能做什么?这些问题可以在网络上找到非常丰富的答案,本文将从语言维度整理现在常用于微服务构建框架,希望能
17.1 测试(Testing)框架 17.2 依赖注入(Dependency Injection)框架 17.3 JSON序列化(JSON serialization)框架 17.4 Web 框架 17.5 数据库访问(Database access)框架 17.6 工具类(Utilities) 17.7 桌面编程(Desktop programming) 17.8 Http库 17.9 并发库kotlinx.coroutines
Kotlin, as a language, provides only minimal low-level APIs in its standard library to enable various other libraries to utilize coroutines. Unlike many other languages with similar capabilities, async and await are not keywords in Kotlin and are not even part of its standard library. Moreover, Kotlin's concept of suspending function provides a safer and less error-prone abstraction for asynchronous operations than futures and promises.
0x00 前言 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。熟悉c和java并发编程的都会比较熟悉共享数据的策略,比如java程序员就会常用到java.util.concurrent包中同步、锁相关的数据结构。 使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争(data race)。处理各种锁的问题是让人十分头痛的一件事。 和共享数据方式相比,消息传递机制最大的优点就是不会产生数据竞争状态(data race)。实现消息传递有两种常见的类型:基于channel的消息传递和
作者 | Roman Elizarov 译者 | 刘雅梦 策划 | 邓艳琴 真正的编程语言是有生命的,是不断变化和发展的。与任何生产代码一样,它们的设计师的大部分时间都花在了缺陷修复和小改进上,而不是花在激进的新特性上。Kotlin 的独特之处在于:它多年来一直以用例和社区驱动的方式发展,早在 2016 年发布 1.0 稳定版本之前就开始了,即使是在 2011 年上市之前也有一段时间了。 1Kotlin 空安全的故事 以 Kotlin 空安全(null-safety)为例。任何语言设计都必须要回答的第一个问
在前面的主题中,我们解释了如何在大范围(in the large)内查看 Actor 系统,也就是说,如何表示组件,如何在层次结构中排列 Actor。在这一部分中,我们将通过实现设备 Actor 来在小范围(in the small)内观察 Actor。
DSL(domain specific language),即领域专用语言:专门解决某一特定问题的计算机语言。由于它是以简洁的形式进行表达,整体上直观易懂,使得调用代码和读代码的成本都得以降低,即使是不懂编程语言的一般人都可以进行使用,所以近年来频频被提起,颇受关注。
上面这段文字摘抄自 Akka 官网(akka.io),翻译成中文也就是:“Akka 是一个为 Java 和 Scala 构建高并发、分布式和弹性消息驱动应用程序的工具包”。而 Akka 具有的一切特性,其实都源自于一个用于处理并发计算问题的模型——Actor 模型。
作者 |Roman Elizarov 编辑 |邓艳琴、孙瑞瑞 真正的编程语言是有生命的,是不断变化和发展的。与任何生产代码一样,它们的设计师的大部分时间都花在了缺陷修复和小改进上,而不是花在激进的新特性上。Kotlin 的独特之处在于:它多年来一直以用例和社区驱动的方式发展,早在 2016 年发布 1.0 稳定版本之前就开始了,甚至在 2011 年上市之前的一段时间也是如此。 Kotlin 空安全的故事 以 Kotlin 空安全(null-safety)为例。任何语言设计都必须要回答的第一个问题是
在操作系统中,我们知道进程和线程的概念以及区别。而协程相比于线程更加轻量级,协程又称微线程。
协程的出现是为了解决异步编程中遇到的各种问题。从高级编程语言出现的第一天,异步执行的问题就伴随出现。
原文链接:http://wetest.qq.com/lab/view/383.html
https://github.com/JessYanCoding/AndroidAutoSize
写散文时,最难的部分往往是写前几句话。在开始构建 Akka 系统时,也有类似的“空白画布(blank canvas)”感觉。你可能会想:哪个应该是第一个 Actor?它应该保存在哪里?它应该做什么?幸运的是,与散文不同,既定的最佳实践可以指导我们完成这些初始步骤。在本文的其余部分中,我们将研究一个简单的 Akka 应用程序的核心逻辑,以向你介绍 Actors,并向您展示如何使用他们来制定解决方案。该示例演示了帮助你启动 Akka 项目的常见模式。
随着使用AndroidX,哪些我常用的库有些已经不能用了,所以就重新记录以下AndroidX下常用的库。
AnEntityCallback通过其泛型类型参数直接与其域类型相关联。每个 Spring Data 模块通常带有一组EntityCallback涵盖实体生命周期的预定义接口。
基于Actor的响应式编程计划分为三部分,第一部分剖析响应式编程的本质思想,为大家介绍何谓响应式编程(Reactive Programming)。第二部分则结合两个案例来讲解如何在AKKA中实现响应式编程。第三部分则是这个主题的扩展,在介绍Reactive Manifesto的同时,介绍进行响应式编程更为主流的ReactiveX框架。 响应式编程(Reactive Programming)到底是什么?从名词定义来讲,中文的响应式并没有很好地展现Reactive的本意。响应这个词语是一个中性词,本身没有任何倾
在现代Android应用开发中,协程(Coroutine)已经成为一种不可或缺的技术。它不仅简化了异步编程,还提供了许多强大的工具和功能,可以在高阶场景中发挥出色的表现。本文将深入探讨Coroutine重要知识点,帮助开发者更好地利用Coroutine来构建高效的Android应用。
Scala 的 Actor 类似于 Java 中的多线程编程。但是不同的是,Scala 的 Actor提供的模型与多线程有所不同。Scala 的 Actor 尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用的情况,进而提升多线程编程的性能。此外, Scala Actor 的这种模型还可以避免死锁等一系列传统多线程编程的问题。
《基于Actor的响应式编程》计划分为三部分,第一部分剖析响应式编程的本质思想,为大家介绍何谓响应式编程(Reactive Programming)。第二部分则结合两个案例来讲解如何在AKKA中实现响应式编程。第三部分则是这个主题的扩展,在介绍Reactive Manifesto的同时,介绍进行响应式编程更为主流的ReactiveX框架。本文是第二部分的第一个案例。 《剖析响应式编程的本质》从Actor模型与响应式编程中找到彼此相配的特征;然而空口无凭,没有一点真凭实据,凭什么他们能立下海誓山盟、比翼双飞呢
领取专属 10元无门槛券
手把手带您无忧上云