-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
308 lines (246 loc) · 48.2 KB
/
index.html
File metadata and controls
308 lines (246 loc) · 48.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>YunPeng's技术博客 - 随心而动</title><meta name="keywords" content="Java,感悟,生活"><meta name="author" content="yunpeng"><meta name="copyright" content="yunpeng"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="YunPeng's技术博客">
<meta property="og:url" content="https://pengspace.top/index.html">
<meta property="og:site_name" content="YunPeng's技术博客">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://pengspace.top/img/avatar.png">
<meta property="article:author" content="yunpeng">
<meta property="article:tag" content="Java,感悟,生活">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://pengspace.top/img/avatar.png"><link rel="shortcut icon" href="/img/favicon16x16.png"><link rel="canonical" href="https://pengspace.top/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: undefined,
translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"简"},
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '天',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'YunPeng\'s技术博客',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2024-12-18 20:30:06'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><meta name="generator" content="Hexo 6.2.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">26</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">32</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">7</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 文章</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('/img/index_img.png')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">YunPeng's技术博客</a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 文章</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">YunPeng's技术博客</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/AnswerCoder" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:zhangyp1015@163.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/2020/12/12/Git%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BD%BF%E7%94%A8/" title="Git版本控制工具的使用"><img class="post_bg" src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Git版本控制工具的使用"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/Git%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BD%BF%E7%94%A8/" title="Git版本控制工具的使用">Git版本控制工具的使用</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T06:03:13.000Z" title="发表于 2020-12-12 14:03:13">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T06:05:08.000Z" title="更新于 2020-12-12 14:05:08">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/">工具使用</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/Git/">Git</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/">版本控制</a></span></div><div class="content">版本控制概述版本控制是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。
版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。
常用版本控制工具Visual Source Safe(VSS)VSS是美国微软公司的产品,目前常用的版本为6.0版。VSS是配置管理的一种很好的入门级的工具。
易学易用是VSS的强项,VSS采用标准的windows操作界面,只要对微软的产品熟悉,就能很快上手。
VSS的配置管理的功能比较基本,提供文件的版本跟踪功能,对于build和基线的管理,VSS的打标签的功能可以提供支持。VSS提供share(共享)、branch(分支)和合并(merge)的功能,对于团队的开发进行支持。VSS不提供对 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/12/12/smartupload%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/" title="smartupload简单实现文件上传"><img class="post_bg" src="https://s2.loli.net/2022/08/14/FWfoLexXQO1HDtA.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="smartupload简单实现文件上传"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/smartupload%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/" title="smartupload简单实现文件上传">smartupload简单实现文件上传</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T06:01:24.000Z" title="发表于 2020-12-12 14:01:24">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T06:02:53.000Z" title="更新于 2020-12-12 14:02:53">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/">文件上传</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/smartupload/">smartupload</a></span></div><div class="content">文件上传实质上就是客户端发起请求,将一个大数据IO流上传到服务器
步骤:
1.将jar包添加到项目中:smartupload.jar
2.创建smartupload对象并初始化
1234567//创建对象SmartUpload smartUpload = new SmartUpload();//获得jsp的pageContent对象并初始化PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024, true);smartUpload.initialize(pageContext);//编码smartUpload.setCharset("utf-8");
getPageContext()方法
参数的含义
3.调用SmartUpload对象的upload()方法上传文件
123456//文件上传try { smartUpload.upload();} catch ( ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AJAX%E6%8A%80%E6%9C%AF/" title="一文搞懂AJAX技术"><img class="post_bg" src="https://s2.loli.net/2022/08/14/4bGjC1YzqQpIKBZ.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="一文搞懂AJAX技术"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AJAX%E6%8A%80%E6%9C%AF/" title="一文搞懂AJAX技术">一文搞懂AJAX技术</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:58:17.000Z" title="发表于 2020-12-12 13:58:17">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T06:00:36.000Z" title="更新于 2020-12-12 14:00:36">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/JQuery/">JQuery</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/AJAX/">AJAX</a></span></div><div class="content">AJAX简介AJAX(Asynchronous JavaScript and XML)即异步的 JavaScript 和 XML。AJAX 是与服务器交换数据,在不重新加载整个页面的情况下更新部分网页的技术。
ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成:
使用CSS和XHTML来表示。
使用DOM模型来交互和动态显示。
使用XMLHttpRequest来和服务器进行异步通信。
使用javascript来绑定和调用。
AJAX 的核心是 XMLHttpRequest 对象。
不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。
IE 浏览器使用 ActiveXObject,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象
AJAX属于前端技术,通过JS代码来编写。
AJAX工作原理Ajax的工作原理相当于在用户和服务器之间加了一个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器。像一些数据验证和数据处理等都交给Ajax引擎自己来做,只有 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/12/12/MVC%E6%A8%A1%E5%BC%8F%E5%92%8C%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/" title="MVC模式和三层架构"><img class="post_bg" src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MVC模式和三层架构"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/MVC%E6%A8%A1%E5%BC%8F%E5%92%8C%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/" title="MVC模式和三层架构">MVC模式和三层架构</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:56:15.000Z" title="发表于 2020-12-12 13:56:15">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T05:57:44.000Z" title="更新于 2020-12-12 13:57:44">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/MVC/">MVC</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/">三层架构</a></span></div><div class="content">为了便于管理繁杂的代码,以及降低代码的耦合性,于是衍生出了MVC模式,可以使开发者思路更加清晰,且代码更加利于维护。
MVC 模式Web MVC中的M(模型)-V(视图)-C(控制器)概念和标准MVC概念一样,Web MVC标准架构如下图所示:
M(Model) 模型 : 应用程序的核心功能,管理这个模块中用的数据和值,包含Dao层和Bean层
V(View )视图: 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观,一般指JSP或HTML前端页面
C(Controller)控制器: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。包含Servlet层和Service层
MVC用于将web(UI)层进行职责解耦
三层架构通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了「高内聚,低耦合」的思想。
表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 jsp/html
业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2020/12/12/%E8%BF%87%E6%BB%A4%E5%99%A8-Filter-%E5%92%8C%E7%9B%91%E5%90%AC%E5%99%A8-Listener/" title="过滤器(Filter)和监听器(Listener)"><img class="post_bg" src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="过滤器(Filter)和监听器(Listener)"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/%E8%BF%87%E6%BB%A4%E5%99%A8-Filter-%E5%92%8C%E7%9B%91%E5%90%AC%E5%99%A8-Listener/" title="过滤器(Filter)和监听器(Listener)">过滤器(Filter)和监听器(Listener)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:54:10.000Z" title="发表于 2020-12-12 13:54:10">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T05:55:31.000Z" title="更新于 2020-12-12 13:55:31">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/filter/">filter</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/listener/">listener</a></span></div><div class="content">过滤器(Filter)过滤器定义过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理.
过滤器的特点:在servlet之前和之后都会被执行
Filter使用
创建一个类实现Fiter接口(javax.servlet.Filter)例如:以下代码是简单的字符编码过滤器
123456789101112131415161718192021@WebFilter(filterName = "encodingFilter",urlPatterns = "/*")public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //初始化过滤器 } @Override publ ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82jSP/" title="一文搞懂jSP"><img class="post_bg" src="https://s2.loli.net/2022/08/14/FWfoLexXQO1HDtA.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="一文搞懂jSP"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82jSP/" title="一文搞懂jSP">一文搞懂jSP</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:51:56.000Z" title="发表于 2020-12-12 13:51:56">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T05:53:25.000Z" title="更新于 2020-12-12 13:53:25">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/jsp/">jsp</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/EL%E8%A1%A8%E8%BE%BE%E5%BC%8F/">EL表达式</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/JSTL%E6%A0%87%E7%AD%BE%E5%BA%93/">JSTL标签库</a></span></div><div class="content">JSP简介JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准,在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件。
JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。
语法
12345声明标签: <%!变量或者方法声明%>表达式标签: <%= 表达式%> 在页面上显示的效果程序代码标签: <%java代码%> 页面上动态展示内容<!-- html注释内容,查看源码时能看到 --><%-- jsp注释,查看页面源码时看不到 --%>
原理
JSP本质上也是servlet
将jsp文件翻译成java文件并编译成class文件,其中包含的HTML代码以流的方式被响应回浏览器显示
JSP中出现的状态码(服务器状态码 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82java-Servlet/" title="一文搞懂java Servlet"><img class="post_bg" src="https://s2.loli.net/2022/08/14/7J9RvVH8husy5BE.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="一文搞懂java Servlet"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82java-Servlet/" title="一文搞懂java Servlet">一文搞懂java Servlet</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:49:39.000Z" title="发表于 2020-12-12 13:49:39">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T05:53:10.000Z" title="更新于 2020-12-12 13:53:10">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/servlet/">servlet</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/session/">session</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/cookie/">cookie</a></span></div><div class="content">servlet简介Servlet(Server Applet),全称Java Servlet,是用Java编写的,运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
下图显示了 Servlet 在 Web 应用程序中的位置。
Servlet工作模式:① 客户端发送请求至服务器
这些请求可以是显式的数据,包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单
也可以是隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
② 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
③ 服务器将响应返回客户端,同第①个,这些响应也可以是显式的数据或隐式的 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/12/12/JavaWeb%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-Tomcat/" title="JavaWeb环境搭建(Tomcat)"><img class="post_bg" src="https://s2.loli.net/2022/08/14/4bGjC1YzqQpIKBZ.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="JavaWeb环境搭建(Tomcat)"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/12/12/JavaWeb%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-Tomcat/" title="JavaWeb环境搭建(Tomcat)">JavaWeb环境搭建(Tomcat)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-12-12T05:47:17.000Z" title="发表于 2020-12-12 13:47:17">2020-12-12</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-12-12T05:50:09.000Z" title="更新于 2020-12-12 13:50:09">2020-12-12</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/JavaWeb/">JavaWeb</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/JavaWeb/">JavaWeb</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/tomcat/">tomcat</a></span></div><div class="content">HTTP 协议简介超文本传输协议(HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。
HTTP协议是基于TCP/IP协议之上的应用层协议。
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
请求/响应的步骤
客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个T ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2020/11/16/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E9%AB%98%E7%BA%A7/" title="MySQL数据库高级"><img class="post_bg" src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MySQL数据库高级"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/11/16/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E9%AB%98%E7%BA%A7/" title="MySQL数据库高级">MySQL数据库高级</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-11-16T11:41:42.000Z" title="发表于 2020-11-16 19:41:42">2020-11-16</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-11-16T11:49:21.000Z" title="更新于 2020-11-16 19:49:21">2020-11-16</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/MySQL/">MySQL</a></span></div><div class="content">DQL数据查询进阶这里所用到的表结构如下图所示:
子查询子查询即嵌套在其他查询中的查询。可以利用嵌套关系完成一些复杂情况的查询。
例子 1:利用子查询进行过滤
订单存储在两个表中。对于包含订单号、客户ID、订单日期的每个订单,orders表存储⼀行。 各订单的物品存储在相关的orderitems表中。orders表不存储客户信息。它只存储客户的ID。实际的客户信息存储在customers表中。现在,假如需要列出订购了物品TNT2的所有客户,可以用下面的方式查询
12345678910111213141516171819-- 从oderitems表中查询所有包含物品TNT2中的订单编号order_num;-- 将上一步查询出的order_num作为在oders表中查询的条件,查询出符合条件的用户编号cust_id;-- 再将上一步查询出的cust_id作为在customers表中查询的条件,就可以查询出订购了物品TNT2的所有客户啦SELECT cust_name,cust_contactFROM customersWHERE cust_id IN ( SELECT ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/11/16/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%9F%BA%E7%A1%80/" title="MySQL数据库基础"><img class="post_bg" src="https://s2.loli.net/2022/08/14/7J9RvVH8husy5BE.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MySQL数据库基础"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/11/16/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%9F%BA%E7%A1%80/" title="MySQL数据库基础">MySQL数据库基础</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-11-16T11:36:21.000Z" title="发表于 2020-11-16 19:36:21">2020-11-16</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2020-11-16T11:49:29.000Z" title="更新于 2020-11-16 19:49:29">2020-11-16</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/">数据库</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/MySQL/">MySQL</a></span></div><div class="content">数据库介绍
什么是数据库
数据库(Database)就是按照数据结构来组织,存储和管理数据的仓库。专业的数据库是专门对数据进行创建,访问,管理,搜索等操作的软件,比起我们自己用文件读写的方式,用它对数据进行管理更加的方便,快速,安全。
数据库特点及作用
对数据进行持久化的保存
方便数据的存储和查询,速度快,安全,方便
可以处理并发访问
更加安全的权限管理访问机制
常见的数据库
数据库分两大类,一类是 关系型数据库。另一类叫做 非关系型数据库。
关系型数据库: MySQL,Oracle,PostgreSQL,SQLserver…
非关系型数据库:Redis内存数据库,MongoDB文档数据库…
关系型数据库与非关系型数据库对比可以看这篇文章:
https://my.oschina.net/u/3647687/blog/1534979
‘
MySQL是最流行的关系型数据库管理系统
关于数据库的一些概念
数据库 Database
数据表 Tables
数据字段 filed
行 row :每一行就是一条数据
列 col
MySql基础操作使用M ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><a class="page-number" href="/page/3/#content-inner">3</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/img/avatar.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">yunpeng</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">26</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">32</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">7</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/AnswerCoder"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/AnswerCoder" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:zhangyp1015@163.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">外面的声音太嘈杂,听自己的心就好</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2020/12/12/Git%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BD%BF%E7%94%A8/" title="Git版本控制工具的使用"><img src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Git版本控制工具的使用"/></a><div class="content"><a class="title" href="/2020/12/12/Git%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E5%B7%A5%E5%85%B7%E7%9A%84%E4%BD%BF%E7%94%A8/" title="Git版本控制工具的使用">Git版本控制工具的使用</a><time datetime="2020-12-12T06:03:13.000Z" title="发表于 2020-12-12 14:03:13">2020-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/12/smartupload%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/" title="smartupload简单实现文件上传"><img src="https://s2.loli.net/2022/08/14/FWfoLexXQO1HDtA.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="smartupload简单实现文件上传"/></a><div class="content"><a class="title" href="/2020/12/12/smartupload%E7%AE%80%E5%8D%95%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/" title="smartupload简单实现文件上传">smartupload简单实现文件上传</a><time datetime="2020-12-12T06:01:24.000Z" title="发表于 2020-12-12 14:01:24">2020-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AJAX%E6%8A%80%E6%9C%AF/" title="一文搞懂AJAX技术"><img src="https://s2.loli.net/2022/08/14/4bGjC1YzqQpIKBZ.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="一文搞懂AJAX技术"/></a><div class="content"><a class="title" href="/2020/12/12/%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82AJAX%E6%8A%80%E6%9C%AF/" title="一文搞懂AJAX技术">一文搞懂AJAX技术</a><time datetime="2020-12-12T05:58:17.000Z" title="发表于 2020-12-12 13:58:17">2020-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/12/MVC%E6%A8%A1%E5%BC%8F%E5%92%8C%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/" title="MVC模式和三层架构"><img src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MVC模式和三层架构"/></a><div class="content"><a class="title" href="/2020/12/12/MVC%E6%A8%A1%E5%BC%8F%E5%92%8C%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84/" title="MVC模式和三层架构">MVC模式和三层架构</a><time datetime="2020-12-12T05:56:15.000Z" title="发表于 2020-12-12 13:56:15">2020-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/12/12/%E8%BF%87%E6%BB%A4%E5%99%A8-Filter-%E5%92%8C%E7%9B%91%E5%90%AC%E5%99%A8-Listener/" title="过滤器(Filter)和监听器(Listener)"><img src="https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="过滤器(Filter)和监听器(Listener)"/></a><div class="content"><a class="title" href="/2020/12/12/%E8%BF%87%E6%BB%A4%E5%99%A8-Filter-%E5%92%8C%E7%9B%91%E5%90%AC%E5%99%A8-Listener/" title="过滤器(Filter)和监听器(Listener)">过滤器(Filter)和监听器(Listener)</a><time datetime="2020-12-12T05:54:10.000Z" title="发表于 2020-12-12 13:54:10">2020-12-12</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>分类</span>
</div>
<ul class="card-category-list" id="aside-cat-list">
<li class="card-category-list-item "><a class="card-category-list-link" href="/categories/JavaWeb/"><span class="card-category-list-name">JavaWeb</span><span class="card-category-list-count">7</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Java%E5%9F%BA%E7%A1%80/"><span class="card-category-list-name">Java基础</span><span class="card-category-list-count">13</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Java%E7%BB%83%E4%B9%A0/"><span class="card-category-list-name">Java练习</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%89%8D%E7%AB%AF/"><span class="card-category-list-name">前端</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/"><span class="card-category-list-name">工具使用</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/"><span class="card-category-list-name">数据库</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/"><span class="card-category-list-name">计算机基础</span><span class="card-category-list-count">1</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/AJAX/" style="font-size: 1.1em; color: #999">AJAX</a> <a href="/tags/EL%E8%A1%A8%E8%BE%BE%E5%BC%8F/" style="font-size: 1.1em; color: #999">EL表达式</a> <a href="/tags/Git/" style="font-size: 1.1em; color: #999">Git</a> <a href="/tags/JQuery/" style="font-size: 1.1em; color: #999">JQuery</a> <a href="/tags/JSON/" style="font-size: 1.1em; color: #999">JSON</a> <a href="/tags/JSTL%E6%A0%87%E7%AD%BE%E5%BA%93/" style="font-size: 1.1em; color: #999">JSTL标签库</a> <a href="/tags/Java/" style="font-size: 1.5em; color: #99a9bf">Java</a> <a href="/tags/JavaWeb/" style="font-size: 1.37em; color: #99a4b2">JavaWeb</a> <a href="/tags/MVC/" style="font-size: 1.1em; color: #999">MVC</a> <a href="/tags/MySQL/" style="font-size: 1.23em; color: #999ea6">MySQL</a> <a href="/tags/XML/" style="font-size: 1.1em; color: #999">XML</a> <a href="/tags/cookie/" style="font-size: 1.1em; color: #999">cookie</a> <a href="/tags/filter/" style="font-size: 1.1em; color: #999">filter</a> <a href="/tags/flex%E5%B8%83%E5%B1%80/" style="font-size: 1.1em; color: #999">flex布局</a> <a href="/tags/jsp/" style="font-size: 1.1em; color: #999">jsp</a> <a href="/tags/listener/" style="font-size: 1.1em; color: #999">listener</a> <a href="/tags/servlet/" style="font-size: 1.1em; color: #999">servlet</a> <a href="/tags/session/" style="font-size: 1.1em; color: #999">session</a> <a href="/tags/smartupload/" style="font-size: 1.1em; color: #999">smartupload</a> <a href="/tags/tomcat/" style="font-size: 1.1em; color: #999">tomcat</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/12/"><span class="card-archive-list-date">十二月 2020</span><span class="card-archive-list-count">8</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/11/"><span class="card-archive-list-date">十一月 2020</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/10/"><span class="card-archive-list-date">十月 2020</span><span class="card-archive-list-count">6</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/09/"><span class="card-archive-list-date">九月 2020</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/05/"><span class="card-archive-list-date">五月 2020</span><span class="card-archive-list-count">7</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">26</div></div><div class="webinfo-item"><div class="item-name">已运行时间 :</div><div class="item-count" id="runtimeshow" data-publishDate="2020-04-24T16:00:00.000Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">93.2k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2024-12-18T12:30:06.518Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">©2021 - 2024 By yunpeng</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div><div class="footer_custom_text"><a href="https://beian.miit.gov.cn/#/Integrated/index" style="color:white" target="_blank">豫ICP备2024100875号</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="translateLink" type="button" title="简繁转换">简</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><div class="js-pjax"><script>function subtitleType () {
getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => {
jinrishici.load(result =>{
if (true) {
const sub = []
const content = result.data.content
sub.unshift(content)
window.typed = new Typed('#subtitle', {
strings: sub,
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50,
})
} else {
document.getElementById('subtitle').innerHTML = result.data.content
}
})
})
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
}
} else {
subtitleType()
}
</script></div><script defer="defer" id="ribbon" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="false" data-click="false"></script><script defer="defer" id="fluttering_ribbon" mobile="false" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-fluttering-ribbon.min.js"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>