小编Ken*_*enD的帖子

将"average"参数添加到.NET的Random.Next()以获得曲线结果

我希望能够添加" 平均 "参数Random.Next(Lower, Upper).这个方法会有min,maxaverage参数.我创建了一个像这样的方法一段时间用于测试(它使用列表并且非常糟糕),所以我想了解如何编写正确的实现.

拥有此功能的原因是我游戏中的许多程序/随机事件.假设你希望树木大部分时间都是10个单位高,但仍然可以低到5或15.法线Random.Next(5,15)将全部返回结果,但这种方法会有更多的钟形曲线朝向它的结果.意义10将是最常见的,并且在每个方向上出去都不太常见.例如,将平均值降低到7将会产生相对较小的树(或者正在使用的任何树),但是大的树仍然是可能的,但这种情况并不常见.

以前的方法(伪代码)

  1. Loop from min to max
  2. Closer to average numbers are added to the list more times
  3. A random element is selected from the list,更接近平均值的元素会增加更多,因此更有可能被选中.

好吧,这就像把一堆糖果放在一个袋子里然后随机挑一个.是的,慢.你对改进这个有什么看法?

插图:(不完全准确,但你看到了这个想法) 在此输入图像描述

注意:许多人建议使用钟形曲线,但问题是如何在这种意义上改变曲线的峰值以支持一侧.

.net c# random algorithm

21
推荐指数
3
解决办法
1828
查看次数

如何检查X509证书是否已启用"扩展验证"?

如果X509Certificate(或X509Certificate2)设置了"扩展验证"(EV)标志,我很难找到从C#(.Net 4.0)应用程序检查的可靠方法.有谁知道最好的方法?

c# ssl x509certificate

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

如何在连接后终止OpenSSL s_client

(评论者:我也知道这是在超级用户领域,但如果前一个问题偷偷摸摸... :))

这与此问题非常相似,但在Windows(7/8/Server 2008/2012)环境中:我使用的是OpenSSL的Windows端口.

我在跑

openssl s_client -connect 192.168.0.1:443

从命令提示符,以显示证书信息.但是,openssl之后会等待用户输入; 我可以Ctrl+ C"打破"输出,或者每次只输入几个字符并点击返回,但我需要自动化 - 所有我真正感兴趣的是证书信息.

根据上一个问题,我需要一些方法来终止/关闭连接.不过,我已经试过管道输入文件中,echo荷兰国际集团/ type荷兰国际集团投入进来,但是没有一样能模拟真实用户.任何人都可以告诉我如何在连接后强制openssl退出?

windows openssl batch-file

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

jquery:提交表格两次

我正在为他们正在举办的活动创建一个客户注册表.基本用户详细信息将提交给第三方系统(即名称,电子邮件等),但其余字段需要通过电子邮件发送给客户端.

我需要这样的事情发生:

  1. 项目清单
  2. 用户填写表格
  3. jquery bvalidator检查表单中的必填字段
  4. 表单(通过ajax)提交到一个单独的页面,其中一封电子邮件发送给客户端
  5. 然后将表单(常规POST方法)提交给第三方系统
  6. 成功用户被传递回'谢谢'网址.

这是我尝试使用的代码,但是它会在循环中被反复提交到"电子邮件"页面,并且永远不会提交到外部URL.

如果我替换了$('#form1').submit();警报,它只向电子邮件页面提交一次,然后正确显示警报.

var myvalidator = $('#form1').bValidator(optionsGrey);

$('#form1').submit(function() {
  if (myvalidator.isValid()) {

    $.ajax({
      data: $('#form1').serialize(),
      type: "POST",
      url: "email_send.asp",
      success: function() {
        $('#form1').submit();
      }
    });
  }
  return false;
});
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何建议?

jquery

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

自 Chrome 88 以来的 SignalR 和/或计时器问题

我们有一个 ASP.Net WebForms 应用程序,它使用 SignalR (v2.4.1) 在服务器和客户端之间进行一些双向通信。多年来一直运行良好:连接稳定,数百名用户使用它,等等。

但是,我们已经开始从我们的客户群中收到有关连接问题的零星报告,所有报告都报告相同的事情:如果浏览器 (Chrome) 会话闲置超过 5 分钟,则连接在后台断开。页面中的所有计时器都停止定期运行,这(除其他外)停止发送“keepalive”,最终连接失败并出现客户端错误:

