软件简介

Fig(无花果)是一个根据多任务流水线模型开发的运行框架,框架多任务并发使用的java的线程池进行控制,使用队列实现任务间的数据传递

预览版 仓库 地址:https://oss.sonatype.org/content/repositories/snapshots
   maven 依赖 :

<dependency>
  <groupId>com.github.taomus.fig</groupId>
  <artifactId>fig-core</artifactId>
  <version>0.1.0-SNAPSHOT</version>
  <type>module</type>
</dependency>

<dependency>
  <groupId>com.github.taomus.fig</groupId>
  <artifactId>fig-spring-plugin</artifactId>
  <version>0.1.0-SNAPSHOT</version>
  <type>module</type>
</dependency>

 Xtend 代码实例:           

package com.github.test1.stock

import com.github.taomus.fig.core.engine.Data
import com.github.taomus.fig.core.engine.Fig
import com.github.taomus.fig.core.engine.FigEngine
import com.github.taomus.fig.core.engine.Task
import com.github.test.stock.entity.StockData
import java.nio.charset.Charset
import java.util.Arrays
import java.util.Vector
import joinery.DataFrame
import org.apache.commons.lang3.SerializationUtils
import org.jsoup.Connection
import org.jsoup.Jsoup
import org.slf4j.LoggerFactory
import org.springframework.util.StreamUtils

class CollectStock1 extends Fig {
	val static LOG = LoggerFactory.getLogger(CollectStock1)
	
	def static void main(String[] args){
		FigEngine.instance.addModule(CollectStock1)
		FigEngine.instance.run()
		FigEngine.instance.taskQueue.put(Data.create("start",null))
	}
	
	def String getUrl(String code,String date) {
		if (code.startsWith("0")) {
			return ''' http://quotes.money.163.com/service/chddata.html?code=1«code»&start=«date»0101&end=«date»1231
			'''
		} else {
			return ''' http://quotes.money.163.com/service/chddata.html?code=0«code»&start=«date»0101&end=«date»1231
			'''
		}
	}

	@Task("start")
	def Data[] getStockCodes(Data value){
		return #[
			Data.create("buildData",new StockData("平安银行","000001")),
			Data.create("buildData",new StockData("万科A","000002"))
		]
	}
	
	@Task("buildData")
	def Data[] collect(Data value){
		var stockinfo = value.getData as StockData
		var results = new Vector<Data>();
		for(date:2000..2020){
			var info = SerializationUtils.<StockData>clone(stockinfo)
			info.date = String.valueOf(date)
			results.add(Data.create("stock_history",info))
		}
		return results
	}

	@Task("stock_history")
	def Data startHistory(Data value) {
		var d = value.getData() as StockData
		var String url = getUrl(d.code,d.date)
		LOG.info(url)
		var Connection connection = Jsoup.connect(url);
		var Connection.Response response = connection.method(Connection.Method.GET).ignoreContentType(true).timeout(10 *
			1000).execute();
		var a = StreamUtils.copyToString(response.bodyStream, Charset.forName("UTF-8"))
		LOG.info(a)
		var data = a.split("\n")
		if(data.size == 1){
			return null
		}
		var DataFrame<Object> df = new DataFrame("日期", "股票代码", "名称", "收盘价", "最高价", "最低价", "开盘价", "前收盘", "涨跌额", "涨跌幅",
			"换手率", "成交量", "成交金额", "总市值", "流通市值", "成交笔数");
		for(index : 1..data.length-1){
			df.append(Arrays.asList(data.get(index).split(',')))
		}
		var results = new Vector();
		var indexs = df.index();
		for (Object index : indexs) {
			var sd = new StockData()
			sd.date = df.get(index,"日期") as String
			sd.code = df.get(index,"股票代码") as String
			sd.code = sd.code.substring(1)
			sd.name = d.name
			sd.opening = Float.valueOf(df.get(index,"开盘价") as String)
			sd.ending = Float.valueOf(df.get(index,"收盘价") as String)
			sd.low = Float.valueOf(df.get(index,"最低价") as String)
			sd.hig = Float.valueOf(df.get(index,"最高价") as String)
			results.add(sd)
		}
		var resdata = Data.create("calc",results.reverse);
		resdata.priority = 2
		return resdata
	}
	
	@Task("calc")
	def Data calc(Data value) {
		return null;
	}	
}

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于开发技能专区
2015/05/25 10:29

Fig安装

Fig安装通过两种方式: 1,使用可执行包直接安装,在Linux上安装Fig,可以从Github上下载并执行,Fig安装在64位的机器上,可以使用curl命令完成安装,代码清单如下: sudo bash-c “curl -L https://github.com/docker/fig/releases/download/0.5.2/linux>/usr/local/bin/fig” sudo chmod +x /usr/local/bin/fig 2,使用python pip工具安装,首先需要确认pip已经安装,代码清单如下: sudo pip install -U fig 安装完fig可执行...

