小编Upe*_*ari的帖子

C++中单例的线程安全延迟构造

有没有办法在C++中实现单例对象:

  1. 懒惰地以线程安全的方式构造(两个线程可能同时是单例的第一个用户 - 它应该仍然只构造一次).
  2. 不依赖于事先构造的静态变量(因此单例对象在构造静态变量期间本身是安全的).

(我不太了解我的C++,但是在执行任何代码之前初始化积分和常量静态变量的情况(即,甚至在执行静态构造函数之前 - 它们的值可能已在程序中"初始化")如果是这样的话 - 也许这可以被利用来实现单例互斥体 - 这反过来可以用来保护真正的单例的创建......)


很好,现在我似乎有几个好的答案(羞耻我不能标记2或3作为答案).似乎有两个广泛的解决方案:

  1. 使用POD静态变量的静态初始化(而不是动态初始化),并使用内置原子指令实现我自己的互斥锁.这是我在问题中暗示的那种解决方案,我相信我已经知道了.
  2. 使用其他库函数,如pthread_onceboost :: call_once.这些我当然不知道 - 并且非常感谢所发布的答案.

c++ singleton construction multithreading lazy-initialization

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

使用SignalR vs WCF将数据推送到客户端?

我有一个WPF客户端 - 服务器应用程序.现在我有客户端将连接到服务器的场景,服务器将定期将数据推送到客户端.我对应该选择哪种技术和方式来通知客户感到困惑.

SignalR最适合我认为的Web应用程序,我有桌面应用程序.通过WCF服务,我们可以通过双工通道和回调实现推送通知.那么请您指导我使用SignalR或WCF服务的优点和缺点是什么?

谢谢

wcf push-notification signalr

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

GHC不优化主模块以外的模块

我目前正在Haskell中编写一个多模块程序.我发现了一个奇怪的问题,我的文件没有正确优化,即使我正在传入-O2等等.有问题的文件是共享的3D矢量数学模块.当单独编译为.o时,这些模块已正确优化.当使用--make编译为较大程序的一部分时,它们未正确优化.核心是完全不同的.

我在vector.hs文件中添加了一些简单的精简测试代码:

data TestVector = TestVector !Double !Double !Double !Double

addVec :: TestVector -> TestVector -> TestVector

addVec (TestVector x1 y1 z1 w1) (TestVector x2 y2 z2 w2) =
  TestVector (x1 + x2) (y1 + y2) (z1 + z2) (w1 + w2)
Run Code Online (Sandbox Code Playgroud)

并从主要进口...

import Vector
Run Code Online (Sandbox Code Playgroud)

这个代码的编译方式与独立的.hs文件不同,而不是在构建main.hs时使用 --make

我的命令行是:

ghc -tmpdir tmp -hidir hi -odir obj -fext-core -fexcess-precision -funbox-strict-fields -threaded -rtsopts -fwarn-missing-signatures -Wall -O2 Main.hs -o main
Run Code Online (Sandbox Code Playgroud)

干杯

optimization haskell inline ghc

27
推荐指数
1
解决办法
615
查看次数

如何在SQL Server 2008中解密存储过程

我有一个使用WITH ENCRYPTION选项加密的存储过程.现在我要解密该程序.我已经尝试过一个名为"Decryptsp2K"的存储过程,该过程在本论坛中为SQL 2000提供:http://forums.asp.net/t/1516587.aspx/1

但它删除了我的存储过程,而不是解密它.

有没有办法解密SQL Server 2008中的存储过程?

sql sql-server-2008

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

WCF服务通道中的CommunicationObjectAbortedException,同时加载多个数据

我在我的客户端 - 服务器应用程序中使用WCF服务,我在服务器和客户端之间的通信时遇到跟随错误.

Error Message =>> System.ServiceModel.CommunicationObjectAbortedException: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it has been Aborted.

Server stack trace: 
   at System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at ServiceLib.ServiceCallbackInterfaces.IHostServiceCallback.SendEventAndStatus(String message, Boolean isBackupGenerated)
   at ServiceLib.Services.DriversService.objDriver_EventReceived(Object sender, EventReceivedEventArgs e)
Run Code Online (Sandbox Code Playgroud)

应用场景:客户端通过WCF服务从服务器获取数据并使用nettcp绑定.服务器与真实设备连接,每秒生成20-30个事件.使用WCF的回调接口将生成的事件作为字符串消息推送到所有连接的客户端.如果客户端没有任何进程负载(只接收事件和显示),它工作正常.但是当我们在客户端进行一些加载过程并且忙碌一段时间时,它会出错.

