2019独角兽企业重金招聘Python工程师标准>>>

笔者在前一篇文章Scorm标准学习——基于Scorm1.2(一)中对LMS及Scorm标准体系结构做了介绍。这里将对Scorm运行时环境(RTE)进行介绍,主要涉及RTE API和数据模型(Data Model),仍基于Scorm1.2标准。更为详细的信息可参考Scorm1.2标准的官方文档中关于RTE的论述。 ##Scorm RTE概述## Scorm标准的目的之一是使得课件与平台相独立,使得课件的复用和重组成为可能。CAM定义了Scorm课件的组织结构规范,而RTE则为课件与平台的交互提供了统一的标准。Scorm RTE定义了通用的内容对象运行机制,包括Launch、API以及Data Model。
Launch: 定义了内容对象的发布,描述了如何启动一个Scorm内容对象(Asset和SCO两种),并确立了内容对象和LMS之间的通信机制。
API: 定义了LMS与内容对象之间的通信API,使得内容对象在需要时通过API与LMS进行交互存取数据。API会将获得的数据模型实例存储在用户端的内存中(如一个JavaScript对象),并在需要时将该数据发送至LMS平台。
Data Model: 描述了跟踪用户学习通用数据模型,即内容对象在与LMS进行通信时所依赖的数据结构,包括用户的学习时间、完成状态、成绩等元素。LMS需要对每个用户的每个内容对象维护一个Data Model数据结构。
API提供了内容对象与LMS通信的接口,而DM则描述了通信所使用的数据模型,API+DM使得内容对象在不同的LMS系统中具有了通用性。
##API接口## API由LMS提供实现,向内容对象暴露接口。内容对象(以SCO为例)在需要与LMS交互时会主动调用LMS提供的API接口,LMS的API实现一般是以http的方式向LMS Server发出请求,最终由LMS完成数据的存取。因API暴露在前端,一般采用JavaScript脚本或Java Applet实现。
###API函数### Scorm1.2中API函数可分为三类,如下表:
表1 Scorm API函数分类

