我想为我的c#
应用程序中的某些进程应用一些sql-session级别设置.
例如,我想DEADLOCK_PRIORITY
为一些后台进程设置LOW
.
问题是:
如果我打开一个新的SQL连接,那会启动一个新的sql-session吗?
sql-session会一直存在,直到连接关闭?如果我在SqlConnection
打开后立即应用我的设置,它们是否对在相同的情况下执行的所有查询有效SqlConnection
?
连接池怎么样?这可能是我的SET DEADLOCK_PRIORITY LOW
设置将被我的系统中的其他进程(我不想要)重用,因为SqlConnection
实际上并没有关闭(asp.net连接池决定重用它).
谢谢!
我考虑了2个案例:
var a = new { a = 5 };
var b = new { a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // True
Run Code Online (Sandbox Code Playgroud)
Ideone:http://ideone.com/F8QwHY
和:
var a = new { a = 5, b = 7 };
var b = new { b = 7, a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // False
Run Code Online (Sandbox Code Playgroud)
Ideone:http://ideone.com/hDTcxX
问题是为什么字段顺序实际上很重要?
有没有任何理由,或仅仅因为它(如设计).
如果原因只是匿名类型不应该以这种方式使用而你不应该诉诸GetType
,那么为什么编译器在第一种情况下重用一个类而不只是为每个anonymus类型声明生成一个新类?
考虑以下Javascript:
function getType(obj){
return(typeof(obj))
}
alert(typeof(obj)) //alerts "undefined" correctly
alert(getType(obj)) //throws an error: ReferenceError: obj is not defined
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?有没有解决方法?我正在尝试编写一个函数来检查变量是否存在.
我正在为一个项目开发一个响应式网格系统。网格由向左浮动且宽度为25% 的块组成。
这些块内是设置为100% *高度/宽度* 或50% *高度/宽度* 的图像。
块内的所有图像彼此相邻,并且所有块彼此相邻,因此看起来像一个无缝的图像网格。
我遇到的问题是在某些浏览器大小时,或者当您调整浏览器大小时,某些块之间会出现 1px 的小间隙。
一个例子可以在这里看到:http : //dahliacreative.com/responsivegrid/
我认为这可能取决于漂浮的块,好像你把漂浮物取下来似乎一切都很好。我尝试使用display: inline-block
等,但无法得到任何工作!
有没有人有解决这个问题的想法?
我试图使用SQL Server Profiler确定死锁的原因.这是死锁图:
这两个语句都是插入,后面跟着
select scope_identity();
实际上有两个并发进程,它们在一个循环中重复执行insert-select_identity.
我期望插入对聚簇索引进行独占锁定,并且select获取非聚集索引的共享锁,然后它们等待彼此释放它们各自的indeces.
我看到的是两个进程都在等待释放相同的资源 - 聚集索引.怎么会这样?特定的追索权应属于一个过程或另一个过程.我在这里想念什么?感谢所有提前.
编辑:是的,隔离级别是Serializible.PS:可能,我对非聚集索引的共享锁的假设是错误的,只要我的select不包含where
语句
Edit2:这是xml的一部分:
<resource-list>
<keylock hobtid="72057594148028416" dbid="29" objectname="<confidential>" indexname="PK_WP_Inbound_StockTransactionLine" id="lock9641700" mode="RangeS-S" associatedObjectId="72057594148028416">
<owner-list>
<owner id="process8e09288" mode="RangeS-S"/>
</owner-list>
<waiter-list>
<waiter id="process991ce08" mode="RangeI-N" requestType="convert"/>
</waiter-list>
</keylock>
<keylock hobtid="72057594148028416" dbid="29" objectname="<confidential>" indexname="PK_WP_Inbound_StockTransactionLine" id="lock9641700" mode="RangeS-S" associatedObjectId="72057594148028416">
<owner-list>
<owner id="process991ce08" mode="RangeS-S"/>
</owner-list>
<waiter-list>
<waiter id="process8e09288" mode="RangeI-N" requestType="convert"/>
</waiter-list>
</keylock>
</resource-list>
Run Code Online (Sandbox Code Playgroud)
根据这个,我认为它是由SERIALIZABLE隔离引起的范围扫描(谷歌搜索).但是,我仍然不明白这是怎么发生的,建议的补救措施是什么.
我很好奇以下示例代码是否是线程安全的:
public class Test
{
[ThreadStatic]
private static Foo current;
public static Foo GetFoo()
{
return current ?? (current = new Foo());
}
}
public class Foo
{
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,我会使用Lazy<T>
,但由于每个单独的线程有一个单独的变量,该属性本质上应该是线程安全的,这是正确的吗?
谢谢.
我有一个稳定的错误,每次击中F5时都会重现:
有两个网格(主 - 细节),当主网格上发生聚焦行更改事件时,我的客户端代码引发的回调实际上发生了错误.像这样的东西:
this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@"
function(s, e)
{{
if (typeof({0}) != 'undefined')
{0}.PerformCallback(s.GetFocusedRowIndex());
}}",
this.detailsGrid.ClientInstanceName);
Run Code Online (Sandbox Code Playgroud)
这个bug只能在mozilla firefox中重现!(是的,IE没有问题,这有点奇怪=))
非常重要的是:只有当事件验证开启时,bug才会重现,即:
... EnableEventValidation="false" %> // no error in this case
Run Code Online (Sandbox Code Playgroud)
我建议原因是在必要的字段加载之前回调被触发(因为我得到它,事件验证使用一些隐藏的字段),所以我检查了使用setTimeout
:
this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@"
function(s, e)
{{
window.setTimeout(function () {{
if (typeof({0}) != 'undefined') {0}.PerformCallback(s.GetFocusedRowIndex());
}}, 2000);
}}",
this.detailsGrid.ClientInstanceName);
Run Code Online (Sandbox Code Playgroud)
但是tat并没有帮助.2秒后,回叫开始,我收到错误.它仅在刷新时发生 - 第一次加载页面时不会引发错误.禁用网格的行缓存也没有帮助.需要帮助!=))
编辑:这是StackTrace
at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()
at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent(String …
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个简单的组件reactjs
(一种值选择器:plunker)
现在,我希望控件的上部和下部隐藏(opacity=0
),并opacity=1
在用户使用鼠标悬停中央div
(.range-picker-selection
)时动画显示.
因为我无法DOM
直接使用我的组件的功能(reactjs
不鼓励这个),我想我应该改变状态(类似的东西state.expanded = true
)并依靠reactjs
反映变化.
但是我怎样才能实现动画效果呢?
使用jQuery我会使用element.animate({opacity:0})
但现在我无法访问DOM
我遇到了一个奇怪的问题。现在是星期三,并且:
DateTime date;
DateTime.TryParseExact(
"Wed", "ddd", null, System.Globalization.DateTimeStyles.None, out date); // true
DateTime.TryParseExact(
"Mon", "ddd", null, System.Globalization.DateTimeStyles.None, out date); // false
Run Code Online (Sandbox Code Playgroud)
当我将计算机上的本地日期更改为星期一时,输出交换为“假-真”。
为什么解析器依赖于当前日期?
我正在调查一个死锁,并且在探查器的死锁xml文件中看到进程process5332cf8在快照隔离级别(isolationlevel="snapshot (5)"
)下运行事务。
但是不知何故,它在页面上保持了IX锁,并希望再获取一个。
这可能是什么原因(除了在发生冲突的中间阶段将隔离级别更改为非快照之外)?
我是否缺少有关Snapshot IL的信息?
PS:完整的xml:http : //ideone.com/yuU9td
请考虑方法:
private void FastMethod(string param)
{
}
private void SlowMethod<T>(Expression<Func<T>> expression)
{
}
Run Code Online (Sandbox Code Playgroud)
并进行以下测试:
[TestMethod]
public void Test()
{
var stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < 1000000; i++)
{
this.FastMethod("TestContext");
}
TestContext.WriteLine("Fast time: " + stopwatch.ElapsedMilliseconds);
stopwatch.Restart();
for (int i = 0; i < 1000000; i++)
{
this.SlowMethod(() => this.TestContext);
}
TestContext.WriteLine("Slow time: " + stopwatch.ElapsedMilliseconds);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
快速时间:4
慢时间:2249
http://i.imgur.com/eYcBfZX.png
我知道这是每100万个电话,所以这看起来可能不是一个严重的性能问题.
但是我希望有一些基于属性设置器中的表达式的逻辑,它们将会经常调用+我只是好奇.
这里有优化空间吗?(我无法摆脱Expression
方法参数,基本上我需要做一些语法树解析.有趣的是解析本身足够快).
c# ×5
sql-server ×3
asp.net ×2
css ×2
deadlock ×2
javascript ×2
.net ×1
date ×1
datetime ×1
events ×1
expression ×1
firefox ×1
grid-layout ×1
indexing ×1
lambda ×1
performance ×1
reactjs ×1
snapshot ×1
sql ×1
viewstate ×1