我有两个分支:主干,生产.我在trunk中发现了一个问题,修复并提交了它,推了它.现在它已经过测试,我需要将更改合并到生产分支中作为热修复.我尝试使用樱桃挑选.但是它不起作用,因为修复程序中的更改文件在某些重构期间在先前在主干中重命名,我不想将其投入生产.
我不希望合并所有内容,但只采取此提交.樱桃选择失败了"我们删除"冲突(当然,新文件甚至从未存在于生产分支中).
将更改带入旧文件的正确方法是什么?
我正在尝试为遗留代码编写单元测试.我正在测试的类有几个静态变量.我的测试用例类有几个@Test方法.因此,他们都拥有相同的状态.
有没有办法在测试之间重置所有静态变量?
我提出的一个解决方案是明确重置每个字段,例如:
field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();
Run Code Online (Sandbox Code Playgroud)
如您所见,每个变量都需要自定义重新初始化.这种方法不容易扩展,遗留代码库中有很多这样的类.有没有办法一次性重置所有内容?也许每次重新上课?
作为一个可能的好解决方案,我认为是使用类似powermock的东西,并为每个测试创建一个单独的类加载器.但我看不到简单的方法.
我有一个跟踪非默认分支的仓库.因此,有一个名为"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) 我有一个内存转储,我从一个垂死的应用程序.它消耗了所有可用堆(-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显示"待定完"为零.
我需要能够从SQLite数据库中存储和检索枚举,我已经通过结合使用包装类和枚举来解决这个问题,但我觉得它的设计非常糟糕.
每次我想在枚举列表中添加新项目时,我都必须在三个不同的地方添加它.
枚举必须包含:
目前它实现如下:
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) 代码:
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)
如你所见它有两个类型参数P和X.尽管如此,X总是可以从中推断,P但语言要求我提供两者:
Result<BooleanProperty, …Run Code Online (Sandbox Code Playgroud) maven插件对我来说非常慢.在我的项目中,webapp文件夹有近15000个小文件(图像,jsp,css等).当我用maven组装它时,它首先将所有文件复制到target/myProject-1.0.0目录,然后myProject-1.0.0.war从中构建文件.复制过程需要10分钟,.war需要2分钟.
正如我所看到的,如果.war文件将直接从webapp文件夹组装,那么构建可能会快得多.有可能吗?
我有三个分支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中最简单的方法是什么?
我需要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模块的正确方法是什么?
我正在处理的Web服务具有Jersey创建的生成的WADL.我想要做的是将xsd0.xsd重命名为Result.xsd或类似的东西.每当它重新生成WADL时,它将是Result.xsd.泽西有可能吗?
java ×6
git ×3
maven ×2
cherry-pick ×1
enums ×1
generics ×1
git-branch ×1
git-rebase ×1
jboss7.x ×1
jersey ×1
legacy-code ×1
memory-leaks ×1
merge ×1
performance ×1
unit-testing ×1
visualvm ×1
wadl ×1
xsd ×1