<table width=100% border="1"> <tr bgcolor="#BBBBBB"> <th width=30%>函数分类</th> <th width=40%>描述</th> <th width=30%>函数</th> </tr> <tr> <td width=30% valign="middle">Session Methods</td> <td width=40% valign="middle">会话函数:通过API实例标记内容对象与LMS之间的通信</td> <td width=30% align=center>LMSInitialize<br>LMSFinish</td> </tr> <tr> <td width=30% valign="middle">Data-transfer Methods</td> <td width=40% valign="middle">数据传输函数:用于内容对象与LMS之间的数据传递</td> <td width=30% align=center>LMSSetValue<br>LMSGetValue<br>LMSCommit</td> </tr> <tr> <td width=30% valign="middle">Support Methods</td> <td width=40% valign="middle">支持函数:用于获取辅助信息,包括错误信息和错误诊断</td> <td width=30% align=center>LMSGetLastError<br>LMSGetErrorString<br>LMSGetDiagnostic</td> </tr> </table> 如表1所示,Scorm标准中定义了8个API函数(Scorm2004稍有不同),其具体功能如下: **LMSInitialize:** 初始化函数,负责在当前学习的内容对象和LMS之间建立通信连接,并从LMS取得该当前用户关于当前内容对象的学习记录信息,即整个DM数据结构。内容对象在载入时均会通过该方法获得初始运行时数据。函数成功执行返回"true"(字符串,非布尔值,下同),否则返回"false"。 **LMSFinish:** 结束函数,结束一个内容对象与LMS的通信连接。内容对象在退出前均会调用该方法。通常实现时,该方法会调用LMSCommit提交一次最近的数据。当LMS平台在API实现时,选择HTTP协议进行无状态通信,则该函数本身将不产生数据通信,仅仅是调用LMSCommit提交一次数据。成功执行返回"true",否则返回"false"。 **LMSSetValue:** 负责更新一个数据模型的属性值。该方法原型为LMSSetValue(element, value),参数element标识要设置的属性,value则是属性的值。内容对象在需要更改DM的某一属性值时会调用该函数,如当用户完成学习一个内容对象后需将该内容对象的cmi.core.lesson_status更新为completed。通常该函数只是更新客户端内存中该属性的值,而非直接提交至LMS平台。函数成功执行返回"true",否则返回"false"。 **LMSGetValue:** 获取一个数据模型的属性值。该方法有一个element参数,表示属性名。通常该方法直接从客户端内存中取出所需的值。成功执行则返回对应的属性值,否则返回空字符串。 **LMSCommit:** 提交函数,负责将客户端内存中目前的RTE数据提交至LMS平台,由平台完成最后的分析写入工作。采用JS实现的API可用AJAX进行数据提交。成功返回"true",否则返回"false"。 **LMSGetLastError:** 获得错误码,当内容对象调用API时返回"false"或产生其他错误时,可调用该函数获得具体的错误代码,API实现中需要设置相应的错误码。 **LMSGetErrorString:** 获得错误码对应的字符串说明,参数为错误码。 **LMSGetDiagnostic:** 获得针对当前错误的诊断信息,参数为错误码。 ###错误码### Scorm1.2定义的错误码如表2(Scorm2004错误码定义更为详细): *表2 Scorm1.2错误码* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20%>错误码</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle" align="center">0</td> <td width=60% valign="middle">无错误</td> </tr> <tr> <td width=20% valign="middle" align="center">101</td> <td width=60% valign="middle">一般错误</td> </tr> <tr> <td width=20% valign="middle" align="center">201</td> <td width=60% valign="middle">参数无效</td> </tr> <tr> <td width=20% valign="middle" align="center">202</td> <td width=60% valign="middle">元素属性无子节点(children属性)</td> </tr> <tr> <td width=20% valign="middle" align="center">203</td> <td width=60% valign="middle">属性非集合类型,无count属性</td> </tr> <tr> <td width=20% valign="middle" align="center">301</td> <td width=60% valign="middle">LMS未初始化</td> </tr> <tr> <td width=20% valign="middle" align="center">401</td> <td width=60% valign="middle">未实现的数据元素模型</td> </tr> <tr> <td width=20% valign="middle" align="center">402</td> <td width=60% valign="middle">无效的setvalue操作,传递的element是关键字</td> </tr> <tr> <td width=20% valign="middle" align="center">403</td> <td width=60% valign="middle">元素属性只读</td> </tr> <tr> <td width=20% valign="middle" align="center">404</td> <td width=60% valign="middle">元素属性只写</td> </tr> <tr> <td width=20% valign="middle" align="center">405</td> <td width=60% valign="middle">错误的数据类型</td> </tr> </table> ##Data Model## Scorm1.2 RTE数据模型部分定义了跟踪内容对象的数据结构。LMS平台需要为每个用户的每个内容单元维护一组数据模型实例,该实例数据记录了该用户对应于该内容对象的学习状态(如分数、进度、完成状态等)。DM中所有的属性均以cmi开头,以"."分隔。同时数据模型中定了了三个关键字:_version、_children、_count,保留的关键字受LMS管理,且均为只读(如使用LMSSetValue设置_version属性,则会返回false,且API应在实现时将错误码置为402)。 **_version:** 标识了LMS平台支持的数据模型版本,该属性不可用于数据模型元素上(即只能以cmi._version方式获取) **_children:** 返回某一数据模型元素的所有子属性(元素),以字符串形式返回,并以执行的分隔符分隔 **_count:** 返回一个数据模型元素集合中包含的元素总数,仅用于集合类型的数据模型 ###数据类型### Scorm1.2为各种数据模型元素定义了如下类型: *表3 Scorm1.2数据类型* <table width=100% border="1"> <tr bgcolor=#EEEEEE> <th width=20% align="left">数据类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">CMIBlank</td> <td width=60% valign="middle">空字符串</td> </tr> <tr> <td width=20% valign="middle">CMIBoolean</td> <td width=60% valign="middle">bool字符串ture或false</td> </tr> <tr> <td width=20% valign="middle">CMIDecimal</td> <td width=60% valign="middle">带小数的数字</td> </tr> <tr> <td width=20% valign="middle">CMIFeedback</td> <td width=60% valign="middle">描述interaction属性中的内容的结构</td> </tr> <tr> <td width=20% valign="middle">CMIIdentifier</td> <td width=60% valign="middle">字母数字混合的字符串,不包含空格和非打印字符,不超过255</td> </tr> <tr> <td width=20% valign="middle">CMIInteger</td> <td width=60% valign="middle">整数(0, 65536)</td> </tr> <tr> <td width=20% valign="middle">CMISInteger</td> <td width=60% valign="middle">有符号整数(-32768, 32768)</td> </tr> <tr> <td width=20% valign="middle">CMIString255</td> <td width=60% valign="middle">ASCII字符串,不超过255</td> </tr> <tr> <td width=20% valign="middle">CMIString4096</td> <td width=60% valign="middle">ASCII字符串,不超过4096</td> </tr> <tr> <td width=20% valign="middle">CMITime</td> <td width=60% valign="middle">时间类型,HH:MM:SS.SS</td> </tr> <tr> <td width=20% valign="middle">CMITimespan</td> <td width=60% valign="middle">时间间隔,格式同上</td> </tr> <tr> <td width=20% valign="middle">CMIVocabulary</td> <td width=60% valign="middle">单词表,类似枚举类型</td> </tr> </table> ###数据模型元素### 数据模型元素可以分为9类,参见表4-表12。 **cmi.core:** 核心数据,该组中元素属性LMS必须支持 **cmi.suspend_data:** 暂存数据,存储内容对象在恢复时所需的特定数据 **cmi.launch_data:** 内容对象运行时所需的数据 **cmi.comments:** 关于内容对象的评论数据,一般来自用户评论 **cmi.comments_from_lms:** LMS平台对内容对象的评论信息 **cmi.objectives:** 针对内容对象的个人目标集合 **cmi.student_data:** 基于用户偏好的内容对象自定义信息,如运行时间限制 **cmi.student_preference:** 针对内容对象的用户偏好设置 **cmi.interactions:** 用户交互信息 *表4 cmi.core元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.core._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">返回所有属性</td> </tr> <tr> <td width=20% valign="middle">cmi.core.student_id</td> <td width=20% align="left">CMIIdentifier</td> <td width=60% valign="middle">当前用户(学生)ID</td> </tr> <tr> <td width=20% valign="middle">cmi.core.student_name</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">当前用户名</td> </tr> <tr> <td width=20% valign="middle">cmi.core.lesson_location</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">该用户学习当前内容对象的位置(如一个swf中的第几页)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.credit</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">是否有学分(credit/no-credit)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.lesson_status</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">内容对象状态(passed/completed/failed/incomplete/browsed/not attempted)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.entry</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">进入内容对象的动作(ab-initio/resume/空)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.score._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">返回score的子属性</td> </tr> <tr> <td width=20% valign="middle">cmi.core.score.raw</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">最后一次成绩</td> </tr> <tr> <td width=20% valign="middle">cmi.core.score.min</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">最低成绩</td> </tr> <tr> <td width=20% valign="middle">cmi.core.score.max</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">最高成绩</td> </tr> <tr> <td width=20% valign="middle">cmi.core.total_time</td> <td width=20% align="left">CMITimespan</td> <td width=60% valign="middle">学习总时间</td> </tr> <tr> <td width=20% valign="middle">cmi.core.lesson_mode</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">内容对象学习状态(normal/review/browse)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.exit</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">退出途径(time-out/suspend/logout/空)</td> </tr> <tr> <td width=20% valign="middle">cmi.core.session_time</td> <td width=20% align="left">CMITimespan</td> <td width=60% valign="middle">当次学习时间</td> </tr> </table> *表5 cmi.suspend_data元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.suspend_data</td> <td width=20% align="left">CMIString4096</td> <td width=60% valign="middle">存储自定义暂存数据</td> </tr> </table> *表6 cmi.launch_data元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.launch_data</td> <td width=20% align="left">CMIString4096</td> <td width=60% valign="middle">存储内容对象运行时所需数据</td> </tr> </table> *表7 cmi.comments元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.comments</td> <td width=20% align="left">CMIString4096</td> <td width=60% valign="middle">存储评论数据</td> </tr> </table> *表8 cmi.comments_from_lms元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.comments_from_lms</td> <td width=20% align="left">CMIString4096</td> <td width=60% valign="middle">存储LMS关于内容对象的评论数据</td> </tr> </table> *表9 cmi.objectives元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.objectives._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">返回所有属性</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives._count</td> <td width=20% align="left">CMIInteger</td> <td width=60% valign="middle">返回集合中元素总数</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.id</td> <td width=20% align="left">CMIIdentifier</td> <td width=60% valign="middle">一个目标对象ID</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.score._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">获得score子属性</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.score.raw</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">目标分数</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.score.min</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">目标分数最小值</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.score.max</td> <td width=20% align="left">CMIBlank/CMIDecimal</td> <td width=60% valign="middle">目标分数最大值</td> </tr> <tr> <td width=20% valign="middle">cmi.objectives.n.status</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">目标完成状态(passed/completed/failed/incomplete/browsed/not attempted)</td> </tr> </table> *表10 cmi.student_data元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.student_data._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">返回子属性</td> </tr> <tr> <td width=20% valign="middle">cmi.student_data.mastery_score</td> <td width=20% align="left">CMIDecimal</td> <td width=60% valign="middle">分数阈值(及格分)</td> </tr> <tr> <td width=20% valign="middle">cmi.student_data.max_time_allowed</td> <td width=20% align="left">CMITimespan</td> <td width=60% valign="middle">最大允许时间</td> </tr> <tr> <td width=20% valign="middle">cmi.student_data.time_limit_action</td> <td width=20% align="left">CMIVocabulary</td> <td width=60% valign="middle">超时后动作<br>(exit,message/exit,no message/<br>continue,message/continue,no message)</td> </tr> </table> *表11 cmi.student_preference元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=20% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=60% align="left">描述</th> </tr> <tr> <td width=20% valign="middle">cmi.student_preference._children</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">返回子属性</td> </tr> <tr> <td width=20% valign="middle">cmi.student_preference.audio</td> <td width=20% align="left">CMISInteger</td> <td width=60% valign="middle">声音控制</td> </tr> <tr> <td width=20% valign="middle">cmi.student_preference.language</td> <td width=20% align="left">CMIString255</td> <td width=60% valign="middle">偏好语言</td> </tr> <tr> <td width=20% valign="middle">cmi.student_preference.speed</td> <td width=20% align="left">CMISInteger</td> <td width=60% valign="middle">速度</td> </tr> <tr> <td width=20% valign="middle">cmi.student_preference.text</td> <td width=20% align="left">CMISInteger</td> <td width=60% valign="middle">音频文字</td> </tr> </table> *表12 cmi.interactions元素属性* <table width=100% border="1"> <tr bgcolor=#BBBBBB> <th width=40% align="left">属性名</th> <th width=20% align="left">类型</th> <th width=40% align="left">描述</th> </tr> <tr> <td width=40% valign="middle">cmi.interactions._children</td> <td width=20% align="left">CMIString255</td> <td width=40% valign="middle">返回所有属性</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions._count</td> <td width=20% align="left">CMIInteger</td> <td width=40% valign="middle">返回集合中元素总数</td> </tr> <tr> <td width=20% valign="middle">cmi.interactions.n.id</td> <td width=20% align="left">CMIIdentifier</td> <td width=60% valign="middle">某一交互ID</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.objectives._count</td> <td width=20% align="left">CMIInteger</td> <td width=40% valign="middle">交互目标集合中总数</td> </tr> <tr> <td width=20% valign="middle">cmi.interactions.n.objectives.n.id</td> <td width=20% align="left">CMIIdentifier</td> <td width=60% valign="middle">交互的目标ID</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.time</td> <td width=20% align="left">CMITime</td> <td width=40% valign="middle">交互完成时间</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.type</td> <td width=20% align="left">CMIVocabulary</td> <td width=40% valign="middle">交互类型<br>(true-false/choice/fill-in/matching/<br>performance/sequencing/likert/numeric)</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.correct_responses._count</td> <td width=20% align="left">CMIInteger</td> <td width=40% valign="middle">存储一个交互的答案数</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.correct_responses.n.pattern</td> <td width=20% align="left">CMIFeedback</td> <td width=40% valign="middle">存储一个交互的答案</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.weighting</td> <td width=20% align="left">CMIDecimal</td> <td width=40% valign="middle">一个交互的权重</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.student_response</td> <td width=20% align="left">CMIFeedback</td> <td width=40% valign="middle">用户提供的答案</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.result</td> <td width=20% align="left">CMIVocabulary</td> <td width=40% valign="middle">由用户答案计算的交互结果<br>(correct/wrong/unanticipated/neutral/x.x)</td> </tr> <tr> <td width=40% valign="middle">cmi.interactions.n.latency</td> <td width=20% align="left">CMITimespan</td> <td width=40% valign="middle">交互时间间隔</td> </tr> </table>

