小编Emi*_*Sit的帖子

在规则执行时定义make变量

在我的GNUmakefile中,我希望有一个使用临时目录的规则.例如:

out.tar: TMP := $(shell mktemp -d)
        echo hi $(TMP)/hi.txt
        tar -C $(TMP) cf $@ .
        rm -rf $(TMP)
Run Code Online (Sandbox Code Playgroud)

如上所述,上述规则在解析规则时创建临时目录.这意味着,即使我没有直接创建.tar,也会创建许多临时目录.我想避免我的/ tmp被未使用的临时目录弄乱.

是否有办法使该变量仅在触发规则时定义,而不是在定义时定义?

我的主要想法是将mktemp和tar转储到shell脚本中,但这看起来有点难看.

makefile gnu-make

186
推荐指数
4
解决办法
14万
查看次数

为什么Java VM中的内存管理如此可见?

我正在编写一些简单的基于Spring的Web应用程序并将它们部署到Tomcat.几乎立即,我遇到了使用-XX:MaxPermSize(和-Xmx和-Xms)定制Tomcat的JVM设置的需要; 没有这个,服务器很容易耗尽PermGen空间.

与其他垃圾收集语言相比,为什么Java VM会出现这样的问题?比较Java,Ruby,Perl和Python中X的"调整X内存使用量"的计数,表明Java在谷歌中的命中率比其他语言的组合容易多了一个数量级.

我也有兴趣参考技术论文/博客文章/等解释JVM GC实现背后的设计选择,跨越不同的JVM或与其他解释语言VM进行比较(例如将Sun或IBM JVM与Parrot进行比较).是否有技术原因导致JVM用户仍然需要处理非自动调整堆/ permgen大小?

java jvm memory-management

21
推荐指数
2
解决办法
1454
查看次数

如何列出Maven项目中的活动子模块?

我有一个复杂的项目,其中有许多目录有POM文件,但只有一些是特定父项目的子模块(可能是传递).

显然,Maven知道相关文件的列表,因为它解析所有<module>标签以找到它们.但是,我只看到<name>[INFO]注释中的s 列表,而不是这些模块的路径.

有没有办法让Maven输出所有POM文件的列表,这些文件提供对作为给定项目的reactor构建的一部分的项目的引用?

maven-2

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

git checkout - 如何在切换分支时保持时间戳?

我经常在分支之间来回切换.我有一个脚本,它将结帐的内容推送到"运行"环境,在那里我可以看到代码运行并测试它(它是一个Web应用程序).此推送脚本的核心使用rsync,它使用时间戳来检测应该传输哪些文件.因为git-checkout似乎将文件的时间戳设置为当前时间,所以rsync报告所有文件都被推送,只是因为时间戳将被更新.

如何在分支之间切换时让git-checkout保留时间戳,以便rsync仅报告内容更改?

我不想使用rsync的校验和参数,因为它非常慢.

git rsync

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

带有集合ArrayIndexOutOfBoundsException的Hibernate投影

大家好我有这个代码:

Criteria criteria = session.createCriteria(Department.class);

ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("id"), "id");
properties.add(Projections.property("name"), "name");
properties.add(Projections.property("children"), "children");

criteria.setProjection(properties);
criteria.setFetchMode("children", FetchMode.JOIN);
criteria.setResultTransformer(Transformers.aliasToBean(Department.class));

criteria.add(Restrictions.isNull("parent.id"));
criteria.add(Restrictions.eq("active", true));

return criteria.list();
Run Code Online (Sandbox Code Playgroud)

和实体类

public class Department extends Model {

    @Size(max = 200)
    private String name;

    @Size(max = 10)
    private String sg;

    @Size(max = 1000)
    private String description;

    @ManyToOne
    @JoinColumn(name = "id_parent")
    private Department parent;

    private boolean active;

    @OneToMany(mappedBy = "parent")
    private List<Department> children;
Run Code Online (Sandbox Code Playgroud)

......加上吸气剂和二传手......

我执行标准并给我stacktrace异常:

java.lang.ArrayIndexOutOfBoundsException: 2
at org.hibernate.loader.criteria.CriteriaLoader.getResultRow(CriteriaLoader.java:166)
at org.hibernate.loader.criteria.CriteriaLoader.getResultColumnOrRow(CriteriaLoader.java:146)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:747)
at org.hibernate.loader.Loader.processResultSet(Loader.java:949)
at org.hibernate.loader.Loader.doQuery(Loader.java:917)
at …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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

