《编写整洁代码的艺术》

事实上,我认为《Clean Code》《Readable Code Arts》《Refactoring》这三本书共同组成了《编写整洁代码的艺术》。它不仅包括代码在 命名、结构、注释、架构组织 上的clean,还包括程序员面对需求和交流时,如何保持自身代码的整洁和质量。

还有《Design Pattern》也是

代码整洁之道

整洁代码与进度

程序员总是被各种进度压着,但这就是写出糟糕代码的理由吗,不是的。看本书举的例子:

"假设你是位医生,病人请求你在给他做手术时别洗手,因为那会花太多时间,你会照办吗?本该是病人说了算;但医生却绝对应该拒绝遵从。为什么?因为医生比病人更了解疾病和感染的风险。医生如果按照病人说的办,那就是一种不专业的态度。"

"你说:‘不听经理的,我就会被炒鱿鱼’。多半不会,多数经理想要知道实情,即便他们看起来不喜欢实情。多数经理想要好代码,即便他们总是痴缠与进度。他们会奋力卫护进度和需求;那是他们该干的。你则当以同等的热情卫护代码"

对应到游戏领域,我的观点是:

  1. 专业的程序应该分析出需求给代码带来的bad effct,并告知策划实情。程序比策划更专业,更应该对自己的代码负责,而不是默默按策划要求完成然后出问题甩锅给策划!
  2. 及时同步方案,给出自己推荐的更佳方案,三方协同来保证做出最高质量。
  3. 预估人天应以保证代码质量的前提来估,如果不得不破坏质量来赶进度,那么完成之后要及时补锅。

迭代时保持重构

​ "让营地比你来时更干净"

每次check in代码都比check out时整洁,那么代码就不会腐坏。一次清理可能只是改好一个变量名,拆分一个过长函数的小操作,这点也是《refactoring》的重中之重。

​ 这个观点认为新代码不应过度设计,而是在每次修改的过程中持续重构代码,保持代码整洁。持续重构应光明正大的放在项目的进度中,而不该认为是偷偷摸摸修改的设计漏洞。

有意义的命名

这里就总结一下几本书对于命名的经验吧

  • 最好能用命名代替注释,直观的让它易于阅读易于理解。因为阅读代码的时间10倍于写代码的时间
  • 方法用动词,对象用名词。同样的概念要统一命名(有时用专有名词)
  • 命名可以带上 单位/属性/信息,取代注释
  • bool值不要用flag,那是enum

短小精悍的函数

upgrade函数做到了只在一个抽象层级,对于判断升级条件,扣除升级道具是属于下一层抽象层级:

MAX_UPGRADE_LV = 100
UPGRADE_ITEM_ID = 123
UPGRADE_ITEM_NUM = 10
			
def upgrade(self):
	if self.validateUpgrade():
		self._costUpgradeItems()
		self.lv += 1

def validateUpgrade(self):
	if self.lv < MAX_UPGRADE_LV:
		if self.getItemNum(UPGRADE_ITEM_ID) >= UPGRADE_ITEM_NUM:
			return True
	return False

def _costUpgradeItems(self):
	self.delItem(UPGRADE_ITEM_ID, UPGRADE_ITEM_NUM)

编写可读代码的艺术

代码应当易于理解

主要是讲了一些必要性和好代码的衡量

可读性>简洁性

Simple:代码的写法应当使别人理解它所需的时间最小化

注释面向人,代码面向编译器:

把信息装到名字里

选择专业的词

  • get 根据情境,用FetchPage()或者DownloadPage()代替getPage()
  • size() 在树中应该用height()表示高度,numNodes()表示节点数,用memoryBytes()表示内存中所占的空间

Get在互联网开发中显得不专业

找到更有表现力的词

单词更多选择
senddeliver、dispatch、 announce、 distribute、route
findsearch、extract、locate、recover
startlaunch、create、begin、open
makecreate、set up、build、generate、compose、add、new

避免泛泛的名字

  • 在需要实际意义表现时,tmpretvalfoo可以作为名字的一部分,但是不要轻易直接使用。如用tmp_file我们就可以知道这是个临时文件
  • 某些情况使用空泛的名字也有好处,比如说在交换两个变量的时候使用tmp,在循环迭代器中使用ijiter,但是在嵌套的循环中,可以用ci,mi,ui来标明,迭代器名称要更清楚

用具体的名字代替抽象的名字

  • 比如建立和使用一个特殊的本地数据库作为本地日志输出,run_locally这个名字只表达了模糊的操作位置,却无法表示具体的作用,use_local_database就比较合适了

使用前缀或后缀来给名字附带更多信息

【命名就是一个小小的注释】

  • hexId表示了id是16进制的,如果确定是16进制很重要的话
  • delay_ms带单位的值最好附带上单位:
函数参数带单位的参数
start(int delay)delay --> delay_secs
createCache(int size)size --> size_mb
throttleDownload(float limit)limit --> max_kbps
rotate(float angle)angle --> degree_cw
  • 附带其他重要属性:
情形变量名更好的名字
一个"纯文本"格式的代码,需要加密后才能进一步使用passwordplaintext_password
一条用户提供的注释,需要转义之后才能用于显示commentunescaped_comment
已转化为UTF-8格式的html字节htmlhtml_utf8
以"url方式编码"的输入数据datadata_urlenc

名字应该有多长

  • 在小作用域中使用短的名字,相反在大作用域中使用长名字。现代编辑器能方便使你键入长名字
  • 首字母缩略词和单词缩写应该是大家普遍接受和理解的,例如用doc代替document、str代替string。特定项目的缩写就不好了。
  • 丢掉没用的词,ConvertToString可以直接写成toString,这样也没有丢失任何信息

不会误解的名字

  • 关键思想:要仔细审视名字,"这个名字会被别人误解成其他含义吗"
  • 当要定一个值的上线或者下限时,max和min是很好的前缀
  • 推荐用 min 和 max 来表示包含的极限。[min, max]
  • 对于包含的范围,first 和 last 是好的选择。[first, last]
  • 对于排除的范围,begin 和 end 是好的选择。[begin, end)
  • start 和 stop ,则并不适合表示范围。
  • 命名应与使用者的期望相匹配,例如:get*()是个"轻量级访问器",list.size()应该是一个*O(1)*复杂度的操作。countSize/countElements才适合O(n)以上计算的方法
  • 很多单词在用来编程时是多义性的,例如filter、length和limit

bool命名

is, has done, can, should,...able

或者是一些其他表判断的动词,need

  • 最好避免使用反义的词 (例如 disable_ssl )

  • 形容词可以加is也可以不加。比如isYoung、isSimple、isNaive可以直接写成young、simple、naive

  • 但是如果这个形容词有常用的做动词的含义,那就要加is,比如empty这个词可以作动词表示清空的意思,那么表示是否为空就写成isEmpty而不是empty。

  • 不要用flag, flag应该是enum。

代码审美

Key:

  1. 重新安排换行保持一致和紧凑。换行可以让代码更美观,现在的IDE也经常会帮你这么做。

  2. 用方法整理不规则的代码。

  3. 在需要时使用列对齐。注释对齐

列对齐非常美观简洁,而且能一眼看出各行间的不同,以及发现错误 。但是写起来比较麻烦,而且改动时更麻烦。

建议在写完自审时用列对齐,也更容易发现错误。

  1. 选择一个有意义的顺序,始终一致的使用它。 比如重要性,比如字母顺序
  2. 把声明按块组织起来。

就像我在声明Player的Attribute、Anim、State等变量时一样,代码分段会清晰很多

  1. 团队一致的风格比个人风格更重要

该写什么样的注释

Key:

注释的目的是尽量帮助读者了解的和作者一样多。

什么不需要注释?

  1. 不要为那些从代码本身就能快速推断的事实写注释

  2. 不要为了注释而注释

IDE要我写注释,我就非得写不可吗?明明没什么注释需要写

  1. 不要为不好的名字加注释->应该把名字改好

什么需要注释?

  1. 加入"导演评论",记录你写代码时重要的想法。这是好注释

  1. 记录对代码有价值的见解,例如:解释代码没法修复的缺陷、代码不整洁的原因
  2. 为代码中的瑕疵写注释,比如有如下几种标记:
标记通畅的意义
TODO:我还没有处理的事情
FIXME:已知的无法运行的代码
HACK:对一个问题不得不采用的比较粗糙的解决方案
XXX:危险!这里有重要的问题
  1. 给常量加注释,需要描述清楚它是什么或者为什么它是这个值的原因,因为以后调整这个变量的人可能需要知道调整的规则。

  2. 站在读者的角度

  • 为什么要这样写的地方,做出解释。(比如为什么不用常规方式实现)
  • 公布可能的陷阱。(比如这个函数可能要执行1分钟才超时)
  • "全局观"注释。为项目中的系统架构而写,帮助他人更好的理解类之间的关系
  • 在一个类或者函数内部编写总结性的注释
  1. 克服"作者心理阻滞":就是懒得写注释
  • 不管心里想什么,先把它写下来(打字快)
  • 读一下这段注释,看看有没有什么可以改进的地方
  • 不断改进

当你经常写注释,你会发现步骤1所产生的注释会越来越好,就越不需要后面两步了

写出言简意赅的注释

Key:

注释应当有很高的信息/空间率。简洁不废话

  1. 让注释保持紧凑。能1行讲明白为什么要写3行废话?

  2. 避免使用不明确的代词(不要用"这个","那个","它"这些模糊不清的代词)。

  3. 润色粗糙的句子,精确地描述函数的行为

  4. 在注释中用精心挑选的输入/输出例子进行说明。在函数行为复杂,描述困难不直观的情况下,可以使用输入输出的例子来直观的表示函数的用途。

  5. 声明代码的意图,而非细节。比如一个倒序循环显示价格的代码,就没必要只强调倒序显示,而应该指出显示的是价格,顺序是从高到低,省去读者思考的过程。

  6. 使用嵌入式注释来描述函数参数。

简化循环和逻辑

把控制流变得易读

关键思想:把条件、循环、以及其他对控制流的改变做的越"自然"越好。让读者不用停下来重读代码。

条件语句

  • 条件语句中比较参数的顺序,有以下指导原则:
比较的左侧比较的右侧
"被问询的"表达式,它的值更倾向于不断变化用来做比较的表达式,它的值更倾向于常量

这是和日常语言习惯是一致的,我们会很自然的说:"如果你的年收入至少是10万"

  • "尤达表示法":在有些语言中(包括C++和C,不包括Java)为了防止if(obj==NULL)被写成if(obj=NULL),出现了if(NULL==obj)这样的写法,但是这样不利于理解,与上一条相悖,现代编译器已经能对if(obj=NULL)给出警告,所以这个写法已经过时了。

  • if/else语句块的顺序:

    • ==首先处理正逻辑而不是负逻辑的情况==。例如,用if(debug)而不是if(!debug)
    • ==先处理掉简单的情况==。这种方式可能还会让if和else在屏幕内都可见
    • ==先处理有趣的或者是可疑的情况==
  • 不要为了减少代码行数而使用三目运算符,它只适用于从两个简单的值中作出选择的情况,例如:

    time_str += (hour >= 12) ? "pm" : "am";
    

因为带有复杂逻辑的三目运算符反而增加了代码的阅读时间

循环

  • 避免do/while循环,它的continue语句会让人迷惑,while循环相对更加易读。实践中,大多数do/while循环都可以写成while循环

从函数提前返回

  • 函数中使用多条return语句是没有问题的
  • 实现函数结尾的清理代码的更为精细的方式
语言清理代码的结构化术语
C++析构函数
Java、Pythontry finally
Pythonwith
C#using
  • goto语句对程序易读性的破坏

嵌套

  • 深层次的嵌套严重影响代码的可读性
  • 嵌套一开始是很简单的,但是后来的改动会加深嵌套
  • 通过提早返回来减少嵌套
  • 减少循环内的嵌套,与提早返回类似的技术是使用continue

代码流程

  • 编程语言和库的结构让代码在"幕后运行",或者让代码难以理解,如:
编程结构高层次程序流程是如何变得不清晰的
线程不清楚什么时间执行什么代码
信号量/中断处理程序有些代码随时有可能执行
异常可能会从多个函数调用中向上冒泡一样地执行
函数指针和匿名函数很难知道到底会执行什么代码,因为在编译时还没有决定
虚方法object.virtualMethod()可能会调用一个未知子类的代码

有时候这很有用,但是还是要减少使用的比例,否则跟踪代码就会像赌博一样。

拆分超长表达式

关键思想:把超长表达式拆分成更容易理解的小块

解释变量

  • 引入一个额外的变量,使之成为一个小一点的子表达式
如 username = line.split(':')[0].strip()

总结变量

  • 用一个很短的名字来代替一大块代码,会更容易管理和思考
如 user_own_document = (request.user.id == document.owner_id)

使用德摩根定理

  • (这样的bool操作已经掌握)分别进行取反、转换与/或,反向操作是提取出"反因子"

不滥用短路操作

  • 短路操作虽然可以很智能的运用在某些场景,使之成为条件控制的效果,但是影响代码的理解
  • 但短路操作在很多情况下也能达到简洁的目的

拆分巨大的语句

  • 复杂的逻辑会产生复杂的表达式,表达式复杂会增加代码的阅读难度,解决它需要转换思维,用更优雅的方式
  • 巨大的语句的拆分需要找到重复的部分,进行简化
  • 有时需要把问题"反向"或者考虑目标的对立面

变量与可读性

主要问题:

  • 变量越多,就越难全部跟踪它们的动向
  • 变量的作用域越大,就需要跟踪它的动向越久
  • 变量改变得越频繁,就越难以跟踪它的当前值

减少不能改进可读性的变量

  • 减少没有价值的临时变量,比如
    • 没有拆分任何复杂的表达式
    • 没有做更多的解释
    • 只用过一次,因此没有压缩任何冗余代码
  • 减少中间结果
  • 减少控制流变量
while(/*condition*/&&!done){
  if(...){
    done = true;
    continue;
  }
}

done就是控制流变量,可以通过更好的运用结构化编程而消除:

while(/*condition*/){
  if(...){
    break;
  }
}

当有多个嵌套的循环时,一个break可能不够,通常的解决方案是把代码挪到一个新方法中

缩小变量的作用域

  • 避免滥用全局变量
  • 让你的代码对尽量少的代码行可见
  • ==把定义往下移,变量定义在使用之前即可==

只写一次的变量更好

  • 那些只设置一次值的变量(或者const、final、常量)使得代码更容易理解

  • 就算不能让变量只写一次,让变量在较少的地方改动仍有帮助

  • 操作一个变量的地方越多,越难确定它的当前值

重新组织代码

抽取不相关的子问题

积极的发现并抽取出不相关的子逻辑

  • 理解某个函数或者代码块高层次的目标
  • 对于每行代码确定它是否为目标而工作
  • 如果有很多代码行在解决 不相关的子问题,将它抽取到独立的函数中

什么是"不相关"的子问题

  • 完全是自包含的,并不知道其他程序是如何使用它的
  • 纯工具的代码,例如操作字符串、使用哈希表以及读/写文件
  • 通用的代码库

优化现有的接口

  • 永远不要安于使用不理想的接口
  • 创建自己的包装函数和隐藏接口的粗陋细节
  • 按需要重塑接口

过犹不及

  • 更多的小函数意味着更多的东西需要关注
  • 不要为了抽取而抽取

代码应当一次只做一件事情

相当于一个函数应该只做一件事情,但是一个函数也可以用空白行区分不同的事情,来达到逻辑上的清晰

列出任务

  • 将所有任务列出来,其中一些任务可以很容易地编程单独的函数(或类)
  • 难点在于准确描述列出的所有的小任务

分割任务

  • 分开解决任务使代码变得更小

把想法变成代码

方法

  • 用自然语言描述程序
  • 用这个描述来帮助你写出更自然的代码

用自然语言说事情

  • "小黄鸭法"解决所遇到的代码问题
  • 如果你不能把问题说明白或者用词语来设计,估计是缺少了什么东西或者什么东西缺少定义

