程序设计

专业和发烧友程序员的问答

30
O(log n)到底是什么意思?
我正在了解Big O Notation运行时间和摊销时间。我理解O(n)线性时间的概念,这意味着输入的大小会成比例地影响算法的增长...例如,二次时间O(n 2)等也是如此。 ,例如乘数为O(n!)的排列生成器,并通过阶乘增长。 例如,以下函数为O(n),因为该算法与输入n成正比增长: f(int n) { int i; for (i = 0; i < n; ++i) printf("%d", i); } 同样,如果存在嵌套循环,则时间将为O(n 2)。 但是O(log n)到底是什么?例如,说一个完整的二叉树的高度为O(log n)是什么意思? 我确实知道(也许不是很详细)什么是对数,即:log 10 100 = 2,但是我不明白如何用对数时间来识别一个函数。

13
如何显示已进行的更改?
我进行了一些更改以进行确认;如何查看下一次提交暂存的所有文件的差异?我知道git status,但我想查看实际的差异-不仅是暂存文件的名称。 我看到git-diff(1)手册页说 git diff [--options] [-] […] 该表单用于查看您相对于索引(下一次提交的暂存区域)所做的更改。换句话说,区别就是您可以告诉git进一步添加到索引中,但是您还没有。您可以使用git-add(1)进行这些更改。 不幸的是,我对此不太理解。必须有一些方便的单行代码,我可以为其创建别名,对吗?
2136 git  diff  dvcs  git-diff  git-stage 

30
如何使div的浏览器窗口高度为100%
我有两列的布局-左div和右div。 右边div有一个灰色background-color,我需要根据用户浏览器窗口的高度垂直扩展它。现在background-color结束于该内容的最后一部分div。 我试过height:100%,min-height:100%;等
2135 html  css  height 

24
MVP和MVC有什么区别?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为Model-View-Controller,Model-View-Presenter和Model-View-ViewModel。我的问题包括三个部分: 这些模式解决了哪些问题? 它们有何相似之处? 它们有何不同?

30
如何转换高度:0; 达到高度:自动;使用CSS?
我正在尝试<ul>使用CSS过渡制作幻灯片。 将<ul>在开始关闭height: 0;。悬停时,高度设置为height:auto;。但是,这导致它只是显示而不是过渡, 如果我从height: 40px;到进行操作height: auto;,则它将滑到height: 0;,然后突然跳到正确的高度。 不使用JavaScript,我还能怎么做? #child0 { height: 0; overflow: hidden; background-color: #dedede; -moz-transition: height 1s ease; -webkit-transition: height 1s ease; -o-transition: height 1s ease; transition: height 1s ease; } #parent0:hover #child0 { height: auto; } #child40 { height: 40px; overflow: hidden; background-color: #dedede; -moz-transition: height 1s …
2131 css  css-transitions 

10
什么是JSONP,为什么创建它?
我了解JSON,但不了解JSONP。Wikipedia上有关JSON的文档是JSONP的最高搜索结果。它说: JSONP或“带填充的JSON”是JSON扩展,其中将前缀指定为调用本身的输入参数。 ??什么电话 这对我来说毫无意义。JSON是一种数据格式。没有电话 在第二个搜索结果是由某些人叫雷米,谁写的这个约JSONP: JSONP是脚本标记注入,它将来自服务器的响应传递到用户指定的函数。 我可以理解,但这仍然没有任何意义。 那么JSONP是什么?为什么创建它(它解决了什么问题)?我为什么要使用它? 附录:我刚刚在Wikipedia 上为JSONP创建了一个新页面。根据jvenema的回答,它现在对JSONP有了清晰而透彻的描述。




12
GCC为什么不将a * a * a * a * a * a优化为(a * a * a)*(a * a * a)?
我正在对科学应用程序进行一些数值优化。我注意到的一件事是,GCC将pow(a,2)通过将其编译为来优化该调用a*a,但是该调用pow(a,6)并未进行优化,实际上将调用该库函数pow,这大大降低了性能。(相反,可执行文件Intel C ++编译器icc将消除对的库调用pow(a,6)。) 我很好奇的是,当我替换pow(a,6)为a*a*a*a*a*a使用GCC 4.5.1和选项“ -O3 -lm -funroll-loops -msse4”时,它使用5 mulsd条指令: movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 而如果我写(a*a*a)*(a*a*a),它将产生 movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm13, %xmm13 这将乘法指令的数量减少到3. icc具有相似的行为。 为什么编译器无法识别此优化技巧?


30
Java中的“可运行的实现”与“扩展线程”
从什么时候开始在Java中使用线程开始,我发现了以下两种编写线程的方法: 与implements Runnable: public class MyRunnable implements Runnable { public void run() { //Code } } //Started with a "new Thread(new MyRunnable()).start()" call 或者,使用extends Thread: public class MyThread extends Thread { public MyThread() { super("MyThread"); } public void run() { //Code } } //Started with a "new MyThread().start()" call 这两个代码块有什么显着区别吗?


10
为什么在Python 3中“范围(1000000000000000(1000000000000001))”这么快?
据我了解,该range()函数实际上是Python 3中的一种对象类型,它会像生成器一样动态生成其内容。 在这种情况下,我本以为下一行会花费过多的时间,因为要确定1个四舍五入是否在该范围内,必须生成一个四舍五入值: 1000000000000000 in range(1000000000000001) 此外:似乎无论我添加多少个零,计算多少都花费相同的时间(基本上是瞬时的)。 我也尝试过这样的事情,但是计算仍然是即时的: 1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens 如果我尝试实现自己的范围函数,结果将不是很好! def my_crappy_range(N): i = 0 while i < N: yield i i += 1 return 使range()物体如此之快的物体在做什么? 选择Martijn Pieters的答案是因为它的完整性,但也看到了abarnert的第一个答案,它很好地讨论了在Python 3中range成为完整序列的含义,以及一些有关__contains__跨Python实现的函数优化潜在不一致的信息/警告。。abarnert的其他答案更加详细,并为那些对Python 3优化背后的历史(以及xrangePython 2中缺乏优化)感兴趣的人提供了链接。poke和wim的答案为感兴趣的人提供了相关的C源代码和说明。

20
带请求正文的HTTP GET
我正在为我们的应用程序开发新的RESTful Web服务。 在某些实体上执行GET时,客户端可以请求实体的内容。如果他们想添加一些参数(例如,对列表进行排序),则可以在查询字符串中添加这些参数。 另外,我希望人们能够在请求正文中指定这些参数。 HTTP / 1.1似乎没有明确禁止这样做。这将使他们能够指定更多信息,可能使指定复杂的XML请求更加容易。 我的问题: 这是个好主意吗? HTTP客户端在GET请求中使用请求主体时会遇到问题吗? http://tools.ietf.org/html/rfc2616
2108 rest  http  http-get 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.