【发布时间】:2016-11-04 22:40:31
【问题描述】:
我有一个增强的 for 循环,进入 ch.ethz.ssh2.connection 以获得超过 200 个值。每次进入循环时,都会对新服务器进行身份验证,并且它只从该服务器检索一个值。每次循环时,数据都被保存到一个数组列表中,以便使用 thymeleaf 显示在 html 表中。但是这种方法需要永远让 Eclipse 一次运行所有 200 个值,然后当我打开 localhost:8080 以加载所有包含所有数据的表时,它必须重新启动。加载页面需要超过 5 分钟。我可以做些什么来加快速度?
代码问题
List<DartModel> data = new ArrayList<DartModel>();
for(String server:serverArray) {
try {
conn = new ch.ethz.ssh2.Connection(server);
conn.connect();
boolean isAuthenticated = conn
.authenticateWithPassword(username_array[j],
password_array[j]);
if (isAuthenticated == false) {
throw new IOException("Authentication failed.");
}
我需要以某种方式重新编码上面的代码,以便我可以超快速地获取所有数据。
输出
Loop1: Server1
Loop2: DifferentServer2
Loop3: AllDifferentSever3
and goes on......
替代方案
我正在考虑让java程序运行几次,同时将数据保存到redis中。然后自动刷新程序,当它运行时将数据发送到redis。设置过期时间,但我无法将数据放入 thymeleaf html 表中。这行得通吗?如果是这样,我怎样才能将其显示到百里香中。
【问题讨论】:
-
添加代码会有所帮助
-
为什么您通过 SSH 而不是一些 HTTP API 接收值? (因为您正在加载 HTML 页面)
-
使用 FindBugs 给出关于 string+ 等的警告。分析是有意义的。
-
如何让程序一次性吐出所有值?每个“服务器”在每个循环中都有不同的值。
-
您也许可以使用线程从 200 个服务器地址中取出“块”,但不清楚每个线程应该做什么。
标签: java