【XML】学习笔记第四章-schema

2023-11-09

Schema

读音:/ˈskiːmə/

元素 element :/ˈelɪmənt/

概述

Schema重要特征:由XML编写

作用

定义可出现在文档中的元素
定义出现

与DTD相比Schema的优势

  • XML Schema可以针对未来的需求进行扩展
  • Schema更加完善、功能也更强大
  • XML Schema是基于XML进行编写
  • XML Schema支持数据类型
  • XML Schema支持命名空间

补充:
最强大的地方:对数据类型的支持
Schema符合XML规范、DTD不符合XML规范

基础命名空间:

  • 一个是用于Schema文档的Schema URI,即 http://www.w3.org/2001/XMLSchema 。通常使用xs来代表该命名空间。
  • 另一个用于XML文档,即 http://www.w3.org/2001/XMLSchema-instance ,通常使用xsi来代表该命名空间。更多关于这两个命名空间的作用

模式

文档通常以单独的文件形式存在,文件扩展名为.xsd。

引用方法

当XML引入XML Schema时,根据XML文档的元素是否属于某个特定命名空间的,可以按照如下两种方式引入:

  • 不属于特定的命名空间,通过属性xsi:noNamespaceSchemaLocation引入
  • 属于某个特定的命名空间,通过属性xsi:shemaLocation引入
通过xsi:noNamespaceSchemaLocation引入

如果被引入的Schema文件需要约束XML文件中不属于任何特定的命名空间元素,使用xsi:noNamespaceSchemaLocation属性引入。
具体语法如下:

<根元素名称 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XML Schema">

xsi:noNamespaceSchemaLocation :属性值为一个Schema文件的URI。该属性值只能是一个Schema文件URI,即只能使用一个Schema文件。

通过xsi:shemaLocation引入

如果被引入的Schema文件需要约束XML文件中属于某个任何特定的命名空间元素,则通过xsi:schemaLocation属性引入。具体语法如下:

<根元素名称 [xmlns:命名空间别名="命名空间URI" ]+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  • xsi:schemaLocation="[命名空间URI Schema文件路径]+">
  • xsi:schemaLocation="[命名空间URI Schema文件路径]+" :该属性值比较灵活,可以同时引入多个Schema文件。每一个Schema的引入都需要一个命名空间URI和Schema文件路径,命名空间URI和Schema文件路径中间使用空格间隔。

Schema的语法结构

XML Schema是扩展名为”.xsd”的文本文件,使用XML语法编写。基本的语法结构为:

<?xml version="1.0" encoding="gb2312"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
......[元素、属性、注释、数据类型、schema的复用]
</xs:schema>

除此之外还可以为该元素指定两个属性:

  • elementFormDefault:该属性值可以是qualified或unqualified,用于指定XML文档使用该Schema中定义的局部元素时是否必须用命名空间限定。
  • attributeFormDefault:该属性值可以是qualified或unqualified,用于指定XML文档使用该Schema中定义的局部属性时是否必须用命名空间限定。

定义元素的主要语法:

语法1:
<element name=”元素名称” type=”数据类型” [default=”默认值”] [minOccurs=”最少出现的次数” ]  [maxOccurs=”最多出现的次数”]/>
语法2:
<element name=”元素名称” [default=”默认值”] [minOccurs=”最少出现的次数”]  [maxOccurs=”最多出现的次数”]>
  Element type
</element>
语法3:
<element ref=”引用元素名称” [default=”默认值”] [minOccurs=”最少出现的次数” ]  [maxOccurs=”最多出现的次数”]/>

定义属性的语法格式:

属性说明:

  • name :由程序员指定,元素的名字
  • type :元素的数据类型
  • default :该元素的默认值,该属性是可选的。
  • minOccurs :指定该元素出现的最少次数,默认值为1。该属性是可选的。如果属性值为0则表示该元素是可选的;如果大于0,则该元素是强制出现的。如果minOccurs没有与maxOccurs同时出现,则该属性值只能为0或1。
  • maxOccurs :该元素出现的最大次数,默认值为1。该属性是可选的。如果指定该元素可以出现任意多次,则属性值为”unbounded”;如果minOccurs没有与maxOccurs同时出现,则该属性值不能为0。
  • ref :引用的元素名称。
