问题列表 - 第12384页

在Spring MVC中定制DispatcherServlet是一种常见的做法吗?

我是Spring MVC的新手.但我在使用Struts 1.x方面有一定的经验.我想知道在使用Spring MVC时是否通常自定义DispatcherServlet,就像人们有时在Struts 1.x中自定义ActionServletRequestProcessor一样

或者让我们稍微扩展一下这个问题.资深Spring MVC程序员定制MVC框架的入口点在哪里?

谢谢.

java spring spring-mvc

6
推荐指数
2
解决办法
1万
查看次数

模板功能专业化问题

我正在使用模板来实现从int到enum的范围检查转换。看起来像这样:

template<typename E>
E enum_cast(const int &source);
Run Code Online (Sandbox Code Playgroud)

模板功能或多或少地位于项目的根目录中。当定义一个新的枚举时,可以像这样从配置文件中分配值:

enum ConfigEnum {
    ConfigEnumOption1 = 'A'
  , ConfigEnumOption2 = 'B'
  , ConfigEnumInvalid };

ConfigEnum option = XmlNode.iAttribute("option");
Run Code Online (Sandbox Code Playgroud)

我在使用此枚举的模块的.cpp文件中为此特定枚举类型定义了模板专用化。

template<>
ConfigEnum enum_cast(const int &source) {
   switch(source) {
   case ConfigEnumOption1 : return ConfigEnumOption1;
   case ConfigEnumOption2 : return ConfigEnumOption2;
   default return ConfigEnumInvalid;
}
Run Code Online (Sandbox Code Playgroud)

现在,将int分配给枚举变为:

ConfigEnum option = enum_cast<ConfigEnum>(XmlNode.iAttribute("option"));
Run Code Online (Sandbox Code Playgroud)

这样可以确保枚举始终在有效范围内。请注意,我没有始终控制这些枚举,因此这似乎是一个合理且易于配置的解决方案。

无论如何,这一切都很好(尽管我不能保证这里给出的所有代码都是正确的,因为我现在只是从内存中调用它)

问题源于这样一个事实,即在将in分配给枚举时可能不希望在代码库中使用此“ enum_cast”构造。毕竟,这可以通过简单的搜索和替换操作来实施。当然,我不想为所有枚举定义这些专业化知识,而只是为那些目前需要范围检查的人定义。我宁愿在需要时为枚举类型添加模板专业化,而在未定义专业化时使用赋值运算符。

从而:

InternalEnum internal = enum_cast<InternalEnum>(internal_integer);
Run Code Online (Sandbox Code Playgroud)

有效地调用internal = internal_integer。我认为我需要告诉编译器对所有没有专门化的枚举类型使用某种“默认”实现。

我的第一个选择是给原始模板函数一个这样的实现:

template<typename E>
E enum_cast(const int &source) {
  E copy = source;
  return copy;
}; …
Run Code Online (Sandbox Code Playgroud)

c++ enums

3
推荐指数
1
解决办法
517
查看次数

reinterpret_cast to void*不使用函数指针

我想重新解释将函数指针强制转换为void*变量.函数指针的类型将是类型Class* (*)(void*).

以下是示例代码,

class Test
{
    int a;
};

int main()
{
    Test* *p(void **a);
    void *f=reinterpret_cast<void*>(p);     
}
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于Visual Studio/x86编译器.但是使用ARM编译器,它会产生编译错误.不知道为什么.

错误:#694:reinterpret_cast无法抛弃const或其他类型的限定符

我在将函数指针转换为另一种类型时阅读了解释

我担心下面的解释.

在函数指针和常规指针之间进行转换(例如,将a转换void (*)(void)为a void*).函数指针的大小不一定与常规指针相同,因为在某些体系结构中它们可能包含额外的上下文信息.这可能在x86上运行正常,但请记住它是未定义的行为.

如何void (*)(void*) -> void*有效地进行这样的转换,以至于它在大多数编译器中编译几乎相同?

c++ arm casting

6
推荐指数
2
解决办法
8133
查看次数

如何在C和C++中分配和释放*array*内存?

我的问题具体是关于数组,而不是对象.

上有几个问题对SO malloc()/ free()new/ delete,但他们都专注于如何使用它们的差异.我理解它们是如何使用的,但我不明白底层差异会导致使用上的差异.

我经常听到C程序员说malloc()并且free()操作成本很高,但我从来没有听说过C++程序员这样说newdelete.我还注意到C++没有与C相对应的操作realloc().

如果我正在写一个相当于C++的vector类,我想,以避免调整它的时候,但复制整个数组newdelete你必须复制.在C中,我会简单地说realloc().值得注意的是,realloc()可能只是复制整个数组,但我的印象是它使用相同的指针并为其分配更少的空间,至少在调整大小时.

所以我的问题是,如何通过使用的算法malloc(),并free()从那些使用不同的newdelete.更具体地说,为什么C方式有一个更昂贵的耻辱,为什么C++方式不允许在不复制的情况下调整大小?

c c++ arrays memory-management

4
推荐指数
1
解决办法
2399
查看次数

django模板将行为更改为silent_variable_failure = False

http://www.djangobook.com/en/beta/chapter10/

"请注意,django.core.exceptions.ObjectDoesNotExist是所有Django数据库API DoesNotExist异常的基类,其silent_variable_failure = True.因此,如果您将Django模板与Django模型对象一起使用,任何DoesNotExist异常都将无声地失败."

虽然我正在开发我想要扭转这种行为,即silent_variable_failure = False.在django下开发时,如何将此更改永久化?

谢谢,尼克

django django-templates

5
推荐指数
1
解决办法
1569
查看次数

在"选择查询"中插入子查询

我有一个"组"表和一个"参与者"表.现在我需要为每个组插入一个参与者.我该如何自动化?

INSERT INTO "Participants" ("Name", "FirstName", "GroupID") VALUES ("GENERIC", "GENERIC", GroupID)
Run Code Online (Sandbox Code Playgroud)

应为组表中的每个组调用此插入,并用相应的ID替换"GroupID".

这是否适用于子查询?

谢谢,马丁

mysql

5
推荐指数
1
解决办法
633
查看次数

如何查找Perl脚本中使用的所有模块并进行安装?

我已经获得了一些Perl脚本来部署.

查找和安装这些脚本使用的所有模块的最简单方法是什么?

编辑:

根据我的发现,没有条件包含或包含在evals中.

perl perl-module

7
推荐指数
1
解决办法
3091
查看次数

C和C++:释放已分配指针的PART

假设我有一个分配给4096字节的指针.如何释放C中的最后1024个字节?在C++中怎么样?相反,如果我想释放 1024个字节,并保留其余部分(两种语言),该怎么办?如何从中间解除分配(在我看来,这需要将它分成两个指针,在解除分配的区域之前和之后).

c c++ memory-management

6
推荐指数
3
解决办法
1266
查看次数

UIControlEventTouchDragOutside和UIControlEventTouchDragExit之间的区别在哪里?

两者似乎都具有完全相同的效果.当手指离控制器足够远时,它们都来了."bounds"实际上并不是UIControlEventTouchDragExit的标准.它只有在距离足够远时才被解雇......

iphone cocoa-touch uikit

2
推荐指数
2
解决办法
2218
查看次数

从堆栈跟踪行号获取实际的jsp行号?

这是堆栈跟踪:

...
org.apache.jsp.showcustomer_jsp._jspService(showcustomer_jsp.java:128)
org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

这就是我做的:

  1. 从堆栈跟踪中获取行号,在本例中为128.
  2. 找到showcustomer_jsp.java文件(看起来不是很明显/var/run/tomcat-6/Catalina/localhost/_/org/apache/jsp).
  3. 打开它,然后转到第128行.
  4. 现在,在.jsp文件中搜索文件中第128行找到的内容_jsp.java.
  5. 繁荣!你完成了!

请问有更简单的方法吗?

java debugging jsp tomcat

31
推荐指数
2
解决办法
9442
查看次数