小编Sli*_*lim的帖子

实现线程安全字典的最佳方法是什么?

我能够通过从IDictionary派生并定义一个私有的SyncRoot对象,在C#中实现一个线程安全的Dictionary:

public class SafeDictionary<TKey, TValue>: IDictionary<TKey, TValue>
{
    private readonly object syncRoot = new object();
    private Dictionary<TKey, TValue> d = new Dictionary<TKey, TValue>();

    public object SyncRoot
    {
        get { return syncRoot; }
    } 

    public void Add(TKey key, TValue value)
    {
        lock (syncRoot)
        {
            d.Add(key, value);
        }
    }

    // more IDictionary members...
}
Run Code Online (Sandbox Code Playgroud)

然后,我在整个消费者(多个线程)中锁定此SyncRoot对象:

例:

lock (m_MySharedDictionary.SyncRoot)
{
    m_MySharedDictionary.Add(...);
}
Run Code Online (Sandbox Code Playgroud)

我能够使它工作,但这导致了一些丑陋的代码.我的问题是,是否有更好,更优雅的方式来实现线程安全的字典?

.net c# collections thread-safety

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

oracle SQL如何从日期中删除时间

我有一个名为StartDate包含此格式的日期的列:03-03-2012 15:22

我需要的是将它转换为日期.应该看起来像这样:DD/MM/YYYY

我没有成功的尝试是:

select 
p1.PA_VALUE as StartDate,
p2.PA_VALUE as EndDate
from WP_Work p 
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND TO_DATE(p1.PA_VALUE, 'DD/MM/YYYY') >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND TO_DATE(p2.PA_VALUE, 'DD/MM/YYYY') <= TO_DATE('26/10/2012', 'DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

EDIT1:PA_VALUE列是:VARCHAR2

sql oracle

40
推荐指数
4
解决办法
21万
查看次数

如何从debug.keystore文件中获取MD5?

我使用一些命令从debug.keystore文件中获取MD5私钥,但实际上我得到的是SHA1私钥而不是MD5.我不知道如何获得MD5.

这是我使用的命令.

keytool -list -alias androiddebugkey -keystore (path_to_debug_keystore).keystore -storepass android -keypass android
Run Code Online (Sandbox Code Playgroud)

android

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

为char分配空间

字符串构造通过执行获取数据的空间

new char[strlen(cp)+1];
Run Code Online (Sandbox Code Playgroud)

由于strlen(cp)字符串中只有字符,所以多余的字节是什么?

c++

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

条件变量设置

我需要根据条件设置变量.但由于变量是不可变的,我发现自己陷入了不得不重复代码的困境.我想做的是:

def doSomething(x:Int):Int = {
  if(x==1){
    val player="Andy"
  } else {
    val player="Rob"
  }
  getSomeValue(player) // Another function
}
Run Code Online (Sandbox Code Playgroud)

但变量"玩家"已不在范围内.我看到的唯一方法是在两个条件块中调用函数"getSomeValue",但这不是我想做的事情.如何使用不可变变量解决这个问题?

conditional scala immutability

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

ExtJS 4代码辅助

如何在Eclipse中使用自动完成和其他功能编写ExtJS代码?我尝试使用SpketIDE,但ExtJS 4包中没有ext.jsb2文件.

有没有人这样做过?

谢谢

eclipse extjs code-assist extjs4

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

获取云存储(Java)中的文件列表

是否有可能使用GAE SDK列出我的Google云端存储分区上的所有文件?我知道Python SDK支持这样的功能,但我在Java SDK中找不到类似的功能.

如果不可用,是否会在Java SDK的未来版本中添加?

java google-app-engine google-cloud-storage

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

通过联合使用不同的顺序

我想写一个像这样的查询

    select top 10 * from A
    order by price
    union
    select top 3 * from A 
    order by price
Run Code Online (Sandbox Code Playgroud)

或者......那样的

    select top 10 * from A
    where name like '%smt%'
    order by price
    union
    select top 3 * from A
    where name not like '%smt%'
    order by price 
Run Code Online (Sandbox Code Playgroud)

你能帮我么?

sql t-sql sql-server

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

谁知道为什么这个编译成功了?

有谁知道为什么这个在C中成功编译?

int main(){
     display();
   return 0;
 } 

 void display(){
     printf("Why am I compiling successfully?");
 }
Run Code Online (Sandbox Code Playgroud)

我认为当没有提供声明时C假设extern int Function_name(arg1,arg2,...){}.因此这应该给出一个错误但是它正在工作!我知道Ideone正在压制警告,但我的问题是为什么它不是直接错误?(但在C++中它是直接的错误)

c

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

使用jquery插入表行后无法绑定值

我在我的HTML中有这个:

<table class="dataTable" id="CADataTable">
<thead>
    <tr>
        <th> Type</th>
        <th> Name</th>
        <th> Adress</th>
        <th> ID Number</th>
        <th> Contact</th>
        <th> Note</th>
    </tr>   
</thead>
<tbody>
    <tr>
        <td>
            <select name="CAType" id="CAType" data-bind="value: CAType" style="width: 12em;">               
                <option>1</option> 
                <option>2</option>  
                <option>3</option>  
                <option>4</option>      
            </select>
        </td>       
<!--         <td><input type="text" name="CAType" data-bind="value: CAType" style="width: 9em;"></td> -->
        <td><input type="text" name="CAName" data-bind="value: CAName" style="width: 15em;"></td>
        <td><input type="text" name="CAAdress" data-bind="value: CAAdress" style="width: 15em;"></td>
        <td><input type="text" name="CAIdNum" data-bind="value: CAIdNum" style="width: 6em;"></td>
        <td><input type="text" name="CAContact" data-bind="value: CAContact" style="width: 10em;"></td>
        <td><input type="text" name="CANote" data-bind="value: CANote" style="width: …
Run Code Online (Sandbox Code Playgroud)

jquery knockout.js

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