题目:解析:状态表示+状态转移方程:初始化+填表顺序+返回值:代码:publicintminInsertions(Stringss){char[]s=ss.toCharArray();intn=s.length;int[][]dp=newint[n][n];for(inti=n-1;i>=0;i--){//dp[0][i]=0;for(intj=i+1;j
力扣【501. 二叉搜索树中的众数】Java题解
hamster2021
leetcodejava算法
题目要求不使用额外空间。思路:可以两次遍历,第一次找到众数的节点个数,第二次找出众数数组。但我们可以把这两次遍历改为一次遍历,就是找众数的节点个数时同时去更新众数数组,当maxCount等于count时,追加当前节点的值到众数数组中;当maxCount大于count时,将结果数组清空后加入当前节点。代码:classSolution{intmaxCount=0;//目前众数节点的个数intcount
云服务器拖拽文件,快捷拖动文件到远程服务器
weixin_39631370
云服务器拖拽文件
快捷拖动文件到远程服务器内容精选换一换远程桌面协议(RemoteDesktopProtocol,RDP),是微软提供的多通道的远程登录协议。本节为您介绍如何使用RDP文件远程登录Windows云服务器。从管理控制台下载的RDP文件对应唯一的云服务器,当前RDP文件命名规则为“云服务器名称-弹性IP”。云服务器状态为“运行中”。云服务器已经绑定弹性公网IP。所在安全组入方向远程连接Linux云服务器
Windows 技术篇-windows家庭版win+R运行搜不到gpedit.msc组策略编辑器解决方法,windows安装组策略编辑器方法
挣扎的蓝藻
windows操作系统win组策略编辑器安装gpedit.msc找不到解决
家庭版没有组策略编辑器,需要通过下面的脚本来进行安装即可。保存成一个bat文件,执行下即可。注:编码要为ANSI。@echooffpushd"%~dp0"dir/b%systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package
第30篇:Python开发进阶:网络安全与测试
猿享天开
python从入门到精通pythonweb安全开发语言
第30篇:网络安全与测试目录网络安全概述什么是网络安全常见的安全威胁Python中的网络安全工具常用安全库介绍安全编码实践密码学基础加密与解密哈希函数数字签名安全认证与授权用户认证访问控制OAuth与JWTWeb应用安全常见的Web安全漏洞防护措施安全测试网络安全测试渗透测试自动化测试工具安全漏洞扫描使用Python进行安全测试使用Scapy进行网络嗅探使用Requests进行安全测试使用Beau
算法刷题Day27:BM65 最长公共子序列(二)
SchrodingerSDOG
看能坚持多久系列算法
题目链接,点击跳转题目描述:考点:动态规划回溯解题思路:动态规划是解决LCS问题的常用方法。其核心思想是将问题分解为子问题,并通过存储子问题的解来避免重复计算。1.定义dp数组元素含义使用二维dp数组,元素dp[i][j]表示s2的前i个字符和s1的前j个字符的最长公共子序列长度。2.dp数组状态转移方程如果s2[i-1]==s1[j-1],则dp[i][j]=dp[i-1][j-1]+1。(来自
ESP32-CAM实验集(WebServer)
Android小码家
LinuxESP32
WebServer效果图已连接web端platformio.ini;PlatformIOProjectConfigurationFile;;Buildoptions:buildflags,sourcefilter;Uploadoptions:customuploadport,speedandextraflags;Libraryoptions:dependencies,extralibrarysto
数据库性能优化(sql优化)_索引详解04_深入理解B+树_yxy)
yxy___
数据库性能优化sql
数据库性能优化_深入理解B+树1通过代码方式解释B+树1.1查找操作1.2插入操作1.3删除操作1.4更新操作2组合索引的查找逻辑2.1等值查找2.1范围查找1通过代码方式解释B+树B树索引在增删改操作时,底层结构会发生相应的变化,以保持树的平衡和有序性。下面通过简单的伪代码来讲解增删改查时,B+树的底层结构变化(目的是为了让大家深入理解B+树)1.1查找操作思路:1.从根节点开始查找。2.对于每
在 Linux (aarch64) 编译 OpenJDK 8
不搞数学的汤老师
linux运维服务器
环境信息操作系统:RockyLinux9.4(aarch64)OpenJDK:OpenJDK8u422BootJDK:jdk8u421-linux-aarch64编译OpenJDK需要有一个JDK。解压后当前目录结构如下:/opt/├──jdk1.8.0_421│├──COPYRIGHT│├──LICENSE│├──README.html│├──THIRDPARTYLICENSEREADME.tx
Netty和Websocket的区别
moton2017
websocket网络协议网络
Netty和WebSocket没有直接可比性,因为它们在网络编程环境中具有不同的用途。Netty:Netty是一个高性能、事件驱动的网络框架,用于用Java构建网络应用程序。它提供了一组用于处理各种网络协议(例如TCP和UDP)的工具和抽象。Netty通常用于构建需要低延迟、高吞吐量通信的服务器和客户端。Websocket:WebSocket是一种通信协议,可通过单个长期连接提供全双工通信通道。它
i7 12800hx和i9 11980hk差距
m0_52331396
cpucpu
酷睿i9-11980HK采用了8核16线程设计,其基准频率为2.6GHz,最大频率为5.0GHz,并拥有24MB的三级缓存,同时集成锐炬IrisXeUHD核显并支持处理器超频,在连接性方面,i9-11980HK支持PCIe4.0、Thunderbolt4、Wi-Fi6/6E技术。其TDP范围在45-65W之间。笔记本cpu选i911980hk还是i712800hx这些点很重要http://www.
docker——入门介绍、组件介绍、安装与启动、镜像相关命令、容器相关命令、应用部署
山上有个车
dockerdocker容器运维
文章目录一、入门介绍什么是虚拟化名词解释什么是Dockerdocker的优点容器与虚拟机比较二、组件介绍三、安装与启动安装docker所需依赖换yum源安装docker查看docker版本启动docker关闭dockerdocker开机启动查看docker详细信息四、镜像相关命令镜像加速五、容器相关命令六、应用部署部署mysql部署redis运行nginx一、入门介绍什么是虚拟化在计算机中,虚拟化
Qt调用FFmpeg库实时播放UDP组播视频流
daqinzl
qtffmpeg流媒体qtffmpegudp组播流
基于以下参考链接,通过改进实现实时播放UDP组播视频流https://blog.csdn.net/u012532263/article/details/102736700源码在windows(qt-opensource-windows-x86-5.12.9.exe)、ubuntu20.04.6(x64)(qt-opensource-linux-x64-5.12.12.run)、以及针对arm64的
【车牌识别】卷积神经网络CNN车牌识别【含 GUI Matlab源码 2638期】
Matlab仿真科研站
matlab
欢迎来到Matlab仿真科研站博客之家✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。个人主页:Matlab仿真科研站博客之家代码获取方式:扫描文章底部QQ二维码⛳️座右铭:行百里者,半于九十;路漫漫其修远兮,吾将上下而求索。⛄更多Matlab图像处理(仿真科研站版)仿真内容点击Matlab图像处理(仿真科研站版)⛄一、CNN车牌识别简介1车牌定位1.
深入 UE5 第三人称游戏:目录结构全解析与代码示例
阿贾克斯的黎明
游戏开发ue5游戏
目录项目根目录:项目的基石Content目录:游戏内容的核心仓库LevelPrototyping目录StarterContent目录ThirdPerson目录Intermediate目录Saved目录其他特殊目录目录结构优化与最佳实践总结在虚幻引擎5(UE5)的开发领域中,第三人称游戏以其独特的视角和丰富的交互体验深受玩家喜爱。对于开发者而言,理解并合理运用UE5第三人称游戏的目录结构,是构建高质
springmvc揭秘参数解析
拾光师
#springmvcjava
文章目录参数解析RequestResponseBodyMethodProcessor调用消息解析器参数转换Converter接口Formatter接口GenericConverter接口ConversionService接口数据验证参数解析说到参数解析,springmvc中处理参数的是HandlerMethodArgumentResolver接口publicinterfaceHandlerMeth
【2024年华为OD机试】(C卷,100分)- 悄悄话 (Java & JS & Python&C/C++)
妄北y
算法汇集笔记总结(保姆级)华为odc语言javapythonjavascript
一、问题描述题目描述给定一个二叉树,每个节点上站一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。输入描述给定二叉树的层序遍历序列:0920-1-1157-1-1-1-132注:-1表示空节点。输出描述返回所有节点都接收到悄悄话花费的时间。38用例输入0920-1-1157-1-1-1
.NET MAUI 手搓 UDP/TCP 通信
云端狂人
.netudptcp/ip
在.NETMAUI中,UDP和TCP是网络通信协议,与MAUI框架本身的关系在于.NETMAUI可以利用.NET的网络功能来实现跨平台的网络通信。.NET提供的System.Net.Sockets命名空间来处理。该命名空间提供了创建和管理套接字(Sockets)来进行网络通信的相关类和方法。在.NETMAUI中,这些类同样适用于跨平台应用开发。具体来说:.NETMAUI是一个跨平台框架,用于构建A
.NET MAUI进行UDP通信(二)
聿琴丶
MAUI.netudp网络协议
上篇文章有写过一个简单的demo,本次对项目进行进一步的扩展,添加tabbar功能。1.修改AppShell.xaml文件,如下所示:-->-->1).将MainPage注释掉2).添加tabbar功能3).第一个ShellConten的路由设置为Mine文件,注意到ContentTemplate="{DataTemplateminePage:Mine}",当前不是local,是因为我们引用了命名
数码管扫描显示verilog_如何开始Xilinx FPGA开发之旅 第二课 EGO1数码管与键盘
weixin_39869959
数码管扫描显示verilog
庚子年,我们的EGO1在疫情当中作为口袋实验平台成为了众多高校的复课利器。其中的成功案例更是得到了新华社网媒与CCTV教育频道的报道。借此东风,为了让更多的老师与学生熟悉了解Xilinx,更好的入门学习FPGA知识,我们的师资培训直播已开设EGO1专题直播,欢迎新老朋友跟踪关注。第二课----EGO1数码管与键盘本周的直播我们将介绍EGO1的外设使用案例,介绍数码管扫描的原理和PS/2协议。并教大
深度探索:Java 中注解与 AOP 的完美协作
阿贾克斯的黎明
javajava
在Java开发领域,随着应用程序的规模和复杂度不断攀升,如何高效地管理代码、实现横切关注点的分离成为了开发者们面临的关键挑战。注解(Annotations)和面向切面编程(Aspect-OrientedProgramming,AOP)的出现,为我们提供了强大的工具来优雅地应对这些难题。今天,就让我们深入探讨一下它们是如何协同工作,为代码注入强大活力的。一、注解:代码中的隐形标记注解,从本质上来说,
LLM架构与优化:从理论到实践的关键技术
XianxinMao
人工智能
标题:“LLM架构与优化:从理论到实践的关键技术”文章信息摘要:文章探讨了大型语言模型(LLM)开发与应用中的关键技术,包括Transformer架构、注意力机制、采样技术、Tokenization等基础理论,以及模型部署、应用开发、优化等实践技能。重点分析了预训练、后训练、监督微调(SFT)和偏好对齐(PreferenceAlignment)在提升模型性能中的作用,并对比了直接偏好优化(DPO)
数字化智能运维平台建设方案
公众号:优享智库
数字化转型数据治理主数据数据仓库运维
数字化智能运维平台建设方案数字化智能运维平台建设方案项目背景与目标运维现状与挑战数字化转型需求项目目标与预期成果平台架构设计整体架构规划功能模块划分技术选型及原因数据采集与监控数据来源及接入方式实时监控与预警机制数据存储与管理策略智能化分析与优化故障诊断与预测模型性能评估及优化建议资源调度与容量规划平台安全保障措施身份认证与权限管理数据加密传输存储漏洞扫描及修复机制平台实施与运维支持实施步骤及时间
WordPress网站选择LNMP环境和LAMP环境哪个好
zoneidccom
WordPress网站选择LNMP环境和LAMP环境哪个好【199cloud-艾娜】WordPress建网站选择LNMP环境还是LAMP环境服务更好呢?现在建站常用的两大环境服务是LNMP和LAMP,因为这两种环境易用,好上手,所以普及率一直很高。比如我们常用的宝塔面板,在初次登陆界面就会提示二选一。要想知道哪个好用,我们先来详细了解这两款环境服务。LNMP和LAMP,意思是指Linux服务器+N
桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
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