我使用a StringBuilder
来创建一个File
对象,但我也用它来查看该文件所在的目录是否存在:
StringBuilder sbFile = new StringBuilder();
sbFile.append("/home/logs/");
File oFile = new File(sbFile.toString());
if(!oFile.exists())
oFile.mkdir();
sbFile.append("MyLogFile.log");
oFile = new File(sbFile.toString());
Run Code Online (Sandbox Code Playgroud)
但我担心oFile
在字符串生成器(/home/logs/
vs /home/logs/MyLogFile.log
)的两个不同"版本"上重用相同的引用会产生内存泄漏.如果是这样,我该怎么写这个呢?
是否可以使用Puppet设置,使用JClouds在云上实例化新虚拟机,然后通过Puppet定义和实现其配置(软件堆栈)?
或者Puppet的本质是否存在某些内在因素阻止其在AWS,RackSpace或Heroku等云提供商上的使用?
我是 GWT 新手,很难理解Module和ClientBundle之间的根本区别。在 GWT 文档的某些区域中,两者似乎是同一件事,而在其他区域中,它们显然是不同的。
我的理解是,模块是部署到用户浏览器的客户端代码。这是一个包含 HTML、CSS 和 JS 的 ZIP 文件。
我的理解是 ClientBundle 类似于 Module,但它只包含静态资源,例如图像。
如果这些理解都是正确的,那么为什么需要区分两者呢?HTML/CSS/JS 不也是静态资源吗?!?如果我的说法离谱,请帮助我理解差异是什么,也许还提供每个差异的具体示例以及何时适合使用每个差异。提前致谢!
如果测试新代码后,我可以将更改发布到我的GAE应用程序的特定子域(例如demo.my-gae-app.com
代替我的实时环境my-gae-app.com
)或特定的后端实例(如果禁止子域或不是正确的解决方案,那将是很好的这里).
然后,我可以向我的beta测试人员演示新的代码更改,并针对现实生活中的GAE环境运行性能测试.我知道GAE SDK附带了一个开发应用程序服务器,但它存储了大多数API调用,并且根本不像生产环境那样处理扩展.虽然我们绝对会将它用于开发人员的本地沙箱以及我们的QA环境,但我感觉不适合将代码发布到没有真正模仿生产环境的产品中.
其他GAE开发人员/团队如何处理这个问题?我真的只是想要一个预生产环境(比如"Demo")......但实际上是在实时的GAE app服务器上.当然,我需要限制对此代码的访问,以便只有我自己,我的开发人员,我的beta测试人员和我们的自动性测试可以访问它...(这是踢球者).
我正在定义一个新的构建文件和(出于这个问题范围之外的原因)我需要把它放在里面projectRoot/build
,而不是正常projectRoot
:
MyProject
src/
<Java source>
build/
build.xml
build.properties
Run Code Online (Sandbox Code Playgroud)
里面build.xml
:
<project name="myproject-build" basedir="..">
<property file="build.properties"/>
<target name="mkdirs">
<mkdir dir="${gen.dir}"/>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
内部build.properties
:
gen.dir=generated
Run Code Online (Sandbox Code Playgroud)
所以,如果我从命令行运行mkdirs
,你会期望它产生以下目录结构:
MyProject
src/
<Java source>
generated/
build/
build.xml
build.properties
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
MyProject
src/
<Java source>
${gen.dir}
build/
build.xml
build.properties
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?为什么Ant不能正确导入build.properties
文件?或者还有其他事情发生了吗?我怀疑它与某些事情有关basedir
,但我无法改变构建必须存在于内部的事实build/build.xml
.提前致谢!
我有一个非常简单的方法,我试图进行单元测试:
public class MyAntTask extends org.apache.tools.ant.Task {
public void execute() {
fire();
}
public void fire() {
// Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我只想写一个单元测试,确认调用execute()
总是调用fire()
,所以我写了这个:
@Test
public void executeCallsFire() {
//GIVEN
MyAntTask myTask = Mockito.mock(MyAntTask.class);
// Configure the mock to throw an exception if the fire() method
// is called.
Mockito.doThrow(new RuntimeException("fired")).when(myTask).fire();
// WHEN
try {
// Execute the execute() method.
myTask.execute();
// We should never get here; HOWEVER this is the fail() that's
// being executed by …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jQuery的$.getJSON()
函数来进行服务器端的AJAX调用:
$.getJSON() {
url: "/my-server/some-url",
success: function() {
alert("Success!");
}
}
Run Code Online (Sandbox Code Playgroud)
Firebug将此显示为JavaScript错误:
SyntaxError: missing ; before statement
[Break On This Error]
$.getJSON() {
Run Code Online (Sandbox Code Playgroud)
在阅读教程时,似乎我正确使用它,传入URL然后成功回调.这个特定的URL不需要任何数据参数,所以我省略了它们.任何人都可以找到我要去的地方吗?提前致谢!
我有以下内容:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$.getJSON(
"/myServer/getAllWidgets",
function(data) {
var optionsHTML = "<select id='widget-sel'>";
optionsHTML += "<option selected='selected' id='default'>Select an option</option>";
var len = data.length;
for(var i = 0; i < len; i++) {
optionsHTML += '<option value="' + data[i] + '">'
+ data[i] + '</option>';
}
optionsHTML += "</select>";
$('#widget-sel-div').html(optionsHTML);
}
);
$("#widget-sel").change(function() {
alert("Hello!");
});
});
</script>
<div id="widget-sel-div"></div>
Run Code Online (Sandbox Code Playgroud)
因此,我们的想法是,在document.ready
触发时,它会widget-sel-div
使用选择框(widget-sel
)填充,然后为该选择创建一个更改处理程序,只需打印"Hello!" 通过alertbox到屏幕.
当我运行它时,我没有得到任何错误(Firebug根本就没有抱怨)并且select会从AJAX调用中填充我的所有小部件/myServer/getAllWidgets
.问题是,更改处理程序无法正常工作:当我选择一个小部件时,我没有得到警告框.任何人都可以找到我要去的地方吗?提前致谢.
我正在尝试运行以下代码并获得IOException
:
String cellText = null;
InputStream is = null;
try {
// Find /mydata/myworkbook.xlsx
is = new FileInputStream("/mydata/myworkbook.xlsx");
is.close();
System.out.println("Found the file!");
// Read it in as a workbook and then obtain the "widgets" sheet.
Workbook wb = new XSSFWorkbook(is);
Sheet sheet = wb.getSheet("widgets");
System.out.println("Obtained the widgets sheet!");
// Grab the 2nd row in the sheet (that contains the data we want).
Row row = sheet.getRow(1);
// Grab the 7th cell/col in the row (containing the Plot 500 …
Run Code Online (Sandbox Code Playgroud) 如果String包含"非法字符",我想编写一个简单的验证器来抛出异常,具体来说:
〜,@,+,%和|
我正在寻找最干净的方法,并希望有一种方法可以定义一个"黑名单"正则表达式,可能看起来像:
String blacklist = "~@+%|";
String toValidate = getInputFromUser();
if(toValidate.matches(blacklist))
throw new RuntimeException("Illegal characters found!");
Run Code Online (Sandbox Code Playgroud)
但是我知道正则表达式是不正确的.我是朝着正确的方向前进还是离开基地(即有更简单的解决方案)?提前致谢!
java ×8
ajax ×2
javascript ×2
jquery ×2
ant ×1
apache-poi ×1
build.xml ×1
clientbundle ×1
cloud ×1
demo ×1
file-io ×1
gwt ×1
inputstream ×1
ioexception ×1
jclouds ×1
junit ×1
memory-leaks ×1
mockito ×1
module ×1
puppet ×1
regex ×1
string ×1
xlsx ×1