为简单起见,我们假设我们有一个方法应该在执行一些繁重的操作时返回一个对象.有两种实现方式:
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) 我在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) 我正在使用Kivy框架编写一个应用程序,我偶然发现了一个轻微但令人讨厌的问题:我不知道如何处理文本字段中的Tab/Enter/Arrow键,以便按下其中任何一个键都会调度一个事件,例如.将焦点(跳转)切换到另一个TextInput或启动类似的东西send_form()
有谁能请对这个问题有所了解?
初始容量和负载系数两个影响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
不会在尾部附加新元素,而是在头部附加新元素以避免尾部遍历.如果发生竞争条件,那么最终会出现无限循环.
我有以下问题:
说我有一个符号链接从'/one/directory/'
到'/two/directory/'
.
如果我echo dirname(dirname(\__FILE__))
,它返回'/one/directory/'
.
返回的最佳方法是'/two/directory'
什么?
用法示例:
Vhost 'example.com'
指向`'/ two/directory'
example.com/hello_world.php
Run Code Online (Sandbox Code Playgroud)<?php echo dirname(dirname(__FILE__)); ?>
返回: '/one/directory'
预期成绩: '/two/directory'
我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()
吗?
我正在读File.AppendAllText
msdn的方法
http://msdn.microsoft.com/en-us/library/ms143356.aspx
我看到他们列出FileNotFoundException
了方法可能的例外列表,但是根据那里有关于同一页面上方法的描述
打开文件,将指定的字符串附加到文件,然后关闭该文件.如果该文件不存在,则此方法创建文件,将指定的字符串写入文件,然后关闭该文件.
这部分
如果该文件不存在,则此方法将创建一个文件
似乎永远不会抛出此异常此方法.
我很确定这是之前被问过的,但不幸的是我发现的唯一一件事就是这对我来说不是解决方案.在我目前的项目中,我做了类似的事情:
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
因为它的类型动态变化.
我该如何动态投射它?
我完整的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
我使用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# ×4
php ×3
asp.net-mvc ×1
async-await ×1
asynchronous ×1
casting ×1
dirname ×1
eval ×1
io ×1
java ×1
kivy ×1
perl ×1
python ×1
structuremap ×1
symlink ×1
task ×1