少写代码

  • 重用库或者减少功能,可以节省时间并且让代码库保持精简节约
  • 最好读的代码就是没有代码

不去费时间实现不需要的功能

  • 没用的功能尽管很酷,但会让程序更复杂

质疑和拆分需求

  • 从项目中消除不必要的功能,不要过度设计
  • 重新考虑需求,解决版本最简单的问题,只要完成工作就行

让你的代码库越小,越轻量级越好

  • 创建越多越好的"工具"以减少重复代码
  • 减少无用代码或者没有用的功能
  • 是项目中的子项目解耦
  • 保持代码的轻量级

保持对标准库的API的熟悉,尽量使用标准库解决现实问题

测试与可读性

在测试代码中,可读性仍然很重要。如果测试的可读性很好,其结果是他们也会变得很容易写,因此大家会写更多的测试。并且,如果你把事实代码设计得容易测试,代码设计会变得更好。以下是如何改进测试的具体要点:

  • 每个测试的最高一次应该越简明越好。最好每个测试的输入/输出可以用一行代码描述;
  • 如果测试失败了,它所发出的错误消息应该能让你容易跟踪并修正这个bug;
  • 使用最简单的并且能够完整运用代码的测试输入;
  • 给测试函数取一个有完整描述性的名字,以使每个测试所测到的东西很明确。不要用Test1(),而要像Test___这样的名字。

最重要的是,要使它易于改动和增加新的测试。

测试驱动开发(TDD):是一种可选的编程风格,在写真实代码之前就写出测试。

