小编Man*_*uel的帖子

散列表索引如何工作?

我知道有关创建哈希码,冲突,.GetHashCode和.Equals等之间的关系.

我不太明白的是如何使用32位哈希值来获得~O(1)查找.如果你有一个足够大的数组来分配32位数字中的所有可能性,那么你确实得到了~O(1)但这会浪费内存.

我的猜测是,Hashtable类内部创建一个小数组(例如1K项),然后将32位数重新转换为3位数,并将其用作查找.当元素数量达到某个阈值(比如说75%)时,它会将数组扩展为10K项目,并将内部哈希值重新计算为4位数,当然基于32位哈希值.

顺便说一句,我在这里使用~O(1)来解释可能的碰撞及其分辨率.

我是否有正确的要点,或者我是否完全脱离了标记?

algorithm hashtable data-structures

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

如何使用NBuilder自动创建子集合?

鉴于以下课程:

class Department
{
    public String Name { get; set; }
    public IList<Employee> Employees { get; set; }
}
class Employee
{
    public String Name { get; set; }
    public String Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用NBuilder,我可以创建一个部门对象,并通过以下方式分配10名员工:

var employees = Builder<Employee>.CreateListOfSize(10).Build();
var department = Builder<Department>
    .CreateNew()
    .With(d=>d.Employees = employees)
    .Build();
Run Code Online (Sandbox Code Playgroud)

这适用于少量的集合,但是对于大型集合来说它很麻烦.有没有办法让NBuilder自动填充对象中的所有集合?

顺便说一句,我没有绑定NBuilder,所以如果有另一个免费的图书馆这样做,我会非常乐意切换.

.net nbuilder

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

如何知道文本框何时被修改?

我正在使用.Net 4.5的延迟绑定标记,但我想更改文本框的背景颜色,而更改不是"已提交".如何在发生延迟时将IsDirty属性设置为true?

我尝试使用TextChanged事件设置IsDirty标志,然后在绑定属性设置时删除标志.问题是TextChanged会在绑定属性发生更改时触发,而不仅仅是在用户修改文本时触发.

通过监视TextChanged事件和绑定属性,我以一种非常笨重和脆弱的方式"工作".不用说这很容易出错,所以我想要一个更清洁的解决方案.有没有办法知道文本框已被更改但尚未提交(延迟)?

wpf

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

int.ToString(CultureInfo.InvariantCulture) 是必要的吗?

是否存在不使用破折号 (-) 表示负数的文化?

如果我不必处理负数,int.ToString() 会在所有文化中产生相同的数字字符串吗?

我有一段带有 int.ToString(CultureInfo.InvariantCulture) 的代码,我想确保我可以简化它并删除 InvariantCulture 参数。

c#

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

EF + async =在创建模型时不能使用上下文?

设置非常标准.使用SQL Server连接字符串创建视图和存储库.将存储库传递给视图模型,并在视图模型的构造函数上传递我从存储库调用的集合.一切正常,直到我尝试使用async/await组合异步进行,但现在我在调用存储库的集合时收到错误"在创建模型时不能使用上下文".

旧工作代码:

void FillPeopleList()
{
  PeopleList = _repository.GetPeople();
}
Run Code Online (Sandbox Code Playgroud)

新破码:

async void FillPeopleList()
{
  await Task.Run(()=>
  {
    PeopleList = _repository.GetPeople(); // Error
  });
}
Run Code Online (Sandbox Code Playgroud)

c# wpf entity-framework

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

如何使用rspec测试输入标题/工具提示

如何使用rspec测试输入的标题/工具提示?

我没有测试工具提示,直到我注意到一些停止工作并且没有被其他测试捕获.(不得不添加一些东西,以便接受这个问题)

rspec ruby-on-rails capybara

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

正则表达式搜索重叠模式

这是我的问题的简化版本:

我正在尝试提取由非单词字符包围的所有字母,但是当非字符重叠时,我的正则表达式不起作用.

这是我的代码:

var text = "Z#A#B#S";
var regex = new Regex(@"\W(?<letter>\w)\W");
foreach (var m in regex.Matches(text).Cast<Match>())
{
    Console.WriteLine("Match = {0}", m.Value);
    Console.WriteLine("Letter = {0}", m.Groups["letter"].Value);
    Console.WriteLine("-------------------");
}
Run Code Online (Sandbox Code Playgroud)

我希望它匹配A和B,但它只匹配A.这是输出:

Match = #A#
Letter = A
-------------------
Run Code Online (Sandbox Code Playgroud)

这适用于文本"Z#A ## B#S"(两个匹配之间没有重叠).

如何从"Z#A#B#S"文本中提取A和B?

谢谢

regex

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

无法使用FactoryGirl的用户/数据登录

在进行我将使用JS的测试之前,我必须先登录用户.登录页面确实有效(此测试除外).

require 'spec_helper'
require 'capybara/poltergeist'
include Capybara::DSL
Capybara.javascript_driver = :poltergeist    

describe "Application", js: true  do
  describe "when logged in", js: true do
    let(:user) { FactoryGirl.create(:user) }
    before do
      visit signin_path
      fill_in "Email", with: user.email
      fill_in "Password", with: user.password
      click_button "Sign in"
    end
    it "can authenticate user" do
      User.all.first.authenticate(user.password).email.should == user.email
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是单击"登录"按钮返回到具有"无效用户/密码"组合的页面(就好像用户不在数据库中).事实上,显然这个用途确实在数据库中,密码是正确的(测试"可以验证用户"通过).

我在点击"登录"按钮之前截取了屏幕截图,并且字段已正确填充.我尝试在之前的块中创建用户,但它也无法正常工作.

登录页面没有任何特殊内容,没有javascript或任何内容.只是发送到服务器的普通表单.

有任何想法吗?

ruby-on-rails capybara poltergeist factory-bot

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

如何在Meteor中重置表单

我需要重置一个弹出窗体,其中的值全部来自会话变量:

Template.customerinfo.name = -> Session.get('activeCustomer').name
Run Code Online (Sandbox Code Playgroud)

现在我手动做:

Template.customerinfo.events
  'click #cancelButton': ->
    Client.getById('inputName').val(Session.get('activeCustomer').name)
Run Code Online (Sandbox Code Playgroud)

Meteor.render 甚至更麻烦,因为我必须采用当前的表单/模板,用Meteor.render创建一个新的表格/模板,然后将其插入DOM.

有没有办法告诉meteor重置表单或模板并从其来源中提取值?

meteor

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

如何延迟对列表中属性的调用?

列表中的一个属性需要很长时间才能加载(动态创建缩略图).如何在列表中显示其余属性并在后台加载长处理属性.

以下示例显示了这种情况.我希望能够立即显示短名称和长名称.

public partial class MainWindow 
{
    public MainWindow()
    {
        InitializeComponent();

        var list = new List<Example> {
            new Example {ShortName = "A", LongName = "Z"}, 
            new Example {ShortName = "B", LongName = "ZZ"}, 
            new Example {ShortName = "C", LongName = "ZZZ"}};
        DataContext = list;
    }
}

public class Example : INotifyPropertyChanged
{
    private String _shortName;
    public String ShortName
    {
        get { return _shortName; }
        set
        {
            if (_shortName == value) return;
            _shortName = value;
            NotifyPropertyChanged("ShortName");
        }
    }

    private String _longName; …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

Meteor中的可观察数组或内存集合

有没有办法在Meteor中创建可观察数组或内存集合?

我伪造的方式是创建一个包含数组的会话变量Session.setDefault('people', []); 然后在数组更改时更新该值Session.set('people', modifiedArray).

meteor

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