语法1:
<xs:attribute name="属性名" type="属性类型" [default="默认值"]| [fixed="固定值"] >
</xs:attribute>
语法2:
<xs:attribute ref="属性名" >
</xs:attribute>

注释的具体方法:

  1. XML语法中的注释。
  2. 通过标记 来增加注释,该方式具有更好的可读性。
  • <annotation.../>`:通常放在各种Schema组件定义的开始部分,用于说明该Schema组件的作用。内部可以出现多个<documentation.../>和<appinfo.../>而且顺序和出现次数没有限制。
  • <documentation> :该子元素的注释主要供人来阅读使用。
  • <appinfo> :该子元素的注释主要供其它程序来使用

XSD数据类型

  • 简单类型
    • 内置的数据类型(built-in data types)
      • 基本的数据类型
      • 扩展的数据类型
        *用户自定义数据类型(通过simpleType定义)
      • 限制
      • 联合
      • 扩展
  • 复杂类型(通过complexType定义)
    • 包含子元素
    • 包含属性
    • 包含属性+子元素

内置数据类型是被预先定义好的,这些数据类型全部位于命名空间http://www.w3.org/2001/XMLSchema下,所有的内置数据类型都是简单类型

[锚点标记]

img.png

上图中,任意类型包括两种:

  • anyType:表示该元素为任意类型,与DTD的ANY类似。此类型对于元素的内容没有任何约束。
  • anysimpletype:表示该元素为任意简单类型。即定义为该类型的元素除不能包含子元素和属性外,没有任何其它的约束。

内置基本数据类型

最常用的简单数据类型

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time
字符串及其相关类型
数据类型 描述
string 表示字符串,原封不动保留所有空白
Qname 表示一个包含XML命名空间在内的名称
数值类型
数据类型 描述
decimal 表示特定精度的数字
float 单精度32位浮点数,支持科学计数法
double 双精度64位浮点数,支持科学技术法
hexBinary 表示十六进制数
日期类型
数据类型 描述
date 表示日期YYYY-MM-DD格式的时间
gYearMonth 表示年月YYYY-MM格式的时间
gYear 表示年YYYY格式的时间
gMonthDay 表示月日- -MM-DD格式的时间
getDay 表示日期-DD格式的时间
getMonth 表示月份-MM格式的时间
时间类型
数据类型 描述
duration 表示持续时间PnYnMnDTnHnMnS,P起始定界符,T分隔符,s前面的n可以是小数(最多可显示三位小数,即支持到毫秒级)
dateTime 表示特定的时间YYYY-MM-DDThh:mm:ss:sss,sss表示毫秒数
time 表示特定的时间hh:mm:ss:sss,sss表示毫秒数
二进制数据类型
数据类型 描述
base64Binary 表示任意base64编码的二进制数
hexBinary 表示任意16进制编码的二进制数
其他类型
boolean类型

boolean:布尔型,只能接受true,false,0,1

anyURI类型

anyURI :表示一个URI,用来定位文件

Notation类型

NOTATION:表示XML中的NOTAITION类型,不能在模式中直接出现的抽象类型,只能用于派生其它类型。

内置扩展数据类型

  • String类型派生出来用于约束属性的类型及其描述
数据类型 描述
NMTOKEN 必须是合法的XML名称,只能由字母、数字、“_”、“-”、“.”、“:”组成
NMTOKENS 多个NMTOKEN,空格为分隔符
ID 标识符
IDREF 引用另一个ID
IDREFS 引用多个已有的ID,空格为分隔符
ENTITY 外部实体
ENTITIES 多个外部实体,空格为分隔符
  • tring类型派生出来的类型及其描述
数据类型 描述
normalizedString 将字符串内容包含的换行、制表符和回车符都替换成空白
token 将字符串内容包含的换行、制表符和回车符都替换成空白,自动删除字符串前后的空白,如果字符串中间包含多个连续的空白,则会被压缩为一个空白
language 定义合法的语言代码
Name 含有一个有效的XML名称的字符串
NCName 省略或不带有命名空间前缀的XML名称字符串,不含冒号
  • decimal类型派生出来的类型及其描述

数据类型 描述 最小值 最大值
integer 无限制整数类型 无限制 无限制
nonNegativeInteger 无限制的非负整数 0 无限制
nonPositiveInteger 无限制的非正整数 无限制 0
long 64位的有符号整数 -263 263-1
positiveInteger 无限制的正整数 1 无限制
negativeInteger 无限制的负整数 无限制 -1
unsignedLong 64位的无符号整数 0 264-1
int 32位的有符号整数 -231 231-1
unsignedInt 32位的无符号整数 0 232-1
short 16位有符号整数 -215 215-1
unsignedShort 16位无符号整数 0 216-1
byte 8位有符号整数 -27 27-1
unsignedByte 8位无符号整数 0 28-1

自定义数据类型

<xs:simpleType name=“自定义数据类型的名称”>
       <xs:restriction base=“内置数据类型”>
        自定义数据类型的内容模式
       </xs:restriction>
</xs:simpleType>

** 用户自定义类型按位置可以分为全局类型和局部类型。 **

  • 全局类型是直接在schema标记内定义的类型,该类型可以被所有元素使用。
  • 局部类型是定义在某个元素内部的类型,该类型只能被定义该类型的元素所引用

用户自定义类型还可以按照复杂程度划分,分为简单类型和复杂类型。

自定义简单数据类型

自定义简单类型是在内置数据类型的基础上通过限制、列表和联合中一种或几种方式形成的新数据类型。简单数据类型的定义语法:

  • 【全局】<xs:simpleType [name="自定义类型名称"]>
    • [限制、列表、联合一种或几种方式]
  • 【局部】</xs:simpleType>
    • name属性:自定义的数据类型名称。当定义的简单数据类型为全局数据类型,即直接在 标记中定义,必须写出该属性。如果为局部数据类型,则没有该属性。
限制

如果通过限制方式产生自定义类型,需要使用的标记为restriction。语法格式如下:

<xs:simpleType [name="自定义类型名称"]>
		<xs:restriction base="基类型" >
  [约束特征]+
		</xs:restriction>
</xs:simpleType>

约束特征有

  • xs:whiteSpace value="collspace" 去掉前后空白
列表

Schema中定义列表类型使用<list.../>元素,它可以由单个数据类型扩展出列表类型,因此使用该元素时必须指出列表元素的类型,为 元素指定列表元素类型有两种方式:

  • 为<list.../>元素的itemType属性指定列表元素的数据类型:
    • <xs:simpleType [name="自定义类型名称"]>
              <xs:list itemType="列表元素类型" ></xs:list >
      </xs:simpleType>
  • 为<list.../>元素增加<simpleType.../>子元素来指定列表元素的数据类型:
    • <xs:simpleType [name="自定义类型名称"]>
              <xs:list>
                      <simpleType.../>
                 </xs:list >
      </xs:simpleType>
联合

Schema使用<union.../>元素将多个简单类型联合成新的类型,为<union.../>元素指定简单类型有两种方式:

  • 为<union.../>元素的memeberTypes属性指定一个或多个简单类型,多个简单类型之间以空格隔开
    • <xs:simpleType [name="自定义类型名称"]>
              <xs:union memeberTypes="[列表元素类型]+" ></xs:union>
      </xs:simpleType>
  • 为<union.../>元素增加一个或多个<simpleType.../>子元素,每个<simpleType.../>子元素指定一个简单类型。
    • <xs:simpleType [name="自定义类型名称"]>
            <xs:union>
                     [<simpleType.../>]+
               </xs:union>
      </xs:simpleType>

复杂数据类型

复杂数据类型包含其他元素、属性和混合内容,复杂数据类型的声明语法如下:

<xs:complexType name=“数据类型的名称”>
  内容模型定义(包括子元素和属性的声明)
</xs:complexType>

复杂类型所约束的内容可能包含属性、子元素或同时包含子元素和属性。复杂元素也有可能在包含子元素的同时还包含字符内容,这样的元素被称为混合内容。定义复杂元素的语法格式如下所示:

<xs:complexType [name=”自定义元素名称”] [mixed=”true|false”]>
	[顺序、选择、无序、简单内容、复杂内容]+
</xs:complexType>
  • name属性:自定义的数据类型名称。当定义的简单数据类型为全局数据类型,即直接在 标记中定义,必须写出该属性。 如果为局部数据类型,则没有该属性
  • mixed属性:如果mixed属性值设置为true,则表示该元素的内容为混合内容。该属性默认值为false。
顺序<xs:sequence>

使用该元素定义的数据类型用于设定子元素的顺序,表示该元素的子元素是有序的。使用该元素的语法格式如下:

<xs:complexType name="mytype">
	<xs:sequence [maxOccurs="最多出现的次数"] [minOccurs="最少出现的次数"]>
		[<xs:element name="test" type="xs:string" minOccurs="最少出现的次数" maxOccurs="最多出现的次数" ></xs:element>]+
	</xs:sequence>
</xs:complexType>
  • maxOccurs属性:最多出现的次数,通常为一个固定的数字。可以作为sequence的属性,也可以作为element的属性。当最多次数没有限制时该值为unbounded。
  • minOccurs属性:最少出现的次数,为一个固定的数字。可以作为sequence的属性,也可以作为element的属性。
复杂内容<complexContent/>

使用该元素有点类似于编程语言的继承,相当于在某一基类型的基础上进行扩展或限制。如果元素包含子元素(是否包含属性不限制),则可以使用该元素对元素内容进行定义。

  • 限制<xs:restriction base="基类型"></xs:restriction>:基类型为一个已经定义好的复杂数据类型,在基类型的基础上增加限制。
  • 扩展<xs:extension base="基类型"></xs:extension>:基类型为一个已经定义好的复杂数据类型。在基类型的基础上扩展,可以既可以增加子元素,也可以增加属性。
简单内容<simpleContent/>

如果元素只包含属性,不包含子元素,则可以使用该元素定义元素内容。具体的内容方式包括在基类型上扩展和限制两种方式:

  • 限制<xs:restriction base="基类型"></xs:restriction> :基类型必须为一个仅包含属性的简单类型。该标记中可以嵌套基于restriction元素内的所有特征元素,对当前的基类型进行限制。
  • 扩展<xs:extension base="基类型"></xs:extension> :基类型必须为一个简单类型,该元素内可以包含属性的定义,在简单内容的基础上增加属性。
选择 <xs:choice>

使用该元素定义的数据类型用于设定子元素的选择关系,表示该元素的子元素可以根据实际需要从子元素中选择一个使用。使用该元素的语法格式如下

<xs:complexType name="mytype">
	<xs:choice [maxOccurs="最多出现的次数"] [minOccurs="最少出现的次数"]>
		[<xs:element name="test" type="xs:string" minOccurs="最少出现的次数" maxOccurs="最多出现的次数" ></xs:element>]+
	</xs:choice>
</xs:complexType>
  • maxOccurs属性:最多出现的次数,通常为一个固定的数字。可以作为choice 的属性,也可以作为element的属性。当最多次数没有限制时该值为unbounded。
  • minOccurs属性:最少出现的次数,为一个固定的数字。可以作为choice 的属性,也可以作为element的属性。
无序<xs:all>

使用<xs:all>元素定义的数据类型用于设定子元素是没有顺序的,表示该元素的子元素是无序的。但是该元素设定中有一些约束子元素数量不能被设定,只能是一个;也不能增加属性;不能与<xs:sequence>或<xs:choice>同时出现;只能作为<complexContent><complextType>的顶级元素。使用该元素的语法格式如下:

<xs:complexType name="mytype">
	<xs:all minOccurs="0|1" maxOccurs="1">
		[<xs:element minOccurs="0|1" maxOccurs="0|1" default=""></xs:element>]+
  </xs:all>
</xs:complexType>
  • maxOccurs属性:最多出现的次数,通常为一个固定的数字。可以作为all的属性,此时该值只能为1,也可以作为element的属性,此时该值可以为0或1。
  • minOccurs属性:最少出现的次数,为一个固定的数字。可以作为all的属性,也可以作为element的属性,该值只能为0或1。

XSD下限定/Facets

XSD属性

属性: 简单元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复杂数据类型。但是属性本身总是作为简单类型被声明的。

定义属性的语法:

<xs:attribute name="xxx" type="yyy"/>

在此处,xxx 指属性名称,yyy 则规定属性的数据类型,这里是简单数据类型。

这是带有属性的 XML 元素:

<lastname lang="EN">Smith</lastname>

这是对应的属性定义:

<xs:attribute name="lang" type="xs:string"/>

当没有其他的值被规定时,默认值就会自动分配给属性。

<xs:attribute name="lang" type="xs:string" default= "EN"/>

固定值同样会自动分配给属性,并且您无法规定另外的值。

<xs:attribute name="lang" type="xs:string" fixed="EN"/>

在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:

<xs:attribute name="lang" type="xs:string" use= "required"/>

XSD中的元素

XML Schema中定义的元素可分为简单元素和复杂元素。

  • 简单元素 : 一个元素中如果仅仅包含数字、字符串或其他数据,不包含子元素和属性,这种元素被称为简单元素。这类元素使用简单数据类型进行定义。
  • 复杂元素 : 包含属性和子元素的元素称为复杂元素。这类元素使用复杂数据类型进行定义。

简单元素

简单元素指那些只包含文本的元素。它不包含任何其他的元素或属性。

文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。

简单元素的语法:
<xs:element name="xxx" type="yyy"/>

此处 xxx 指元素的名称,yyy 指元素的数据类型,这里是简单数据类型。

简单元素的默认值和固定值

简易元素可拥有指定的默认值或固定值。当没有其他的值被规定时,默认值就会自动分配给元素。

<xs:element name="color" type="xs:string" default= "red"/>

固定值同样会自动分配给元素,并且您无法规定另外一个值。

<xs:element name="color" type="xs:string" fixed= "red"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【XML】学习笔记第四章-schema 的相关文章

  • 为什么这些冲突出现在以下 XML 的 yacc 语法中

    我有以下 XML 语法 效果很好 program lt ID attribute list gt root root lt ID attribute list gt node list lt ID gt node list node s n
  • 过滤文件上传仅用于文本文件

    我使用的是 Firefox 版本 14 0 1 我需要过滤上传文件窗口以仅显示 txt files 我的浏览器不仅仅支持文本文件 text plain 我可以通过指定此格式来限制图像文件 image 但我只需要过滤文本文件在文件选择器窗口中
  • 如何让 jQuery 选择带有 . (句号)在他们的身份证件中?

    给定以下类和控制器操作方法 public School public Int32 ID get set publig String Name get set public Address Address get set public cla
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • 在 Graal.js 中使用 java 类

    使用 Graal js 如何将 java 类导入到 JS 脚本中 以下代码适用于 Nashorn JJS 但不适用于 Graal js 因为没有Java type 在graal中 我需要在某个时候调用truffle吗 var ArrayLi
  • 根据每个选项的值或 ID 过滤选择框

    我想使用jquery来过滤表单中的所有选择框 例如 在第一个选择框中 如果我选择 仅显示1 我想过滤所有选择元素中的所有选择选项 以隐藏值不包含 1 的任何选项 仅应显示带有 1 的产品值 如果选择 Filter 选项 则所有选择框的默认值
  • SWC with JavaScript:如何处理 CSS 导入以及如何绝对导入?

    TL DR 如何告诉 SWC 编译 React 组件中导入的 CSS 文件 如何告诉 SWC 在测试和 React 组件中编译绝对导入 这是一个最小的可重现示例 https github com janhesters riteway swc
  • IntelliJ IDEA:忽略代码覆盖率中的琐碎方法

    在 IntelliJ IDEA 15 0 2 中 如何在测试覆盖率测量期间忽略琐碎的 getter 和 setter 琐碎方法 should be measure public void complex fancy interesting
  • 如何在不知道id的情况下从内页获取父iframe元素?

    让我们想象一下我有这样的东西 div div test html 是空页面 自定义hash属性始终具有不同的值 出于安全原因两个页面位于同一域 iframe 元素的数量和顺序是随机的 我的问
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • Spring Boot 中的外部化配置,多个应用程序在同一容器中运行

    我正在构建多个 Spring Boot 应用程序 这些应用程序将部署在同一个 servlet 容器上 但我很难让 Spring Boot 按照我想要的方式使用外部化配置文件 而不是像框架想要的那样 情况 多个 Spring Boot 应用程
  • Magnific Popup:来自span的源标题

    我想从锚标记内的隐藏标题字段中获取放大图像的标题 而不是从标题中获取 这是因为我的标题包含标记 HTML a href img zoom jpg img src img small jpg alt span class hide This
  • JavaFX:在 WebView img 标签中未加载本地图像

    以下是我的代码 一切安好 我可以加载远程页面 我可以放置 HTML 内容 但我的img标签显示一个X标志表示无法加载图像 Note 我的图像与类位于同一个包中JavaFX在 Smiley 文件夹中 我可以列出所有图像 这意味着路径没有问题
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • 从选择控件 html 复制所选项目的文本

    我有一个带有预定义值的选择控件 我希望我的用户能够使用 CTRL C 复制所选项目的文本 我不希望他们能够更改项目的文本 只需用鼠标 键盘选择它 这是一个显示问题的小提琴 我无法选择所选项目的文本 http jsfiddle net 5C3
  • 使用 Maven 将值附加到文件中

    我想在文件末尾附加一个值 但我无法确定要使用哪个插件 例子 我要附加的值 myValue file value1 value2 myValue 追加后 我知道我可以使用 antrun plugin 来做到这一点 但是可以使用 Maven 插
  • javaFX,抛出 NullPointerException,位置是必需的

    我看过其他答案 但没有任何帮助我 抱歉 GUI新手只知道swing的基础知识 这是主课 package application import javafx application Application import javafx fxml
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 请解释*贪婪量词的工作原理

    Pattern ptn Pattern compile a Matcher mtch ptn matcher bbaac if mtch find System out println mtch group 输出 不打印任何内容 Patte
  • 解析函数是否异步传递给 Promise 执行器?

    我有以下代码 function myPromiseFunc return new Promise resolve gt resolve Promise resolve 123 据我们所知Promise resolve方法立即用普通值解析 P

随机推荐

  • ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies

    ERR PNPM PEER DEP ISSUES 错误 两种解决方式 解决方式 方式一 忽略错误 项目根目录下 npmrc 中添加 strict peer dependencies false 方式二 自动安装对等依赖 项目根目录下 npm
  • 从实战中学前端:html+css 实现漂亮的按钮

    按钮初体验 html 表示中作为按钮的标签有 button 和 input
  • 产品经理的brd/prd/mrd的写法

    第一 撰写文档的工具 1 Excel 产品经理的神器 数据统计 数据报表 数据分析 数据图列制作 进度控制 2 PowerPoint 演示 3 Word 文档 4 Microsofo visio 2013 流程图 信息结构图 5 Axure
  • js计算两个时间相差月份

    约束 结束时间endTime gt 开始时间startTime 思路 之前总是会遗漏掉很多种情况 所以列举出各种情况 发现其规律 1 年 月 endTime getYear startTime getYear 12 2 月 月 endTim
  • 题目45 检查数组中是否存在满足规则的数组组合1(ok)

    给定一个正整数数组 检查数组中是否存在满足规则的数组组合 规则 A B 2C 输入描述 第一行输出数组的元素个数 接下来一行输出所有数组元素 用空格隔开 输出描述 如果存在满足要求的数 在同一行里依次输出 规则里 A B C的取值 用空格隔
  • iframe的父与子窗体之间的传值(IE与FF都可以用)

    请看下面简单例子 不多解释 父窗体 test htm
  • 用花生壳内网穿透实现外网访问内网SQL数据库

    内网穿透实现外网访问内网SQL数据库 温斯坦丁 陈的博客 CSDN博客
  • Hive启动

    1 查看hdfs启动没 start dfs sh 2 查看yarn启动没 start yarn sh 3 查看MySQL启动没 1 service mysqld start 2 mysql uroot p 作者机器密码 hadoop 和hi
  • 02趣味算法 --- 算法复杂性

    14天阅读挑战赛努力是为了不平庸 算法学习有些时候是枯燥的 这一次 让我们先人一步 趣学算法 欢迎记录下你的那些努力时刻 算法学习知识点 算法题解 遇到的算法bug 等等 在分享的同时加深对于算法的理解 同时吸收他人的奇思妙想 一起见证技术
  • 常用分析问题的几种方法

    文章目录 1 5W2H分析法 2 麦肯锡问题解决框架 3 SWOT分析法 4 SMART 1 5W2H分析法 5W2H指的就是7个英文单词 是二战中美国陆军兵器修理部首创 对于决策和执行性的活动措施也非常有帮助 很适合在做项目之前通过这个模
  • spring事务出现的超卖问题

    问题分析 我的代码逻辑如下 Override Transactional isolation Isolation REPEATABLE READ propagation Propagation REQUIRED public synchro
  • C语言数据存储与数据打印的奥秘

    尊师 https blog csdn net yyywill 数据存储 要记住 在计算机中 数据都是以 二进制 来存储的 十六进制 八进制和十进制只是我们人为定义的一种表现形式 数据打印 谈到数据打印 有人可能会说 不就是 printf 吗
  • leetcode精选

    7 LeetCode题目精选 7 1 两数之和 问题链接 https leetcode cn com problems two sum 7 1 1 问题描述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标
  • MySQL 读写分离 使用驱动com.mysql.jdbc.ReplicationDriver

    说明文档 http dev mysql com doc refman 5 1 en connector j reference replication connection html 代码例子 1 import java sql Conne
  • Python3,多线程爬完B站UP主的视频弹幕及评论,我飘了~ ~ ~

    利用线程爬取B站Up主弹幕及评论 1 爬取视频弹幕信息 2 爬取视频评论信息 3 整合代码 线程提速 1 爬取视频弹幕信息 爬取视频的弹幕信息 同样要借助于我们的接口工具 这里我们使用Charles 获取到的弹幕的url地址 弹幕url h
  • tensorflow 数据归一化_【TensorFlow实现机器学习方法】KNN(K近邻算法)实现预测房屋价格...

    一 前言 机器学习KNN算法 K近邻算法 的总体理论很简单不在这里赘述了 二 数据集准备 这里使用比较古老的数据集 是房屋预测的数据集 下载地址 https archive ics uci edu ml machine learning d
  • MATLAB——通过扫频数据反推系统伯德图

    1 获取扫频数据 导入MATLAB 2 计算控制器离散传函 根据扫频数据情况绘制控制器伯德图 3 根据控制器伯德图获取增益 相角数据 4 反算系统增益 相角数据 5 数据平滑处理 得到系统最终伯德图
  • element table 中sortable排序

    在项目中做表格的排序 我使用的是自定义的排序 也就是通过后台接口进行的排序 写个文章记录一下element的三种排序方式 在列中设置sortable属性即可实现以该列为基准的排序 接受一个Boolean 默认为false 可以通过 Tabl
  • API接口整理收集常用Get-Post请求供测试使用

    百度 api集市免费接口 IP地址查询 http apistore baidu com apiworks servicedetail 114 html 频道新闻API 易源 http apistore baidu com apiworks
  • 【XML】学习笔记第四章-schema

    Schema 概述 作用 与DTD相比Schema的优势 基础命名空间 模式 引用方法 通过xsi noNamespaceSchemaLocation引入 通过xsi shemaLocation引入 Schema的语法结构 定义元素的主要语