小编Hou*_*man的帖子

采访与Hashtable和词典有关的问题

我最近在几次关于Hashtables的访谈中进行了深入研究,并且何时需要覆盖GetHashCode().讨论一直在深入和深入,直到我全身心投入.

我现在正在做一些研究,以涵盖下一次准备好的一切.

我找到了这篇我想分享的优秀文章:http: //msdn.microsoft.com/en-us/library/ms379571(VS80).aspx #datastructures20_2_topic5

1)我感觉不太舒服的事实是字典是基于哈希的,但列表显然不是.这只是意味着在List <>和Array []中搜索是线性的,而在字典或散列表中搜索是不变的,因此更快?这都是它的全部吗?

2)如果我使用类作为字典中的键,我需要根据任何必需的标识字段覆盖该类的GetHashcode()以使实例唯一.但是,仍然可能发生两个ID字段相等并且将生成相同的哈希码?如果这是两个实例与相同哈希码冲突期间发生的情况?

3)如何解决碰撞?我在文章中读到了关于Hashtable和Chaining for the Dictionary的碰撞情况下的rehashing方法.但我仍然不确定它是如何工作的,因为我不是数学天才.: - \任何人都可以更好地解释它是如何工作的?

非常感谢,Kave

.net

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

如何在Silverlight 4.0中使用Style.Triggers?

从WPF切换到Silverlight 4.0后,我陷入了一些非常基本的问题.似乎我无法在我的风格中使用Trigger.这会怎么样?

例如,我在ResourceDictionary中创建了一个DataGrid ColumnHeader样式:

<Style x:Key="DataGridColumnHeaderStyle" TargetType="sdk:DataGridColumnHeader"  >
        <Setter Property="Background" Value="#88800080" />
        <Setter Property="Foreground" Value="White" />
        <Style.Triggers>
            <Trigger Property="SortDirection" Value="{x:Null}">
                <Setter Property="Background" Value="{DynamicResource DataGridHeaderBackgroundBrush}" />
                <Setter Property="BorderBrush"  Value="Transparent" />
            </Trigger>
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="IsMouseOver" Value="True" />
                    <Condition Property="SortDirection" Value="{x:Null}" />
                </MultiTrigger.Conditions>
                <Setter Property="Background" Value="{StaticResource DataGridHeaderMouseOverBackgroundBrush}" />
                <Setter Property="BorderBrush" Value="{StaticResource DataGridHeaderBorderBrush}" />
            </MultiTrigger>
...
Run Code Online (Sandbox Code Playgroud)

从2009年初开始的一些谷歌搜索尝试声称使用转换器,但我完全坚持这一点.如果有人能给我一些如何做的提示,我真的很感激.

silverlight silverlight-4.0

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

如何在.NET c#中使用Win32 GetMonitorInfo()?

我必须实现一个保存窗口最后位置的功能.当应用程序启动时,需要获取并恢复该位置.

现在可能会拆除第二台显示器.如果最后一个位置在现在不可见的监视器上(换句话说,保存的坐标在可见坐标之外),则应捕获此情况并将坐标设置为默认位置而不是最后位置.

为了检索有关监视器的信息,我需要使用Win32.我不容易做这项工作.

我创建了一个Helper CLass:

