小编use*_*544的帖子

压缩InputStream,返回InputStream(在内存中,没有文件)

我试图压缩一个InputStream并返回一个InputStream:

public InputStream compress (InputStream in){
  // Read "in" and write to ZipOutputStream
  // Convert ZipOutputStream into InputStream and return
}
Run Code Online (Sandbox Code Playgroud)

我正在压缩一个文件(所以我可以使用GZIP),但将来会做更多的事情(所以我选择了ZIP).在大多数地方:

我的问题是:

  1. 如果不存在这样的方法,如何将ZipOutPutStream转换为InputStream?

  2. 创建ZipOutPutStream()时,没有默认构造函数.我应该创建一个新的ZipOutputStrem(new OutputStream())??

java zip

10
推荐指数
2
解决办法
9340
查看次数

在 Java 中获取文件大小的最新方法

我知道这个问题已在不同的帖子中广泛讨论:

我的问题是我需要获取大量文件(HD 中存在的常规文件)的大小,为此我需要一个提供最佳性能的解决方案。我的直觉是应该通过直接读取文件系统表的方法来完成,而不是通过读取整个文件内容来获取文件的大小。看文档很难知道具体使用了哪种方法。

本页所述

Files 有 size() 方法来确定文件的大小。这是最新的 API,推荐用于新的 Java 应用程序。

但这显然不是最好的建议,就性能而言。我对不同的方法进行了不同的测量:

  1. file.length();

  2. Files.size(path);

  3. BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class); attr.size();

令我惊讶的是,这file.length();是最快的,必须创建一个File对象而不是使用较新的Path. 如果这也读取文件系统或内容,我现在不会。所以我的问题是:

在最新的 Java 版本 (9/10/11) 中,最快的、推荐的获取文件大小的方法是什么?


编辑

我认为这些细节不会为问题增加任何内容。基本上基准是这样的:

Length: 49852  with previous instanciation: 84676
Files: 3451537 with previous instanciation: 5722015
Length: 48019 with previous instanciation:: 79910
Length: 47653 with previous instanciation:: 86875
Files: 83576 with previous instanciation: 125730
BasicFileAttr: 333571 with previous instanciation:: 366928
..... …
Run Code Online (Sandbox Code Playgroud)

java performance filesize java-11

8
推荐指数
0
解决办法
2179
查看次数

跟踪模式SSL与COOKIE相比有什么优势?

我正在创建部署在Tomcat / EE中的JSF应用程序(带有CLIENTCERT)。默认情况下,jsessionid(使用SecureRandom生成,因此看起来很安全)是在URL中设置的,出于安全原因,我通过更改SessionTrackingMode禁用了该URL 。

现在,我尝试查找使用安全性的优点/缺点:

<tracking-mode>SSL</tracking-mode><tracking-mode>COOKIE</tracking-mode>

(考虑安全性几乎总是会影响性能和其他变量)。问题之一可能是我不知道SSL跟踪模式到底能做什么。该API文档不是很清楚。

什么时候应该使用其中一个?

PS:我知道这不是特定于Tomcat或JSF的,但我需要提供有关该问题的上下文

session tomcat session-cookies jsf-2

7
推荐指数
1
解决办法
2543
查看次数

WAR 部署失败

我有一个 Maven JEE 应用程序在 TomEE 中运行良好。我在 Netbeans: 中创建了一个 SOAP Web 服务New - Web Service,它创建了一个简单的“hello”服务。出于某种原因,我收到一条消息

在此处输入图片说明

您选择的 Web 服务器似乎不支持 JSR 109 规范。要使 Web 服务器能够处理带注释的 Web 服务,应创建 sun-jaxws.xml 文件,并且需要在 web.xml 文件中生成 Web 服务的 servlets 条目

我接受、清理、构建……无论我做什么,每次打开 Netbeans 时我总是收到这条消息。就像变化不是持久的一样。

那么主要的问题是当我尝试运行该项目时。我收到一长串错误

在服务器日志中

SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! org.apache.catalina.core.DefaultInstanceManager cannot be cast to org.apache.tomee.catalina.JavaeeInstanceManager
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5066)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
Run Code Online (Sandbox Code Playgroud)

在日志中

SEVERE: Unable to deploy collapsed ear in war StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebServiceTest]
org.apache.openejb.OpenEJBException: …
Run Code Online (Sandbox Code Playgroud)

java netbeans web-services maven

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

避免使用大型类来实现接口

我一直试图遵循马丁先生和其他人的建议,保持小班授课。很小,只有一个理由换班级。但现在我面临着一个困境,我认为这不会那么方便。

我有一个 s 的接口GenericDatabase。该接口定义了任何实现都必须实现的所有方法(例如getUsersgetUser(id)等),可能有 30 或 40 个。

这种方式非常方便,因为类只需实现该接口,代码就可以与不同的特定数据库无缝协作。然而,问题是这样的实现可以达到+7000行长(上帝级)。

我过去通常所做的就是根据数据库管理的对象将数据库功能划分为不同的类。但它仅适用于一种固定的数据库实现。现在,我可以根据数据库对象(用户、文档等)将功能划分为不同的接口,但维护起来似乎更加负担。首先,我不能保证数据库实现实现所有接口。然后,开发人员需要创建大约 20 个不同的类来实现 20 个不同的接口,而在此之前,所有内容都可以在实现单个接口的单个​​类中找到。所以我不确定这是否是始终保持班级规模较小的规则的例外。

