小编TC1*_*TC1的帖子

从匿名内部类设置外部变量

有没有办法从Java中的匿名内部类访问调用者范围的变量?

以下是了解我需要的示例代码:

public Long getNumber(final String type, final String refNumber, final Long year) throws ServiceException {
    Long result = null;
    try {
        Session session = PersistenceHelper.getSession();
        session.doWork(new Work() {
                public void execute(Connection conn) throws SQLException {
                    CallableStatement st = conn.prepareCall("{ CALL PACKAGE.procedure(?, ?, ?, ?) }");
                    st.setString(1, type);
                    st.setString(2, refNumber);
                    st.setLong(3, year);
                    st.registerOutParameter(4, OracleTypes.NUMBER);
                    st.execute();
                    result = st.getLong(4) ;
                }
            });
    } catch (Exception e) {
        log.error(e);
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

代码位于DAO服务类中.显然它不会编译,因为它要求result是final,如果是 - 它不会编译,因为我尝试修改最终的var.我被JDK5绑定了.除了doWork()完全放弃之外,有没有办法从内部设置结果值doWork()

java anonymous-class

52
推荐指数
5
解决办法
4万
查看次数

基于用户角色渲染JSF组件

如何根据登录用户的角色呈现JSF组件?我知道外部上下文暴露了主体,但是我应该如何在JSF中正确地进行呈现?在JSP中它会是这样的

<% isUserInRole(Roles.ADMIN) { %>
<button>Edit!</button>
<% } %>
Run Code Online (Sandbox Code Playgroud)

我如何以最好的方式在JSF中编写这个?我最好的猜测是渲染属性绑定到一个返回布尔值的支持bean的方法,但如果我必须只为管理员渲染一些导航项,那将引入一个无关的支持bean ...

Glassfish V3.1,JSF 2.x

jsf jsf-2

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

C++机器学习框架

我似乎无法找到一个基于C++的ML/AI框架,它实现了各种各样的神经网络算法.我在使用Java时已经将Encog用于这些目的,但是在C++中我没有看到任何类似的功能.我见过的最接近的是FANN,但它缺少一些东西,例如LMA和退火.

编辑:我发现的最好的选择是Shark,但正如我所说,它仍然缺乏,只有更常用的功能,没有LMA,退火或PSO或任何该级别的任何东西.

c++ frameworks artificial-intelligence machine-learning

11
推荐指数
2
解决办法
2万
查看次数

Typesafe forName类加载

Class.forName()结果是通用类型时如何调用?通常我都可以使用asSubclass(),但是在这里,我看到的唯一方法就是演员阵容,当其他所有东西都很好地输入泛型时,它会突然出现并让我烦恼.

场景如下:

有一个带有一个入口点主类的.jar main().它需要一个类名的选项(以及其他一些,在这里无关紧要).给出了类的实现Callable<Integer>.此类已加载,初始化和启动.

这是我需要的一个例子:

Class<? extends Callable<Integer>> clazz = (Class<? extends Callable<Integer>>) Class.forName(options.valueOf(className)).asSubclass(Callable.class);
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱那个演员?

使用SE6.

java generics

8
推荐指数
1
解决办法
3460
查看次数

Boost Asio回调不会被调用

我正在使用Boost.Asio进行网络操作,他们必须(实际上,可以,没有复杂的数据结构或任何东西)保持相当低的水平,因为我无法负担序列化开销的奢侈(和我发现的libs提供足够好的表现似乎非常适合我的情况).

问题在于我正在从客户端进行异步写入(在QT中,但这应该与此无关).在指定的回调中async_write,永远不会被调用,而且我完全不知道为什么.代码是:

void SpikingMatrixClient::addMatrix() {
    std::cout << "entered add matrix" << std::endl;
    int action = protocol::Actions::AddMatrix;
    int matrixSize = this->ui->editNetworkSize->text().toInt();
    std::ostream out(&buf);
    out.write(reinterpret_cast<const char*>(&action), sizeof(action));
    out.write(reinterpret_cast<const char*>(&matrixSize), sizeof(matrixSize));
    boost::asio::async_write(*connection.socket(), buf.data(),
                             boost::bind(&SpikingMatrixClient::onAddMatrix, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
Run Code Online (Sandbox Code Playgroud)

它调用第一次写入.回调是

void SpikingMatrixClient::onAddMatrix(const boost::system::error_code& error, size_t bytes_transferred) {
    std::cout << "entered onAddMatrix" << std::endl;
    if (!error) {
        buf.consume(bytes_transferred);
        requestMatrixList();
    } else {
        QString message = QString::fromStdString(error.message());
        this->ui->statusBar->showMessage(message, 15000);
    }
}
Run Code Online (Sandbox Code Playgroud)

即使服务器接收到所有数据,也不会调用回调.任何人都可以想到它可能会这样做的任何原因吗?

PS这个连接有一个包装器,是的,可能会有一个连接器.一两天前放弃它,因为我找不到这个回调的问题.

c++ boost-asio

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