小编Cor*_*oss的帖子

使用堆栈的非递归深度优先搜索(DFS)

好的,这是我在Stack Overflow上的第一篇文章,我已经阅读了一段时间,真的很欣赏这个网站.我希望这是可以接受的问题.所以我一直在阅读Intro to Algorithms(Cormen.麻省理工学院出版社),我完全依赖于图算法.我一直在研究用于广度和深度优先详细搜索的正式算法.

这是深度优先搜索的伪代码:

DFS(G)
-----------------------------------------------------------------------------------
1  for each vertex u ? G.V
2      u.color ? WHITE       // paint all vertices white; undiscovered
3      u.? ? NIL
4      time ? 0              // global variable, timestamps
5  for each vertex u ? G.V
6      if u.color = WHITE
7          DFS-VISIT(G,u)

DFS-VISIT(G, u)
-----------------------------------------------------------------------------------
1  u.color ? GRAY          // grey u; it is discovered
2  time ? time + 1 
3  u.d ? time
4  for each v ? G.Adj[u]   // …
Run Code Online (Sandbox Code Playgroud)

algorithm graph depth-first-search graph-algorithm

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

模板中的包含,部分和/或块之间有什么区别.EJS/ejs-locals

我已经使用EJS与Express和Node.JS一段时间了,我想我理解基础知识.我已经尝试了EJS include功能,它允许我在另一个模板中包含一个模板.我还使用了一个名为ejs-locals的库,它提供了简单的真正布局支持.有一两件事我注意到的是EJS-当地人还定义partial和block可与EJS使用的功能.我似乎无法找到这三个概念之间的差异的良好解释.据我所知,它们是模板化的一般概念,而不仅仅是EJS.在我看来,这两个partial和block还是包括其他模板文件的方式,但他们有什么不同?

javascript templating ejs node.js express

10
推荐指数
1
解决办法
2206
查看次数

如何选择Visual Studio解决方案平台工具集以获得最大兼容性

背景

我正在开源一些我之前创建的旧Visual Studio应用程序.我使用我的新VS2012环境为他们创建了新的解决方案,并将项目设置为git存储库.我在Visual Studio 2012中一切正常,没有对源代码进行任何更改,我需要做的就是确保在新项目配置中链接正确的库.

我想配置这些项目,以便与其他从Github下载项目的人员具有最大的兼容性.在这台机器上我安装了VS2010和最新的VS2012版本.在我为VS2012中的两个项目完成所有工作之后,我试图在VS2010中打开它们.

当我尝试构建时,我遇到了一个错误:

Specified platform toolset (v110) is not installed or invalid.
Please make sure that a supported PlatformToolset value is selected.    
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets  518
Run Code Online (Sandbox Code Playgroud)

我试过的

所以我打开了项目的属性,去Configuration Options --> General了平台工具集确实设置为Visual Studio 2012 (v110).此输入是一个下拉框,v110未列出该值,而是我有两个选择:

  • V100
  • V90

它们分别对应VS2010和VS2008.如果我将值更改为v100并重建我没有错误,我的程序在我的Visual Studio 2010环境中运行正常.