0
1
发表了博客
2019/04/08 15:10

理解fig,ax = plt.subplots()

fig = plt.figure() ax = fig.add_subplot(1,1,1) fig, ax = plt.subplots(1,3),其中参数1和3分别代表子图的行数和列数,一共有 1x3 个子图像。函数返回一个figure图像和子图ax的array列表。 fig, ax = plt.subplots(1,3,1),最后一个参数1代表第一个子图。 如果想要设置子图的宽度和高度可以在函数内加入figsize值 fig, ax = plt.subplots(1,3,figsize=(15,7)),这样就会有1行3个15x7大小的子图。 控制子图 方法1:通过plt控制...

0
0
发表于服务端专区
2015/05/25 10:28

使用Fig配置WordPress

使用Fig可以很轻松的将Wordpress部署到独立的环境中。首先,你需要安装Fig,然后下载WordPress到当前目录: $ curl https://wordpress.org/latest.tar.gz | tar -xvzf - 这会创建一个目录叫wordpress,你可以修改成你想要的名字。进入wordpress目录,创建一个Dockerfile文件,内容为: FROM orchardup/php5 ADD . /code 该指令会创建一个镜像包含PHP和WordPess环境。 下一步,创建fig.yml,用来启动web服务和数据库。 fig.yml的...

0
0
发表于开发技能专区
2016/03/14 20:44

从fig文件中读取数据

原文地址:http://blog.sina.com.cn/s/blog_4015d6ce0100ujwh.html MATLAB:从fig文件中读取数据作者:GameGaming 1 如果你的fig文件中的图像每个像素都有数据,可以通过以下方式获得图像每个点的值,输出data是矩阵,大小是图像像素的行列数 open('figname.fig'); h=get(gca,'Children'); data=get(h,'Cdata'); 2 如果你的fig文件中图像是由单条曲线绘制而成,比如说plot命令生成的,通过以下方式输出横坐标,纵坐标的取值 op...

0
0
发表了博客
2015/03/10 21:40

PHP-FIG 定义的 PSR-3 日志接口规范

Logger Interface 日志接口 翻译自:http://www.php-fig.org/psr/psr-3/ 本文档描述了一个适用于日志库的通用接口。 主要目标是让广大PHP项目可以简单并且统一的依赖 Psr\Log\LoggerInterface 接口的对象来写日志。框架和CMS们可以根据自己的需要扩展这个接口,但 应该要保持对本文档的兼容。这样可以保证使用第三方库的应用可以使用中心化的日志。 The key words "MUST 必须", "MUST NOT 必须不", "REQUIRED 需要", "SHALL 将要...

0
0
发表于开发技能专区
2015/07/29 15:07

FIG-PHP PSR规范系列1-基础编码规范

1. FIG-PHP与PSR简介 FIG-PHP制定了一系列PHP开发规范,简称PSR,这里FIG是框架互操作工作组(Framework Interoperability Group)的简称,PSR是PHP标准推荐(PHP Standard Recommendation)的缩写。FIG-PHP工作组最初是源于项目代表讨论两个项目之间的共性时,找出可以共事的方式。主要的受众是双方项目组,但PHP界的其他人也在观望。如果其他人愿意采用这里的规范,那么欢迎,但这并非工作组的目标。工作组中没人会告诉你如何...

0
7
发表了博客
2015/03/10 21:40

PHP-FIG PSR-1 # 基本编码标准

本标准包含了 对 用于保障 PHP共享代码的互操作性 的标准编码元素。 The key words “MUST 必须”, “MUST NOT 必须不”, “REQUIRED 需要”, “SHALL 将要”, “SHALL NOT 将不”, “SHOULD 应该”, “SHOULD NOT不应该”, “RECOMMENDED 推荐的”, “MAY 可以”, and “OPTIONAL 可选的” in this document are to be interpreted as described in RFC 2119. 概览 文件 必须 使用 < ? php 和 < ? = 标签。 文件中的PHP代码 必...

0
0
发表于AI & 大数据专区
2015/07/29 12:08

FIG-PHP PSR规范系列4-自动加载

1. PSR-4规范:自动加载 虽然在[PSR-4-Meta]中指出PSR-4是对PSR-0规范的补充而不是替换,但是在[PSR-0]中已经写到PSR-0于2014.10.21被废弃,并在[PSR-4-Meta]中详细写明了PSR-0的不足,已经不能满足面向package的自动加载。 PSR-4规范能够满足面向package的自动加载,它规范了如何从文件路径自动加载类,同时规范了自动加载文件的位置。 1.1 概述 这份PSR规范描述了从文件路径自动加载类。可以与PSR-0规范互操作,可以一起使用。...

0
16
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
5 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部