小编Dai*_*Dai的帖子

Chrome开发工具能否显示元素大小的来源或原因?

在Chrome开发者工具(自Chrome 63起)的“元素”窗口中选择一个元素时,“计算”标签将显示当前计算出的宽度和高度以及所有其他非默认属性。

但是据我所知,它并没有描述,解释或揭示来源原因为一个元素的框的大小,如果它的大小是不是由于直接向直接设置属性,或者财产继承或级联。

考虑以下示例:

<div id="div1">
    <p id="p1">Lorem ipsum</p>
</div>
Run Code Online (Sandbox Code Playgroud)

使用默认HTML5样式表(即div, p { display: block;})Chrome浏览器将显示计算的宽度和高度#div1,并#p1是相同的,但无处没有指出的高度#div1是造成#p1,也不是说#p1的身高是由它的内容引起的(也考虑到line-heightfont-size以及其他相关的性质)。

如果将样式表更改为此:

#div1 { height: 500px; }
#p1 { height: 75%; overflow: hidden; }
Run Code Online (Sandbox Code Playgroud)

...然后,“开发人员工具”窗口应提供一些指示,表明#div1的高度直接来自height: 500px;属性,而#p1的高度现在源自#div1而不是其内容。

Chrome开发人员工具或JavaScript工具中是否存在此功能?

css google-chrome google-chrome-devtools

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

ASP.NET 中的模拟和委托(使用 SQL Server)

我编写了一个简单的 ASP.NET 应用程序,它作为一个简单的 MSSQL 数据库的前端。该应用程序可通过 Internet 访问。

涉及两个物理服务器:一个 WS2008R2 Active Directory 域控制器,它也运行 MSQL Server 2008 R2,另一个服务器,我的应用程序所在的网络服务器 (WS2008R2/IIS7.5)。

我的应用程序“FooPool”的应用程序池有自己的 AD 用户身份,它在“FooUser”下运行。FooUser 没有任何访问 SQL Server 数据库的权限,只有我自己的个人用户帐户“MyUser”具有该权限。

想法是尝试访问此 Web 应用程序首先使用 IIS 执行 Windows 身份验证,然后我的 Web 应用程序使用模拟访问 SQL Server 数据库。

但是我的应用程序不起作用。

我在没有接触 SQL Server 的情况下测试了应用程序,只是为了测试模拟,所以我做了 Response.Write( WindowsIdentity.GetCurrent(false).Name ); 它正确地显示了模拟 MyUser 而不是充当 FooUser 的应用程序。这适用于所有现代浏览器和整个互联网。

但是一旦它接触到 MSSQL Server,我就会收到错误消息“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败。” 但这不应该发生,因为没有用户令牌用于匿名登录。

我已经完成了我的作业并阅读了有关 ASP.NET 中的委派和模拟的所有内容,并且我已经设置了委派:FooUser 帐户具有服务主体名称设置(我将 SPN 设置为任意字符串,这样做是否正确?) 并在 ADUC 中标记为委派。

最后,我的连接字符串启用了 SSPI,禁用了连接池,并且网络库设置为“dbmssocn”。

我还忘记了什么?

sql-server asp.net impersonation delegation

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

ASP.NET MVC - 复杂模型验证

我有一个像这样的ViewModel类:

class CaseModel {
    public Boolean     ClientPresent { get; set; }
    public ClientModel Client        { get; set; }
}

