>> JASON HIRSCHHORN：欢迎光临， 每个人，至10周。
这是一个令人兴奋的一周，因为 明天是测验1，我们将得到
在第二个。
今天在节中，我们将去 对一些资源进行测验，并
然后，我会回答任何和所有 问题你们有。
我们将最终结束于 一些实际问题。
>> 我们可以花整款 回答问题。
我们可以花整款 去在实践中的问题。
我们只会扩大，以填补 空间和时间，我们有。
>> 所以我每星期把这个名单了，但 这个星期是特别重要的。
对于学习，如果你还没有 已经开始了，男孩哦。
但希望你已经开始。
和你正在经历的材料 这里列出的资源。
我会极力推荐 许多这些。
>> 特别是，课堂笔记是 非常重要和有益的。
该study.cs50.net提供 在很多大底
我们讨论的主题。
它也有一些伟大的 实践问题。
然后，谷歌是伟大的，太。
我不知道你会用它来干什​​么。
但使用谷歌，以及。
>> 伸手给我，如果您有任何 问题，意见或疑虑。
期待在审查会议 幻灯片从昨晚。
或者，如果你有一段时间了， 观看视频。
它们提供了很多有帮助的 材料和信息。
并设法弥补，如果不是全部，很多的 我们已经讨论了，而且你的主题
在测验可能会看到。
>> 说到测验，即 将是明天。
它拥有75分钟之久。
你们中许多人正在服用它在1 点多了，有些人相当
把它在5:30。
当时你正在服用它和 你正在做它的位置，确保
您签出该文档 在CS50.net主页。
>> 请记住，你可以得到一个8 1/2 由11片随身携带。
通常情况下，人们不使用此 表在所有的考试中。
不过说真的，这是一个令人难以置信 有用的学习工具。
所以这片放在一起是什么 我花了大概三四个小时
当我攻读CS50做什么， 这是很容易的最有帮助
这样我可以学习的测验。
所以，即使你有一些其他人的 学习指南来看待和
作为参考使用，我强烈推荐 使自己的学习指南，把
这些东西在一起。
这确实能帮助你学习 所有的材料。
>> 最后但并非最不重要在本节中， 有一个明天的测验后，
更多讲座 -
下周一。
还有一节，没有未来 周二感恩节前，但
周二之后。
我们将一起开会作最后 再见了党和也做了一些很酷
事情让你们感到兴奋 进一步研究在计算机科学。
>> 还有一个多项目，多了一个 公平的，多一个hackathon。
我们正在接近CS50年底， 这是令人兴奋的 -
而且，如果你像 我，有点难过。
在我继续前进，没有任何人有 大约有任何疑问什么
我们已经讨论了这么远吗？
>> 好了，好让我们在一些问题 您有测验和主题
我们可能涵盖。
所以这是一个列表，我放在一起。
它绝不是详尽，但 希望能唤起你的记忆，如果你
有任何关于这些问题的一些 主题，或者如果您有关于问题
从测验练习题 在过去的几年。
>> 我有几个问题，是 通过电子邮件发送给我，但我想暂缓
那些一秒钟。
没有任何人有任何疑问， 他们不明白的问题，
答案他们不明白 让我们开始？
阿维。
>> 观众：你能随便去了 DOM和Ajax的真快？
就像，我们需要知道或应该 了解他们的？
>> JASON HIRSCHHORN：我要回答 通常这个问题，有什么事我
需要了解特定主题X'
因为我有一种感觉，你们中许多人 要问我，或者是
好奇的。
所以，在某种程度上，这一专题 涵盖演讲，或部分，或
study.cs50.net，问题集，你 应该熟悉它。
>> 所以，你不需要知道每一种类型 标签，是HTML中可用或
每一种类型的属性或属性的 你可以给一些在CSS中。
但是，如果你看到它在一个演讲的例子， 如果你看到它在一个问题
集，你应该很熟悉 有了它，你看到特别的东西
在演讲。
所以我们讨论的文件 在对象模型中的位
部分，更多的是在演讲。
你应该很熟悉 有这么大的它。
>> 而且你应该熟悉 AJAX到相同的程度。
我们从来没有见过难以置信的先进或 阿贾克斯的复杂的例子，所以
你不会被要求做 一些令人难以置信的复杂。
但你可能会问，我怎么 使用jQuery做一个Ajax调用？
这是你已经看到了一些东西 之前的时间，无论是在
审查会议，并在讲座中，和 它的代码只有两个十岁上下行。
>> 所以这是你应该 熟悉。
但同样，对于所有这些主题， 如果你已经看到了
之前，它是公平的游戏。
我们可能会问你 - 很明显，我们是 要问你的事情你
以前没有见过的。
编码的东西你有没有 以前见过。
这并不是说你有没有 看到解决工具
这个问题之前。
你已经看到了这些工具。
>> 例如，在测试1，如果 你需要编写strlen的。
我们以前没有编码的strlen。
但你知道如何使用for循环， 你知道如何，如果条件下使用。
你知道如何用C编写的变量 这将是在这里同样的事情。
你不会被要求做 你有没有看到过，但什么
你可能会问到，像，放 东西一起以一种新颖的方式，或
解决不同类型的问题。
>> 对不起，这不是特定于您 的问题，但我不能回答有关
每一个话题你 做或不需要知道。
但同时，对不起，这最后的事情。
我们花了显著更多的时间 在链接列表比我们对阿贾克斯。
你没有在问题集中使用Ajax。
其中所述中心功能 问题设置了链接列表。
我们花了很多时间在讲座 和使用它部分。
>> 所以，赔率是链接列表将拿出更多 经常在测验比阿贾克斯的意志。
或问题不得不与链接 名单将是值得更多的积分。
所以，你可以肯定聚焦和窄 在东西比较多
可能是因为我们要拿出 花更多的时间在他们身上。
>> 确定没有别的问题？
是啊。
>> 观众：我们可以走了过来使用 在JavaScript中的匿名函数？
我是有一点困惑了。
>> JASON HIRSCHHORN：那么在JavaScript -
我试图想我怎么样 可以写这样的 -
让我们实际打开了这个代码。
所以这是代码的最后一周，我们做到了。
和你以前，如果你看到了这 曾在这里一节的最后一周。
或者你已经看到的东西 之前与此类似。
>> 但你可以看看这个第一道防线。
这是你如何开始 -
大家以前也见过这个。
如果你想要把一些JavaScript代码， 你把它放在这里面，假设
您正在使用JQuery。
这是说，什么也不做 直到文件的加载。
>> 然后，简略的，你看这里 我们正在做这样的事情 -
功能开括号，括号封闭。
因此，我们没有给这个 函数的名称。
我们不会定义这个函数 应该运行，然后
说它是一堆倍。
我们只是说这个文件 已经接受一个函数。
一对夫妇的事情要做。
>> 我们不想花时间 给它一个名称，或将其保存为
永久。
我们只是想运行一些事情。
因此，一个匿名函数排序 的服务的目的。
如果你不打算使用的东西 一遍又一遍，所以你不需要
给它一个名字 - 你只是 想一次使用它 -
你只说功能， 例如，在这种情况下，你只是
定义的东西， 你可以给一个名称。
>> 喜欢，我们可以拉这个功能了 并给它一个名称，然后调用
在这里发挥作用。
但是，我们并不需要，因为我们不 不想浪费时间给它一个名称或
浪费的东西在我们的名称空间。
而且你会看到很多。
例如，我们看到了很多在这 代码，但是你以前见过这个时
你点击的东西 -
运行此类型的代码。
>> 我们可以定义我们想要的代码 运行时点击的，在这种情况下，
这个ID，作为一个单独的函数 然后运行该功能。
但在这种情况下，我们只是跳绳 该步骤和在这里将它移入和
只是一切定义 我们希望发生的，并
不给它一个名字。
这仍然可能没有 回答你的问题。
>> 观众：不是，它的作用。
我的意思是，我想我只是真的不 知道为什么它会是一个
功能可言，虽然。
因为它没有真正被调用。
它并没有真正有一个名字。
>> JASON HIRSCHHORN：这是在一个函数 感，它的一系列步骤，
就像你把一个函数。
然后这就是为什么我们称之为 它的匿名函数。
我们不打算给它一个名字。
我们不会浪费尝试 以它命名的，但我们可以。
>> 匿名函数，你 总是可以给一个名称。
因此，举例来说，这段代码就在这里， 我们可以把这段代码里面
函数，然后调用 此功能在这里。
相反，我们说，我们不打算 打扰了。
我们只是去写 这一切就在这里。
>> 这就像有时当你正在写 四回路用C - 你们
之前已经看到这一点 - 也许你 通过forloop迭代
进入i等于0。
I小于strlen的。
否则你会通过一些 数组，你可以保存数组
索引i中的一些变量。
并使用该变量。
所以，你不需要重写数组 支架我一遍又一遍又一遍。
>> 而这有点像 一个虚拟变量。
这不是服务于很多其他用途， 使你的代码有点清洁
并且更容易阅读。
类似的功能在这里。
只是使它更容易一点，但 在功能上没有区别。
这是否回答你的问题？
>> 观众：是的。
>> JASON HIRSCHHORN：OK。
马里奥？
>> 观众：昨天他们往往把 函数括号事件。
这是否意味着什么？
或者是它的事情，比如 他们会做
的document.ready功能的事件。
>> JASON HIRSCHHORN：我们已经看到了这一点， 再次，这些都是小事情，
也许我不想 花太多时间。
因为有时候我不希望人们 得到吓坏了，他们有没有
听到这些事情那么多。
但是，我们讨论了一些 事件处理程序。
所以有事，然后 这个功能被执行。
然后，我们也想知道 关于一些细节是什么
在发生此事件。
>> 所以想回习题集4。
这可能是最简单的方式 明白打出来。
有一些代码 -
就像一个事件会发生，但 事件可能意味着很多东西。
如果可能意味着鼠标被点击时，它 可能意味着你打箭头键，等。
等等，等等。
>> 但是，这一切都保存在这个通用 东西叫做事件。
然后我们就可以说，是 本次活动这件事情？
或者这是事件这件事情？
或者，什么样的事 与该事件？
所以这就是为什么您创建的变量 那里保存额外的信息
关于究竟发生了什么的 你会想
利用在该功能。
但同样，这可能是一个 是超级不那么重要的东西
熟悉。
>> 好了，有什么其他问题才有人 已经或者绊脚石，他们已经
在审查遇到过吗？
我们将回到那个列表。
在练习测验怎么样，如果 人们已经采取了那些已经？
什么是一些问题 绊倒你们了？
我知道一个事实，去年的 测验真的很难。
>> 观众：你能解释一下 SQL注入攻击是什么？
>> JASON HIRSCHHORN：好，太好了。
所以我们谈到这一点。
有关于安全的讲座。
再次，正如我刚才所说， 这是一个在一边。
但你会在测验受挫 当你读了一些小二点
的问题，你像，当 我曾经学来的？
>> 所有这些东西在那些讲座 你你需要的没想到
知道，或者你可以粉饰，因为 他们没有做的
习题集，这些将有可能 再上来的测验。
所以，酷，有趣的东西，你只是 以为大卫告诉你来
享受，他告诉你你来 享受，并让你仅仅是超级
对学习充满兴趣的一切 有学习
关于计算机科学。
那些东西也拿出了上测验。
所以，即使是没有这些小东西 直接关系到您的问题
设置，如你们所熟悉的 测验0，可能会冒出来。
这是一个很好的例子 的东西。
>> 因此，一个SQL注入攻击是当你 从用户获得一些信息和
你想用它插入到一个表 SQL INSERT语句，但你
没有净化输入 提前。
所以，很明显，我们已经看到了 SQL语句。
我就打开了 -
让我们去 -
我们会去检讨 -
我认为，谁支付呢？
我觉得Samala做到了。
所以我们可以得到 -
>> 观众：你在哪里找到呢？
>> JASON HIRSCHHORN：所以，如果你去 CS50.net，测验，然后你就可以
翻阅过，并得到滑梯 从审查会议。
但你可以看到这是一个很好的例子 的SQL注入攻击。
我们从用户处获得的一些信息 他们给我们一个字符串，然后我们
要插入的字符串 到数据库中。
一般来说，我们要消毒的 输入，表示有一些
字符是危险的。
>> 例如，在SQL字符串， 这些报价 -
单引号或双引号 -
意味着什么。
他们的意思是在这里结束这个字符串。
所以，如果用户给你一个 或双引号，他们可能是
试图绊倒你的SQL查询， 插入一些不好的东西进去。
如果他们这样做，他们可以得到 你的数据库的控制权，或做一些
东西，你不希望他们做的。
>> 所以这就是为什么每当我们需要的SQL 查询，我们净化输入之前
将其放入数据库中，这 意味着我们逃避这些字符。
我们将讨论，在第二。
不过长话短说，SQL注入 攻击是，如果你不这样做 -
如果你不把输入的护理 他们给了你把你的前
数据库，他们可以，你下来看看 在这里，运行查询，其实 -
他们把他们的代码到这里，并 这个选择线下这里将选择
一切从表姑 什么是给定的密码。
因为你有1或等于1。
>> 所以基本上，长话短说， 一种方法来接管数据库。
的问题，那么，对于你们，是 凡在p设置7你消毒所有
输入您的SQL查询？
在哪里这一步发生的呢？
你在哪里防止SQL注入 发生用p袭击设置7？
是啊。
>> 观众：地穴？
>> JASON HIRSCHHORN：所以它不是隐窝。
我们没有让你这样做的这个 特别是设置的问题，但它发生
在查询功能。
实际上，我们写了你， 我们花了照顾
消毒的投入为您服务。
但在过去的几年中，学生有 上键入他们自己的输入。
IN P组7，很多你 -
让我打开另外一个文件。
>> 所以，你会发现在这里有很多 人，在问题设置7，没叫
此功能对字符串。
这个函数，用htmlspecialchars， 再次 -
该字符串可能有一些东西 在HTML中是指别的。
像一个大括号，方，或者角度 支架意味着什么在HTML中。
>> 所以，如果你打印出来的 屏幕或者如果你只是采取和
打印出你的HTML，这可能 做一些你不希望。
所以用htmlspecialchars越过所有那些 有特殊字符
会议和逃脱他们。
因此，它被打印出来的文字 你想看到的，而不是
搞砸了你的HTML。
我们在标题中所谓的功能。
和很多人忘了 在程序中调用该函数
你在写代码。
>> 因此，举例来说，如果一只股票名称有一个 在它的角括号，你忘了
调用这个函数，这个角度 支架可能已经揭去什么
你的HTML的样子。
但调用这个函数将难逃 该所以实际打印出来作为一个
尖括号并不会抛出 关闭你的HTML代码。
>> 我们已经看到了同样的原因，有时， 在双引号前斜线
printf的线路，因为我们不希望 双引号下来的字符串。
我们想打印出来 输出到屏幕上。
所以，这一切是同样的想法。
这是否回答你的问题？
>> 种类：受众。
>> JASON HIRSCHHORN：你 有一个跟进？
>> 观众：我猜的SQL注入 攻击都有做呢？
我不知道如何 这两者是相关的。
为什么你会做specialChars中？
>> JASON HIRSCHHORN：好的，那么在SQL 当你注入注入攻击
一些恶意的字符串到别人的 程序，他们只是把它和运行
用字符串的SQL查询 你给了他们。
正如你所看到这儿，那 可能是有问题的。
所以你防止对的方法是 你把自己的字符串，他们给
你 - 那么这个字符串就在这里 -
你消毒了。
你逃避所有的事情， 是潜在的问题。
所以，你不理解他们的东西 这意味着什么。
>> 以及与一个例子 HTML是这个功能。
所以它在这里同样的想法。
而我只是向您展示其他 当你已经实例
以前见过这样的想法。
付印前逃逸用户输入 它的屏幕还是把它
里面的SQL语句。
>> 因此，在这种情况下，用户：观众 是搞乱与编程。
>> JASON HIRSCHHORN：是的。
与所有这些安全攻击， 这总是一般的用户，或
一个人，正试图一塌糊涂 与你的程序员。
而这些办法可以 防止对他们。
>> 观众：所以，我有一个问题 关于杂凑函数。
在测验1自2011年，有两个 关于片面哈希值的问题。
我只是想知道 这是什么意思。
>> JASON HIRSCHHORN：OK，这测验？
2011？
>> 观众：是啊。
>> 观众：测验1？
>> 观众：[听不清]。
这就像一个散列密码。
这不是把事情 -
>> JASON HIRSCHHORN：什么页面呢？
>> 观众：我认为这是 9或10，或两者。
>> JASON HIRSCHHORN：好吧， 继续前进，柯特。
你可以回答，而我们期待。
>> 观众：我认为这是在说 关于散列密码。
象，当有人输入密码， 你把它变成一个加密的东西。
这是密码散列，这是 从散列函数不同的是
把东西放到一个哈希表。
>> JASON HIRSCHHORN：让我们来看看。
让我拉他们 给出的答案。
然后我们将通过它走。
>> 所以简略的给了一个很好的例子 一个单向散列。
当我们以前看到这一点，我们 取密码并开启 -
请记住，在p将7，有人可能 有一个密码，这只是密码，
但后来它被加密成 一些很长的事情。
单向散列意味着它是非常容易 从一条路可以走其他的，但
它很难从去 另一种方式回来。
>> 所以你知道，当你检查 人的密码的问题
设置7，你会拿自己 -
因此，举例来说，说他们想 更改他们的密码，你问他们
他们的旧密码。
你把自己的旧密码。
你加密了。
然后比较了两种加密 而不是unencrypting原
之一，因为它是真正 难走那条路。
是啊。
>> 观众：如何深入我们不 的telnet理解必须是？
>> JASON HIRSCHHORN：如果有人提到 在简短的演讲，只是一个短暂的
理解。
再次，回到答案 为AVI的问题 -
在更多的事情上来，就越有可能 它是你必须要超
熟悉他们。
如果他们来了才在演讲中， 这只是一个地方。
但是，如果他们拿出在讲座中，段， 和问题设置，那么你
大概得超 熟悉他们。
>> 所以，我有一个问题，从 早期有关 -
IS是2010年秋季 -
测验1，让我们拉起 -
这个问题在栈和队列， 我们确实花了时间的公平一点点
讲座中谈到，即使 虽然我们并没有真正
曾经击中了它的部分。
所以这个问题是给你一个系列 的命令，并要求你什么
被印刷在这种情况下。
所以这是一个完全合理的问题 可能被问的你
家伙，然后你们应该 能够回答它。
>> 那么，为什么你不看它30 秒，然后如果有人想
建议答案给我， 然后我们将通过它走。
好吧，谁拥有一个答案 问题27？
是啊。
>> 观众：它是1，2，3，3？
>> JASON HIRSCHHORN：这是正确的。
图27是1，2，3，3。
所以，让我们来看看我们是如何走到这一点。
>> 首先，我们要说，如果s 队列中的，得到印？
所以q是先入先出。
之前我们已经看到了。
我们看到的人的图片 在苹果等待
商店买一些产品。
在是第一人 第一批人出来。
在队列中的第一件事情 是第一个出来的东西。
>> 所以，如果我们把东西放到一个队列中， 你推了1，那么我们弹出1。
流行只是意味着冒了出来。
在这种情况下，只取出来的东西。
我们拿出第一 的事情，这是一个1。
所以我们把我们的事情 打印下来在这里。
这不再是我们的队列中。
>> 然后我们推a 2和a 3，和 我们流行过的第一件事。
再次，因为它是一个队列。
所以，我们得到了一个2，那么我们就把另一 3，再次调用pop。
我们的3是第一。
>> 然后我们有一大堆的 其他的东西，调用pop。
但同样，因为这是一个队列， 先入先出。
我们拿出的第一件事情 这是以往任何时候都放进去。
这是我们的3。
并且，在这种情况下，我们也不用担心 所有其他的事情。
所以这是，如果这是一个队列。
关于队列的任何问题吗？
>> 堆栈的不同。
什么是我们拥有的缩写 对于理解一叠？
>> 观众：后进先出。
>> JASON HIRSCHHORN：后进先出法，我想。
后进先出。
因此，我们看到一个栈的实例 在一个食堂托盘。
无论是托盘顶部 捡起。
然后，如果新来的托盘 中，他们得到放在上面。
然后无论是在 顶部捡起。
因此，那些在底部托盘威力 在那里呆上一段时间。
>> 在这种情况下，同样，我们将 得出了这一点。
我们推进的，所以一 是排在第一位。
而我们弹出的东西了。
还有的只有一件事在那里， 所以我们移动1到这里。
然后，我们把2和3 我们流行的东西了。
>> 但同样，因为这是一个队列 -
或者这是一个堆栈，而 -
我们采取一切是最后一次。
不管是在最后出来先。
和3是最后一次。
所以我们把3出现了下滑，那么 我们把另外3我们
再弹出的东西。
最后，我们将在4，5， 6，和7，在这里我们弹出。
并且因为它是一个栈，我们采取 无论是放在最后的，写
下来这里。
因此，我们最终以1，3，3，7。
没有任何人有任何的问题 堆栈或队列，或这个例子吗？
>> 确定。
让我们回到主题列表中。
不是这样的，这样一来。
还有什么其他的问题人们有哪些？
>> 观众：我不知道有多么重要 这是，但我感到困惑的
不同类型之间的差别 语言，如标记，编译，
解释。
>> JASON HIRSCHHORN：这是 一个很好的问题。
我觉得这是比较重要， 让我们赶紧去了吧。
我们已经看到了很大的语言至今都 C，PHP和JavaScript，在条款
的编程语言。
HTML，正如你所说，是不是 一种编程语言。
这是一种标记语言。
然后我们有CSS，这也是 不是一种编程语言。
>> 我们也看到SQL中，这是不 一种编程语言要么。
所以SQL允许你写 查询一个数据库。
HTML是一种标记语言。
它定义了事物是如何构成的。
和CSS可以让你的风格的东西。
这可能是在多大程度上为你 需要了解这三个。
但更有趣的数字 输出C，PHP之间的差异，
和JavaScript。
>> 因此，一个最大的不同， 正如你所说，是他们如何是
编译，或任何 相当于是。
所以C编译。
我们将始终运行一个编译器。
然后在那里是你的错误 当您运行C编译器？
它在哪里告诉你 代码中的错误？
你怎么知道有一个 在C语言代码中的错误？
>> 观众：这表明你 在终端中。
>> JASON HIRSCHHORN：这表明你在 终端为你编译。
如果有错误，它 实际上不会编译它。
所以，你知道，有右的错误 走，时间提前，然后再
即使运行代码。
>> 当然，您可能会遇到你的代码， 得到一个段错误，但那是
可能是因为你没有 一些愚蠢的逻辑的事情。
但随着技术的代码 所有正确的，可以运行。
所以C代码被编译的时间提前。
怎么样的PHP代码？
在哪里在你的PHP代码中的错误？
你怎么知道你有错误 在你的PHP代码？
>> 观众：运行时间？
>> JASON HIRSCHHORN：是啊，当你 将运行它，您将运行
在后面的PHP代码。
然后你会显示一个画面。
你可能会看到一些东西在上面， 但随后你会看到，像一些
橙色，丑表。
它会给你一个行号和 比方说，胡说，胡说，胡说，这东西
没有工作。
>> 所以PHP是一行一行 并在服务器上运行。
然后，结果是 发送给您。
大。
在执行逐行服务器产品线 然后发送给你。
如果有错误，它会发送 你的错误，但你可能有
得到的时间提前一些东西。
所以它的一些可能有工作，但 后来，一些东西可能没有
没有奏效。
>> 怎么样的JavaScript？
你在哪里看到JavaScript错误？
P中设置8，当你得到一个 错误，你是怎么知道的？
会在哪里出现呢？
>> 观众：在控制台中， 在底部。
>> JASON HIRSCHHORN：在 控制台上的底部。
它还会给你 行号，它会
显示在底部。
与未执行的JavaScript 在服务器上。
JavaScript最初被发送到你的电脑， 然后当它是时间来运行
JavaScript中，JavaScript的是 由行上线运行
客户端，就在你身边。
没有服务器，客户端。
>> 同样地，它是 通过线运行线路。
然后当你将得到一个错误， 它会显示在底部。
类似于PHP的，它的一些可能 执行，那么你可能会得到一个
错误以后。
>> 此外，有一点不像PHP的，如果 你得到了一个JavaScript错误 -
说你没有做正确的 对于一个警告框代码 -
你可以继续运行你的程序。
该警告框是行不通的，但 你的程序将被罚款。
只是也许该函数将失败。
>> 因此，有一些最大 在如何将这些术语的区别
语言，或如何编程代码 你写的是实际评估。
也有在其他方面的差异 最大的区别 - 条款
我们已经看到在变量方面 在不同的语言。
所以，有谁能够给我一个差 变量之间
在这三种语言？
是。
>> 观众：在C中，他们 严格的类型。
在另外两个，它们是 松散类型。
>> JASON HIRSCHHORN：与 这是什么意思？
>> 观众：那在C中，你必须声明 该变量的类型时，
你声明的变量， 像interbool或char。
>> JASON HIRSCHHORN：优秀。
在C语言中，我们总是不得不把 一个类型的变量。
我们不能真正混合类型。
你不能做一个整数 加的字符串。
但是，正如我们已经看到的这些其他 语言，你其实可以混合类型，
你从来没有真正得给 什么类型，直到永远。
>> 那么，我们如何知道的事情是变量 在PHP和JavaScript？
>> 观众：在PHP中，他们开始 用一个美元符号。
在JavaScript中，当你声明 他们，你必须有一个酒吧。
>> JASON HIRSCHHORN：对。
所以在PHP中，他们开始 用一个美元符号。
在JavaScript中，他们必须有吧， 虽然有时候他们实际上并不
得有吧。
但是，这是正确的。
>> 所以这是一个很大的区别 之间的变量。
我认为这些都是可能，关闭 顶我的头，两个最大
这之间的差异 三种语言。
但是，是的。
>> 观众：和C变量的作用域 被限制在花括号
当其他的，它只是喜欢， 它死了，如果是在只有一个功能，
但除此之外，it's -
>> JASON HIRSCHHORN：对。
所以范围略有不同。作为 你还记得，大括号定义
变量的范围。
所以，如果有人在里面，如果定义 条件，这是一个内部循环，
该变量只存在在那里。
>> 在JavaScript中，如果一个变量被定义 内部的if条件 -
里面的for循环 - 它会存在 该函数，但它不会存在
以外的功能。
所以范围是一点点更灵活 在JavaScript和PHP。
这回答这个问题？
好了，没有别的问题？
我们可以做四个多分钟 的问题，那么
我们会跳进编码。
>> 观众：我们可以进入阿贾克斯 并说说是什么吗？
>> JASON HIRSCHHORN：交谈后为AVI。
他问这个问题前面。
>> 观众：我的坏。
>> JASON HIRSCHHORN：不用担心。
>> 观众：究竟什么是JSON？
>> JASON HIRSCHHORN：JSON是什么？
什么是你的问题？
>> 观众：刚才真的很快， 之间的差
在PHP打印和回声。
>> JASON HIRSCHHORN：你为什么不谷歌 打印和回声之间的区别？
细微的差别。
不是什么大不了的事的。
但你一定要google一下， 而且会给你一个很好的答案。
>> JSON，可能更大的一笔交易。
代表JavaScript对象表示法。
而当我们已经看到的JSON被使用？
当你看到 -
为什么你甚至不知道这个词的JSON？
当你看过了吗？
>> 观众：当我们得到 股票行情融资。
>> JASON HIRSCHHORN：所以你看到 当你获得了
股票行情融资。
又为什么你看到了吗？
>> 观众：当我们检索 的所有信息，
排在该格式。
>> JASON HIRSCHHORN：所以你会得到 -
是的。
来吧。
>> 观众：[听不清]的信息 出的对象的？
>> JASON HIRSCHHORN：无论那些 放在一起就是答案
我们正在寻找。
你想要的信息 这另一个网页。
而你希望，当你 获取这些信息，这将是
在某些类型的呈现给大家 标准化的格式。
>> 每个人都可能是熟悉 用逗号分隔的值。
您可以导出为Excel电子表格或 任何类型的电子表格作为一个列表
逗号分隔值。
和逗号分隔的所有 在不同的领域。
JavaScript对象符号 -
JSON -
是另一种类型的标准化的 物联网布局。
这就是通常我们如何检索 从我们的Ajax查询的信息。
>> 因此，在这种情况下，我们得到了它 从雅虎网站。
他们返回的东西 我们在一个JSON对象。
然后，我们知道，因为它是 一个标准，它是什么
将会是什么样。
因此，我们可以通过遍历数组 这是退还给我们，数组
返回到我们的对象。
>> 我们可能需要知道密钥， 但他们通常给你
在该网站的文件时， 你想拿几个JSON
标记他们。
同样，你可以JSON 编码的对象。
所以这是一个函数的JSON 强调编码。
所以你可以采取一个对象， 你已经创建，JSON编码它，
它传递的东西 否则，如果你想。
和JSON解码也存在 类似的目的，或用于
相反的目的。
>> 观众：我们是否需要知道编码 哈希表和尝试？
还是我们只是需要理解 他们是如何使用的，概念上？
>> JASON HIRSCHHORN：那么，举起你的手 如果你没有对p哈希表中设置4
带有链接列表。
或p设置5。
所以这是绝大多数人。
p将5，6，谁知道。
很久很久以前。
>> 所以，你绝大多数做 哈希表与链接列表。
而且因为这可能是更 常用的方法，因为我们花了
大量的时间做链接列表和哈希 表，你也许应该
非常熟悉如何编写代码 哈希表和链接列表。
>> 如果你觉得回到了这个问题 设置，它是不是真的
硬如您预期。
并有少了很多 比你预期的代码。
我会说你应该知道如何 编写一个哈希表或链接列表。
这并不是说你会问， 不一定，但你应该
当然知道。
>> 另外，如果你去翻过去的测验， 已经有很多
关于编写功能上的问题 链接列表或双向链表。
这似乎想出 每一年。
右侧插入一个链接列表，右边 从链表中删除，用鼠标右键插入
对于一个双向链表，等等。
所以，我觉得挺舒服的 说你应该知道这一点。
>> 对于尝试，我会说你应该 当然知道它是如何工作的，也许
给一些伪代码如何 它的代码，并设置它。
但它不会是最糟糕的事情 世界上，如果你不知道如何
它在C代码这将是巨大的，如果你 知道如何编写代码在C，但我认为
可能是伪代码试试看会 是你最需要的
要知道一试。
>> 观众：附加题？
>> JASON HIRSCHHORN：而且用相同的，如果我们 进入二叉搜索树，你可能
需要 - 你已经看到在过去， 我们已经做了很多 - 你知道如何
二叉搜索树的作品。
你或许应该能够 设置一个伪代码。
但由于绝大多数人 没有这样做的问题
集，我会说这是不太可能 重要的是你知道如何编写代码
并成立了这样一棵树。
>> 还有没有其他问题？
另外，我们可以在整个问他们 因为我们经历了一些问题。
好了，我们要继续前进。
跳过该幻灯片现在。
>> 发言的树，也就是第一 问题我已经为你们。
因为这是一个问题。
我会说这是极有可能你会 得到这样一个问题，在您的测验
要求您编写一些类型的插入， 删除，查找，一类
数据结构我们已经看到了。
>> 需要达到的每一年，我们花了 这种大量的时间下半年
学期要对这些数据类型。
所以现在，我已经定义了一个节点 在二叉搜索树。
而我希望你做的是给定的 启动一个二叉搜索树
在这个节点星级根，完成 执行下面的功能，
这恰好是一个查找功能。
并有和没有递归做到这一点。
>> 所以，我希望你写两个函数。
一个用递归，一个人​​在做这个 这样做并没有递归。
也不要假设 根将成为非null。
因此，我们正在寻找我的整数 树开始在根，我们需要
递归写这 和迭代。
是啊。
>> 观众：所以，你要我们返回true 如果我们发现，假如果我们
并不觉得。
>> JASON HIRSCHHORN：你怎么知道的？
你是怎么知道的？
>> 观众：我是问第一次，但我 假设，因为它说，在布尔
该函数的开头。
>> JASON HIRSCHHORN：对。
它说BOOL，所以我什至都不需要 告诉你，我希望你能返回
因为它说在那里。
但是，这是正确的。
返回，真或假。
>> 在开始之前，我会建议， 如果您不熟悉
二叉搜索树，快速绘制 它的照片，让您的
的理解，正确的。
写作时，也将帮助您 您的代码并检查它。
同样，你也没有那么多 时间上的测验，做所有的事情
我们要求你这样做。
所以写的伪代码 是非常有帮助的。
>> 而我们一般提供有关 -
如果伪代码是完全 正确的，这是
通常50％的问题。
所以它不是一个硬性规定，但如果 你只写伪代码，它的
正确的，它通​​常50％。
所以我总是建议 -
如果你时间紧迫，或者即使 你只是想弄明白 -
开始的伪代码。
最后，如​​果你能写这 所有在C中，这将是非常美妙的。
>> 因此，让我们3分钟 在这方面努力的程序。
然后我们将要编写 伪代码，它只是一次，然后
我们要递归编写它 然后反复。
>> 如果您有任何疑问，请随时 免费举起你的手。
快乐的四处走动，并回答他们 在我们开始之前为一组。
>> 让我们重新开始，而且我们要 伪代码的递归版本
这一点，那么我们将对其进行编码。
因此，一个递归函数 需要两件事情。
这可能是一个问题， 你可能会问。
需要两件事情。
谁可以提高他们的手，告诉我 什么两样东西递归
函数需要？
根据定义它有两件事情。
什么是这两件事情？
新的手。
是的，奥尔登。
>> 观众：所以我不能完全肯定，如果 这是术语，但是 -
>> JASON HIRSCHHORN：我很高兴 你养你的手。
>> 观众：它需要一个基础的情况下， 并且它需要一个递归步骤。
>> JASON HIRSCHHORN：完美。
它需要一个基本情况和 一个递归步骤。
那么什么是我们的基本情况吗？
>> 观众：F盘根等于等于null。
对不起，只是伪代码， 如果它为空。
如果root为null。
>> JASON HIRSCHHORN：如果root为null。
这是极好的。
这是我们的基本情况。
这就是我们要去 检查每一个时间。
和基本情况是 你首先要做的。
如果你打的基本情况，你就大功告成了。
>> 现在，我们需要我们的递归调用，而且我 愿意打赌，我们需要一对夫妇
这里的递归调用。
因为它是一棵树，而我们 可以去多种方式。
所以，如果根是空，我们是很好的。
>> 你有什么建议？
而现在我要开始呼叫 对你们，因为我知道你们
都知道这一点。
但安妮，又该 下一行是什么？
如果我们找到了吗？
我们该怎么办？
>> 观众：如果我们找到了吗？
>> JASON HIRSCHHORN：还是什么 应该是 -
给我的伪代码 行，我们发现了它。
>> 观众：如果我等于根我？
>> JASON HIRSCHHORN：与 那么我们该怎么做？
>> 观众：返回true。
>> JASON HIRSCHHORN：太好了。
所以，如果我是我 -
哦，他们两个叫我。
这得到混乱。
但如果我是我返回true。
这可能是下一个 我们应该做的事情。
有道理。
>> OK，现在我们还没有做我们的递归 调用的是，虽然，因为一个递归
呼叫会再次调用该函数。
那么又该下一 伪代码的行会？
安娜。
>> 观众：左边。
>> JASON HIRSCHHORN：要具体，虽然。
这是一个二叉搜索树，还等什么 并检查左侧意味着什么？
>> 观众：那么节点 -
对不起，根。
然后向左箭头。
节点，节点，对不起。
我不会读它正确。
这就是所谓的节点，对不对？
>> JASON HIRSCHHORN：它会被称为根 在该功能，但无论哪种方式。
左侧的 - 是吗？
>> 观众：如果它不等于 我，然后我们将调用
该功能了吗？
>> JASON HIRSCHHORN：这是正确的。
如果它不等于我，我们要去 再次调用该函数。
然而，我们要什么副作用的树 再次调用该函数？
>> 观众：在左侧。
>> JASON HIRSCHHORN：我们并不总是 要调用它的左边，如果它
不等于它。
>> 观众：哦，对不起。
呼吁的权利。
>> JASON HIRSCHHORN：我们想知道 具体而言，虽然 - 还记得，在一个
二叉搜索树，一切 左手侧越小。
一切的权利 手侧更大。
所以它只是不 - 是啊，去吧。
>> 观众：如果它的不到我，然后 -
如果它是在左边 -
>> JASON HIRSCHHORN：所以，如果 ri为小于 -
因此，如果我们数小于我， 我们想去什么副作用？
>> 观众：我们想去 向右侧。
>> JASON HIRSCHHORN：我们想要去 -
让我画一个快速的树。
如果这是5，这将是3。
因此，如果ri为小于5，什么 一边做我们想要去？
>> 观众：对不起，什么？
>> JASON HIRSCHHORN：我们的电话号码是 小于我们的数
现在在看。
>> 观众：哦，那我们要 去的左侧。
是啊。
抱歉。
>> JASON HIRSCHHORN：没错。
无后顾之忧。
在二叉搜索树，一切 下是到左边，
更大的是在右边。
因此，如果我们的数目小于 我们正在检查我 -
因为你在看 节点，它有一个i -
那么你想要去到左边。
>> 这是一个轻松的一年。
这是它的伪代码的其他线 我们需要写？
卡洛斯？
>> 观众：同样的事情，你只需切换 它以一个大于号
和去的权利。
>> JASON HIRSCHHORN：你能 说这一次吗？
>> 观众：如果我们的数大于 比我去的权利。
>> JASON HIRSCHHORN：优秀 就业上的伪代码。
让我们在真正的代码做到这一点。
再次，这将伪代码 可能会得到你的，因为它是
正确的，50％在这个问题上。
但这个伪也意味着1 一，从本质上讲，成代码。
>> 因此，让我们在C谁能给做到这一点 我的第一行代码？
其实，第一次，以前我做的 这一点，让我拉过来 -
>> 观众：我有一个问题。
你为什么要缩进 行我给你？
>> JASON HIRSCHHORN：因为 我不能写。
我不知道。
你说得对。
该行应该在那里。
>> 好了，这里是我们的函数。
让我拉过来，也， 我们定义一个节点。
如果我们没有发生什么 写的typedef？
有谁知道？
>> 观众：它不会编译。
>> JASON HIRSCHHORN：它会 编译，是的。
>> 观众：难道只是声明了一个 实例，而不是使之成为一个新的
键入您可以声明多个 的实例？
>> JASON HIRSCHHORN：所以它不会 知道 - 它不会
只是声明了一个类型。
你仍然可以做出很多节点。
>> 观众：但是难道我们要 每次写结构节点？
>> JASON HIRSCHHORN：这是正确的。
你必须编写结构节点 每一次，而不是仅仅节点。
但用typedef，你可以只 写节点每一次。
好了，谁没有给出 - 是啊，Avica。
>> 观众：如果root等于等于 空，返回false。
>> JASON HIRSCHHORN：大和 这是我们的基本情况。
下一行代码。
谁没有给别人 我的代码行了吗？
是啊。
>> 观众：根箭头我 等于等于i。
然后返回true。
>> JASON HIRSCHHORN：太好了。
下一行？
是啊。
别人？
然后你可以去下一个。
>> 观众：否则，如果根箭头 i小于我返回
函数调用查找根源 -
>> JASON HIRSCHHORN：对不起。
>> 观众：返回找到根 指向左侧逗号我。
>> JASON HIRSCHHORN：所以，如果ri为更大 比树的东西，我们要
去左边？
>> 观众：不，我有这样的切换。
>> JASON HIRSCHHORN：哪一个？
>> 观众：没有，是的。
我有一个小于号那里。
>> JASON HIRSCHHORN：对，如果ri为 不到什么是根 -
我们当前的根 - 那么我们 想要去到左边。
什么是最后一行，你呢？
>> 观众：基本上同样的事情， 除了切换大于或
等于小于和左到右。
>> JASON HIRSCHHORN：优秀。
没有任何人有任何疑问， 这件事？
因此，一些其他的东西，会 已经正确的是
可能是 - ltiff。
猜测，在技术上，没有这些 真的还需要，ltiff。
>> 此外，有可能只 一个案件​​到这里。
所以这可能是你最后一种情况。
你甚至不需要说 - ltiff。
但可能好写 它是明确的。
是啊。
>> 观众：所以你不认为测验 - 如果我们的错误，例如，
在语法 -
小语法错误 -
那怎么得到采取的测验？
>> JASON HIRSCHHORN：一般的测验， 小的语法错误或小
风格的错误不会失去你点。
所以，如果你忘了一个分号 在这里，这将是确定。
如果您忘记关闭这个括号， 这将是确定。
>> 这改变了巨大的语法错误 你的代码的功能意义
戏剧性的是，你可能会得到 起飞的点。
或一般，只是你分级 是否不是你的
代码的功能，甚至 -
不是它的设计这么多， 而不是它的风格。
>> 现在，让我们编写一个迭代 版本发现的。
因此，这将是相当类似的，但 当然，还有将要
一些关键的差别。
然而，我们的伪代码 大概可以走 -
我们仍然可以采取一系的 伪代码，弄清了
线是在这种情况下。
>> 因此，在一个迭代版本，什么 你认为，朱莉娅，应
在第一线？
>> 观众：同样，在迭代布尔， 您需要建立一个for循环，对不对？
>> JASON HIRSCHHORN：确定。
>> 观众：那么像，K，对于x 等于0时，x是小于我。
或无，x是小于 树的大小。
>> JASON HIRSCHHORN：树。
所以我们真的不知道的大小 树，我们真的不知道
多少次，我们可以走了，有啥 不同类型的循环，它可能是
在这种情况下更好？
>> 观众：如果别的吗？
>> JASON HIRSCHHORN：如果其他人 不能为一个循环。
那么什么是循环类型，我们可以只 去，直到某些情况下得到满足？
什么是唯一的其他类型的循环 C语言除了for循环？
>> 观众：虽然。
>> JASON HIRSCHHORN：虽然，没错。
在while循环中，不 需要知道如何 -
while循环和for循环可以做 同样的事情，但美好的东西
关于while循环是我们不需要 要知道有多大我们的树。
因此，我们打算去，直到什么？
>> 观众：直到它等于 的大小 -
>> JASON HIRSCHHORN：嗯，这是非常 类似我们的递归情况。
所以 -
>> 观众：虽然根 我不等于我。
>> JASON HIRSCHHORN：这是真的很近。
而根I -
让我们来试试吧。
我不认为[听不清]
其中root我不等于我。
我们可能需要在一点点改变它 位，但听起来就像是相当
好，现在。
因此，我们将做到这一点。
>> 此外，请记住，我们不能假设 每个问题。
你不假设 根将成为非null。
那么你觉得很 我们应该做的第一件事是什么？
>> 观众：刚刚做同样的 和以前一样的事情。
如果根等于等号 空，返回false。
>> JASON HIRSCHHORN：太好了。
因此它可以为null。
因此，我们要摆脱 它的时候了。
然后我们要去检查，如果 根我不等于我。
所以，说我们正在寻找在这棵树 3，根我不等于我，现在
我们在我们的while循环。
我们究竟想干什么？
再次，这将是相当 类似于我们的递归版本。
是啊。
>> 观众：所以你想要遍历，或 不断下降的树，只要
根不等于空。
>> JASON HIRSCHHORN：只要 根不等于空？
>> 观众：根破折号我 不等于空。
只是根，是啊。
作为一个长期的根源是 不等于空。
>> JASON HIRSCHHORN：所以，你想要 要改变这种成根
不等于空？
>> 观众：是啊。
>> 观众：我们可以结合 这些，对不对？
我们不需要的，如果，最初。
>> JASON HIRSCHHORN：OK，所以如果我们鸵鸟政策 -
如果我们结合它们，所以我们要做的 而根不等于空，
如果根恰好是在空 开始，我们怎么办下来吗？
>> 观众：返回false。
>> JASON HIRSCHHORN：太好了。
因此，两种方式可能 会工作。
这是一种不同的方式， 而这个结合了。
但同样，如果你没有任何办法，我们 不打算脱下设计
点上的测验。
但这个看起来不错。
>> 因此，尽管根不等于 空，什么是第一
的事情，我们要检查？
别人？
空，什么是第一件事情？
>> 观众：如果RI小于 -
哦，我想，如果我们已经 发现它的根。
因此，如果根箭头i是等于i -
>> JASON HIRSCHHORN：对不起？
>> 观众：如果根箭头 i等于等于I -
>> JASON HIRSCHHORN：我们该怎么办？
>> 观众：返回true。
>> JASON HIRSCHHORN：太好了。
而下一步是什么？
杰夫，什么是下一行代码？
>> 观众：如果i小于根箭头 i，则根等于根箭头左边。
>> JASON HIRSCHHORN：根等号 根箭离开了。
所以，这可能是最大的 区别就在这里在这个迭代
版本相对于 递归版本。
递归版本，我们 再次调用该函数。
我们将更新时，根 我们所说的新功能。
在这里，我们不调用一个新的函数。
我们只是简单地更新 根此功能。
这是极好的。
什么是代码的最后一行？
是啊，马里奥？
>> 观众：否则等于根 根右侧的箭头。
>> JASON HIRSCHHORN：对不起？
>> 观众：根等号 根右侧的箭头。
>> JASON HIRSCHHORN：你也可以 写这样的事情？
>> 观众：我不知道。
>> JASON HIRSCHHORN：不能。
你不能这样做，加上等号。
好了，这个不错。
为什么我们不这样做 把它清理干净。
这看起来不错，这是可行的。
而我们将要爆发。
>> 如果root左为null或向右根 为null，我们会来这儿。
根将等于空。
我们会打破我们的循环， 我们会返回false。
所以，当我们跳出的 循环中，我们返回false。
>> 再次，在一个while循环是完美的 在这里，因为我们不知道如何
大我们的树。
我们试着写for循环，但我们 意识到你必须弄清楚如何
大的是时间提前。
是啊。
>> 观众：如果这不是一个二进制 搜索树，这将是真正的数学-Y
要反复写，对不对？
一样，如果它是一棵树， 但不一定 -
所以它不是在左边的所有越小， 而右边都较大。
这将是非常困难的 遍历它，对不对？
我们不得不拯救早期是什么 在树回去，
和类似的东西。
>> JASON HIRSCHHORN：如果它不是一个二进制 搜索树，如果它只是一个
树，事情没 整理这样的 -
和我们之前意识到，当安娜 在帮助我们，使
排序的帮助了我们很多 -
我们需要的，是的，永远保存 我们以前。
但有可能是一个很大的 我们在哪里previouslys。
可能有很多父节点的。
>> 可能做到这一点的最好办法就是 是要继续推动东西到一些
类型堆栈或队列。
你将永远不需要编写本 因为这是一个困难的问题。
但你把一些东西到堆栈 或队列，然后弹出他们关闭，
然后评估他们。
>> 然后有一些其他的东西在那里 你实际上是把节点，
然后创建一个，然后 通过搜索。
这可能是做的最好的方式。
好了，关于这个问题的任何问题吗？
>> 观众：这是一个相关的说明。
我们将要比较运行时间 对哈希表，二进制
搜索树，等等？
>> JASON HIRSCHHORN：可能吧。
因此，让我们做到这一点真的很快。
运行时间为哈希表 -
什么样的人？
二叉树？
>> 观众：链接列表。
>> JASON HIRSCHHORN：好，让我们做插入。
什么是插件的大O 在一个哈希表？
什么是假设 你在做什么？
>> 观众：你要插入的 开头的链接列表。
>> JASON HIRSCHHORN：可能第一 假设是不存在冲突。
如果没有冲突，则 插入时间就是其中之一。
如果有冲突，你就 做单独的链接和插入
在链接列表的开头， 然后插入也是恒定的。
>> 如果你正在做一个哈希表，但你 有处理的方法不同
有碰撞，有什么 不同的方法？
什么是一个不同的方法 处理的
在哈希表中的碰撞？
>> 观众：线性规划。
>> JASON HIRSCHHORN：线性规划。
所以，我们要继续寻找 下一个空位。
这不是恒定的插入时间。
你可能不得不通过 整个表，使
可能的n大O。
是啊。
>> 观众：否则只是链接？
>> JASON HIRSCHHORN：我们做了 单独的链接。
这是第一个。
这就是链接列表。
花哨的名字是单独的链接。
它可以是任何类型的列表结构 我们正好在做链接列表。
>> 如此反复，插在一个哈希表 可能是恒定的时间。
关于插入什么 在堆垛机的队列？
>> 观众：是不是恒定的？
>> JASON HIRSCHHORN：这是不变的时间。
你只是推动它。
确定。
插入，请问是什么其他的？
上一试？
什么是插在一个try大O？
>> 观众：长度是恒定的。
最长长度 -
字的长度 要插入。
>> JASON HIRSCHHORN：对不起？
等等，所以我怎么听见了吗？
你说 - 你说什么？
什么是你的答案，马库斯？
>> 观众：这个词的长度 你要插入的字符，
假设它是一个字符尝试。
>> JASON HIRSCHHORN：好了， 字的长度。
我们会做一个假设，即 它的字符的字符串。
你说不同的东西，虽然。
你说的最长的单词的长度。
>> 观众：这只是常数，对不对？
>> JASON HIRSCHHORN：为什么会 它是恒定的？
>> 观众：就像，如果你使用大O 符号，那么它不是基于变化
对事物的数 已经在尝试。
>> JASON HIRSCHHORN：所以我们 说它是常量时间。
它是恒定的插入，并 那是因为这样的想法 -
说我们有一个字，就是45， 或一个词，就是60，那
有一个恒定的数量。
它只会被插入 在常数时间。
>> 但在实践中，它不会是， 显然，发生在一毫秒内
例如。
但我们会说大O是 不断的尝试。
这就是它的一个 最大的优点。
>> 怎么样插入一个链接列表？
只需一个通用的，排序的链接列表？
是啊。
>> 观众：我有一个问题。
在测试中，他们会不断问我们的 插入时间这四个步骤，
还是什么？
还是只是 -
当你说的插入时间为一， 这只是意味着恒定的时间？
>> JASON HIRSCHHORN：是啊，他们会 总是问，是它的n大O？
日志的n大O？
Ñ​​平方不变。
这些都是真正的唯一 那些你需要知道的。
什么插入到 排序的链接列表？
>> 观众：我有一个问题 -
一个问题 -
>> JASON HIRSCHHORN：答案是什么 对这个问题有关系吗？
>> 观众：等等，你问什么？
>> JASON HIRSCHHORN：什么是大O 插入排序的链接列表？
>> 观众：一？
无等待，无等待，正。
>> JASON HIRSCHHORN：N.除了 链接列表。
什么是你的问题？
>> 观众：所以你会写 Øk或邻1对的 -
>> JASON HIRSCHHORN：哦。
我会写邻1，大概。
还有另外一个数据结构 这将是良好的。
树，二叉搜索树。
什么是插入在 二叉查找树？
>> 观众：登录。
>> JASON HIRSCHHORN：那么，什么是最糟糕的 情况二叉搜索树？
因此，如果我们碰巧从5开始，每 数大于5，则
我们已经有了5，7，9，11，等等。
在这种情况下，它基本上只是一个链接 列表，我们需要插入所有
的方式在末端。
所以它的n个大O。
>> 这可能是我们最糟糕的情况 在二叉搜索树。
很明显，你永远不会建造 与5中的一个二分搜索树
中间，知道5将 是最低的数字。
但它可能是，如果你 从头开始。
这之前的任何问题，我 移动到另一个问题？
这是一个很好的问题。
我想知道大O -
>> 观众：关于搜索什么 这四个？
>> JASON HIRSCHHORN：当然我们 没有搜索和排序。
我们做了所有这些算法，对吧。
等待，是测验1？
是盖 -
你已经有 问题在测验1？
二进制搜索的大O运行时， 插入排序，冒泡排序？
>> 观众：是啊。
>> JASON HIRSCHHORN：如果您有这样的 在测验0的问题，可能你不会
得到测验1完全相同的问题。
可能是还是不错的知道这些。
你应该希望知道的GH了。
>> 但其他数运行时间 可能是很好的了解。
未涉及的测验0的东西。
像所有的这些运算符的 这些抽象数据类型。
>> 好吧，让我们继续前进。
这应该是相当快的。
这是一种新的语言，我们没有 其实在编码之前。
这是一个问题，问 在PHP代码。
因此，考虑下面的PHP数组。
写PHP和/或HTML代码，使得它 输出与TFS一个两列的表格
名称和房屋。
>> 你从来没有这样做过， 此特定问题。
但是，这应该是非常熟悉的 你的问题确实设置7。
所以，我愿意打赌你会 问到代码的东西在PHP中
非常类似于您 在问题没有设定7。
>> 首先，数组是不是特定的。
什么数组类型是什么？
>> 观众：会意字。
>> JASON HIRSCHHORN：这是 一个关联数组。
和什么之间的区别 关联数组和对象？
>> 观众：一个对象数组的索引 整数和一个关联数组
是字符串的索引， 或者类似的东西。
>> JASON HIRSCHHORN：这么一个数组 对象将有指标
整数，但一个对象的字段。
它也有类似的那些字段名称 名称，门牌，学生。
你有一个想法？
>> 观众：嗯，联想 数组是PHP的，对不对？
和对象是在JavaScript？
>> JASON HIRSCHHORN：说实话，有没有 两者之间真正的区别。
两者都有字符串作为密钥，并能 基本上有什么作为值。
不同的语言呼叫一个 事情关联数组，
一件事情的对象。
所以说实话，有没有真正的 差异，但有一些肯定
语法差异 两者之间。
是啊。
>> 观众：那么，对象也根据编码 油烟机作为一个哈希表，然后呢？
>> JASON HIRSCHHORN：你这是什么 意思是，引擎盖下的编码？
>> 观众：我们被告知，联想 阵列在技术上是一个
哈希表。
那么，对象也从技术上 哈希表？
>> JASON HIRSCHHORN：我不会 要回答这个问题。
我会尽快给你这一点。
但我不认为任何一个 那些这样。
但是，以任何方式，关联数组和 对象，通常，人们用这些
术语可以互换。
在这种情况下，凉爽的一部分 是您可以使用键。
字符串作为键，而不是 只是简单的数字。
>> 所以我一直在谈论 这一段时间。
我们希望，有些人有 得到就这样开始了。
我们将编写一些PHP和HTML 代码，这样，我们得到一个两列
表与TFS名和房屋。
>> 好吧，我也想一个标题 排此表上。
所以我要得到直 到这一点。
我们要文件，新建， 而且我们要 -
>> 确定。
我该如何开始一个表？
什么是标签，迈克尔， 启动一个表？
>> 对象：表。
>> JASON HIRSCHHORN：表。
如果我打开一个标签，是什么 还有什么我需要什么？
>> 观众：头部？
或者，我猜，类。
>> JASON HIRSCHHORN：那么，对不起。
假定我们已经写 doctab，HTML，所有的东西。
但是，如果我打开这个表标签，是什么 还有什么我需要写？
为验证HTML吗？
>> 观众：关闭它。
>> JASON HIRSCHHORN：关闭标签。
我怎样写一个特写table标签？
>> 观众：点斜线表。
>> JASON HIRSCHHORN：斜线表，太好了。
可能是有道理写两个 那些因为一起
你必须做到这一点。
好吧，如果我想要一个标题行，怎么办 我写的标题行的标题？
>> 观众：是不是少 超过10小时密切 -
TR，是的。
>> JASON HIRSCHHORN：TR？
>> 观众：那么同样的事情， 斜线，是啊。
>> JASON HIRSCHHORN：确定， 给我两列。
>> 观众：T D？
>> JASON HIRSCHHORN：确定。
我想两列。
这是否能给我两列？
多少列，这是？
之一。
因此，让我们复制并粘贴此。
>> 因此，实际上，在测验，所有这些代码 我们已经写了这么远了
其实给你。
但你应该还 知道怎么写呢。
是啊。
>> 观众：你的房子 两者之间。
>> JASON HIRSCHHORN：繁荣。
它应该就在那里，对不对？
良好的通话。
所以，再一次，所有这些代码实际上是 给你实际的测验。
但它的乐趣，写它，你 应该知道怎么写呢。
因此，这就是你需要 开始你的代码。
什么是我们需要在这里写？
>> 对不起，我需要改变 该文件的名称。
因此，我们将其保存在一个。的HTML文件， 没有一个。PHP文件。
这些东西会是什么呢？ 在一个。PHP文件。
所以我们在一个。的HTML文件。
什么是第一件事情 我需要写？
我想提出一些PHP 在HTML代码。
>> 观众：PHP的，像另一个胡萝卜 和问号PHP的，对不对？
>> JASON HIRSCHHORN：太好了。
如何才能结束呢？
>> 观众：用一个问号。
>> JASON HIRSCHHORN：那太好了。
这就是我需要的，如果我想的第一件事 把一些PHP代码在这里。
>> 观众：我想一个PHP 文件可以采取的HTML。
>> JASON HIRSCHHORN：是啊。
一，PHP文件可以采取一些 HTML和显示。
这是我的坏。
我只是试图模仿 这是什么的测验。
>> 好了，对不起你迷惑。
是的，practice.HTML。
现在，我们打算把 一些PHP代码英寸
这是第一行 PHP代码我应该怎么写？
我要通过这个数组 并使其成为一个表。
是啊。
>> 观众：您可以使用 一个的H循环或for循环。
>> JASON HIRSCHHORN：好的，有什么 你要使用？
>> 观众：我会用一个for循环。
对，然后你做的美元符号 i等于0分号美元
签署小于2我。
然后我分号美元 签署加我加。
>> JASON HIRSCHHORN：如何做 你知道使用一个2？
>> 观众：因为有两个 在较大的关联数组
关联数组。
>> JASON HIRSCHHORN：那么大的事情的 没有联系的数组。
最重要的事情只是一个正常的数组。
但你说得对，有 2关联数组
我们的内部更大的数组。
这就是为什么你使用两个。
我觉得不舒服假设 他们是2，有啥办法写
这个没有假设他们是2？
>> 观众：[听不清]？
>> JASON HIRSCHHORN：好的，怎么 你写的吗？
>> 观众：Foreach回美元符号 TFS或像美元符号TF。
>> JASON HIRSCHHORN：OK，所以对于每个 TFS作为TFS，我想，现在
再次，有我的表。
那么，谁可以给我 下一行代码？
>> 观众：打印，然后在 报价，支架TR结束
支架，最终报价。
结束括号，分号。
>> JASON HIRSCHHORN：确定， 什么该怎么办呢？
>> 观众：它会说，新行。
它会放 标记为新行。
>> JASON HIRSCHHORN：对，这个PHP一样 我们前面谈到的 - 这
PHP将被求值，然后 它会打印出该文件
表丝束，然后该 HTML将被评估。
我们只是复制本 HTML我们不得不在这里。
是啊。
>> 观众：[听不清]？
>> JASON HIRSCHHORN：对不起？
就是这里。
2012年秋季。
不要看答案， 让我们来解决它在一起。
所以，我们打印的表行。
所以你可能在 摆动的东西。
什么是下一行 代码，我们需要写？
阿萨姆，给我的下一行代码。
>> 观众：你需要的TF的名字。
TF开括号引号 名左右方括号。
>> JASON HIRSCHHORN：给我他们的名字。
>> 观众：你需要打印。
>> [插VOICES]
>> JASON HIRSCHHORN：OK， 我怎么打印呢？
>> [插VOICES]
>> JASON HIRSCHHORN：我失踪 现在的东西。
我在想什么？
>> 观众：你需要一个美元符号。
>> JASON HIRSCHHORN：什么 什么我失踪？
所有我们到目前为止印刷是TR。
>> 观众：后关闭TR。
>> JASON HIRSCHHORN：因此，我们需要 后关闭TR。
谁看见我们错过了什么 第16行？
是的，安娜。
>> 观众：你需要打开 一个TD和大括号。
>> JASON HIRSCHHORN：在哪里 我们把花括号？
>> 观众：围绕TF名字。
>> JASON HIRSCHHORN：喜欢这个？
>> 观众：是啊。
然后关闭TD。
>> JASON HIRSCHHORN：像这样？
>> 观众：你需要双引号 标记旁边的大括号？
>> JASON HIRSCHHORN：就在这里？
不，你不知道。
所以这是完全正确的。
是啊。
>> 观众：所以这之间的区别 和用点encatenating是，如果
你用点，你必须有 双引号，那么一个点，
然后点 -
>> JASON HIRSCHHORN：正确。
所以你说有一个最终的 的方式写这这样的。
什么是连接运算符 在JavaScript中？
>> 观众：加号。
你忘了把 大括号后面。
>> JASON HIRSCHHORN：太好了。
并且还有一系 代码丢失。
谁可以给我的最后一行 的代码，我们就错过？
>> 观众：刚才完全一样的东西， 刚刚与房子，而不是名称。
大
>> JASON HIRSCHHORN：太好了。
和你的语法是完全正确的 在获得一个关联数组的东西。
因此，在实际测验，你是 实际上放弃了，直到这里。
所以这段代码是给你的。
你不得不写有这些 四行并记住
关闭表标签。
你这家伙居然没 一切和更多。
是啊。
>> 观众：所以这将是功能 如果你只是有相同的，所有的
一个大的打印通话，对吧？
然后就连接在一起 其上，等等？
>> JASON HIRSCHHORN：像这样？
>> 观众：是啊。
它只是不会好看，如果你是 看着它，当你检查
在您的网站元素，对不对？
>> JASON HIRSCHHORN：我同意。
如果我装了这个网页，我会成为 能够看到这个PHP代码，永远不会消失？
>> 观众：号
>> JASON HIRSCHHORN：号
而实际上，我不会。
>> 观众：这是不是HTML，对不对？
所以，你也许可以 -
>> JASON HIRSCHHORN：所以这个PHP将 评估服务器端。
PHP总是被判断服务器端，所以 你永远能看到PHP代码。
>> 观众：但是你能够 看到打印的结果。
>> JASON HIRSCHHORN：对。
而且说实话可能不 把它全部上线。
它可能很好地格式化你， 或者它可能把它放在同一行。
不清楚。
但是，是的，好一点。
>> 观众：怎么会有的 没有文字的高亮
任何PHP的命令？
因为我记得看到这一点。
>> JASON HIRSCHHORN：因为它是一个 。html文件在这里在顶部。
你去那里。
>> 观众：如果我们做了初步的方法 用for循环，正确的，如果我们
要访问TFS，我们会 做TFS支架0支架，然后
[听不清]？
>> JASON HIRSCHHORN：你会 -
所以你说的for循环，你 会做的美元符号TFS支架1
或者我，对吧。
或美元符号我关闭支架 然后括号
双引号，是的。
>> 好的，优秀的。
我们有一个更快的之一。
七分钟，所以我想 走在这一个。
这是另一个例子。
我们现在是一个完全另一种语言。
>> 我们有一些HTML代码。
这是在屏幕上种小，但 我希望你仔细看看它真的
很快，有人可以告诉我， 如果我要载入这个网页，
我会看到什么？
详细说明一切 此网页。
诺亚？
那么我看到了什么？
>> 观众：在代码的前端 谷歌有感觉的文字和
提交按钮。
>> JASON HIRSCHHORN：什么 将按钮说呢？
>> 观众：提交。
哦，搜索。
对不起。
>> JASON HIRSCHHORN：它会说搜索。
请记住，名称。
我们使用什么名称？
此名称属性，有什么 用的？
>> [插VOICES]
>> 观众：这就是它的名字 因为当它被点击？
>> JASON HIRSCHHORN：这可能是。
但是，我们通常看到的 - 为什么 是我们给这个名称的队列？
为什么我们看到了吗？
是啊。
>> 观众：那岂不是成了指数 超级全局变量？
>> JASON HIRSCHHORN：是啊，一般当 这种形式会提交，然后在那里
将这个提交给？
哪一页？
诺亚，哪一页将这个提交给？
>> 观众：我不知道。
>> JASON HIRSCHHORN：在哪里 可能我们能找到它吗？
你在哪里找到什么 页面提交给？
哪一行代码？
>> 观众：表单操作。
>> JASON HIRSCHHORN：没错。
行动。
所以它提交到搜索页面。
反斜杠搜索。
所以这是完全正确的。
用什么方法？
>> 观众：获取。
>> JASON HIRSCHHORN：获取。
没错。
所以我们阅读这一点。
这将是一种形式。
你说得对。
两件事情的形式，的标题 页面和顶部将是谷歌。
>> 因此，这里有两个问题，你应该 能回答这个页面。
如果此HTML住在这个网站， 用户输入错误到这个文本
场就在这里，什么URL将 用户发现自己因
提交表单？
>> 因此，我们有这个权利在这里。
我要回去 此页，虽然。
我会写了第一部分。
大家可以看到在这里？
好了，马里奥，你以为你知道吗？
哪一页？
>> 观众：反斜杠搜索。
>> JASON HIRSCHHORN：我要去 搬到这里了。
OK，反斜线搜索问题 马克Q等于错误。
任何人有不同的建议吗？
是啊。
>> 那么，如何才能得到这个？
好了，我们以前见过这个。
而你想出了这点。
你说的没错，诺亚，该 行动告诉我们什么
页面我们要。
>> 我们也知道用什么方法。
我们正在做的get。
和GET和POST的区别 是，获得显示在URL
及后则没有。
所以，如果我在写帖子就在那里 方法，会有什么不同？
>> 观众：它只是 是斜线搜索。
>> JASON HIRSCHHORN：它会 刚刚被削减搜索。
没有什么比在这里会发生什么。
但因为它是一个得到，网址 显示如下。
首先我们看到了一个问号和 我们看到的名称和值。
说有另外一个文本字段，并 我给它r的名字，我输入一个
值，毛虫。
什么现在这个样子？
我还有一个文本字段，我给一个 r和毛毛虫的值的名称。
>> 观众：酒吧后你就会有 ＆符号毛虫。
>> JASON HIRSCHHORN：这是 没有连字符。
>> 观众：或者只是什么 在和符号。
>> JASON HIRSCHHORN：是啊，没有。
你是对的，我错了。
这就像一克。
>> 对象：卡特彼勒。
r等于毛毛虫，对不起。
>> JASON HIRSCHHORN：有 在那里没有R？
>> 观众：没有，没有。
>> JASON HIRSCHHORN：我们将讨论 关于下课。
这是完全正确的。
所以，是正确的。
然后你可以有很多这样的， 他们将全部串连
连同这一点，。
所以这是完全正确的。
>> 还有一个问题。
画出此HTML的DOM，开始 与文件。
我们可以这样做，在两分钟。
我们将在这里做了。
我将回到这个网页。
OK，我们开始文档。
>> 下一步是什么？
所以，当你通读 -
>> 观众：HTML。
>> JASON HIRSCHHORN：HTML是下一个。
我们将通过标签去标记。
什么是HTML呢？
>> 观众：头。
>> JASON HIRSCHHORN：头。
头后有什么？
>> 观众：标题。
>> JASON HIRSCHHORN：标题。
和标题有谷歌的价值， 但我不会去
写在现在。
好了，哪里的身体去了？
>> 观众：还有脱落的HTML。
>> JASON HIRSCHHORN：没错。
机身自带了这里。
难道大家都明白为什么 是这样的话？
你应该能够计算 这一点，也一样，即使我没有
这个漂亮的缩进。
>> 排序的缩进给它拿走， 但你可以看到，头部标记有
被关闭，这意味着我们可能 不能下去在这里。
我们需要回到多达什么 是头向右前
标签，或未满。
我们甚至用头标记。
>> 并在进入身体的形式。
下形式，有两个输入端。
确定。
这就是我的一切。
测验1是明天。
我很高兴为你们。
这将是一个爆炸。
>> 如果你有 -
>> 观众：[掌声]
>> JASON HIRSCHHORN：哦停下来，停下来。
不过没有关系，我在开玩笑。
如果您有任何疑问，右 节后，我在外面。
如果您有任何疑问，今晚， 随时来电，电子邮件，gchat，
信鸽我。
祝你好运明天。
有一个美好的感恩节假期， 如果我没有看到你在那之前。
我会在感恩节之后见到你 对我们的最终周二
部分党永远。
>> 观众：[听不清]。
>> JASON HIRSCHHORN：太好了。
好吧，我看下你们 一周或两周。
而明天好运。