标签: language-agnostic

堆栈和堆的内容和位置是什么?

编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,

  • 它们在哪里和它们(物理上在真实计算机的记忆中)?
  • 它们在多大程度上受操作系统或语言运行时控制?
  • 它们的范围是什么?
  • 是什么决定了它们的大小?
  • 是什么让一个更快?

language-agnostic heap stack memory-management dynamic-memory-allocation

7847
推荐指数
27
解决办法
145万
查看次数

基于表单的网站身份验证的权威指南

基于表单的网站身份验证

我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则."基于表单的网站身份验证"应该是这种实验的一个很好的主题.

它应包括以下主题:

  • 如何登录
  • 如何退出
  • 如何保持登录状态
  • 管理cookie(包括推荐设置)
  • SSL/HTTPS加密
  • 如何存储密码
  • 使用秘密问题
  • 忘记用户名/密码功能
  • 使用nonce来防止跨站点请求伪造(CSRF)
  • OpenID的
  • "记住我"复选框
  • 浏览器自动完成用户名和密码
  • 秘密URL(受摘要保护的公共URL)
  • 检查密码强度
  • 电子邮件验证
  • 还有更多关于 基于表单的身份验证 ...

它不应该包括以下内容:

  • 角色和授权
  • HTTP基本身份验证

请帮助我们:

  1. 建议子主题
  2. 提交有关此主题的好文章
  3. 编辑官方答案

language-agnostic security authentication article http

5311
推荐指数
12
解决办法
59万
查看次数

如何有效地配对袜子?

昨天我把干净的洗衣店的袜子配对,弄清楚我做的方式效率不高.我正在做一个天真的搜索 - 挑选一个袜子并"迭代"堆,以找到它的对.这需要迭代在n/2*N/4 = N 2 /8上平均的袜子.

作为一名计算机科学家,我在想我能做什么?当然,为了实现O(NlogN)解决方案,我们会想到排序(根据大小/颜色/ ...).

哈希或其他非就地解决方案不是一种选择,因为我无法复制我的袜子(尽管如果可能的话可能会很好).

所以,问题基本上是:

给出一堆n袜子,包含2n元素(假设每个袜子只有一对匹配),有效配对多达对数额外空间的最佳方法是什么?(我相信如果需要的话我会记住那些信息.)

我将感谢一个解决以下方面的答案:

  • 大量袜子的一般理论解决方案.
  • 袜子的实际数量并不是那么大,我不相信我的配偶和我有超过30双.(并且很容易区分我的袜子和她的袜子;这也可以使用吗?)
  • 它是否等同于元素清晰度问题

language-agnostic sorting algorithm matching

3850
推荐指数
34
解决办法
40万
查看次数

什么是依赖注入?

已经发布了几个关于依赖注入的具体问题的问题,例如何时使用它以及它有哪些框架.然而,

什么是依赖注入以及何时/为什么应该或不应该使用它?

language-agnostic design-patterns dependency-injection terminology

2984
推荐指数
25
解决办法
80万
查看次数

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

方法和函数之间有什么区别?

有人可以在OOP上下文中提供方法函数的简单解释吗?

language-agnostic oop methods terminology function

1665
推荐指数
23
解决办法
67万
查看次数

什么是尾递归?

在开始学习lisp时,我遇到了尾递归这个术语.这究竟是什么意思?

language-agnostic algorithm recursion functional-programming tail-recursion

1602
推荐指数
27
解决办法
42万
查看次数

喜欢构成而不是继承?

为什么喜欢构图而不是继承呢?每种方法都有哪些权衡取舍?什么时候应该选择继承而不是作文?

language-agnostic oop inheritance composition aggregation

1538
推荐指数
23
解决办法
29万
查看次数

确定两个日期范围是否重叠

给定两个日期范围,确定两个日期范围是否重叠的最简单或最有效的方法是什么?

举个例子,假设我们有通过日期时间变量表示的范围StartDate1EndDate1 StartDate2EndDate2.

language-agnostic math datetime

1180
推荐指数
16
解决办法
38万
查看次数

Ukkonen的简明英语后缀树算法

此时我觉得有点厚.我花了几天时间试图完全用后缀树构建我的头,但由于我没有数学背景,因为他们开始过度使用数学符号系统时,许多解释都没有.最接近我发现的一个很好的解释是使用后缀树进行快速字符串搜索,但是他隐藏了各种点,并且算法的某些方面仍然不清楚.

在Stack Overflow中对此算法的逐步解释对于我以外的许多其他人来说都是非常宝贵的,我敢肯定.

作为参考,这里是Ukkonen关于该算法的论文:http://www.cs.helsinki.fi/u/ukkonen/SuffixT1withFigs.pdf

到目前为止我的基本理解:

  • 我需要迭代给定字符串T的每个前缀P.
  • 我需要遍历前缀P中的每个后缀S并将其添加到树中
  • 要将后缀S添加到树中,我需要遍历S中的每个字符,迭代包括沿着现有分支向下走,该分支以S中的相同字符集C开头,并且当我可能将边缘拆分为后代节点时在后缀中找到不同的字符,或者如果没有匹配的边缘则向下走.当没有找到匹配的边缘向下走C时,为C创建一个新的叶边.

基本算法似乎是O(n 2),正如我们在大多数解释中所指出的那样,因为我们需要遍历所有前缀,然后我们需要逐步遍历每个前缀的每个后缀.由于他使用的后缀指针技术,Ukkonen的算法显然是独一无二的,尽管我认为是我无法理解的.

我也很难理解:

  • 确切地指定,使用和更改"活动点"的时间和方式
  • 算法的典型化方面发生了什么
  • 为什么我看到的实现需要"修复"他们正在使用的边界变量

这是完成的C#源代码.它不仅工作正常,而且支持自动规范化,并提供更好看的输出文本图形.源代码和示例输出位于:

https://gist.github.com/2373868


更新2017-11-04

多年以后,我发现了后缀树的新用途,并在JavaScript中实现了该算法.要点如下.它应该没有错误.npm install chalk从同一位置将其转储到js文件中,然后使用node.js运行以查看一些彩色输出.在同一个Gist中有一个精简版本,没有任何调试代码.

https://gist.github.com/axefrog/c347bf0f5e0723cbd09b1aaed6ec6fc6

language-agnostic string algorithm suffix-tree

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