小编Mat*_*sen的帖子

XML prolog /指令未从XHTML输出中删除

我开始学习JavaServer Faces(JSF).我正在使用GlassFish 3+.我刚刚在NetBeans中创建了一个新的JSF项目并运行该项目.它工作正常,但在检查XHTML输出时,我注意到XML声明留在了.这弄乱了DOCTYPE声明(它总是应该是文档中的第一个).

在此输入图像描述

JSF应该删除XML声明,还是我做错了什么?

xml facelets jsf-2

12
推荐指数
1
解决办法
1788
查看次数

C++复制流对象

我一直在尝试使用C++,我遇到了一个我不知道如何解决的问题.

基本上,我发现你不能复制流(请参阅为什么不允许复制stringstream?),这也适用于"包装"它们的对象.例如:

  • 我创建了一个类型为stringstream的数据成员的类.
  • 我创建了这个类的对象.
  • 我试图复制对象,例如"TestObj t1; TestObj t2; t1 = t2;"

这导致错误C2249:

'std :: basic_ios <_Elem,_Traits> :: operator =':虚拟基础'std :: basic_ios <_Elem,_Traits>'中声明的私有成员的无法访问路径

所以我的问题是:我怎样(最好是容易)复制具有*stream类型数据成员的对象?

完整示例代码:

#include <iostream>
#include <string>
#include <sstream>

class TestStream
{
public:
    std::stringstream str;
};

int main()
{
    TestStream test;
    TestStream test2;
    test = test2;

    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

UPDATE

感谢下面的答案,我设法解决了这个问题.我所做的是声明流对象一次,然后使用包装器对象中的指针(例如,TestStream)简单地引用它们.具有私有拷贝构造函数的所有其他对象也是如此.

c++ compiler-errors stream

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

Shell排序的时间复杂度?

首先,这是我的Shell排序代码(使用Java):

public char[] shellSort(char[] chars) {
    int n = chars.length;
    int increment = n / 2;
    while(increment > 0) {
        int last = increment;
        while(last < n) {
            int current = last - increment;
            while(current >= 0) {
                if(chars[current] > chars[current + increment]) {
                    //swap
                    char tmp = chars[current];
                    chars[current] = chars[current + increment];
                    chars[current + increment] = tmp;
                    current -= increment;
                }
                else { break; }
            }
            last++;
        }
        increment /= 2;
    }
    return chars;
}
Run Code Online (Sandbox Code Playgroud)

这是Shell排序的正确实现(暂时忘记最有效的间隙序列 - 例如,1,3,7,21 …

algorithm big-o time-complexity shellsort

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

数据库竞争条件

我听说很多应用程序开发人员在数据库处理的竞争条件方面遇到了一些麻烦.一个典型的例子是这样的:

  • 用户1选择一个字段,比如numStock,即3
  • 用户2还选择numStock,它仍然是3
  • 用户1减少numStock(在应用程序中),并在数据库中将其设置为2.
  • 用户2还减少numStock(在应用程序中),并在数据库中将其设置为2.

在此示例中,numStock字段应该变为1,但由于用户之间的竞争而将其设置为2.

所以当然可以使用锁,但我想到了另一种处理方法 - 将所有行详细信息作为WHERE标准传递.让我解释...

在上面的示例中,SQL代码可能如下所示:

//选择

SELECT itemID, numStock FROM items WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

//更新

UPDATE items SET numStock = 2 WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

我想解决这个问题的想法:

//选择

SELECT itemID, numStock FROM items WHERE itemID = 45
Run Code Online (Sandbox Code Playgroud)

//更新

UPDATE items SET numStock = 2 WHERE itemID = 45 AND numStock = 3
Run Code Online (Sandbox Code Playgroud)

因此,查询检查数据是否因为选择了数据而发生了变化.所以我的问题是:(1)这[总是]会起作用吗?(2)与数据库锁定机制(例如,MySQL事务)相比,这是一个更好的选择吗?

谢谢你的时间.

database race-condition

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