分类:scala

学习Scala:环境、工具、工程

在本章中,你将学到如何从零使用Sbt来搭建一个Scala工程,如何将Scala工程导入Intellij IDEA集成开发环境。同时,我们将使用scalatest以TDD的方式来编写代码。 本章的要点包括: 下载并使用sbt: http://www.scala-sbt.org/ 使用Intellij IDEA编写Scala:https://www.jetbrains.com/idea/ 使用sca

Akka HTTP 快速上手

Akka Http 是Akka社区提供的一个 Http服务端/客户端通用工具包,支持 Http 1.0/1.1标准及WebSocket,现在 Http 2 的支持也在紧锣密鼓的实现中。 这篇文章将介绍Akka HTTP Server,我们将介绍Akka Http的常用功能模块及使用方式。Akka Http提供了一套强大、易用、易扩展的route dsl来构建路由。Akka Http Client因

Java/Scala互操作实践 1:基础操作

本文将以Spring Boot为例,介绍下实际工作中的Java/Scala互操作。在提高个人效率、满足自我追求的情况下更多的照顾到团队不同人的实际。同时也是想说明,在同一个工程里混用Java和Scala语言是可能的。 本文源代码在:http://git.oschina.net/hualongdata/spring-starter 对于Scala不熟悉的Java程序员可以先看看:《写给Java程序

Scala开发者的Spring-Boot快速上手指南 02:Scala惯用法

(这是一篇迟来的文章,从3月份计划到成文花了5个月多……以后需要避免这样的低效率。) 之前写第一篇文章时,只是想试试在Spring中使用Scala。但现在随着工作的需要,已经决定在应用层基于Spring boot进行开发。后面的数据服务和数据整合部分将采用Akka。作者是一个Scala粉,但不脑残。鉴于团队、招人及社区生态多方面考虑,整体使用Scala技术栈还是比较困难的。之前就有考虑过把Spri

Scala实战:巧用集合实现数据脱敏

(原文在:《http://www.yangbajing.me/2016/07/25/Scala实战:巧用集合实现数据脱敏》,转载请注明!) 在日常开发中,经常会遇到对数据进行脱敏处理的需求。像隐藏身份证或者手机号中间几位。比如对于:13812345678这个手机号,我们会使用*号替换中间4位来达到隐藏的目的,就像这样:138****5678。这是一个很常见也很简单的功能需求,这里记录下开发中对这个

写给Java程序员的Scala入门教程

(原文链接:http://www.yangbajing.me/2016/07/24/写给java程序员的scala入门教程/,转载请注明) 之前因为Spark的引入,写了一篇《写给Python程序员的Scala入门教程》。那篇文章简单对比了Scala与Python的异同,并介绍了一些Scala的常用编程技巧。今天这篇文章将面向广大的Java程序员,带领Javaer进入函数式编程的世界。 Java

Scala实战:使用Actor来控制集成API的并发请求

本文源码在:https://github.com/yangbajing/scala-applications/tree/master/combine-request 背景最近在一些大数据相关工作,除了自身的数据外,我们也会接入很多外部的第3方数据。这些第3方数据提供商都提供了基于HTTP的服务。当然,这些数据是收费的。而且重复调用是需要重复收费的。这就需要我们在调用数据后把它存储下来,这样在一定时

Scala开发者的Spring-Boot快速上手指南 01

做为一个Scala爱好者,是很想基于 Lightbend 的一套架构进行软件开发的。Play,Akka,Scala,Spark……。不过理想很丰满,现实却很骨感。鉴于那批原教旨主义者,他们对 Spring 已经疯狂迷恋,我等讲道理、讲实际的人也只好将 Scala 与 Spring Boot 进行整合。这两兄弟是和睦的,是友好的,并不是有你无他,完全可以在能力和现实中实现一个美好的平衡。 (文章查考

Akka实战:开发一个多线程新闻爬虫

代码:https://github.com/yangbajing/crawler-service 使用Scala开发一个多线程爬虫,利用Akka库来管理多个爬虫任务的分散和聚合操作。同时使用scheduleOnce来设置爬取任务在指定时间内完成。详细需求如下: 可同时从多个新闻源(搜索引擎)检索新闻 已爬取过的新闻存库,第二次访问时直接从库里读取 提供duration参数,调用方可设置调用超时。

Scala实战:并发-Future和Promise

并发编程是很困难的,特别是在你没有很好的设计与抽像你的功能层次时。传统的并发解决方案是采用多线程和共享变量,这使得随着代码的增加你很难找到错误根源。 Scala中采用了更好的方案,它不是只基于更低层次的线程的。Scala为用户提供了更高级的抽象:Futures和Promises(Akka还提供了基于actor模式的编程范式,是一种更高层次的并发编程抽象。本文主要讲解Futures和Promises

Akka实战:构建REST风格的微服务

使用Akka-Http构建REST风格的微服务,服务API应尽量遵循REST语义,数据使用JSON格式交互。在有错误发生时应返回:{"errcode":409,"errmsg":"aa is invalid,the ID is expected to be bb"}类似的JSON错误消息。 代码: https://github.com/

Akka实战:分散、聚合模式

分散、聚合模式:简单说就是一个任务需要拆分成多个小任务,每个小任务执行完后再把结果聚合在一起返回。 代码 https://github.com/yangbajing/akka-action 实例背景本实例来自一个真实的线上产品,现将其需求简化如下: 传入一个关键词:key,根据key从网上抓取相关新闻 可选传入一个超时参数:duration,设置任务到期时必须反回数据(返回实际已抓取数据) 若

Scala实战-通过微信聊天窗口实现应答式点餐 1:连接微信API

当前代码tag: v0.0.1,https://github.com/yangbajing/wechat-meal/tree/v0.0.1 微信公众号提供了详尽的API文档说明,提供了明文和加密两种接入方式。这里,我们选择加密的接入方式微信公众号接入指南。 本此实战的代码部署到了Heroku,读者也可以下载代码尝试部署到Heroku并连接微信公众号。本章末尾讲讲述Heroku的部署及怎样与微信公众

Scala实战-通过微信聊天窗口实现应答式点餐 0

近来学习Play 2和Akka,想着找一个实战性的项目练练手。正好近来公司提供晚餐,每天看着程序媛拿着手机一个一个的找人点餐,耗时多、且容易点漏、又打断了自身的工作……哥觉得小妹儿工作好累啊。作为一个全栈工程师,为公司小妹儿减轻工作负担义不容辞啊。 就在想,就在想……用什么方法可以简化这个点餐流程呢?把玩着手中的微信,看到同事们在公司群里胡吹海吹,Duang!有了,就做一个基于微信公众号的点餐系统

使用Akka Http,ActiveMQ搭建一个邮件发送服务器

代码地址:https://github.com/yangbajing/scala-applications/tree/master/email-server 应用功能是实现一个基于队列的邮件发送服务,每个邮件发送者(使用smtp协议)作为一个sender。多个sender可以在同一个组(group)中,每个组中的sender将串行发送邮件。 邮件内容可以通过REST API提交,以可以使用JMS发