小编Ler*_*eri的帖子

正确的方法来实现返回Task <T>的方法

为简单起见,我们假设我们有一个方法应该在执行一些繁重的操作时返回一个对象.有两种实现方式:

public Task<object> Foo()
{
    return Task.Run(() =>
    {
        // some heavy synchronous stuff.

        return new object();
    }
}
Run Code Online (Sandbox Code Playgroud)

public async Task<object> Foo()
{
    return await Task.Run(() =>
    {
        // some heavy stuff
        return new object();
    }
}
Run Code Online (Sandbox Code Playgroud)

在检查生成的IL之后,生成了两个完全不同的东西:

.method public hidebysig 
    instance class [mscorlib]System.Threading.Tasks.Task`1<object> Foo () cil managed 
{
    // Method begins at RVA 0x2050
    // Code size 42 (0x2a)
    .maxstack 2
    .locals init (
        [0] class [mscorlib]System.Threading.Tasks.Task`1<object>
    )

    IL_0000: nop
    IL_0001: ldsfld class [mscorlib]System.Func`1<object> AsyncTest.Class1/'<>c'::'<>9__0_0'
    IL_0006: dup …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous task task-parallel-library async-await

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

在PHP评论中@var的含义是什么?

我在php评论中看到这个(@var)很多,并且不知道它意味着什么.请告诉我.

// example.php (taken from yii framework application code)

<?php
/* @var $this CategoriesController */
/* @var $data Categories */
?>

<div class="view">

    <b><?php echo CHtml::encode($data->getAttributeLabel('idCategory')); ?>:</b>
    <?php echo CHtml::link(CHtml::encode($data->idCategory), array('view', 'id'=>$data->idCategory)); ?>
    <br />
</div>
Run Code Online (Sandbox Code Playgroud)

php

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

在Kivy的TextInput小部件中进行Tab/Enter(和其他击键)处理

我正在使用Kivy框架编写一个应用程序,我偶然发现了一个轻微但令人讨厌的问题:我不知道如何处理文本字段中的Tab/Enter/Arrow键,以便按下其中任何一个键都会调度一个事件,例如.将焦点(跳转)切换到另一个TextInput或启动类似的东西send_form()

有谁能请对这个问题有所了解?

python kivy

12
推荐指数
3
解决办法
9500
查看次数

在Hashmap中重新散列

初始容量和负载系数两个影响HashMap性能的参数.默认的加载因子(.75)提供了时间和空间成本之间的良好折衷.较高的值会减少空间开销,但会增加查找成本.

当一个项目被添加到该项目时HashMap,它将根据从其派生的值hashCode和该项目的桶大小分配给存储桶HashMap.要识别任何哈希映射的存储桶,请使用key.hashCode()并执行一些操作:

Bucket (index) = HashMap.indexFor(HashMap.hash(key.hashCode()),
                                  entryArray.length)
Run Code Online (Sandbox Code Playgroud)

当哈希映射中的条目数超过加载因子和当前容量的乘积时,哈希映射将被重新哈希(内部数据结构被重建),因此哈希映射具有大约两倍的桶数.

当您重新散列并将所有内容移动到新位置(存储桶等)时,旧元素也会再次重新散列,并根据新的哈希码存储在新存储桶中.分配用于存储元素的旧空间被垃圾收集.

如果两个线程同时发现现在HashMap需要重新调整大小并且他们都试图重新调整大小可能会导致竞争条件HashMap.

在重新调整大小的过程中HashMap,存储在链表中的存储桶中的元素在迁移到新存储桶期间按顺序颠倒,因为java HashMap不会在尾部附加新元素,而是在头部附加新元素以避免尾部遍历.如果发生竞争条件,那么最终会出现无限循环.

我有以下问题:

  1. 为什么在迁移到新存储桶期间按顺序颠倒每个存储桶的链接列表?
  2. 竞争条件如何导致无限循环?
  3. 如何增加桶的数量会减少查找等待时间?
  4. 在重新划分后,同一个桶中的元素仍然在同一个桶中?

java

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

PHP dirname返回符号链接路径

说我有一个符号链接从'/one/directory/''/two/directory/'.

如果我echo dirname(dirname(\__FILE__)),它返回'/one/directory/'.

返回的最佳方法是'/two/directory'什么?

用法示例:

Vhost 'example.com'指向`'/ two/directory'

example.com/hello_world.php

<?php 
    echo dirname(dirname(__FILE__));
?>
Run Code Online (Sandbox Code Playgroud)

返回: '/one/directory'

预期成绩: '/two/directory'

php symlink dirname

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

eval函数的替代方案是什么?

eval()在我当前的项目中使用如下:

if (class_exists($class_name)) //$class_name depends on user input
    eval($class_name.'::MyStaticMethod()');
Run Code Online (Sandbox Code Playgroud)

eval()当且仅当具有该名称的类$class_name存在时才执行,因此它有点安全,但我仍然认为这不是最佳解决方案.

我可以做同样的代码eval()吗?

php eval

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

File.AppendAllText中的FileNotFoundException

我正在读File.AppendAllTextmsdn的方法

http://msdn.microsoft.com/en-us/library/ms143356.aspx

我看到他们列出FileNotFoundException了方法可能的例外列表,但是根据那里有关于同一页面上方法的描述

打开文件,将指定的字符串附加到文件,然后关闭该文件.如果该文件不存在,则此方法创建文件,将指定的字符串写入文件,然后关闭该文件.

这部分

如果该文件不存在,则此方法将创建一个文件

似乎永远不会抛出此异常此方法.

c# io

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

如何动态投射对象?

我很确定这是之前被问过的,但不幸的是我发现的唯一一件事就是对我来说不是解决方案.在我目前的项目中,我做了类似的事情:

private object obj;

private void Initialize()
{
    obj.Initialize();
}

private void CreateInstanceA()
{
    obj = Activator.CreateInstance(typeof(MyClassA));
}

private void CreateInstanceB()
{
    obj = Activator.CreateInstance(typeof(MyClassB));
}
Run Code Online (Sandbox Code Playgroud)

这个代码当然不起作用,因为我没有强制转换obj因为它的类型动态变化.

我该如何动态投射它?

c# casting

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

perl chdir不工作,不更改目录

我完整的perl脚本是

chdir ("/etc" or die "cannot change: $!\n");
print  "\nCurrent Directory is $ENV{PWD} \n";
Run Code Online (Sandbox Code Playgroud)

我得到了输出(不是预期的)

bash-3.2$ perl test.pl 
Run Code Online (Sandbox Code Playgroud)

当前目录是 /home

PS /home是我执行的地方test.pl

perl

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

如何从Asp.Net MVC 5依赖解析器获取Structuremap IContainer实例

我使用Structuremap作为我的依赖关系解析器.我试图在我的Global.asax.cs文件上实现Container Per Request Pattern.

    public IContainer Container
    {
        get
        {
            return (IContainer)HttpContext.Current.Items["_Container"];
        }
        set
        {
            HttpContext.Current.Items["_Container"] = value;
        }
    }


   public void Application_BeginRequest()
   {
       Container = ObjectFactory.Container.GetNestedContainer();
   }
Run Code Online (Sandbox Code Playgroud)

由于在将来的Structuremap版本中不支持ObjectFactory,我希望从DependencyResolver访问容器.怎么可能?

提前致谢.

Noufal

c# structuremap asp.net-mvc

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