当前位置: 首页 > 面试题库 >

在Java EE应用程序中处理大记录

孙俊彦
2023-03-14
问题内容

有一个phonenumbers包含两列的表:idnumberhalf a million entries桌子上有关于。数据库是MySQL

要求是开发一个连接到该数据库的简单Java EE应用程序,该应用程序允许用户通过遵循特定的URL 下载所有numbercomma separated style

如果我们将所有值组合成一个大块String array,然后将它们连接在一起(所有值之间用逗号分隔)String,然后将其发送给用户,这听起来是一个合适的解决方案吗?

应用程序不是公开的,将由有限号使用。人。


问题答案:

最好的选择是 不要 以任何方式将数据存储在Java内存中,而只是在数据进入时 立即 将获取的数据写入响应中。您还需要配置MySQL
JDBC驱动程序以逐行提供结果集通过Statement#setFetchSize()为每MySQL
JDBC驱动程序文件
,否则将缓存整个事情的记忆。

假设您熟悉Servlet,这是一个启动示例,其中考虑了所有方面:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition", "attachment;filename=numbers.txt"); // Force download popup.

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    Writer writer = response.getWriter();

    try {
        connection = database.getConnection();
        statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
        resultSet = statement.executeQuery("SELECT number FROM phonenumbers");

        while (resultSet.next()) {
            writer.write(resultSet.getString("number"));
            if (!resultSet.isLast()) {
                writer.write(",");
            }
        }
    } catch (SQLException e) {
        throw new ServletException("Query failed!", e);
    } finally { 
        if (resultSet != null) try { resultSet.close; } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close; } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close; } catch (SQLException logOrIgnore) {}
    }
}


 类似资料:
  • 问题内容: 我已经看过很多关于此的文章和SO问题-但我只是没有使它起作用。我的目标是在JavaEE应用程序中将Jackson用作JSON处理器。到目前为止我有什么? pom.xml 要么这个 问题答案: 我的猜测是您使用的是Glassfish,它使用MOXy作为其默认JSON提供程序。您可以使用禁用它。 该具有自动发现功能,它应该自动注册。对于Glassfish,我不确定自动发现功能,以及它在内部

  • 我有一个带post请求的控制器。我试图用一个简单的NotNull注释验证POJO。我正在使用ControllerAdvice来处理异常。 所以我尝试使用它,但当我启动应用程序时,我得到了以下信息: 因此,我想为BindException创建自己的处理程序,但当我为BindException类创建ExceptionHandler时,spring应用程序不会启动。如果我注释掉handleBindExc

  • 我正在使用以下源代码目录结构的JavaEE Web应用程序: 我感兴趣的文件夹是:它包含、用于设置servlet的xml文件、SpringBean连接上下文以及JSP标记和视图。我试图理解是什么限制/定义了这种结构。例如,JSP文件是否总是必须在中,或者它们可能在其他地方?在WEB-INF中是否还有其他内容?维基百科的WAR文件条目提到了Java类的,JAR文件的——我不确定除了其他源文件位置之外

  • 我将使用ADFS作为身份提供者(IDP)实现对java应用程序的单点登录。通过OneLogin找到了此解决方案SSO,并使用了其示例应用程序。除此之外,还有另一个解决方案Shibboleth。 我想知道与我的上下文匹配的最佳解决方案是什么。之间,这不是Spring应用程序。 谢谢

  • 问题内容: 我是python的新手。我尝试登录python,但遇到尝试通过记录器实例打印一些警告时 找不到记录器 错误的 处理程序 。下面是我尝试的代码 我收到此错误, 找不到记录程序“ logger”的处理程序 令我感到困惑的是,当我第一次尝试使用,然后通过来打印警告时,它可以正常工作,例如 有人可以阐明第二种情况下发生的事情吗? 问题答案: 为了通过记录一些消息,在Python中至少应将一个处

  • 因此,我们的想法是从2015年开始对现有的meteor应用程序进行归档。该应用程序分为两部分(后端和前端)。我已经制作了一个巨大的bash脚本来处理所有旧的依赖项。。。软件依赖项。。。等等。我只需要运行脚本,我们就可以让应用程序运行了。但现在的想法是为该项目创建一个docker形象。我应该如何做到这一点?我应该创建一个空的docker映像并在那里运行脚本吗?。谢谢我是docker的新手。