- linux生成mux节点,mux - 路由
另一个21
linux生成mux节点
[TOC]>[参考文档](https://github.com/gorilla/mux)##安装``goget-ugithub.com/gorilla/mux`##实例###path解析```r:=mux.NewRouter()r.HandleFunc("/products/{key}",ProductHandler)r.HandleFunc("/articles/{category}/",Art
- Go 每日一库之 gorilla/sessions
darjun
pythonnginxjava数据库mysql
简介上一篇文章《Go每日一库之securecookie》中,我们介绍了cookie。同时提到cookie有两个缺点,一是数据不宜过大,二是安全问题。session是服务器端的存储方案,可以存储大量的数据,而且不需要向客户端传输,从而解决了这两个问题。但是session需要一个能唯一标识用户的ID,这个ID一般存放在cookie中发送到客户端保存,随每次请求一起发送到服务器。cookie和sessi
- Gorilla/Mux 中的 Session 管理:实现自定义中间件
microrain
golang物联网中间件
在现代Web应用开发中,会话管理是一个至关重要的组成部分。它允许我们跟踪用户状态,提供个性化的用户体验,并确保应用的安全性。今天,我们将深入探讨如何为GorillaMux框架实现一个强大而灵活的Session中间件。为什么需要自定义Session中间件?虽然Gorilla提供了出色的sessions包,但直接集成到Mux路由器中需要一些额外的工作。通过创建自定义中间件,我们可以:简化会话的设置和使
- GoModule
MatsumotoChrikk
GolangLearninggolang
GOPATH最早的就是GOPATH构建模式,goget下载的包都在path中的src目录下src目录是源代码存放目录。packagemainimport("net/http""github.com/gorilla/mux")funcmain(){r:=mux.NewRouter()r.HandleFunc("/hello",func(whttp.ResponseWriter,r*http.Requ
- go mux子路由的基本使用
十维的想象
代码示例:packagemainimport("encoding/json""github.com/gorilla/mux""net/http")//定义Product的结构体typeProductstruct{Namestring`json:"name"`Pricefloat64`json:"price"`Numint32Descstring}//定义Shop的结构体typeShopstruct
- 【golang】24、go get 和 go mod:indrect 与 go mod tidy
呆呆的猫
#golanggolang开发语言后端
文章目录goget会执行如下操作:操作go.mod文件(add、update、remove)下载依赖到$GOPATH/pkg/mod中若已安装,则更新该包,到最新版本试验前置准备:首先删除已下载的依赖,rm-rf$GOPATH/pkg/mod/github.com/gorilla/websocket,该目录效果如下:然后开始试验:首先,刚开始建项目时,go.mod只有两行:module名和go版本
- 【golang】23、gorilla websocket 源码:examples、数据结构、流程
呆呆的猫
#golang计算机网络golangwebsocket开发语言
文章目录一、examples1.1echo1.1.1server.go1.1.2client.go1.2command1.2.1功能和启动方式1.2.2home.html1.2.3main.go1.3filewatch1.3.1html1.3.2serveHome渲染模板1.3.3serveWs1.3.4writer()1.4bufferpool1.4.1server1.4.2client1.5c
- go websocket 聊天室
douyacun
环境原文链接后端语言golang数据库elastisearchweb框架是基于gin封装的websocket库用的是gorilla/websocket日志:zapError:pkg/errors前端框架:react服务端渲染:nextjsUI:MaterialUI登录认证:cookienookiewebsocket是浏览器原生支持后续聊天功能模仿:https://getstream.io/登录gi
- go语言WebSocket编程
leellun
go网络编程go从入门到实践golangwebsocket开发语言
1.webSocket介绍WebSocket是一种在单个TCP连接上进行全双工通信的协议WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输需要安装第三方包:cmd中:goget-u-vgithub.com/gorilla/websocke
- Go web:Gorilla
qingshuiting
GorillaGorillacontextcontext存储在request整个生命周期的数据存储。http.request中封装了一个context.Context。Gorilla的context提供的一种对http.request中的context.Context的set,get,delete的支持。Gorillahttporhttp/clienthttphighlevel的APIhttpht
- Gin 中使用 Cookie,Session
go&Python
#gingingolang后端
文章目录Gin中使用Cookie,SessionCookie介绍和使用介绍Gin中Cookie的设置Gin中Cookie的获取获取案例Cookie登陆认证练习Session的介绍和使用Session介绍Session工作流程Gin中使用Sessiongin-contrib/sessions使用gorilla/sessions使用gin框架使用net/http使用删除session的值Gin中使用C
- Go Gin使用Websocket
久百一
github地址:https://github.com/gin-gonic/gingogetgithub.com/gin-gonic/gingorilla拥有很多类库,这次我们使用的是它的webSocketgogetgithub.com/gorilla/websocketpackagemainimport("github.com/gin-gonic/gin""github.com/gorilla/
- websocket 应用
湫然Quin
websocket网络协议网络golang
websocket-golang应用目录结构client:客户端service:服务端memory:服务端管理客户端长链接信息dimain:通用结构体定义websocket_test:测试用例servicepackagewebsocketimport("net/http""time""github.com/gorilla/websocket")/**webSocket服务端*///升级http请求
- golang websocket库
youngsailor
websocket网络协议网络
一个基于gorilla封装的websocket库,多协程分发任务,欢迎大家批评指正。GitHub-youngsailor/websocket:asmallgowebsocketlibrary
- Golang 搭建 WebSocket 应用(一) - 初识 gorilla/websocket
白如意i
gogolangwebsocket开发语言
在本系列文章中,将会使用在Go中一个用得比较多的WebSocket实现gorilla/websocket。背景知识-HTTP与WebSocket的关系本文会涉及到一些原理讲解,其中比较关键的一个是HTTP与WebSocket的联系与区别,了解这个可以帮助我们更好地使用WebSocket。如果我们此前已经使用过WebSocket,比如在nginx配置过WebSocket,我们就会发现:有个类似upg
- 玩转 Go 生态|Hertz WebSocket 扩展简析
-白 泽-
golanggolangwebsocket开发语言
WebSocket是一种可以在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。Hertz提供了WebSocket的支持,参考gorilla/websocket库使用hijack的方
- golang路由mux的介绍及基本使用
十维的想象
github地址:https://github.com/gorilla/mux#matching-routeshttps://gitee.com/mirrors/mux#exampleshttp://www.gorillatoolkit.org/pkg/muxhttps://github.com/gorilla/mux#examples代码示例:import("encoding/json""git
- go http升级为websocket举例
abytecoder
httpwebsocket网络协议
当使用Go语言编写WebSocket服务器时,可以使用`net/http`包来处理客户端的HTTP请求,并将其升级为WebSocket连接。以下是一个简单的示例代码:```gopackagemainimport("fmt""log""net/http""github.com/gorilla/websocket")varupgrader=websocket.Upgrader{CheckOrigin:
- 在Golang中如何配置WebSocket以使用wss
北漂燕郊杨哥
golangwebsocket开发语言
在Golang中配置WebSocket以使用wss(WebSocketoverTLS)需要使用TLS(TransportLayerSecurity)来加密WebSocket连接。以下是一个简单的示例代码,演示了如何在Golang中配置WebSocket以使用wss:packagemainimport("log""net/http""github.com/gorilla/websocket")var
- Go使用websocket
飞起的豹子
go学习websocketgolangwebsocket开发语言
文章目录引言进入正题1、依赖2、升级客户端3、websocket处理方法4、完整代码引言实时性较高的地方,我们可能会使用到websocket对信息进行实时推送,涉及到websocket就会有开启连接,接收消息,推送消息,错误处理等机制,那么现在我们就使用go语言来实现一个消息的实时推送与接收进入正题1、依赖除去正常的go的sdk依赖我们需要另一个依赖"github.com/gorilla/webs
- Golang WebSocket 创建单独会话
一只会写程序的猫
Gogolangwebsocket开发语言
概述WebSocket是一种在Web开发中非常常见的通信协议,它提供了双向、持久的连接,适用于实时数据传输和实时通信场景。在Golang中,我们可以使用标准库中的net/http和github.com/gorilla/websocket包来轻松创建和管理WebSocket连接。本文将介绍如何使用Golang创建单独的WebSocket会话,包括建立连接、消息传递和关闭连接等操作。准备工作在开始之前
- golang 实现 websocket 简单示例
彩色代码
Golang编程语言websocketgolangjavascript
当然可以!以下是一个使用Go编写的简单WebSocket演示程序:packagemainimport("log""net/http""github.com/gorilla/websocket")varupgrader=websocket.Upgrader{CheckOrigin:func(r*http.Request)bool{returntrue},}funcmain(){http.Handle
- Golang/Gin-WebSocket实现实时消息推送
ZibeSun
GOgolangwebsocket
Golang/Gin-WebSocket实现实时消息推送前言gorilla/websocket基础用法实现实时消息推送代码api补充说明前言WebSocket在HTML5游戏和网页消息推送都使用比较多。WebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信。目前Go中用的比较多的WebSocket包是gorilla/websocket,
- go实现一个简单的websocket推送程序
永远的麦田
go的应用websocket网络协议网络
最近要在一个go实现的K线服务器上追加一个websocket推送功能。初步设想是在各品种每分钟的数据完成后立即向各订阅单位推送对应的K线数据。一、场景抽象:1用户连接上服务器2用户订阅某品种的某周期3用户退订某品种某周期4用户断开服务器订阅:推送:二、程序框架由于go语言不熟,幸好网上有人做了成熟的框架:GitHub-gorilla/websocket:Afast,well-testedandwi
- golang websocket 客户端订阅
sweey_lff
golangwebsocket
packagemainimport("fmt""github.com/gorilla/websocket""log""os""os/signal""time")funcmain(){//installsignalinterrupt:=make(chanos.Signal,1)signal.Notify(interrupt,os.Interrupt)//connectwsws:=`ws://10.1
- 如何使用Go语言创建WebSocket服务?
銨靜菂等芐紶
gowebsocket
转载自品略图书馆今天介绍如何用Go语言创建WebSocket服务,文章的前两部分简要介绍了WebSocket协议以及用Go标准库如何创建WebSocket服务。第三部分实践环节我们使用了gorilla/websocket库帮助我们快速构建WebSocket服务,它帮封装了使用Go标准库实现WebSocket服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建WebSocke
- 使用Go语言创建WebSocket服务
kevin_tech
Go语言Web编程入门javahttppythonwebsocketsocket
今天介绍如何用Go语言创建WebSocket服务,文章的前两部分简要介绍了WebSocket协议以及用Go标准库如何创建WebSocket服务。第三部分实践环节我们使用了gorilla/websocket库帮助我们快速构建WebSocket服务,它帮封装了使用Go标准库实现WebSocket服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建WebSocket服务。GoWe
- go语言webSocket框架——gorilla
尚墨1111
Golang精进之路websocketgolang
文章目录HTTP参考文章:1HTTP协议1.1是什么?1.1.1客户端请求消息1.1.2服务器响应消息1.2HTTP请求方法1.3HTTP状态码1.4content-type内容类型2http.HandleFunc2.1是什么2.1.1ResponseWriter接口2.2简单实现2.2.1net/http提供的handler2.2.2ListenAndServer()2.2.3Request2.
- echo
skoll
packagemainimport("flag""net/http""github.com/gorilla/websocket""fmt")varaddr=flag.String("addr","localhost:8080","httpserveaddredd")varupgrader=websocket.Upgrader{ReadBufferSize:1024,WriteBufferSize:
- golang常用库之字段参数验证库-validator使用详解
爱吃西葫芦的骑士
golang服务器开发语言
golang常用库:gorilla/mux-http路由库使用golang常用库:配置文件解析库-viper使用golang常用库:操作数据库的orm框架-gorm基本使用golang常用库:字段参数验证库-validator使用一、背景在平常开发中,特别是在web应用开发中,为了验证输入字段的合法性,都会做一些验证操作。比如对用户提交的表单字段进行验证,或者对请求的API接口字段进行验证,验证字
- 桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
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