我很好奇其他人是如何解决这个问题的,以及天真解决方案背后可能存在的问题:
我有一个处理股市数据的系统.有数以万计的符号,以及相关的价格/大小,以每毫秒几千的速率流入系统.
需要在每个tick上进行的基本操作之一是字符串比较,以查看传入是否匹配我们感兴趣的符号.在如此高的频率下,这些字符串比较的优化可以使整个系统的性能产生可测量的差异.
我正在考虑生成符号字符串的哈希值,并将其与记录一起存储.对于后续比较,系统应使用此哈希(为int或long,比较应该是单个操作,而不是遍历字符串的每个字符,直到找到不匹配).
让我们忽略生成散列本身的成本(实际上,这可能实际上是禁止的).我能看到的唯一问题是,对于大量唯一符号,哈希冲突(两个单独的符号生成相同的哈希)将是毁灭性的.是否有一个散列算法可以保证匹配某些约束的字符串(例如字符数限制)是唯一的?
编辑:我将用Java编写此代码.不确定hashCode的(碰撞)质量或计算速度.
给出了Java中同一个类的两个方法:
public void doSomething( Person person );
public void doSomething( Employee employee );
Run Code Online (Sandbox Code Playgroud)
哪里
Employee extends Person
Run Code Online (Sandbox Code Playgroud)
如果我打电话:
doSomething( employee )
Run Code Online (Sandbox Code Playgroud)
我发现它doSomething( Person )被调用了.
我原本期望调用最接近的匹配合约的重载,而不是最抽象的(这是我发现的)
有人能解释为什么吗?
我有一个辅助函数,它基本上在两个对象上调用CompareTo,但是会进行一些特殊的角点检查,转换等.
本来我写这个函数是这样的:
public static bool BetterCompare(IComparable lhs, IComparable rhs, out retCode)
{
...
retCode = lhs.CompareTo(rhs);
...
}
Run Code Online (Sandbox Code Playgroud)
但问题是,如果我有一个class AwesomeClass : IComparable<AwesomeClass>.事实上,我有几个老IComparable课程已经消失了IComparable<T>.然而编译器生气,因为它无法将这些新对象转换为IComparable.我不知道这是否会使情况变得更糟,但其中一些是abstract(虽然抽象类确实提供了实现).
我怎么能传达"我想要两个我可以称之为CompareTo的对象",而不是让编译器给我任何嘴唇.优选地,新功能看起来不应该BetterCompare<AwesomeClass>(this, that, out retCode);,但只是"做正确的事情".或者有没有更好的方法来做到这一点,而不是触及每个类,使他们两个 IComparable和IComparable<T>?
我是SCons的新手,也使用pydev.有人可以帮我提供有关如何使用Eclipse和pydev调试scons脚本的说明吗?考虑到SCons是一个单独的应用程序而不是python的扩展这一事实是否可能?
Django允许您创建一个外键键入用户的模型,并在设置中将其定义为包含用户帐户附加数据的官方"配置文件"模型.django-profiles允许您轻松显示/创建/编辑该配置文件数据.但用户的主电子邮件地址是其主要帐户的一部分,而不是其扩展配置文件的一部分.所以当你放
{{ form }}
Run Code Online (Sandbox Code Playgroud)
在个人资料/ edit_profile模板中,主电子邮件地址不会显示.您可以使用手动检索它
{{ user.email }}
Run Code Online (Sandbox Code Playgroud)
但是当提交时,对它的更改不会保存回帐户.我假设已经创建了一个自定义ModelForm,例如:
class ProfileForm(ModelForm):
class Meta:
model = Parent
exclude = ('family','user','board_pos','comm_job',)
Run Code Online (Sandbox Code Playgroud)
并且使用urlconf将ProfileForm传递给django-profiles的视图代码:
('^profiles/edit', 'profiles.views.edit_profile', {'form_class': ProfileForm,}),
Run Code Online (Sandbox Code Playgroud)
如果您想让用户更改他们的名字或姓氏,也会出现同样的问题.在使用django-profiles时,让用户更改自己的电子邮件地址或名称的最佳方法是什么?
在Sharepoint中如何将列表项从一个列表复制到另一个列表,例如从"列表A"复制到"列表B"(两者都位于站点的根目录下)
我希望在将新列表项添加到"列表A"时进行此复制
我尝试在ItemAdded事件接收器中使用SPListItem的CopyTo()方法,但无法找出要复制到的url.
我正在协助创建一个新网站,并且在我去的时候会遇到简单的错误.以下代码用于设置链接样式:
a.homepage-employment,
a:visited.homepage-employment {
display:block;
padding:5px;
background-color:#055830;
color:#fff;
width:100%;
}
a:hover.homepage-employment {
display:block;
padding:5px;
background-color:#999966;
color:#fff;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么背景颜色正确显示,但当它们在同一个类时文本不是白色.文本颜色是否需要在单独的类中?我知道我显然错过了一些东西.很可能很简单.
这可能是一个非常简单的问题,但我是一个初学者,因为我去了.我感谢您的帮助 :)
我有以下正则表达式,用于给我HTML字符串中的标签:
<[^>]*>
Run Code Online (Sandbox Code Playgroud)
所以,如果我传入以下内容:
<b> Bold </b>
Run Code Online (Sandbox Code Playgroud)
然后它会给我:
<b>
</b>
Run Code Online (Sandbox Code Playgroud)
我怎么能让它给我:
<b>
Bold
</b>
Run Code Online (Sandbox Code Playgroud)
更新:
这是另一个了解大局的例子:
如果这是文字:
<b>Bold</b> This is the stuff <i>Italic</i>
Run Code Online (Sandbox Code Playgroud)
然后最终结果如下:
matches[0] = <b>
matches[1] = Bold
matches[2] = </b>
matches[3] = This is the stuff
matches[4] = <i>
matches[5] = Italic
matches[6] = </i>
Run Code Online (Sandbox Code Playgroud) 我有一个运行Twisted的应用程序,reactor.run()在启动一些其他线程(包括CherryPy Web服务器)后,在我的主线程中启动reactor .这是一个在Linux上按下Ctrl + C但在Windows上没有按下时干净关闭的程序:
from threading import Thread
from signal import signal, SIGINT
import cherrypy
from twisted.internet import reactor
from twisted.web.client import getPage
def stop(signum, frame):
cherrypy.engine.exit()
reactor.callFromThread(reactor.stop)
signal(SIGINT, stop)
class Root:
@cherrypy.expose
def index(self):
reactor.callFromThread(kickoff)
return "Hello World!"
cherrypy.server.socket_host = "0.0.0.0"
Thread(target=cherrypy.quickstart, args=[Root()]).start()
def print_page(html):
print(html)
def kickoff():
getPage("http://acpstats/account/login").addCallback(print_page)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
我相信CherryPy是这里的罪魁祸首,因为这是我在没有CherryPy的情况下编写的另一个程序,当按下Ctrl + C时,它会在Linux和Windows上完全关闭:
from time import sleep
from threading import Thread
from signal import signal, SIGINT
from twisted.internet import reactor
from twisted.web.client import getPage
keep_going = …Run Code Online (Sandbox Code Playgroud) c# ×4
html ×2
python ×2
.net ×1
algorithm ×1
asp.net ×1
cherrypy ×1
class ×1
colors ×1
comparison ×1
css ×1
django ×1
django-forms ×1
eclipse ×1
encryption ×1
generics ×1
hash ×1
hyperlink ×1
icomparable ×1
java ×1
linux ×1
pydev ×1
regex ×1
scons ×1
sharepoint ×1
string ×1
twisted ×1
types ×1
web-config ×1
windows ×1