小编The*_*unk的帖子

Java Spark/Velocity Templates/SQL2o

我正在将Spark Java Web Framework与Apache的Velocity Template Engine结合使用,以帮助设计一个从SQL数据库中提取数据的响应式Web应用程序.使用SQL2o我创建了一些自定义类类型的Java对象,即用户,组,站点等.

我已经检查过并填充了创建的对象列表.当我然后将我的对象列表放入一个hashmap并返回一个ModelandView时,出于某种原因我的列表就在那里但我不能在vtl中使用它的任何属性.

main方法和Spark代码的相关部分:

public static void main(String[] args) {

        WEB_LOGMGR loggr = new WEB_LOGMGR(true);
        WEB_DBMGR dbmgr = new WEB_DBMGR(true, loggr);
        Model backend = new ScadaModel(dbmgr, loggr);

        System.out.println(dataToJson(backend.getUsers()));

        staticFiles.location("/");
        staticFiles.externalLocation("/");
        String layout = "/templates/layout.vtl";
        //secure("public/keystore.jks", "password", null, null);

        before("/form", (request, response) -> {
            boolean authenticated = false;
            // ... check if authenticated
            if (!authenticated) {
                halt(401, "You are not welcome here");
            }
        });

        get("/", (req, res) -> {
            HashMap pdata = new HashMap();
            pdata.put("template", "/templates/main.vtl");
            return …
Run Code Online (Sandbox Code Playgroud)

java list vtl spark-java

5
推荐指数
1
解决办法
230
查看次数

等待 List<CompletableFuture<Void>> 指示所有操作已完成的正确方法

我正在使用 runAsync() 运行数百个函数。所有的函数都会修改一些静态可用的列表,因此不需要返回任何内容。在继续我的处理之前,我想确保它们都完成了。这是适当的等待方式吗?有没有更简单的方法来完成我想要做的事情?

List<CompletableFuture<Void>> futures = new ArrayList<>();
active_sites.forEach(site -> site.getEntryPoints().stream().map(EntryPoint::scanEntryPoint).forEach(futures::add));
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
Run Code Online (Sandbox Code Playgroud)

java multithreading completable-future java-15

5
推荐指数
1
解决办法
142
查看次数

使用钩子触发子组件(react-table)的重新渲染

我对 React、函数式编程、Javascript 和 JSX 还很陌生,所以如果这是一个愚蠢的问题,请简单点。

我正在修改react-table v7 中的示例material-ui 表之一。原始代码可以在这里找到。该示例功能齐全,并且使用 React Hooks 而不是类,我正在使用的模板的所有组件也是如此(向 Creative-tim.com 致敬!)

我的父函数(代表仪表板应用程序中的页面),例如 Users.js 或 Stations.js 从 useEffect 挂钩内的后端 api 获取数据。然后,该数据作为 props 传递给我的子组件 ReactTables.js

由于某种原因,在父页面的 useEffect 完成后,ReactTables.js 不会收到对“data”属性的更改。但是,一旦我修改 ReactTables 子组件(在本例中为 AddAlarmDialog.js)中的数据,表就会重新呈现,并且我的所有数据都会突然出现。

当父组件的 useEffect 返回数据时,如何触发子组件的重新渲染?我注意到在旧版本的 React 中,有一个名为 componentWillReceiveProps() 的生命周期函数。这是我需要在这里效仿的行为吗?

父组件示例 (Alarms.js):

import React, { useEffect, useState } from "react";
// @material-ui/core components

// components and whatnot
import GridContainer from "components/Grid/GridContainer.js";
import GridItem from "components/Grid/GridItem.js";

import ReactTables from "../../components/Table/ReactTables";

import { server } from "../../variables/sitevars.js";

export default function …
Run Code Online (Sandbox Code Playgroud)

rendering reactjs react-table react-hooks use-effect

4
推荐指数
1
解决办法
8607
查看次数

并发执行:Future vs parallelstream

我编写了一个可调用的函数来轮询远程客户端以获取信息,并以List形式返回该信息.我正在使用threadpoolexecutor,for循环,以及Future与多个远程客户端并行执行任务.然后我将所有Future列表与addAll()组合在一起,并使用巨型组合列表.

我的问题是,使用parallelstream()会比使用future和for循环更有效吗?编码肯定更容易!如果我走那条路,我会不再需要threadpoolexecutor?

谢谢!

        for(SiteInfo site : active_sites) {
            TAG_SCANNER scanr = new TAG_SCANNER(site, loggr);
            Future<List<TagInfo>> result = threadmaker.submit(scanr);

            //SOUND THE ALARMS
            try {
                alarm_tags.addAll(result.get());
            } catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

可能的解决方案代 Netbeans在这些方面提出了一些建议

active_sites.parallelstream().map((site) -> new TAG_SCANNER(site, loggr)).map((scanr) -> threadmaker.submit(scanr)).forEach((result) -> {
            //SOUND THE ALARMS
            try {
                alarm_tags.addAll(result.get());
            }
            catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
            }
        });
Run Code Online (Sandbox Code Playgroud)

java parallel-processing performance future java-stream

3
推荐指数
2
解决办法
3020
查看次数

Spark 框架和相对路径

我正在使用Spark 框架创建一个 Web 应用程序,并且我一直在浏览他们网站上的教程。目前,我正在处理他们的模板部分,但是我似乎无法让项目识别出我的 css 和我的模板在我的资源文件夹中。

我正在使用 Netbeans 和 Maven 来管理我的依赖项。

谁能帮我弄清楚如何在这种环境中适当地设置我的相对路径/创建我的项目文件夹?我是 Maven 和 Spark 的新手,所以请放轻松。

java netbeans relative-path maven spark-java

0
推荐指数
1
解决办法
1890
查看次数