当我在Visual Studio 2012中打开项目备份时,如果告诉我我有一个旧的项目文件并询问我是否要升级,我会说是,它会升级.我重建并运行以确保一切仍然有效.当我打开VS2012中的配置选项时,平台工具集被设置回`Visual Studio 2012(v110),但点击下拉输入,列出了几个选项:

  • Visual Studio 2012(v110)
  • v110_wp80
  • Visual Studio 2012 - Windows XP(v110_xp)
  • Visual Studio 2010(v100)
  • Visual Studio 2008(v90)
  • <从父项目或项目默认值继承>

我的问题 …

configuration compatibility cross-platform visual-studio-2010 visual-studio

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

如何调整Bootstrap导航栏中剩余的品牌标题和链接?

我是Bootstrap的新手,我一直在努力了解导航栏.我注意到当浏览器已满(宽屏)宽度时,品牌标题和导航锚定位于页面的左中心,而不是与页面的左侧对齐,就像窗口较小时一样.如何使导航栏中的文本拥抱页面左侧?无论浏览器窗口的宽度如何,我都希望能够将其固定在窗口的左侧.有没有特别的理由不这样做?

这是关于jsFiddle的现场演示.请注意,如果您拉动手柄并尽可能向左扩展视口,文本最终将移向导航栏的中心.

我的导航栏标记与bootstrap提供的入门演示相同,我知道响应式功能和图标没有连接在小提琴中,但是他们正在处理我的本地项目并且与问题无关.我想我需要将自定义CSS文本对齐,但是我尝试应用它的尝试失败了.任何帮助将非常感激.

    <div class="navbar navbar-inverse navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container">
          <a class="brand" href="#">Project name</a>
          <div class="nav-collapse collapse">
            <ul class="nav">
              <li class="active"><a href="#">Home</a></li>
              <li><a href="#about">About</a></li>
              <li><a href="#contact">Contact</a></li>
            </ul>
          </div><!--/.nav-collapse -->
        </div>
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </a>
      </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap

9
推荐指数
2
解决办法
3万
查看次数

我将开源许可文件命名为什么?

我一直在尝试将我的一些东西上传到GitHub,最近我读了一些文章,其中一些硬数据显示GitHub上的大多数存储库都没有正确许可.我希望不是这样的.从现在开始,我决定开始将大部分项目纳入麻省理工学院的许可证,我想知道我是否应该命名LICENSE.txt,或者LICENSE.md(我喜欢这个)会更好吗?然后我就开始想知道更普遍的问题:不要紧,你的名字保存您的开源许可文件在所有?例如,如果您的内部有有效许可证,但您的项目是否已正确许可,但该文件已命名VOIDLICENSE.md?我知道这有点做作,但它证明了我想要问的问题.对于我将许可证放入文件的名称,或者放置该文件的位置,是否有任何限制?如果它深埋在目录结构的某个地方,它还能算吗?如果文件中还有其他内容,它仍会计数吗?我想如果许可证从模板中完全更改它不会被视为有效的MIT许可证,但如果文件中有其他东西会使它无效吗?

licensing open-source github

9
推荐指数
1
解决办法
3106
查看次数

如何在Jekyll的Liquid模板中比较字符串的大小/长度?

我在GitHub页面上使用Jekyll来构建一个博客,并希望page.title在每个帖子中获取传递给YAML前端内容中的Liquid Template 的字符串的长度.我还没有找到一个简单的方法来做到这一点.看看Liquid For Designers Guide我能够看到它支持两种类型的标记:

  • 输出标记 - 由双花括号分隔{{ }},您可以输出传递给模板的变量,可以是YAML前端物质(如page.titleJekyll)或全局站点级变量_config.yml.要输出您要使用的帖子或页面的标题{{ page.title }}.

  • 标记标记 - 由花括号和百分比分隔,{% %}用于模板中的逻辑.如果语句,循环,那种类型的东西.

显然,有许多过滤器可以与输出标记一起使用,您可以使用输出传递给模板的字符串的长度{{ page.title | size }}.

不过,我想在我的模板做的是使用渲染的任何页面的标题<h1>,<h2>或<h3>取决于标题的长度头.

无论如何,我无法弄清楚标记标记和输出标记的混合.

我可以输出page.title页面的大小{{ page.title | size }},但我不能弄清楚如何在if语句中使用长度.这也返回字符串表示而不是数字.

有没有更多Liquid经验的人知道怎么做吗?

理想情况下,我想做的是这样的事情:

{% if page.title | size > 5 %} 
Run Code Online (Sandbox Code Playgroud)

template-engine github liquid jekyll

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

使用工厂与战略设计模式

好的,所以我被赋予了一项任务,要求我同时使用策略和工厂设计模式.这是问题所在:

您正在为银行开发一个用于处理贷款的申请.有Loan一个方法的类capital().该capital()方法包含一个丑陋的if-then-else条件,它检查一些Loan对象实例属性,并根据属性使用正确的贷款类型策略.这是该capital()方法的伪代码:

capital() {
    if (expiry == null && maturity != null) {
        // Find capital for term loan
        return commitment * duration * riskFactor;
    }
    if (expiry != null && maturity == null) {
        if (getUnusedPercentage() != 1.0) {
            // Find capital for revolving loan
            return commitment * unusedPercentage * duration * riskFactor;
        } else {
            // Find capital for complex loan
            return (outstandingRiskAmount * duration * riskFactor) + (unusedRiskAmount * …
Run Code Online (Sandbox Code Playgroud)

uml design-patterns strategy-pattern factory-pattern

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

具有复合条件和短路的环形复杂性

我正在大学的软件质量保证课程中学习Cyclomatic Complexity,当你在谓词语句或节点中有复合条件时,我很难理解它是如何工作的.我已经看到了Cyclomatic Complexity的多个定义,其主要用于我的课堂

V(G) = # of predicate nodes (with outdegree = 2) + 1
Run Code Online (Sandbox Code Playgroud)

因此,对于像这样的程序图,我们将具有两个圈复数:

V(G) = 2
Run Code Online (Sandbox Code Playgroud)

程序图的圈复杂度为2

我也看到了Cyclomatic复杂性的定义

V(G) = # edges - # nodes + 2
Run Code Online (Sandbox Code Playgroud)

这也适用于上面给出的图表.但是,我们有谓词节点的复合条件.我们认为语言和系统设置为自动短路,在我看来左下方的图表必须扩展到图表.如果是这种情况,如下所示,Cyclomatic复杂度是否变为3,即使在真实的源代码中,我们可能只有一个if语句或者它仍然是V(G)= 2?.

这是令人困惑的,因为我看到的Cyclomatic复杂性的大多数定义都在讨论谓词节点,而且我理解谓词它们可能包含多个短路条件.如果不是这种情况,似乎短路行为在提高性能的同时,实际上会在考虑时提高Cyclomatic的复杂性.如果给出了源代码,那么在我们计算出圈复杂度之前,是否必须将所有条件分解到它们自己的节点中,例如左边的图形? 程序图扩展为显示短路行为

testing unit-testing graph-theory graph cyclomatic-complexity

5
推荐指数
1
解决办法
1911
查看次数

Chrome 控制台的自动完成功能是否变得更加激进?

最近,在 Chrome DevTools 中使用控制台时,我似乎一直被自动完成下拉菜单所困扰。好像突然变得更凶了。直到有一天,当我尝试在控制台中快速输入命令以进行测试时,我从未遇到过该功能的问题。我不确定为什么它不能正常工作。当我点击Enter自动完成时,它一直弹出而不执行我输入的内容。起初,似乎每当我点击Enter执行我的代码时,自动完成功能就会被激活。但是,它开始看起来好像只是在我以;.

例如,在控制台中输入以下语句并按下Enter不会激活自动完成下拉菜单:

console.log('did it')
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加分号,那么只要我按下;几毫秒后,自动完成功能就会立即弹出:

console.log('did it');
Run Code Online (Sandbox Code Playgroud)

在这一点上,如果我按下Enter它只会选择第一个条目,$并将其添加为下一个语句,因此我们得到:

console.log('did it');$
Run Code Online (Sandbox Code Playgroud)

自动完成阻止执行

我知道这并不是什么大问题,毕竟,您需要分号的唯一原因是输入多个语句。但是,我觉得过去我总是;在简单的单个测试语句的末尾添加一个分号,例如console.log上面显示的没有激活自动完成功能,只需点击 就可以执行它Enter。

我绝对觉得我的控制台的自动完成功能比以前更积极。

有没有其他人觉得控制台中的自动完成功能突然激活得太频繁了?我想知道这是否真的可以在 Chrome 中改变,或者我是否以某种方式让我的控制台通过设置或其他方式开始以这种方式运行?

在写这篇文章时,我注意到它似乎不仅仅是在;自动完成似乎弹出之前它没有出现之后。如果您参考Chrome DevTools - Using the Console,您将看到自动完成仅被提及一次:

在按下 Return 或 Enter 键后,控制台会尝试评估您在 shell 提示符下输入的任何 JavaScript 表达式。控制台提供自动完成和制表符完成。当您键入表达式时,会自动建议属性名称。如果有多个具有相同前缀的属性,请按 Tab 键在它们之间循环。按向右箭头键接受当前建议。如果只有一个匹配的属性,也可以通过按 Tab 键接受当前建议。

在此之后,它继续说我们可以使用Shift+Enter来输入多行表达式,它给出了以下示例:

ShiftEnterCombo
(来源:google.com)

这是我确信我过去做过很多次而没有自动完成问题的事情。当我尝试在上图中键入代码时,我得到了:

var add …
Run Code Online (Sandbox Code Playgroud)

google-chrome autocomplete google-chrome-devtools

5
推荐指数
1
解决办法
5107
查看次数

Python sorted()内置函数与list insert()方法的效率

我并不陌生,但我并没有太多使用Python,而且我的知识相当广泛而且语言也不是很深,也许这里知识渊博的人可以回答我的问题.当我需要将项目添加到列表并将其按照添加的项目进行排序时,我发现自己处于这种情况.一个快速的方法是这样做.

list.append(item)                  // O(1)
list.sort()                        // ??
Run Code Online (Sandbox Code Playgroud)

我想如果这是项目添加到列表的唯一方式,我希望排序相当有效,因为列表是按每次添加进行排序的.然而,这也有效:

inserted = False
for i in range(len(list)):         // O(N)
    if (item < list[i]): 
        list.insert(i, item)       // ??
        inserted = True
        break
if not inserted: list.append(item)
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我,其中一个显然更有效吗?我倾向于第二组陈述,但我真的不知道.

python algorithm performance

4
推荐指数
1
解决办法
2688
查看次数