小编ily*_* n.的帖子

python有排序列表吗?

我的意思是一个结构:

  • O(log n)x.push()操作的复杂性
  • O(log n)查找元素的复杂性
  • O(n)计算的复杂性list(x)将被排序

我还有一个关于性能的相关问题list(...).insert(...)现在在这里.

python sorting list

120
推荐指数
5
解决办法
8万
查看次数

如何在VBA中连接字符串?

这个问题来自Range.Formula =在VBA下的注释引发了一个奇怪的错误.

我通过反复试验编写了该程序,所以我自然会尝试+连接字符串.

但是&+连接字符串更正确吗?

excel vba excel-vba

63
推荐指数
2
解决办法
29万
查看次数

我可以阅读Linux内核的哪些部分以获得乐趣?

编程不是我的主要工作,虽然我喜欢它,有时也会得到报酬.多年以来我一直听说Linux和我的朋友们向我展示了许多*nixes(或*nici?),尽管我坚持使用Mac OS.

您是否认为我可以欣赏Linux内核的任何部分,这将有助于我理解整个内容是什么?例如,Linux与Darwin有何不同?

我是用汇编程序和DOS长大的,所以像中断或低级别C这样的东西不应成为理解的障碍.但最后我对高级概念更感兴趣,比如线程或网络堆栈 - 我知道不同的操作系统会以不同的方式执行它们.我正在寻找有趣,轻松和愉快的事情,比如深夜阅读.

(注意:制作CW,以防万一)

更新:我找了一些文档并开始阅读:

linux open-source operating-system kernel

37
推荐指数
4
解决办法
8082
查看次数

5位数的PIN比大多数密码更好吗?

多年来,这一直困扰着我:为什么大多数在线服务高度重视密码的熵,引用它作为安全措施,并在用户选择密码时强制执行?

在阅读了"强大的网络密码完成任何内容?"之后,我决定提出这个问题.(当然还有经典的Dilbert卡通片).

在线网站的典型政策是要求至少6或8位大写+小写+数字密码.这个长度与蛮力攻击的难度有关,例如从哈希中恢复密码.但猜测在线发生的典型方式是有人试图登录到服务器,经过几次尝试后可以自由拒绝.

让我们想象一下,例如,我们用一个全数字的PIN来保护一些中型服务.人们会立即想到4位数或6位数的针脚,但这可能不是一个好主意,因为有太多人会想要进入他们孩子的生日,这本质上是一种公共知识.

所以,这是我的5位数PIN码建议.我为每个用户保留一个"可能的攻击"标志.

  1. 用户正确登录 - >确定
  2. 否则,请保持https会话并允许再尝试2次
  3. 用户登录 - >确定
  4. 否则,在他们面前休息5分钟再允许2次尝试
  5. 用户登录 - >确定
  6. 用户中断会话 - >设置标志
  7. 用户中断会话但稍后正常登录:使用对话框显示用户并允许清除该标志
  8. 用户耗尽上述尝试:发送带有链接的电子邮件; 允许清除旗帜
  9. 如果月内总共有超过100个标志,请设置全局"可能的攻击"标志,该标志要求没有cookie的人回答安全问题
  10. 在某些情况下自动清除用户标志(例如,用户最终从同一台计算机登录)

让我们假设用户名以某种方式已知(请注意,大多数网站都不会这样).对一个用户的暴力攻击是没有希望的 - 你在5次尝试后被锁定,所以你有1/200000的机会.如果你试图在一个月内猜测密码超过200次,那么国旗就会消失,你什么也得不到.如果你每个月尝试<200个用户,一年后你有1%的机会打破一个用户; 您可以通过网络钓鱼,病毒,社交工程或其他任何方式获得更好的收益.

网站的大小只是在没有误报的意义上是相关的,即真正忘记密码的用户(假设每月1%),恢复它,但不清除标志(让我们说1%的那些),当你无法自动清除标志时(比如10%).这使得每10 6个用户每月有10个预期误报标志- 这意味着中型网站进入"恐慌"模式的可能性相当低,无论如何都不是那么糟糕.

我相信这个方案非常实用.以下是关于它的一些明显的第一个事实(更新):

  • 好处:PIN更容易记住.我相信这是一个很大的好处,因为现在可以要求用户记住您生成的密码.我相信大多数人记住5个随机数字比任何其他类型的随机密码更好.
  • 权衡:如果你的攻击者知道散列的密码和盐,哈希就不会有太大的帮助.如果有人闯入您的数据库了解您的腌制过程是什么,这是可能的.但是,我认为标准密码熵在这种情况下也无济于事.
  • 好处:人们比随机字母数字密码记住随机5位数更快乐; 因此,要求我们生成密码更容易,而不是用户.这消除了字典/个人数据攻击.

