element-ui的el-date-picker组件在选择月份区间时发了这么一个bug。在选择起始月份后关闭了选择面板,再次打开后上次选择的值还存在但是看了所有的属性和方法都没有发现可以清除上次选择的值,也在网上各种搜索没找到解决办法,经过各种办法处理后得到了最简单处理方式,就是利用key值的变化重新渲染组件
RPC与HTTP API对比
漫谈网络
NetDevOps智联空间rpchttp网络协议
一、核心流程对比环节RPCHTTPAPI调用方式调用远程函数/方法(如userService.getUser(123))调用远程端点(如GET/users/123)参数传递通过序列化直接传递编程语言对象通过URL参数、Header或Body传递结构化数据网络传输通常基于TCP/UDP+二进制协议(如gRPC的HTTP/2)基于HTTP/HTTPS文本协议数据封装由框架自动处理序列化/反序列化需手动
Shell脚本编程:Linux自动化的瑞士军刀
半夜偷你家裤衩子
Linuxlinux自动化chrome
导读:厌倦了重复执行相同的命令序列?想要让你的Linux系统自动完成繁琐任务?Shell脚本就是你的不二选择!本文将带你从零开始掌握Shell脚本编程,从基本语法到高级技巧,让你的工作效率提升10倍。无论你是Linux新手还是经验丰富的管理员,这篇文章都能帮你解锁Shell脚本的强大潜力!本文是《从入门到精通渐进式学习Linux》系列的第12章。通过这篇文章,你将学会如何用Shell脚本实现系统管
fish安装node.js环境
翻滚吧键盘
openSUSEnode.jschrome前端
为什么强调fishshell,因为fishshell的缘故,不能直接执行node.js官网的命令好的,您遇到了一个非常典型且重要的问题。请仔细阅读我的分析,这能帮您彻底解决问题。问题诊断您看到的所有错误,归根结底有两个核心原因:您正在使用FishShell:从命令行末尾的fish:提示可以看出,您使用的不是Linux默认的bash,而是fish。FishShell的脚本语法与bash不兼容。错误的
破局与重构:IT从业者生存困境与行业发展新生态
破局与重构:IT从业者生存困境与行业发展新生态文章目录一、技术迭代漩涡中的个体焦虑二、需求迷宫中的项目失控三、加班文化:用生命燃烧代码的可持续性困境四、质量与速度的辩证困境五、年龄歧视阴影下的职业发展天花板六、薪资与付出的价值失衡七、协作壁垒:团队智商低于个体智商之和八、技术选型的西西弗斯困境九、业务理解的技术近视症十、远程协作:打破物理边界的组织重构十一、竞争压力:行业内卷与个人突围十二、破局之
AI助力基因数据分析:用Python玩转生命密码的秘密
Echo_Wish
前沿技术人工智能人工智能数据分析python
AI助力基因数据分析:用Python玩转生命密码的秘密说到基因数据,听起来是不是感觉有点高大上?其实,基因数据分析正变得越来越“接地气”,而AI正是这条路上的神奇钥匙。今天,咱们就用Python聊聊如何利用AI技术做基因数据分析与建模,帮你破解生命的密码,找到疾病预测、个性化医疗的新路子。一、基因数据为何如此特别?基因组测序技术让我们能够获取人体细胞内数以百万计的DNA序列变异信息。但数据量巨大、
Python多线程实现FTP密码破解技术指南
不胖的羊
本文还有配套的精品资源,点击获取简介:本文主要介绍在Python环境下,使用多线程技术提升FTP密码安全性测试的效率。通过threading模块实现多线程,每个线程尝试一个密码,大幅加快破解过程。详细阐述了ftpbrute.py脚本的关键实现部分,包括导入库、定义密码字典、创建线程类、启动线程、等待线程完成以及添加错误处理和安全措施。需要注意的是,未经授权的密码破解活动是非法的,必须在合法授权的情
C# WPF自定义窗口
XMJ2002
wpf
C#WPF自定义窗口书接上文,我们已经实现了如何利用百度智能云实现文字OCR功能,WPF制作文字OCR软件(一):本地图片OCR识别,最后整体的效果是要呈现在一个窗口上的,而WPF的默认窗口并不能符合我们的需求,能够自己定义的内容少,所以这篇文章将介绍如何自定义窗口。整体实现效果如下:一、自定义标题栏首先需要在窗口定义的时候加上WindowStyle="None"AllowsTransparenc
python接收_MT5 与 PYTHON 的集成:接收和发送数据
James Swineson
python接收
为什么要把MQL5与Python集成?全方位的数据处理需要大量工具,并且经常超出单一应用程序的功能沙箱。专用编程语言正在用于处理和分析数据,统计和机器学习。Python是数据处理的主要编程语言之一。一个非常有效的解决方案是利用语言的力量并包含函数库来开发交易系统。在两个或更多个程序之间实现交互存在众多不同的解决方案。套接字是最快速、最灵活的解决方案之一。网络套接字是计算机网络上进程间通信的端点。M
攻击者利用热门AI发动黑帽SEO攻击,通过污染搜索结果传播窃密木马
FreeBuf-
人工智能
伪装成AI主题网站的恶意页面|图片来源:ZscalerZscaler威胁实验室研究人员发现一起精心策划的恶意软件攻击活动,攻击者利用ChatGPT和LumaAI等人工智能(AI)工具的热度,通过黑帽SEO(搜索引擎优化)技术劫持搜索引擎结果,诱导用户落入恶意软件陷阱。Zscaler警告称:"这些攻击背后的威胁行为者正在利用ChatGPT和LumaAI等AI工具的热度。"这些欺诈活动至少从2025年
NCSC发现针对FortiGate防火墙的隐蔽反向SSH与DoH后渗透工具
FreeBuf-
ssh运维
英国国家网络安全中心(NCSC)近日发现一款名为SHOERACK的新型恶意软件工具。这款后渗透恶意软件通过隐蔽的反向SSH隧道、自定义协议滥用和DNS-over-HTTPS(DoH)技术来维持远程访问并规避检测,引发了企业安全团队的高度警惕。恶意软件来源与功能该恶意软件最初在FortiGate100D系列防火墙上被发现,被认为是开源NHAS反向SSH工具的修改版本,但增加了显著的后渗透功能增强。分
单例设计模式详解
Code溪
Java设计模式
单例模式:懒汉式vs饿汉式单例模式是Java中最常用的设计模式之一,确保一个类只有一个实例,并提供全局访问点。其中懒汉式和饿汉式是两种最基础的实现方式,各有特点和适用场景。一、饿汉式(EagerInitialization)1.核心特点立即加载:在类加载时就创建实例线程安全:由JVM类加载机制保证线程安全资源利用率:可能造成资源浪费(如果实例未被使用)2.标准实现publicclassEagerS
python 多进程多线程编程
NurDroid
python网络java
1.Python多进程编程基础1.1多进程概念与原理多进程编程是指一个程序运行时启动多个进程来完成任务。每个进程拥有独立的内存空间,互不干扰,可以同时运行,充分利用多核CPU的计算能力。例如,在一个数据处理程序中,可以启动多个进程分别处理不同的数据块,从而加快处理速度。Python中的多进程编程主要通过multiprocessing模块实现,它提供了丰富的接口来创建和管理进程。1.2multipr
前端跨域解决方案(8):window.name
1window.name核心window.name是浏览器窗口的一个属性,它有两个关键特性:跨域共享:无论窗口的URL如何变化,window.name的值始终保持不变;容量大:可存储最大约2MB的数据(不同浏览器略有差异)。这使得window.name成为跨域通信的一种特殊方式:通过iframe加载跨域页面,利用window.name传递数据。window.name跨域的核心流程如下:主页面创建指
前端跨域解决方案(9):location.hash
骆驼Lara
前端跨域解决方案汇总前端javascript
1location.hash核心location.hash是URL中的锚点(如#section),它有两个关键特性:跨域可见:在A域名页面中,可通过iframe加载B域名页面,并修改其location.hash;不影响页面:修改hash不会触发页面刷新,也不会将数据发送到服务器。这使得location.hash成为跨域通信的一种轻量级方式:通过iframe加载跨域页面,利用location.has
DAOS的组网(二层无损网络搭建)
Flying Fish(HHH)
DAOS相关的内容DAOS的组网分布式
基于盛科E交换机搭建rdma网络配置(不同的交换机的配置操作不一样)一、交换机端配置:1、PFC配置(基于优先级的流量控制机制)配置qos类型的class-mappfc,进行流量分类,匹配dscpcs3#configureterminalEnterconfigurationcommands,oneperline.EndwithCNTL/Z.(config)#class-maptypeqospfc(
【python实用小脚本-118】基于Flask的用户认证系统:app.py、forms.py与user.py解析
Kyln.Wu
Pythonpython开发语言
在当今的网络应用中,用户认证是一个不可或缺的功能。无论是社交平台、电商平台还是企业管理系统,都需要确保只有授权用户才能访问特定的资源。本文将详细介绍一个基于Flask框架的用户认证系统,该系统由三个主要文件组成:app.py、forms.py和user.py。通过解析这三个文件,我们将深入了解如何实现一个安全、高效的用户注册、登录和注销功能。一、系统概述这个用户认证系统使用Flask框架构建,Fl
十四、buildroot 系统package新增应用 编写规则
暮云星影
瑞芯微linux
4.7.2、编写规则1、规范概述Buildroot像一个「自动化厨房」,每个包是一道菜。如果菜名(包名)、食材位置(路径)、做法(脚本)不统一,厨房会报错。规范是让机器人(Buildroot脚本)能读懂你的菜谱。2、命名规则包目录名(package/下的文件夹)小写字母+短横线,如package/my-app配置项名(Config.in里的变量)BR2_PACKAGE_+包目录名大写+下划线分隔,
FastMCP+python简单测试
小牛牛先生
树莓派5开发python开发语言
FastMCP是构建MCP服务器和客户端的标准框架。FastMCP1.0已被纳入官方MCPPythonSDK。当前FastMCP已更新至2.0版本,2.0版本通过引入完整的客户端支持、服务器组合、OpenAPI/FastAPI集成、远程服务器代理、内置测试工具等功能,显著扩展了1.0版本的基础服务器构建能力。1.测试前准备使用pip进行安装,安装命令如下:pipinstallfastmcp2.服务
视线实时跟踪项目
云博士的AI课堂
基于Python计算机视觉视线跟踪python计算机视觉机器视觉opencv视线检测
GitHub项目antoinelame/GazeTracking的详细介绍,包括项目概述、功能、解决的问题、应用场景、安装与使用说明等:项目概述GazeTracking是一个基于Python的开源库,利用普通网络摄像头实现实时眼动追踪。它能够检测用户瞳孔的精确位置和视线方向,支持Python2和3。该项目通过结合OpenCV和Dlib库,提供了一种低成本、高精度的眼动追踪解决方案,适用于多种应用场
【代码审计】通过类型转换绕过校验,实现任意账户密码重置
秋说
网络安全代码审计
未经许可,不得转载。文章目录背景漏洞描述风险分析1.code字段默认值为02.empty(0)判断失效3.利用MySQL类型转换绕过empty限制复现验证修复建议背景在Web系统开发中,密码找回功能往往涉及用户邮箱与随机验证码的匹配校验。如果验证逻辑存在疏漏,可能会引发严重的安全问题,如任意账户密码重置等高危漏洞。本文将分析一个典型的逻辑漏洞案例,并结合MySQL的类型转换行为深入探讨其产生原因。
管家婆订货易在线商城 VshopProcess 任意文件上传漏洞复现
0xSecl
漏洞复现v1安全web安全
0x01产品简介管家婆订货易,帮助传统企业构建专属的订货平台,PC+微信+APP+小程序+h5商城5网合一,无缝对接线下的管家婆ERP系统,让用户订货更高效。支持业务员代客下单,支持多级推客分销,以客带客,拓展渠道。让企业的生意更轻松。0x02漏洞概述管家婆订货易在线商城VshopProcess.ashx接口处存在任意文件上传漏洞,未经身份认证的攻击者可以通过该漏洞,上传恶意后门文件,深入利用可造
【Linux命令大全】Linux虚拟化技术终极指南:从KVM到容器的深度解析
全息架构师
Linux前沿技术与应用linux运维服务器
【Linux命令大全】Linux虚拟化技术终极指南:从KVM到容器的深度解析行业洞察:全球90%的云服务基于Linux虚拟化技术!掌握这些技能可提升500%的资源利用率!本文包含180+配置案例,40张架构图,企业级虚拟化方案全公开!前言:为什么虚拟化是云计算的基础?在现代数据中心中,我们面临的核心虚拟化挑战:硬件资源的高效分割近原生性能的追求安全隔离的保障混合负载的调度跨平台的兼容性惊人数据:A
Python+Playwright(0)
黑米粥✎
python开发语言自动化
简介Playwright是一个强大的自动化库,由微软开发,主要用于web端UI自动化测试,支持python、java、JavaScript、C#等多种编程语言。Playwright仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,不仅支持无头模式和有头模式,还提供了代码录制的功能,极大提高了脚本编写的效率,并支持移动端自动化测试。Playwright相
桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
html小球碰撞
稍微想了一下,然后解决了很多bug,最后终于把它实现了。其实原理很简单。在每改变一个小球的x y坐标后,遍历整个在dom树中的其他小球,看一下它们与当前小球的距离是否小于球半径的两倍?若小于说明下一次绘制该小球(设为a)前要把他的方向变为原来相反方向(与a要碰撞的小球设为b),即假如当前小球的距离小于球半径的两倍的话,马上改变当前小球方向。那么下一次绘制也是先绘制b,再绘制a,由于a的方向已经改变
《高性能HTML5》读后整理的Web性能优化内容
白糖_
html5
读后感
先说说《高性能HTML5》这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影。个人觉得作者应该首先把HTML5的大菜拿出来讲一讲,再去分析性能优化的内容,这样才会有吸引力。因为只是在线试读,没有机会看后面的内容,所以不胡乱评价了。
[JShop]Spring MVC的RequestContextHolder使用误区
dinguangx
jeeshop商城系统jshop电商系统
在spring mvc中,为了随时都能取到当前请求的request对象,可以通过RequestContextHolder的静态方法getRequestAttributes()获取Request相关的变量,如request, response等。 在jshop中,对RequestContextHolder的
算法之时间复杂度
周凡杨
java算法时间复杂度效率
在
计算机科学 中,
算法 的时间复杂度是一个
函数 ,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的
字符串 的长度的函数。时间复杂度常用
大O符号 表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是
渐近 的,它考察当输入值大小趋近无穷时的情况。
这样用大写O()来体现算法时间复杂度的记法,
Java事务处理
g21121
java
一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状
Linux awk命令详解
510888780
linux
一. AWK 说明
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。
awk的处理文本和数据的方式:它逐行扫描文件,从第一行到
android permission
布衣凌宇
Permission
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></uses-permission>允许读写访问"properties"表在checkin数据库中,改值可以修改上传
<uses-permission android:na
Oracle和谷歌Java Android官司将推迟
aijuans
javaoracle
北京时间 10 月 7 日,据国外媒体报道,Oracle 和谷歌之间一场等待已久的官司可能会推迟至 10 月 17 日以后进行,这场官司的内容是 Android 操作系统所谓的 Java 专利权之争。本案法官 William Alsup 称根据专利权专家 Florian Mueller 的预测,谷歌 Oracle 案很可能会被推迟。 该案中的第二波辩护被安排在 10 月 17 日出庭,从目前看来
linux shell 常用命令
antlove
linuxshellcommand
grep [options] [regex] [files]
/var/root # grep -n "o" *
hello.c:1:/* This C source can be compiled with:
Java解析XML配置数据库连接(DOM技术连接 SAX技术连接)
百合不是茶
sax技术Java解析xml文档dom技术XML配置数据库连接
XML配置数据库文件的连接其实是个很简单的问题,为什么到现在才写出来主要是昨天在网上看了别人写的,然后一直陷入其中,最后发现不能自拔 所以今天决定自己完成 ,,,,现将代码与思路贴出来供大家一起学习
XML配置数据库的连接主要技术点的博客;
JDBC编程 : JDBC连接数据库
DOM解析XML: DOM解析XML文件
SA
underscore.js 学习(二)
bijian1013
JavaScriptunderscore
Array Functions 所有数组函数对参数对象一样适用。1.first _.first(array, [n]) 别名: head, take 返回array的第一个元素,设置了参数n,就
plSql介绍
bijian1013
oracle数据库plsql
/*
* PL/SQL 程序设计学习笔记
* 学习plSql介绍.pdf
* 时间:2010-10-05
*/
--创建DEPT表
create table DEPT
(
DEPTNO NUMBER(10),
DNAME NVARCHAR2(255),
LOC NVARCHAR2(255)
)
delete dept;
select
【Nginx一】Nginx安装与总体介绍
bit1129
nginx
启动、停止、重新加载Nginx
nginx 启动Nginx服务器,不需要任何参数u
nginx -s stop 快速(强制)关系Nginx服务器
nginx -s quit 优雅的关闭Nginx服务器
nginx -s reload 重新加载Nginx服务器的配置文件
nginx -s reopen 重新打开Nginx日志文件
spring mvc开发中浏览器兼容的奇怪问题
bitray
jqueryAjaxspringMVC浏览器上传文件
最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquer
Lua的io库函数列表
ronin47
lua io
1、io表调用方式:使用io表,io.open将返回指定文件的描述,并且所有的操作将围绕这个文件描述
io表同样提供三种预定义的文件描述io.stdin,io.stdout,io.stderr
2、文件句柄直接调用方式,即使用file:XXX()函数方式进行操作,其中file为io.open()返回的文件句柄
多数I/O函数调用失败时返回nil加错误信息,有些函数成功时返回nil
java-26-左旋转字符串
bylijinnan
java
public class LeftRotateString {
/**
* Q 26 左旋转字符串
* 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
* 如把字符串abcdef左旋转2位得到字符串cdefab。
* 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
*/
pu
《vi中的替换艺术》-linux命令五分钟系列之十一
cfyme
linux命令
vi方面的内容不知道分类到哪里好,就放到《Linux命令五分钟系列》里吧!
今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号)。
其实这个不难,不过我觉得应该总结一下vi里的替换技术了,以备以后查阅。
1
所有替换方案都要在冒号“:”状态下书写。
2
如果想将abc替换为xyz,那么就这样
:s/abc/xyz/
不过要特别
[轨道与计算]新的并行计算架构
comsci
并行计算
我在进行流程引擎循环反馈试验的过程中,发现一个有趣的事情。。。如果我们在流程图的每个节点中嵌入一个双向循环代码段,而整个流程中又充满着很多并行路由,每个并行路由中又包含着一些并行节点,那么当整个流程图开始循环反馈过程的时候,这个流程图的运行过程是否变成一个并行计算的架构呢?
重复执行某段代码
dai_lm
android
用handler就可以了
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
update();
handler.postDelayed(this, 5000);
}
};
开始计时
h
Java实现堆栈(list实现)
datageek
数据结构——堆栈
public interface IStack<T> {
//元素出栈,并返回出栈元素
public T pop();
//元素入栈
public void push(T element);
//获取栈顶元素
public T peek();
//判断栈是否为空
public boolean isEmpty
四大备份MySql数据库方法及可能遇到的问题
dcj3sjt126com
DBbackup
一:通过备份王等软件进行备份前台进不去?
用备份王等软件进行备份是大多老站长的选择,这种方法方便快捷,只要上传备份软件到空间一步步操作就可以,但是许多刚接触备份王软件的客用户来说还原后会出现一个问题:因为新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。
解决方法:学会修改网站配置文件,大多是由co
github做webhooks:[1]钩子触发是否成功测试
dcj3sjt126com
githubgitwebhook
转自: http://jingyan.baidu.com/article/5d6edee228c88899ebdeec47.html
github和svn一样有钩子的功能,而且更加强大。例如我做的是最常见的push操作触发的钩子操作,则每次更新之后的钩子操作记录都会在github的控制板可以看到!
工具/原料
github
方法/步骤
">的作用" target="_blank">JSP中的作用
蕃薯耀
JSP中<base href="<%=basePath%>">的作用
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
linux下SAMBA服务安装与配置
hanqunfeng
linux
局域网使用的文件共享服务。
一.安装包:
rpm -qa | grep samba
samba-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-winbind-clients
guava cache
IXHONG
cache
缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的
Query的开始--全局变量,noconflict和兼容各种js的初始化方法
kvhur
JavaScriptjquerycss
这个是整个jQuery代码的开始,里面包含了对不同环境的js进行的处理,例如普通环境,Nodejs,和requiredJs的处理方法。 还有jQuery生成$, jQuery全局变量的代码和noConflict代码详解 完整资源:
http://www.gbtags.com/gb/share/5640.htm jQuery 源码:
(
美国人的福利和中国人的储蓄
nannan408
今天看了篇文章,震动很大,说的是美国的福利。
美国医院的无偿入院真的是个好措施。小小的改善,对于社会是大大的信心。小孩,税费等,政府不收反补,真的体现了人文主义。
美国这么高的社会保障会不会使人变懒?答案是否定的。正因为政府解决了后顾之忧,人们才得以倾尽精力去做一些有创造力,更造福社会的事情,这竟成了美国社会思想、人
N阶行列式计算(JAVA)
qiuwanchi
N阶行列式计算
package gaodai;
import java.util.List;
/**
* N阶行列式计算
* @author 邱万迟
*
*/
public class DeterminantCalculation {
public DeterminantCalculation(List<List<Double>> determina
C语言算法之打渔晒网问题
qiufeihu
c算法
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后任意一天,输出该渔夫是在打渔还是在晒网。
代码如下:
#include <stdio.h>
int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{
if((a%4 == 0 && a%100 != 0
XML中DOCTYPE字段的解析
wyzuomumu
xml
DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称,如果是内部DTD,则再空一格出现[],在中括号中是文档类型定义的内容. 而对于外部DTD,则又分为私有DTD与公共DTD,私有DTD使用SYSTEM表示,接着是外部DTD的URL. 而公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.
私有DTD
<!DOCTYPErootSYST