我前段时间编写了一个测试,用于测试我在代码和第三方API之间编写的集成.测试确保集成正常工作,并确保我们得到预期的结果.
正式版本今天失败,因为测试在尝试连接到第三方API时收到500错误.
测试这样的情况是否有意义?
testing continuous-integration integration-testing automated-tests regression-testing
是否有工具可以分析Maven构建过程本身,以便我可以看到构建花费最多时间的位置?
我们在Maven 3.0.3和3.0b1方面遇到了问题.与3.0.3(9m00s)相比,我们的项目在3.0b1(3m30s)下构建得更快.使用3.0b1,构建速度提高约63%(如果我的数学运算正确).
我尝试搜索有关Maven 3的性能比较和性能问题,但无法找到任何内容.
UPDATE
我通过查看maven来源做了一些研究,这是我发现的:
使用jconsole时,我发现大部分时间(在3.0.3中)花在内部DefaultProjectDependenciesResolver.java
.所以我将源代码下载到3.0b1和3.0.3以查看发生了什么.我注意到在3.0.3中有两个版本的类.一个在org.apache.maven.project
,而另一个在org.apache.maven
.在3.0.3中,似乎也使用了前者.在单步执行代码时,我看到大部分时间都花在了这个语句上:
node = repoSystem.collectDependencies( session, collect ).getRoot();
Run Code Online (Sandbox Code Playgroud)
在3.0b1中,代码执行:
ArtifactResolutionResult result = repositorySystem.resolve( request );
Run Code Online (Sandbox Code Playgroud)
我也注意到它respositorySystem
的类型RepositorySystem
,具体实现是LegacyRepositorySystem
.我假设在Maven 3处于测试版之前使用它直到创建新实现?回到3.0.3,该collectDependencies
方法DefaultRepositorySystem.java
属于其中的一部分org.sonatype.aether.impl.internal
.这最终调用collectDependencies
内部DefaultDependencyCollector.java
也是其中的一部分org.sonatype.aether.impl.internal
.我假设这是依赖图的构建方式.
我现在想知道这是因为我们的依赖关系是如何构建的.以前有没有人见过这种行为?
UPDATE
有一个问题在JIRA关于与修复建议沿着这个问题.我发布了详细信息作为答案.
UPDATE
问题是由于maven 3.0.3(1.11)中使用的以太版本.版本1.12的以太修复了这个问题.我检查了maven 3.0.3的源代码并编辑了POM,将以太版本从1.11更改为1.12.然后我从源代码构建了maven,用我构建的版本替换了我当前的版本.构建时间的缩短是显着的.
如果您不想从源代码构建maven,可以使用1.12版本替换maven的lib目录中的以太库.这也应该有效.
我不确定这个改变是否会进入3.0.4,因为maven开发人员说有许可证的变化从以太1.11到以太1.12,所以他们仍在讨论它.
非常简单的问题我需要从用户获取一个整数,我只知道如何从中获取一个字符串.因此,如果有办法从用户获取整数或将字符串转换为整数,请告诉我.
我有一个2x2阵列,我有两个线程在运行.
可以在数组中使用java中的synchronized语句吗?
锁定如何工作?java教程线程说同步语句适用于对象,所以我不确定它们是什么意思.另一个网站说我可以发表一个声明
synchronized (array1[]){
}
Run Code Online (Sandbox Code Playgroud)
这是否同步访问数组中的所有内容,以便将数组锁定到其他线程?
如果我有一个二维数组我可以使用
synchronized (array1[i])
锁定数组的一行?
是否可以用类似的东西锁定单个数组值
synchronized (array1[i][j]){
}
Run Code Online (Sandbox Code Playgroud)
但是,非常感谢提示或帮助.实际上我已经把它打开了,无论是否正确.但我想知道将来使用
请不要打我的脸!我知道这在好的设计面前飞得很快,但我只是在写一个测试页来展示一些东西.我们的webapp模块(正确)无法直接访问我们的域类.我不想在JSP之外创建一个完整的类,因为该页面仅用于演示目的,并且我不想出于同样的原因编写大量无关的代码.我试图在JSP中以通常的方式定义一个类,但这不起作用(抛出了很多编译时错误).这是一个快速肮脏的,一次性的交易(一旦我完成,我将摆脱它).我想知道这是否可行.如果没有,那么我将走很长的路.
<%
public class Person {
private int id;
private int age;
private String name;
/*
... ctor and getters and setters
*/
}
%>
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
convert-jsp-to-java:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
An error occurred at line: 57 in the generated java file
Syntax error on token "class", invalid VariableDeclarator
An error occurred at line: 73 in the generated java file
The return type is incompatible with Object.getClass()
An error occurred at line: 74 in the generated java …
Run Code Online (Sandbox Code Playgroud) 我和我的同事正在讨论枚举中的逻辑.我个人的偏好是在Java枚举中没有任何逻辑(尽管Java提供了这样做的能力).这个问题的讨论集中在枚举内部有一个方便的方法返回一个地图:
public enum PackageType {
Letter("01", "Letter"),
..
..
Tube("02", "Packaging Tube");
private String packageCode;
private String packageDescription;
..
..
public static Map<String, String> toMap() {
Map<String, String> map = new LinkedHashMap<String, String>();
for(PackageType packageType : PackageType.values()) {
map.put(packageType.getPackageCode(), packageType.getPackageDescription());
}
return map;
}
}
Run Code Online (Sandbox Code Playgroud)
我个人的偏好是将其推广到服务中.在enum中使用方法的论据集中在便利性上.这个想法是你不必去服务获得它,但可以直接查询枚举.
我的论点集中在关注的分离和将任何类型的逻辑抽象为服务.我不认为"方便"是将这种方法置于枚举中的有力论据.
从最佳实践的角度来看,哪一个更好?或者它只是归结为个人偏好和代码风格?
什么之间的区别@Max
和@DecimalMax
,和@Min
和@DecimalMin
在Hibernate验证?
看看Javadocs,他们似乎正在执行相同的约束.
我有这个尝试并抓住问题.我正在尝试重定向到另一个页面.但有时它会这样做,有时却不行.我认为问题在于尝试和捕捉.有人可以帮助我理解这一点.谢谢
var pg = new Object();
var da = document.all;
var wo = window.opener;
pg.changeHideReasonID = function(){
if(pg.hideReasonID.value == 0 && pg.hideReasonID.selectedIndex > 0){
pg.otherReason.style.backgroundColor = "ffffff";
pg.otherReason.disabled = 0;
pg.otherReason.focus();
} else {
pg.otherReason.style.backgroundColor = "f5f5f5";
pg.otherReason.disabled = 1;
}
}
pg.exit = function(pid){
try {
if(window.opener.hideRecordReload){
window.opener.hideRecordReload(pg.recordID, pg.recordTypeID);
} else {
window.opener.pg.hideRecord(pg.recordID, pg.recordTypeID);
}
} catch(e) {}
try {
window.opener.pg.hideEncounter(pg.recordID);
} catch(e) {}
try {
window.opener.pg.hideRecordResponse(pg.hideReasonID.value == 0 ? pg.otherReason.value : pg.hideReasonID.options[pg.hideReasonID.selectedIndex].text);
} catch(e) {}
try {
window.opener.pg.hideRecord_Response(pg.recordID, …
Run Code Online (Sandbox Code Playgroud) 我正在使用编译器设计类,我们必须实现自己的编译器(使用flex和bison).我曾在解析(写入EBNF的和递归下降解析器)的经验,但是这是我第一次写的编译器.
语言设计非常开放(教授把它留给了我们).在课堂上,教授过去生成中间代码.他说,这是没有必要为我们构建一个抽象语法树或在解析解析树,而且因为我们去,我们可以生成中间代码.
我发现这令人困惑有两个原因:
如果在定义函数之前调用函数怎么办?你如何解决分支目标?我想你必须制定一个规则,你必须在使用之前定义函数,或者可能预先定义它们(比如C吗?)
你会如何处理条件?如果你有一个if-else
甚至只是一个if
,你怎么能解决分支目标为if
在条件false
(如果你是因为你去生成代码)?
我计划生成AST然后在创建它之后走树,以解析函数和分支目标的地址.这是正确的还是我错过了什么?
compiler-construction parsing language-design intermediate-code
我们正在设计一个RESTful API来返回文档集合.我们的初始实现使用HTTP状态代码来指示是否无法满足请求.这似乎是一种被广泛接受的最佳实践(例如参见此处).
我们最近遇到了一个用户正在提取1000个文档的问题.其中一个文档检索失败,因此我们返回了HTTP 500状态代码.
另一种方法是返回HTTP 200状态代码,其中有效负载具有我们能够检索的999个文档,然后是错误集合,指示失败的那个.
这种替代方法是违反RESTful原则的吗?应如何处理这种情况?除了这两种方法之外还有其他选择吗?