public abstract class Parent {
private Parent peer;
public Parent() {
peer = new ??????("to call overloaded constructor");
}
public Parent(String someString) {
}
}
public class Child1 extends parent {
}
public class Child2 extends parent {
}
Run Code Online (Sandbox Code Playgroud)
当我构造一个Child1的实例时,我想要一个自动构造的"peer",它也是Child1类型,并存储在peer属性中.同样对于Child2,具有Child2类型的对等体.
问题是,在父类中分配对等属性.我无法通过调用构造一个新的Child类,new Child1()因为它对Child2不起作用.我怎样才能做到这一点?我可以使用哪个关键字来引用子类?有点像new self()?
如果我有一个模板,如下所示,用于创建一个按钮:
<xsl:template match="button" name="button">
<a class="button" href="{@href}">
<xsl:value-of select="@name"/>
</a>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
我希望能够在另一个模板中使用该按钮,如下所示:
<xsl:template match="createForm">
...
<button name="Create" href="/create"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
但是,这只会按原样输出按钮标记.我希望通过现有的按钮模板进行处理.怎么能实现这一目标?
-
感谢David M的回答.这是我现在用于按钮模板的内容:
<xsl:template match="button" name="button">
<xsl:param name="name" select="@name"/>
<xsl:param name="href" select="@href"/>
<a class="button" href="{$href}">
<xsl:value-of select="$name"/>
</a>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
createForm模板现在看起来像这样:
<xsl:template match="createForm">
...
<xsl:call-template name="button">
<xsl:with-param name="name" select="'Create'"/>
</xsl:call-template>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) 这就是我在 nginx.conf 中添加静态响应标头的方法:
location /some-path/ {
add_header X-Some-Static-Header "some static value";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法添加具有动态值的响应标头?该值应该从文件、环境变量或一些类似的外部位置提取。
我正在尝试添加一个“X-App-Version”标头,该标头将从文件中读取。当部署新版本的 Web 应用程序时,该文件将使用新版本号进行更新。最好,nginx 应立即开始提供新版本号,而无需重新启动/重新加载。
如何才能做到这一点?
我在通过sed管道时遇到了麻烦.一旦我将输出管道输出到sed,我就无法在其他地方输出sed的输出.
wget -r -nv http://127.0.0.1:3000/test.html
Run Code Online (Sandbox Code Playgroud)
输出:
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/test.html [99/99] -> "127.0.0.1:3000/test.html" [1]
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/robots.txt [83/83] -> "127.0.0.1:3000/robots.txt" [1]
2010-03-12 04:41:48 URL:http://127.0.0.1:3000/shop [22818/22818] -> "127.0.0.1:3000/shop.29" [1]
Run Code Online (Sandbox Code Playgroud)
我通过sed管道输出以获得一个干净的URL列表:
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g'
Run Code Online (Sandbox Code Playgroud)
输出:
http://127.0.0.1:3000/test.html
http://127.0.0.1:3000/robots.txt
http://127.0.0.1:3000/shop
Run Code Online (Sandbox Code Playgroud)
我想将输出转储到文件,所以我这样做:
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g' > /tmp/DUMP_FILE
Run Code Online (Sandbox Code Playgroud)
几秒钟后我中断了这个过程并检查了文件,但它是空的.
有趣的是,以下产生没有输出(与上面相同,但通过cat输出sed输出):
wget -r -nv http://127.0.0.1:3000/test.html 2>&1 | grep --line-buffered -v ERROR | sed 's/^.*URL:\([^ ]*\).*/\1/g' | …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的Ruby on Rails应用程序,我想移植到PHP 5.2或者PHP 5.3(如果5.3已经发布).
我一直在寻找一种自动转换简单类和ERB模板之类的简单方法.我希望在语言太不相似的情况下,我必须自己做更复杂的事情.
有谁能建议这样做的方法?还是一个可以自动化其中一些的脚本?
编辑:
这样做有一个商业案例.这是否是一个合理的商业案例是另一个我不想在这里讨论的问题.我们有一个类似于Rails的框架 - 真正的问题是从Ruby转换到PHP而不是Rails转换为PHP.我并不是真的在寻找能够神奇地完成所有工作的东西,只是一些简单的东西会给你带来惊天动地.即使它所做的一切都改变了:
def somemethod somearg
some.ruby.code
end
Run Code Online (Sandbox Code Playgroud)
至:
public function somemethod($somearg) {
// some.ruby.code
}
Run Code Online (Sandbox Code Playgroud)
并在内容中留下内容作为红宝石的PHP评论,这仍然会使工作更轻松.
理想情况下,会有一些东西可以做到这一点或类似的东西.否则我可能会自己使用写入工具.
我正在对传统的经典ASP应用程序进行一些更改.我已在本地进行了更改,现在我想将更改的文件复制到服务器.同时,我需要下载Access数据库,向某些表添加一些字段,然后再次上传.出于这个原因,我需要能够阻止访问者在发生这种情况时修改数据库.
我的主要问题是,设置快速"向下维护"页面的最佳方法是什么,该页面将立即显示,无论访问者请求哪个页面.该应用程序已经建立,所以我宁愿回答不要求我重新修改应用程序的架构.
我的第二个问题(也许这应该是一个单独的问题):是否有更好的方法将字段添加到db表而不是将其复制,修改并再次粘贴?请原谅,如果这是一个愚蠢的问题 - 我是ASP的新手 - 也是Windows的新手.
我只有FTP访问远程服务器.
谢谢.
这是一个疯狂的黑客,但我试图故意在执行的特定点导致段错误,所以valgrind将给我一个堆栈跟踪.
如果有更好的方法,请告诉我,但我仍然很想知道如何故意导致段错误,以及为什么我的尝试不起作用.
这是我失败的尝试:
long* ptr = (long *)0xF0000000;
ptr = 10;
Run Code Online (Sandbox Code Playgroud)
我认为valgrind至少应该把它作为一个无效的写入,即使它不是一个分段违规.Valgrind对此一无所知.
有什么想法吗?
编辑
接受了答案,但我仍然有一些上升的选票,以获得一个更理智的方式来获得堆栈跟踪...
我有一个名为print_code.sh的简单bash脚本,它采用文件名,并打印出带有行号的文件.
这里是:
FILE=$1
line=0;
numLines=`wc -l $FILE | sed 's/ .*$//'`
digits=`echo "l($numLines)/l(10)+1" | bc -l`
digits=`echo "0$digits" | sed 's/\..*$//'`
for i in `cat $FILE | sed 's/ /_=SPACE=_/g'`; do
line=`echo $line + 1 | bc`;
i=`echo $i | sed 's/_=SPACE=_/ /g'`;
printf "%${digits}d | %s\n" $line "$i"
done
Run Code Online (Sandbox Code Playgroud)
这是一个虚构的语言愚蠢的源文件:
var x = 1
var y = 2
var z = 3
func dostuff {
var a
var b
x = x + 1
y = y …Run Code Online (Sandbox Code Playgroud) 我怎么能转换List<List<string>>为List<string[]>在C#中使用委托/ LINQ一个简洁的方式?