小编vto*_*ola的帖子

ReaderWriterLockSlim什么时候比简单的锁更好?

我正在使用此代码对ReaderWriterLock进行非常愚蠢的基准测试,其中读取的次数比写入次数多4倍:

class Program
{
    static void Main()
    {
        ISynchro[] test = { new Locked(), new RWLocked() };

        Stopwatch sw = new Stopwatch();

        foreach ( var isynchro in test )
        {
            sw.Reset();
            sw.Start();
            Thread w1 = new Thread( new ParameterizedThreadStart( WriteThread ) );
            w1.Start( isynchro );

            Thread w2 = new Thread( new ParameterizedThreadStart( WriteThread ) );
            w2.Start( isynchro );

            Thread r1 = new Thread( new ParameterizedThreadStart( ReadThread ) );
            r1.Start( isynchro );

            Thread r2 = new Thread( new ParameterizedThreadStart( ReadThread ) …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading locking

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

在AngularJS指令中查找子元素

我在一个指令中工作,我在使用参数element按类名查找其子节点时遇到问题.

.directive("ngScrollList", function(){
    return {
        restrict: 'AE',
        link: function($scope, element, attrs, controller) {

            var scrollable = element.find('div.list-scrollable');

            ...
        }
      };
})
Run Code Online (Sandbox Code Playgroud)

我可以通过标签名称找到它,但它无法通过类名找到它,我在控制台中可以看到:

element.find('div')
[<div class=?"list-viewport">?…?</div>?,<div class=?"list-scrollable">?…?</div>?]
element.find('div.list-scrollable')
[]
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?我知道我可以添加jQuery,但我想知道这是不是一个矫枉过正....

javascript angularjs angularjs-directive

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

创建一个HTML表,其中每个TR都是一个FORM

我正在尝试创建一个表格,其中每一行都是一个表格.我希望每个输入都在不同的表格中,但我仍然需要它,例如,所有第一个输入都属于同一个表头,依此类推.

我要做的是一个可编辑的网格,或多或少这个:

<table>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
    <tr>
        <form method="GET" action="whatever">
            <td><input type="text"/></td>
            <td><input type="text"/></td>
        </form>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

但显然我无法以这种方式安排标签(或者w3c验证器所说的那样).

有什么好办法吗?

html webforms html-table web-standards

53
推荐指数
6
解决办法
12万
查看次数

Expires vs max-age,如果两者都在HTTP响应中声明,那么哪一个优先?

如果HTTP响应返回Expires和max-age指示哪一个使用?

Cache-Control: max-age=3600
Expires: Tue, 15 May 2008 07:19:00 GMT
Run Code Online (Sandbox Code Playgroud)

考虑到每个人都指的是不同的时间点.

http cache-control http-caching http-headers

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

RequestVerificationToken不匹配

我有反CRSF MVC机制的问题.cookie和返回的表单输入不匹配.我每次都会收到一个错误,只在一个特定的页面中.在应用程序的其余部分,它运行良好.

服务器正在返回HTTP 500 Internal Server Error,我可以在日志中看到此异常:

[System.Web.Mvc.HttpAntiForgeryException]:{"未提供所需的防伪标记或无效."}

这是服务器生成的隐藏输入:

<input name="__RequestVerificationToken" type="hidden" value="QK8P7rjyZE6Vm5seY7Fr704YCOoFGdTIMzl1W7R0ZFpXSMjGKLG2T05DfFSYTxvtQCEx7DDT69DGsDB2+ZXFHY8oAjiKz0gw8BhDFywgmfIpoXnGpj7fONNzIIfvbrDrE9WJsMu6Io/0bDLM5WfKs0zktiNjyOWpfYrmnfINYmjW8NLOZFoz74xTcgTptAld">
Run Code Online (Sandbox Code Playgroud)

这是Cookie返回:

Set-Cookie:__RequestVerificationToken_L2VGbG93=skmTAVI8HCbfxDS+xhioIMIISL3UOBI7qJM1JbHjTtAqKl4W70pDUcTKMm0p3R3mrHDziE8vXw0C0OO4HArzWO1/e6py+v/cFdbe9maFgjl4jMiZ9Wc4YIhC6+IUXkk6yqJDJ8dCIr8qtGaYcD9IX+m7/SlVhu521KQSWJYRcaY=; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

当我检查服务器发送的内容时,cookie完全相同,但我认为有效负载具有不同的编码:

__RequestVerificationToken:QK8P7rjyZE6Vm5seY7Fr704YCOoFGdTIMzl1W7R0ZFpXSMjGKLG2T05DfFSYTxvtQCEx7DDT69DGsDB2%2BZXFHY8oAjiKz0gw8BhDFywgmfIpoXnGpj7fONNzIIfvbrDrE9WJsMu6Io%2F0bDLM5WfKs0zktiNjyOWpfYrmnfINYmjW8NLOZFoz74xTcgTptAld
Run Code Online (Sandbox Code Playgroud)

区别在于两个出现编码的字符:

    /    ->   %2F  
    +    ->   %2B
Run Code Online (Sandbox Code Playgroud)

这些是我在隐藏输入字段和后有效负载之间可以找到的唯一差异.

什么可能是导致ValidateAntiForgeryToken验证令牌失败的问题?

问候.

security asp.net-mvc csrf antiforgerytoken asp.net-mvc-3

34
推荐指数
1
解决办法
4万
查看次数

Cache-control中no-cache和no-store之间有什么区别?

我没有找到Cache-Control:no-store和之间的实际区别Cache-Control:no-cache.

据我所知,这no-store意味着不允许缓存设备缓存该响应.另一方面,no-cache意味着不允许缓存设备提供缓存响应,而不首先使用源验证它.但那个验证是什么?有条件的?

如果答案有no-cache,但它没有Last-ModifiedETag

问候.

caching http http-caching

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

你是如何做网站容量规划的?

我刚刚阅读了" 容量计划的艺术"(BTW,我喜欢它),其中作者解释了衡量服务,找出最高限度,预测需求,确保轻松部署等方面的重要性等.但通过这本书,他解释了他在Flickr的经历,他不得不面对同样的产品.

很多我们,我们在我们面向其他公司的中小型项目规模的公司工作.我们必须了解他们的业务,他们的需求,计划架构,模型等等.

然后,客户说"我需要支持1000个用户".那么,每秒有多少请求是用户?他们的会议有多长?他们传输了多少数据?他们执行哪些操作?他们有多久了?

有时可以知道这些数字(监控他们现有的应用程序或因为他们已经完成了测量),有时候这是不可能的(因为他们没有当前的网站,或者只是可能知道).

你如何猜测服务器,带宽,存储等的数量......你使用哪些参考数据?

问候.

project-management capacity-planning

29
推荐指数
2
解决办法
7865
查看次数

使用Javascript/jQuery以编程方式关闭SELECT下拉列表

我有一个用一个值初始化的下拉列表.当用户单击它时,将删除单个元素并添加一个新元素,说"正在加载",然后向服务器发出AJAX调用,并在返回时将新值添加到控件中.

问题是控件在更新时保持打开状态,我想关闭它.

这是一个例子:http://jsfiddle.net/vtortola/CGuBk/2/

该示例的AJAX可能不会获取数据,因为我在调用jsfiddle api时遇到了错误,但它显示了SELECT更新期间保持打开状态的方式.

我想知道如何以编程方式关闭下拉列表而不关注另一个输入.

html javascript jquery html-select

27
推荐指数
4
解决办法
4万
查看次数

AJAX和FormsAuthentication,如何阻止FormsAuthentication覆盖HTTP 401?

在使用FormsAuthentication配置的一个应用程序中,当用户访问没有auth cookie或过时的访问受保护页面时,ASP.NET会发出HTTP 401 Unauthorized,然后FormsAuthentication模块在请求结束前拦截此响应,并将其更改为HTTP 302 Found,设置HTTP标头"Location:/ path/loginurl"以便将用户代理重定向到登录页面,然后浏览器转到该页面并检索登录页面,该页面未受保护,获取HTTP 200好的.

当AJAX没有被考虑时,这确实是一个非常好的主意.

现在我在我的应用程序中有一个返回JSON数据的URL,它需要用户进行身份验证.一切运作良好,问题是如果auth cookie到期,当我的客户端代码调用服务器时,它将获得HTTP 200 OK和登录页面的html,而不是HTTP 401 Unauthorized(因为之前解释过).然后我的客户端试图将登录页面html解析为json,并失败.

那么问题是:如何应对来自客户端的过期身份验证?应对这种情况的最优雅解决方案是什么?我需要知道调用何时成功,我想使用HTTP语义来实现.

是否可以以安全的跨浏览器方式从客户端读取自定义HTTP标头?如果请求是AJAX请求,有没有办法告诉FormsAuthenticationModule不执行重定向?有没有办法使用HTTP标头覆盖HTTP状态,就像覆盖HTTP请求方法一样?

我需要Forms身份验证,我想避免重写该模块或编写自己的表单身份验证模块.

问候.

asp.net ajax jquery forms-authentication http

26
推荐指数
3
解决办法
7073
查看次数

关于在ASP.NET响应流上编写的一些问题

我正在使用ASP.NET HttpHandler进行测试,以便直接在响应流上下载文件,而且我不太确定我的方式.这是一个示例方法,将来文件可以存储在数据库中的BLOB中:

        public void GetFile(HttpResponse response)
    {
        String fileName = "example.iso";
        response.ClearHeaders();
        response.ClearContent();
        response.ContentType = "application/octet-stream";
        response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
        using (FileStream fs = new FileStream(Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data"), fileName), FileMode.Open))
        {
            Byte[] buffer = new Byte[4096];
            Int32 readed = 0;

            while ((readed = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                response.OutputStream.Write(buffer, 0, readed);
                response.Flush();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这是否正确或有更好的方法来做到这一点.我的问题是:

  1. 当我用浏览器打开网址时,出现"保存文件"对话框......但似乎服务器已经启动将数据推入流中,然后点击"保存",这是正常的吗?
  2. 如果我删除行"response.Flush()",当我用浏览器打开网址时,...我看到网络服务器如何推送数据但是"保存文件"对话框没有出现,(或者至少不是在合理的时间内)为什么?
  3. 当我用WebRequest对象打开url时,我看到HttpResponse.ContentLength是"-1",虽然我可以读取流并获取文件.-1是什么意思?什么时候HttpResponse.ContentLength会显示响应的长度?例如,我有一个方法,用deflate作为二进制流检索一个大的xml,但在那种情况下...当我用WebRequest访问它时,在HttpResponse中我实际上可以看到ContentLength的流长度,为什么?
  4. Byte []数组的最佳长度是什么,我用作缓冲区以获得Web服务器的最佳性能?我读过这是介于4K和8K之间......但是我应该考虑哪些因素做出正确的决定.
  5. 这种方法是否会破坏IIS或客户端内存的使用?还是它实际上正确地缓冲了转移?

很抱歉这么多问题,我在网络开发方面很新:P

干杯.

.net c# asp.net stream httpresponse

25
推荐指数
1
解决办法
8457
查看次数