转载于:https://my.oschina.net/vincentwy/blog/153128

Scorm标准学习——Scorm RTE API与数据模型相关推荐

  1. SCORM标准及支持SCORM标准学习平台的设计

    SCORM标准及支持SCORM标准学习平台的设计 一. 引言 Internet在各领域的普及为信息和知识的交流传播提供了便捷的途径,而网络更成为一个公共的传递平台,基于网络的学习内容几乎可以被任何媒体 ...

  2. 什么是SCORM标准?

    为了透过建立「教材重复使用与共享之机制」,来减少教材之开发时程与成本,并使各教材在不同的 LMS 中能够重复使用.流通自如,美国政府在 1997 年底,由白宫的科技办公室与国防部 (DoD) 共同推动 ...

  3. scorm课件学习状态

    请看scorm标准中学习共享组件(sco)的学习状态值 学习共享组件的学习状态值         根据SCORM对于学习组件的定义,学习资产是单纯的指向学习资源,而内容聚合架构则是表示组合的抽象概念, ...

  4. SCORM标准的LMS

    来自网络SCORM标准 LMS介绍 基本上会有几个子系统: 1. 账号管理 2. 开课.选课管理 3. 讨论板系统 4. 作业.问卷.测验系统 其中最重要的是测验系统.如果你功力不够,短时间无法作一个 ...

  5. SCORM标准课件制作

    SCORM标准课件的制作       关于SCORM标准,最主流的两个版本就是SCORM 1.2 和SCORM 2004(又称SCORM1.3).现在SCORM 1.2更多一点.但下面介绍的制作工具都 ...

  6. 用Flash制作Scorm标准课件

    第一步,Flash设置 1.打开制作完成的Flash 课件. 2.单击"文件\ 发布设置",打开发布设置对话框,在此标签内,勾选 和这两种格式,flash需要嵌入到html网页才能 ...

  7. SCORM标准课件中SCO的制作方法

    SCORM标准课件中SCO的制作 一.SCO(Sharable Content Object)概念 1. Asset(原始素材):学习资源的最基本形式是asset.asset是上传到网上并呈现给学习者 ...

  8. SCORM标准课件中SCO的制作

    SCORM标准课件中SCO的制作 一.SCO(Sharable Content Object)概念 1. Asset(原始素材):学习资源的最基本形式是asset.asset是上传到网上并呈现给学习者 ...

  9. Scorm标准课件打包制作服务

    在 Scorm课件领域服务了10余年,目前自己在创业,为同行提供Scorm标准课件的相关服务 一.三分屏课件打包 二.视频两分屏课件打包 三.PPT+配音两分屏课件打包 四:FLASH课件转h5课件 ...

