我tomcat7-maven-plugin在我的Java Web应用程序中使用.现在我可以使用命令运行我的Web服务器了mvn clean tomcat7:run.最近我注意到另一个命令tomcat7:run-war来自https://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html,其中说:
tomcat7:run:使用嵌入式Tomcat服务器
将当前项目作为动态 Web应用程序运行.tomcat7:run-war:使用嵌入式Tomcat服务器
将当前项目作为打包的 Web应用程序运行.
我知道该命令tomcat7:run-war会将我的应用程序打包到一个jar或一个war文件,然后在嵌入式服务器中运行它.我的问题是,在什么情况下我们应该使用这个命令,还tomcat7:run不够?或者运行打包应用程序可能会有更高的性能?我不确定.提前致谢.
我正在阅读黑客和画家,并对作者提到的问题感到困惑,以说明不同编程语言的力量.
问题是:
我们想编写一个生成累加器的函数 - 一个取n的函数,并返回一个函数,该函数接受另一个数字i并返回n递增i.(这是增加的,而不是加号.累加器必须累积.)
作者提到了几种使用不同编程语言的解决方案.例如,Common Lisp:
(defun foo (n)
(lambda (i) (incf n i)))
Run Code Online (Sandbox Code Playgroud)
和JavaScript:
function foo(n) { return function (i) { return n += i } }
Run Code Online (Sandbox Code Playgroud)
但是,当涉及到Python时,以下代码不起作用:
def foo(n):
s = n
def bar(i):
s += i
return s
return bar
f = foo(0)
f(1) # UnboundLocalError: local variable 's' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
一个简单的修改将使其工作:
def foo(n):
s = [n]
def bar(i):
s[0] += i
return …Run Code Online (Sandbox Code Playgroud) 在 C++ Primer,第五版,§13.1.6 中:
如果成员具有已删除或不可访问的复制赋值运算符,或者类具有 const 或引用成员,则合成复制赋值运算符被定义为已删除。
本章的解释:
尽管我们可以为引用分配一个新值,但这样做会更改引用所指对象的值。如果为这些类合成了复制赋值运算符,则左侧操作数将继续引用与赋值之前相同的对象。它不会引用与右侧操作数相同的对象。由于不太可能需要这种行为,因此如果类具有引用成员,则将合成的复制赋值运算符定义为已删除。
复制类会更改引用成员所引用的对象。这不是想要的吗?为什么解释说“不太可能需要”?
具体来说,
class A {
public:
A(int &n) : a(n) {}
private:
int &a;
};
int main() {
int n = 1;
A a(n);
/* Why is this allowed? */
A b(a);
/*
Why is this not allowed?
error C2280: 'A &A::operator =(const A &)': attempting to reference a deleted function
*/
b = a;
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ ×1
c++11 ×1
closures ×1
common-lisp ×1
java ×1
maven ×1
maven-plugin ×1
python ×1
scope ×1
tomcat ×1