%E4%BA%8B%E5%AE%9E%E4%B8%8A%EF%BC%8C%E6%88%91%E8%AE%A4%E4%B8%BA%E3%80%8AClean%20Code%E3%80%8B%E3%80%8AReadable%20Code%20Arts%E3%80%8B%E3%80%8ARefactoring%E3%80%8B%E8%BF%99%E4%B8%89%E6%9C%AC%E4%B9%A6%E5%85%B1%E5%90%8C%E7%BB%84%E6%88%90%E4%BA%86%E3%80%8A%E7%BC%96%E5%86%99%E6%95%B4%E6%B4%81%E4%BB%A3%E7%A0%81%E7%9A%84%E8%89%BA%E6%9C%AF%E3%80%8B%E3%80%82%E5%AE%83%E4%B8%8D%E4%BB%85%E5%8C%85%E6%8B%AC%E4%BB%A3%E7%A0%81%E5%9C%A8%20%E5%91%BD%E5%90%8D%E3%80%81%E7%BB%93%E6%9E%84%E3%80%81%E6%B3%A8%E9%87%8A%E3%80%81%E6%9E%B6%E6%9E%84%E7%BB%84%E7%BB%87%20%E4%B8%8A%E7%9A%84clean%EF%BC%8C%E8%BF%98%E5%8C%85%E6%8B%AC%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E5%AF%B9%E9%9C%80%E6%B1%82%E5%92%8C%E4%BA%A4%E6%B5%81%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BF%9D%E6%8C%81%E8%87%AA%E8%BA%AB%E4%BB%A3%E7%A0%81%E7%9A%84%E6%95%B4%E6%B4%81%E5%92%8C%E8%B4%A8%E9%87%8F%E3%80%82%0A%0A%E8%BF%98%E6%9C%89%E3%80%8ADesign%20Pattern%E3%80%8B%E4%B9%9F%E6%98%AF%0A%0A%23%20%E4%BB%A3%E7%A0%81%E6%95%B4%E6%B4%81%E4%B9%8B%E9%81%93%0A%0A%23%23%23%20%E6%95%B4%E6%B4%81%E4%BB%A3%E7%A0%81%E4%B8%8E%E8%BF%9B%E5%BA%A6%0A%0A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%80%BB%E6%98%AF%E8%A2%AB%E5%90%84%E7%A7%8D%E8%BF%9B%E5%BA%A6%E5%8E%8B%E7%9D%80%EF%BC%8C%E4%BD%86%E8%BF%99%E5%B0%B1%E6%98%AF%E5%86%99%E5%87%BA%E7%B3%9F%E7%B3%95%E4%BB%A3%E7%A0%81%E7%9A%84%E7%90%86%E7%94%B1%E5%90%97%EF%BC%8C%E4%B8%8D%E6%98%AF%E7%9A%84%E3%80%82%E7%9C%8B%E6%9C%AC%E4%B9%A6%E4%B8%BE%E7%9A%84%E4%BE%8B%E5%AD%90%EF%BC%9A%0A%0A%3E%20%E2%80%9D%E5%81%87%E8%AE%BE%E4%BD%A0%E6%98%AF%E4%BD%8D%E5%8C%BB%E7%94%9F%EF%BC%8C%E7%97%85%E4%BA%BA%E8%AF%B7%E6%B1%82%E4%BD%A0%E5%9C%A8%E7%BB%99%E4%BB%96%E5%81%9A%E6%89%8B%E6%9C%AF%E6%97%B6%E5%88%AB%E6%B4%97%E6%89%8B%EF%BC%8C%E5%9B%A0%E4%B8%BA%E9%82%A3%E4%BC%9A%E8%8A%B1%E5%A4%AA%E5%A4%9A%E6%97%B6%E9%97%B4%EF%BC%8C%E4%BD%A0%E4%BC%9A%E7%85%A7%E5%8A%9E%E5%90%97%EF%BC%9F%E6%9C%AC%E8%AF%A5%E6%98%AF%E7%97%85%E4%BA%BA%E8%AF%B4%E4%BA%86%E7%AE%97%EF%BC%9B%E4%BD%86%E5%8C%BB%E7%94%9F%E5%8D%B4%E7%BB%9D%E5%AF%B9%E5%BA%94%E8%AF%A5%E6%8B%92%E7%BB%9D%E9%81%B5%E4%BB%8E%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F%E5%9B%A0%E4%B8%BA%E5%8C%BB%E7%94%9F%E6%AF%94%E7%97%85%E4%BA%BA%E6%9B%B4%E4%BA%86%E8%A7%A3%E7%96%BE%E7%97%85%E5%92%8C%E6%84%9F%E6%9F%93%E7%9A%84%E9%A3%8E%E9%99%A9%E3%80%82%E5%8C%BB%E7%94%9F%E5%A6%82%E6%9E%9C%E6%8C%89%E7%85%A7%E7%97%85%E4%BA%BA%E8%AF%B4%E7%9A%84%E5%8A%9E%EF%BC%8C%E9%82%A3%E5%B0%B1%E6%98%AF%E4%B8%80%E7%A7%8D%E4%B8%8D%E4%B8%93%E4%B8%9A%E7%9A%84%E6%80%81%E5%BA%A6%E3%80%82%E2%80%9D%0A%0A%3E%20%20%20%20%E2%80%9D%E4%BD%A0%E8%AF%B4%EF%BC%9A%E2%80%98%E4%B8%8D%E5%90%AC%E7%BB%8F%E7%90%86%E7%9A%84%EF%BC%8C%E6%88%91%E5%B0%B1%E4%BC%9A%E8%A2%AB%E7%82%92%E9%B1%BF%E9%B1%BC%E2%80%99%E3%80%82%E5%A4%9A%E5%8D%8A%E4%B8%8D%E4%BC%9A%EF%BC%8C%E5%A4%9A%E6%95%B0%E7%BB%8F%E7%90%86%E6%83%B3%E8%A6%81%E7%9F%A5%E9%81%93%E5%AE%9E%E6%83%85%EF%BC%8C%E5%8D%B3%E4%BE%BF%E4%BB%96%E4%BB%AC%E7%9C%8B%E8%B5%B7%E6%9D%A5%E4%B8%8D%E5%96%9C%E6%AC%A2%E5%AE%9E%E6%83%85%E3%80%82%E5%A4%9A%E6%95%B0%E7%BB%8F%E7%90%86%E6%83%B3%E8%A6%81%E5%A5%BD%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%8D%B3%E4%BE%BF%E4%BB%96%E4%BB%AC%E6%80%BB%E6%98%AF%E7%97%B4%E7%BC%A0%E4%B8%8E%E8%BF%9B%E5%BA%A6%E3%80%82%E4%BB%96%E4%BB%AC%E4%BC%9A%E5%A5%8B%E5%8A%9B%E5%8D%AB%E6%8A%A4%E8%BF%9B%E5%BA%A6%E5%92%8C%E9%9C%80%E6%B1%82%EF%BC%9B%E9%82%A3%E6%98%AF%E4%BB%96%E4%BB%AC%E8%AF%A5%E5%B9%B2%E7%9A%84%E3%80%82%E4%BD%A0%E5%88%99%E5%BD%93%E4%BB%A5%E5%90%8C%E7%AD%89%E7%9A%84%E7%83%AD%E6%83%85%E5%8D%AB%E6%8A%A4%E4%BB%A3%E7%A0%81%E2%80%9C%0A%0A%E5%AF%B9%E5%BA%94%E5%88%B0%E6%B8%B8%E6%88%8F%E9%A2%86%E5%9F%9F%EF%BC%8C%E6%88%91%E7%9A%84%E8%A7%82%E7%82%B9%E6%98%AF%EF%BC%9A%0A%0A1.%20%E4%B8%93%E4%B8%9A%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%BA%94%E8%AF%A5%E5%88%86%E6%9E%90%E5%87%BA%E9%9C%80%E6%B1%82%E7%BB%99%E4%BB%A3%E7%A0%81%E5%B8%A6%E6%9D%A5%E7%9A%84bad%20effct%EF%BC%8C%E5%B9%B6%E5%91%8A%E7%9F%A5%E7%AD%96%E5%88%92%E5%AE%9E%E6%83%85%E3%80%82%E7%A8%8B%E5%BA%8F%E6%AF%94%E7%AD%96%E5%88%92%E6%9B%B4%E4%B8%93%E4%B8%9A%EF%BC%8C%E6%9B%B4%E5%BA%94%E8%AF%A5%E5%AF%B9%E8%87%AA%E5%B7%B1%E7%9A%84%E4%BB%A3%E7%A0%81%E8%B4%9F%E8%B4%A3%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E9%BB%98%E9%BB%98%E6%8C%89%E7%AD%96%E5%88%92%E8%A6%81%E6%B1%82%E5%AE%8C%E6%88%90%E7%84%B6%E5%90%8E%E5%87%BA%E9%97%AE%E9%A2%98%E7%94%A9%E9%94%85%E7%BB%99%E7%AD%96%E5%88%92%EF%BC%81%0A2.%20%E5%8F%8A%E6%97%B6%E5%90%8C%E6%AD%A5%E6%96%B9%E6%A1%88%EF%BC%8C%E7%BB%99%E5%87%BA%E8%87%AA%E5%B7%B1%E6%8E%A8%E8%8D%90%E7%9A%84%E6%9B%B4%E4%BD%B3%E6%96%B9%E6%A1%88%EF%BC%8C%E4%B8%89%E6%96%B9%E5%8D%8F%E5%90%8C%E6%9D%A5%E4%BF%9D%E8%AF%81%E5%81%9A%E5%87%BA%E6%9C%80%E9%AB%98%E8%B4%A8%E9%87%8F%E3%80%82%0A3.%20%E9%A2%84%E4%BC%B0%E4%BA%BA%E5%A4%A9%E5%BA%94%E4%BB%A5%E4%BF%9D%E8%AF%81%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F%E7%9A%84%E5%89%8D%E6%8F%90%E6%9D%A5%E4%BC%B0%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%B8%8D%E5%BE%97%E4%B8%8D%E7%A0%B4%E5%9D%8F%E8%B4%A8%E9%87%8F%E6%9D%A5%E8%B5%B6%E8%BF%9B%E5%BA%A6%EF%BC%8C%E9%82%A3%E4%B9%88%E5%AE%8C%E6%88%90%E4%B9%8B%E5%90%8E%E8%A6%81%E5%8F%8A%E6%97%B6%E8%A1%A5%E9%94%85%E3%80%82%0A%0A%23%23%23%20%E8%BF%AD%E4%BB%A3%E6%97%B6%E4%BF%9D%E6%8C%81%E9%87%8D%E6%9E%84%0A%0A%E2%80%8B%20%20%20%20%E2%80%9C%E8%AE%A9%E8%90%A5%E5%9C%B0%E6%AF%94%E4%BD%A0%E6%9D%A5%E6%97%B6%E6%9B%B4%E5%B9%B2%E5%87%80%E2%80%9D%0A%0A%3E%20%E6%AF%8F%E6%AC%A1check%20in%E4%BB%A3%E7%A0%81%E9%83%BD%E6%AF%94check%20out%E6%97%B6%E6%95%B4%E6%B4%81%EF%BC%8C%E9%82%A3%E4%B9%88%E4%BB%A3%E7%A0%81%E5%B0%B1%E4%B8%8D%E4%BC%9A%E8%85%90%E5%9D%8F%E3%80%82%E4%B8%80%E6%AC%A1%E6%B8%85%E7%90%86%E5%8F%AF%E8%83%BD%E5%8F%AA%E6%98%AF%E6%94%B9%E5%A5%BD%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%E5%90%8D%EF%BC%8C%E6%8B%86%E5%88%86%E4%B8%80%E4%B8%AA%E8%BF%87%E9%95%BF%E5%87%BD%E6%95%B0%E7%9A%84%E5%B0%8F%E6%93%8D%E4%BD%9C%EF%BC%8C%E8%BF%99%E7%82%B9%E4%B9%9F%E6%98%AF%E3%80%8Arefactoring%E3%80%8B%E7%9A%84%E9%87%8D%E4%B8%AD%E4%B9%8B%E9%87%8D%E3%80%82%0A%0A%E2%80%8B%20%20%20%20%E8%BF%99%E4%B8%AA%E8%A7%82%E7%82%B9%E8%AE%A4%E4%B8%BA**%E6%96%B0%E4%BB%A3%E7%A0%81%E4%B8%8D%E5%BA%94%E8%BF%87%E5%BA%A6%E8%AE%BE%E8%AE%A1%EF%BC%8C%E8%80%8C%E6%98%AF%E5%9C%A8%E6%AF%8F%E6%AC%A1%E4%BF%AE%E6%94%B9%E7%9A%84%E8%BF%87%E7%A8%8B%E4%B8%AD%E6%8C%81%E7%BB%AD%E9%87%8D%E6%9E%84%E4%BB%A3%E7%A0%81**%EF%BC%8C%E4%BF%9D%E6%8C%81%E4%BB%A3%E7%A0%81%E6%95%B4%E6%B4%81%E3%80%82%E6%8C%81%E7%BB%AD%E9%87%8D%E6%9E%84%E5%BA%94%E5%85%89%E6%98%8E%E6%AD%A3%E5%A4%A7%E7%9A%84%E6%94%BE%E5%9C%A8%E9%A1%B9%E7%9B%AE%E7%9A%84%E8%BF%9B%E5%BA%A6%E4%B8%AD%EF%BC%8C%E8%80%8C%E4%B8%8D%E8%AF%A5%E8%AE%A4%E4%B8%BA%E6%98%AF%E5%81%B7%E5%81%B7%E6%91%B8%E6%91%B8%E4%BF%AE%E6%94%B9%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%BC%8F%E6%B4%9E%E3%80%82%0A%0A%23%23%23%20%E6%9C%89%E6%84%8F%E4%B9%89%E7%9A%84%E5%91%BD%E5%90%8D%0A%0A%E8%BF%99%E9%87%8C%E5%B0%B1%E6%80%BB%E7%BB%93%E4%B8%80%E4%B8%8B%E5%87%A0%E6%9C%AC%E4%B9%A6%E5%AF%B9%E4%BA%8E%E5%91%BD%E5%90%8D%E7%9A%84%E7%BB%8F%E9%AA%8C%E5%90%A7%0A%0A-%20%E6%9C%80%E5%A5%BD%E8%83%BD%E7%94%A8%E5%91%BD%E5%90%8D%E4%BB%A3%E6%9B%BF%E6%B3%A8%E9%87%8A%EF%BC%8C%E7%9B%B4%E8%A7%82%E7%9A%84%E8%AE%A9%E5%AE%83%E6%98%93%E4%BA%8E%E9%98%85%E8%AF%BB%E6%98%93%E4%BA%8E%E7%90%86%E8%A7%A3%E3%80%82%E5%9B%A0%E4%B8%BA%E9%98%85%E8%AF%BB%E4%BB%A3%E7%A0%81%E7%9A%84%E6%97%B6%E9%97%B410%E5%80%8D%E4%BA%8E%E5%86%99%E4%BB%A3%E7%A0%81%E7%9A%84%E6%97%B6%E9%97%B4%0A-%20%E6%96%B9%E6%B3%95%E7%94%A8%E5%8A%A8%E8%AF%8D%EF%BC%8C%E5%AF%B9%E8%B1%A1%E7%94%A8%E5%90%8D%E8%AF%8D%E3%80%82%E5%90%8C%E6%A0%B7%E7%9A%84%E6%A6%82%E5%BF%B5%E8%A6%81%E7%BB%9F%E4%B8%80%E5%91%BD%E5%90%8D%EF%BC%88%E6%9C%89%E6%97%B6%E7%94%A8%E4%B8%93%E6%9C%89%E5%90%8D%E8%AF%8D%EF%BC%89%0A-%20%E5%91%BD%E5%90%8D%E5%8F%AF%E4%BB%A5%E5%B8%A6%E4%B8%8A%20%E5%8D%95%E4%BD%8D%2F%E5%B1%9E%E6%80%A7%2F%E4%BF%A1%E6%81%AF%EF%BC%8C%E5%8F%96%E4%BB%A3%E6%B3%A8%E9%87%8A%0A-%20bool%E5%80%BC%E4%B8%8D%E8%A6%81%E7%94%A8flag%EF%BC%8C%E9%82%A3%E6%98%AFenum%0A%0A%23%23%23%20%E7%9F%AD%E5%B0%8F%E7%B2%BE%E6%82%8D%E7%9A%84%E5%87%BD%E6%95%B0%0A%0A%3E%20upgrade%E5%87%BD%E6%95%B0%E5%81%9A%E5%88%B0%E4%BA%86%E5%8F%AA%E5%9C%A8%E4%B8%80%E4%B8%AA%E6%8A%BD%E8%B1%A1%E5%B1%82%E7%BA%A7%EF%BC%8C%E5%AF%B9%E4%BA%8E%E5%88%A4%E6%96%AD%E5%8D%87%E7%BA%A7%E6%9D%A1%E4%BB%B6%EF%BC%8C%E6%89%A3%E9%99%A4%E5%8D%87%E7%BA%A7%E9%81%93%E5%85%B7%E6%98%AF%E5%B1%9E%E4%BA%8E%E4%B8%8B%E4%B8%80%E5%B1%82%E6%8A%BD%E8%B1%A1%E5%B1%82%E7%BA%A7%EF%BC%9A%0A%0A%60%60%60python%0AMAX_UPGRADE_LV%20%3D%20100%0AUPGRADE_ITEM_ID%20%3D%20123%0AUPGRADE_ITEM_NUM%20%3D%2010%0A%09%09%09%0Adef%20upgrade(self)%3A%0A%09if%20self.validateUpgrade()%3A%0A%09%09self._costUpgradeItems()%0A%09%09self.lv%20%2B%3D%201%0A%0Adef%20validateUpgrade(self)%3A%0A%09if%20self.lv%20%3C%20MAX_UPGRADE_LV%3A%0A%09%09if%20self.getItemNum(UPGRADE_ITEM_ID)%20%3E%3D%20UPGRADE_ITEM_NUM%3A%0A%09%09%09return%20True%0A%09return%20False%0A%0Adef%20_costUpgradeItems(self)%3A%0A%09self.delItem(UPGRADE_ITEM_ID%2C%20UPGRADE_ITEM_NUM)%0A%60%60%60%0A%0A%0A%0A%23%20%E7%BC%96%E5%86%99%E5%8F%AF%E8%AF%BB%E4%BB%A3%E7%A0%81%E7%9A%84%E8%89%BA%E6%9C%AF%0A%0A%23%23%20**%E4%BB%A3%E7%A0%81%E5%BA%94%E5%BD%93%E6%98%93%E4%BA%8E%E7%90%86%E8%A7%A3**%0A%0A%E4%B8%BB%E8%A6%81%E6%98%AF%E8%AE%B2%E4%BA%86%E4%B8%80%E4%BA%9B%E5%BF%85%E8%A6%81%E6%80%A7%E5%92%8C%E5%A5%BD%E4%BB%A3%E7%A0%81%E7%9A%84%E8%A1%A1%E9%87%8F%0A%0A**%E5%8F%AF%E8%AF%BB%E6%80%A7%3E%E7%AE%80%E6%B4%81%E6%80%A7**%0A%0ASimple%EF%BC%9A%E4%BB%A3%E7%A0%81%E7%9A%84%E5%86%99%E6%B3%95%E5%BA%94%E5%BD%93%E4%BD%BF%E5%88%AB%E4%BA%BA%E7%90%86%E8%A7%A3%E5%AE%83%E6%89%80%E9%9C%80%E7%9A%84%E6%97%B6%E9%97%B4%E6%9C%80%E5%B0%8F%E5%8C%96%0A%0A%E6%B3%A8%E9%87%8A%E9%9D%A2%E5%90%91%E4%BA%BA%EF%BC%8C%E4%BB%A3%E7%A0%81%E9%9D%A2%E5%90%91%E7%BC%96%E8%AF%91%E5%99%A8%EF%BC%9A%0A%0A!%5B87C08432-A993-4628-B825-A4ED7E364879%5D(assets%2F87C08432-A993-4628-B825-A4ED7E364879.png)%0A%0A%0A%0A%23%23%23%20**%E6%8A%8A%E4%BF%A1%E6%81%AF%E8%A3%85%E5%88%B0%E5%90%8D%E5%AD%97%E9%87%8C**%0A%0A%23%23%23%23%20%E9%80%89%E6%8B%A9%E4%B8%93%E4%B8%9A%E7%9A%84%E8%AF%8D%20%20%20%0A%0A-%20%60get%60%20%E6%A0%B9%E6%8D%AE%E6%83%85%E5%A2%83%EF%BC%8C%E7%94%A8%60FetchPage()%60%E6%88%96%E8%80%85%60DownloadPage()%60%E4%BB%A3%E6%9B%BF%60getPage()%60%0A-%20%60size()%60%20%E5%9C%A8%E6%A0%91%E4%B8%AD%E5%BA%94%E8%AF%A5%E7%94%A8%60height()%60%E8%A1%A8%E7%A4%BA%E9%AB%98%E5%BA%A6%EF%BC%8C%60numNodes()%60%E8%A1%A8%E7%A4%BA%E8%8A%82%E7%82%B9%E6%95%B0%EF%BC%8C%E7%94%A8%60memoryBytes()%60%E8%A1%A8%E7%A4%BA%E5%86%85%E5%AD%98%E4%B8%AD%E6%89%80%E5%8D%A0%E7%9A%84%E7%A9%BA%E9%97%B4%0A%0AGet%E5%9C%A8%E4%BA%92%E8%81%94%E7%BD%91%E5%BC%80%E5%8F%91%E4%B8%AD%E6%98%BE%E5%BE%97%E4%B8%8D%E4%B8%93%E4%B8%9A%0A%0A%23%23%23%23%20%E6%89%BE%E5%88%B0%E6%9B%B4%E6%9C%89%E8%A1%A8%E7%8E%B0%E5%8A%9B%E7%9A%84%E8%AF%8D%0A%0A%7C%20%E5%8D%95%E8%AF%8D%20%20%7C%20%E6%9B%B4%E5%A4%9A%E9%80%89%E6%8B%A9%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20-----%20%7C%20--------------------------------------------------%20%7C%0A%7C%20send%20%20%7C%20deliver%E3%80%81dispatch%E3%80%81%20announce%E3%80%81%20distribute%E3%80%81route%20%20%20%7C%0A%7C%20find%20%20%7C%20search%E3%80%81extract%E3%80%81locate%E3%80%81recover%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20start%20%7C%20launch%E3%80%81create%E3%80%81begin%E3%80%81open%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20make%20%20%7C%20create%E3%80%81set%20up%E3%80%81build%E3%80%81generate%E3%80%81compose%E3%80%81add%E3%80%81new%20%7C%0A%0A%23%23%23%23%20%E9%81%BF%E5%85%8D%E6%B3%9B%E6%B3%9B%E7%9A%84%E5%90%8D%E5%AD%97%0A%0A-%20%E5%9C%A8%E9%9C%80%E8%A6%81%E5%AE%9E%E9%99%85%E6%84%8F%E4%B9%89%E8%A1%A8%E7%8E%B0%E6%97%B6%EF%BC%8C%60tmp%60%E3%80%81%60retval%60%E3%80%81%60foo%60%E5%8F%AF%E4%BB%A5%E4%BD%9C%E4%B8%BA%E5%90%8D%E5%AD%97%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%EF%BC%8C%E4%BD%86%E6%98%AF%E4%B8%8D%E8%A6%81%E8%BD%BB%E6%98%93%E7%9B%B4%E6%8E%A5%E4%BD%BF%E7%94%A8%E3%80%82%E5%A6%82%E7%94%A8tmp_file%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E7%9F%A5%E9%81%93%E8%BF%99%E6%98%AF%E4%B8%AA%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6%0A-%20%E6%9F%90%E4%BA%9B%E6%83%85%E5%86%B5%E4%BD%BF%E7%94%A8%E7%A9%BA%E6%B3%9B%E7%9A%84%E5%90%8D%E5%AD%97%E4%B9%9F%E6%9C%89%E5%A5%BD%E5%A4%84%EF%BC%8C%E6%AF%94%E5%A6%82%E8%AF%B4%E5%9C%A8%E4%BA%A4%E6%8D%A2%E4%B8%A4%E4%B8%AA%E5%8F%98%E9%87%8F%E7%9A%84%E6%97%B6%E5%80%99%E4%BD%BF%E7%94%A8%60tmp%60%EF%BC%8C%E5%9C%A8%E5%BE%AA%E7%8E%AF%E8%BF%AD%E4%BB%A3%E5%99%A8%E4%B8%AD%E4%BD%BF%E7%94%A8%60i%60%E3%80%81%60j%60%E3%80%81%60iter%60%EF%BC%8C%E4%BD%86%E6%98%AF%E5%9C%A8%E5%B5%8C%E5%A5%97%E7%9A%84%E5%BE%AA%E7%8E%AF%E4%B8%AD%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8ci%2Cmi%2Cui%E6%9D%A5%E6%A0%87%E6%98%8E%EF%BC%8C%E8%BF%AD%E4%BB%A3%E5%99%A8%E5%90%8D%E7%A7%B0%E8%A6%81%E6%9B%B4%E6%B8%85%E6%A5%9A%0A%0A%23%23%23%23%20%E7%94%A8%E5%85%B7%E4%BD%93%E7%9A%84%E5%90%8D%E5%AD%97%E4%BB%A3%E6%9B%BF%E6%8A%BD%E8%B1%A1%E7%9A%84%E5%90%8D%E5%AD%97%20%0A%0A-%20%E6%AF%94%E5%A6%82%E5%BB%BA%E7%AB%8B%E5%92%8C%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E7%89%B9%E6%AE%8A%E7%9A%84%E6%9C%AC%E5%9C%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BD%9C%E4%B8%BA%E6%9C%AC%E5%9C%B0%E6%97%A5%E5%BF%97%E8%BE%93%E5%87%BA%EF%BC%8Crun_locally%E8%BF%99%E4%B8%AA%E5%90%8D%E5%AD%97%E5%8F%AA%E8%A1%A8%E8%BE%BE%E4%BA%86%E6%A8%A1%E7%B3%8A%E7%9A%84%E6%93%8D%E4%BD%9C%E4%BD%8D%E7%BD%AE%EF%BC%8C%E5%8D%B4%E6%97%A0%E6%B3%95%E8%A1%A8%E7%A4%BA%E5%85%B7%E4%BD%93%E7%9A%84%E4%BD%9C%E7%94%A8%EF%BC%8Cuse_local_database%E5%B0%B1%E6%AF%94%E8%BE%83%E5%90%88%E9%80%82%E4%BA%86%20%0A%0A%23%23%23%23%20%E4%BD%BF%E7%94%A8%E5%89%8D%E7%BC%80%E6%88%96%E5%90%8E%E7%BC%80%E6%9D%A5%E7%BB%99%E5%90%8D%E5%AD%97%E9%99%84%E5%B8%A6%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%0A%0A%E3%80%90%E5%91%BD%E5%90%8D%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E5%B0%8F%E5%B0%8F%E7%9A%84%E6%B3%A8%E9%87%8A%E3%80%91%20%0A%0A-%20%60hexId%60%E8%A1%A8%E7%A4%BA%E4%BA%86id%E6%98%AF16%E8%BF%9B%E5%88%B6%E7%9A%84%EF%BC%8C%E5%A6%82%E6%9E%9C%E7%A1%AE%E5%AE%9A%E6%98%AF16%E8%BF%9B%E5%88%B6%E5%BE%88%E9%87%8D%E8%A6%81%E7%9A%84%E8%AF%9D%20%0A-%20%60delay_ms%60%E5%B8%A6%E5%8D%95%E4%BD%8D%E7%9A%84%E5%80%BC%E6%9C%80%E5%A5%BD%E9%99%84%E5%B8%A6%E4%B8%8A%E5%8D%95%E4%BD%8D%EF%BC%9A%0A%0A%7C%20%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%20%7C%20%E5%B8%A6%E5%8D%95%E4%BD%8D%E7%9A%84%E5%8F%82%E6%95%B0%7C%0A%7C%20%3A---------------------%20%7C%20%3A-------------------%20%7C%0A%7C%20start(int%20delay)%20%7C%20delay%20--%3E%20delay_secs%20%7C%0A%7C%20createCache(int%20size)%20%7C%20size%20--%3E%20size_mb%20%7C%0A%7C%20throttleDownload(float%20limit)%20%7C%20limit%20--%3E%20max_kbps%20%7C%0A%7C%20rotate(float%20angle)%20%7C%20angle%20--%3E%20degree_cw%20%7C%0A%0A-%20%E9%99%84%E5%B8%A6%E5%85%B6%E4%BB%96%E9%87%8D%E8%A6%81%E5%B1%9E%E6%80%A7%EF%BC%9A%0A%0A%7C%20%E6%83%85%E5%BD%A2%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%E5%8F%98%E9%87%8F%E5%90%8D%20%20%20%7C%20%E6%9B%B4%E5%A5%BD%E7%9A%84%E5%90%8D%E5%AD%97%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%3A-----------------------------------------------%20%7C%20--------%20%7C%20------------------%20%7C%0A%7C%20%E4%B8%80%E4%B8%AA%E2%80%9C%E7%BA%AF%E6%96%87%E6%9C%AC%E2%80%9D%E6%A0%BC%E5%BC%8F%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E9%9C%80%E8%A6%81%E5%8A%A0%E5%AF%86%E5%90%8E%E6%89%8D%E8%83%BD%E8%BF%9B%E4%B8%80%E6%AD%A5%E4%BD%BF%E7%94%A8%20%7C%20password%20%7C%20plaintext_password%20%7C%0A%7C%20%E4%B8%80%E6%9D%A1%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E7%9A%84%E6%B3%A8%E9%87%8A%EF%BC%8C%E9%9C%80%E8%A6%81%E8%BD%AC%E4%B9%89%E4%B9%8B%E5%90%8E%E6%89%8D%E8%83%BD%E7%94%A8%E4%BA%8E%E6%98%BE%E7%A4%BA%20%20%20%20%20%7C%20comment%20%20%7C%20unescaped_comment%20%20%7C%0A%7C%20%E5%B7%B2%E8%BD%AC%E5%8C%96%E4%B8%BAUTF-8%E6%A0%BC%E5%BC%8F%E7%9A%84html%E5%AD%97%E8%8A%82%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20html%20%20%20%20%20%7C%20html_utf8%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%E4%BB%A5%E2%80%9Curl%E6%96%B9%E5%BC%8F%E7%BC%96%E7%A0%81%E2%80%9D%E7%9A%84%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20data%20%20%20%20%20%7C%20data_urlenc%20%20%20%20%20%20%20%20%7C%0A%0A%23%23%23%23%20%E5%90%8D%E5%AD%97%E5%BA%94%E8%AF%A5%E6%9C%89%E5%A4%9A%E9%95%BF%0A%0A-%20%E5%9C%A8%E5%B0%8F%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9F%AD%E7%9A%84%E5%90%8D%E5%AD%97%EF%BC%8C%E7%9B%B8%E5%8F%8D%E5%9C%A8%E5%A4%A7%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%95%BF%E5%90%8D%E5%AD%97%E3%80%82%E7%8E%B0%E4%BB%A3%E7%BC%96%E8%BE%91%E5%99%A8%E8%83%BD%E6%96%B9%E4%BE%BF%E4%BD%BF%E4%BD%A0%E9%94%AE%E5%85%A5%E9%95%BF%E5%90%8D%E5%AD%97%0A-%20%E9%A6%96%E5%AD%97%E6%AF%8D%E7%BC%A9%E7%95%A5%E8%AF%8D%E5%92%8C%E5%8D%95%E8%AF%8D%E7%BC%A9%E5%86%99%E5%BA%94%E8%AF%A5%E6%98%AF%E5%A4%A7%E5%AE%B6%E6%99%AE%E9%81%8D%E6%8E%A5%E5%8F%97%E5%92%8C%E7%90%86%E8%A7%A3%E7%9A%84%EF%BC%8C%E4%BE%8B%E5%A6%82%E7%94%A8doc%E4%BB%A3%E6%9B%BFdocument%E3%80%81str%E4%BB%A3%E6%9B%BFstring%E3%80%82%E7%89%B9%E5%AE%9A%E9%A1%B9%E7%9B%AE%E7%9A%84%E7%BC%A9%E5%86%99%E5%B0%B1%E4%B8%8D%E5%A5%BD%E4%BA%86%E3%80%82%0A-%20%E4%B8%A2%E6%8E%89%E6%B2%A1%E7%94%A8%E7%9A%84%E8%AF%8D%EF%BC%8C%60ConvertToString%60%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%86%99%E6%88%90%60toString%60%EF%BC%8C%E8%BF%99%E6%A0%B7%E4%B9%9F%E6%B2%A1%E6%9C%89%E4%B8%A2%E5%A4%B1%E4%BB%BB%E4%BD%95%E4%BF%A1%E6%81%AF%0A%0A%23%23%23%20%E4%B8%8D%E4%BC%9A%E8%AF%AF%E8%A7%A3%E7%9A%84%E5%90%8D%E5%AD%97%0A%0A-%20%E5%85%B3%E9%94%AE%E6%80%9D%E6%83%B3%EF%BC%9A%E8%A6%81%E4%BB%94%E7%BB%86%E5%AE%A1%E8%A7%86%E5%90%8D%E5%AD%97%EF%BC%8C%E2%80%9C%E8%BF%99%E4%B8%AA%E5%90%8D%E5%AD%97%E4%BC%9A%E8%A2%AB%E5%88%AB%E4%BA%BA%E8%AF%AF%E8%A7%A3%E6%88%90%E5%85%B6%E4%BB%96%E5%90%AB%E4%B9%89%E5%90%97%E2%80%9D%0A-%20%E5%BD%93%E8%A6%81%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%80%BC%E7%9A%84%E4%B8%8A%E7%BA%BF%E6%88%96%E8%80%85%E4%B8%8B%E9%99%90%E6%97%B6%EF%BC%8Cmax%E5%92%8Cmin%E6%98%AF%E5%BE%88%E5%A5%BD%E7%9A%84%E5%89%8D%E7%BC%80%0A-%20%E6%8E%A8%E8%8D%90%E7%94%A8%20min%20%E5%92%8C%20max%20%E6%9D%A5%E8%A1%A8%E7%A4%BA%E5%8C%85%E5%90%AB%E7%9A%84%E6%9E%81%E9%99%90%E3%80%82%5Bmin%2C%20max%5D%20%0A-%20%E5%AF%B9%E4%BA%8E%E5%8C%85%E5%90%AB%E7%9A%84%E8%8C%83%E5%9B%B4%EF%BC%8Cfirst%20%E5%92%8C%20last%20%E6%98%AF%E5%A5%BD%E7%9A%84%E9%80%89%E6%8B%A9%E3%80%82%5Bfirst%2C%20last%5D%20%0A-%20%E5%AF%B9%E4%BA%8E%E6%8E%92%E9%99%A4%E7%9A%84%E8%8C%83%E5%9B%B4%EF%BC%8Cbegin%20%E5%92%8C%20end%20%E6%98%AF%E5%A5%BD%E7%9A%84%E9%80%89%E6%8B%A9%E3%80%82%5Bbegin%2C%20end)%20%0A-%20start%20%E5%92%8C%20stop%20%EF%BC%8C%E5%88%99%E5%B9%B6%E4%B8%8D%E9%80%82%E5%90%88%E8%A1%A8%E7%A4%BA%E8%8C%83%E5%9B%B4%E3%80%82%20%0A-%20%E5%91%BD%E5%90%8D%E5%BA%94%E4%B8%8E%E4%BD%BF%E7%94%A8%E8%80%85%E7%9A%84%E6%9C%9F%E6%9C%9B%E7%9B%B8%E5%8C%B9%E9%85%8D%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%9A%60get*()%60%E6%98%AF%E4%B8%AA%E2%80%9C%E8%BD%BB%E9%87%8F%E7%BA%A7%E8%AE%BF%E9%97%AE%E5%99%A8%E2%80%9D%EF%BC%8C%60list.size()%60%E5%BA%94%E8%AF%A5%E6%98%AF%E4%B8%80%E4%B8%AA*O(1)*%E5%A4%8D%E6%9D%82%E5%BA%A6%E7%9A%84%E6%93%8D%E4%BD%9C%E3%80%82%60countSize%2FcountElements%60%E6%89%8D%E9%80%82%E5%90%88O(n)%E4%BB%A5%E4%B8%8A%E8%AE%A1%E7%AE%97%E7%9A%84%E6%96%B9%E6%B3%95%0A-%20%E5%BE%88%E5%A4%9A%E5%8D%95%E8%AF%8D%E5%9C%A8%E7%94%A8%E6%9D%A5%E7%BC%96%E7%A8%8B%E6%97%B6%E6%98%AF%E5%A4%9A%E4%B9%89%E6%80%A7%E7%9A%84%EF%BC%8C%E4%BE%8B%E5%A6%82filter%E3%80%81length%E5%92%8Climit%0A%0A%23%23%23%23%20%5Bbool%E5%91%BD%E5%90%8D%5D(https%3A%2F%2Fwww.zhihu.com%2Fquestion%2F20809118%2Fanswer%2F145221850)%0A%0Ais%2C%20has%20done%2C%20can%2C%20should%EF%BC%8C...able%20%0A%0A%E6%88%96%E8%80%85%E6%98%AF%E4%B8%80%E4%BA%9B%E5%85%B6%E4%BB%96%E8%A1%A8%E5%88%A4%E6%96%AD%E7%9A%84%E5%8A%A8%E8%AF%8D%EF%BC%8Cneed%20%0A%0A-%20%E6%9C%80%E5%A5%BD%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%E5%8F%8D%E4%B9%89%E7%9A%84%E8%AF%8D%20%EF%BC%88%E4%BE%8B%E5%A6%82%20disable_ssl%20%EF%BC%89%20%0A%0A-%20%E5%BD%A2%E5%AE%B9%E8%AF%8D%E5%8F%AF%E4%BB%A5%E5%8A%A0is%E4%B9%9F%E5%8F%AF%E4%BB%A5%E4%B8%8D%E5%8A%A0%E3%80%82%E6%AF%94%E5%A6%82isYoung%E3%80%81isSimple%E3%80%81isNaive%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%86%99%E6%88%90young%E3%80%81simple%E3%80%81naive%20%0A%0A-%20%E4%BD%86%E6%98%AF%E5%A6%82%E6%9E%9C%E8%BF%99%E4%B8%AA%E5%BD%A2%E5%AE%B9%E8%AF%8D%E6%9C%89%E5%B8%B8%E7%94%A8%E7%9A%84%E5%81%9A%E5%8A%A8%E8%AF%8D%E7%9A%84%E5%90%AB%E4%B9%89%EF%BC%8C%E9%82%A3%E5%B0%B1%E8%A6%81%E5%8A%A0is%EF%BC%8C%E6%AF%94%E5%A6%82empty%E8%BF%99%E4%B8%AA%E8%AF%8D%E5%8F%AF%E4%BB%A5%E4%BD%9C%E5%8A%A8%E8%AF%8D%E8%A1%A8%E7%A4%BA%E6%B8%85%E7%A9%BA%E7%9A%84%E6%84%8F%E6%80%9D%EF%BC%8C%E9%82%A3%E4%B9%88%E8%A1%A8%E7%A4%BA%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%E5%B0%B1%E5%86%99%E6%88%90isEmpty%E8%80%8C%E4%B8%8D%E6%98%AFempty%E3%80%82%20%0A%0A-%20%E4%B8%8D%E8%A6%81%E7%94%A8flag%EF%BC%8C%20flag%E5%BA%94%E8%AF%A5%E6%98%AFenum%E3%80%82%0A%0A%23%23%23%20**%E4%BB%A3%E7%A0%81%E5%AE%A1%E7%BE%8E**%0A%0A**Key%3A**%0A%0A1.%20%E9%87%8D%E6%96%B0%E5%AE%89%E6%8E%92%E6%8D%A2%E8%A1%8C%E4%BF%9D%E6%8C%81%E4%B8%80%E8%87%B4%E5%92%8C%E7%B4%A7%E5%87%91%E3%80%82%E6%8D%A2%E8%A1%8C%E5%8F%AF%E4%BB%A5%E8%AE%A9%E4%BB%A3%E7%A0%81%E6%9B%B4%E7%BE%8E%E8%A7%82%EF%BC%8C%E7%8E%B0%E5%9C%A8%E7%9A%84IDE%E4%B9%9F%E7%BB%8F%E5%B8%B8%E4%BC%9A%E5%B8%AE%E4%BD%A0%E8%BF%99%E4%B9%88%E5%81%9A%E3%80%82%20%20%0A%0A2.%20%E7%94%A8%E6%96%B9%E6%B3%95%E6%95%B4%E7%90%86%E4%B8%8D%E8%A7%84%E5%88%99%E7%9A%84%E4%BB%A3%E7%A0%81%E3%80%82%20%0A%0A3.%20%E5%9C%A8%E9%9C%80%E8%A6%81%E6%97%B6%E4%BD%BF%E7%94%A8%E5%88%97%E5%AF%B9%E9%BD%90%E3%80%82%E6%B3%A8%E9%87%8A%E5%AF%B9%E9%BD%90%20%20%20%0A%0A%3E%20%E5%88%97%E5%AF%B9%E9%BD%90%E9%9D%9E%E5%B8%B8%E7%BE%8E%E8%A7%82%E7%AE%80%E6%B4%81%EF%BC%8C%E8%80%8C%E4%B8%94%E8%83%BD%E4%B8%80%E7%9C%BC%E7%9C%8B%E5%87%BA%E5%90%84%E8%A1%8C%E9%97%B4%E7%9A%84%E4%B8%8D%E5%90%8C%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%8F%91%E7%8E%B0%E9%94%99%E8%AF%AF%20%E3%80%82%E4%BD%86%E6%98%AF%E5%86%99%E8%B5%B7%E6%9D%A5%E6%AF%94%E8%BE%83%E9%BA%BB%E7%83%A6%EF%BC%8C%E8%80%8C%E4%B8%94%E6%94%B9%E5%8A%A8%E6%97%B6%E6%9B%B4%E9%BA%BB%E7%83%A6%E3%80%82%0A%3E%0A%3E%20%E5%BB%BA%E8%AE%AE%E5%9C%A8%E5%86%99%E5%AE%8C%E8%87%AA%E5%AE%A1%E6%97%B6%E7%94%A8%E5%88%97%E5%AF%B9%E9%BD%90%EF%BC%8C%E4%B9%9F%E6%9B%B4%E5%AE%B9%E6%98%93%E5%8F%91%E7%8E%B0%E9%94%99%E8%AF%AF%E3%80%82%20%0A%0A4.%20%E9%80%89%E6%8B%A9%E4%B8%80%E4%B8%AA%E6%9C%89%E6%84%8F%E4%B9%89%E7%9A%84%E9%A1%BA%E5%BA%8F%EF%BC%8C%E5%A7%8B%E7%BB%88%E4%B8%80%E8%87%B4%E7%9A%84%E4%BD%BF%E7%94%A8%E5%AE%83%E3%80%82%20%E6%AF%94%E5%A6%82%E9%87%8D%E8%A6%81%E6%80%A7%EF%BC%8C%E6%AF%94%E5%A6%82%E5%AD%97%E6%AF%8D%E9%A1%BA%E5%BA%8F%20%0A5.%20%E6%8A%8A%E5%A3%B0%E6%98%8E%E6%8C%89%E5%9D%97%E7%BB%84%E7%BB%87%E8%B5%B7%E6%9D%A5%E3%80%82%20%0A%0A%3E%20%E5%B0%B1%E5%83%8F%E6%88%91%E5%9C%A8%E5%A3%B0%E6%98%8EPlayer%E7%9A%84Attribute%E3%80%81Anim%E3%80%81State%E7%AD%89%E5%8F%98%E9%87%8F%E6%97%B6%E4%B8%80%E6%A0%B7%EF%BC%8C%E4%BB%A3%E7%A0%81%E5%88%86%E6%AE%B5%E4%BC%9A%E6%B8%85%E6%99%B0%E5%BE%88%E5%A4%9A%0A%0A6.%20%E5%9B%A2%E9%98%9F%E4%B8%80%E8%87%B4%E7%9A%84%E9%A3%8E%E6%A0%BC%E6%AF%94%E4%B8%AA%E4%BA%BA%E9%A3%8E%E6%A0%BC%E6%9B%B4%E9%87%8D%E8%A6%81%0A%0A%23%23%23%20%E8%AF%A5%E5%86%99%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%E6%B3%A8%E9%87%8A%0A%0A**Key%EF%BC%9A**%0A%0A%E6%B3%A8%E9%87%8A%E7%9A%84%E7%9B%AE%E7%9A%84%E6%98%AF%E5%B0%BD%E9%87%8F%E5%B8%AE%E5%8A%A9%E8%AF%BB%E8%80%85%E4%BA%86%E8%A7%A3%E7%9A%84%E5%92%8C%E4%BD%9C%E8%80%85%E4%B8%80%E6%A0%B7%E5%A4%9A%E3%80%82%0A%0A**%E4%BB%80%E4%B9%88%E4%B8%8D%E9%9C%80%E8%A6%81%E6%B3%A8%E9%87%8A%EF%BC%9F**%0A%0A1.%20%E4%B8%8D%E8%A6%81%E4%B8%BA%E9%82%A3%E4%BA%9B%E4%BB%8E%E4%BB%A3%E7%A0%81%E6%9C%AC%E8%BA%AB%E5%B0%B1%E8%83%BD%E5%BF%AB%E9%80%9F%E6%8E%A8%E6%96%AD%E7%9A%84%E4%BA%8B%E5%AE%9E%E5%86%99%E6%B3%A8%E9%87%8A%20%0A%0A2.%20%E4%B8%8D%E8%A6%81%E4%B8%BA%E4%BA%86%E6%B3%A8%E9%87%8A%E8%80%8C%E6%B3%A8%E9%87%8A%20%0A%0A%3E%20IDE%E8%A6%81%E6%88%91%E5%86%99%E6%B3%A8%E9%87%8A%EF%BC%8C%E6%88%91%E5%B0%B1%E9%9D%9E%E5%BE%97%E5%86%99%E4%B8%8D%E5%8F%AF%E5%90%97%EF%BC%9F%E6%98%8E%E6%98%8E%E6%B2%A1%E4%BB%80%E4%B9%88%E6%B3%A8%E9%87%8A%E9%9C%80%E8%A6%81%E5%86%99%20%0A%0A3.%20%E4%B8%8D%E8%A6%81%E4%B8%BA%E4%B8%8D%E5%A5%BD%E7%9A%84%E5%90%8D%E5%AD%97%E5%8A%A0%E6%B3%A8%E9%87%8A-%3E%E5%BA%94%E8%AF%A5%E6%8A%8A%E5%90%8D%E5%AD%97%E6%94%B9%E5%A5%BD%20%0A%0A**%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E6%B3%A8%E9%87%8A%EF%BC%9F**%0A%0A1.%20%E5%8A%A0%E5%85%A5%E2%80%9C%E5%AF%BC%E6%BC%94%E8%AF%84%E8%AE%BA%E2%80%9D%EF%BC%8C%E8%AE%B0%E5%BD%95%E4%BD%A0%E5%86%99%E4%BB%A3%E7%A0%81%E6%97%B6%E9%87%8D%E8%A6%81%E7%9A%84%E6%83%B3%E6%B3%95%E3%80%82%E8%BF%99%E6%98%AF%E5%A5%BD%E6%B3%A8%E9%87%8A%20%0A%0A!%5B69FD9DAF-FE22-43EC-B489-7956CA6AF805%5D(assets%2F69FD9DAF-FE22-43EC-B489-7956CA6AF805.png)%0A%0A2.%20%E8%AE%B0%E5%BD%95%E5%AF%B9%E4%BB%A3%E7%A0%81%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E8%A7%81%E8%A7%A3%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%9A%E8%A7%A3%E9%87%8A%E4%BB%A3%E7%A0%81%E6%B2%A1%E6%B3%95%E4%BF%AE%E5%A4%8D%E7%9A%84%E7%BC%BA%E9%99%B7%E3%80%81%E4%BB%A3%E7%A0%81%E4%B8%8D%E6%95%B4%E6%B4%81%E7%9A%84%E5%8E%9F%E5%9B%A0%0A3.%20%E4%B8%BA%E4%BB%A3%E7%A0%81%E4%B8%AD%E7%9A%84%E7%91%95%E7%96%B5%E5%86%99%E6%B3%A8%E9%87%8A%EF%BC%8C%E6%AF%94%E5%A6%82%E6%9C%89%E5%A6%82%E4%B8%8B%E5%87%A0%E7%A7%8D%E6%A0%87%E8%AE%B0%EF%BC%9A%0A%0A%7C%20%E6%A0%87%E8%AE%B0%20%20%20%7C%20%E9%80%9A%E7%95%85%E7%9A%84%E6%84%8F%E4%B9%89%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20------%20%7C%20----------------------------------------%20%7C%0A%7C%20TODO%3A%20%20%7C%20%E6%88%91%E8%BF%98%E6%B2%A1%E6%9C%89%E5%A4%84%E7%90%86%E7%9A%84%E4%BA%8B%E6%83%85%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20FIXME%3A%20%7C%20%E5%B7%B2%E7%9F%A5%E7%9A%84%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BB%A3%E7%A0%81%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20HACK%3A%20%20%7C%20%E5%AF%B9%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E4%B8%8D%E5%BE%97%E4%B8%8D%E9%87%87%E7%94%A8%E7%9A%84%E6%AF%94%E8%BE%83%E7%B2%97%E7%B3%99%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%20%7C%0A%7C%20XXX%3A%20%20%20%7C%20%E5%8D%B1%E9%99%A9%EF%BC%81%E8%BF%99%E9%87%8C%E6%9C%89%E9%87%8D%E8%A6%81%E7%9A%84%E9%97%AE%E9%A2%98%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%0A4.%20%E7%BB%99%E5%B8%B8%E9%87%8F%E5%8A%A0%E6%B3%A8%E9%87%8A%EF%BC%8C%E9%9C%80%E8%A6%81%E6%8F%8F%E8%BF%B0%E6%B8%85%E6%A5%9A%E5%AE%83%E6%98%AF%E4%BB%80%E4%B9%88%E6%88%96%E8%80%85%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF%E8%BF%99%E4%B8%AA%E5%80%BC%E7%9A%84%E5%8E%9F%E5%9B%A0%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%A5%E5%90%8E%E8%B0%83%E6%95%B4%E8%BF%99%E4%B8%AA%E5%8F%98%E9%87%8F%E7%9A%84%E4%BA%BA%E5%8F%AF%E8%83%BD%E9%9C%80%E8%A6%81%E7%9F%A5%E9%81%93%E8%B0%83%E6%95%B4%E7%9A%84%E8%A7%84%E5%88%99%E3%80%82%0A%0A5.%20%E7%AB%99%E5%9C%A8%E8%AF%BB%E8%80%85%E7%9A%84%E8%A7%92%E5%BA%A6%0A%0A%20%20-%20%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E8%BF%99%E6%A0%B7%E5%86%99%E7%9A%84%E5%9C%B0%E6%96%B9%EF%BC%8C%E5%81%9A%E5%87%BA%E8%A7%A3%E9%87%8A%E3%80%82(%E6%AF%94%E5%A6%82%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E7%94%A8%E5%B8%B8%E8%A7%84%E6%96%B9%E5%BC%8F%E5%AE%9E%E7%8E%B0)%0A%20%20-%20%E5%85%AC%E5%B8%83%E5%8F%AF%E8%83%BD%E7%9A%84%E9%99%B7%E9%98%B1%E3%80%82(%E6%AF%94%E5%A6%82%E8%BF%99%E4%B8%AA%E5%87%BD%E6%95%B0%E5%8F%AF%E8%83%BD%E8%A6%81%E6%89%A7%E8%A1%8C1%E5%88%86%E9%92%9F%E6%89%8D%E8%B6%85%E6%97%B6)%0A%20%20-%20%E2%80%9C%E5%85%A8%E5%B1%80%E8%A7%82%E2%80%9D%E6%B3%A8%E9%87%8A%E3%80%82%E4%B8%BA%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%80%8C%E5%86%99%EF%BC%8C%E5%B8%AE%E5%8A%A9%E4%BB%96%E4%BA%BA%E6%9B%B4%E5%A5%BD%E7%9A%84%E7%90%86%E8%A7%A3%E7%B1%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB%0A%20%20-%20%E5%9C%A8%E4%B8%80%E4%B8%AA%E7%B1%BB%E6%88%96%E8%80%85%E5%87%BD%E6%95%B0%E5%86%85%E9%83%A8%E7%BC%96%E5%86%99%E6%80%BB%E7%BB%93%E6%80%A7%E7%9A%84%E6%B3%A8%E9%87%8A%0A%0A6.%20%E5%85%8B%E6%9C%8D%E2%80%9C%E4%BD%9C%E8%80%85%E5%BF%83%E7%90%86%E9%98%BB%E6%BB%9E%E2%80%9D%EF%BC%9A%E5%B0%B1%E6%98%AF%E6%87%92%E5%BE%97%E5%86%99%E6%B3%A8%E9%87%8A%0A%0A%20%20-%20%E4%B8%8D%E7%AE%A1%E5%BF%83%E9%87%8C%E6%83%B3%E4%BB%80%E4%B9%88%EF%BC%8C%E5%85%88%E6%8A%8A%E5%AE%83%E5%86%99%E4%B8%8B%E6%9D%A5(%E6%89%93%E5%AD%97%E5%BF%AB)%0A%20%20-%20%E8%AF%BB%E4%B8%80%E4%B8%8B%E8%BF%99%E6%AE%B5%E6%B3%A8%E9%87%8A%EF%BC%8C%E7%9C%8B%E7%9C%8B%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E5%8F%AF%E4%BB%A5%E6%94%B9%E8%BF%9B%E7%9A%84%E5%9C%B0%E6%96%B9%0A%20%20-%20%E4%B8%8D%E6%96%AD%E6%94%B9%E8%BF%9B%0A%0A%20%20%E5%BD%93%E4%BD%A0%E7%BB%8F%E5%B8%B8%E5%86%99%E6%B3%A8%E9%87%8A%EF%BC%8C%E4%BD%A0%E4%BC%9A%E5%8F%91%E7%8E%B0%E6%AD%A5%E9%AA%A41%E6%89%80%E4%BA%A7%E7%94%9F%E7%9A%84%E6%B3%A8%E9%87%8A%E4%BC%9A%E8%B6%8A%E6%9D%A5%E8%B6%8A%E5%A5%BD%EF%BC%8C%E5%B0%B1%E8%B6%8A%E4%B8%8D%E9%9C%80%E8%A6%81%E5%90%8E%E9%9D%A2%E4%B8%A4%E6%AD%A5%E4%BA%86%0A%0A%23%23%23%20**%E5%86%99%E5%87%BA%E8%A8%80%E7%AE%80%E6%84%8F%E8%B5%85%E7%9A%84%E6%B3%A8%E9%87%8A**%0A%0A**Key%3A**%20%0A%0A%E6%B3%A8%E9%87%8A%E5%BA%94%E5%BD%93%E6%9C%89%E5%BE%88%E9%AB%98%E7%9A%84%E4%BF%A1%E6%81%AF%2F%E7%A9%BA%E9%97%B4%E7%8E%87%E3%80%82%E7%AE%80%E6%B4%81%E4%B8%8D%E5%BA%9F%E8%AF%9D%0A%0A1.%20%E8%AE%A9%E6%B3%A8%E9%87%8A%E4%BF%9D%E6%8C%81%E7%B4%A7%E5%87%91%E3%80%82%E8%83%BD1%E8%A1%8C%E8%AE%B2%E6%98%8E%E7%99%BD%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%86%993%E8%A1%8C%E5%BA%9F%E8%AF%9D%EF%BC%9F%0A%0A2.%20%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%E4%B8%8D%E6%98%8E%E7%A1%AE%E7%9A%84%E4%BB%A3%E8%AF%8D%EF%BC%88%E4%B8%8D%E8%A6%81%E7%94%A8%E2%80%9C%E8%BF%99%E4%B8%AA%E2%80%9D%EF%BC%8C%E2%80%9D%E9%82%A3%E4%B8%AA%E2%80%9D%2C%E2%80%9D%E5%AE%83%E2%80%9D%E8%BF%99%E4%BA%9B%E6%A8%A1%E7%B3%8A%E4%B8%8D%E6%B8%85%E7%9A%84%E4%BB%A3%E8%AF%8D%EF%BC%89%E3%80%82%20%0A%0A3.%20%E6%B6%A6%E8%89%B2%E7%B2%97%E7%B3%99%E7%9A%84%E5%8F%A5%E5%AD%90%EF%BC%8C%E7%B2%BE%E7%A1%AE%E5%9C%B0%E6%8F%8F%E8%BF%B0%E5%87%BD%E6%95%B0%E7%9A%84%E8%A1%8C%E4%B8%BA%20%0A4.%20%E5%9C%A8%E6%B3%A8%E9%87%8A%E4%B8%AD%E7%94%A8%E7%B2%BE%E5%BF%83%E6%8C%91%E9%80%89%E7%9A%84%E8%BE%93%E5%85%A5%2F%E8%BE%93%E5%87%BA%E4%BE%8B%E5%AD%90%E8%BF%9B%E8%A1%8C%E8%AF%B4%E6%98%8E%E3%80%82%E5%9C%A8%E5%87%BD%E6%95%B0%E8%A1%8C%E4%B8%BA%E5%A4%8D%E6%9D%82%EF%BC%8C%E6%8F%8F%E8%BF%B0%E5%9B%B0%E9%9A%BE%E4%B8%8D%E7%9B%B4%E8%A7%82%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E7%9A%84%E4%BE%8B%E5%AD%90%E6%9D%A5%E7%9B%B4%E8%A7%82%E7%9A%84%E8%A1%A8%E7%A4%BA%E5%87%BD%E6%95%B0%E7%9A%84%E7%94%A8%E9%80%94%E3%80%82%0A5.%20%E5%A3%B0%E6%98%8E%E4%BB%A3%E7%A0%81%E7%9A%84%E6%84%8F%E5%9B%BE%EF%BC%8C%E8%80%8C%E9%9D%9E%E7%BB%86%E8%8A%82%E3%80%82%E6%AF%94%E5%A6%82%E4%B8%80%E4%B8%AA%E5%80%92%E5%BA%8F%E5%BE%AA%E7%8E%AF%E6%98%BE%E7%A4%BA%E4%BB%B7%E6%A0%BC%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%B0%B1%E6%B2%A1%E5%BF%85%E8%A6%81%E5%8F%AA%E5%BC%BA%E8%B0%83%E5%80%92%E5%BA%8F%E6%98%BE%E7%A4%BA%EF%BC%8C%E8%80%8C%E5%BA%94%E8%AF%A5%E6%8C%87%E5%87%BA%E6%98%BE%E7%A4%BA%E7%9A%84%E6%98%AF%E4%BB%B7%E6%A0%BC%EF%BC%8C%E9%A1%BA%E5%BA%8F%E6%98%AF%E4%BB%8E%E9%AB%98%E5%88%B0%E4%BD%8E%EF%BC%8C%E7%9C%81%E5%8E%BB%E8%AF%BB%E8%80%85%E6%80%9D%E8%80%83%E7%9A%84%E8%BF%87%E7%A8%8B%E3%80%82%20%20%0A6.%20%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F%E6%B3%A8%E9%87%8A%E6%9D%A5%E6%8F%8F%E8%BF%B0%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%E3%80%82%20%0A%0A%0A%0A%23%23%20%E7%AE%80%E5%8C%96%E5%BE%AA%E7%8E%AF%E5%92%8C%E9%80%BB%E8%BE%91%0A%0A%23%23%23%20%E6%8A%8A%E6%8E%A7%E5%88%B6%E6%B5%81%E5%8F%98%E5%BE%97%E6%98%93%E8%AF%BB%0A%0A%E5%85%B3%E9%94%AE%E6%80%9D%E6%83%B3%EF%BC%9A%E6%8A%8A%E6%9D%A1%E4%BB%B6%E3%80%81%E5%BE%AA%E7%8E%AF%E3%80%81%E4%BB%A5%E5%8F%8A%E5%85%B6%E4%BB%96%E5%AF%B9%E6%8E%A7%E5%88%B6%E6%B5%81%E7%9A%84%E6%94%B9%E5%8F%98%E5%81%9A%E7%9A%84%E8%B6%8A%E2%80%9C%E8%87%AA%E7%84%B6%E2%80%9D%E8%B6%8A%E5%A5%BD%E3%80%82%E8%AE%A9%E8%AF%BB%E8%80%85%E4%B8%8D%E7%94%A8%E5%81%9C%E4%B8%8B%E6%9D%A5%E9%87%8D%E8%AF%BB%E4%BB%A3%E7%A0%81%E3%80%82%0A%0A%23%23%23%23%20%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5%0A%0A-%20%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5%E4%B8%AD%E6%AF%94%E8%BE%83%E5%8F%82%E6%95%B0%E7%9A%84%E9%A1%BA%E5%BA%8F%EF%BC%8C%E6%9C%89%E4%BB%A5%E4%B8%8B%E6%8C%87%E5%AF%BC%E5%8E%9F%E5%88%99%EF%BC%9A%0A%0A%7C%20%E6%AF%94%E8%BE%83%E7%9A%84%E5%B7%A6%E4%BE%A7%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%E6%AF%94%E8%BE%83%E7%9A%84%E5%8F%B3%E4%BE%A7%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20----------------------------------------%20%7C%20--------------------------------------%20%7C%0A%7C%20%E2%80%9C%E8%A2%AB%E9%97%AE%E8%AF%A2%E7%9A%84%E2%80%9D%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E5%AE%83%E7%9A%84%E5%80%BC%E6%9B%B4%E5%80%BE%E5%90%91%E4%BA%8E%E4%B8%8D%E6%96%AD%E5%8F%98%E5%8C%96%20%7C%20%E7%94%A8%E6%9D%A5%E5%81%9A%E6%AF%94%E8%BE%83%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E5%AE%83%E7%9A%84%E5%80%BC%E6%9B%B4%E5%80%BE%E5%90%91%E4%BA%8E%E5%B8%B8%E9%87%8F%20%7C%0A%0A%E8%BF%99%E6%98%AF%E5%92%8C%E6%97%A5%E5%B8%B8%E8%AF%AD%E8%A8%80%E4%B9%A0%E6%83%AF%E6%98%AF%E4%B8%80%E8%87%B4%E7%9A%84%EF%BC%8C%E6%88%91%E4%BB%AC%E4%BC%9A%E5%BE%88%E8%87%AA%E7%84%B6%E7%9A%84%E8%AF%B4%EF%BC%9A%E2%80%9C%E5%A6%82%E6%9E%9C%E4%BD%A0%E7%9A%84%E5%B9%B4%E6%94%B6%E5%85%A5%E8%87%B3%E5%B0%91%E6%98%AF10%E4%B8%87%E2%80%9D%0A%0A-%20%E2%80%9C%E5%B0%A4%E8%BE%BE%E8%A1%A8%E7%A4%BA%E6%B3%95%E2%80%9D%EF%BC%9A%E5%9C%A8%E6%9C%89%E4%BA%9B%E8%AF%AD%E8%A8%80%E4%B8%AD%EF%BC%88%E5%8C%85%E6%8B%ACC%2B%2B%E5%92%8CC%EF%BC%8C%E4%B8%8D%E5%8C%85%E6%8B%ACJava%EF%BC%89%E4%B8%BA%E4%BA%86%E9%98%B2%E6%AD%A2%60if(obj%3D%3DNULL)%60%E8%A2%AB%E5%86%99%E6%88%90%60if(obj%3DNULL)%60%EF%BC%8C%E5%87%BA%E7%8E%B0%E4%BA%86%60if(NULL%3D%3Dobj)%60%E8%BF%99%E6%A0%B7%E7%9A%84%E5%86%99%E6%B3%95%EF%BC%8C%E4%BD%86%E6%98%AF%E8%BF%99%E6%A0%B7%E4%B8%8D%E5%88%A9%E4%BA%8E%E7%90%86%E8%A7%A3%EF%BC%8C%E4%B8%8E%E4%B8%8A%E4%B8%80%E6%9D%A1%E7%9B%B8%E6%82%96%EF%BC%8C%E7%8E%B0%E4%BB%A3%E7%BC%96%E8%AF%91%E5%99%A8%E5%B7%B2%E7%BB%8F%E8%83%BD%E5%AF%B9%60if(obj%3DNULL)%60%E7%BB%99%E5%87%BA%E8%AD%A6%E5%91%8A%EF%BC%8C%E6%89%80%E4%BB%A5%E8%BF%99%E4%B8%AA%E5%86%99%E6%B3%95%E5%B7%B2%E7%BB%8F%E8%BF%87%E6%97%B6%E4%BA%86%E3%80%82%0A%0A-%20if%2Felse%E8%AF%AD%E5%8F%A5%E5%9D%97%E7%9A%84%E9%A1%BA%E5%BA%8F%EF%BC%9A%0A%0A%20%20-%20%3D%3D%E9%A6%96%E5%85%88%E5%A4%84%E7%90%86%E6%AD%A3%E9%80%BB%E8%BE%91%E8%80%8C%E4%B8%8D%E6%98%AF%E8%B4%9F%E9%80%BB%E8%BE%91%E7%9A%84%E6%83%85%E5%86%B5%3D%3D%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E7%94%A8%60if(debug)%60%E8%80%8C%E4%B8%8D%E6%98%AF%60if(!debug)%60%0A%20%20-%20%3D%3D%E5%85%88%E5%A4%84%E7%90%86%E6%8E%89%E7%AE%80%E5%8D%95%E7%9A%84%E6%83%85%E5%86%B5%3D%3D%E3%80%82%E8%BF%99%E7%A7%8D%E6%96%B9%E5%BC%8F%E5%8F%AF%E8%83%BD%E8%BF%98%E4%BC%9A%E8%AE%A9if%E5%92%8Celse%E5%9C%A8%E5%B1%8F%E5%B9%95%E5%86%85%E9%83%BD%E5%8F%AF%E8%A7%81%0A%20%20-%20%3D%3D%E5%85%88%E5%A4%84%E7%90%86%E6%9C%89%E8%B6%A3%E7%9A%84%E6%88%96%E8%80%85%E6%98%AF%E5%8F%AF%E7%96%91%E7%9A%84%E6%83%85%E5%86%B5%3D%3D%0A%0A-%20%E4%B8%8D%E8%A6%81%E4%B8%BA%E4%BA%86%E5%87%8F%E5%B0%91%E4%BB%A3%E7%A0%81%E8%A1%8C%E6%95%B0%E8%80%8C%E4%BD%BF%E7%94%A8**%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6**%EF%BC%8C%E5%AE%83%E5%8F%AA%E9%80%82%E7%94%A8%E4%BA%8E%E4%BB%8E%E4%B8%A4%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E5%80%BC%E4%B8%AD%E4%BD%9C%E5%87%BA%E9%80%89%E6%8B%A9%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%8C%E4%BE%8B%E5%A6%82%EF%BC%9A%0A%0A%20%20%60%60%60c%2B%2B%0A%20%20time_str%20%2B%3D%20(hour%20%3E%3D%2012)%20%3F%20%22pm%22%20%3A%20%22am%22%3B%0A%20%20%60%60%60%0A%0A%3E%20%E5%9B%A0%E4%B8%BA%E5%B8%A6%E6%9C%89%E5%A4%8D%E6%9D%82%E9%80%BB%E8%BE%91%E7%9A%84%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6%E5%8F%8D%E8%80%8C%E5%A2%9E%E5%8A%A0%E4%BA%86%E4%BB%A3%E7%A0%81%E7%9A%84%E9%98%85%E8%AF%BB%E6%97%B6%E9%97%B4%20%0A%0A%23%23%23%23%20%E5%BE%AA%E7%8E%AF%0A%0A-%20%E9%81%BF%E5%85%8Ddo%2Fwhile%E5%BE%AA%E7%8E%AF%EF%BC%8C%E5%AE%83%E7%9A%84continue%E8%AF%AD%E5%8F%A5%E4%BC%9A%E8%AE%A9%E4%BA%BA%E8%BF%B7%E6%83%91%EF%BC%8Cwhile%E5%BE%AA%E7%8E%AF%E7%9B%B8%E5%AF%B9%E6%9B%B4%E5%8A%A0%E6%98%93%E8%AF%BB%E3%80%82%E5%AE%9E%E8%B7%B5%E4%B8%AD%EF%BC%8C%E5%A4%A7%E5%A4%9A%E6%95%B0do%2Fwhile%E5%BE%AA%E7%8E%AF%E9%83%BD%E5%8F%AF%E4%BB%A5%E5%86%99%E6%88%90while%E5%BE%AA%E7%8E%AF%0A%0A%23%23%23%23%20%E4%BB%8E%E5%87%BD%E6%95%B0%E6%8F%90%E5%89%8D%E8%BF%94%E5%9B%9E%0A%0A-%20%E5%87%BD%E6%95%B0%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%A4%9A%E6%9D%A1%60return%60%E8%AF%AD%E5%8F%A5%E6%98%AF%E6%B2%A1%E6%9C%89%E9%97%AE%E9%A2%98%E7%9A%84%0A-%20%E5%AE%9E%E7%8E%B0%E5%87%BD%E6%95%B0%E7%BB%93%E5%B0%BE%E7%9A%84%E6%B8%85%E7%90%86%E4%BB%A3%E7%A0%81%E7%9A%84%E6%9B%B4%E4%B8%BA%E7%B2%BE%E7%BB%86%E7%9A%84%E6%96%B9%E5%BC%8F%0A%0A%7C%20%E8%AF%AD%E8%A8%80%20%20%20%20%20%20%20%20%20%7C%20%E6%B8%85%E7%90%86%E4%BB%A3%E7%A0%81%E7%9A%84%E7%BB%93%E6%9E%84%E5%8C%96%E6%9C%AF%E8%AF%AD%20%7C%0A%7C%20------------%20%7C%20--------------------%20%7C%0A%7C%20C%2B%2B%20%20%20%20%20%20%20%20%20%20%7C%20%E6%9E%90%E6%9E%84%E5%87%BD%E6%95%B0%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20Java%E3%80%81Python%20%7C%20try%20finally%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20Python%20%20%20%20%20%20%20%7C%20with%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20C%23%20%20%20%20%20%20%20%20%20%20%20%7C%20using%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%0A-%20goto%E8%AF%AD%E5%8F%A5%E5%AF%B9%E7%A8%8B%E5%BA%8F%E6%98%93%E8%AF%BB%E6%80%A7%E7%9A%84%E7%A0%B4%E5%9D%8F%0A%0A%23%23%23%23%20%E5%B5%8C%E5%A5%97%0A%0A-%20%E6%B7%B1%E5%B1%82%E6%AC%A1%E7%9A%84%E5%B5%8C%E5%A5%97%E4%B8%A5%E9%87%8D%E5%BD%B1%E5%93%8D%E4%BB%A3%E7%A0%81%E7%9A%84%E5%8F%AF%E8%AF%BB%E6%80%A7%0A-%20%E5%B5%8C%E5%A5%97%E4%B8%80%E5%BC%80%E5%A7%8B%E6%98%AF%E5%BE%88%E7%AE%80%E5%8D%95%E7%9A%84%EF%BC%8C%E4%BD%86%E6%98%AF%E5%90%8E%E6%9D%A5%E7%9A%84%E6%94%B9%E5%8A%A8%E4%BC%9A%E5%8A%A0%E6%B7%B1%E5%B5%8C%E5%A5%97%0A-%20%E9%80%9A%E8%BF%87%E6%8F%90%E6%97%A9%E8%BF%94%E5%9B%9E%E6%9D%A5%E5%87%8F%E5%B0%91%E5%B5%8C%E5%A5%97%0A-%20%E5%87%8F%E5%B0%91%E5%BE%AA%E7%8E%AF%E5%86%85%E7%9A%84%E5%B5%8C%E5%A5%97%EF%BC%8C%E4%B8%8E%E6%8F%90%E6%97%A9%E8%BF%94%E5%9B%9E%E7%B1%BB%E4%BC%BC%E7%9A%84%E6%8A%80%E6%9C%AF%E6%98%AF%E4%BD%BF%E7%94%A8continue%0A%0A%23%23%23%23%20%E4%BB%A3%E7%A0%81%E6%B5%81%E7%A8%8B%0A%0A-%20%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E5%92%8C%E5%BA%93%E7%9A%84%E7%BB%93%E6%9E%84%E8%AE%A9%E4%BB%A3%E7%A0%81%E5%9C%A8%E2%80%9C%E5%B9%95%E5%90%8E%E8%BF%90%E8%A1%8C%E2%80%9D%EF%BC%8C%E6%88%96%E8%80%85%E8%AE%A9%E4%BB%A3%E7%A0%81%E9%9A%BE%E4%BB%A5%E7%90%86%E8%A7%A3%EF%BC%8C%E5%A6%82%EF%BC%9A%0A%0A%7C%20%E7%BC%96%E7%A8%8B%E7%BB%93%E6%9E%84%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%E9%AB%98%E5%B1%82%E6%AC%A1%E7%A8%8B%E5%BA%8F%E6%B5%81%E7%A8%8B%E6%98%AF%E5%A6%82%E4%BD%95%E5%8F%98%E5%BE%97%E4%B8%8D%E6%B8%85%E6%99%B0%E7%9A%84%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20-------------------%20%7C%20--------------------------------------------------%20%7C%0A%7C%20%E7%BA%BF%E7%A8%8B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%E4%B8%8D%E6%B8%85%E6%A5%9A%E4%BB%80%E4%B9%88%E6%97%B6%E9%97%B4%E6%89%A7%E8%A1%8C%E4%BB%80%E4%B9%88%E4%BB%A3%E7%A0%81%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%E4%BF%A1%E5%8F%B7%E9%87%8F%2F%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%20%7C%20%E6%9C%89%E4%BA%9B%E4%BB%A3%E7%A0%81%E9%9A%8F%E6%97%B6%E6%9C%89%E5%8F%AF%E8%83%BD%E6%89%A7%E8%A1%8C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%E5%BC%82%E5%B8%B8%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20%E5%8F%AF%E8%83%BD%E4%BC%9A%E4%BB%8E%E5%A4%9A%E4%B8%AA%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E4%B8%AD%E5%90%91%E4%B8%8A%E5%86%92%E6%B3%A1%E4%B8%80%E6%A0%B7%E5%9C%B0%E6%89%A7%E8%A1%8C%20%20%20%20%20%20%20%20%20%20%20%7C%0A%7C%20%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E5%92%8C%E5%8C%BF%E5%90%8D%E5%87%BD%E6%95%B0%20%20%7C%20%E5%BE%88%E9%9A%BE%E7%9F%A5%E9%81%93%E5%88%B0%E5%BA%95%E4%BC%9A%E6%89%A7%E8%A1%8C%E4%BB%80%E4%B9%88%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%9C%A8%E7%BC%96%E8%AF%91%E6%97%B6%E8%BF%98%E6%B2%A1%E6%9C%89%E5%86%B3%E5%AE%9A%20%7C%0A%7C%20%E8%99%9A%E6%96%B9%E6%B3%95%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20object.virtualMethod()%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%B0%83%E7%94%A8%E4%B8%80%E4%B8%AA%E6%9C%AA%E7%9F%A5%E5%AD%90%E7%B1%BB%E7%9A%84%E4%BB%A3%E7%A0%81%20%7C%0A%0A%E6%9C%89%E6%97%B6%E5%80%99%E8%BF%99%E5%BE%88%E6%9C%89%E7%94%A8%EF%BC%8C%E4%BD%86%E6%98%AF%E8%BF%98%E6%98%AF%E8%A6%81%E5%87%8F%E5%B0%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%AF%94%E4%BE%8B%EF%BC%8C%E5%90%A6%E5%88%99%E8%B7%9F%E8%B8%AA%E4%BB%A3%E7%A0%81%E5%B0%B1%E4%BC%9A%E5%83%8F%E8%B5%8C%E5%8D%9A%E4%B8%80%E6%A0%B7%E3%80%82%0A%0A%0A%0A%23%23%23%20%E6%8B%86%E5%88%86%E8%B6%85%E9%95%BF%E8%A1%A8%E8%BE%BE%E5%BC%8F%0A%0A%E5%85%B3%E9%94%AE%E6%80%9D%E6%83%B3%EF%BC%9A%E6%8A%8A%E8%B6%85%E9%95%BF%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%8B%86%E5%88%86%E6%88%90%E6%9B%B4%E5%AE%B9%E6%98%93%E7%90%86%E8%A7%A3%E7%9A%84%E5%B0%8F%E5%9D%97%0A%0A%23%23%23%23%20%E8%A7%A3%E9%87%8A%E5%8F%98%E9%87%8F%0A%0A-%20%E5%BC%95%E5%85%A5%E4%B8%80%E4%B8%AA%E9%A2%9D%E5%A4%96%E7%9A%84%E5%8F%98%E9%87%8F%EF%BC%8C%E4%BD%BF%E4%B9%8B%E6%88%90%E4%B8%BA%E4%B8%80%E4%B8%AA%E5%B0%8F%E4%B8%80%E7%82%B9%E7%9A%84**%E5%AD%90%E8%A1%A8%E8%BE%BE%E5%BC%8F**%0A%0A%60%60%60python%0A%E5%A6%82%20username%20%3D%20line.split('%3A')%5B0%5D.strip()%0A%60%60%60%0A%0A%23%23%23%23%20%E6%80%BB%E7%BB%93%E5%8F%98%E9%87%8F%0A%0A-%20%E7%94%A8%E4%B8%80%E4%B8%AA%E5%BE%88%E7%9F%AD%E7%9A%84%E5%90%8D%E5%AD%97%E6%9D%A5%E4%BB%A3%E6%9B%BF%E4%B8%80%E5%A4%A7%E5%9D%97%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%BC%9A%E6%9B%B4%E5%AE%B9%E6%98%93%E7%AE%A1%E7%90%86%E5%92%8C%E6%80%9D%E8%80%83%0A%0A%60%60%60python%0A%E5%A6%82%20user_own_document%20%3D%20(request.user.id%20%3D%3D%20document.owner_id)%0A%60%60%60%0A%0A%23%23%23%23%20%E4%BD%BF%E7%94%A8%E5%BE%B7%E6%91%A9%E6%A0%B9%E5%AE%9A%E7%90%86%0A%0A-%20(%E8%BF%99%E6%A0%B7%E7%9A%84bool%E6%93%8D%E4%BD%9C%E5%B7%B2%E7%BB%8F%E6%8E%8C%E6%8F%A1)%E5%88%86%E5%88%AB%E8%BF%9B%E8%A1%8C%E5%8F%96%E5%8F%8D%E3%80%81%E8%BD%AC%E6%8D%A2%E4%B8%8E%2F%E6%88%96%EF%BC%8C%E5%8F%8D%E5%90%91%E6%93%8D%E4%BD%9C%E6%98%AF%E6%8F%90%E5%8F%96%E5%87%BA%E2%80%9C%E5%8F%8D%E5%9B%A0%E5%AD%90%E2%80%9D%0A%0A%23%23%23%23%20%E4%B8%8D%E6%BB%A5%E7%94%A8%E7%9F%AD%E8%B7%AF%E6%93%8D%E4%BD%9C%0A%0A-%20%E7%9F%AD%E8%B7%AF%E6%93%8D%E4%BD%9C%E8%99%BD%E7%84%B6%E5%8F%AF%E4%BB%A5%E5%BE%88%E6%99%BA%E8%83%BD%E7%9A%84%E8%BF%90%E7%94%A8%E5%9C%A8%E6%9F%90%E4%BA%9B%E5%9C%BA%E6%99%AF%EF%BC%8C%E4%BD%BF%E4%B9%8B%E6%88%90%E4%B8%BA%E6%9D%A1%E4%BB%B6%E6%8E%A7%E5%88%B6%E7%9A%84%E6%95%88%E6%9E%9C%EF%BC%8C%E4%BD%86%E6%98%AF%E5%BD%B1%E5%93%8D%E4%BB%A3%E7%A0%81%E7%9A%84%E7%90%86%E8%A7%A3%0A-%20%E4%BD%86%E7%9F%AD%E8%B7%AF%E6%93%8D%E4%BD%9C%E5%9C%A8%E5%BE%88%E5%A4%9A%E6%83%85%E5%86%B5%E4%B8%8B%E4%B9%9F%E8%83%BD%E8%BE%BE%E5%88%B0%E7%AE%80%E6%B4%81%E7%9A%84%E7%9B%AE%E7%9A%84%0A%0A%23%23%23%23%20%E6%8B%86%E5%88%86%E5%B7%A8%E5%A4%A7%E7%9A%84%E8%AF%AD%E5%8F%A5%0A%0A-%20%E5%A4%8D%E6%9D%82%E7%9A%84%E9%80%BB%E8%BE%91%E4%BC%9A%E4%BA%A7%E7%94%9F%E5%A4%8D%E6%9D%82%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%A4%8D%E6%9D%82%E4%BC%9A%E5%A2%9E%E5%8A%A0%E4%BB%A3%E7%A0%81%E7%9A%84%E9%98%85%E8%AF%BB%E9%9A%BE%E5%BA%A6%EF%BC%8C%E8%A7%A3%E5%86%B3%E5%AE%83%E9%9C%80%E8%A6%81%E8%BD%AC%E6%8D%A2%E6%80%9D%E7%BB%B4%EF%BC%8C%E7%94%A8%E6%9B%B4%E4%BC%98%E9%9B%85%E7%9A%84%E6%96%B9%E5%BC%8F%0A-%20%E5%B7%A8%E5%A4%A7%E7%9A%84%E8%AF%AD%E5%8F%A5%E7%9A%84%E6%8B%86%E5%88%86%E9%9C%80%E8%A6%81%E6%89%BE%E5%88%B0%E9%87%8D%E5%A4%8D%E7%9A%84%E9%83%A8%E5%88%86%EF%BC%8C%E8%BF%9B%E8%A1%8C%E7%AE%80%E5%8C%96%0A-%20%E6%9C%89%E6%97%B6%E9%9C%80%E8%A6%81%E6%8A%8A%E9%97%AE%E9%A2%98%E2%80%9C%E5%8F%8D%E5%90%91%E2%80%9D%E6%88%96%E8%80%85%E8%80%83%E8%99%91%E7%9B%AE%E6%A0%87%E7%9A%84%E5%AF%B9%E7%AB%8B%E9%9D%A2%0A%0A%0A%0A%23%23%23%20%E5%8F%98%E9%87%8F%E4%B8%8E%E5%8F%AF%E8%AF%BB%E6%80%A7%0A%0A%E4%B8%BB%E8%A6%81%E9%97%AE%E9%A2%98%EF%BC%9A%0A%0A-%20%E5%8F%98%E9%87%8F%E8%B6%8A%E5%A4%9A%EF%BC%8C%E5%B0%B1%E8%B6%8A%E9%9A%BE%E5%85%A8%E9%83%A8%E8%B7%9F%E8%B8%AA%E5%AE%83%E4%BB%AC%E7%9A%84%E5%8A%A8%E5%90%91%0A-%20%E5%8F%98%E9%87%8F%E7%9A%84%E4%BD%9C%E7%94%A8%E5%9F%9F%E8%B6%8A%E5%A4%A7%EF%BC%8C%E5%B0%B1%E9%9C%80%E8%A6%81%E8%B7%9F%E8%B8%AA%E5%AE%83%E7%9A%84%E5%8A%A8%E5%90%91%E8%B6%8A%E4%B9%85%0A-%20%E5%8F%98%E9%87%8F%E6%94%B9%E5%8F%98%E5%BE%97%E8%B6%8A%E9%A2%91%E7%B9%81%EF%BC%8C%E5%B0%B1%E8%B6%8A%E9%9A%BE%E4%BB%A5%E8%B7%9F%E8%B8%AA%E5%AE%83%E7%9A%84%E5%BD%93%E5%89%8D%E5%80%BC%0A%0A%23%23%23%23%20%E5%87%8F%E5%B0%91%E4%B8%8D%E8%83%BD%E6%94%B9%E8%BF%9B%E5%8F%AF%E8%AF%BB%E6%80%A7%E7%9A%84%E5%8F%98%E9%87%8F%0A%0A-%20%E5%87%8F%E5%B0%91%E6%B2%A1%E6%9C%89%E4%BB%B7%E5%80%BC%E7%9A%84%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%EF%BC%8C%E6%AF%94%E5%A6%82%0A%20%20-%20%E6%B2%A1%E6%9C%89%E6%8B%86%E5%88%86%E4%BB%BB%E4%BD%95%E5%A4%8D%E6%9D%82%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%0A%20%20-%20%E6%B2%A1%E6%9C%89%E5%81%9A%E6%9B%B4%E5%A4%9A%E7%9A%84%E8%A7%A3%E9%87%8A%0A%20%20-%20%E5%8F%AA%E7%94%A8%E8%BF%87%E4%B8%80%E6%AC%A1%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%B2%A1%E6%9C%89%E5%8E%8B%E7%BC%A9%E4%BB%BB%E4%BD%95%E5%86%97%E4%BD%99%E4%BB%A3%E7%A0%81%0A-%20%E5%87%8F%E5%B0%91%E4%B8%AD%E9%97%B4%E7%BB%93%E6%9E%9C%0A-%20%E5%87%8F%E5%B0%91%E6%8E%A7%E5%88%B6%E6%B5%81%E5%8F%98%E9%87%8F%0A%0A%60%60%60java%0Awhile(%2F*condition*%2F%26%26!done)%7B%0A%20%20if(...)%7B%0A%20%20%20%20done%20%3D%20true%3B%0A%20%20%20%20continue%3B%0A%20%20%7D%0A%7D%0A%60%60%60%0A%0Adone%E5%B0%B1%E6%98%AF%E6%8E%A7%E5%88%B6%E6%B5%81%E5%8F%98%E9%87%8F%EF%BC%8C%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E6%9B%B4%E5%A5%BD%E7%9A%84%E8%BF%90%E7%94%A8%E7%BB%93%E6%9E%84%E5%8C%96%E7%BC%96%E7%A8%8B%E8%80%8C%E6%B6%88%E9%99%A4%EF%BC%9A%0A%0A%60%60%60java%0Awhile(%2F*condition*%2F)%7B%0A%20%20if(...)%7B%0A%20%20%20%20break%3B%0A%20%20%7D%0A%7D%0A%60%60%60%0A%0A%E5%BD%93%E6%9C%89%E5%A4%9A%E4%B8%AA%E5%B5%8C%E5%A5%97%E7%9A%84%E5%BE%AA%E7%8E%AF%E6%97%B6%EF%BC%8C%E4%B8%80%E4%B8%AA%60break%60%E5%8F%AF%E8%83%BD%E4%B8%8D%E5%A4%9F%EF%BC%8C%E9%80%9A%E5%B8%B8%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%98%AF%E6%8A%8A%E4%BB%A3%E7%A0%81%E6%8C%AA%E5%88%B0%E4%B8%80%E4%B8%AA%E6%96%B0%E6%96%B9%E6%B3%95%E4%B8%AD%0A%0A%23%23%23%23%20%E7%BC%A9%E5%B0%8F%E5%8F%98%E9%87%8F%E7%9A%84%E4%BD%9C%E7%94%A8%E5%9F%9F%0A%0A-%20%E9%81%BF%E5%85%8D%E6%BB%A5%E7%94%A8%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%0A-%20%E8%AE%A9%E4%BD%A0%E7%9A%84%E4%BB%A3%E7%A0%81%E5%AF%B9%E5%B0%BD%E9%87%8F%E5%B0%91%E7%9A%84%E4%BB%A3%E7%A0%81%E8%A1%8C%E5%8F%AF%E8%A7%81%0A-%20%3D%3D%E6%8A%8A%E5%AE%9A%E4%B9%89%E5%BE%80%E4%B8%8B%E7%A7%BB%EF%BC%8C%E5%8F%98%E9%87%8F%E5%AE%9A%E4%B9%89%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%B9%8B%E5%89%8D%E5%8D%B3%E5%8F%AF%3D%3D%0A%0A%23%23%23%23%20%E5%8F%AA%E5%86%99%E4%B8%80%E6%AC%A1%E7%9A%84%E5%8F%98%E9%87%8F%E6%9B%B4%E5%A5%BD%0A%0A-%20%E9%82%A3%E4%BA%9B%E5%8F%AA%E8%AE%BE%E7%BD%AE%E4%B8%80%E6%AC%A1%E5%80%BC%E7%9A%84%E5%8F%98%E9%87%8F%EF%BC%88%E6%88%96%E8%80%85const%E3%80%81final%E3%80%81%E5%B8%B8%E9%87%8F%EF%BC%89%E4%BD%BF%E5%BE%97%E4%BB%A3%E7%A0%81%E6%9B%B4%E5%AE%B9%E6%98%93%E7%90%86%E8%A7%A3%0A%0A-%20%E5%B0%B1%E7%AE%97%E4%B8%8D%E8%83%BD%E8%AE%A9%E5%8F%98%E9%87%8F%E5%8F%AA%E5%86%99%E4%B8%80%E6%AC%A1%EF%BC%8C%E8%AE%A9%E5%8F%98%E9%87%8F%E5%9C%A8%E8%BE%83%E5%B0%91%E7%9A%84%E5%9C%B0%E6%96%B9%E6%94%B9%E5%8A%A8%E4%BB%8D%E6%9C%89%E5%B8%AE%E5%8A%A9%0A-%20%E6%93%8D%E4%BD%9C%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%E7%9A%84%E5%9C%B0%E6%96%B9%E8%B6%8A%E5%A4%9A%EF%BC%8C%E8%B6%8A%E9%9A%BE%E7%A1%AE%E5%AE%9A%E5%AE%83%E7%9A%84%E5%BD%93%E5%89%8D%E5%80%BC%0A%0A%0A%0A%23%23%20%E9%87%8D%E6%96%B0%E7%BB%84%E7%BB%87%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%20%E6%8A%BD%E5%8F%96%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E5%AD%90%E9%97%AE%E9%A2%98%0A%0A%23%23%23%23%20%E7%A7%AF%E6%9E%81%E7%9A%84%E5%8F%91%E7%8E%B0%E5%B9%B6%E6%8A%BD%E5%8F%96%E5%87%BA%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E5%AD%90%E9%80%BB%E8%BE%91%0A%0A-%20%E7%90%86%E8%A7%A3%E6%9F%90%E4%B8%AA%E5%87%BD%E6%95%B0%E6%88%96%E8%80%85%E4%BB%A3%E7%A0%81%E5%9D%97%E9%AB%98%E5%B1%82%E6%AC%A1%E7%9A%84%E7%9B%AE%E6%A0%87%0A-%20%E5%AF%B9%E4%BA%8E%E6%AF%8F%E8%A1%8C%E4%BB%A3%E7%A0%81%E7%A1%AE%E5%AE%9A%E5%AE%83%E6%98%AF%E5%90%A6%E4%B8%BA%E7%9B%AE%E6%A0%87%E8%80%8C%E5%B7%A5%E4%BD%9C%0A-%20%E5%A6%82%E6%9E%9C%E6%9C%89%E5%BE%88%E5%A4%9A%E4%BB%A3%E7%A0%81%E8%A1%8C%E5%9C%A8%E8%A7%A3%E5%86%B3%20%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E5%AD%90%E9%97%AE%E9%A2%98%EF%BC%8C%E5%B0%86%E5%AE%83%E6%8A%BD%E5%8F%96%E5%88%B0%E7%8B%AC%E7%AB%8B%E7%9A%84%E5%87%BD%E6%95%B0%E4%B8%AD%0A%0A%23%23%23%23%20%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E4%B8%8D%E7%9B%B8%E5%85%B3%E2%80%9D%E7%9A%84%E5%AD%90%E9%97%AE%E9%A2%98%0A%0A-%20%E5%AE%8C%E5%85%A8%E6%98%AF%E8%87%AA%E5%8C%85%E5%90%AB%E7%9A%84%EF%BC%8C%E5%B9%B6%E4%B8%8D%E7%9F%A5%E9%81%93%E5%85%B6%E4%BB%96%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%AE%83%E7%9A%84%0A-%20%E7%BA%AF%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%BE%8B%E5%A6%82%E6%93%8D%E4%BD%9C%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E4%BD%BF%E7%94%A8%E5%93%88%E5%B8%8C%E8%A1%A8%E4%BB%A5%E5%8F%8A%E8%AF%BB%2F%E5%86%99%E6%96%87%E4%BB%B6%0A-%20%E9%80%9A%E7%94%A8%E7%9A%84%E4%BB%A3%E7%A0%81%E5%BA%93%0A%0A%23%23%23%23%20%E4%BC%98%E5%8C%96%E7%8E%B0%E6%9C%89%E7%9A%84%E6%8E%A5%E5%8F%A3%0A%0A-%20%E6%B0%B8%E8%BF%9C%E4%B8%8D%E8%A6%81%E5%AE%89%E4%BA%8E%E4%BD%BF%E7%94%A8%E4%B8%8D%E7%90%86%E6%83%B3%E7%9A%84%E6%8E%A5%E5%8F%A3%0A-%20%E5%88%9B%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8C%85%E8%A3%85%E5%87%BD%E6%95%B0%E5%92%8C%E9%9A%90%E8%97%8F%E6%8E%A5%E5%8F%A3%E7%9A%84%E7%B2%97%E9%99%8B%E7%BB%86%E8%8A%82%0A-%20%E6%8C%89%E9%9C%80%E8%A6%81%E9%87%8D%E5%A1%91%E6%8E%A5%E5%8F%A3%0A%0A%23%23%23%23%20%E8%BF%87%E7%8A%B9%E4%B8%8D%E5%8F%8A%0A%0A-%20%E6%9B%B4%E5%A4%9A%E7%9A%84%E5%B0%8F%E5%87%BD%E6%95%B0%E6%84%8F%E5%91%B3%E7%9D%80%E6%9B%B4%E5%A4%9A%E7%9A%84%E4%B8%9C%E8%A5%BF%E9%9C%80%E8%A6%81%E5%85%B3%E6%B3%A8%0A-%20%E4%B8%8D%E8%A6%81%E4%B8%BA%E4%BA%86%E6%8A%BD%E5%8F%96%E8%80%8C%E6%8A%BD%E5%8F%96%0A%0A%0A%0A%23%23%23%20%E4%BB%A3%E7%A0%81%E5%BA%94%E5%BD%93%E4%B8%80%E6%AC%A1%E5%8F%AA%E5%81%9A%E4%B8%80%E4%BB%B6%E4%BA%8B%E6%83%85%0A%0A%E7%9B%B8%E5%BD%93%E4%BA%8E%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E5%BA%94%E8%AF%A5%E5%8F%AA%E5%81%9A%E4%B8%80%E4%BB%B6%E4%BA%8B%E6%83%85%EF%BC%8C%E4%BD%86%E6%98%AF%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%94%A8%E7%A9%BA%E7%99%BD%E8%A1%8C%E5%8C%BA%E5%88%86%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8B%E6%83%85%EF%BC%8C%E6%9D%A5%E8%BE%BE%E5%88%B0%E9%80%BB%E8%BE%91%E4%B8%8A%E7%9A%84%E6%B8%85%E6%99%B0%0A%0A%23%23%23%23%20%E5%88%97%E5%87%BA%E4%BB%BB%E5%8A%A1%0A%0A-%20%E5%B0%86%E6%89%80%E6%9C%89%E4%BB%BB%E5%8A%A1%E5%88%97%E5%87%BA%E6%9D%A5%EF%BC%8C%E5%85%B6%E4%B8%AD%E4%B8%80%E4%BA%9B%E4%BB%BB%E5%8A%A1%E5%8F%AF%E4%BB%A5%E5%BE%88%E5%AE%B9%E6%98%93%E5%9C%B0%E7%BC%96%E7%A8%8B%E5%8D%95%E7%8B%AC%E7%9A%84%E5%87%BD%E6%95%B0%EF%BC%88%E6%88%96%E7%B1%BB%EF%BC%89%0A-%20%E9%9A%BE%E7%82%B9%E5%9C%A8%E4%BA%8E%E5%87%86%E7%A1%AE%E6%8F%8F%E8%BF%B0%E5%88%97%E5%87%BA%E7%9A%84%E6%89%80%E6%9C%89%E7%9A%84%E5%B0%8F%E4%BB%BB%E5%8A%A1%0A%0A%23%23%23%23%20%E5%88%86%E5%89%B2%E4%BB%BB%E5%8A%A1%0A%0A-%20%E5%88%86%E5%BC%80%E8%A7%A3%E5%86%B3%E4%BB%BB%E5%8A%A1%E4%BD%BF%E4%BB%A3%E7%A0%81%E5%8F%98%E5%BE%97%E6%9B%B4%E5%B0%8F%0A%0A%23%23%23%20%E6%8A%8A%E6%83%B3%E6%B3%95%E5%8F%98%E6%88%90%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%23%20%E6%96%B9%E6%B3%95%0A%0A-%20%E7%94%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E6%8F%8F%E8%BF%B0%E7%A8%8B%E5%BA%8F%0A-%20%E7%94%A8%E8%BF%99%E4%B8%AA%E6%8F%8F%E8%BF%B0%E6%9D%A5%E5%B8%AE%E5%8A%A9%E4%BD%A0%E5%86%99%E5%87%BA%E6%9B%B4%E8%87%AA%E7%84%B6%E7%9A%84%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%23%20%E7%94%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E8%AF%B4%E4%BA%8B%E6%83%85%0A%0A-%20%E2%80%9C%E5%B0%8F%E9%BB%84%E9%B8%AD%E6%B3%95%E2%80%9D%E8%A7%A3%E5%86%B3%E6%89%80%E9%81%87%E5%88%B0%E7%9A%84%E4%BB%A3%E7%A0%81%E9%97%AE%E9%A2%98%0A-%20%E5%A6%82%E6%9E%9C%E4%BD%A0%E4%B8%8D%E8%83%BD%E6%8A%8A%E9%97%AE%E9%A2%98%E8%AF%B4%E6%98%8E%E7%99%BD%E6%88%96%E8%80%85%E7%94%A8%E8%AF%8D%E8%AF%AD%E6%9D%A5%E8%AE%BE%E8%AE%A1%EF%BC%8C%E4%BC%B0%E8%AE%A1%E6%98%AF%E7%BC%BA%E5%B0%91%E4%BA%86%E4%BB%80%E4%B9%88%E4%B8%9C%E8%A5%BF%E6%88%96%E8%80%85%E4%BB%80%E4%B9%88%E4%B8%9C%E8%A5%BF%E7%BC%BA%E5%B0%91%E5%AE%9A%E4%B9%89%0A%0A%23%23%23%20%E5%B0%91%E5%86%99%E4%BB%A3%E7%A0%81%0A%0A-%20%E9%87%8D%E7%94%A8%E5%BA%93%E6%88%96%E8%80%85%E5%87%8F%E5%B0%91%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%8A%82%E7%9C%81%E6%97%B6%E9%97%B4%E5%B9%B6%E4%B8%94%E8%AE%A9%E4%BB%A3%E7%A0%81%E5%BA%93%E4%BF%9D%E6%8C%81%E7%B2%BE%E7%AE%80%E8%8A%82%E7%BA%A6%0A-%20%E6%9C%80%E5%A5%BD%E8%AF%BB%E7%9A%84%E4%BB%A3%E7%A0%81%E5%B0%B1%E6%98%AF%E6%B2%A1%E6%9C%89%E4%BB%A3%E7%A0%81%0A%0A%23%23%23%23%20%E4%B8%8D%E5%8E%BB%E8%B4%B9%E6%97%B6%E9%97%B4%E5%AE%9E%E7%8E%B0%E4%B8%8D%E9%9C%80%E8%A6%81%E7%9A%84%E5%8A%9F%E8%83%BD%0A%0A-%20%E6%B2%A1%E7%94%A8%E7%9A%84%E5%8A%9F%E8%83%BD%E5%B0%BD%E7%AE%A1%E5%BE%88%E9%85%B7%EF%BC%8C%E4%BD%86%E4%BC%9A%E8%AE%A9%E7%A8%8B%E5%BA%8F%E6%9B%B4%E5%A4%8D%E6%9D%82%0A%0A%23%23%23%23%20%E8%B4%A8%E7%96%91%E5%92%8C%E6%8B%86%E5%88%86%E9%9C%80%E6%B1%82%0A%0A-%20%E4%BB%8E%E9%A1%B9%E7%9B%AE%E4%B8%AD%E6%B6%88%E9%99%A4%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%B8%8D%E8%A6%81%E8%BF%87%E5%BA%A6%E8%AE%BE%E8%AE%A1%0A-%20%E9%87%8D%E6%96%B0%E8%80%83%E8%99%91%E9%9C%80%E6%B1%82%EF%BC%8C%E8%A7%A3%E5%86%B3%E7%89%88%E6%9C%AC%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E5%8F%AA%E8%A6%81%E5%AE%8C%E6%88%90%E5%B7%A5%E4%BD%9C%E5%B0%B1%E8%A1%8C%0A%0A%23%23%23%23%20%E8%AE%A9%E4%BD%A0%E7%9A%84%E4%BB%A3%E7%A0%81%E5%BA%93%E8%B6%8A%E5%B0%8F%EF%BC%8C%E8%B6%8A%E8%BD%BB%E9%87%8F%E7%BA%A7%E8%B6%8A%E5%A5%BD%0A%0A-%20%E5%88%9B%E5%BB%BA%E8%B6%8A%E5%A4%9A%E8%B6%8A%E5%A5%BD%E7%9A%84%E2%80%9C%E5%B7%A5%E5%85%B7%E2%80%9D%E4%BB%A5%E5%87%8F%E5%B0%91%E9%87%8D%E5%A4%8D%E4%BB%A3%E7%A0%81%0A-%20%E5%87%8F%E5%B0%91%E6%97%A0%E7%94%A8%E4%BB%A3%E7%A0%81%E6%88%96%E8%80%85%E6%B2%A1%E6%9C%89%E7%94%A8%E7%9A%84%E5%8A%9F%E8%83%BD%0A-%20%E6%98%AF%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E5%AD%90%E9%A1%B9%E7%9B%AE%E8%A7%A3%E8%80%A6%0A-%20%E4%BF%9D%E6%8C%81%E4%BB%A3%E7%A0%81%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BA%A7%0A%0A%23%23%23%23%20%E4%BF%9D%E6%8C%81%E5%AF%B9%E6%A0%87%E5%87%86%E5%BA%93%E7%9A%84API%E7%9A%84%E7%86%9F%E6%82%89%EF%BC%8C%E5%B0%BD%E9%87%8F%E4%BD%BF%E7%94%A8%E6%A0%87%E5%87%86%E5%BA%93%E8%A7%A3%E5%86%B3%E7%8E%B0%E5%AE%9E%E9%97%AE%E9%A2%98%0A%0A%0A%0A%23%23%23%20%E6%B5%8B%E8%AF%95%E4%B8%8E%E5%8F%AF%E8%AF%BB%E6%80%A7%0A%0A%E5%9C%A8%E6%B5%8B%E8%AF%95%E4%BB%A3%E7%A0%81%E4%B8%AD%EF%BC%8C%E5%8F%AF%E8%AF%BB%E6%80%A7%E4%BB%8D%E7%84%B6%E5%BE%88%E9%87%8D%E8%A6%81%E3%80%82%E5%A6%82%E6%9E%9C%E6%B5%8B%E8%AF%95%E7%9A%84%E5%8F%AF%E8%AF%BB%E6%80%A7%E5%BE%88%E5%A5%BD%EF%BC%8C%E5%85%B6%E7%BB%93%E6%9E%9C%E6%98%AF%E4%BB%96%E4%BB%AC%E4%B9%9F%E4%BC%9A%E5%8F%98%E5%BE%97%E5%BE%88%E5%AE%B9%E6%98%93%E5%86%99%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%A4%A7%E5%AE%B6%E4%BC%9A%E5%86%99%E6%9B%B4%E5%A4%9A%E7%9A%84%E6%B5%8B%E8%AF%95%E3%80%82%E5%B9%B6%E4%B8%94%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%8A%8A%E4%BA%8B%E5%AE%9E%E4%BB%A3%E7%A0%81%E8%AE%BE%E8%AE%A1%E5%BE%97%E5%AE%B9%E6%98%93%E6%B5%8B%E8%AF%95%EF%BC%8C%E4%BB%A3%E7%A0%81%E8%AE%BE%E8%AE%A1%E4%BC%9A%E5%8F%98%E5%BE%97%E6%9B%B4%E5%A5%BD%E3%80%82%E4%BB%A5%E4%B8%8B%E6%98%AF%E5%A6%82%E4%BD%95%E6%94%B9%E8%BF%9B%E6%B5%8B%E8%AF%95%E7%9A%84%E5%85%B7%E4%BD%93%E8%A6%81%E7%82%B9%EF%BC%9A%0A%0A-%20%E6%AF%8F%E4%B8%AA%E6%B5%8B%E8%AF%95%E7%9A%84%E6%9C%80%E9%AB%98%E4%B8%80%E6%AC%A1%E5%BA%94%E8%AF%A5%E8%B6%8A%E7%AE%80%E6%98%8E%E8%B6%8A%E5%A5%BD%E3%80%82%E6%9C%80%E5%A5%BD%E6%AF%8F%E4%B8%AA%E6%B5%8B%E8%AF%95%E7%9A%84%E8%BE%93%E5%85%A5%2F%E8%BE%93%E5%87%BA%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%B8%80%E8%A1%8C%E4%BB%A3%E7%A0%81%E6%8F%8F%E8%BF%B0%EF%BC%9B%0A-%20%E5%A6%82%E6%9E%9C%E6%B5%8B%E8%AF%95%E5%A4%B1%E8%B4%A5%E4%BA%86%EF%BC%8C%E5%AE%83%E6%89%80%E5%8F%91%E5%87%BA%E7%9A%84%E9%94%99%E8%AF%AF%E6%B6%88%E6%81%AF%E5%BA%94%E8%AF%A5%E8%83%BD%E8%AE%A9%E4%BD%A0%E5%AE%B9%E6%98%93%E8%B7%9F%E8%B8%AA%E5%B9%B6%E4%BF%AE%E6%AD%A3%E8%BF%99%E4%B8%AAbug%EF%BC%9B%0A-%20%E4%BD%BF%E7%94%A8%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84%E5%B9%B6%E4%B8%94%E8%83%BD%E5%A4%9F%E5%AE%8C%E6%95%B4%E8%BF%90%E7%94%A8%E4%BB%A3%E7%A0%81%E7%9A%84%E6%B5%8B%E8%AF%95%E8%BE%93%E5%85%A5%EF%BC%9B%0A-%20%E7%BB%99%E6%B5%8B%E8%AF%95%E5%87%BD%E6%95%B0%E5%8F%96%E4%B8%80%E4%B8%AA%E6%9C%89%E5%AE%8C%E6%95%B4%E6%8F%8F%E8%BF%B0%E6%80%A7%E7%9A%84%E5%90%8D%E5%AD%97%EF%BC%8C%E4%BB%A5%E4%BD%BF%E6%AF%8F%E4%B8%AA%E6%B5%8B%E8%AF%95%E6%89%80%E6%B5%8B%E5%88%B0%E7%9A%84%E4%B8%9C%E8%A5%BF%E5%BE%88%E6%98%8E%E7%A1%AE%E3%80%82%E4%B8%8D%E8%A6%81%E7%94%A8Test1()%EF%BC%8C%E8%80%8C%E8%A6%81%E5%83%8FTest___%E8%BF%99%E6%A0%B7%E7%9A%84%E5%90%8D%E5%AD%97%E3%80%82%0A%0A%E6%9C%80%E9%87%8D%E8%A6%81%E7%9A%84%E6%98%AF%EF%BC%8C%E8%A6%81%E4%BD%BF%E5%AE%83%E6%98%93%E4%BA%8E%E6%94%B9%E5%8A%A8%E5%92%8C%E5%A2%9E%E5%8A%A0%E6%96%B0%E7%9A%84%E6%B5%8B%E8%AF%95%E3%80%82%0A%0A!%5B1569720125207%5D(assets%2F1569720125207.png)%0A%0A%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91%EF%BC%88TDD%EF%BC%89%EF%BC%9A%E6%98%AF%E4%B8%80%E7%A7%8D%E5%8F%AF%E9%80%89%E7%9A%84%E7%BC%96%E7%A8%8B%E9%A3%8E%E6%A0%BC%EF%BC%8C%E5%9C%A8%E5%86%99%E7%9C%9F%E5%AE%9E%E4%BB%A3%E7%A0%81%E4%B9%8B%E5%89%8D%E5%B0%B1%E5%86%99%E5%87%BA%E6%B5%8B%E8%AF%95%E3%80%82%0A%0A!%5B1569720911360%5D(assets%2F1569720911360.png)%0A%0A!%5B1569720921994%5D(assets%2F1569720921994.png)%0A%0A%0A%0A%0A%0A

comments powered by Disqus