最新文章

  1. HTML+CSS+JavaScript复习笔记持更(八)——CSS3常用属性之列表
  2. java 微分方程求解_Java中的微分方程
  3. WebAPI(part9)--下拉菜单及留言案例
  4. ds证据理论python实现_ALI模型理论以及Python实现
  5. java中bmi的制作_Axure教程:在线BMI计算器制作
  6. 熊猫支持html5么,Steam疯狂周三特惠推荐:你给我看大熊猫,我就给你钱
  7. ios html gif 显示,iOS gif图显示问题
  8. web开发模式+三层架构与MVC
  9. 【POJ2887】Big String(块状链表,模板)
  10. 通过解析器向DNS服务器发出查询
  11. jsp:setProperty getProperty标签的使用
  12. [逆向破解]lua脚本解密
  13. win10内存占用率过高怎么办?Win10电脑内存占用率很高的原因和解决方法
  14. zoj 2839 Find the Sequences(数学题)
  15. 数字集成电路面试常见问题_关于空间级集成电路的常见误解
  16. 技术VS管理,哪个更重要?
  17. simulink模糊逻辑控制器的使用小结
  18. mounted钩子函数_vue中created钩子函数与mounted钩子函数的使用区别
  19. 华为微信平行世界怎么添加服务器,华为手机开启这个设置,居然能同时登陆3个微信...
  20. 配置新系统(Win7 x64)

热门文章

  1. vscode 文件编码转换_荐几个让你开发效率“飞起”的VS Code 插件
  2. cesium 知乎_Cesium 源码笔记[2] CesiumWidget模块的实例化过程 ver1.67
  3. go语言如何实现继承
  4. 成员变量隐藏c语言,C语言中隐藏结构体的细节
  5. websoc是什么可以卸载吗_购房诚意金是什么意思?可以退吗?
  6. 二级计算机vf题型,2010计算机等级考试二级VF考试题型与解题技巧
  7. Spring mvc 转发
  8. Element NavMenu
  9. docker 配置ssh
  10. opencv-api findHomography