问题列表 - 第16999页

在.NET中将项目添加到Dictionary <>对象时,如何避免双重检查锁定?

我有一个关于提高程序效率的问题.我有一个Dictionary <string,Thingey>定义为名为Thingeys.这是一个Web应用程序,随着时间的推移将创建多个名为Thingey的.Thingey的创建成本有些高昂(并非过分夸大),但我希望尽可能避免使用它.我为请求获得正确的Thingey的逻辑看起来很像这样:

    private Dictionary<string, Thingey> Thingeys;
    public Thingey GetThingey(Request request)
    {
        string thingeyName = request.ThingeyName;
        if (!this.Thingeys.ContainsKey(thingeyName))
        {
            // create a new thingey on 1st reference
            Thingey newThingey = new Thingey(request);
            lock (this.Thingeys)
            {
                if (!this.Thingeys.ContainsKey(thingeyName))
                {
                    this.Thingeys.Add(thingeyName, newThingey);
                }
                // else - oops someone else beat us to it
                // newThingey will eventually get GCed
            }
        }

        return this. Thingeys[thingeyName];
    }
Run Code Online (Sandbox Code Playgroud)

在这个应用程序中,Thingeys一旦创建就永远活着.我们不知道如何创建它们或者在应用程序启动和请求开始进入之前需要哪些.我在上面的代码中遇到的问题是偶尔出现newThingey的实例因为我们同时获得多个请求它在它被创建之前.我们最终创建了其中两个,但只添加了一个.有没有更好的方法来创建和添加Thingeys,不涉及检查/创建/锁定/检查/添加我们创建的罕见外来瘦,但最终永远不会使用?(而且这段代码有效并且已经运行了一段时间.这只是一直困扰着我的唠叨.)

我试图避免在创建Thingey期间锁定字典.

c# dictionary locking

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

Haskell中的多核编程 - Control.Parallel

我正在努力学习如何使用该Control.Parallel模块,但我认为我做得不对.

我正在尝试运行以下代码(fibs.hs).

import Control.Parallel

fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = p `par` (q `pseq`  (p + q))
    where
      p = fib (n-1)
      q = fib (n-2)


main = print $ fib 30
Run Code Online (Sandbox Code Playgroud)

我编译了这个:

ghc -O2 --make -threaded fibs.hs
Run Code Online (Sandbox Code Playgroud)

然后我得到以下执行该程序的结果(输出每个程序100次的Python脚本并返回执行时间的平均值和标准差):

./fibs +RTS -N1 -> avg= 0.060203 s, deviation = 0.004112 s  
./fibs +RTS -N2 -> avg= 0.052335 s, deviation = 0.006713 s  
./fibs +RTS -N3 -> avg= …
Run Code Online (Sandbox Code Playgroud)

parallel-processing multithreading haskell multicore

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

C#.NET中HTTP上的SOAP对象

我正在尝试在C#.NET中编写SOAP消息(包括头文件)以使用HTTP post发送到URL.我想将其发送到的URL不是Web服务,它只接收SOAP消息以最终从中提取信息.关于如何做到这一点的任何想法?

.net c# soap http-post envelope

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

在POST期间,大字符串忽略空格后的字母

我有一个textarea,当我在textarea中发布这些内容时,我只得到一个空格之前的第一个单词.例如,如果我在textarea中的价值是'他是疯子',我只得到'他'.

请帮我解决这个问题;

码:

<form name="SendSMS" method="post" action="admin_main.php">
                <div class="reg_item">Category </div>
                <div class="reg_item">
                    <select name="cat" class="reg_combo" class="tboxstyle">
                        <option value="car" class="tboxstyle">Carrer</option>
                        <option value="tho" class="tboxstyle">Thoughts</option>
                        <option value="jok" class="tboxstyle">Jokes</option>
                        <option value="hea" class="tboxstyle">Health</option>
                     </select>
                </div><br />


                <div class="reg_item">Message </div>
                <div class="reg_item"><input type="text" name="message" class="tboxstyle"></input></div><br />



                 <?
                            if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
                            {

                            $msms=new sms();
                            $msms->sendsms();


                            }

                         ?>


                <div class="reg_item"><input type="submit" name="register" value="Send >>" /></div>
                </form>
Run Code Online (Sandbox Code Playgroud)

功能:

