我的意思是一个结构:
x.push()操作的复杂性list(x)将被排序我还有一个关于性能的相关问题list(...).insert(...)现在在这里.
编程不是我的主要工作,虽然我喜欢它,有时也会得到报酬.多年以来我一直听说Linux和我的朋友们向我展示了许多*nixes(或*nici?),尽管我坚持使用Mac OS.
您是否认为我可以欣赏Linux内核的任何部分,这将有助于我理解整个内容是什么?例如,Linux与Darwin有何不同?
我是用汇编程序和DOS长大的,所以像中断或低级别C这样的东西不应成为理解的障碍.但最后我对高级概念更感兴趣,比如线程或网络堆栈 - 我知道不同的操作系统会以不同的方式执行它们.我正在寻找有趣,轻松和愉快的事情,比如深夜阅读.
(注意:制作CW,以防万一)
更新:我找了一些文档并开始阅读:
多年来,这一直困扰着我:为什么大多数在线服务高度重视密码的熵,引用它作为安全措施,并在用户选择密码时强制执行?
在阅读了"强大的网络密码完成任何内容?"之后,我决定提出这个问题.(当然还有经典的Dilbert卡通片).
在线网站的典型政策是要求至少6或8位大写+小写+数字密码.这个长度与蛮力攻击的难度有关,例如从哈希中恢复密码.但猜测在线发生的典型方式是有人试图登录到服务器,经过几次尝试后可以自由拒绝.
让我们想象一下,例如,我们用一个全数字的PIN来保护一些中型服务.人们会立即想到4位数或6位数的针脚,但这可能不是一个好主意,因为有太多人会想要进入他们孩子的生日,这本质上是一种公共知识.
所以,这是我的5位数PIN码建议.我为每个用户保留一个"可能的攻击"标志.
让我们假设用户名以某种方式已知(请注意,大多数网站都不会这样).对一个用户的暴力攻击是没有希望的 - 你在5次尝试后被锁定,所以你有1/200000的机会.如果你试图在一个月内猜测密码超过200次,那么国旗就会消失,你什么也得不到.如果你每个月尝试<200个用户,一年后你有1%的机会打破一个用户; 您可以通过网络钓鱼,病毒,社交工程或其他任何方式获得更好的收益.
网站的大小只是在没有误报的意义上是相关的,即真正忘记密码的用户(假设每月1%),恢复它,但不清除标志(让我们说1%的那些),当你无法自动清除标志时(比如10%).这使得每10 6个用户每月有10个预期误报标志- 这意味着中型网站进入"恐慌"模式的可能性相当低,无论如何都不是那么糟糕.
我相信这个方案非常实用.以下是关于它的一些明显的第一个事实(更新):
我的问题是:
注意:我不主张总是使用短密码.我自己的网络密码通常由密码管理器(1Password)随机生成和加密,密码为12个字符.但我认为上述方案往往比我们在实践中的方案更好.
这个问题困扰了我很长一段时间(正如我之前的问题所证明的那样):为什么确实print(x)更好(定义为比pythonic更好)print x?
对于那些不知道的人,print声明在Python 3.0中被改为函数.正式文件在PEP 3105中,动机在Guido van Rossum的电子邮件中.
对于这些观点,我想提出一个对立点:
import我们将其作为语句编写,尽管它们的功能实际上与函数重复__import__
print不属于通用应用程序逻辑.对他们来说,这是一个神秘的运营商,这是他们的计划的高潮.他们希望它看起来不同.print在应用程序级别上可以复制功能并不是很明显.例如,有时我想从控制台重定向打印作为模态操作系统对话框.print语句都重写为函数,但是他们迫使每个Python 2.x开发人员都为他们的所有项目做了这样的事情.好,自动转换器并不难.print如果print是一个声明包装函数,那么喜欢有能力操作函数的每个人都会得到很好的服务__print__.那么,我们能不能在Stack Overflow页面上对这个问题做出规范的回答?
看来密码学中有一些有趣的事情发生了:最近出现了第一个同态加密方案(解释,HT).粗略地说,它是编码的方式x进入f(x),这样你可以计算f(x+y)很容易地知道f(x)和f(y)即使你不能轻松地恢复x和y(和相同的f(x*y)).
这种方案的实际应用是什么(一旦建立安全性)?对我来说,似乎他们可以更容易地编写用于操纵私有数据的算法.
这是我的想法:
示例:我有银行A,B,C的帐户.实体X想要确认我总共超过1000美元; 它很乐意接受A,B,C或D银行的声明,但遗憾的是我在任何单一账户中都没有足够的资金.银行A使用我的公钥加密有关我500美元的信息; 同样,银行B和C分别加密我有200美元和300美元的信息.他们将这些数据发送给X,他们将这些数据添加到一些数字中,我证明实际上加密了1000美元(通过使用我的公钥加密1000美元并证明结果是相同的).我已经证明了一些事情,但没有透露X每个帐户中我有多少钱.
另一个例子:好公民X_1,......,X_n正在合作选择两个候选人中的一个,其中一个是拿铁咖啡的自由人A l,而另一个是B bble的枪支爱好者(所有名字都是虚构的).他们认为他们希望投票是私密但快速的.他们以(1, vote_A, vote_B, vote_None)加密的矢量格式将选票发送给选举委员会,选举委员会将其公开添加,并在表格中获得结果(count, count_A, count_B, count_None).经过检查后count = count_A + count_B + count_None,官员宣布其中一名候选人的胜利,之后法官宣布选举因电子投票无关而在未来10年内在法庭上进行了争议,但是,嘿,这不是我的无论如何问题.
注意: - 我相信这些特定的例子甚至可以用于RSA,因为它只需要在一次操作中具有同态性.希望我们可以通过更多操作获得更有趣的东西 - 所以,举出示例!
我特别希望看到包含有可能在实践中使用的代码和/或开发框架的答案,原因是SO不是理论计算机科学讨论板.
同形算法,重复下面在评论中所说的内容,允许创建一个程序,在不知道它们的情况下管理数据.不幸的是,程序的类型有些限制:你不能if (x=0) ...因为x加密而且每一步都很慢(涉及一些格子).
我刚刚尝试创建最小的语言解释器.你想加入并尝试吗?
游戏规则:
eval(),exec()或类似的函数.这是一个社区维基,这意味着问题和答案都不会从投票中获得声誉点.但无论如何投票!
我的理解是C#在某种意义上HashSet和set类型上都有.我明白什么HashSet是.但为什么set是一个单独的词呢?为什么不是每一套都是HashSet<Object>?
为什么C#没有泛型Set类型,类似于Dictionary类型?从我的角度来看,我希望有一个具有标准查找/添加/删除性能的集合.我不关心它是用哈希还是别的来实现的.那么为什么不创建一个实际上HashSet在这个版本的C#中实现的集合类,但在将来的版本中可能有些不同?
或者为什么不至少接口ISet?
感谢所有在下面回答的人:ICollection实现了很多你期望的东西ISet.但是,从我的观点来看,ICollection实现IEnumerable虽然集合不必是可枚举的 - 例如:1到2之间的实数集合(更多,集合可以动态生成).我同意这是一个小咆哮,因为"普通程序员"很少需要不可数集.
好的,我想我明白了.HashSet绝对意味着被召唤,Set但这个词Set在某种意义上是保留的.更具体地说,.NET体系结构的创建者希望为不同的语言提供一致的集合(sic!).这意味着标准类的每个名称都不得与.NET语言中的任何关键字一致.Set然而,这个词在VB.NET中使用,它实际上是不区分大小写的(是吗?),所以遗憾的是那里没有空间可操作.
谜团已揭开 :)
Alex Y.的新答案链接到MSDN页面,该页面描述了即将推出的.NET 4.0界面ISet,该界面的行为与我认为的应该完全相同并且由其实现HashedSet.好结局.
python ×3
security ×2
abap ×1
c# ×1
code-golf ×1
cryptography ×1
encryption ×1
excel ×1
excel-vba ×1
hashset ×1
kernel ×1
linux ×1
list ×1
objective-c ×1
open-source ×1
passwords ×1
pointers ×1
privacy ×1
python-3.x ×1
runtime ×1
sap ×1
set ×1
sorting ×1
vba ×1
voting ×1
web-services ×1