如何重构这个类/设计?

java refactoring interface

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

Zingchart - 按ID添加和删除绘图

这可能是一个简单的问题,但我无法在任何地方找到答案.我有一个图表,我动态添加新图.现在我需要删除一些图,但是我需要通过id识别图,而不是索引.

根据文档,可以通过ID删除绘图.但是,我正在使用Jquery包装器,它只讨论通过索引删除.在任何情况下(有或没有JQuery)我都无法使它工作,我不确定这是因为我添加绘图的方式,我删除它的方式或我自己配置​​绘图的方式.

代码在这里.

(注意我使用的是Jquery包装器,但为了方便,小提琴不是).

var myConfig = {
    'type':'line',
 'series':[

    ]
};
zingchart.render({ 
    id : 'demo-chart', 
    data : myConfig, 
    height: 400, 
    width: '100%' 
});


$('#demo1').click(function() {

zingchart.exec('demo-chart','addplot',{
        //plotid : 'http://mine/2',
        'data' : {
            plotid : 'http://mine/2',
            'values':[69,68,54,48,70,74,98,70,72,68,49,69],
            text : 'To be removed'
        }
});

zingchart.exec('demo-chart', 'addplot', {
    data : {
        values : [10, 20, 15],
        text : 'To stay'
    }
});

zingchart.exec('demo-chart','removeplot',{
        //plotid : 'http://mine/2',
        data : {
            plotid : "http://mine/2"
        }
    });


}); …
Run Code Online (Sandbox Code Playgroud)

jquery zingchart

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

通过流加入字符串

我想加入一个名单:

List<String> names;
names = books.stream()
        .map( b -> b.getName() )
        .filter( n -> ( (n != null) && (!n.isEmpty()) ) )
        .collect(Collectors.joining(", "));
Run Code Online (Sandbox Code Playgroud)

这不会编译说:

不兼容的类型.推理变量R具有不兼容的边界

所以经过一些研究,似乎有些东西我误解了.我认为.map( b -> b.getName() )返回/将类型更改为String,似乎有些错误.如果我使用.map(Book::getName),我仍然会收到错误,但我可能并不完全理解其中的差异.

但是,这不抱怨:

List<String> names;
names = books.stream()
        .map( b -> b.getName() )
        .map( Book::getName )
        .filter( n -> ( (n != null) && (!n.isEmpty()) ) )
        .collect(Collectors.joining(", "));
Run Code Online (Sandbox Code Playgroud)

有人能解释一下为什么吗?关于它们之间的差异的一些教学解释.map( b -> b.getName() ).map(Book::getName)被赞赏,因为我认为我没有做对.

java-8

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

Java 8 - 在括号中映射到逗号分隔的对

什么是最好的方式的Java 8便可获得

Map<Integer, Integer>
Run Code Online (Sandbox Code Playgroud)

像一个字符串:

[k1,v1],[k2,v2],[k3,v3]...
Run Code Online (Sandbox Code Playgroud)

我正在看这样的事情,但我不知道如何"返回"或"映射" StringBuilder:

map.forEach( (k,v) -> s.append("[").append(k).append(",").append(v).append("]") )
                    .collect(Collectors.joining(", "));
Run Code Online (Sandbox Code Playgroud)

在任何情况下,我认为StringBuilder在未来的诉讼时候不适合多线程.

请注意,我可以迭代Map并以旧方式创建所有结构,但我想看看如何使用一些新的Java8功能来完成它.

我认为toString()偶然的一些已经在括号中返回了地图值,这可能很方便,尽管依靠这个并不是一个好主意.

java-8

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

在进行JSF Ajax调用时,将变量设置为null

我有一个@ViewScopedwordController CDI bean.它有一个向a addWord()添加变量的方法.没有AJAX它可以正常工作,但只要我包含它,变量在方法中始终为null .在ajax与JSF一起工作的方式上有一些我缺少的东西.这里出了什么问题?currentWordListf:ajaxcurrentWordaddWord()

<h:form id="saveForm" styleClass="form">
    <h:inputText value="#{wordController.currentWord}" id="words" />
    <h:commandButton action="#{wordController.addWord()}" type="submit" value="+">
        <f:ajax render="wordlist" />
    </h:commandButton>
    <h:panelGroup id="wordlist">
....
Run Code Online (Sandbox Code Playgroud)

ajax jsf-2.2

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

解析SPARQL结果以获取主机名

我有一个巨大的三元组列表,如下所示:

?s ex:url ?url
Run Code Online (Sandbox Code Playgroud)

哪里?url可以:

www.ex.com/data/1.html
www.ex.com/data/2.html
www.google.com/search
...
Run Code Online (Sandbox Code Playgroud)

使用SPARQL查询是否有可能以某种方式过滤查询并获取不同的域列表?在示例中,www.ex.comwww.google.com.

像这样的东西:

SELECT distinct ?url
WHERE { ?s ex:url ?url }
Run Code Online (Sandbox Code Playgroud)

但治疗每个网址绑定.当然我可以全部获取它们,并在我的程序中逐个处理每个URL,但我认为sparql查询会更有效.我正在使用Stardog - 以防它有一些自定义功能.

sparql stardog

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