小编kan*_*kan的帖子

Backport从重命名的文件更改

我有两个分支:主干,生产.我在trunk中发现了一个问题,修复并提交了它,推了它.现在它已经过测试,我需要将更改合并到生产分支中作为热修复.我尝试使用樱桃挑选.但是它不起作用,因为修复程序中的更改文件在某些​​重构期间在先前在主干中重命名,我不想将其投入生产.

我不希望合并所有内容,但只采取此提交.樱桃选择失败了"我们删除"冲突(当然,新文件甚至从未存在于生产分支中).

将更改带入旧文件的正确方法是什么?

git cherry-pick

23
推荐指数
3
解决办法
4409
查看次数

在单元测试期间重置类静态变量

我正在尝试为遗留代码编写单元测试.我正在测试的类有几个静态变量.我的测试用例类有几个@Test方法.因此,他们都拥有相同的状态.

有没有办法在测试之间重置所有静态变量?

我提出的一个解决方案是明确重置每个字段,例如:

field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();
Run Code Online (Sandbox Code Playgroud)

如您所见,每个变量都需要自定义重新初始化.这种方法不容易扩展,遗留代码库中有很多这样的类.有没有办法一次性重置所有内容?也许每次重新上课?

作为一个可能的好解决方案,我认为是使用类似powermock的东西,并为每个测试创建一个单独的类加载器.但我看不到简单的方法.

java unit-testing legacy-code static-variables

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

git轨道分支与不同的名称

我有一个跟踪非默认分支的仓库.因此,有一个名为"master"的本地分支应该跟踪"origin/master-13.07".我已经完成了"push -u",我相信它应该足够了,分支被跟踪.输出git branch -vv:

C:\work\repo>git branch -vv
  stuff     68792df [origin/stuff-13.07] Small bugfix
* master 68792df [origin/master-13.07: ahead 1] Small bugfix
Run Code Online (Sandbox Code Playgroud)

输出 git status

C:\work\repo>git status
# On branch master
# Your branch is ahead of 'origin/master-13.07' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

一切似乎都没问题,但是当我只使用"git push"(正如git推荐我上面)时,它失败了:

C:\work\repo>git push
fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push …
Run Code Online (Sandbox Code Playgroud)

git git-branch

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

狩猎内存泄漏,VisualVM:"没有发现GC根".下一步是什么?

我有一个内存转储,我从一个垂死的应用程序.它消耗了所有可用堆(-Xmx1024m).它用于com.gargoylesoftware.htmlunit.WebClient抓取网页.每分钟发出一些http请求,几天后就会死掉.正如我从转储中看到的那样,它有~1750个HtmlPage类实例,每个实例都有相关对象的音调,包括已爬网页面的完整内容.

我无法理解为什么HtmlPage不收集垃圾.我已经调查了实例引用,我没有看到任何我的代码持有对它的引用,并且VisualVM说"找不到GC根".据我所知,它应该意味着该对象符合gc的条件,但它不起作用.

应用程序作为一个简单的独立进程运行,它不使用任何Web容器或应用程序服务器.

任何提示?我还应该研究什么?

眼镜:

  • htmlunit v2.7
  • java版"1.6.0_13"Java(TM)SE运行时环境(版本1.6.0_13-b03)Java HotSpot(TM)服务器VM(版本11.3-b02,混合模式)
  • Linux my.lan 2.6.18-128.el5#1 SMP Wed Dec 17 17:42:39 EST 2008 i686 i686 i386 GNU/Linux

UPDATE1

我试图通过YourKit Java Profiler分析转储.它向我展示了许多java.lang.ref.Finalizer具有310mb保留大小的对象.它们是为net.sourceforge.htmlunit.corejs.javascript.NativeGenerator#finalize()终结者创建的,然后NativeGenerator指向Window,然后HtmlPage指向一切.

有谁知道他们为什么留在记忆中?

注意:好奇,但VisualVM显示"待定完"为零.

java memory-leaks visualvm

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

使用Java在SQLite中存储和检索枚举

