小编Nic*_*rey的帖子

从阵列加权随机选择

我想从数组中随机选择一个元素,但每个元素都有一个已知的选择概率.

所有机会在一起(在阵列中)总和为1.

您认为哪种算法最快,最适合大型计算?

例:

id => chance
array[
    0 => 0.8
    1 => 0.2
]
Run Code Online (Sandbox Code Playgroud)

对于这个伪代码,所讨论的算法应该在多个调用上统计地返回id上0的一个元素的id 上的四个元素1.

arrays random algorithm

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

字符串到HtmlDocument

我正在通过URL获取html文档WebClient.DownloadString(url)但是很难找到我正在寻找的元素内容.虽然在我周围阅读HtmlDocument,但它有各种各样的东西GetElementById.如何HtmlDocument用返回的html 填充url

html c#

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

标签和元素之间有什么区别?

在一些关于XML的文本中,术语标签元素似乎可以互换使用.他们的意思是相同的,还是这些术语代表不同的东西?

xml terminology

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

创建或更新has_one ActiveRecord关联

我一直在努力ActiveRecord探索协会,但我已经碰到了一些砖墙,无论我查看ActiveRecord文档多少,我都无法解决如何解决问题.

我有两节课:

Property -> has_one :contract  
Contract -> belongs_to :property
Run Code Online (Sandbox Code Playgroud)

在我的契约类中,我有一个create_or_update_from_xml的方法

首先,我检查以确保有问题的财产存在.

property_unique_id = xml_node.css('property_id').text
      property = Property.find_by_unique_id(property_unique_id)
      next unless property
Run Code Online (Sandbox Code Playgroud)

这就是我遇到困难的地方,我有合同的属性哈希,我想要做的是:

if property.contract.nil?
  # create a new one and populate it with attributes
else
  # use the existing one and update it with attributes
Run Code Online (Sandbox Code Playgroud)

我知道如果它是原始SQL我会怎么做,但我无法理解主动的ActiveRecord方法.

任何通过这个路障的提示都将受到极大的赞赏.

提前致谢.

activerecord ruby-on-rails

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

解析错误:关键字“interface”被保留

我正在为 API 上的 CRUD 操作创建 NodeJS 和 MongoDB 库。我正在尝试使用 Typescript 创建一个接口来获取 url 和数据库名称,如下所示:

但我收到以下错误:

interface IConfig {
  url: string
  name: string
}

export default IConfig
Run Code Online (Sandbox Code Playgroud)

Parsing error: The keyword 'interface' is reserved

我使用 standardjs 作为 linter,这是我的tsconfig文件:

{
  "compilerOptions": {
    /* Visit https://aka.ms/tsconfig.json to read more about this file */

    /* Projects */
    // "incremental": true,                              /* Enable incremental compilation */
    // "composite": true,                                /* Enable constraints that allow a TypeScript project to be used with project references. */ …
Run Code Online (Sandbox Code Playgroud)

typescript

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

C#按值复制数组

我有一个类型数组MyType[] types; ,我想制作和独立的数组副本.我试过这个

MyType[] types2 = new MyType[types.Length] ;

types2 = types ;
Run Code Online (Sandbox Code Playgroud)

但这会创建对第一个的引用.然后我试过了

Array.Copy( types , types2 , types.Length ) ;
Run Code Online (Sandbox Code Playgroud)

但我有同样的问题:更改第一个数组中的值也会更改副本中的值.

如何制作数组,IList或IEnumerable的完全独立或深层副本?

c# arrays

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

在数组中自动实现接口

我读了一本书"通过C#第四版CLR".我无法理解一个陈述:

因此,例如,如果您有以下代码行:

FileStream[] fsArray;
Run Code Online (Sandbox Code Playgroud)

那么当CLR创建的FileStream[]类型,它会导致这种类型的自动实现 IEnumerable<FileStream>,ICollection<FileStream>以及 IList<FileStream>接口.此外,该FileStream[]类型也将实现的接口的基本类型: IEnumerable<Stream>,IEnumerable<Object>, ICollection<Stream>,ICollection<Object>, IList<Stream>,和IList<Object>.

我用这段代码测试了这个语句:

FileStream[] fsArray = new FileStream[0];

string s = null;
foreach (var m in fsArray.GetType().GetInterfaces())
    s += m.ToString() + Environment.NewLine;
Run Code Online (Sandbox Code Playgroud)

结果,我有这个:

System.ICloneable
System.Collections.IList
System.Collections.ICollection
System.Collections.IEnumerable
System.Collections.IStructuralComparable
System.Collections.IStructuralEquatable
System.Collections.Generic.IList`1[System.IO.FileStream]
System.Collections.Generic.ICollection`1[System.IO.FileStream]
System.Collections.Generic.IEnumerable`1[System.IO.FileStream]
System.Collections.Generic.IReadOnlyList`1[System.IO.FileStream]
System.Collections.Generic.IReadOnlyCollection`1[System.IO.FileStream]
Run Code Online (Sandbox Code Playgroud)

没有执行IEnumerable<Stream>和其他人!我在某处弄错了吗?或杰弗里里希特犯了错误?

此外,我认为这是无意义的.因为Arrays支持协方差.

c# clr

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

使用makecert.exe创建自签名CA证书

我正在尝试在32位Windows 7(虚拟)上创建自签名CA证书.该makecert是v7.1位于C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin>.

每当我尝试执行此命令(提升)...

makecert.exe -r -n “CN=MyCert CA” -pe -sv MyCert.pvk -a sha1 -len 2048
             -b 09/04/2012 -e 09/04/2018 -cy authority MyCert.cer
Run Code Online (Sandbox Code Playgroud)

...我收到提示输入密码但是当我确认密码时,我得到了:

错误:CryptCertStrToNameW失败=> 0x80092023(-2146885597)失败

任何帮助都会被贬低.

问候.

windows ssl ssl-certificate makecert

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

从"jira notation"中的时间字符串中提取分钟

我试图从"jira time notation"输入的用户输入中提取分钟数.

例如,我想实现以下结果

  • 输入:"30m"/输出:30
  • 输入:"1h 20m"/输出:80
  • 输入:"3h"/输出180

从研究中,我发现TimeSpan.ParseExact,但我无法弄清楚如何使用它来实现我的需要.

非常感谢所有的帮助.

我的代码到目前为止:

public static int TextToMins(string TimeText)
    {
        CultureInfo culture = new CultureInfo("en-IE");
        string[] formats = { "What goes here?" };
        TimeSpan ts = TimeSpan.ParseExact(TimeText.Trim().ToLower(), formats, culture);
        return Convert.ToInt32(ts.TotalMinutes);
    }
Run Code Online (Sandbox Code Playgroud)

c# timespan jira

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

如何承担跨账户角色?

AWS 的 Golang SDK 说我应该stscreds.AssumeRoleProvider用来承担跨账户角色(在这种情况下,用于从 Web 服务器查询另一个账户的 DynamoDb 表)。此代码有效:

var sess *session.Session

func init() {

  sess = session.Must(session.NewSession(&aws.Config{
    Region: aws.String("us-west-2"),
  }))

}

func getDynamoDbClient() *dynamodb.DynamoDB {

  crossAccountRoleArn := "arn:...:my-cross-account-role-ARN"

  creds := stscreds.NewCredentials(sess, crossAccountRoleArn, func(arp *stscreds.AssumeRoleProvider) {
    arp.RoleSessionName = "my-role-session-name"
    arp.Duration = 60 * time.Minute
    arp.ExpiryWindow = 30 * time.Second
  })

  dynamoDbClient := dynamodb.New(sess, aws.NewConfig().WithCredentials(creds))

  return dynamoDbClient
}
Run Code Online (Sandbox Code Playgroud)

根据文档,返回的客户端是线程安全的:

DynamoDB 方法可以安全地同时使用。

问题是,由于凭证是通过自动续订的stscreds.AssumeRoleProvider,我是否可以

  • 需要在每个请求上新建一个新客户端(以确保我有未过期的凭据),或

  • 我可以在 Web 服务器启动时新建一个 DynamoDb 客户端,并在 Web 服务器的整个生命周期中重复使用它吗?

编辑注意:

我深入研究了 Golang AWS SDK 的源代码,看起来返回的凭证stscreds.NewCredentials() …

go aws-sdk aws-sdk-go

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