小编Sur*_*j M的帖子

异步I/O - Java

我一直在寻找有关Java中异步I/O的优点的详细信息,特别是从应用程序堆栈设计.

我遇到过很多事件驱动服务器的例子,如Node.js,Tornedo等.

我无法理解的是,为什么在Java EE中使用JBoss或Weblogic应用服务器的整个应用程序堆栈迁移到事件驱动的体系结构.

甚至这些服务器也支持非阻塞I/O. 是的,他们正在为每个请求分配一个线程,但是如果有一个线程池,资源是不是在良好的性能参数范围内呢?

请按以下方式向我提供一些意见.

  1. 为什么使用Apache-Tomcat/JBoss/Weblogic的传统Java EE体系结构考虑转向事件驱动的体系结构.
  2. 事件驱动的体系结构是否有助于提供与设备无关的网站/应用程序.
  3. 在云上设计应用程序时,我们会选择异步I/O.
  4. 事件驱动的体系结构性能是否优于传统的Java EE体系结构,还是一个神话.

javascript java io performance event-driven

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

将报告生成为 txt 文件 - 如何设置列标题和详细信息带中文本的确切位置和大小

我们需要使用JasperReports生成文本报告。
精度要准确,样本格式如下

在此处输入图片说明

  1. 标题用户名必须从第 0 列开始。
  2. 上次访问的标题必须从第 23 列开始。
  3. 标题处于活动状态必须从第 34 列开始。
  4. 行分隔符必须有 8 个字符 (---) 并从第 22 列开始
  5. 名称字段必须左对齐并从第 1 列开始
  6. 点字段必须右对齐并在第 45 列结束,精度为 1 位。

所述的JasperReportsexportToText方法不满足上述标准和反复调整的.jrxml未投放的目的。
我们也调整了字符宽度和字符高度,但行和列之间的间距仍然不正确。

JasperReports API是否支持文本格式的这种精度?
有没有其他 API 可以帮助我们实现这种格式?

java jasper-reports fixed-width

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

SonarQube自定义插件,在启动时失败

我正在开发一个自定义的SonarQube插件来创建项目特定的规则集.已编写自定义规则,并且使用JUnit成功执行规则.以下是自定义声纳规则.

@Rule(key = StringConstants.AVOID_SOCKETS_API_KEY)
public class AvoidSocketsApiRule extends IssuableSubscriptionVisitor {

    @Override
    public List<Tree.Kind> nodesToVisit() {
        return ImmutableList.of(Tree.Kind.VARIABLE);
    }

    @Override
    public void visitNode(final Tree tree) {
        final VariableTree variableTree = (VariableTree) tree;
        final Type type = variableTree.symbol().type();
        if (type.is(StringConstants.SOCKET_CHANNEL) || type.is(StringConstants.SERVER_SOCKET_CHANNEL)
                || type.is(StringConstants.ASYNC_SOCKET_CHANNEL) || type.is(StringConstants.ASYNC_SERVER_SOCKET_CHANNEL)) {
            this.reportIssue(variableTree.simpleName(), StringConstants.AVOID_SOCKETS_API_MESSAGE);
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

当我将应用程序打包到声纳插件并部署到sonarqube时,它给我一个非法的状态异常.我能够使用Junit复制该问题.

@Test
    public void test() {
        final CustomRulesDefinition rulesDefinition = new CustomRulesDefinition();
        final RulesDefinition.Context context = new RulesDefinition.Context();
        rulesDefinition.define(context);
        final RulesDefinition.Repository repository = context.repository(StringConstants.REPOSITORY_KEY);

        assertThat(repository.name()).isEqualTo(StringConstants.REPOSITORY_NAME);
        assertThat(repository.language()).isEqualTo(StringConstants.LANG);
        assertThat(repository.rules()).hasSize(RulesList.getChecks().size());

        this.assertAllRuleParametersHaveDescription(repository);
    }

    private …
Run Code Online (Sandbox Code Playgroud)

java sonarqube sonarqube-web

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