注意:我已经在nettcp绑定中设置了最大所有超时,如下所示,但仍然没有解决问题.

NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.None); …
Run Code Online (Sandbox Code Playgroud)

c# wcf nettcpbinding

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

与普通WCF服务相比,RESTful WCF服务有哪些优势

我是WCF技术的新手,我想知道RESTful WCF服务和普通WCF服务之间有什么区别.RESTful服务优于普通WCF服务有哪些优势?

谢谢.

wcf

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

使用PowerShell删除重复的字符串

我有文本文件:

1 2 4 5 6 7
1 3 5 6 7 8
1 2 3 4 5 6
1 2 4 5 6 7
Run Code Online (Sandbox Code Playgroud)

这里的第一行和最后一行是相似的.我有很多双线文件.我需要删除所有dublicate.

powershell

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

通过密钥和索引进行有效操作和检索的数据结构

我正在寻找具有例如功能的数据结构.在OrderedDictionary.NET中,也就是关联集合(即一个相关联的密钥)维护元素的顺序(就像一个正常的List一样).

它必须通过索引和键快速查找.它还应该有一个快速"追加"操作(在最后插入一个新项目),以及快速删除任何索引(基于索引或键)的项目.

OrderedDictionary.NET中同时使用哈希表和一个数组来存储它的项目,如果我没有记错.因此,基于键重新获取索引(反之亦然)是O(n),当然从数组中间删除项目的是O(n)开头,加上从中添加的索引查找如果按键删除键.

我的问题是,是否存在满足我条件的更有效的数据结构,或者这确实是我最好的选择?

.net dictionary lookup-tables data-structures

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

在.NET中,字符串初始化为null的基本原理是什么?

我理解String是一个对象,而不是Int,除非你创建对象,否则对象变量通常不指向任何东西.所以我知道它是如何工作的.

但是,就简单实用的编程而言,为什么.NET不将字符串初始化为空(""),因为这肯定是字符串变量的最常见用法 - 作为字符串,而不是作为对象?

我从来没有(还)需要一个字符串为null,即"不是字符串".这似乎是一种罕见的要求.我不能说int变量是null,那么为什么用string呢?毫无疑问,将它作为一个选项是必要的,但是为什么.NET开始时为null,当int等给出正确的初始值时?

我问,因为我不仅想了解某些事情是如何运作的,而是为什么,因为它减少了我对它看起来多么奇怪的咆哮的渴望.:)

.net string initialization

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

如何从哈希表中的值获取键

我有关键和值的哈希表,在我的代码中,我通过以下值迭代哈希表:

foreach (Object clientObject in ClientList.Values)
{
    // code to perform operation based on value
    ......
}
Run Code Online (Sandbox Code Playgroud)

ClientList是哈希表的位置.现在我想在我的代码中从哈希表中获取关键值.有没有办法实现这一目标?

谢谢

c#

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

如何在WPF中的现有ItemContainerStyle中以编程方式添加新的setter?

我有列表视图的项容器样式,如下所示:

<ListView.ItemContainerStyle>
    <Style>
        <Setter Property="Padding" Value="0"></Setter>
        <Setter Property="Margin" Value="0,0,0,-1"></Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=EventType}" Value="2">
                <Setter Property="Background" Value="Green"/>
                <Setter Property="Foreground" Value="White"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

现在我需要根据项目数据以编程方式为上下文菜单添加新的setter.我该怎么做 ?

请指导我.....

谢谢

wpf xaml styles

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

如何创建SQL脚本?

我使用MSSQL Management Studio 2005 Express Edition,我有超过100个存储过程.如何创建包含存储过程的sql-script ?谢谢.

sql sql-server stored-procedures

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

如何使用SaveFileDialog将字节数组写入文件?

基本上,我有一个创建字节数组的程序(通常通过Richtextbox输入,我希望能够创建一个新文件,并通过SaveFileDialog()方法将字节保存在该文件中。

我想出的代码是:

byte[] bytes = Encoding.ASCII.GetBytes(richTextBox1.Text);
Stream stream = new MemoryStream(bytes);

SaveFileDialog file = new SaveFileDialog();
file.ShowDialog();

     if (file.FileName != "")
     {
         using (BinaryWriter bw = new BinaryWriter(stream)) 
         {
             bw.Write(bytes); 
         }


     }
Run Code Online (Sandbox Code Playgroud)

.net c# arrays byte

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