问题列表 - 第6547页

为什么VC++字符串不被引用计数?

STL标准不要求从std :: string中重新计算.但事实上,大多数C++实现都提供了refcounted,copy-on-write字符串,允许您将值作为基本类型传递.此外,这些实现(至少g ++)使用原子操作使这些字符串无锁和线程安全.

简单的测试显示了写时复制语义:

#include <iostream>
#include <string>

using namespace std;

void foo(string s)
{
    cout<<(void*)s.c_str()<<endl;
    string ss=s;
    cout<<(void*)ss.c_str()<<endl;
    char p=ss[0];
    cout<<(void*)ss.c_str()<<endl;
}

int main()
{
    string s="coocko";
    cout<<(void*)s.c_str()<<endl;
    foo(s);
    cout<<(void*)s.c_str()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

在使用非常数成员后,只有两个地址完全打印.

我使用HP,GCC和Intel编译器测试了这段代码,得到了类似的结果 - 字符串可以作为写时复制容器.

另一方面,VC++ 2005清楚地表明每个字符串都是完全复制的.

为什么?

我知道VC++ 6.0中存在一个错误,它具有非线程安全的引用计数实现,导致随机程序崩溃.这是什么原因?他们只是害怕再使用ref-count,即使这是常见的做法?他们宁愿不使用重新计算来解决问题吗?

谢谢

c++ string reference-counting copy-on-write visual-c++

13
推荐指数
4
解决办法
5202
查看次数

ASP.NET解决方案的典型结构?

正如标题所说,我很想知道你通常如何构建ASP.NET解决方案.

我对ASP.NET WebSite解决方案特别感兴趣,但是其他类型的信息(WebApplication,MVC)也可能很有趣.

一些具体问题:

  • 该解决方案包含的内容/数量/项目/程序集
  • 你如何命名你的类库项目
  • 你通常拥有什么名称空间
  • 你是否每个项目/程序集有多个名称空间,或者你有一个严格的1:1关系
  • 等等

谢谢

asp.net namespaces solution

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

是否有一个Perl等同于Python的`if __name__ =='__ main __'`?

有没有办法确定当前文件是否是在Perl源中执行的文件?在Python中,我们使用以下构造执行此操作:

if __name__ == '__main__':
    # This file is being executed.
    raise NotImplementedError
Run Code Online (Sandbox Code Playgroud)

我可以使用FindBin和一起破解一些东西__FILE__,但是我希望有一种规范的方法可以做到这一点.谢谢!

python perl executable

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

制作庞大的测试文件有什么好方法?

我正在尝试测试一些我刚刚编写的流文件上传/下载代码,但我需要一个巨大的(比我的内存大,如> 4GB)文件来测试.什么是快速生成特定大小的文件(但内部没有特定数据)的好方法?

我知道我可以在我的硬盘上查看一个适当大小的文件,但我很好奇是否还有其他好方法可以生成测试文件,特别是如果我想要一个特定的大小.下载文件也不好,因为我的连接速度很慢.

testing file

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

用于比较两个站点结构的工具

有谁知道任何工具允许比较两个几乎完全相同的网站?

简单地说,我有一个沙箱站点和生产站点,并希望找出它们之间的区别,以了解要移动到生产站点的内容.

谢谢!

编辑:

好的,我看到我错过了一条重要的信息(对不起!).这两个站点都是在线的,基于CMS(Drupal),因此我需要一些可以在两个站点上运行的爬行工具,并显示沙箱中存在的页面,而不是生产中的页面.

感谢所有回答的人!

compare web

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

C++中的运算符过载是否比它们值得更麻烦?

根据我教C++的经验,操作员重载是导致学生最悲伤的主题之一.甚至在stackoverflow上查看问题:例如,将+运算符设为外部或成员?如何处理对称性等,似乎很麻烦.

当我从C++迁移到Java时,我担心我会错过这种能力,但除了像[]或()之类的运算符之外,我真的不觉得需要重载运算符.事实上,我觉得没有它们的程序更具可读性.

注意:我把它作为社区维基.我们来讨论一下.我想听听意见.

c++ operator-overloading

6
推荐指数
5
解决办法
1731
查看次数

尝试解组xml时的类强制转换异常?

试图通过这里的类投射异常:

FooClass fooClass = (FooClass ) unmarshaller.unmarshal(inputStream);
Run Code Online (Sandbox Code Playgroud)

抛出此异常:

java.lang.ClassCastException: javax.xml.bind.JAXBElement
Run Code Online (Sandbox Code Playgroud)

我不明白这个 - 因为这个类是由xjc.bat工具生成的 - 它生成的类我根本没有改变 - 所以这里应该没有转换问题 - unmarshaller应该真的给我一个类可以投射到FooClass.

关于我做错了什么的任何想法?

java jaxb jaxb2

51
推荐指数
4
解决办法
8万
查看次数

装饰者和课堂上

有没有办法在嵌套好的类结构中编写装饰器?例如,没有类,这可以正常工作:

def wrap1(func):
    def loc(*args,**kwargs):
        print 1
        return func(*args,**kwargs)
    return loc

def wrap2(func):
    def loc(*args,**kwargs):
        print 2
        return func(*args,**kwargs)
    return loc


def wrap3(func):
    def loc(*args,**kwargs):
        print 3
        return func(*args,**kwargs)
    return loc

def merger(func):
    return wrap1(wrap2(wrap3(func)))


@merger
def merged():
    print "merged"


@wrap1
@wrap2
@wrap3
def individually_wrapped():
    print "individually wrapped"

merged()
individually_wrapped()
Run Code Online (Sandbox Code Playgroud)

输出是:

1
2
3
merged
1
2
3
individually wrapped
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.但是,现在让我们说,我想使mergedindividually_wrapped静态或类方法.只要装饰器不在类名称空间之外,这也可以工作.有没有什么好方法将装饰器放在命名空间中?我宁愿不列举所有不起作用的方法,但主要问题是如果merger是一个方法,它就无法访问这些wrapX方法.也许这是一个想要做的蠢事,但有没有人得到这样的东西工作,所有装饰器和装饰方法在同一个类?

python decorator

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

解析Visual Studio解决方案文件

如何在.NET中解析Visual Studio解决方案(SLN)文件?我想编写一个应用程序,将多个解决方案合并为一个,同时保存相对构建顺序.

.net c# parsing visual-studio

107
推荐指数
7
解决办法
4万
查看次数

SQL'ORDER BY'缓慢

ORDER BY通常很慢吗?我试图运行一些sql语句,其中该WHERE子句非常简单,但后来我尝试ORDER BYVARCHAR(50)索引列上.

出于显示原因,我需要按字母顺序排序.我认为让数据库为我做这个是最有效的.

在这一点上,我期待着

  • 优化sql查询
  • 在代码中对结果集进行排序

这是我尝试运行的实际查询:

// B.SYNTAX is a TEXT/CLOB field
// Indexes on NAME, MODULENAME. PREVIOUS is a CHAR(1) with no index
"SELECT A.NAME, B.SYNTAX, B.DESCRIPTION, A.RATE1, A.RATE2, 
A.RATE3, A.STARTDATE, A.ENDDATE, A.HIDE, A.CATEGORYNAME 
FROM A, B WHERE A.MODULENAME='"+loadedModuleName+"' 
AND A.NAME = B.NAME AND (A.PREVIOUS<>'N' OR A.PREVIOUS IS NULL) 
ORDER BY A.NAME"
Run Code Online (Sandbox Code Playgroud)

表A的大小约为2000行,B约为500行.

我可能还应该提到,由于我们支持多个数据库,因此无法进行太多数据库特定的优化.此外,该应用程序部署在客户站点.

我期待返回数百条记录(少于1000条).

你会怎么做?任何提示都表示赞赏.谢谢.

database sql-server-2005

11
推荐指数
4
解决办法
3万
查看次数