小编Man*_*uel的帖子

为什么具有2个线程的8个进程每个创建的负载比具有16个线程的进程多?

我有一个简单的程序,它启动n个线程并在每个线程上创建一些负载.如果我只启动一个线程,则一个核心获得大约100%的负载.如果我用16个线程(这意味着每个核心一个线程)启动一个进程,我只能获得大约80%的负载.如果我用2个线程启动8个进程(这仍然意味着每个核心一个线程),我得到大约99%的负载.我在这个样本中没有使用任何锁定.

这种行为的原因是什么?据我所知,如果有100个线程正在工作,那么负载会下降,因为操作系统必须安排很多.但在这种情况下,只有核心数量的线程.

情况更糟(至少对我而言).如果我在循环中添加一个简单的thread.sleep(0),则一个进程和16个线程的负载增加到95%.

任何人都可以回答这个问题,或提供有关此特定主题的更多信息的链接吗?

一个进程16个线程

八个进程2线程

一个进程16个线程与thread.sleep(0)

//Sample application which reads the number of threads to be started from Console.ReadLine
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the number of threads to be started");
            int numberOfThreadsToStart;

            string input = Console.ReadLine();

            int.TryParse(input, out numberOfThreadsToStart);
            if(numberOfThreadsToStart < 1)
            {
                Console.WriteLine("No valid number of threads entered. Exit now");
                Thread.Sleep(1500);
                return;
            }

            List<Thread> threadList = new List<Thread>();
            Stopwatch sw = Stopwatch.StartNew();
            for (int i = 0; i < numberOfThreadsToStart; i++)
            {
                Thread workerThread = new …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

围绕AesManaged的这个包装好吗?

我需要加密/解密一些字符串.我根据msdn文档构建了我的包装类,但有一些更改.

由于我想使用给定的字符串/密码来加密/解密数据,因此我不会AesManaged用于创建密钥.(用户应该能够使用他输入的密钥加密/解密,因此我无法使用密钥AesManaged,我无法保存密钥).

我改为通过使用Rfc2898DeriveBytes(PBKDF2)给定盐来创建密钥.使用给定的盐,因为我没有存储密钥,因此我认为盐必须始终相同.

然后我创建一个IV,加密给定的字符串并连接IV和加密的字符串.这将最终保存在文件中.这意味着IV与加密数据一起保存.

问题:

  1. 可以将IV与加密数据一起存储吗?
  2. 有没有其他方法来创建密钥而不是每次都使用相同的盐(基于给定的密码)?
  3. 这种加密是使用AES128还是AES256完成的?
  4. IV总是16个字节,还是可以改变?

    static void Main(string[] args)
    {
        const string stringToEncrypt = "String to be encrypted/decrypted. Encryption is done via AesManaged";
        const string password = "m1Sup3rS3cre!Password";

        string encrypted = EncryptString(stringToEncrypt, password);
        string roundtrip = DecryptStringFromBytes_Aes(encrypted, password);

        Console.WriteLine("Original:   {0}", stringToEncrypt);
        Console.WriteLine("Round Trip: {0}", roundtrip);

        Console.ReadLine();
    }

    static string EncryptString(string plainText, string password)
    {
        string encryptedString;

        using (AesManaged aesAlg = new AesManaged())
        {
            aesAlg.Key = PasswordAsByte(password);
            ICryptoTransform encryptor …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption aes encryption-symmetric

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

主机标头可以与 URL 不同吗

我们运行一个使用 WCF 托管的网站。该网站托管在: https: //foo.com,并使用以下命令注册 ssl 证书:

netsh http add sslcert hostnameport=foo.com:443
Run Code Online (Sandbox Code Playgroud)

当我们浏览服务器上的网站时,一切都很好,并且证书是有效的。

服务器前面有一个负载均衡,它监听 bar.com,然后将请求重定向到我们的服务器。负载均衡器不会重写获取 URL,而只会重写主机标头。

重写后的标头如下所示:

GET https://foo.com/ HTTP/1.1
Host: bar.com
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

现在我们遇到一些问题,表明 ssl 证书在这种情况下无效。

Loadbalancer本身有一个注册监听https://bar.com的证书

问题:

  • get URL 和 http header 中的 Host 不同可以吗?
  • 如果标头中可以有不同的值,那么我们应该在哪个 url 下运行该网站?获取 URL 或主机 url?

wcf proxy http

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

使用Windows Azure Active Dirctory进行Apache LDAP身份验证

我有一个php网站,它运行在azure的apache webserver上.

我想通过ordre中的ldap(mod_authnz_ldap)对用户进行身份验证,仅管理用户一次.

是否可以将Azure Active Directory用作ldap服务器?如果是的话,我在哪里可以管理users/group/xyz?

或者我是否必须为此设置独立的ldap服务?

apache azure

3
推荐指数
1
解决办法
5260
查看次数

为什么重命名加载的.net程序集工作?

我创建了ac#.net(4.5)命令行应用程序.这个应用程序什么都不做,但保持开放:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("started");
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在资源管理器中导航到此文件,我可以在程序运行时使用F2重命名它.

如果我尝试删除它,将显示一条消息: 在此输入图像描述

我可以理解,删除已加载的程序集是不可能的.将加载的程序集从一个文件夹移动到另一个文件夹也不起作用.

但为什么可以重命名呢?

这是有意的吗?是否有用例重命名现有/已加载的程序集?

.net c#

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

如何在WinRT图像控制中放大/缩小

我有一个WinRT Metro应用程序,我在其中显示图像.我现在想用捏手势放大/缩小.有没有一种简单的方法可以在图像控件上激活它,或者我是否必须自己实现整个手势/捏合逻辑?

c# windows-runtime

0
推荐指数
1
解决办法
2538
查看次数