当前位置: 首页 > 编程日记 > 正文

XML DTD 语言学习笔记

-XML DTD 全称:Document Type Definition
简介:用于定义文档的合法性。它定义了文档应该有哪些元素及其属性,还有其他一些约束性规则。
注意:DTD语言定义的文档类型是SGML家族的标记性语言。包括SGML,XML,HTML),这里探讨的知识定义XML的DTD。
+DTD可以定义在XML里,也可以定义在一个单独的文件里。
+内部定义:内部的DTD定义必须定义在一个DOCTYPE元素里,格式如下:
<!DOCTYPE root-element [element-declarations]>
-一个内部定义DTD的XML例子:
<?xml version="1.0"?>
<!-- Edited by XMLSpy? -->
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>

<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
+外部定义:如果一个DTD定义在一个单独的DTD文件里,则XML文件引用定义DTD文件格式如下:
<!DOCTYPE root-element SYSTEM "dtdfilename">
-举例如下:
XML文件:
demo.xml
<?xml version="1.0"?>
<!-- Edited by XMLSpy? -->
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
DTD文件:
note.dtd
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
+关于DOCTYPE
http://xmlwriter.net/xml_guide/doctype_declaration.shtml
+DOCTYPE声明由内部或者外部DTD引用组成。
+内部DTD
-格式如下:
<!DOCTYPE root-element [element-declarations]>
-举例如下:
<?xml version="1.0" standalone="yes" ?>

<!--open the DOCTYPE declaration -
the open square bracket indicates an internal DTD-->
<!DOCTYPE foo [

<!--define the internal DTD-->
<!ELEMENT foo (#PCDATA)>

<!--close the DOCTYPE declaration-->
]>

<foo>Hello World.</foo>
-规则:
1)在一个XML文档中,文档类型声明必须放在XML声明和第一个元素(根元素)之间。
2)关键字DOCTYPE后跟的必须是这个XML文档的根元素名。
3)关键字DOCTYPE必须大写。
+外部DTD
-外部DTD用来定义一个通用的DTD以便可以被多个文档使用。
+有两种类型的外部DTD:private和public
-如果XML文档里有任何元素或实体引用了外部DTD或在外部DTD中定义了,则XML声明中必须指定standalone="no"
+私有的外部DTD
-私有的外部DTD用SYSTEM标示。它指明这个DTD被单个人或组织使用
+语法:
<!DOCTYPE root_element SYSTEM "DTD_location">
-DTD_location 可以使相对URL也可以是绝对URL
-Example:

<!--inform the XML processor
that an external DTD is referenced-->
<?xml version="1.0" standalone="no" ?>

<!--define the location of the
external DTD using a relative URL address-->
<!DOCTYPE document SYSTEM "subjects.dtd">

<document>
<title>Subjects available in Mechanical Engineering.</title>
<subjectID>2.303</subjectID>
<subjectname>Fluid Mechanics</subjectname>
<prerequisite>
<subjectID>1.001</subjectID>
<subjectname>Mathematics</subjectname>
</prerequisite>
<classes>4 hours per week (lectures and tutorials) for one
semester.</classes>
<assessment>tutorial assignments and one 2hr exam at end of
course.</assessment>
<syllabus>
Fluid statics. The Bernoulli equation. Energy equation. Momentum
equation. Differential Continuity equation. Differential Energy
equation. Differential Momentum equation. Dimensional Analysis.
Similitude. Laminar flow. Turbulent flow. Lift and Drag. Boundary
layer theory.
</syllabus>
<textbooks>
<author>Foobar</author>
<booktitle>The Study of Fluid Mechanics</booktitle>
</textbooks>
</document>

subjects.dtd:

<!--see Element Type Declarations
for an explanation of the following syntax-->
<!ELEMENT document
(title*,subjectID,subjectname,prerequisite?,
classes,assessment,syllabus,textbooks*)>
<!ELEMENT prerequisite (subjectID,subjectname)>
<!ELEMENT textbooks (author,booktitle)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT subjectID (#PCDATA)>
<!ELEMENT subjectname (#PCDATA)>
<!ELEMENT classes (#PCDATA)>
<!ELEMENT assessment (#PCDATA)>
<!ATTLIST assessment assessment_type (exam | assignment) #IMPLIED>
<!ELEMENT syllabus (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT booktitle (#PCDATA)>
+公共的外部DTD
-公共的外部DTD用PUBLIC标示。它代表这个DTD有广泛的应用。
+格式如下:
<!DOCTYPE root_element PUBLIC "DTD_name" "DTD_location">
+DTD_location:相对或绝对路径
+DTD_name:遵循如下语法:
"prefix//owner_of_the_DTD//
description_of_the_DTD//ISO 639_language_identifier"
-prefix允许以下值:
ISO The DTD is an ISO standard. All ISO standards are approved.
+ The DTD is an approved non-ISO standard.
- The DTD is an unapproved non-ISO standard.
-如果不能根据DTD_name知道这个DTD文件,则用DTD_location来寻找这个公共的DTD
-Example:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>A typical HTML file</TITLE>
</HEAD>
<BODY>
This is the typical structure of an HTML file. It follows
the notation of the HTML 4.0 specification, including tags
that have been deprecated (hence the "transitional" label).
</BODY>
</HTML>
+合并内部DTD和外部DTD
+一个文档可以在DOCTYPE声明中同时使用内部DTD和外部DTD,内部DTD定义放在方括号里。外部DTD放在方括号前面,SYSTEM后面。
-Example:

<!--inform the XML processor
that an external DTD is referenced-->
<?xml version="1.0" standalone="no" ?>

<!--define the location of the
external DTD using a relative URL address - the open square
bracket indicates an internal DTD-->
<!DOCTYPE document SYSTEM "subjects.dtd" [

<!--the markup in the internal DTD
takes precedence over the external DTD-->
<!ATTLIST assessment assessment_type (exam | assignment | prac)>
<!ELEMENT results (#PCDATA)>

<!--close the DOCTYPE declaration-->
]>
-subjects.dtd:

<!ELEMENT document
(title*,subjectID,subjectname,prerequisite?,
classes,assessment,syllabus,textbooks*)>
<!ELEMENT prerequisite (subjectID,subjectname)>
<!ELEMENT textbooks (author,booktitle)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT subjectID (#PCDATA)>
<!ELEMENT subjectname (#PCDATA)>
<!ELEMENT classes (#PCDATA)>
<!ELEMENT assessment (#PCDATA)>
<!ATTLIST assessment assessment_type (exam | assignment) #IMPLIED>
<!ELEMENT syllabus (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT booktitle (#PCDATA)>
-注意:在内部DTD和外部DTD中同时定义具有相同名称的元素是非法的。
-为什么要用DTD:
1)通过DTD,可以使XML文件的格式有明确的描述。
2)不同的组织和个人可以使用一个标准的DTD规范来交换XML数据。
3)你可以使用一个DTD来验证XML格式是否合法。
4)...
+所有的XML或HTML文档都是由以下部分组成,我们称之为构建块(building block)
-Element标签元素:XML或HTML文档的主要构建块。比如HTML里的<BODY> <TABLE>,<BR>,<HR>等
-Attribute标签元素的属性。它为标签元素提供了额外的信息。属性一般放在标签元素的开始标记里。以名/值对的形式出现。
-ENTITY 实体元素。有些字符有特殊的意义,比如小于号(<)定义一个标签元素的开始。最常见的"&nbsp;"就是一个实体,HTML用它来在文档里插入一个空格。XML解析器在解析文档时遇到实体会将其展开。以下几个实体是XML预定义的实体:"&lt;"代表小括号(<),(&gt;)代表大括号(>),(&amp;)代表连接符(&),(&quot;)代表双引号("),,(&apos;)代表单引号(')。
+PCDATA 需要被解析的XML内容。考虑下字符中包含带有开始标记和结束标记的XML元素。PCDATA代表的文本应该被XML解析器解析,解析器应该能识别文本里的XML标记或实体。PCDATA里不应该包含任何的(&),(<)或(>)字符,应该使用(&amp;)、(&lt;) 及 (&gt;)代替它们。
-PCDATA是否可以包含CDATA?
+CDATA 不需要被解析的文本内容。它就代表纯文本的字符数据。
-是否可以包含< > & 等?
+Element
-在DTD里,标签元素使用 ELEMENT 进行声明,格式如下:
<!ELEMENT element-name category>

<!ELEMENT element-name (element-content)>
+空元素使用EMPTY关键字指明,格式如下:
<!ELEMENT element-name EMPTY>
例如:
<!ELEMENT br EMPTY>
XML举例:
<br />
-EMPTY类型的元素是可以带属性的,只是不能有子元素。
-带有需被解析的XML数据的标签元素使用#PCDATA指明,它被包含在圆括号里,格式如下:
<!ELEMENT element-name (#PCDATA)>
例如:
<!ELEMENT from (#PCDATA)>
+允许带有任何内容的标签元素使用ANY指明,格式如下:
<!ELEMENT element-name ANY>
举例例如
<!ELEMENT note ANY>
-ANY 只哪些?是否包含其他各种情况比如EMPTY情况?
+定义带有特定子元素的标签元素,格式如下:
<!ELEMENT element-name (child1)>

<!ELEMENT element-name (child1,child2,...)>
举例:
<!ELEMENT note (to,from,heading,body)>
它除了定义应该包含且只能包含哪些元素外,还定义子元素出现的顺序以及允许出现的个数。
-子元素只能出现一次,格式如下:
<!ELEMENT element-name (child-name)>
举例:
<!ELEMENT note (message)>
-子元素至少出现一次,格式如下:
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
-子元素可以不出现或者出现多次,格式如下:
<!ELEMENT element-name (child-name*)>
举例:
<!ELEMENT note (message*)>
-子元素出现零次或一次,格式如下:
<!ELEMENT element-name (child-name?)>
举例:
<!ELEMENT note (message?)>
-允许在几个子元素中选择一个,格式如下:
<!ELEMENT element-name((child1-name|child2-name))>
举例:
<!ELEMENT note (to,from,header,(message|body))>
-更加自由的组合:
<!ELEMENT note (#PCDATA|to|from|header|message)*>
子元素可以包含以下元素任意次数,也可以什么都不包含,且顺序随意。
PCDATA
to
from
header
message
+Attribute
+元素的属性用ATTLIST定义,语法如下:
<!ATTLIST element-name attribute-name attribute-type default-value>
-element-name代表标签元素,属性就是为了定义这个标签元素。
-attribute-name代表定义的属性名字。
+attribute-type定义了属性的类型,可以使以下任意一种
+CDATA:值是一个字符串
-所有的内容最终都会变成文本。当属性值为纯文本时,你可以将该属性声明为CDATA类型。
该属性的值可以是任意长度的字符串。唯一的限制是它不能包含标记。上述声明可以有以下实例:只要属性值是纯文本,解析器都会将它视作有效。
+ID:值是一个唯一标示符
-对于ID类型的属性,其值必然是具有唯一标识功能的名称。而且它们必须遵守XML名称定义的规则。特定元素的ID属性值在整个文档中必须是唯一的。它可以作为元素的唯一标识符。每个元素至多有一个ID类型的属性。
-ID类型的属性必须设置为#IMPLIED或#REQUIED,不能是#FIXED或缺省的。可想而知,为ID提供缺省值,特别是固定的缺省值是毫无意义的。这会破坏ID的唯一性。
+IDREF:值是另一个元素的ID
-IDREF类型可以用于在文档中创建链接和交叉引用。IDREF属性的值必须受到与ID类型同样的约束。它们必须与文档中的某个ID属性具有相同的值。 IDREF值不能指向文档中不存在的ID。
+IDREFS:值是其他ID的列表,用空格分隔
-有时,我们希望将一个元素与其他多个元素相关联。这就要依靠IDREFS类型。它能够建立一对多的关系。这类属性的值是一系列以空格分隔的ID值。其中每个ID必须满足对ID类型的约束,当然它们必须与文档中的ID属性值相匹配。
+(en1|en2|。。):值是en1、en2、。。。等枚举中的任意一个
-某些情况下,您可能希望将属性值作为离散的记号,而不是文本。为此我们可以使用枚举类型。
+NMTOKEN:值是一个有效的XML名
-NMTOKEN全称:Name Token 名称标记,NMTOKEN类型必须遵守元素名称的命名规则,但是其中一项限制除外。它们只能包含字母、数字、冒号、句点和连字符。
然而,与元素和属性名称不同的是,NMTOKEN的第一个字符可以是任意字符。
-NMTOKEN类型使得应用程序必须承担验证值有效性的任务。然而对于枚举类型,解析器能够提供有效性检查。
+NMTOKENS:值是有效XML名列表,用空格分隔
-跟IDREF和IDREFS的关系一样
+ENTITY:值是一个实体名
-对于多次出现的结构,可以为结构定义一个实体,然后通过引用实体来实现对结构的调用。
-DTD举例:
<!ATTLIST SalesResults month_graph ENTITY #IMPLIED>
DTD中声明实体:
<!ENTITY sales_chart SYSTEM "sales_chart.gif" NDATA gif>
XML中:
<SalesResults month_graph="sales_chart"> ... </SaleResultes>
+ENTITYS:值是实体列表,用空格分隔
-跟IDREF和IDREFS的关系一样
+NOTATION:值是一个NOTATION的名称
+http://www.quackit.com/xml/tutorial/dtd_attribute_types_notation.cfm
-声明NOTATION类型的属性格式如下:
<!ATTLIST element_name attribute_name NOTATION default_value>
-举例如下:
<!NOTATION GIF SYSTEM "image/gif">
<!NOTATION JPG SYSTEM "image/jpeg">
<!NOTATION PNG SYSTEM "image/png">
<!ATTLIST mountain
photo ENTITY #IMPLIED
photo_type NOTATION (GIF | JPG | PNG) #IMPLIED>
<!ENTITY mt_cook_1 SYSTEM "mt_cook1.jpg">
这段代码说明photo_type属性值只能是GIF,JPG,PNG三个中的一个。以下XML是合法的:‘
<mountains>
<mountain photo="mt_cook_1" photo_type="JPG">
<name>Mount Cook</name>
</mountain>
<mountain>
<name>Cradle Mountain</name>
</mountain>
</mountains>
+default-value可以是value,#REQUIRED,#IMPLIED,#FIXED value
+value:一个默认的value值
-举例:

DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

XML中:
<square width="100" />

在上面的例子中,square元素被定义成一个空元素并带有width属性,属性类型为CDATA,如果width的值没有指定,其默认的值为0。
+#REQUIRED:必须有此属性值
-语法:
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
-举例:
DTD:
<!ATTLIST person number CDATA #REQUIRED>

Valid XML:
<person number="5677" />

Invalid XML:
<person />
-如果你没有默认值但又要求此属性不许指定值,用#REQUIRED
+#IMPLIED:此属性值不是必须的
-语法:
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
-举例:
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>

Valid XML:
<contact fax="555-667788" />

Valid XML:
<contact />
-如果这个属性不是必须的,且没有默认值可以指定,用#IMPLIED
+#FIXED value:一个固定的value值
-语法:
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
-举例:
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">

Valid XML:
<sender company="Microsoft" />

Invalid XML:
<sender company="W3Schools" />
-如果你想为指定一个固定的值并且不允许XML作者修改它,用@FIXED value
+还有一种是枚举值
-格式如下:
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
-举例:
DTD:
<!ATTLIST payment type (check|cash) "cash">

XML example:
<payment type="check" />
or
<payment type="cash" />
+什么时候用element什么时候用attribute
-XML没有规定什么时候改用element什么时候改用attribute
+数据即可没存储在element里也可被存储在attribute里
-举例:
sex存贮在attribute里
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
sex存储在element里
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
+建议尽量将数据放到element里
+用attribute的弊端
-attribute不能存储多个值
-attribute不容易扩展
-attribute不能描述结构
-attribute不容易被程序处理
-attribute不容易被DTD校验
-用attribute:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

用element
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

扩展element
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
+Entity
-Entity相当于一个变量,用于定义一个标准文本数据或特殊字符。
-Entity引用指向一个Entity对象
+Entity对象可以是一个内部实体(指向内部数据)也可以是一个外部实体(指向外部数据)
+内部实体
+定义内部实体的语法:
<!ENTITY entity-name "entity-value">
-举例:
DTD Example:

<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">

XML example:

<author>&writer;&copyright;</author>
-一个Entity实体引用由三个部分组成:与号(&),实体名,分号(;)
+外部实体
+定义外部实体的语法:
<!ENTITY entity-name SYSTEM "URI/URL">
-举例:
DTD Example:

<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">

XML example:

<author>&writer;&copyright;</author>
+还有一种Entity称为参数实体
-它也和实体引用一样,您可以直接在 XML 文档内定义参数实体,或将其放在单独的 DTD 中。
-它专门在DTD文件里使用,不被XML使用,它主要用来在DTD中定义变量。其作用跟实体是一样的。
-一个简单的参数实体:
<!ENTITY % common.attributes
'id ID #IMPLIED
account CDATA #REQUIRED'
>
-以上是一个较严格的文本替换。在这个例子中,定义了两个属性,约束集中全部或大多数元素都应该具有这两个属性。您随后可以在 DTD 中定义那些元素
-<!ELEMENT purchaseOrder (item+, manufacturer, purchaser, purchaseInfo)>
<!ATTLIST purchaseOrder %common.attributes;>
<!ELEMENT item (price, quantity)>
<!ATTLIST item %common.attributes;>
<!ELEMENT manufacturer (#PCDATA)>
<!ATTLIST manufacturer %common.attributes;>
<!ELEMENT purchaser (#PCDATA)>
<!ATTLIST purchaser %common.attributes;>
<!ELEMENT purchaseInfo (creditCard | check | cash)>
-每个元素都使用 common.attributes 参数实体,该参数实体会被转换成示例中的字符串(包括 id 和 account 属性)以用于每个属性列表。和实体引用一样,更改参数实体的值会更改对所有元素的定义。此外,这一技术应该能整理您的 XML 文档及其 DTD 的组织。
-由于当 DTD 有大量带共同数据的元素时通常都使用参数实体,所以最好把它们放在单独的 DTD 中 — 对于参数实体,如果您有足够的数据类型,那么您可能就有足够的数据类型使用独立的 DTD。
+NOTATION
http://infohost.nmt.edu/tcc/help/pubs/dtd/notation-sect.html
-NOTATION声明的作用是定义非XML文件及其处理器,比如一个声音文件或一个图像文件,这样你就可以再XML文档中引用这些文件。
+它的通用格式如下:
<!NOTATION nname PUBLIC std>
<!NOTATION nname SYSTEM url>
-nname是这个notation的名字
std是一个公共notation的名字
url是指向一个处理这个文件的处理路径。
-最常用的是用它来描述MIME类型,比如:image/gif,image/jpeg 等。
+使用方法
+1.定义NOTATION
-<!NOTATION jpeg PUBLIC "JPG 1.0">
+2.定义实体
- <!ENTITY bogie-pic SYSTEM
"http://stars.com/bogart.jpg" NDATA jpeg>
+3.声明元素属性的类型是这个实体
-<!ATTLIST star-bio pin-shot ENTITY #REQUIRED>
+4.在XML中的具体使用
- <star-bio pin-shot="bogie-pic">...</star-bio>
+NOTATION 2
http://webdesign.about.com/od/dtds/a/aa101700b.htm
-在XML中尼可以定义一些非XML的数据,这需要借助NOTATION,它描述了这些数据的格式并且帮助你的应用程序识别并处理它。
+格式如下:
+<!NOTATION name system "external_ID">
+name指明了文件的格式,external_id标示这个notation,通常是一个MIME类型。
-比如下面这个例子,它在XML里定义了一个GIF图像:
<!NOTATION GIF system "image/gif">
+你也可以使用PUBLIC标记来代替SYSTEM。你需要在NOTATION里包含PUBLIC ID和URI。
-比如:
<!NOTATION GIF public
"-//IETF/NOSGML Media Type image/gif//EN"
"http://www.isi.edu/in-notes/iana/assignments/media-types/image/gif">
+XML验证
-可以用IE浏览器验证XML是否符合DTD定义规范
+JavaScript验证:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.validateOnParse="true";
xmlDoc.load("note_dtd_error.xml");

document.write("<br />Error Code: ");
document.write(xmlDoc.parseError.errorCode);
document.write("<br />Error Reason: ");
document.write(xmlDoc.parseError.reason);
document.write("<br />Error Line: ");
document.write(xmlDoc.parseError.line);
-load()方法用于加载文件,laodXML()方法用于加载文本字符串。
+给解析器加上validateOnParse="false"可以关闭DTD验证
-举例:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.validateOnParse="false";
xmlDoc.load("note_dtd_error.xml");

document.write("<br />Error Code: ");
document.write(xmlDoc.parseError.errorCode);
document.write("<br />Error Reason: ");
document.write(xmlDoc.parseError.reason);
document.write("<br />Error Line: ");
document.write(xmlDoc.parseError.line);

相关文章:

Python快速入门,你想要的就在这里了!

学习Python您是否会面临以下问题&#xff1f;“网上充斥着大量的学习资源、书籍、视频教程和博客&#xff0c;但是大部分都是讲解基础知识&#xff0c;不够深入&#xff1b;也有的比较晦涩&#xff0c;难以理解”CSDN Python学习社群将帮助您过滤网上的垃圾教程资源的技能&…

设计模式之代理模式(Proxy)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

Symfony学习笔记

Symfony学习笔记Symfony本来已经接触过了&#xff0c;可发现好久 不用好多东西都已经遗忘了&#xff0c;决定再次拾起&#xff0c;看能不能发现之前没有注意到的新的东西。果然在不断学习的过程中&#xff0c;又发现了许多自认为很细节但又很重要的地方&#xff0c;下面就列举如…

设计模式之模板方法模式(Template Method)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

Linux练习(显示环境变量)

#include <stdio.h> #include <stdlib.h> extern char **environ; int main() {char **envenviron;while(*env){printf("%s\n",*env);env;}exit(0); } 主要是environ变量&#xff0c;定义如下 #include <stdlib> extern char **environ;

百度发布ERNIE 2.0,性能超BERT、XLNet

作者 | Khari Johnson 译者 | 赵雪 编辑 | 夕颜 出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 中国科技巨头百度于今日提出了 ERNIE 2.0——一个中英双语的会话式人工智能模型。ERNIE 2.0 在语言理解基准上的表现超过了谷歌的 BERT 和 XLNet&#xff0c;在 9 个国…

php中mkdir()函数的权限问题

为什么80%的码农都做不了架构师&#xff1f;>>> 遇到个问题 某个定时job用root用户mkdir(./test/,0777)新建了目录&#xff0c;指定了权限是0777&#xff0c;结果获得的是0755, 而web上用www用户也在这目录创建目录和文件&#xff0c;结果报错了&#xff0c;一开始…

设计模式之策略模式(Strategy)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

PreparedStatement

该 PreparedStatement接口继承Statement&#xff0c;并与之在两方面有所不同&#xff1a;  PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指…

百度ERNIE 2.0发布!16项中英文任务表现超越BERT和XLNet

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;2019 年 3 月&#xff0c;百度正式发布 NLP 模型 ERNIE&#xff0c;其在中文任务中全面超越 BERT 一度引发业界广泛关注和探讨。今天&#xff0c;百度发布了 ERNIE 2.0&#xff0c;指出其在…

WindowsServer2012史记7-茴香豆的五种写法和四种”显示计算机”的方法

消失的"计算机"&#xff1f;【这周九叔工作比较忙&#xff0c;还有其他琐事缠身&#xff0c;因此SystemCenter2012SP1系列的发布稍慢&#xff0c;抱歉了各位。】众所周知&#xff0c;WindowsServer2012和Windows8一样&#xff0c;默认桌面上是没有"计算机"…

设计模式之状态模式(State)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

CYQ学习主要摘要4

http://www.cnblogs.com/cyq1162/archive/2010/11/03/1867642.html Xml的处理 http://www.cnblogs.com/cyq1162/archive/2010/11/23/1885299.html 3.5版本 http://www.cnblogs.com/cyq1162/archive/2010/12/27/1918317.html 无线分级 http://www.cnblogs.com/cyq1162/archive/2…

知识图谱、深度学习、AutoML,推荐系统与新技术结合将碰撞出怎样的火花?

近日&#xff0c;来自意大利米兰理工大学 Maurizio 团队发表的一篇极具批判性的文章火了。这篇文章剑指推荐系统领域的其他数十篇论文&#xff0c;并通过多项试验证明这些论文中基于深度学习的推荐算法大部分都存在不同程度的数据集缺失和源码缺失的问题&#xff0c;导致根本无…

python-range用法

2019独角兽企业重金招聘Python工程师标准>>> 详细记录python的range()函数用法 转载于:https://my.oschina.net/lxwgmail/blog/135228

设计模式之观察者模式(Observer)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

中科院、百度研究院等联合提出UGAN,生成图片难以溯源

作者 | 中国科学院、北京航空航天大学、百度研究院团队译者 | 凯隐编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;导读&#xff1a;生成对抗网络&#xff08;GAN&#xff09;是近年大热的深度学习模型&#xff0c;中国科学院相关团队注意到&#xff0c;…

搜索引擎的时效性需求满足

“全、准、快、新”是搜索引擎的四大评价指标&#xff0c;其中的“新”指代的就是时效性。随着互联网的发展&#xff0c;网民对信息获取的时效性要求越来越高。同时越来越多的网民更多的参与到创造互联网内容中去&#xff0c;互联网上的新信息也在迅速的膨胀。这都给搜索引擎时…

如何卸载sql2008,完全清除

1.先把SQL Server卸载&#xff0c;再把安装时产生的“Microsoft SQL Server”文件夹删掉,在运行注册表,把HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQLServer&#xff0c;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server全部删掉&#xff0c;(注意要把Mic…

别再说学不会:超棒的Numpy可视化学习教程来了

作者 | Jay Alammar译者 | 苏南下来源 | 机器会学ML&#xff08;ID&#xff1a;AI_Learning007&#xff09;导读&#xff1a;学习 Python&#xff0c;尤其是基于 Python 的学习机器学习算法&#xff0c;最基础的 NumPy 用法必须得熟悉。网上这方面的教程不少&#xff0c;但大多…

设计模式之备忘录模式(Memento)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

型网站的架构设计问题----大型高并发高负载网站的系统架构

随着中国大型IT企业信息化速度的加快&#xff0c;大部分应用的数据量和访问量都急剧增加&#xff0c;大型企业网站正面临性能和高数据访问量的压力&#xff0c;而且对存储、安全以及信息检索等等方面都提出了更高的要求…… 本文中&#xff0c;我想通过几个国外大型IT企业及网站…

java之php、Android、JAVA、C# 3DES加密解密

异常如下1.javax.crypto.BadPaddingException: Given final block not properly padded1&#xff09;要确认下是否加密和解密都是使用相同的填充算法&#xff08;也就是说&#xff0c;是否都是使用PKCS5Padding&#xff09;2&#xff09;确认下你要解密的字节数组是否正确。jav…

设计模式之中介者模式(Mediator)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

谷歌引入自动网络设计,高效解决大规模深度推荐模型的特征嵌入问题

来源 | 深度传送门&#xff08;ID:gh_5faae7b50fc5&#xff09;导读&#xff1a;本文主要介绍Google在大规模深度推荐模型上关于特征嵌入的最新论文。 一、背景大部分的深度学习模型主要包含如下的两大模块&#xff1a;输入模块以及表示学习模块。自从NAS[1]的出现以来&#xf…

什么是POM maven

POM是项目对象模型(Project Object Model)的缩写&#xff0c;下面援引一下百度百科中对于POM的解释 定义 Maven是以项目为中心的设计。POM是Maven对一个单一项目的描述。没有POM的话&#xff0c;Maven是毫无用处的——POM是Maven的核心。是POM实现的并驱动了这种以模型来描述的…

新的Mac下如何配置开发者账号信息

1&#xff1a;把p12文件下载来&#xff0c;打开&#xff0c;添加到钥匙串 2&#xff1a;在xcode中的Organizer中的 Provisioning Profiles项中&#xff0c;点击 “New”&#xff0c; 添加账号信息&#xff0c;从网络获取相关文件。 转载于:https://www.cnblogs.com/willbin/arc…

5G+AI重新定义生老病死?

作者 | 胡巍巍来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;5G时代&#xff0c;我们的生老病死&#xff0c;或将被重新定义。5G手术&#xff0c;让生命不再受制于距离海南的神经外科专家凌至培&#xff0c;使用5G技术&#xff0c;跨越南北为一位北京的患者&#…

设计模式之命令模式(Command)摘录

23种GOF设计模式一般分为三大类&#xff1a;创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程&#xff0c;它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类&#xff0c;而一个对象创建型模式将实例化委托给…

QTP的那些事---页面弹出框的处理,页面等待加载的处理

处理方法&#xff1a;先判断父类对象是否存在&#xff0c;如果存在&#xff0c;判断相关的static文本对象是否存在&#xff0c;如果存在&#xff0c;则点击弹出框中的按钮即可&#xff1b; 例如如下的代码&#xff1a; 设置循环判断dialog对象是否存在&#xff0c;如果存在&…