标签: computer-science

heartbleed bug是C中经典缓冲区溢出漏洞的表现吗?

在我们关于安全性的第一次CS讲座中,我们讨论了C的问题,没有检查所谓的缓冲区长度以及可以利用此漏洞的不同方式的一些示例.

在这种情况下,它看起来像是恶意读取操作的情况,其中应用程序只读出了很多字节的内存

  1. 我是否正确断言Heartbleed错误是C缓冲区长度检查问题的表现?

  2. 为什么恶意使用在尝试读取其他应用程序的内存时不会导致分段错误?

  3. 在写入内存之前简单地将内存归零(然后随后从中读取)会导致分段错误吗?或者这在操作系统之间有所不同吗?或者其他一些环境因素?

  4. 显然无法识别漏洞的利用.是因为心跳功能在调用时不记录?否则对~64k字符串的任何请求肯定是恶意的?

c security computer-science heartbleed-bug

15
推荐指数
2
解决办法
4638
查看次数

Jan Willem Klop的"(LL L ...)"Y组合器如何工作?

我理解Y Combinator是什么,但我不理解维基百科页面中这个"小说"组合子的例子:

 Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L)

Where:

    L = ?abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))

这是如何运作的?

lisp computer-science functional-programming

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

老年人计算机科学

我学习了C++,当它是C语言时.我发现自己越来越不喜欢XML和垃圾收集等新技术.另一方面,我发现了像Lua和Python这样的脚本语言.而且我发现自己更喜欢C++的混合环境,具有确定性内存控制,嵌入式脚本语言,垃圾收集以及所有这些.

我的问题是,当我试图学习这些语言时,我发现自己遇到了一些我不理解的术语:lambdas,closures等.

有哪些在线资源可供老年人了解这些内容?

computer-science language-theory terminology

14
推荐指数
4
解决办法
784
查看次数

计算机科学中的Big-O符号有什么大不了的?

Big-O符号如何帮助我的日常C#编程?这只是一次学术活动吗?

big-o computer-science

14
推荐指数
4
解决办法
7543
查看次数

什么是CS"大词"术语对于相同的动作始终具有相同的效果

有一个计算机科学术语可以逃脱我的脑海,其中一个词以"-icity"结尾.

这意味着像给定动作一样会产生相同的结果,IE不会有任何滞后,或者动作不会改变系统的功能......

敲响了铃,有人吗?谢谢.

为标记道歉,我只是在标记Java b/c我在学校的Java课程中学到了这一点,我认为人群往往有更多的CS背景......

language-agnostic computer-science terminology vocabulary

14
推荐指数
6
解决办法
1422
查看次数

为单词搜索游戏选择随机字母的算法,允许拼写多个单词

我正在做一个类似boggle的文字游戏.给用户一个这样的字母网格:

O V Z W X
S T A C K
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

用户使用任何相邻的字母链来挑选一个单词,例如跨越中间线的单词"STACK".然后用机器替换所用的字母,例如(小写的新字母):

O V Z W X
z e x o p
Y R F L Q
Run Code Online (Sandbox Code Playgroud)

请注意,您现在可以使用新字母拼写"OVeRFLoW".我的问题是:我可以使用什么算法来选择最大化用户可以拼写的长词数量的新字母?我希望游戏很有趣并且有时会拼写6个字母的单词,但是,如果你选择了不好的字母,游戏会让用户只拼写3个字母单词并且没有机会找到更大的单词.

例如:

  • 您可以随机选择字母表中的新字母.这不行.

  • 同样,我发现随机挑选,但使用Scrabble的字母频率效果不佳.这在Scrabble中效果更好我认为你对使用字母的顺序的约束较少.

  • 我尝试了一组列表,每个列表代表一个来自Boggle游戏的模具,每个字母都是从随机模具中挑选出来的(我也想知道我是否可以合法地在产品中使用这些数据).我没注意到这个工作得很好.我认为Boggle骰子的侧面是以一种合理的方式选择的,但我无法找到这是怎么做的.

我考虑过的一些想法:

  • 列出字母对中字母对的出现频率.为了论证,可以说E在30%的时间旁边被看到.当我选择一个新的字母时,我会根据这个字母的频率随机选择一个字母,该字母出现在网格上随机选择的相邻字母旁边.例如,如果相邻的字母是E,则新字母在30%的时间内将是"A".应该意味着在地图上分散使用很多不错的对.我可以通过在两个其他字母之间出现一个字母的概率表来改善这一点.

  • 以某种方式搜索当前网格上拼写的单词,将新单词作为通配符.然后我会用允许拼写最大单词的字母替换通配符.但是我不确定你会如何有效地做到这一点.

任何其他想法表示赞赏.我想知道是否有一种解决这个问题的常用方法以及其他文字游戏使用的方法.

编辑:感谢您迄今为止的精彩答案!我忘了提一下,如果可能的话,我的目标是低内存/ cpu要求,我可能会使用SOWPODS字典(约250,000),我的网格将能够6 x 6.

java algorithm computer-science linguistics

14
推荐指数
2
解决办法
4262
查看次数

动态编程 - 硬币更改决策

我正在审查算法课程中的一些旧笔记,动态编程问题对我来说似乎有点棘手.我有一个问题,我们有无限量的硬币,有一些面额x1,x2,... xn我们想要改变一些价值X.我们正在设计一个动态程序来决定是否可以改变X是否制造(不是最小化硬币数量,或返回哪些硬币,只是真或假).

我已经做了一些关于这个问题的思考,我可以看到这样做的递归方法,就像它...

MakeChange(X, x[1..n this is the coins])
    for (int i = 1; i < n; i++)
    {
        if ( (X - x[i] ==0) || MakeChange(X - x[i]) )
            return true;
    }
    return false;
Run Code Online (Sandbox Code Playgroud)

转换这个动态程序对我来说并不容易.我怎么能接近这个?

algorithm computer-science dynamic-programming

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

初始类型系统理论的书籍

我想研究类型系统理论.我没有类型系统理论的任何背景,所以我或多或少是一个初学者(除了我读过的关于这个主题的文章,我发现由于使用的符号而令人生畏).什么是可以让我入门的好书?我正在看Benjamin C. Pierce的"类型和编程语言"一书.这适合初学者还是太难?如果我开始学习还能用什么其他东西太难了?

谢谢,

-

干杯,亚历克斯

computer-science types type-theory

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

是否可以创建HTML quine?

根据标题,是否可以在HTML中创建(非平凡的)quine

我对HTML quine的定义:

在假设HTML文件中的某些字符串由浏览器呈现为纯文本的情况下,非平凡的HTML quine是非空的并且至少使用一个HTML标记.定义HTML quine q.html ,使得标准浏览器呈现as的输出是其q.html自身的内容.

(我对这个定义的任何评论持开放态度,我现在就把它搞砸了)

HTML不是图灵完备的,因此定点定理不能用来证明它确实是可能的.

但是,这并不一定意味着HTML quine是不可能的.或者它实际上可以证明HTML quine是不可能的?

html computer-science quine computation-theory

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

为什么移动图灵是完整的?

我最近发现了这个:https : //github.com/xoreaxeaxeax/movfuscator
这似乎取决于mov图灵完备的事实。这是真的吗,为什么?

x86 assembly computer-science turing-complete mov

14
推荐指数
2
解决办法
5262
查看次数