我需要能够从SQLite数据库中存储和检索枚举,我已经通过结合使用包装类和枚举来解决这个问题,但我觉得它的设计非常糟糕.

每次我想在枚举列表中添加新项目时,我都必须在三个不同的地方添加它.

枚举必须包含:

  • 一个int(或字符串)来表示它
  • 一个文本字符串,提供有关枚举本身的更多文本
  • 一种以某种方式从数据库中恢复其状态的方法

目前它实现如下:

public class items
{
    public enum types {
        FOO(0),
        BAR(1), 
        BAZ(2);

        private final int _value;
        types(int value){_value = value;}
        public int value(){return _value;}
    }

    public static types Get(int i)
    {
        switch(i)
        {
            case 0:
                return types.FOO;
            case 1:
                return types.BAR;
            case 2:
                return types.BAZ;   
            default: 
                return null;
        }
    }

    public static String Get(Typer type)
    {
        switch(type)
        {
            case FOO:
                return "This is foo!";
            case BAR:
                return "This is bar!";
            case BAZ:
                return "This …
Run Code Online (Sandbox Code Playgroud)

java enums

11
推荐指数
2
解决办法
8039
查看次数

消除java泛型的类型参数

代码:

interface Property<T>
{
    T get();
}

class BoolProperty implements Property<Boolean>
{
    @Override
    public Boolean get()
    {
        return false;
    }
}
class StringProperty implements Property<String>
{
    @Override
    public String get()
    {
        return "hello";
    }
}
class OtherStringProperty implements Property<String>
{
    @Override
    public String get()
    {
        return "bye";
    }
    public String getSpecialValue()
    {
        return "you are special";
    }
}
Run Code Online (Sandbox Code Playgroud)

我的班级使用:

class Result<P extends Property<X>, X>
{
    P p;
    List<X> list;
}
Run Code Online (Sandbox Code Playgroud)

如你所见它有两个类型参数PX.尽管如此,X总是可以从中推断,P但语言要求我提供两者:

Result<BooleanProperty, …
Run Code Online (Sandbox Code Playgroud)

java generics

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

加速maven war插件

maven插件对我来说非常慢.在我的项目中,webapp文件夹有近15000个小文件(图像,jsp,css等).当我用maven组装它时,它首先将所有文件复制到target/myProject-1.0.0目录,然后myProject-1.0.0.war从中构建文件.复制过程需要10分钟,.war需要2分钟.

正如我所看到的,如果.war文件将直接从webapp文件夹组装,那么构建可能会快得多.有可能吗?

performance maven maven-war-plugin

11
推荐指数
2
解决办法
6703
查看次数

git - 合并分支的差异

我有三个分支A,B和C. B经常合并到C.

          o---o---o A
         /
--------o---o---o---o---o---o B
         \       \       \   \
          o---o---o---o---o---o C
Run Code Online (Sandbox Code Playgroud)

现在我想合并我在C中所做的更改,但没有来自B的合并,在A之上.在git中最简单的方法是什么?

git merge git-rebase

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

使用maven生成包含所有依赖项的xml文件

我需要module.xml为JBoss7 生成一个maven项目的文件,该项目有很多jar依赖项.最简单的方法是什么?该文件看起来像:

<module xmlns="urn:jboss:module:1.0" name="ats.platform">
  <resources>
    <resource-root path="dom4j-1.6.1.jar"/>
    <resource-root path="jdom-1.0.jar"/>
...
  </resources>
</module>
Run Code Online (Sandbox Code Playgroud)

因此<resource-root>应该为每个项目jar依赖项创建元素.

或者也许我做错了什么?从maven项目创建JBoss7模块的正确方法是什么?

java maven jboss7.x

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

Jersey WADL:如何重命名生成的XSD

我正在处理的Web服务具有Jersey创建的生成的WADL.我想要做的是将xsd0.xsd重命名为Result.xsd或类似的东西.每当它重新生成WADL时,它将是Result.xsd.泽西有可能吗?

java xsd jersey wadl

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