The client has been inactive since <date> and it has exceeded the inactivity timeout of 50000 ms. Stopping the connection.
Run Code Online (Sandbox Code Playgroud)

此后的标准程序是自动重新启动连接,但这不会做任何事情。如果/当用户重新激活页面(例如通过切换到选项卡),一切都开始恢复活力,尽管 SignalR 连接已关闭。

经过大量调查,我们似乎受到了Chrome v88 中引入的这一更改的影响,其中计时器 ( setTimeouts) 受到严格限制,如果

  • 该页面已隐藏超过 5 分钟
  • 计时器已经“链接”了 5 次或更多次 - 我假设这类似于递归,计时器调用自身。
  • 页面已经“沉默”了 30 秒

5 分钟/30 秒的条件与我们得到的报告相符。然而,我们在我们的页面上运行非常基本的 Javascript:setTimeout在我们自己的代码中只有两种用法,它们都不能“链接”(递归)到自己身上。我们也不能复制的问题:这是发生在我们的测试,但我们不能这发生可靠。通过禁用此功能chrome://flags/#intensive-wake-up-throttling似乎可以缓解该问题 - 但当然,我们不能将其作为使用我们网站的要求。

该站点上唯一运行的其他 Javascript 是jquery.signalR-2.4.1.js,并且从 SignalR 源代码中可以看出,其中有很多setTimeouts。SignalR 是否会受到 Chrome 中这一变化的影响;也许是在临时网络问题或其他一些不可预测的事件后尝试以静默方式重新连接时?

如果没有,是否有任何方法可以在任何浏览器或 …

javascript google-chrome timer signalr

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

WCF"自托管"应用程序变得无法响应

我们有一个C#(.NET 4.0)控制台应用程序,它"自托管"两个WCF服务:一个使用WSHttpBinding,另一个使用BasicHttpBinding.

连接到这些服务,我们有两个独立的客户端应用程序:使用该服务器的基于Silverlight的服务BasicHttpBinding,以及使用该服务器的另一个控制台应用程序WSHttpBinding.

WCF服务应用程序通常有大约30个用户通过Silverlight客户端连接,另外几个用户从控制台应用程序客户端连接.它无论如何都不是"平坦的"; 每个客户端最多可以每5秒查询一次WCF服务.

问题是:间歇性地使服务应用程序无响应.虽然服务器本身继续运行(它继续写入日志文件),但所有WCF活动(两者都ServiceHost显示)似乎"抓住".不处理新请求(尽管接受TCP连接).此外,应用程序消耗的线程数开始急剧增加,速度大约为每秒一个新线程.代码本身对Threads或ThreadPools 没有任何作用,尽管偶尔会发出Thread.Sleep几百毫秒的代码.

令人沮丧的是问题的间歇性:代码定期运行数小时,甚至几天没有任何问题.然后,没有明显的原因,它突然变得没有响应,线程计数开始滴答作响.

我已经尝试模拟用户活动 - 连接和断开客户端,"淹没"服务请求 - 但我无法重现故障.

如果问题是WCF Throttling,我已添加以下代码:

 ServiceThrottlingBehavior throttlingBehavior = new System.ServiceModel.Description.ServiceThrottlingBehavior
                                                           {
                                                               MaxConcurrentCalls = 512,
                                                               MaxConcurrentInstances = 8192,
                                                               MaxConcurrentSessions = 8192
                                                           };

        host.Description.Behaviors.Add(throttlingBehavior);
        host2.Description.Behaviors.Add(throttlingBehavior);
Run Code Online (Sandbox Code Playgroud)

..没有明显的效果.

我已经在代码中进行了大量的日志记录,以尝试确定触发此行为的内容 - 将每个调用记录到每个方法 - 但结果没有出现任何内容.我已将所有内容包装在try... catch块中,并将任何异常分散到日志文件中,以查看某些内容是否落在某处,并且还UnhandledException以类似的方式捕获了s ......但同样,似乎没有任何错误.

上述行为对任何人来说都是熟悉的,或者有人可以建议最好的方法来解决这个问题吗?

编辑:按照下面Wal的建议,当它开始出现错误时,我已经捕获了应用程序的.DMP,并查看VS2012中的Parallel Stacks视图,我看到:

在此输入图像描述 在此输入图像描述

......和其他非常相似但线程数不同的人.我不够巧妙地解释这意味着什么..谁能建议从哪里开始寻找下一个?