我的问题是:

  1. 与我所描述的典型方案相比,我的方案的其他权衡/好处是什么?
  2. 使用我的密码方案,大多数中型网站和组织都不会更好吗?
  3. 他们选择这个计划的原因是什么?

注意:我不主张总是使用短密码.我自己的网络密码通常由密码管理器(1Password)随机生成和加密,密码为12个字符.但我认为上述方案往往比我们在实践中的方案更好.

security authentication passwords web-services

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

为什么print语句不是pythonic?

这个问题困扰了我很长一段时间(正如我之前的问题所证明的那样):为什么确实print(x)更好(定义为比pythonic更好)print x

对于那些不知道的人,print声明在Python 3.0中被改为函数.正式文件在PEP 3105中,动机在Guido van Rossum的电子邮件中.

对于这些观点,我想提出一个对立点:

  1. 还有其他运算符,例如import我们将其作为语句编写,尽管它们的功能实际上与函数重复__import__
    • 对于初学者,操作员print不属于通用应用程序逻辑.对他们来说,这是一个神秘的运营商,这是他们的计划的高潮.他们希望它看起来不同.
    • 所有描述基本Python 2.x的初学者书籍现在都保证会从第一个例子中删除.当然,语言有时会发生变化,但这些变化通常对初学者来说不太明显.
    • 对我来说,print在应用程序级别上可以复制功能并不是很明显.例如,有时我想从控制台重定向打印作为模态操作系统对话框.
    • 虽然人们说很难将所有print语句都重写为函数,但是他们迫使每个Python 2.x开发人员都为他们的所有项目做了这样的事情.好,自动转换器并不难.
    • print如果print是一个声明包装函数,那么喜欢有能力操作函数的每个人都会得到很好的服务__print__.

那么,我们能不能在Stack Overflow页面上对这个问题做出规范的回答?

python python-3.x

33
推荐指数
4
解决办法
9746
查看次数

同态加密算法的实际应用?

看来密码学中有一些有趣的事情发生了:最近出现了第一个同态加密方案(解释,HT).粗略地说,它是编码的方式x进入f(x),这样你可以计算f(x+y)很容易地知道f(x)f(y)即使你不能轻松地恢复xy(和相同的f(x*y)).

这种方案的实际应用是什么(一旦建立安全性)?对我来说,似乎他们可以更容易地编写用于操纵私有数据的算法.

这是我的想法:

  1. 电子投票
  2. 检查私人数据的完整性
  3. 是否有机会帮助隐私?

示例:我有银行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加密而且每一步都很慢(涉及一些格子).

security encryption cryptography privacy voting

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

创建最短的图灵完整解释器

我刚刚尝试创建最小的语言解释器.你想加入并尝试吗?

游戏规则:

  • 您应该指定您正在解释的编程语言.如果它是您发明的语言,它应该在评论中附带一个命令列表.
  • 您的代码应该从分配给代码和数据变量的示例程序和数据开始.
  • 您的代码应以结果的输出结束.每个中间步骤最好有调试语句.
  • 您的代码应该像编写的那样运行.
  • 您可以假设数据为0和1(int,string或boolean,您的选择)和输出是一位.
  • 对于在标准模型上编写的任何算法,例如图灵机,马尔可夫链或您选择的类似算法,语言应该是图灵完备的,如果编写一个程序后,如何编写一个程序是相当明显的(或解释)由您的口译员执行算法.
  • 代码的长度定义为删除输入部分,输出部分,调试语句和非必要的空格后代码的长度.请将结果代码及其长度添加到帖子中.
  • 您不能使用使编译器为您执行代码的函数,例如eval(),exec()或类似的函数.

这是一个社区维基,这意味着问题和答案都不会从投票中获得声誉点.但无论如何投票!

computer-science code-golf turing-complete

30
推荐指数
5
解决办法
6713
查看次数

SAP可以使用Python吗?

Python可用于查询SAP数据库吗?

python sap abap

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

为什么有HashSet但没有在C#中设置?

老问题

我的理解是C#在某种意义上HashSetset类型上都有.我明白什么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.好结局.

c# set hashset

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

Objective-C中的标记指针

回答这个问题时,我注意到现代Objective-C运行时使用了标记指针.Mike Ash文章及其评论指出,它们用于某些NSNumberNSDate实例.

这让我想到了不同平台的完整情景表:

OSX/iOS 32/64位Objective-C运行时在哪里使用标记指针?

pointers memory-management runtime objective-c

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