我有以下正则表达式:
var regex = new Regex(
@"^ActiveMQ[\d\.-]*$",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
Run Code Online (Sandbox Code Playgroud)
它运行超过1000个字符串(IsMatch调用).在.NET Core 2.0中它需要10ms.迁移到.NET Core 2.1后,它将接管2 seconds相同的数据.
知道发生了什么事吗?2.1中的任何行为都有变化?
======================
更新:BenchmarkDotNet
可重复3次降(只运行,改netcoreapp2.1以netcoreapp2.0在csproj文件中,再次运行).
https://github.com/ptupitsyn/netcore2.1-regex-perf/tree/master/src
GetPackageInfos2perf降低仅降低25%,但它仍然存在.在真实世界的代码中更改它并非易事,我想避免这种重构.更新2
删除RegexOptions.Compiled解决了问题!
我正在尝试按照http://blogs.microsoft.co.il/sasha/2017/02/26/analyzing-a-net-core-core-dump的说明在Ubuntu 16.04上打开.NET Core 2.0转储-on-Linux的/
转储是从运行进程创建的createdump PID.
我无法确定lldb的正确版本.
ldd $(find /usr/share/dotnet -name libsosplugin.so) | grep lldb不返回任何内容(输出中没有lldb).
我尝试过最新的3.5和3.6,但无济于事:
Can not load or initialize libmscordaccore.so. The target runtime may not be initialized.
如何为.NET Core 2.0转储找到正确的lldb版本?
更新:带输出的命令
$ find /usr/share/dotnet -name libsosplugin.so
/usr/share/dotnet/shared/Microsoft.NETCore.App/2.0.5/libsosplugin.so
$ ldd $(find /usr/share/dotnet -name libsosplugin.so)
linux-vdso.so.1 => (0x00007ffca344f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3d7eecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3d7ebc3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3d7e9ad000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3d7e5e3000)
我遇到了DataTemplate键的奇怪行为:当通过x:Type指定DataType时,x:通过x指定Key:静态引用,x:忽略Key.我写了示例应用来说明它.
XAML资源:
<DataTemplate DataType="{x:Type wpfApplication1:TestDto}" x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey}" />
<DataTemplate x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey2}" />
<DataTemplate DataType="{x:Type wpfApplication1:TestDto}" x:Key="TestKey3" />
<DataTemplate DataType="wpfApplication1:TestDto" x:Key="{x:Static wpfApplication1:DataKeys.TestDtoKey4}" />
Run Code Online (Sandbox Code Playgroud)
C#:
public class TestDto {}
public static class DataKeys
{
public static string TestDtoKey = "TestKey";
public static string TestDtoKey2 = "TestKey2";
public static string TestDtoKey4 = "TestKey4";
}
Run Code Online (Sandbox Code Playgroud)
启动应用程序,请参阅this.Resources.Keys在调试器中:
{DataTemplateKey(WpfApplication1.TestDto)} object {System.Windows.DataTemplateKey}
"TestKey2" object {string}
"TestKey3" object {string}
"TestKey4" object {string}
Run Code Online (Sandbox Code Playgroud)
如您所见,在第一种情况下x:Key被忽略!
有人可以解释发生了什么吗?文档(http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype.aspx)明确指出,设置x:Key会将资源键设置为您在其中指定的任何内容.
我在div中有一组控件(列表框和下面的按钮),我想用半透明覆盖(用中心的加载指示器)覆盖它们.
父div大小和位置不固定.
这是一个例子:http://jsfiddle.net/n4fbp8ex/ - 感兴趣的区域在红色边框内.我希望它覆盖有覆盖层. - "正在加载..."div是我的叠加层.它应该覆盖整个父div(但没有别的),文本应该垂直和水平居中
如何修复"centeredOverlay"风格?
HTML:
<div class="halfColumn">
some content
<br/>
<input />
</div>
<div class="halfColumn">
bla bla
<br/>
lorem ipsum
<div style="border-style:solid; border-width: 1px; border-color: red;">
<div class="centeredOverlay">Loading...</div>
<select size=2 style="width:100%; height:50vh">
</select>
<button>Click me</button>
<button>Click me too</button>
</div>
</div>
<div style="clear:both"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.centeredOverlay {
position: absolute;
background-color: rgba(0,0,0,0.3); /*dim the background*/
}
.halfColumn {
float: left;
width: 50%;
}
.halfColumn2 {
float: right;
width: 50%;
}
Run Code Online (Sandbox Code Playgroud) 用户在处理应用程序时有时会遇到奇怪的异常 我无法复制它.它在执行一个特定的域服务查询时发生.此查询经常执行(每次用户保存更改时).
查询没有参数.有简单的过滤:Context.GetEventsQuery().其中(lce => lce.Id> maxId)
域服务方法很简单:public IQueryable GetEvents(){return ObjectContext.Events; }
在第一次发生之后,它每次都会发生(直到用户刷新网页).
以下是日志中的异常文本:查询"GetEvents"的加载操作失败.System.ServiceModel.DomainServices.Client.DomainOperationException:查询'GetEvents'的加载操作失败.---> System.Exception ---> System.Exception:[Arg_COMException]参数:调试资源字符串不可用.通常,密钥和参数提供了足够的信息来诊断问题. 在System.Net.Browser.BrowserHttpWebRequest上的System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)中查看http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50917.0&File=mscorlib.dll&Key=Arg_COMException System.Net.Browser.AsyncHelper.<> c__DisplayClass5.b__4(Object sendState).<> c__DisplayClass2.b__0(Object sendState)---内部异常堆栈跟踪结束---在System.ServiceModel.DomainServices.Client.WebDomainClient在System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)的System.ServiceModel.DomainServices.Client.DomainClient.EndQuery(IAsyncResult asyncResult)的`1.EndQueryCore(IAsyncResult asyncResult)---内部异常堆栈跟踪结束 - - System.ServiceModel.DomainServices.Client.OmplerationBase.Complete(异常错误),位于System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult as)的System.ServiceModel.DomainServices.Client.LoadOperation.Complete(异常错误)yncResult)在System.ServiceModel.DomainServices.Client.DomainContext.<> c__DisplayClass1b.b__17(Object)
可能是什么原因?
这是我的代码:
void Graph::PutPixel(DWORD x, DWORD y, DWORD c)
{
__asm
{
Mov Eax, y
Mov Ebx, _width
Mul Ebx
Add Eax, x
Shl Eax, 2 // Multiply by four
Add Eax, _buffer
Mov Edi, Eax
Mov Eax, c
StosD
}
}
Run Code Online (Sandbox Code Playgroud)
_buffer和_width是Graph类成员:
private:
DWORD _width;
DWORD* _buffer;
Run Code Online (Sandbox Code Playgroud)
这是行不通的; 我从两个变量得到0值,但实际上它们还有其他一些值.
我可以通过将类变量复制到局部变量并使用它们来解决它:
void Graph::PutPixel(DWORD x, DWORD y, DWORD c)
{
DWORD bufAddr = (DWORD)_buffer;
DWORD w = _width;
__asm
{
Mov Eax, y
Mov Ebx, w
Mul Ebx
Add Eax, x
Shl …Run Code Online (Sandbox Code Playgroud) 我最近安装了Windows 8.1来尝试,我的宠物项目正在崩溃(同样的二进制文件在一台Win7和两台Win8机器上工作正常).
在BitmapImage.EndInit中抛出OutOfMemoryException:
public static BitmapImage GetResourceImage(string resourcePath, int decodePixelWidth = 0, int decodePixelHeight = 0)
{
var image = new BitmapImage();
var moduleName = Assembly.GetExecutingAssembly().GetName().Name;
var resourceLocation = string.Format("pack://application:,,,/{0};component/Resources/{1}", moduleName, resourcePath);
image.BeginInit();
image.UriSource = new Uri(resourceLocation);
image.DecodePixelWidth = decodePixelWidth;
image.DecodePixelHeight = decodePixelHeight;
image.EndInit();
image.Freeze();
return image;
}
Run Code Online (Sandbox Code Playgroud)
据我通过谷歌搜索了解,它与GDI内部有关,但我找不到修复或解决方法.任何想法(除了使用一些其他机制来解码和/或调整图像大小 - 我只需要原始像素数据)?
可在此处找到完整的项目源代码(链接指向相关文件):https://code.google.com/p/lander-net/source/browse/trunk/csharp/LanderNet/Util/BitmapUtils.cs
更新: 我尝试使用TransformedBitmap进行大小调整,它失败并出现相同的异常.
下面是一个演示此问题的控制台应用程序:
class Program
{
static void Main()
{
InitRefs();
GC.Collect();
GC.WaitForPendingFinalizers();
Console.WriteLine(_refObj.IsAlive);
Console.WriteLine(_refAction.IsAlive);
Console.WriteLine(_refEvent.IsAlive);
Console.ReadKey();
}
private static void InitRefs()
{
_refObj = new WeakReference(new object());
_refAction = new WeakReference((Action) (() => { }));
_refEvent = new WeakReference(new EventHandler((sender, eventArgs) => { }));
}
private static WeakReference _refObj;
private static WeakReference _refAction;
private static WeakReference _refEvent;
}
Run Code Online (Sandbox Code Playgroud)
输出为"False True True".
我已经使用SOS.dll试图找到使代表们保持GCed的内容,这是我获得的Action:
!gcroot 02472584
HandleTable:
006613ec (pinned handle)
-> 03473390 System.Object[]
-> 02472584 System.Action
Run Code Online (Sandbox Code Playgroud)
有人可以解释发生了什么吗?
我有[RequestSizeLimit]我的 API 控制器,它有点像预期的那样工作:大于指定限制的请求被拒绝。
[HttpPut]
[RequestSizeLimit(120_000_000)]
public async Task<IActionResult> Put(IFormCollection form)
{
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,抛出异常:
Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Request body too large.
at Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason reason)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.ForContentLength.OnReadStarting()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.TryInit()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.ReadAsyncInternal(Memory`1 buffer, CancellationToken cancellationToken)
Run Code Online (Sandbox Code Playgroud)
因此返回 HTTP 500,但我希望返回 413 或 400。而且我不希望出现异常,因为这是完全正常的情况。
找不到关于此的任何文档。对于过大的请求,返回 413 的正确方法是什么?
我打开了"在其自己的进程中运行每个查询"选项(默认值),但似乎在查询运行之间重用该进程(LINQPad.UserQuery.exe保持运行).
有没有办法避免这种重用?我每次都需要一个新进程(由于JVM的使用).
显而易见的是
Environment.Exit(0);
Run Code Online (Sandbox Code Playgroud)
但它会导致令人不快的"查询意外结束"消息.
我可以像在 ehcache 中那样插入具有不同到期时间的元素吗
例如 :
缓存 : add element1 //5 秒后过期
cache : add element2 //15秒后过期
cache : add element3 //在'x'秒/分钟后过期
如果没有,你能建议任何替代缓存来解决这个问题吗?
我也打算使用 ehcache,但结果证明它不支持 active/eager 过期。