.net c# wcf

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

从WAV文件解码DTMF

继我之前的问题之后,我的目标是从C#中检测WAV文件中的DTMF音调.但是,我真的很难理解如何做到这一点.

我知道DTMF使用频率组合,并且可以使用Goertzel算法......不知何故.我抓住了一个Goertzel代码片段,我尝试将.WAV文件推入其中(使用NAudio读取文件,这是一个8KHz单声道16位PCM WAV):

 using (WaveFileReader reader = new WaveFileReader(@"dtmftest_w.wav"))
  {
      byte[] buffer = new byte[reader.Length];

      int read = reader.Read(buffer, 0, buffer.Length);
      short[] sampleBuffer = new short[read/2];
      Buffer.BlockCopy(buffer, 0, sampleBuffer, 0, read/2);
      Console.WriteLine(CalculateGoertzel(sampleBuffer,8000,16));                 
   }

 public static double CalculateGoertzel(short[] sample, double frequency, int samplerate)
   {
      double Skn, Skn1, Skn2;
      Skn = Skn1 = Skn2 = 0;
      for (int i = 0; i < sample.Length; i++)
         {
            Skn2 = Skn1;
            Skn1 = Skn;
            Skn = 2 * Math.Cos(2 * Math.PI * …
Run Code Online (Sandbox Code Playgroud)

c# dtmf goertzel-algorithm

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

使用OpenSSL .Net检索证书

我想使用OpenSSL .Net包装器从远程服务器检索证书到我的C#代码.基本上,我想复制

openssl s_client -connect 192.168.254.13:636 -showcerts
Run Code Online (Sandbox Code Playgroud)

..并最终将结果带入X509证书.这有可能,如果有的话,有人能指出我正确的方向吗?

.net c# openssl

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

升级到Visual Studio 2013后无法启动/调试ASP.NET网站

我刚刚在我的开发机器上安装了Visual Studio(Ultimate).安装似乎没问题,但是当我尝试运行VS2012 ASP.NET Web应用程序项目时,IE启动并给了我:

错误:Internet Explorer无法显示网页

安装了IIS Express,并将项目设置为使用IIS Express:

VS2013显示项目设置为使用IIS Express

IIS Express正在运行,端口已打开等,但它似乎没有为任何网页提供服务.如果我查看IIS Express日志,我可以看到返回的请求看起来像一个303错误:

2013-12-23 14:22:49 ::1 GET /login.aspx - 25869 - ::1 Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+WOW64;+Trident/5.0) - 303 0 0 0
2013-12-23 14:22:53 ::1 GET /login.aspx - 25869 - ::1 Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+WOW64;+Trident/5.0) - 303 0 0 0
Run Code Online (Sandbox Code Playgroud)

我需要做什么/撤消才能让VS2013运行我的项目?

iis-express visual-studio-2013

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

获取 macOS 上运行的 .Net Core 中所有打开的窗口的列表(通过 NSApplication?)

在 Windows 上获取 .Net Framework 中打开的窗口列表相对容易。如何在 macOS 上的 .Net Core/.Net 5 或更高版本中执行相同操作?

为了澄清这一点,我正在寻找一种方法来检索任何正在运行的应用程序/进程拥有的所有打开的窗口的列表。我没有太多 macOS 开发经验 - 我是一名 Windows 开发人员 - 但我尝试使用此答案NSApplication建议的方法。

我在 macOS Monterey (12.2) 上的 VS2022 中创建了一个 .Net 6.0 控制台应用程序,添加了对 和 的引用,Xamarin.Mac如下libxammac.dylib所述-描述了在 Xamarin 而不是 .Net 中执行此操作,但我没有看到任何其他选项来创建控制台应用。用简单的代码:

 static void Main(string[] args)
    {
        NSApplication.Init();
    }
Run Code Online (Sandbox Code Playgroud)

我得到输出

Xamarin.Mac:dlopen错误:dlsym(RTLD_DEFAULT,mono_get_runtime_build_info):找不到符号

我不知道这意味着什么。我什至不确定这种方法有什么优点。

有谁知道是否可以从 .Net Core/6.0 应用程序使用 NSApplication,如果可以,NSApplication 是否能让我读取系统范围内打开窗口的列表?如果没有,还有其他方法可以实现这一点吗?

这仅供我自己的内部使用,它不需要在我自己的环境之外以任何方式便携或稳定。

c# macos .net-core

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