本文由 简悦 SimpRead 转码, 原文地址 www.zhihu.com scudata
做查询统计的开源包,Python 上有著名的 Pandas,JAVA 上自然就有大批模仿者,其中 Tablesaw 和 Joinery 比较有名,但成熟度、计算能力、函数丰富程度等方面都远不如 Pandas,而且改了还得编译(Pandas 和 SQL 就不用)。如果不怕麻烦且数据量小,倒不如在 SQLite 里建表、读源数据、导入数据,然后用 SQL 做查询统计,全程可以都可以用 JAVA 实现。
纯 Java 的开源包,集算器 SPL 比 SQLite 好用多了,而且不麻烦。
SPL 的接口是 JDBC,程序员看一遍就能学会,比如对 Orders.txt 进行条件查询:
|
|
SPL 做查询统计很方便,除了条件查询,还提供了大量的基本计算函数,比如:
|
|
为了方便数据库程序员,集算器也提供了对应的 SQL 语法,比如分组汇总也可以写作下面这样:
|
|
SPL 支持多种数据源,除了上面的文本文件,还支持数据库、Excel、各类 NoSQL、Restful 等。
SPL 脚本可以像上面那样内嵌于 JAVA 代码(类似 SQL);遇到步骤较多,可能频繁修改,需要降低的运算**耦合性,SPL 脚本也可以外置于脚本文件**(类似存储过程)。比如:在各部门找出比本部门平均年龄小的员工。先将 SPL 脚本存为文件:
A | |
---|---|
1 | =T(“Employee.csv”) |
2 | =A1.group(DEPT; (a=.avg(age(BIRTHDAY)),.select(age(BIRTHDAY)<a)):YOUNG) |
3 | =A2.conj(YOUNG) |
再在 JAVA 代码中以存储过程的方式调用脚本文件:
|
|
有些运算逻辑比较复杂,用数据库存储过程都很难写,而 SPL 提供了更丰富的计算函数和语法,可以大幅简化复杂运算逻辑。比如:计算某支股票最长的连续上涨天数,SPL 只需两行:
A | B | |
---|---|---|
1 | =T(“d:/AAPL.xlsx”) | 读 Excel 文件,首行为列名 |
2 | =a=0,A1.max(a=if(price>price[-1],a+1,0)) | 求最长连续上涨天数 |
外置的脚本文件可以用 SPL 专用的 IDE 进行编辑调试,不仅具备完整调试功能,还能随时观察每一步的计算结果,特别适合设计逻辑更复杂的计算:
在查询统计方面,集算器 SPL 明显比其它开源包更胜一筹,在数据源种类、跨源计算、大数据和并行计算等方面,集算器 SPL 也均有出色表现,这里不再详细展开。
编程百宝库
给大家分享我收藏的教务管理系统自学 zi 料,以及开发工具和练手源码,价值上 w,希望能帮到你
图片上所有的都可以无偿领取哦。
目的希望能帮到对 Java 以及 Web 前端感兴趣想自学的朋友!
在编程语言中 Web 前端和 Java 真的都算是一门很好的编程语言! 无论是应用在生活中还是作为一门职业来说,前景还是算比较不错的。
计算机毕业设计 [源码 + 课件] 基于 Java 开发实现的教务查询系统_Java 入门_教务查询项目_Java 实战项目_哔哩哔哩_bilibili
一般的服务器都需要线程池,比如 Web、FTP 等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的 Tomcat、Resin 和 Jetty 等,现在有了 JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也很方便,性能也非常高。
package concurrent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThreadPool {
public static void main(String args[]) throws InterruptedException {
// only two threads
ExecutorService exec = Executors.newFixedThreadPool(2);
for (int index = 0; index < 100; index++) {
Runnable run = new Runnable() {
public void run() {
long time = (long) (Math.random() * 1000);
System.out.println(“Sleeping” + time + “ms”);
try {
Thread.sleep(time);
} catch (InterruptedException e) {
}
}
};
exec.execute(run);
// must shutdown
exec.shutdown();
}
}
这是一个例子, 感兴趣可以评论区留言!
御坂 10032
Flink Spark 这种算吗?(逃~)