function sendsms()
        {   
        try
            {

                                $cat              =$_POST[cat];
                $message      =$_POST[message];
                                $link="http://www.aswinanand.com/sendsms.php?uid=9488446874&pwd=sivad&phone=9952880550&msg=dg";
                $table="";

                if($cat=="car")
                {
                    $table=="carrer_memb";
                }
                elseif($cat=="tho")
                {
                    $table=="thoughts_memb"; …
Run Code Online (Sandbox Code Playgroud)

.net html css php

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

Powershell中的测试路径行为

我正在尝试在powershell中编写一个脚本来批量转换视频文件.

我打算使用它的方法是去一些充满视频文件的文件夹并运行它.它使用可以在"命令行模式"(名为handbrake)中运行的转换程序,并在文件扩展名之前保存转换后的文件,并附加"-android".例如,如果我在文件夹中有一个名为video1.avi的文件,则在运行脚本后该文件夹有2个文件:video1.avi和video1-android.avi

我想这样做的原因是我可以检查每个视频文件是否有转换后的版本(名称附加了-android).如果是这样,请跳过该文件的转换.

而这就是我有所收获的地方.问题是Test-Path的行为(我用来测试文件是否存在的cmdlet).

如果视频文件具有"不寻常"的名称(例如在我的情况下,它是视频[long] .avi),如果您尝试检查该文件是否存在,则Test-Path始终返回False.

您可以通过以下方式轻松测试:

转到空文件夹,运行记事本以创建名称中带有"["的文件:

&notepad test[x].txt
Run Code Online (Sandbox Code Playgroud)

保存文件

然后这样做:

Get-ChildItem | ForEach-Object {Test-Path $_.FullName}
Run Code Online (Sandbox Code Playgroud)

它不会回归真实!应该对吗?好吧,如果文件名称中有"["(我没有检查任何其他特殊字符),则不会

我意识到,如果你逃避"["和"]",它就有效

Test-Path 'test`[x`].txt'
Run Code Online (Sandbox Code Playgroud)

返回true.

我该如何解决这个问题?我希望能够:给定文件的BaseName,将其附加到"-android.avi"并检查是否存在具有该名称的文件.

谢谢,芮

powershell

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

MySQL将索引计数重置为0

我需要将我的表计数器重置为0 - 是否有MySQL命令?

mysql indexing count

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

如何使用C++在linux终端中显示unicode字符?

我正在Linux环境下使用C++进行国际象棋游戏,我希望在bash终端中使用unicode字符显示这些内容.有没有办法用cout显示符号?

输出骑士的一个例子很好:♞= U + 265E.

c++ unicode terminal

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

从收到的数据存储过程中填充自定义C#对象

public class User
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

public class Address
{
    public string City { get; set; }
    public string Country { get; set; }
}


/*
 * There are 2 c# objects i have shown 
 * There is a stored procedure in my application which
 * returns data for both objects simultaneously 
 * eg 
 * select FirstName, LasteName from Users where something="xyz"
 * select City,Country from Locations …
Run Code Online (Sandbox Code Playgroud)

c# stored-procedures

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

C++短路布尔值

我是c ++的新手,很好奇编译器如何处理懒惰的懒惰评估.例如,

if(A == 1 || B == 2){...}
Run Code Online (Sandbox Code Playgroud)

如果A等于1,那么B == 2部分是否曾被评估过?

c++ short-circuiting

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

在Perl中,如何从包含回车符和换行符的字符串中捕获一串数字?

我需要从多行字符串中提取文本(字符和数字).我尝试过的所有内容都没有删除换行/回车.

这是有问题的字符串:

"\r\n        50145395\r\n    "
Run Code Online (Sandbox Code Playgroud)

在HEX中它是:0D 0A 20 20 20 20 20 20 20 20 35 30 31 34 35 33 39 35 0D 0A 20 20 20 20

我尝试过以下方法:

$sitename =~ m/(\d+)/g;  
$sitename = $1;  
Run Code Online (Sandbox Code Playgroud)

$sitename =~ s/^\D+//g;  
$sitename =~ s/\D+$//g;  
Run Code Online (Sandbox Code Playgroud)

$sitename =~ s/^\s+//g;  
$sitename =~ s/\s+$//g;  
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我都无法摆脱任何不需要的角色.我在cygwin perl和Strawberry perl中运行了这个.

谢谢.

regex perl

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