public static class DisplayHelper
    {
        private const int MONITOR_DEFAULTTONEAREST = 2;

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern int GetSystemMetrics(int nIndex);

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern UInt32 MonitorFromPoint(Point pt, UInt32 dwFlags);

        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern bool GetMonitorInfo(UInt32 monitorHandle, ref MonitorInfo mInfo);


        public static void GetMonitorInfoNow(MonitorInfo mi, Point pt)
        {
            UInt32 mh = MonitorFromPoint(pt, 0);
            mi.cbSize = (UInt32)System.Runtime.InteropServices.Marshal.SizeOf(typeof(MonitorInfo));
            mi.dwFlags = 0;
            bool …
Run Code Online (Sandbox Code Playgroud)

.net c# winapi multiple-monitors user32

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

使用过滤器时,如何获取 CollectionView 的实际计数?

<Label Content="{Binding ItemCount}"/>我的 View 上有一个绑定到 ViewModel 上的属性时。

在视图模型上,我将属性定义为

public int ItemCount
{
    get { RowViewModelsCollectionView.Count; }
}
Run Code Online (Sandbox Code Playgroud)

我清楚地要求对 进行计数CollectionView,我希望在其中获得仅可见项目的计数。不幸的是,我得到了整行的计数,即使是那些由于过滤器而没有显示在视图上的行。

更新:

在科尔:

RowViewModelsCollectionView= new ListCollectionView(rowViewModels) {Filter = Contains};


private bool Contains(object obj)
        {
            RowViewModel rowViewModel = obj as RowViewModel;

            if (rowViewModel != null && Books.ContainsKey(rowViewModel.Book))
            {
                RaisePropertyChanged("ItemCount"); // Trying out to raise it without joy
                return true;
            }

            return false;
        }
Run Code Online (Sandbox Code Playgroud)

我应该如何解决这个问题?

.net c# silverlight wpf collectionview

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

Twitter-bootstrap:如何检查popover是否已经显示?

我通过数据属性在下拉列表上创建了一个popover:

<select id="timezone_dropdown" data-content="This is the timezone" rel="popover" data-placement="bottom" data-original-title="Time Zone">
Run Code Online (Sandbox Code Playgroud)

每当我点击一个链接按钮,我想显示浮动在下拉列表上的popover.

<a class="btn timezone_help" href="#">Help</a>
Run Code Online (Sandbox Code Playgroud)

在javascript中,我已经将它定义为:

$(document).ready(function () { 
     $('.timezone_help').click(show_timezone_help);     
})

function show_timezone_help(event){
    event.preventDefault(); 
    $('#timezone_dropdown').popover('show');
}
Run Code Online (Sandbox Code Playgroud)

这样就完成了工作,但是当我再次点击按钮时,它仍然保留在那里.有没有办法检查它是否已经打开并在函数中隐藏它,还是有更好的方法?

jquery jquery-plugins popover twitter-bootstrap

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

如何在输入窗口小部件中定位x以清除内容?

使用twitter bootstrap,可以非常直接地创建搜索样式输入窗口小部件:

在此输入图像描述

x也适用于Twitter引导程序,但将x放在该位置,需要一些CSS微调.

我设法让x在那个位置,但它不是很可靠.凭借响应式设计和不同的分辨率,x完全被取代.

.filter-close {
    float: none;
    position: relative;
    left: 5em;
    top: 1.25em;
    z-index: 3;
}

<form action="." method="get" class="form-search">
 <a class="close filter-close" href="#">x</a>                                           
    <div class="input-append">                  
        {{filter_form.last_name}}<button type="submit" class="btn"><i class='icon-filter'> </i></button>                </div>                          
</form>
Run Code Online (Sandbox Code Playgroud)

在尝试重新发明轮子之前,是否有任何现有的javascript库可以在输入带有x按钮的情况下转换输入?为此目的,像Chosen.js这样的东西?或者任何建议我如何以更好的方式做到这一点?

非常感谢,

javascript django jquery twitter-bootstrap

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

如何使用jquery验证和选择来验证多选?

我能够使用jquery-validate验证多选,并创建了一个小提琴作为演示.按住Ctrl键取消选择选择,然后单击选择以查看效果.

<form id="myform">
    <select id="id_deals-1-sales_item" class="multi_select_mandatory" name="deals-1-sales_item" multiple="multiple">
    <option value="1">Hotel 3 Star</option>
    <option selected="selected" value="2">Hotel 4 Star</option>
    </select>
</form>

$(document).ready(function() {
    var validator = $('#myform').validate({
          // options
          rules: {
            "deals-1-sales_item": "required",            
        },

        //ignore: ':hidden:not("#id_deals-1-sales_item")'                                      
    });
});
Run Code Online (Sandbox Code Playgroud)

但是一旦我选择了多选,它就会停止工作:看小提琴.

$('#id_deals-1-sales_item').chosen();
Run Code Online (Sandbox Code Playgroud)

虽然研究,我发现已经有人尝试这种具有jquery multiselect替代选择.似乎隐藏的元素在jquery validate中被忽略.我尝试应用该解决方案,但由于Chosen有不同的方法,我卡住了(选择中不存在多选)

在这里有任何jQuery大师可以指出我正确的方向吗?此外,我宁愿使用基于类而不是基于字段名称的解决方案.像这样:

这是我提出的一个解决方案.但不知道该怎么做???.

$.validator.addMethod("needsSelection", function(value, element) {
        return $(element).???.length > 0;
    });

var validator = $('#myform').validate({
});

$('#myform').find('select.multi_select_mandatory').each(function(){
        $(this).change(function(){
            $(this).valid();
        });
        $(this).rules('add', {
            needsSelection: ""
        });
    });
Run Code Online (Sandbox Code Playgroud)

解:

通过下面的eicto解决方案,我能够创建一个基于类而不是基于字段名称的解决方案.当您拥有要立即验证的动态元素而不向服务器提交任何内容时,这将特别有用.

    var …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate jquery-chosen

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

Flask-WTF:如何在DataRequired()验证时允许零

我已经定义了这样一个表单:

class RecordForm(Form):
    rating = IntegerField('Rating')
Run Code Online (Sandbox Code Playgroud)

如果没有插入值,我会收到如下默认消息:

Not a valid integer value
Run Code Online (Sandbox Code Playgroud)

我希望有一个自定义消息,所以我想出了这个:

class RecordForm(Form):
    rating = IntegerField('Rating',[validators.DataRequired("Helllo???")])
Run Code Online (Sandbox Code Playgroud)

自定义消息现在有效,但我有副作用.0(零)不再被接受为整数值.请问我有什么选择?

validation flask flask-wtforms

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

如何在Google App Engine上缩小和版本js/css?

由于webassets无法在GAE上动态压缩js/css,因此最好的方法是在部署时执行此操作.

经过大量的谷歌搜索后,我想出了下面的脚本来实现这一目标.

起初我认为最好的方法是将javascript路径保留base.html原样并简单地压缩css/js.

cssmin压缩css并覆盖原始.但是,关闭不允许覆盖原始,并且此概念已经失败.

第二个问题是,即使我关闭覆盖原始文件,缓存也会出现问题.因此,每个缩小的css/js的部署都应该带有文件名中的随机数,以便在新部署之后实际获取新版本.根据我提出的概念,这是不可能的.

因此,实现这一目标的唯一方法是修改base.htmlwith sed或者其他东西.

在重新发明轮子之前,有没有更好的方法来做到这一点?非常感谢

import sys, os
import cssmin

def main():
    if len(sys.argv) == 1:
        return

    appId = sys.argv[1]
    print "appId", appId

    cmd = r'java -jar compiler.jar --js=/src/application/static/f11/f11.js --js_output_file=/src/application/static/f11/f11.min.js'
    os.system(cmd)

    output = cssmin.cssmin(open('/src/application/static/f11/f11.css').read())
    f = open('/src/application/static/f11/f11.css','w')
    f.write(output)    

    # Perform appcfg.py to update GAE server
    cmd = r'"\google_appengine\appcfg.py"'
    os.system(cmd + " update . " + " -A %s"%appId)


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

google-app-engine minify

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

Flask:登录会话太快了

在编辑记录时,如果等待几分钟(喝咖啡)然后再回来按下保存(POST),我会被重定向到主页面而不是登录而数据丢失.

似乎烧瓶登录会话过期太快了.

我做了一些研究并遇到了这个问题.

from flask import session, app

session.permanent = True
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?但即使我尝试这个,我得到这个例外:

  File "/Users/kave/workspace/F11A/src/application/__init__.py", line 14, in <module>
    session.permanent = True
  File "/Users/kave/workspace/F11A/src/lib/werkzeug/local.py", line 355, in <lambda>
    __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)
  File "/Users/kave/workspace/F11A/src/lib/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/Users/kave/workspace/F11A/src/lib/flask/globals.py", line 20, in _lookup_req_object
    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context
Run Code Online (Sandbox Code Playgroud)

python session flask flask-login

6
推荐指数
2
解决办法
2608
查看次数