主页

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

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

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

随着业务和数据的需要,我们引入了Spark。Spark对Python的支持还是挺好的,但毕竟它还是使用Scala开发的,且现有的API并没有100%覆盖Python。所以就有了这篇文章,让Python程序员可以接触Scala这门更高(级)、更快(速)、更强(大)的(奥运精神)语言。 Scala兼具Python样的开发效率,但又有Java般的执行性能,真是一不可多得的神器!(当然,鱼和熊不可兼得,S

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,设置任务到期时必须反回数据(返回实际已抓取数据) 若

JVM程序员书单

JVM程序员书单 为什么是JVM程序员书单,因为现在Java已经不再单指Java编程语言了,而是说整个Java生态环境和基于JVM平台的各种虚拟机语言。如:Scala、Clojure、Groovy等。 《软件框架设计的艺术》 这是Netbeans的创始人写的一本很有价值的书,里面的边角细节也很有料。国内市场上没有对这本书给予应给的赞誉。 《Effective Java 第二版》 被称为Java领域

Nginx负载均衡与反向代理

一般在应用部署中都不会直接把Web Server(如:Tomcat、Jetty等)暴露给用户,我们会在Web Server前面再加一个反向代理。这篇文章介绍的就是怎样设置Nginx来做反向代理。 Nginx安装以Ubuntu 14.04为例(其它系统请自行查找安装方法)。官方安装文档在:http://nginx.org/en/download.html 1234567curl http://ng

Elasticsearch初步使用

集群安装安装一个两个结节的简单集群,其中一个Master,一个Slave。两台机器的网络分别是: 12192.168.31.101 sc-007192.168.31.48 scdev-001 Master配置 123456789cluster: name: sc0node: name: sc-007 master: truenetwork: host: 192.168.31.101d

Canssandra开始

Install Cassandra1234567sudo mkdir -p /usr/app/cassandrasudo chown -R $(whoami) /usr/appcd /usr/app/cassandrawget http://apache.fayea.com/cassandra/2.1.11/apache-cassandra-2.1.11-bin.tar.gztar zxf apa

Spark小试牛刀

随着项目的运营,收集了很多的用户数据。最近业务上想做些社交图谱相关的产品,但因为数据很多、很杂,传统的数据库查询已经满足不了业务的需求。试着用Spark来做,权当练练手了。 安装Spark因为有Scala的开发经验,所以就不用官方提供的二进制包了,自编译scala 2.11版本。 下载Spark:http://ftp.cuhk.edu.hk/pub/packages/apache.org/spar

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发

使用Gatling进行性能测试

Gatling下载是一款开源的性能测试工具,提供简洁、强大的DSL API编写测试套件,支持插件扩展,且自动生成美观、明了的HTML测试报告。 Gatling现在最新版本是:2.1.7。需要scala 2.11支持。 Gatling有多种执行方式,可以使用官话的bundle包,使用gatling.sh脚本执行,也可以使用使用gatling-sbt下载在Sbt工程里执行,也可以集成到如Jenkins

Learn Spark - 安装

安装下载 Spark 1.4.1 1wget -c http://www.interior-dsgn.com/apache/spark/spark-1.4.1/spark-1.4.1.tgz 编译Spark,使用 scala 2.11 12./dev/change-version-to-2.11.shmvn -Dscala-2.11 -DskipTests clean package 运行 spa