如何自动配置Eclipse?

从事项目工作的团队往往需要Eclipse的通用配置.这包括常规配置和项目特定配置.例如,通常,每个人都可能希望共享缩进,安装某些插件(例如m2eclipse,testng,egit,Spring支持).此外,对于项目,您可能需要特定的插件配置(例如,对于m2eclipse,设置自定义Maven设置文件,为eclipse构建事件配置额外的Maven目标),或者自定义Eclipse目标平台,甚至只是为了设置某些自定义发射器.

目前,我的团队执行一系列手动步骤,尝试正确配置所有内容.这很乏味,容易出错,新开发人员难以遵循.说明也往往过时了.

这种配置在多大程度上可以自动化?应该怎么做?

java eclipse maven-2 m2eclipse

7
推荐指数
2
解决办法
3508
查看次数

为什么Maven禁用HTTP请求的缓存?

HTTP请求的默认Maven设置(例如Maven用于从存储库获取工件的设置)包括以下标头:

Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)

这似乎是记录在案的行为.HTTP的默认Maven旅行车(即"轻量级"客户端)似乎不允许禁用这些标头.

为什么Maven默认以这种方式配置?对于实际拥有版本的工件,它们永远不会改变,对吧?

我在许多开发人员共享一个公共HTTP代理的环境中工作,这种行为意味着开发人员永远不会从缓存中受益.并且,我们拥有dependencyManagement所有依赖项,并且不使用SNAPSHOT或其他可能更改的版本,因此缓存似乎应该是安全的.

我可以在settings.xml或pom.xml中放置什么来禁用这些标头并允许我们的代理缓存响应并返回它们?

maven-2 http wagon

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

在这种情况下如何最好地使用SVN?

寻求关于如何在我的产品开发中使用SVN的建议.

目前我正在使用我的产品的2.2版,并开始使用带有eclipse的SVN来跟踪我的代码.但是,我将开始在该产品的第3版上工作,该版本与2.2基本相同,只有一些大修和一些新功能.

问题是虽然2.2仍然会进行错误修复和一些小功能/调整,可能还有2-3个版本才能成为文具,并且没有更多工作在它上面 - 希望及时发布版本3.所以目前如果我的行李箱是2.2,并且此时有稳定的标签,我该从哪里开始?请记住,我希望3在行李箱中从这个标签分支,但是如果我做了一个小的改动或错误修复,2.2和3有类似的类我希望它在版本3中重新实现而不是必须实现错误修复两次,在v2.2(主干)和v3分支.

值得注意的是,我的v3分支可能在其上有分支,用于"实验"功能,这些功能可能无法进入该特定产品的第一个稳定版本.

对于这种情况的最佳实践的任何想法将不胜感激.

svn version-control repository

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

为git合并使用单独的提交消息更好吗?

我来自SVN背景,所以我不确定典型的git工作流程是什么样的.合并SVN时,提供描述合并的提交消息.这是必要的,因为SVN的合并跟踪在历史上一直很差.

我注意到git的默认行为是如果成功则自动提交合并的结果.这意味着日志通常不会显示合并,因此历史记录中的所有内容看起来都是在一个分支中开发的.这是否更适合将合并显示为额外提交?我可以想出几个原因以及为什么不这样做,但我想要其他用户的一些意见.

svn git merge commit

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

"类型不匹配:无法从空转换为双"是什么意思?

我正在尝试解决Java的Art&Science,二次方程的解决方案.

import acm.program.*;

public class QuadraticEquation extends ConsoleProgram {
  public void run(){
    println("Enter coefficients for quadratic equation");
    int a = readInt("Enter first number: ");
    int b = readInt("Enter second number: ");
    int c = readInt("Enter third number: ");

    double result = quadratic(a,b,c);

    println("The first solution is: " + result);
  }

  private double quadratic(int a, int b, int c){
    double underSquare = (b*b-4*a*c);
    double x = (-b+Math.sqrt(b*b-(4*a*c)))/(2*a);
    if (underSquare < 0) {
        return null;
    } else {
      return (x);
    }
  } …
Run Code Online (Sandbox Code Playgroud)

java

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