我正在将我的财务分析应用程序数据从 MongoDB 迁移到 InfluxDB,因为数据和分析呈指数级增长。
我目前的情况是:
1) 每秒从交易所获取一次报价,并将其存储在称为“报价”的度量中;
2) 每 10 秒运行一次连续查询,将这个“刻度”数据按分钟分组为一个称为“ohlc”(烛台数据)的度量;
这就是我的疑问.. 当我使用 Mongo 作为我的数据库时,在我得到刻度的那一刻,我已经将它转换为烛台数据并计算了一些指标(MACD、EMA、BB、RSI)并存储它。
我看到 InfluxDB 有 Kapacitor 作为它的数据处理器,有一种方法可以在 Kapacitor 中编写一些脚本来计算这个指标,还是我应该将数据流式传输到 NodeJS 并自己计算?
如果我必须流式传输数据,那么最好的做法是什么?
我有一个部署在数字海洋上的 Spring Boot 应用程序,我当前的 Droplet(虚拟 PC,命名为 droplet)有 1GB 的内存。
我的应用程序有一些从某些 API 获取信息并存储在数据库上的 cron 作业,我将解释它:
@Scheduled(cron = "50 0 0/12 * * ?")
Run Code Online (Sandbox Code Playgroud)
^ 这个从表中清除一些值
@Scheduled(cron = "50 0 0/1 * * ?")
Run Code Online (Sandbox Code Playgroud)
^ 同上,但用于另一张桌子
@Scheduled(cron = "0 0/1 * * * ?")
Run Code Online (Sandbox Code Playgroud)
^ 有两个,从 API 获取信息,做一些数学计算,然后将结果存储在 db 上。
我从监控工具中看到的是,我的内存使用量永远不会下降,它总是会上升一点。
大约 5 小时前,它从 40% 的使用率开始,现在是 75%。
我可以做些什么来清理内存使用情况?也许是垃圾收集?
我使用 mysql,顺便说一句
谢谢
- 编辑
我只是运行visualvm,结果是显示:
似乎 gc 实际上正在运行,所以,有什么问题吗?也许我需要在数字海洋中设置最大堆?
java spring garbage-collection memory-management spring-boot
我必须拆分这个字符串:
00016282000079116050
Run Code Online (Sandbox Code Playgroud)
它有预定义的块.应该就是这样:
00016 282 00 0079 116 050
Run Code Online (Sandbox Code Playgroud)
我做了这个代码:
String unformatted = String.valueOf("00016282000079116050");
String str1 = unformatted.substring(0,5);
String str2 = unformatted.substring(5,8);
String str3 = unformatted.substring(8,10);
String str4 = unformatted.substring(10,14);
String str5 = unformatted.substring(14,17);
String str6 = unformatted.substring(17,20);
System.out.println(String.format("%s %s %s %s %s %s", str1, str2, str3, str4, str5, str6));
Run Code Online (Sandbox Code Playgroud)
它有效,但我需要使这段代码更具代表性/更漂亮.
使用Java 8流或正则表达式的东西应该是好的.有什么建议?
java ×2
financial ×1
influxdb ×1
javascript ×1
node.js ×1
regex ×1
spring ×1
spring-boot ×1
stock ×1