小编Dru*_*nix的帖子

为什么这段代码不是恒定空间?

我目前正在学习Haskell(通过交易成为程序员,但这是我第一次尝试使用函数式语言).

我想编写一个扫描列表的函数,并返回该列表的最小和最大元素.排序Prelude的功能minimummaximum做法,但两者同时进行.我想出了以下代码:

import Data.List

-- Declaration of rand

minMax :: [Int] -> Maybe (Int, Int)
minMax []   = Nothing
minMax (x:xs) = Just (foldl' f (x, x) xs)
                where
                  f (a, b) c = (if c < a then c else a, if c > b then c else b)
Run Code Online (Sandbox Code Playgroud)

rand是一个生成无限数字列表的函数.问题是,当我追加以下main功能时:

main = print $ minMax $ take 1000000 $ rand 7666532
Run Code Online (Sandbox Code Playgroud)

使用profiling编译并运行所有这些,它显示它使用超过200 MB的内存,所以它绝对不是一个恒定空间函数(我希望它是).

问题是为什么以及我应该改变什么来解决它.据我所知foldl',从左侧折叠列表(它生成的方式相同)并且不是懒惰的,所以我不明白为什么内存使用率如此之高.我很确定这minMax是不正确的功能,只需打印上述列表即可

main = print $ …
Run Code Online (Sandbox Code Playgroud)

performance haskell

33
推荐指数
2
解决办法
1227
查看次数

copy vs std :: move for thets

  • 在该示例中,默认副本和std :: move之间有什么区别?
  • move对象之后,新旧对象之间是否存在依赖关系?
int main () {

    int a = 100;
    std::cout<<&a<<std::endl;

    auto a_copy = a;                 // deduced as int
    std::cout<<&a_copy<<std::endl;

    auto a_move = std::move(a);      // deduced as int
    std::cout<<&a_move<<std::endl;

};
Run Code Online (Sandbox Code Playgroud)

输出:

0x7fffffffe094
0x7fffffffe098
0x7fffffffe09c
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics c++11

25
推荐指数
4
解决办法
9710
查看次数

JAX-WS:与WSDL分离的编译模式

如果在多个Web服务中使用了相当大的模式,那么我想将XSD编译与WSDL编译分开.在一个简化的示例中,单步编译的工作原理如下:

$ wsimport -verbose service.wsdl
parsing WSDL...

Generating code...

org/example/wsdl/mysvc/MySvcPortType.java
org/example/wsdl/mysvc/MySvcService.java
org/example/ns1/Element1.java
org/example/ns1/ObjectFactory.java
org/example/ns1/package-info.java
...
Run Code Online (Sandbox Code Playgroud)

编译xsd并使用生成的剧集文件不起作用:

$ wsimport -b schema3.episode service.wsdl  
parsing WSDL...

[ERROR] Schema descriptor {http://www.example.org/ns1}element1 in
message part "part1" is not defined and could not be bound to Java.
Perhaps the schema descriptor {http://www.example.org/ns1}element1 is
not defined in the schema imported/included in the WSDL. You can
either add such imports/includes or run wsimport and provide the
schema location using -b switch.   line 9 of
file:...jaxepisode_element/service.wsdl
Run Code Online (Sandbox Code Playgroud)

那么如何在wsimport中使用预编译的模式呢?

附录:当包含在另一个模式中时使用该剧集并避免新的编译(d3.jar包含来自schema3 + …

java xsd wsdl jax-ws jaxb

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

solr存储搜索索引,在数据库中还是在文件中?

我是Solr的新手.任何人都可以告诉它存储索引的位置.

  1. 在现有站点数据库中
  2. 创建新数据库
  3. 进入xml文件.

提前致谢

编辑:我问这个是因为我需要一个文件列表复制到生产.假设,如果我在开发环境中索引一个站点,我需要将哪些文件复制到生产环境.我们不希望重新索引整个网站.

EDIT-2我在哪里可以找到索引目录,它存储数据文件夹?

indexing search solr

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

如何从多个项目访问公共资源文件

在我的一个项目中,我有资源存储在/src/test/resources(典型的maven目录结构)中.这些资源正由项目中存储的实用程序类使用.

实用程序类本身正在从其他项目中使用(其他项目依赖于此项目).我会像这样访问资源:

final InputStream inputStreamDobs = 
    ClassLoader.class.getResourceAsStream("/dbunit/clear_db.xml");
Run Code Online (Sandbox Code Playgroud)

但是因为我在不同的项目中使用它的路径不正确 - 它是相对的current project that is being built/tested,而不是实用程序类和资源所在的那个.

有人想过如何处理这个问题?

我需要避免使用绝对路径 - 希望有一种方法来定义实用程序类的相对路径.

我也不想在多个项目上复制资源.干杯.

编辑: 为了给出一个上下文,我有一个XML文件中的表的定义,需要在集成测试后清除(清除整个数据库模式).集成测试位于多个项目中,但清晰的脚本和资源文件对于所有这些都是相同的,并且位于公共父项目中.

EDIT2:

奖金问题:我想访问tables.dtd需要从多个其他项目的XML文件访问的常见DTD文件(让我们称之为).(它将坐在共同的父项目中).

目前我将它复制到多个项目中,我从XML使用指令引用它:

<!DOCTYPE dataset SYSTEM "src/test/resources/dbunit/dobs.dtd">
Run Code Online (Sandbox Code Playgroud)

如何将其指向不同项目中的文件?

java resources dbunit maven

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

用java替换word文档模板中的变量

我想加载一个模板word文档来添加内容并保存为新文档.我正在研究.doc文件.

经过长时间的研究,我只找到了docx的解决方案:

http://www.smartjava.org/content/create-complex-word-docx-documents-programatically-docx4j

http://www.sambhashanam.com/mail-merge-in-java-for-microsoft-word-document-part-i/

所以我想替换以这种格式编写的任何变量:$VAR它的值.我可以用velocity或Apache-poi来做,它的最佳解决方案是什么.任何帮助将不胜感激.

java velocity apache-poi

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

使用BouncyCastle从PEM格式恢复EC私钥

我的应用程序以PEM格式存储私钥,现有代码适用于RSA密钥但我试图切换到EC密钥并且存在问题.密钥恢复似乎有效,并且恢复密钥上的equals方法对原始密钥返回true,但原始密钥上的getAlgorithm()返回"EC"并返回恢复密钥"ECDSA".算法中的差异会导致问题,因为它与相应公钥的算法不匹配.

我做错了什么或者这是PEM解析器中的错误?

这是一个演示问题的测试程序:

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.SecureRandom;
import java.security.spec.ECGenParameterSpec;

import org.bouncycastle.openssl.PEMKeyPair;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.PEMWriter;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import org.immutify.janus.keytool.KeyToolUtils;

public class TestPrivateKeyRecovery
{
    private static final String KEY_ALGORITHM           = "EC";
    private static final String SIGNATURE_ALGORITHM     = "SHA512withECDSA";
    private static final String PROVIDER                = "BC";
    private static final String CURVE_NAME              = "secp521r1";
    private static final String WRAPPING_CIPHER_SPEC    = "ECIESwithAES";

    private ECGenParameterSpec  ecGenSpec;
    private KeyPairGenerator    keyGen_;
    private SecureRandom        rand_;

    public …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle elliptic-curve pem private-key

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

在null对象上调用静态方法

我很想知道你如何解释我在这个测验中发现的这个任务?即使getFoo方法返回null,输出仍然是Getting Object JavaQuiz.我认为应该是NullPointerException.

   public class Foo {

        static String name = " JavaQuiz";

        static Foo getFoo() {
            System.out.print("Getting Object");
            return null;
        }

        public static void main(String[] args) {
            System.out.println(getFoo().name);
        }

   }
Run Code Online (Sandbox Code Playgroud)

java null

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

如何从单击它的位置开始新活动

当我单击任何图像或文本时,活动应从单击的图像或文本的位置开始.我试过了

overridingTransition(R.anim.xyz,R.anim.z);
Run Code Online (Sandbox Code Playgroud)

但这是静态的.我想从图像位置开始活动,而不是从屏幕的左下角或角落开始

android android-animation

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

带 JPA 的 Spring Boot 2.3:CommandLineRunner 完成延迟

我在 Spring Boot 2.3.3 上有一个使用 JPA 的 CommandLineRunner,完成后有 1 分钟的延迟(请参阅下面的日志)。即使不存在实体类并且没有 JPA 操作,也会发生这种情况。它可以通过仅包含一个主要为空的主类的项目来重现。

\n

2.2.7 版本中没有出现这种情况,但 2.3.1 版本中却出现了这种情况。它不仅发生在 h2 上,也发生在其他数据库(derby、oracle)上。如果我只使用 spring-boot-starter-data-jdbc 而不是 spring-boot-starter-data-jpa ,则不会有延迟。

\n

有什么办法可以避免这种延迟吗?

\n
2020-09-01 10:51:57.408  INFO 30314 --- [           main] testcase.SlowShutdown                    : Starting SlowShutdown on io with PID 30314 \n2020-09-01 10:51:57.410  INFO 30314 --- [           main] testcase.SlowShutdown                    : No active profile set, falling back to default profiles: default\n2020-09-01 10:51:57.858  INFO 30314 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFERRED mode.\n2020-09-01 10:51:57.873  INFO 30314 …
Run Code Online (Sandbox Code Playgroud)

java jpa spring-boot

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