class ClientModel {
    [Required]
    public String      FirstName     { get; set; }
    [Required]
    public String      LastName      { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图页面包含a <input type="checkbox" name="ClientPresent" />Html.EditorFor( m => m.Client )部分视图.

这个想法是,当用户提供有关案例(业务域对象)的信息时,他们可以选择不通过取消选中ClientPresent框来指定有关客户端(另一个商业对象)的任何信息.

我希望ASP.NET MVC不对子ClientModel对象执行任何验证 - 但是当表单被POST回服务器时会自动填充CaseModel.Client属性,但是因为FirstName并且LastName(不一定)由用户提供它表示它未通过[Required]验证属性,因此ViewData.ModelState.IsValid返回false并且用户获得验证错误消息.

我怎么能得到它所以CaseModel.Client如果CaseModel.ClientPresent是假的话就不会被证实?

请注意,它ClientModel是一个完全独立的ViewModel类,并在应用程序的其他位置使用(例如在ClientController类中,允许用户编辑客户端的各个实例).

validation asp.net-mvc model-binding asp.net-mvc-2

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

捕获Ctrl + Alt + Del.VMWare做到了,但它不应该,对吧?

我一直在花费我的整个计算生命(至少从Windows NT 4.0开始)假设Ctrl+ Alt+ Del组合键被操作系统保持神圣 - 没有程序可以篡夺这个组合键并且它将始终被捕获内核的安全层并发出最高优先级的中断,导致显示安全屏幕(Windows XP Home Edition除外,直接调用任务管理器).

然而我今天正在使用VMWare播放器,我让它捕获我的鼠标和键盘,但在我完成后我想离开,我忘记了热键组合(注意将来参考,我需要双击Ctrl+ Alt).我以为我会Ctrl+ Alt+ Del调用安全屏幕并将焦点切换到任务管理器,但是当我按下键时VMWare Player重新启动我的VM - 不知何故它已经捕获了按键.

所以这次经历告诉我,流程可以捕获CAD,但它是如何做到的?

更新:

  • 我正在运行Windows 7 x64.
  • 我想知道VMWare如何捕获CAD击键.

UPDATE2:

看了你链接的QA后,我看了一下我的设备管理器,看到vmkbd键盘类过滤器看起来像是VMWares - 所以它们可以从那里捕获SAS/CAD键盘.

vmware

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

使用字符串实习来减少网络客户端的内存使用量

我有一个网络客户端来处理来自服务器的数据.

数据作为一系列消息发送,这些消息本身是键/值集合,在概念上类似于HTTP头(除了没有"消息体"),这里是一个典型的单向消息(行分隔\r\n):

Response: OK
Channel: 123
Status: OK
Message: Spectrum is green
Author: Gerry Anderson
Foo123: Blargh
Run Code Online (Sandbox Code Playgroud)

我的协议客户端通过NetworkStream使用a来逐个字符地读取StreamReader,while( (nc = rdr.Read()) != -1 )并使用状态机解析器和StringBuilder实例来填充Dictionary<String,String>实例.然后将这些Dictionary实例保存到内存结构中以进行进一步处理,它们通常具有大约10分钟的有用寿命.

我的客户端每小时收到数千条这样的消息,而且客户端进程持久 - 这是一个问题,因为我的客户端进程通常会从这些String实例中消耗超过2GB的内存- 我使用windbg查看所有内存的运行情况.这是一个问题,因为代码在只有3.5GB内存的Azure VM上运行.我认为我的程序最多只能消耗超过几百MB的RAM.通常我会坐在虚拟机上观察我的进程随着时间的推移消耗的内存消耗,它会稳定地增长到大约2GB,然后随着GC的收集运行突然降到大约100MB,然后它会再次增长.GC运行之间的时间可能不同,根本没有可预测性.

因为这么多的这些字符串是相同的(如键Response,Status等)以及像已知值OKFail我可以使用字符串实习,以减少使用量,如下所示:

// In the state-machine parser after having read a Key name:

String key = stringBuilder.ToString();
key = String.Intern( key );

// etc... after reading value
messageDictionary.Add( key, value …
Run Code Online (Sandbox Code Playgroud)

.net c# string string-interning

5
推荐指数
0
解决办法
386
查看次数

能帮我把mips转换成二进制吗?

我不懂如何翻译标签。任何人都可以帮我

假设我们有以下代码:

loop: 
    add $t2,$t2,$t1 
    addi $t2,$t2,4 
    sw $t2,4($s0) 
    bne $t2,20,loop 
    jr $ra
Run Code Online (Sandbox Code Playgroud)

如何转换成二进制bne $t2,10,loop

mips

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

在没有等待时删除信号量

这是一个并发问题:

字符串值用于表示抽象资源,对于给定的字符串值,只允许一个线程工作;但是如果它们的字符串值不同,多个线程可以同时运行。到目前为止,很简单:

private static readonly Dictionary<String,Object> _locks = new Dictionary<String,Object>();

public static void DoSomethingMutuallyExclusiveByName(String resourceName) {

    Object resourceLock;
    lock( _locks ) {

        if( !_locks.TryGetValue( resourceName, out resourceLock ) ) {
            _locks.Add( resourceName, resourceLock = new Object() );
        }
    }

    lock( resourceLock ) {

        EnterCriticalSection( resourceName );
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是次优的:的域resourceName是无界的,_locks最终可能包含数千个或更多的字符串。因此,在没有更多线程使用特定resourceName值之后,应从字典中删除其锁定对象。

由于下面的这种情况(相关代码位于下面),在使用后简单地删除锁定对象将是一个错误。请注意,所有三个线程都有resourceName = "foo".

  • 线程 1 位于labelC并且刚刚resourceName = "foo"_locks字典中删除了它,因此删除了resourceLock (#1).
  • 线程 2 在labelB,因为没有其他线程被锁定,resourceLock …

.net c# concurrency multithreading

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

使用TaskCompletionSource作为WaitHandle替代品是否可以接受?

我的代码处理到远程主机的TCP连接,ConcurrentQueue用于存储传出消息.它打算在单个线程中运行.连接的生命周期包含在内,RunAsync而单独的对象包含连接的"公共状态":

class PublicState
{
    internal readonly ConcurrentQueue<Message> OutgoingMessageQueue = new ConcurrentQueue<Message>();
    internal TaskCompletionSource<Object> OutgoingMessageTcs = null;

    internal readonly TaskCompletionSource<Object> ConnectedTcs = new TaskCompletionSource<Object>();

    public void EnqueueMessages(IEnumerable<Message> messages)
    {
        foreach( Message m in messages ) this.OutgoingMessageQueue.Enqueue( m);
        if( this.OutgoingMessageTcs == null ) this.OutgoingMessageTcs = new TaskCompletionSource<Object>();
        this.OutgoingMessageTcs.SetResult( null );
    }
}

static async Task RunAsync(IPEndPoint endPoint, PublicState state)
{
    using( TcpClient tcp = new TcpClient() )
    {
        await tcp.ConnectAsync( endPoint.Address, endPoint.Port ).ConfigureAwait(false);

        Byte[] reusableBuffer = new Byte[ …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous async-await

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

如何在每个操作的基础上覆盖 RouteOptions.LowercaseUrls?

在我的 ASP.NET Core 2.1 Web 应用程序中,我的 Startup 方法中有这个:

services.Configure<RouteOptions>( o =>
{
    o.LowercaseUrls = true;
} );
Run Code Online (Sandbox Code Playgroud)

对于初学者,此设置会导致UrlHelper以小写形式呈现所有路径组件(但不是查询字符串项)。

例如,给定这个控制器和动作:

public class FooController : Controller
{
    [Route("/FOO/bAR/{baz}")]
    public IActionResult Bar( [FromRoute] String baz, [FromQuery] String qux )
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

并给出了这个 Razor 表达式:

@Url.Action( action: nameof(FooController.Bar), new { baz = "Ab", qux = "Ab" } )
Run Code Online (Sandbox Code Playgroud)

有了o.LowercaseUrls = false那么这将呈现:

/FOO/bAR/Ab?qux=Ab
Run Code Online (Sandbox Code Playgroud)

有了o.LowercaseUrls = true那么这将呈现:

/foo/bar/ab?qux=Ab
Run Code Online (Sandbox Code Playgroud)

LowercaseUrls = true对于 90% 的操作,使用是很好的(甚至是首选!),但对于少数 URL,重要的是保留路由参数的大小写(特别是当路由参数是 Base64 编码或 …

routing asp.net-mvc-routing asp.net-core

5
推荐指数
0
解决办法
362
查看次数

如何在 select 语句中包含 PERCENTILE_CONT 列而不生成有关 ORDER BY 子句或聚合函数的错误?

我需要从一些数据生成特定的报告,并且在弄清楚 PERCENTILE_CONT 的正确用法以提供我需要的结果时遇到了很大的麻烦。我想在查询结果中包含一列,该列显示一系列值中第 95 个百分位的值。

我有一个表如下:

customer_id sale_amount sale_date
1   265.75  2019-09-11 00:00:04.000
1   45.75   2019-09-10 01:00:04.000
1   2124.77 2019-09-10 04:00:04.000
1   66.99   2019-09-10 04:20:04.000
1   266.49  2019-09-09 11:20:04.000
1   3266.49 2019-09-08 11:20:04.000
Run Code Online (Sandbox Code Playgroud)

非常简单。

我可以运行以下查询,没有问题:

select
    min(sale_amount) as minimum_sale,
    max(sale_amount) as maximum_sale,
    avg(sale_amount) as average_sale
from
    sales
where
    customer_id = 1;
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

minimum_sale    maximum_sale    average_sale
45.75           3266.49     1006.040000
Run Code Online (Sandbox Code Playgroud)

我想要的是第四列 perc_95,它将计算代表 sale_amount 的第 95 个百分位数的值。

这可以让我获得价值:

select distinct
    customer_id,
    percentile_cont(0.95) WITHIN GROUP (order by sale_amount) OVER (partition by customer_id) as perc_95 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server percentile-cont

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