为方法指定返回类型提示的正确语法是什么?
例如,我有这样一个方法:
private static function ConstructPDOObject($dbname)
{
$hostname =self::HOSTNAME;
$username = self::USERNAME;
$password = self::PASSWORD;
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
return $dbh;
}
Run Code Online (Sandbox Code Playgroud)
我想,每当我调用上述方法时,IDE都会向我展示PDO的方法.
如何添加类型提示?
我在一次采访中遇到了一个有趣的算法问题.我给出了答案,但不确定是否有更好的主意.所以我欢迎大家写一些他/她的想法.
你有一个空集.现在元素逐个放入集合中.我们假设所有元素都是整数,它们是不同的(根据集合的定义,我们不考虑具有相同值的两个元素).
每次将新元素添加到集合中时,都会询问集合的中值.中值定义与数学中的相同:排序列表中的中间元素.这里,特别地,当集合的大小是偶数时,假设set = 2*x的大小,中值元素是集合的第x个元素.
一个例子:从空集开始,当添加12时,中位数为12,当添加7时,中位数为7,当添加8时,中位数为8,当添加11时,中位数为8,当添加5,中位数为8,当加16时,中位数为8,...
请注意,首先,元素被添加到逐个设置,其次,我们不知道要添加的元素.
我的答案.
由于这是一个关于寻找中位数的问题,因此需要进行排序.最简单的解决方案是使用普通数组并保持数组排序.当新元素到来时,使用二进制搜索来查找元素的位置(log_n)并将元素添加到数组中.由于它是一个普通的数组,因此需要移动阵列的其余部分,其时间复杂度为n.插入元素后,我们可以使用实例时间立即获得中位数.
最糟糕的时间复杂度是:log_n + n + 1.
另一种解决方案是使用链接列表.使用链接列表的原因是消除了移动阵列的需要.但是找到新元素的位置需要线性搜索.添加元素需要立即时间,然后我们需要通过遍历数组的一半来找到中值,这总是需要n/2次.
最差时间复杂度为:n + 1 + n/2.
第三种解决方案是使用二叉搜索树.使用树,我们避免移动数组.但是使用二叉搜索树来查找中位数并不是很有吸引力.所以我改变二叉搜索树的方式总是左子树和右子树是平衡的.这意味着在任何时候,左子树和右子树都具有相同数量的节点,或者右子树比左子树中的节点多一个节点.换句话说,确保在任何时候,根元素是中值.当然,这需要改变树的构建方式.技术细节类似于旋转红黑树.
如果树被正确维护,则确保WORST时间复杂度为O(n).
因此,这三种算法都与集合的大小成线性关系.如果不存在子线性算法,则可以将这三种算法视为最优解.由于它们彼此之间没有太大区别,因此最好的是使用链接列表最容易实现,这是第二个.
所以我真的很想知道,这个问题是否会有一个亚线性算法,如果是这样的话会是什么样的.有什么想法吗?
史蒂夫.
有人可以解释如何在完整的无向图中找到哈密顿循环的数量吗?
维基百科说公式是(n-1)!/2,但是当我使用这个公式计算时,K3只有一个周期而K4有5.我的计算是不正确的?
我正在设置一个有三个不同窗口的程序.我只是在用..
Window1 win1 = new Window1(); win1.show();
...为每个额外的窗户.问题是每个窗口都会在任务栏上打开一个新选项卡.无论如何我仍然可以在任务栏上只有一个相关项目的三个窗口吗?
如果可能的话,我不想让它们成为所有儿童形式,并且必须坐在另一个盒子里面.
谢谢
我公司的大部分Web编程背景都是PHP,因此ASP.NET MVC是我们最新的Web应用程序的合理选择,它也需要作为单独的Winforms应用程序的后端工作.然而,我们一直在寻找自己走在我们通常在php中遵循的道路 - 回应大量条件输出的标签.这是ASP.NET MVC中的一个坏主意吗?
例如,没有Response.Write:
<%if (OurUserSession.IsMultiAccount)
{%>
<%=Html.ActionLink("SwitchAccount", "Accounts", "Login") %><span>|</span>
<%}%>
Run Code Online (Sandbox Code Playgroud)
使用Response.Write:
<%if (OurUserSession.IsMultiAccount)
Response.Write (Html.ActionLink("Swith Account", "Accounts", "Login") + "<span>|</span>");
%>
Run Code Online (Sandbox Code Playgroud)
这里的差异相当小,但有时我们的视图逻辑变得更复杂(非常复杂的视图逻辑,即除了布尔值之外,我们只是卸载到控制器).第二个似乎更容易阅读,但我想看看是否有任何关于此事的想法.
我正在创建一个非常大的基于PHP MVC的站点,它将拥有一个庞大的php类库,javascripts和许多css文件(更不用说MVC的大量文件).
我有史以来第一次花时间计划一个干净有序的目录结构.
您通常使用哪些目录结构,哪些目录结构在有数千个文件时最容易管理?
我在找出快速完成(看似)简单任务的方法时遇到了一些麻烦.说我有以下html:
<ul>
<li>One</li>
<li>Two</li>
<li id='parent'>
<ul>
<li>Three</li>
<li>
<ul>
<li>Four</li>
<li id='child'>Five</li>
</ul>
</li>
<li>Six</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
并有以下两个要素:
var child = $("#child");
var parent = $("#parent");
Run Code Online (Sandbox Code Playgroud)
在这个例子中,很明显:
child.parent().parent().parent().parent();
Run Code Online (Sandbox Code Playgroud)
将与"父"相同的节点.但是我正在遍历的列表是可变大小的,所以我需要找到一种方法来找出我需要经历多少'.parent()才能到达那个父节点.我总是知道孩子和父母在哪里,我只是不知道他们之间有多少'层'.
有没有内置的jQuery方法来做这样的事情,或者我最好的选择是获取父节点的递归函数,检查父节点是否是我想要的节点,如果没有调用它的父节点?
编辑:我可能没有足够清楚地解释自己.我的问题是没有得到父母,我的问题是找出孩子和父母之间有多少节点.在上面的示例中,child和parent之间有3个节点.这是我需要找到的数据.
我正在尝试制作预览功能.我正在阅读这个博客,Django Admin Preview,但现在我有以下错误,我不知道这意味着什么.
Traceback (most recent call last):
File "/home/user/webapps/django/lib/python2.5/django/core/handlers/base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)
我迷路了..
编辑:
谢谢伙计们/ gals,这是我的view.py和url.py:
from diligencia.diligencias.views import preview
url(r'^admin/diligencias/diligencia/(?P<object_id>\d+)/preview/$','preview'),
(r'^admin/(.*)', admin.site.root),
from diligencia.diligencias.models import Diligencia
@staff_member_required
def preview(request, object_id):
return object_detail(request, object_id=object_id,queryset=Diligencia.objects.all(), template_object_name = 'diligencia_detail.html', )
Run Code Online (Sandbox Code Playgroud) 我PDOStatement用来查询数据库.每当我得到一个返回的行时,我希望将它$row[0]作为键提取到数组中,并将行中的后续元素作为值.
当然,我可以编写一个foreach循环和if条件组合来完成这项工作,如下所示:
private static function GetMySQLResult($dbname, $sqlString) {
$dbh = self::ConstructPDOObject($dbname);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result=array();
foreach ($dbh->query($sqlString) as $row)
{
$result[$row[0]][]=$row[1]; // the simplest case for 2 columns, should add more to handle more columns
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种现有的方法; 有没有这样的方法已经存在?
我有一个主要的"父"swf加载其他几个swfs.如果在主SWF中发生了某些事情,我需要告诉其中一个孩子swf.
这似乎相反,相反.任何一个孩子都可以简单地调用Event(),我可以设置主swf来监听事件.但是,我无法让子swf捕获父级调度的任何事件.怎么做?
php ×3
algorithm ×2
asp.net-mvc ×1
cycle ×1
directory ×1
dispatcher ×1
django ×1
django-admin ×1
events ×1
flash ×1
graph ×1
javascript ×1
jquery ×1
pdostatement ×1
taskbar ×1
wpf ×1