From acda8c6d3c410a764c0f73196291218751d7e86c Mon Sep 17 00:00:00 2001 From: gglss Date: Mon, 25 Dec 2023 17:35:30 +0800 Subject: [PATCH] Site updated: 2023-12-25 17:35:24 --- about/index.html | 2 +- archives/2022/08/index.html | 2 +- archives/2022/08/page/2/index.html | 2 +- archives/2022/08/page/3/index.html | 2 +- archives/2022/08/page/4/index.html | 2 +- archives/2022/09/index.html | 2 +- archives/2022/10/index.html | 2 +- archives/2022/11/index.html | 2 +- archives/2022/11/page/2/index.html | 2 +- archives/2022/11/page/3/index.html | 2 +- archives/2022/12/index.html | 2 +- archives/2022/index.html | 2 +- archives/2022/page/2/index.html | 2 +- archives/2022/page/3/index.html | 2 +- archives/2022/page/4/index.html | 2 +- archives/2022/page/5/index.html | 2 +- archives/2022/page/6/index.html | 2 +- archives/2022/page/7/index.html | 2 +- archives/2022/page/8/index.html | 2 +- archives/2022/page/9/index.html | 2 +- archives/2023/09/index.html | 2 +- archives/2023/10/index.html | 2 +- archives/2023/11/index.html | 2 +- archives/2023/12/index.html | 2 +- archives/2023/index.html | 2 +- archives/2023/page/2/index.html | 2 +- archives/index.html | 2 +- archives/page/10/index.html | 2 +- archives/page/2/index.html | 2 +- archives/page/3/index.html | 2 +- archives/page/4/index.html | 2 +- archives/page/5/index.html | 2 +- archives/page/6/index.html | 2 +- archives/page/7/index.html | 2 +- archives/page/8/index.html | 2 +- archives/page/9/index.html | 2 +- categories/index.html | 2 +- .../index.html" | 2 +- .../index.html" | 2 +- .../page/2/index.html" | 2 +- .../page/3/index.html" | 2 +- .../page/4/index.html" | 2 +- .../page/5/index.html" | 2 +- .../page/6/index.html" | 2 +- .../page/7/index.html" | 2 +- .../page/8/index.html" | 2 +- .../page/9/index.html" | 2 +- .../index.html" | 2 +- .../index.html" | 2 +- essay/index.html | 2 +- index.html | 2 +- page/2/index.html | 2 +- page/3/index.html | 2 +- page/4/index.html | 2 +- page/5/index.html | 2 +- page/6/index.html | 2 +- page/7/index.html | 2 +- page/8/index.html | 2 +- posts/1.html | 2 +- posts/10988.html | 2 +- posts/11643.html | 2 +- posts/11783.html | 2 +- posts/12080.html | 2 +- posts/12932.html | 2 +- posts/1351.html | 2 +- posts/13844.html | 2 +- posts/13923.html | 2 +- posts/15488.html | 2 +- posts/15521.html | 2 +- posts/16107.html | 2 +- posts/16468.html | 2 +- posts/16766.html | 2 +- posts/16785.html | 2 +- posts/18767.html | 2 +- posts/20480.html | 2 +- posts/2166.html | 2 +- posts/22551.html | 2 +- posts/23767.html | 4 +- posts/24951.html | 2 +- posts/25343.html | 2 +- posts/26527.html | 2 +- posts/26691.html | 2 +- posts/26726.html | 2 +- posts/27832.html | 2 +- posts/28702.html | 2 +- posts/28863.html | 2 +- posts/29537.html | 2 +- posts/31621.html | 2 +- posts/31868.html | 2 +- posts/32161.html | 2 +- posts/3219.html | 2 +- posts/32473.html | 2 +- posts/34250.html | 2 +- posts/34655.html | 2 +- posts/36554.html | 2 +- posts/37984.html | 2 +- posts/38168.html | 2 +- posts/40953.html | 2 +- posts/41091.html | 2 +- posts/42012.html | 2 +- posts/42075.html | 2 +- posts/42174.html | 4 +- posts/42395.html | 2 +- posts/42656.html | 2 +- posts/43612.html | 2 +- posts/43613.html | 2 +- posts/44160.html | 2 +- posts/44161.html | 2 +- posts/45938.html | 2 +- posts/4654.html | 2 +- posts/47474.html | 2 +- posts/47564.html | 2 +- posts/4851.html | 2 +- posts/48785.html | 2 +- posts/48851.html | 2 +- posts/48990.html | 2 +- posts/49262.html | 2 +- posts/50013.html | 2 +- posts/50070.html | 2 +- posts/50581.html | 2 +- posts/50699.html | 2 +- posts/51796.html | 2 +- posts/52630.html | 2 +- posts/527.html | 2 +- posts/52845.html | 2 +- posts/53299.html | 2 +- posts/53427.html | 2 +- posts/53508.html | 2 +- posts/53812.html | 2 +- posts/54899.html | 2 +- posts/55045.html | 2 +- posts/55320.html | 2 +- posts/55332.html | 2 +- posts/55393.html | 2 +- posts/55605.html | 2 +- posts/557.html | 2 +- posts/55957.html | 2 +- posts/56062.html | 2 +- posts/56883.html | 2 +- posts/57578.html | 2 +- posts/58312.html | 2 +- posts/58345.html | 2 +- posts/58353.html | 2 +- posts/59561.html | 2 +- posts/6166.html | 2 +- posts/622.html | 2 +- posts/62565.html | 2 +- posts/63387.html | 2 +- posts/63516.html | 2 +- posts/63722.html | 2 +- posts/65365.html | 2 +- posts/6705.html | 2 +- posts/7272.html | 2 +- posts/7388.html | 2 +- posts/7613.html | 2 +- posts/7883.html | 4 +- random/random.js | 2 +- redirect/index.html | 2 +- search.xml | 2566 ++++++++--------- self/css/gundong_bunner.css | 2 +- self/css/indexs.css | 2 +- self/css/researchblog.css | 2 +- tags/Butterfly/index.html | 2 +- tags/English/index.html | 2 +- tags/Git/index.html | 2 +- tags/Properties/index.html | 2 +- tags/SpringBoot/index.html | 2 +- tags/css/index.html | 2 +- tags/docker/index.html | 2 +- tags/docker/page/2/index.html | 2 +- tags/docker/page/3/index.html | 2 +- tags/error/index.html | 2 +- tags/index.html | 2 +- tags/java/index.html | 2 +- tags/java/page/2/index.html | 2 +- tags/jmeter/index.html | 2 +- tags/jmeter/page/2/index.html | 2 +- tags/postman/index.html | 2 +- tags/python/index.html | 2 +- tags/shell/index.html | 2 +- tags/sql/index.html | 2 +- tags/ubuntu/index.html | 2 +- tags/xpath/index.html | 2 +- tags/yaml/index.html | 2 +- .../index.html" | 2 +- "tags/\347\233\221\346\216\247/index.html" | 2 +- .../index.html" | 2 +- "tags/\350\200\203\347\240\224/index.html" | 2 +- "tags/\351\251\254\345\223\262/index.html" | 2 +- "tags/\351\253\230\346\225\260/index.html" | 2 +- .../index.html" | 2 +- 191 files changed, 1476 insertions(+), 1476 deletions(-) diff --git a/about/index.html b/about/index.html index aa0305a2b..d7932aa85 100644 --- a/about/index.html +++ b/about/index.html @@ -1 +1 @@ -关于 | GGLSS

关于

🤖️ 数码爱好者🔍 不解决不放弃🏠 智能家居小能手🔨 开发小萌新
折腾劲 MAX 🤝脚踏实地行动派 🏃践踏各种困难 🧱话多人不狠 💢

生活明朗,万物可爱✨

你好,很高兴认识你👋
我叫GGLSS
是一名 测试工程师、独立开发者、博主
追求

源于
热爱而去感受
学习生活程序体验

Hello there!

技能
开启创造力
Vue
Java
Docker
Webpack
Photoshop
Swift
Python
Node
Git
Css
Js
...
生涯
无限进步
EDU,软件工程专业
生涯
座右铭
生活明朗,万物可爱。
特长
脑回路新奇的酸菜鱼二次元指数MAX
爱好游戏
原神
UID: 125766904
爱好番剧
紫罗兰的永恒花园
心路历程
欢迎来到我的博客 😝,这里是我记笔记的地方 🙌,目前就读于长沙湖南信息学院软件工程专业,虽然有时候常常会忘记更新笔记,咕咕 ✋~ 但是记笔记真的是一个很棒的习惯 💪,能把学下来的知识进行积累,沉淀,有一句话说的好,能教给别人的知识,才是真正学会了的知识 ⚡ 每周我都会尽量进行更新 ☁️,如果没更的话,可能是我忘了,也可能是我在钻研某个东西的时候太入迷了肯定又熬夜了同学们不要学我,老是熬夜会长痘 给大家推荐一部番:因为这部番,2018 年的一个夏天我看完以后心情久久不能释怀,为薇尔莉特与爱感到一种说不上来的味道,多年以后在看这部番,才明白原来这就是爱,喜欢这部番不仅仅是因为它制作的用心,不论是人物细节还是场景细节,不管是 op 还是 ed 都非常好听,最后的结局或许才是让我不能忘怀的原因,薇尔莉特,希望收到来自家人,朋友,恋人的那封 "信" ~

致力于成为一个前端小姥🐷

又菜又爱玩🎮ctrl +Cctrl +V高级CV工程师🏆

擅长PS、Pr、Ae、Au、Ai、Dw、An、Id等软件的安装与卸载🎃

精通Html、CSS、JavaScript、Vue、React、PHP、Java、Python、C、C++、C#、Go、TypeScript等单词的拼写🎲

熟悉Windows、Linux、Mac、Android、IOS等系统的开关机👻

todoList

原生微信小程序

vue3、vite、 pinia

重装文档重写

Electron

操作系统

svg绘制

threeJS

Next

Flutter

智慧城市大前端

react18系统学习

工业企业生产管理

语言的魅力

控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +关于 | GGLSS

关于

🤖️ 数码爱好者🔍 不解决不放弃🏠 智能家居小能手🔨 开发小萌新
折腾劲 MAX 🤝脚踏实地行动派 🏃践踏各种困难 🧱话多人不狠 💢

生活明朗,万物可爱✨

你好,很高兴认识你👋
我叫GGLSS
是一名 测试工程师、独立开发者、博主
追求

源于
热爱而去感受
学习生活程序体验

Hello there!

技能
开启创造力
Vue
Java
Docker
Webpack
Photoshop
Swift
Python
Node
Git
Css
Js
...
生涯
无限进步
EDU,软件工程专业
生涯
座右铭
生活明朗,万物可爱。
特长
脑回路新奇的酸菜鱼二次元指数MAX
爱好游戏
原神
UID: 125766904
爱好番剧
紫罗兰的永恒花园
心路历程
欢迎来到我的博客 😝,这里是我记笔记的地方 🙌,目前就读于长沙湖南信息学院软件工程专业,虽然有时候常常会忘记更新笔记,咕咕 ✋~ 但是记笔记真的是一个很棒的习惯 💪,能把学下来的知识进行积累,沉淀,有一句话说的好,能教给别人的知识,才是真正学会了的知识 ⚡ 每周我都会尽量进行更新 ☁️,如果没更的话,可能是我忘了,也可能是我在钻研某个东西的时候太入迷了肯定又熬夜了同学们不要学我,老是熬夜会长痘 给大家推荐一部番:因为这部番,2018 年的一个夏天我看完以后心情久久不能释怀,为薇尔莉特与爱感到一种说不上来的味道,多年以后在看这部番,才明白原来这就是爱,喜欢这部番不仅仅是因为它制作的用心,不论是人物细节还是场景细节,不管是 op 还是 ed 都非常好听,最后的结局或许才是让我不能忘怀的原因,薇尔莉特,希望收到来自家人,朋友,恋人的那封 "信" ~

致力于成为一个前端小姥🐷

又菜又爱玩🎮ctrl +Cctrl +V高级CV工程师🏆

擅长PS、Pr、Ae、Au、Ai、Dw、An、Id等软件的安装与卸载🎃

精通Html、CSS、JavaScript、Vue、React、PHP、Java、Python、C、C++、C#、Go、TypeScript等单词的拼写🎲

熟悉Windows、Linux、Mac、Android、IOS等系统的开关机👻

todoList

原生微信小程序

vue3、vite、 pinia

重装文档重写

Electron

操作系统

svg绘制

threeJS

Next

Flutter

智慧城市大前端

react18系统学习

工业企业生产管理

语言的魅力

控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/08/index.html b/archives/2022/08/index.html index bac37072d..767ba5ecf 100644 --- a/archives/2022/08/index.html +++ b/archives/2022/08/index.html @@ -1 +1 @@ -八月 2022 | GGLSS
文章总览 - 39
2022
如何使用pyyaml获取yaml里面的数据
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell函数
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +八月 2022 | GGLSS
文章总览 - 39
2022
如何使用pyyaml获取yaml里面的数据
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell函数
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/08/page/2/index.html b/archives/2022/08/page/2/index.html index 6d4d3b8e5..443086f2a 100644 --- a/archives/2022/08/page/2/index.html +++ b/archives/2022/08/page/2/index.html @@ -1 +1 @@ -八月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +八月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/08/page/3/index.html b/archives/2022/08/page/3/index.html index d53bce453..bd9f0c187 100644 --- a/archives/2022/08/page/3/index.html +++ b/archives/2022/08/page/3/index.html @@ -1 +1 @@ -八月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +八月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/08/page/4/index.html b/archives/2022/08/page/4/index.html index 687d5f93e..ac7cf39e7 100644 --- a/archives/2022/08/page/4/index.html +++ b/archives/2022/08/page/4/index.html @@ -1 +1 @@ -八月 2022 | GGLSS
文章总览 - 39
2022
本地镜像发布到私有库
本地镜像发布到私有库
容器(三)
容器(三)
镜像
镜像
本地镜像发布到阿里云
本地镜像发布到阿里云
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +八月 2022 | GGLSS
文章总览 - 39
2022
容器(二)
容器(二)
本地镜像发布到私有库
本地镜像发布到私有库
本地镜像发布到阿里云
本地镜像发布到阿里云
镜像
镜像
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/09/index.html b/archives/2022/09/index.html index 8b5d0bb11..d3c755a73 100644 --- a/archives/2022/09/index.html +++ b/archives/2022/09/index.html @@ -1 +1 @@ -九月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +九月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/10/index.html b/archives/2022/10/index.html index 0a7557431..07d2136a7 100644 --- a/archives/2022/10/index.html +++ b/archives/2022/10/index.html @@ -1 +1 @@ -十月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/11/index.html b/archives/2022/11/index.html index 0435d3bd9..e19b7ed37 100644 --- a/archives/2022/11/index.html +++ b/archives/2022/11/index.html @@ -1 +1 @@ -十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/11/page/2/index.html b/archives/2022/11/page/2/index.html index bf06b5577..d373f887c 100644 --- a/archives/2022/11/page/2/index.html +++ b/archives/2022/11/page/2/index.html @@ -1 +1 @@ -十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/11/page/3/index.html b/archives/2022/11/page/3/index.html index 745457938..9c31bd408 100644 --- a/archives/2022/11/page/3/index.html +++ b/archives/2022/11/page/3/index.html @@ -1 +1 @@ -十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十一月 2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/12/index.html b/archives/2022/12/index.html index 55aa3546d..e20a8763f 100644 --- a/archives/2022/12/index.html +++ b/archives/2022/12/index.html @@ -1 +1 @@ -十二月 2022 | GGLSS
文章总览 - 5
2022
抽象类与接口
抽象类与接口
包装类
包装类
字符串
字符串
继承、重写与重载
继承、重写与重载
硬件性能监控平台
硬件性能监控平台
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十二月 2022 | GGLSS
文章总览 - 5
2022
包装类
包装类
字符串
字符串
抽象类与接口
抽象类与接口
继承、重写与重载
继承、重写与重载
硬件性能监控平台
硬件性能监控平台
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/index.html b/archives/2022/index.html index 7ce9a65b1..705c23956 100644 --- a/archives/2022/index.html +++ b/archives/2022/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/2/index.html b/archives/2022/page/2/index.html index f1b66ab43..e555b0f21 100644 --- a/archives/2022/page/2/index.html +++ b/archives/2022/page/2/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/3/index.html b/archives/2022/page/3/index.html index 0ae182bfe..2c2e3f28c 100644 --- a/archives/2022/page/3/index.html +++ b/archives/2022/page/3/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/4/index.html b/archives/2022/page/4/index.html index 1b9d07e80..3d4c64a5f 100644 --- a/archives/2022/page/4/index.html +++ b/archives/2022/page/4/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/5/index.html b/archives/2022/page/5/index.html index dccf2aa25..a8514c598 100644 --- a/archives/2022/page/5/index.html +++ b/archives/2022/page/5/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/6/index.html b/archives/2022/page/6/index.html index a604b1163..132326470 100644 --- a/archives/2022/page/6/index.html +++ b/archives/2022/page/6/index.html @@ -1 +1 @@ -2022 | GGLSS
文章总览 - 87
2022
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
css教程一
css教程一
使用pip install报错的解决办法
使用pip install报错的解决办法
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
文章总览 - 87
2022
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
css教程一
css教程一
使用pip install报错的解决办法
使用pip install报错的解决办法
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/7/index.html b/archives/2022/page/7/index.html index 0bdccd97d..49c2992bd 100644 --- a/archives/2022/page/7/index.html +++ b/archives/2022/page/7/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/8/index.html b/archives/2022/page/8/index.html index 685f109ce..35ca8e871 100644 --- a/archives/2022/page/8/index.html +++ b/archives/2022/page/8/index.html @@ -1 +1 @@ -2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2022/page/9/index.html b/archives/2022/page/9/index.html index 985c664a7..32f025bea 100644 --- a/archives/2022/page/9/index.html +++ b/archives/2022/page/9/index.html @@ -1 +1 @@ -2022 | GGLSS
文章总览 - 87
2022
镜像
镜像
本地镜像发布到阿里云
本地镜像发布到阿里云
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2022 | GGLSS
文章总览 - 87
2022
本地镜像发布到阿里云
本地镜像发布到阿里云
镜像
镜像
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/09/index.html b/archives/2023/09/index.html index 724494f5e..e62027daf 100644 --- a/archives/2023/09/index.html +++ b/archives/2023/09/index.html @@ -1 +1 @@ -九月 2023 | GGLSS
文章总览 - 2
2023
长难句一
长难句一
2023立的flag
2023立的flag
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +九月 2023 | GGLSS
文章总览 - 2
2023
长难句一
长难句一
2023立的flag
2023立的flag
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/10/index.html b/archives/2023/10/index.html index bd3e4a16d..4da874bfc 100644 --- a/archives/2023/10/index.html +++ b/archives/2023/10/index.html @@ -1 +1 @@ -十月 2023 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十月 2023 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/11/index.html b/archives/2023/11/index.html index c3c361851..26ff643d7 100644 --- a/archives/2023/11/index.html +++ b/archives/2023/11/index.html @@ -1 +1 @@ -十一月 2023 | GGLSS
文章总览 - 1
2023
考研进度实况
考研进度实况
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十一月 2023 | GGLSS
文章总览 - 1
2023
考研进度实况
考研进度实况
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/12/index.html b/archives/2023/12/index.html index d7e59cdf2..760f09ee6 100644 --- a/archives/2023/12/index.html +++ b/archives/2023/12/index.html @@ -1 +1 @@ -十二月 2023 | GGLSS
文章总览 - 5
2023
english one
english one
Butterfly美化记录五
Butterfly美化记录五
python自动化配置参数
python自动化配置参数
自动获取driver
自动获取driver
Hello World
Hello World
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +十二月 2023 | GGLSS
文章总览 - 5
2023
english one
english one
Butterfly美化记录五
Butterfly美化记录五
python自动化配置参数
python自动化配置参数
自动获取driver
自动获取driver
Hello World
Hello World
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/index.html b/archives/2023/index.html index 279d2967a..004375ba3 100644 --- a/archives/2023/index.html +++ b/archives/2023/index.html @@ -1 +1 @@ -2023 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2023 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/2023/page/2/index.html b/archives/2023/page/2/index.html index 5ced47453..87960104f 100644 --- a/archives/2023/page/2/index.html +++ b/archives/2023/page/2/index.html @@ -1 +1 @@ -2023 | GGLSS
文章总览 - 12
2023
长难句一
长难句一
2023立的flag
2023立的flag
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2023 | GGLSS
文章总览 - 12
2023
长难句一
长难句一
2023立的flag
2023立的flag
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/index.html b/archives/index.html index c401d769d..c51cb5c3a 100644 --- a/archives/index.html +++ b/archives/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/10/index.html b/archives/page/10/index.html index c6f5052ed..b20a72e1b 100644 --- a/archives/page/10/index.html +++ b/archives/page/10/index.html @@ -1 +1 @@ -归档 | GGLSS
文章总览 - 99
2022
本地镜像发布到私有库
本地镜像发布到私有库
容器(三)
容器(三)
镜像
镜像
本地镜像发布到阿里云
本地镜像发布到阿里云
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
文章总览 - 99
2022
容器(二)
容器(二)
本地镜像发布到私有库
本地镜像发布到私有库
本地镜像发布到阿里云
本地镜像发布到阿里云
镜像
镜像
使用jmeter录制压测
使用jmeter录制压测
Yaml的使用
Yaml的使用
性能测试主要关注点
性能测试主要关注点
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/2/index.html b/archives/page/2/index.html index 6134a3cfb..2a100a4b4 100644 --- a/archives/page/2/index.html +++ b/archives/page/2/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/3/index.html b/archives/page/3/index.html index e8bc74e08..8984adf6c 100644 --- a/archives/page/3/index.html +++ b/archives/page/3/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/4/index.html b/archives/page/4/index.html index 6dc8fd4a4..20b3dbf67 100644 --- a/archives/page/4/index.html +++ b/archives/page/4/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/5/index.html b/archives/page/5/index.html index cd140bf86..7efc1a8ee 100644 --- a/archives/page/5/index.html +++ b/archives/page/5/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/6/index.html b/archives/page/6/index.html index d4e807cad..6c1e1e9d5 100644 --- a/archives/page/6/index.html +++ b/archives/page/6/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/7/index.html b/archives/page/7/index.html index f92f79eab..aa583ddd1 100644 --- a/archives/page/7/index.html +++ b/archives/page/7/index.html @@ -1 +1 @@ -归档 | GGLSS
文章总览 - 99
2022
如何使用pyyaml获取yaml里面的数据
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell函数
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
文章总览 - 99
2022
如何使用pyyaml获取yaml里面的数据
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell函数
Shell工具(一)
Shell工具(一)
Shell条件判断
Shell条件判断
Shell流程控制
Shell流程控制
Shell运算符
Shell运算符
Shell工具(二)
Shell工具(二)
Shell脚本初探
Shell脚本初探
Shell变量
Shell变量
Shell脚本入门
Shell脚本入门
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/8/index.html b/archives/page/8/index.html index a4db6a7d1..8103fde59 100644 --- a/archives/page/8/index.html +++ b/archives/page/8/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/archives/page/9/index.html b/archives/page/9/index.html index a191ab39c..22c98ce16 100644 --- a/archives/page/9/index.html +++ b/archives/page/9/index.html @@ -1 +1 @@ -归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +归档 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 7f48f89b3..24919e4c2 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1 +1 @@ -分类 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\255\246\344\271\240\346\227\245\345\270\270/index.html" "b/categories/\345\255\246\344\271\240\346\227\245\345\270\270/index.html" index 6d025585e..8293158d9 100644 --- "a/categories/\345\255\246\344\271\240\346\227\245\345\270\270/index.html" +++ "b/categories/\345\255\246\344\271\240\346\227\245\345\270\270/index.html" @@ -1 +1 @@ -分类: 学习日常 | GGLSS
分类 - 学习日常
2023
english one
english one
考研进度实况
考研进度实况
长难句一
长难句一
2022
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 学习日常 | GGLSS
分类 - 学习日常
2023
english one
english one
考研进度实况
考研进度实况
长难句一
长难句一
2022
马哲
马哲
高数一
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/index.html" index e9db7e6c4..2793c3b2e 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/2/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/2/index.html" index f0ae673f3..651efdeec 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/2/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/2/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/3/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/3/index.html" index a7745e56b..47da9286b 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/3/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/3/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/4/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/4/index.html" index 31a7d12ae..59bac08bd 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/4/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/4/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/5/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/5/index.html" index c28ba4fd0..ccb724d8a 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/5/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/5/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/6/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/6/index.html" index e44803de4..bd351d1f5 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/6/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/6/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/7/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/7/index.html" index dba7e3c15..f61471667 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/7/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/7/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/8/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/8/index.html" index c47f0e032..54191121d 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/8/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/8/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/9/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/9/index.html" index 1cc5cb776..2762aed9d 100644 --- "a/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/9/index.html" +++ "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/page/9/index.html" @@ -1 +1 @@ -分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 工具教程 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\347\224\237\346\264\273\346\227\245\345\270\270/index.html" "b/categories/\347\224\237\346\264\273\346\227\245\345\270\270/index.html" index 39bd169a1..b4ec6f90d 100644 --- "a/categories/\347\224\237\346\264\273\346\227\245\345\270\270/index.html" +++ "b/categories/\347\224\237\346\264\273\346\227\245\345\270\270/index.html" @@ -1 +1 @@ -分类: 生活日常 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 生活日常 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git "a/categories/\347\273\217\351\252\214\345\210\206\344\272\253/index.html" "b/categories/\347\273\217\351\252\214\345\210\206\344\272\253/index.html" index 863717258..a95136cec 100644 --- "a/categories/\347\273\217\351\252\214\345\210\206\344\272\253/index.html" +++ "b/categories/\347\273\217\351\252\214\345\210\206\344\272\253/index.html" @@ -1 +1 @@ -分类: 经验分享 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +分类: 经验分享 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/essay/index.html b/essay/index.html index 2813dbe07..a3634957b 100644 --- a/essay/index.html +++ b/essay/index.html @@ -1 +1 @@ -哔哔一下 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +哔哔一下 | GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/index.html b/index.html index 1306787fa..45d6395ef 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
english one
Butterfly美化记录五
python自动化配置参数
自动获取driver
Hello World
考研进度实况
Butterfly美化记录四
Butterfly美化记录二
Butterfly美化记录三
Butterfly美化记录一
长难句一
2023立的flag
抽象类与接口
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
english one
Butterfly美化记录五
python自动化配置参数
自动获取driver
Hello World
考研进度实况
Butterfly美化记录四
Butterfly美化记录三
Butterfly美化记录二
Butterfly美化记录一
长难句一
2023立的flag
包装类
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/2/index.html b/page/2/index.html index b66368762..0aca26501 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
包装类
字符串
继承、重写与重载
硬件性能监控平台
Constant Throughput Timer定时器
Gaussian Random Timer定时器
Regular Expression Extractor正则表达式处理器
Groovy编写方法
Arrivals Thread Group的使用
Ultimate Thread Group的使用
Modeule Controller和Include Controller
Constant Timer定时器
随机控制器Random Controller和Random Order Controller
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
字符串
抽象类与接口
继承、重写与重载
硬件性能监控平台
Constant Throughput Timer定时器
Gaussian Random Timer定时器
Regular Expression Extractor正则表达式处理器
Groovy编写方法
Ultimate Thread Group的使用
Arrivals Thread Group的使用
Constant Timer定时器
Modeule Controller和Include Controller
循环控制器Loop Controller
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/3/index.html b/page/3/index.html index 07af4be1f..4d1d1a5d0 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
循环控制器Loop Controller
逻辑控制器Simple Controller
事务控制器Transcation Controller
逻辑控制器If Controller
使用moko编写Get和Post测试接口(二)
使用moko编写包含cookie信息的测试接口(二)
使用moko编写测试接口(无)
使用moko编写测试接口(五)
使用moko编写重定向测试接口(四)
使用moko编写测试接口(一)
jmeter对数据库进行增删改查
jmeter自动化压力测试
Jmeter之json数据提取和参数传递
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
随机控制器Random Controller和Random Order Controller
逻辑控制器Simple Controller
事务控制器Transcation Controller
逻辑控制器If Controller
使用moko编写Get和Post测试接口(二)
使用moko编写测试接口(无)
使用moko编写包含cookie信息的测试接口(二)
使用moko编写测试接口(一)
使用moko编写测试接口(五)
使用moko编写重定向测试接口(四)
jmeter对数据库进行增删改查
jmeter自动化压力测试
Jmeter之全局参数设置和csv数据导入
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/4/index.html b/page/4/index.html index 363e766e9..01047c79f 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
Jmeter之全局参数设置和csv数据导入
Jmeter之静默压测
Jmeter之断言和聚合报告
测试必会的sql基本操作
开发获取用户列表的Post接口
开发获得cookie的Post登录接口
开发时遇到端口冲突解决办法
接口开发环境部署
返回cookie的Get接口开发
需要参数才能访问的get请求
需要cookie访问的Get接口开发
使用docker的ubuntu容器安装code-server
性能监控平台
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
Jmeter之json数据提取和参数传递
Jmeter之静默压测
Jmeter之断言和聚合报告
测试必会的sql基本操作
开发获取用户列表的Post接口
开发获得cookie的Post登录接口
开发时遇到端口冲突解决办法
接口开发环境部署
返回cookie的Get接口开发
需要cookie访问的Get接口开发
需要参数才能访问的get请求
使用docker的ubuntu容器安装code-server
性能监控平台
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/5/index.html b/page/5/index.html index 9771ed800..d08ee71e2 100644 --- a/page/5/index.html +++ b/page/5/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
git提示Timed out的解决办法
java基础之方法和函数
使用Java解析Properties文件
关闭chrome浏览器自动更新
自动化基础之Xpath定位
使用Postman如何做接口测试
解析Excel用于数据驱动
解析ini文件用于数据驱动
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell工具(一)
Shell条件判断
Shell流程控制
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
git提示Timed out的解决办法
使用Java解析Properties文件
java基础之方法和函数
关闭chrome浏览器自动更新
自动化基础之Xpath定位
使用Postman如何做接口测试
解析Excel用于数据驱动
解析ini文件用于数据驱动
如何使用pyyaml获取yaml里面的数据
Shell函数
Shell工具(一)
Shell条件判断
Shell流程控制
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/6/index.html b/page/6/index.html index cdab34ae4..8d2157c29 100644 --- a/page/6/index.html +++ b/page/6/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
Shell运算符
Shell工具(二)
Shell脚本初探
Shell变量
Shell脚本入门
css教程一
使用pip install报错的解决办法
_3主3从的`Redis集群`搭建(下)
_3主3从的`Redis集群`搭建之哈希槽算法
_3主3从的`Redis集群`搭建(上)
_主从容错切换迁移
docker 帮助启动类命令(一)
_dockerfile
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
Shell运算符
Shell工具(二)
Shell脚本初探
Shell变量
Shell脚本入门
css教程一
使用pip install报错的解决办法
_3主3从的`Redis集群`搭建(下)
_3主3从的`Redis集群`搭建之哈希槽算法
_3主3从的`Redis集群`搭建(上)
docker 帮助启动类命令(一)
docker 帮助启动类命令(二)
_dockerfile
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/7/index.html b/page/7/index.html index dde3d3004..0a70e0e3c 100644 --- a/page/7/index.html +++ b/page/7/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
docker 帮助启动类命令(二)
docker 镜像(一)
_mysql主从复制docker版
redis的3主3从扩容
redis的4主4从缩容
docker 镜像(二)
使用docker安装常用软件:redis
使用docker安装常用软件:mysql
容器(一)
容器数据卷
使用docker安装常用软件:tomcat
容器(二)
本地镜像发布到私有库
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
docker 镜像(一)
docker 镜像(二)
redis的3主3从扩容
_mysql主从复制docker版
redis的4主4从缩容
使用docker安装常用软件:mysql
使用docker安装常用软件:redis
使用docker安装常用软件:tomcat
容器数据卷
_主从容错切换迁移
容器(一)
容器(三)
容器(二)
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/page/8/index.html b/page/8/index.html index f29574c2c..4618b2f72 100644 --- a/page/8/index.html +++ b/page/8/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
    说说加载中。。。
容器(三)
镜像
本地镜像发布到阿里云
使用jmeter录制压测
Yaml的使用
性能测试主要关注点
马哲
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS - Research • 呓语
本地镜像发布到私有库
本地镜像发布到阿里云
镜像
使用jmeter录制压测
Yaml的使用
性能测试主要关注点
马哲
高数一
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/1.html b/posts/1.html index 0812a4b13..2642dec9a 100644 --- a/posts/1.html +++ b/posts/1.html @@ -1 +1 @@ -自动获取driver | GGLSS

自动获取driver

自动获取driver

chrome

下载驱动

1
2
3
4
5
6
7
8
9
10
11
12
13
@staticmethod
def down_driver(option):
'''
return: 返回driver,可以直接使用
'''
driver = webdriver.Chrome(
ChromeDriverManager(
url="https://registry.npmmirror.com/-/binary/chromedriver",
latest_release_url="https://registry.npmmirror.com/-/binary/chromedriver/LATEST_RELEASE",
cache_valid_range=365).install(),
options=option)
driver.delete_all_cookies()
return driver

下载2

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
@staticmethod
def determin_chrome_driver():

chrome_path = r'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'


# 指定谷歌驱动目标位置
folder_path = os.path.join(ROOT_DIR, "env_setting")
# 驱动名称
file_name = 'chromedriver.exe'
# 路径拼接
file_path = os.path.join(folder_path, file_name)

if os.path.exists(file_path):
# 获取chromedriver.exe版本(谷歌浏览器驱动)
result = subprocess.run([file_path, '--version'], capture_output=True, text=True)
driverversion = '.'.join(result.stdout.strip().split(' ')[1].split('.')[:-1])

# 获取chrome.exe版本(谷歌浏览器)
command = f'wmic datafile where name="{chrome_path}" get Version /value'
result_a = subprocess.run(command, capture_output=True, text=True, shell=True)
output = result_a.stdout.strip()
chromeversion = '.'.join(output.split('=')[1].split('.')[0:3])

# 判断版本是否一致,不一致就重新下载
if driverversion != chromeversion:
# 使用ChromeDriverManager安装ChromeDriver,并获取驱动程序的路径
download_driver_path = ChromeDriverManager().install()
# 复制文件到目标位置
shutil.copy(download_driver_path, folder_path)
else:
print("版本一致,无需重新下载!")

else:
download_driver_path = ChromeDriverManager().install()
shutil.copy(download_driver_path, folder_path)

return file_path

edge

下载驱动

1
2
3
4
5
6
7
8
9
10
11
from webdriver_manager.microsoft import EdgeChromiumDriverManager

@staticmethod
def download_edgedriver():
'''
function:下载edge浏览器驱动
return: 返回一个下载的路径
'''
folder_path = EdgeChromiumDriverManager().install()
shutil.copy(folder_path, webDriver) # 拷贝folder_path到webDriver目录下
return folder_path

使用

1
2
# driver = webdriver.Edge(service=Service(下载路径))
driver = webdriver.Edge(service=Service(ddDriver.download_edgedriver()))

firefox

下载驱动

1
2
3
4
5
6
7
8
9
10
@staticmethod
def down_driver(option):
driver = webdriver.Firefox
(
service=FirefoxService(GeckoDriverManager(url="https://github.com/mozilla/geckodriver/releases/download",
latest_release_url="https://api.github.com/repos/mozilla/geckodriver/"
"releases/latest",
cache_valid_range=365).install(),
options=option))
return driver
文章作者: gglss
文章链接: http://example.com/posts/1.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +自动获取driver | GGLSS

自动获取driver

自动获取driver

chrome

下载驱动

1
2
3
4
5
6
7
8
9
10
11
12
13
@staticmethod
def down_driver(option):
'''
return: 返回driver,可以直接使用
'''
driver = webdriver.Chrome(
ChromeDriverManager(
url="https://registry.npmmirror.com/-/binary/chromedriver",
latest_release_url="https://registry.npmmirror.com/-/binary/chromedriver/LATEST_RELEASE",
cache_valid_range=365).install(),
options=option)
driver.delete_all_cookies()
return driver

下载2

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
@staticmethod
def determin_chrome_driver():

chrome_path = r'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'


# 指定谷歌驱动目标位置
folder_path = os.path.join(ROOT_DIR, "env_setting")
# 驱动名称
file_name = 'chromedriver.exe'
# 路径拼接
file_path = os.path.join(folder_path, file_name)

if os.path.exists(file_path):
# 获取chromedriver.exe版本(谷歌浏览器驱动)
result = subprocess.run([file_path, '--version'], capture_output=True, text=True)
driverversion = '.'.join(result.stdout.strip().split(' ')[1].split('.')[:-1])

# 获取chrome.exe版本(谷歌浏览器)
command = f'wmic datafile where name="{chrome_path}" get Version /value'
result_a = subprocess.run(command, capture_output=True, text=True, shell=True)
output = result_a.stdout.strip()
chromeversion = '.'.join(output.split('=')[1].split('.')[0:3])

# 判断版本是否一致,不一致就重新下载
if driverversion != chromeversion:
# 使用ChromeDriverManager安装ChromeDriver,并获取驱动程序的路径
download_driver_path = ChromeDriverManager().install()
# 复制文件到目标位置
shutil.copy(download_driver_path, folder_path)
else:
print("版本一致,无需重新下载!")

else:
download_driver_path = ChromeDriverManager().install()
shutil.copy(download_driver_path, folder_path)

return file_path

edge

下载驱动

1
2
3
4
5
6
7
8
9
10
11
from webdriver_manager.microsoft import EdgeChromiumDriverManager

@staticmethod
def download_edgedriver():
'''
function:下载edge浏览器驱动
return: 返回一个下载的路径
'''
folder_path = EdgeChromiumDriverManager().install()
shutil.copy(folder_path, webDriver) # 拷贝folder_path到webDriver目录下
return folder_path

使用

1
2
# driver = webdriver.Edge(service=Service(下载路径))
driver = webdriver.Edge(service=Service(ddDriver.download_edgedriver()))

firefox

下载驱动

1
2
3
4
5
6
7
8
9
10
@staticmethod
def down_driver(option):
driver = webdriver.Firefox
(
service=FirefoxService(GeckoDriverManager(url="https://github.com/mozilla/geckodriver/releases/download",
latest_release_url="https://api.github.com/repos/mozilla/geckodriver/"
"releases/latest",
cache_valid_range=365).install(),
options=option))
return driver
文章作者: gglss
文章链接: http://example.com/posts/1.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/10988.html b/posts/10988.html index 3da27fba6..e7fa1d64f 100644 --- a/posts/10988.html +++ b/posts/10988.html @@ -1 +1 @@ -使用moko编写Get和Post测试接口(二) | GGLSS

使用moko编写Get和Post测试接口(二)

上一节已经写了规则,这次直接来编写Get和Post请求

模拟一个没有参数的get请求

1
2
3
4
5
6
7
8
9
10
{
"description": "模拟一个没有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get"
},
"response": {
"text": "这是一个没有参数的get请求"
}
}

模拟一个带参数的请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"description": "模拟一个带参数的请求",
"request": {
"uri": "getwithparam",
"method": "get",
"queries": {
"name": "胡汉三",
"age": "18"
}
},
"response": {
"text": "我胡汉三又回来了!!!!!"
}
}

模拟一个Post请求

1
2
3
4
5
6
7
8
9
10
{
"description": "模拟一个Post请求",
"request": {
"uri": "/postdemo",
"method": "post"
},
"response": {
"text": "这是我的第一个mosk的post请求"
}
}

这是一个带参数的post请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"description": "这是一个带参数的post请求",
"request": {
"uri": "/postwithparam",
"method": "post",
"forms": {
"name": "胡汉三",
"sex": "男人"
}
},
"response": {
"text": "我胡汉三带着参数来了!!!!"
}
}
文章作者: gglss
文章链接: http://example.com/posts/10988.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写Get和Post测试接口(二) | GGLSS

使用moko编写Get和Post测试接口(二)

上一节已经写了规则,这次直接来编写Get和Post请求

模拟一个没有参数的get请求

1
2
3
4
5
6
7
8
9
10
{
"description": "模拟一个没有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get"
},
"response": {
"text": "这是一个没有参数的get请求"
}
}

模拟一个带参数的请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"description": "模拟一个带参数的请求",
"request": {
"uri": "getwithparam",
"method": "get",
"queries": {
"name": "胡汉三",
"age": "18"
}
},
"response": {
"text": "我胡汉三又回来了!!!!!"
}
}

模拟一个Post请求

1
2
3
4
5
6
7
8
9
10
{
"description": "模拟一个Post请求",
"request": {
"uri": "/postdemo",
"method": "post"
},
"response": {
"text": "这是我的第一个mosk的post请求"
}
}

这是一个带参数的post请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"description": "这是一个带参数的post请求",
"request": {
"uri": "/postwithparam",
"method": "post",
"forms": {
"name": "胡汉三",
"sex": "男人"
}
},
"response": {
"text": "我胡汉三带着参数来了!!!!"
}
}
文章作者: gglss
文章链接: http://example.com/posts/10988.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/11643.html b/posts/11643.html index bb3d87810..d626ab089 100644 --- a/posts/11643.html +++ b/posts/11643.html @@ -1 +1 @@ -Butterfly美化记录四 | GGLSS

Butterfly美化记录四

文章页H1-H6添加小风车

使用的安知鱼

修改主题配置文件

1
2
3
4
5
6
beautify:
enable: true
field: post # site/post
# title-prefix-icon: '\f0c1' 原内容
title-prefix-icon: '\f863'
title-prefix-icon-color: "#F47466"

让小风车转起来

在自定义 [blog]/source/self/css/custom.css 文件中,加入以下代码即可

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
/* 文章页H1-H6图标样式效果 */
h1::before,
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
-webkit-animation: ccc 1.6s linear infinite;
animation: ccc 1.6s linear infinite;
}
@-webkit-keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
@keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}

小风车的颜色和大小

修改小风车的颜色和大小,加入下面的代码

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
#content-inner.layout h1::before {
color: #ef50a8;
margin-left: -1.55rem;
font-size: 1.3rem;
margin-top: -0.23rem;
}
#content-inner.layout h2::before {
color: #fb7061;
margin-left: -1.35rem;
font-size: 1.1rem;
margin-top: -0.12rem;
}
#content-inner.layout h3::before {
color: #ffbf00;
margin-left: -1.22rem;
font-size: 0.95rem;
margin-top: -0.09rem;
}
#content-inner.layout h4::before {
color: #a9e000;
margin-left: -1.05rem;
font-size: 0.8rem;
margin-top: -0.09rem;
}
#content-inner.layout h5::before {
color: #57c850;
margin-left: -0.9rem;
font-size: 0.7rem;
margin-top: 0rem;
}
#content-inner.layout h6::before {
color: #5ec1e0;
margin-left: -0.9rem;
font-size: 0.66rem;
margin-top: 0rem;
}

小风车hover效果

设置鼠标碰到标题时,小风车跟随标题变色,且像是被光标阻碍了,转速变慢。鼠标离开恢复转速。也可以设置为 none 鼠标碰到停止转动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#content-inner.layout h1:hover,
#content-inner.layout h2:hover,
#content-inner.layout h3:hover,
#content-inner.layout h4:hover,
#content-inner.layout h5:hover,
#content-inner.layout h6:hover {
color: #3b70fc;
}
#content-inner.layout h1:hover::before,
#content-inner.layout h2:hover::before,
#content-inner.layout h3:hover::before,
#content-inner.layout h4:hover::before,
#content-inner.layout h5:hover::before,
#content-inner.layout h6:hover::before {
color: #3b70fc;
-webkit-animation: ccc 3.2s linear infinite;
animation: ccc 3.2s linear infinite;
}

右下角设置 icon 转的太快了,让它慢一点吧。继续添加:

1
2
3
4
/* 页面设置icon转动速度调整 */
#rightside_config i.fas.fa-cog.fa-spin {
animation: fa-spin 5s linear infinite;
}

文章加密

安装插件

通过插件,实现文章输入密码才能浏览

1
npm install hexo-blog-encrypt --save

修改文章

在文章头部加入

1
2
3
4
5
---
title: 加密文章测试,输入test即可查看
password: test
message: 测试加密,这里的密码是:test
---

https://blog.bywind.xyz/posts/ab6e072d.html#%E6%B7%BB%E5%8A%A0css%E6%A0%B7%E5%BC%8F

https://www.qcqx.cn/article/dbde845d.html

网站加速压缩

  • hexo g

  • gulp

  • hexo d

文章作者: gglss
文章链接: http://example.com/posts/11643.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Butterfly美化记录四 | GGLSS

Butterfly美化记录四

文章页H1-H6添加小风车

使用的安知鱼

修改主题配置文件

1
2
3
4
5
6
beautify:
enable: true
field: post # site/post
# title-prefix-icon: '\f0c1' 原内容
title-prefix-icon: '\f863'
title-prefix-icon-color: "#F47466"

让小风车转起来

在自定义 [blog]/source/self/css/custom.css 文件中,加入以下代码即可

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
/* 文章页H1-H6图标样式效果 */
h1::before,
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
-webkit-animation: ccc 1.6s linear infinite;
animation: ccc 1.6s linear infinite;
}
@-webkit-keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
@keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}

小风车的颜色和大小

修改小风车的颜色和大小,加入下面的代码

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
#content-inner.layout h1::before {
color: #ef50a8;
margin-left: -1.55rem;
font-size: 1.3rem;
margin-top: -0.23rem;
}
#content-inner.layout h2::before {
color: #fb7061;
margin-left: -1.35rem;
font-size: 1.1rem;
margin-top: -0.12rem;
}
#content-inner.layout h3::before {
color: #ffbf00;
margin-left: -1.22rem;
font-size: 0.95rem;
margin-top: -0.09rem;
}
#content-inner.layout h4::before {
color: #a9e000;
margin-left: -1.05rem;
font-size: 0.8rem;
margin-top: -0.09rem;
}
#content-inner.layout h5::before {
color: #57c850;
margin-left: -0.9rem;
font-size: 0.7rem;
margin-top: 0rem;
}
#content-inner.layout h6::before {
color: #5ec1e0;
margin-left: -0.9rem;
font-size: 0.66rem;
margin-top: 0rem;
}

小风车hover效果

设置鼠标碰到标题时,小风车跟随标题变色,且像是被光标阻碍了,转速变慢。鼠标离开恢复转速。也可以设置为 none 鼠标碰到停止转动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#content-inner.layout h1:hover,
#content-inner.layout h2:hover,
#content-inner.layout h3:hover,
#content-inner.layout h4:hover,
#content-inner.layout h5:hover,
#content-inner.layout h6:hover {
color: #3b70fc;
}
#content-inner.layout h1:hover::before,
#content-inner.layout h2:hover::before,
#content-inner.layout h3:hover::before,
#content-inner.layout h4:hover::before,
#content-inner.layout h5:hover::before,
#content-inner.layout h6:hover::before {
color: #3b70fc;
-webkit-animation: ccc 3.2s linear infinite;
animation: ccc 3.2s linear infinite;
}

右下角设置 icon 转的太快了,让它慢一点吧。继续添加:

1
2
3
4
/* 页面设置icon转动速度调整 */
#rightside_config i.fas.fa-cog.fa-spin {
animation: fa-spin 5s linear infinite;
}

文章加密

安装插件

通过插件,实现文章输入密码才能浏览

1
npm install hexo-blog-encrypt --save

修改文章

在文章头部加入

1
2
3
4
5
---
title: 加密文章测试,输入test即可查看
password: test
message: 测试加密,这里的密码是:test
---

https://blog.bywind.xyz/posts/ab6e072d.html#%E6%B7%BB%E5%8A%A0css%E6%A0%B7%E5%BC%8F

https://www.qcqx.cn/article/dbde845d.html

网站加速压缩

  • hexo g

  • gulp

  • hexo d

文章作者: gglss
文章链接: http://example.com/posts/11643.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/11783.html b/posts/11783.html index 8e9bacf60..c6dc212cc 100644 --- a/posts/11783.html +++ b/posts/11783.html @@ -1 +1 @@ -测试必会的sql基本操作 | GGLSS

测试必会的sql基本操作

1、创建数据库
1
2
create database 数据库名;
create database 数据库名 character set 字符集;
2、查看全部的数据库
1
show databases;   

3、查看某个数据库的定义的信息:

1
show create database 数据库名;         
4、删除数据库
1
drop database 数据库名称;

5、切换数据库:

1
use 数据库名;

6、查看正在使用的数据库:

1
select database();          

7、查看数据库中的所有表:

1
show tables;

8、查看表结构:

1
desc 表名;    

9、修改表删除列.

1
alter table 表名 drop 列名;            

10、修改表名

1
rename table 表名 to 新表名;              

11、修改表的字符集

1
alter table 表名 character set 字符集;

12、数据类型与约束

  • int :整数 有符号和无符号,长度不受限制
  • varchar:字符串 中文/数字/字母都是一字字符,受长度限制
  • decimal :小数 decimal(5,2)总长度5位,整数3位,小数2位
  • 主键 id :int unsigned primary key auto_increment
  • 非空 :not null
  • 唯一 :unique
  • 默认 :default

SQL中表的操作

1、创建表

1
create table 表名(字段名 类型 约束,.....)

2、删除表

1
2
drop table 表名
drop table if exists 表名

3、表数据操作

3.1、添加数据
1
2
insert into 表名 values(值1,值2...)给表中所有字段插入数据
insert into 表名(字段2,字段1values(值2,值1
3.2、修改数据
1
2
update 表名 set 字段1=1,字段2=2 where 条件
isdelete 逻辑删除
3.3、删除数据
1
delete from 表名 where 条件
3.4、查询数据
  • 3.4.1、查询表中所有信息
    1
    select * from 表名 where 条件
  • 3.4.2、查询表中指定字段
    1
    select 字段1,字段2,字段3...from 表名 where 条件
  • 3.4.3、给字段取别名
    1
    select 字段1as) 别名,字段2 别名 from 表名 where 条件
  • 3.4.4、去重
    1
    select distinct 字段 from 表名 where 条件
  • 3.4.5、比较运算符
    1
    select * from 表名 where age>20
  • 3.4.6、逻辑运算符
    • and 满足所有条件

    • or 满足其中任意一个条件

    • not 不满足条件

  • 3.4.7、模糊查询
    • like
    • % 0到任意多个字符
    • _表示任意一个字符
  • 3.4.8、范围查询
    • in 在一个非连续的范围内
    • between and 在一个连续的范围内 闭区间 小的数据在前
  • 3.4.9、空查询
    • is null
    • ‘’空字符串
3.5、多表查询
  • 3.5.1、排序

    1
    2
    select * from 表名 where 条件 order by1asc|desc,列2 asc|desc
    select * from student where 条件 order by convert(字段 using gbk)asc|desc 纯中文转换后排序
  • 3.5.2、聚合函数

    1
    2
    3
    4
    5
    6
    count: 总数 select count(*/字段)from 表名 where 条件 
    max: 最大值 select max(age) from 表名 where 条件
    min: 最小值 select min(age) from 表名 where 条件
    avg: 平均值 select avg(grade) from 表名 where 条件
    sum: 求和 select sum(grade) from 表名 where 条件
    select avg(age)as 平均年龄,max(age)最大年龄,min(age)最小年龄 from 表名 where 条件
  • 3.5.3、分组

    1
    select * from 表名 group by 字段,字段2 having 条件
  • 3.5.4、分页

    1
    2
    select * from 表名 limit 05 从第一行数据开始,显示5
    select * from 表名 limit (n-1*m,m n代表第几页,m代表每页显示多少条数据
  • 3.5.5、等值连接

    1
    2
    3
    4
    方式一 :
    select * from1,表2,表3 where1.=2.and2.=3.where 条件
    方式二 内连接 取交集:
    select * from1 inner join2 on1.=2.inner join3 on2.=3.where 条件
  • 3.5.6、左连接

    左边的表全显示,右边表能匹配的上的数据连接显示,匹配不上(没有的)以null补充

    1
    select * from1 left join2 on1.=2.left join3 on2.=3.where 条件
  • 3.5.7、右连接

    右边的表全显示,左边表能匹配上的数据连接显示,匹配不上(没有的)以null补充

    1
    select * from1 right join2 on1.=2.right join3 on2.=3.where 条件
  • 3.5.8、自关联

    1
    select * from 表 别名1 inner join 表 别名2 on 别名1.aid=别名2.pid
  • 3.5.9、子查询
    • 标量子查询

    子查询结果输出的是一行一列

    1
    select * from student where age>(select avg(age) from student)
    • 列子查询

    子查询的结果输出的是一列多行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    in:  
    select * from student where age in
    (select age from student where age=18)

    any/some: >:大于最小的; <: 小于最大的
    select * from student where age>/< any
    (select age from student where age between 18 and 22)

    all: >:大于最大的; <: 小于最小的
    select * from student where age>/<all
    (select age from student where age between 18 and 22
    • 行子查询

    子查询的结果输出的是一行多列

    1
    select * from student where(name,sex)=select name,sex from student where sex='男' order by age desc limit 1
    • 表子查询

    子查询的输出结果是一个表

    1
    select * from scores inner joinselect cno from courses where cname in('数据库',‘系统测试’) as c on scores.cno=c.cno
3.6、数据分表
1
2
3
4
5
insert into goods_cate(cate_name) select distinct cate from goods;

create table goods_cate (id int unsigned primary key auto_incremen,cate varchar(10)) select distinct cate from goods;

update goods inner join goods_cate on goods_cate.cate=goods.cate set goods.cate=goods_cate.id
文章作者: gglss
文章链接: http://example.com/posts/11783.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +测试必会的sql基本操作 | GGLSS

测试必会的sql基本操作

1、创建数据库
1
2
create database 数据库名;
create database 数据库名 character set 字符集;
2、查看全部的数据库
1
show databases;   

3、查看某个数据库的定义的信息:

1
show create database 数据库名;         
4、删除数据库
1
drop database 数据库名称;

5、切换数据库:

1
use 数据库名;

6、查看正在使用的数据库:

1
select database();          

7、查看数据库中的所有表:

1
show tables;

8、查看表结构:

1
desc 表名;    

9、修改表删除列.

1
alter table 表名 drop 列名;            

10、修改表名

1
rename table 表名 to 新表名;              

11、修改表的字符集

1
alter table 表名 character set 字符集;

12、数据类型与约束

  • int :整数 有符号和无符号,长度不受限制
  • varchar:字符串 中文/数字/字母都是一字字符,受长度限制
  • decimal :小数 decimal(5,2)总长度5位,整数3位,小数2位
  • 主键 id :int unsigned primary key auto_increment
  • 非空 :not null
  • 唯一 :unique
  • 默认 :default

SQL中表的操作

1、创建表

1
create table 表名(字段名 类型 约束,.....)

2、删除表

1
2
drop table 表名
drop table if exists 表名

3、表数据操作

3.1、添加数据
1
2
insert into 表名 values(值1,值2...)给表中所有字段插入数据
insert into 表名(字段2,字段1values(值2,值1
3.2、修改数据
1
2
update 表名 set 字段1=1,字段2=2 where 条件
isdelete 逻辑删除
3.3、删除数据
1
delete from 表名 where 条件
3.4、查询数据
  • 3.4.1、查询表中所有信息
    1
    select * from 表名 where 条件
  • 3.4.2、查询表中指定字段
    1
    select 字段1,字段2,字段3...from 表名 where 条件
  • 3.4.3、给字段取别名
    1
    select 字段1as) 别名,字段2 别名 from 表名 where 条件
  • 3.4.4、去重
    1
    select distinct 字段 from 表名 where 条件
  • 3.4.5、比较运算符
    1
    select * from 表名 where age>20
  • 3.4.6、逻辑运算符
    • and 满足所有条件

    • or 满足其中任意一个条件

    • not 不满足条件

  • 3.4.7、模糊查询
    • like
    • % 0到任意多个字符
    • _表示任意一个字符
  • 3.4.8、范围查询
    • in 在一个非连续的范围内
    • between and 在一个连续的范围内 闭区间 小的数据在前
  • 3.4.9、空查询
    • is null
    • ‘’空字符串
3.5、多表查询
  • 3.5.1、排序

    1
    2
    select * from 表名 where 条件 order by1asc|desc,列2 asc|desc
    select * from student where 条件 order by convert(字段 using gbk)asc|desc 纯中文转换后排序
  • 3.5.2、聚合函数

    1
    2
    3
    4
    5
    6
    count: 总数 select count(*/字段)from 表名 where 条件 
    max: 最大值 select max(age) from 表名 where 条件
    min: 最小值 select min(age) from 表名 where 条件
    avg: 平均值 select avg(grade) from 表名 where 条件
    sum: 求和 select sum(grade) from 表名 where 条件
    select avg(age)as 平均年龄,max(age)最大年龄,min(age)最小年龄 from 表名 where 条件
  • 3.5.3、分组

    1
    select * from 表名 group by 字段,字段2 having 条件
  • 3.5.4、分页

    1
    2
    select * from 表名 limit 05 从第一行数据开始,显示5
    select * from 表名 limit (n-1*m,m n代表第几页,m代表每页显示多少条数据
  • 3.5.5、等值连接

    1
    2
    3
    4
    方式一 :
    select * from1,表2,表3 where1.=2.and2.=3.where 条件
    方式二 内连接 取交集:
    select * from1 inner join2 on1.=2.inner join3 on2.=3.where 条件
  • 3.5.6、左连接

    左边的表全显示,右边表能匹配的上的数据连接显示,匹配不上(没有的)以null补充

    1
    select * from1 left join2 on1.=2.left join3 on2.=3.where 条件
  • 3.5.7、右连接

    右边的表全显示,左边表能匹配上的数据连接显示,匹配不上(没有的)以null补充

    1
    select * from1 right join2 on1.=2.right join3 on2.=3.where 条件
  • 3.5.8、自关联

    1
    select * from 表 别名1 inner join 表 别名2 on 别名1.aid=别名2.pid
  • 3.5.9、子查询
    • 标量子查询

    子查询结果输出的是一行一列

    1
    select * from student where age>(select avg(age) from student)
    • 列子查询

    子查询的结果输出的是一列多行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    in:  
    select * from student where age in
    (select age from student where age=18)

    any/some: >:大于最小的; <: 小于最大的
    select * from student where age>/< any
    (select age from student where age between 18 and 22)

    all: >:大于最大的; <: 小于最小的
    select * from student where age>/<all
    (select age from student where age between 18 and 22
    • 行子查询

    子查询的结果输出的是一行多列

    1
    select * from student where(name,sex)=select name,sex from student where sex='男' order by age desc limit 1
    • 表子查询

    子查询的输出结果是一个表

    1
    select * from scores inner joinselect cno from courses where cname in('数据库',‘系统测试’) as c on scores.cno=c.cno
3.6、数据分表
1
2
3
4
5
insert into goods_cate(cate_name) select distinct cate from goods;

create table goods_cate (id int unsigned primary key auto_incremen,cate varchar(10)) select distinct cate from goods;

update goods inner join goods_cate on goods_cate.cate=goods.cate set goods.cate=goods_cate.id
文章作者: gglss
文章链接: http://example.com/posts/11783.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/12080.html b/posts/12080.html index 7fddc9d2f..a32bb5bda 100644 --- a/posts/12080.html +++ b/posts/12080.html @@ -1 +1 @@ -解析Excel用于数据驱动 | GGLSS

解析Excel用于数据驱动

新建Excel

创建Excel数据表:learn.xlsx

解析excel

使用python的openpyxl模块来解析Excel

1、读取Excel文件

openpyxl.load_workbook(‘文件路径’)

1
excel = openpyxl.load_workbook('learn.xlsx')

2、获取sheet页里面的数据

1
2
3
4
5
6
# 获取当前活动的表单
sheet = excel.active
# 获取指定的表单
for sheets in excel.sheetnames: #获取所有表单的名称
print(sheets)
sheet = excel[sheets] #获取指定表单

3、获取单元格里面的内容

1
2
3
for values in sheet.values:
if type(value[0]) == int: #从第二行开始
print(values)

运行代码:

把Excel表里面的数据以字典格式展示:

1
2
3
4
data = {}
data["name"] = values[0]
data["value"] = values[1]
print(data)

运行代码:

文章作者: gglss
文章链接: http://example.com/posts/12080.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +解析Excel用于数据驱动 | GGLSS

解析Excel用于数据驱动

新建Excel

创建Excel数据表:learn.xlsx

解析excel

使用python的openpyxl模块来解析Excel

1、读取Excel文件

openpyxl.load_workbook(‘文件路径’)

1
excel = openpyxl.load_workbook('learn.xlsx')

2、获取sheet页里面的数据

1
2
3
4
5
6
# 获取当前活动的表单
sheet = excel.active
# 获取指定的表单
for sheets in excel.sheetnames: #获取所有表单的名称
print(sheets)
sheet = excel[sheets] #获取指定表单

3、获取单元格里面的内容

1
2
3
for values in sheet.values:
if type(value[0]) == int: #从第二行开始
print(values)

运行代码:

把Excel表里面的数据以字典格式展示:

1
2
3
4
data = {}
data["name"] = values[0]
data["value"] = values[1]
print(data)

运行代码:

文章作者: gglss
文章链接: http://example.com/posts/12080.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/12932.html b/posts/12932.html index 4bae7e4ef..c5bf1f496 100644 --- a/posts/12932.html +++ b/posts/12932.html @@ -1 +1 @@ -逻辑控制器If Controller | GGLSS

逻辑控制器If Controller

逻辑控制器If Controller

文章作者: gglss
文章链接: http://example.com/posts/12932.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +逻辑控制器If Controller | GGLSS

逻辑控制器If Controller

逻辑控制器If Controller

文章作者: gglss
文章链接: http://example.com/posts/12932.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/1351.html b/posts/1351.html index 43cd08e20..67b058309 100644 --- a/posts/1351.html +++ b/posts/1351.html @@ -1 +1 @@ -容器数据卷 | GGLSS

容器数据卷

容器数据卷

运行带有容器数据卷的容器实例

1
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

举个栗子

宿主vs容器之间映射添加容器卷

  • 使用docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 添加
1
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=ui ubuntu
  • 查看数据卷是否挂载成功
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
`在容器内部创建一个dockerin.txt文件
root@48955acecd79:/tmp/docker_data# touch dockerin.txt
root@48955acecd79:/tmp/docker_data# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 28 09:21 ./
drwxrwxrwt 1 root root 4096 Apr 28 09:18 ../
-rw-r--r-- 1 root root 0 Apr 28 09:21 dockerin.txt
`在宿主机目录下查看该文件
root@48955acecd79:/tmp/docker_data# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /tmp/host_data/
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 28 17:21 dockerin.txt
`在宿主机创建一个文件
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# touch host.txt

`在容器查看文件
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# docker exec -it 48955acecd79 bash
root@48955acecd79:/# cd /tmp/docker_data/

+ 容器和宿主机之间数据共享

[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m="vim cmd add ok" -a="ggls" 356e32244966 ggls/ubuntu:1.5sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# shell

+ 主机修改,docker同步获得

+ docker容器stop,主机修改,docker容器重启数据同步

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d

+ 默认是可读可写的

```shell
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
  • 修改成容器只读
1
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

卷的继承和共享

  • 容器1完成和宿主机的映射
    • 容器2继承容器1,则容器2操作后同步到容器1和宿主机
    • 宿主机操作同步到容器1,容器2
    • 容器1操作同步到宿主机,容器2
1
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
文章作者: gglss
文章链接: http://example.com/posts/1351.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +容器数据卷 | GGLSS

容器数据卷

容器数据卷

运行带有容器数据卷的容器实例

1
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

举个栗子

宿主vs容器之间映射添加容器卷

  • 使用docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 添加
1
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=ui ubuntu
  • 查看数据卷是否挂载成功
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
`在容器内部创建一个dockerin.txt文件
root@48955acecd79:/tmp/docker_data# touch dockerin.txt
root@48955acecd79:/tmp/docker_data# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 28 09:21 ./
drwxrwxrwt 1 root root 4096 Apr 28 09:18 ../
-rw-r--r-- 1 root root 0 Apr 28 09:21 dockerin.txt
`在宿主机目录下查看该文件
root@48955acecd79:/tmp/docker_data# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /tmp/host_data/
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 28 17:21 dockerin.txt
`在宿主机创建一个文件
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# touch host.txt

`在容器查看文件
[root@iZ8vbfaek3x3ogtpxnpnwfZ host_data]# docker exec -it 48955acecd79 bash
root@48955acecd79:/# cd /tmp/docker_data/

+ 容器和宿主机之间数据共享

[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m="vim cmd add ok" -a="ggls" 356e32244966 ggls/ubuntu:1.5sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# shell

+ 主机修改,docker同步获得

+ docker容器stop,主机修改,docker容器重启数据同步

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d

+ 默认是可读可写的

```shell
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
  • 修改成容器只读
1
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

卷的继承和共享

  • 容器1完成和宿主机的映射
    • 容器2继承容器1,则容器2操作后同步到容器1和宿主机
    • 宿主机操作同步到容器1,容器2
    • 容器1操作同步到宿主机,容器2
1
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
文章作者: gglss
文章链接: http://example.com/posts/1351.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/13844.html b/posts/13844.html index 2912b0970..fbb23ca52 100644 --- a/posts/13844.html +++ b/posts/13844.html @@ -1 +1 @@ -_dockerfile | GGLSS

_dockerfile

_dockerfile

以dockerfile的方法来进行对centos的具有vim,ifconfig和jdk8的镜像

创建myfile文件夹

创建Dockerfile文件

注意:jdk8需要和Dockerfile放到同一个文件夹

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
FROM centos:7												
MAINTAINER zzyy<zzyybs@126.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80

CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

创建好Dockerfile后,运行docker build -t 新镜像名称:Tag .

注意:Tag后面有个空格,有个点

虚悬镜像

仓库名和标签名全部为的镜像

碰到它还是进行删除的好

使用docker image ls -f dangling=true查找虚悬镜像

使用docker image prune删除镜像

文章作者: gglss
文章链接: http://example.com/posts/13844.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +_dockerfile | GGLSS

_dockerfile

_dockerfile

以dockerfile的方法来进行对centos的具有vim,ifconfig和jdk8的镜像

创建myfile文件夹

创建Dockerfile文件

注意:jdk8需要和Dockerfile放到同一个文件夹

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
FROM centos:7												
MAINTAINER zzyy<zzyybs@126.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80

CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

创建好Dockerfile后,运行docker build -t 新镜像名称:Tag .

注意:Tag后面有个空格,有个点

虚悬镜像

仓库名和标签名全部为的镜像

碰到它还是进行删除的好

使用docker image ls -f dangling=true查找虚悬镜像

使用docker image prune删除镜像

文章作者: gglss
文章链接: http://example.com/posts/13844.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/13923.html b/posts/13923.html index cfb4c09c1..d388b66bc 100644 --- a/posts/13923.html +++ b/posts/13923.html @@ -1,2 +1,2 @@ 长难句一 | GGLSS

长难句一

原句

1
2
3
4
5
6
7
		Curbs on business-method claims would be a dramatic about-face, because it was the 

Federal Circuit itself that introduced such patents with its 1998 decision in the so-called

State Street Bank case, approving a patent on a way of pooling mutual-fund assets.

【2010英语一Text2】

提取单词

business: 商业

claim: 宣称,声称,断言

dramatic: 巨大而广阔的

about-face: n. (思想、态度、行为等)彻底改变; v. 向后转(同 about-turn)

federal: adj. 联邦的,政府的

分割

Curbs on business-method claims would be a dramatic about-face, because it was the Federal Circuit itself that introduced such patents with its 1998 decision in the so-called State Street Bank case,

1
<span style="font-size:2rem; background:yellow; color:red;">**Bang! Bang! Banki Banki Seiki Banki!**</span>

State Street Bank case,

 Curbs on business-method <font color=#0d26e5>claims</font> would be a dramatic about-face, because it was the  Federal Circuit 
-

itself that introduced such patents with its 1998 decision in the so-called

State Street Bank case, approving a patent on a way of pooling mutual-fund assets.

文章作者: gglss
文章链接: http://example.com/posts/13923.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +

itself that introduced such patents with its 1998 decision in the so-called

State Street Bank case, approving a patent on a way of pooling mutual-fund assets.

文章作者: gglss
文章链接: http://example.com/posts/13923.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/15488.html b/posts/15488.html index e5a9fdfb0..a119cb855 100644 --- a/posts/15488.html +++ b/posts/15488.html @@ -1 +1 @@ -事务控制器Transcation Controller | GGLSS

事务控制器Transcation Controller

作用

一个事务会包含并请求,然后查看一个事务的QPS等性能指标

指标

QPS:每秒处理完请求的次数,具体指1s内发出请求到服务器处理完成并返回结果的次数

TPS:每秒处理完的事务次数,一般TPS是对整个系统来讲的,一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能对应多个请求,对于衡量单个接口服务的处理能力,一般使用QPS

参数

  • Generate Parent sample:生成父样例,就是控制器里面的请求不展示

没有选中Generate Parent sample,运行后的结果是

选中后`Generate Parent sample`,运行后的结果是
文章作者: gglss
文章链接: http://example.com/posts/15488.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +事务控制器Transcation Controller | GGLSS

事务控制器Transcation Controller

作用

一个事务会包含并请求,然后查看一个事务的QPS等性能指标

指标

QPS:每秒处理完请求的次数,具体指1s内发出请求到服务器处理完成并返回结果的次数

TPS:每秒处理完的事务次数,一般TPS是对整个系统来讲的,一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能对应多个请求,对于衡量单个接口服务的处理能力,一般使用QPS

参数

  • Generate Parent sample:生成父样例,就是控制器里面的请求不展示

没有选中Generate Parent sample,运行后的结果是

选中后`Generate Parent sample`,运行后的结果是
文章作者: gglss
文章链接: http://example.com/posts/15488.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/15521.html b/posts/15521.html index a730180c9..16cbf70c5 100644 --- a/posts/15521.html +++ b/posts/15521.html @@ -1 +1 @@ -需要cookie访问的Get接口开发 | GGLSS

需要cookie访问的Get接口开发

编写需要cookie才能访问的接口

这个接口还是在MyGetMethod类里面编写方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 要求客户端携带cookie访问
* 这是一个需要携带cookies信息才能访问的get请求
*/
@RequestMapping(value = "/get/with/cookies", method = RequestMethod.GET)
@ApiOperation(value = "要求客户端携带cookie访问", httpMethod = "GET")
public String getWithCookies(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(Objects.isNull(cookies)){
return "你必须携带cookies信息来";
}
for(Cookie cookie : cookies){
if(cookie.getName().equals("login") && cookie.getValue().equals("True")){
return "恭喜你,访问成功!,这是一个需要携带cookies信息才能访问的get请求";
}
}
return "你必须携带cookies信息来";
}
文章作者: gglss
文章链接: http://example.com/posts/15521.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +需要cookie访问的Get接口开发 | GGLSS

需要cookie访问的Get接口开发

编写需要cookie才能访问的接口

这个接口还是在MyGetMethod类里面编写方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 要求客户端携带cookie访问
* 这是一个需要携带cookies信息才能访问的get请求
*/
@RequestMapping(value = "/get/with/cookies", method = RequestMethod.GET)
@ApiOperation(value = "要求客户端携带cookie访问", httpMethod = "GET")
public String getWithCookies(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(Objects.isNull(cookies)){
return "你必须携带cookies信息来";
}
for(Cookie cookie : cookies){
if(cookie.getName().equals("login") && cookie.getValue().equals("True")){
return "恭喜你,访问成功!,这是一个需要携带cookies信息才能访问的get请求";
}
}
return "你必须携带cookies信息来";
}
文章作者: gglss
文章链接: http://example.com/posts/15521.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/16107.html b/posts/16107.html index a52e00e15..de9de9c05 100644 --- a/posts/16107.html +++ b/posts/16107.html @@ -1 +1 @@ -Hello World | GGLSS

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

文章作者: gglss
文章链接: http://example.com/posts/16107.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Hello World | GGLSS

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

文章作者: gglss
文章链接: http://example.com/posts/16107.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/16468.html b/posts/16468.html index 02d3799cc..d76991233 100644 --- a/posts/16468.html +++ b/posts/16468.html @@ -1 +1 @@ -包装类 | GGLSS

包装类

  • 基本数据类型对应的包装类
基本数据类型包装类大小(字节)
byteByte1–(-128~127)
shortShort2–(-32768~32767)
intInteger4
longLong8
floatFloat4
doubleDouble8
charCharacter2
booleanBoolean1

包装类方法

  • Integer的作用主要是对int、Integer、String几种类型的数据进行转换,还能获取一些常量
方法描述
compareTo()用于将对象与方法的参数进行比较(相同类型)
decode()将方法的参数转为包装类对象
equals()判断对象是否与参数相等
Integer.parseInt(“字符串’)将字符串转为Int类型
Integer.toString(int数据)将Int类型转为字符串

compareTo()方法

  • 如果指定的数与参数相等返回 0。
  • 如果指定的数小于参数返回 -1。
  • 如果指定的数大于参数返回 1。
文章作者: gglss
文章链接: http://example.com/posts/16468.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +包装类 | GGLSS

包装类

  • 基本数据类型对应的包装类
基本数据类型包装类大小(字节)
byteByte1–(-128~127)
shortShort2–(-32768~32767)
intInteger4
longLong8
floatFloat4
doubleDouble8
charCharacter2
booleanBoolean1

包装类方法

  • Integer的作用主要是对int、Integer、String几种类型的数据进行转换,还能获取一些常量
方法描述
compareTo()用于将对象与方法的参数进行比较(相同类型)
decode()将方法的参数转为包装类对象
equals()判断对象是否与参数相等
Integer.parseInt(“字符串’)将字符串转为Int类型
Integer.toString(int数据)将Int类型转为字符串

compareTo()方法

  • 如果指定的数与参数相等返回 0。
  • 如果指定的数小于参数返回 -1。
  • 如果指定的数大于参数返回 1。
文章作者: gglss
文章链接: http://example.com/posts/16468.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/16766.html b/posts/16766.html index 2b5017b86..4590470fa 100644 --- a/posts/16766.html +++ b/posts/16766.html @@ -1 +1 @@ -docker 帮助启动类命令(一) | GGLSS

docker 帮助启动类命令(一)

docker 帮助启动类命令(一)

启动docker

systemctl start docker

停止docker

systemctl stop docker

查看docker状态

systemctl status docker

重启 docker,没有任何提示说明启动成功

systemctl restart docker

文章作者: gglss
文章链接: http://example.com/posts/16766.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +docker 帮助启动类命令(一) | GGLSS

docker 帮助启动类命令(一)

docker 帮助启动类命令(一)

启动docker

systemctl start docker

停止docker

systemctl stop docker

查看docker状态

systemctl status docker

重启 docker,没有任何提示说明启动成功

systemctl restart docker

文章作者: gglss
文章链接: http://example.com/posts/16766.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/16785.html b/posts/16785.html index 2e89301a6..93773c3ce 100644 --- a/posts/16785.html +++ b/posts/16785.html @@ -1 +1 @@ -开发获取用户列表的Post接口 | GGLSS

开发获取用户列表的Post接口

开发获取用户列表的post请求

开发添加人员信息时需要的字段数据

首先,写一个User类,这将是添加时的字段数据

1
2
3
4
5
6
7
8
@Data
public class User {
private String userName;
private String password;
private String name;
private String age;
private String sex;
}

然后开始写怎么获取用户列表,相当于添加用户

@RequestBody User u请求post接口时,在Body填写上传的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RequestMapping(value = "/getUserList", method = RequestMethod.POST)
@ApiOperation(value = "获取用户列表", httpMethod = "POST")
public String getUserList(HttpServletRequest request,
@RequestBody User u){
User user;
// 获取cookies
Cookie[] cookies= request.getCookies();
// 验证cookies是否合法
for(Cookie c:cookies){
if (c.getName().equals("login")
&& c.getValue().equals("true")
&& u.getUserName().equals("zhangsan")
&& u.getPassword().equals("123456")){
user = new User();
user.setName("lisi");
user.setAge("18");
user.setSex("man");
return user.toString();
}
}
return "参数不合法";
}
文章作者: gglss
文章链接: http://example.com/posts/16785.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +开发获取用户列表的Post接口 | GGLSS

开发获取用户列表的Post接口

开发获取用户列表的post请求

开发添加人员信息时需要的字段数据

首先,写一个User类,这将是添加时的字段数据

1
2
3
4
5
6
7
8
@Data
public class User {
private String userName;
private String password;
private String name;
private String age;
private String sex;
}

然后开始写怎么获取用户列表,相当于添加用户

@RequestBody User u请求post接口时,在Body填写上传的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RequestMapping(value = "/getUserList", method = RequestMethod.POST)
@ApiOperation(value = "获取用户列表", httpMethod = "POST")
public String getUserList(HttpServletRequest request,
@RequestBody User u){
User user;
// 获取cookies
Cookie[] cookies= request.getCookies();
// 验证cookies是否合法
for(Cookie c:cookies){
if (c.getName().equals("login")
&& c.getValue().equals("true")
&& u.getUserName().equals("zhangsan")
&& u.getPassword().equals("123456")){
user = new User();
user.setName("lisi");
user.setAge("18");
user.setSex("man");
return user.toString();
}
}
return "参数不合法";
}
文章作者: gglss
文章链接: http://example.com/posts/16785.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/18767.html b/posts/18767.html index 994b326df..bff62bbb6 100644 --- a/posts/18767.html +++ b/posts/18767.html @@ -11,4 +11,4 @@ #### 使用 -f 删除全部 > docker rmi -f $(docker images -qa) -
文章作者: gglss
文章链接: http://example.com/posts/18767.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +
文章作者: gglss
文章链接: http://example.com/posts/18767.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/20480.html b/posts/20480.html index fce7d9a45..56b7d5ca4 100644 --- a/posts/20480.html +++ b/posts/20480.html @@ -1 +1 @@ -使用Postman如何做接口测试 | GGLSS

使用Postman如何做接口测试

Postman安装

Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

不带参数的请求:
image
发送需要认证的get接口:
image

------------恢复内容开始------------

## Postman安装 > Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

1、postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

get请求

不带参数的请求:
image
发送需要认证的get接口:
image

post请求

选择请求格式为post
传参:

  • Body中raw:支持任意格式的数据编辑,选json(也可xml或html传参)
  • Body中Form-data:以表单的方式进行数据编辑
  • Body中x-www-form-urlencoded:与form-data类似,也是以表单的方式进行数据编辑,但是表单中的每一条数据只能是键值对.
  • Body中Binary:用来上传文件.并且由于没有键值,因此一次只能上传一个文件.

Pre-request Scrip

image

Tests

image

postman保存测试用例

image

postman批量运行

image
image

选择文件进行参数化

json文件

image

txt文件

image
使用参数时,变量名称要与文件里的变量名保持一致

postman环境管理

image
image
引用环境信息:

postman全局变量

image
也可以用javascript写变量:
image
引用全局变量信息:
image
image
Cookie用途:一个请求需要用到用户的登录状态(sessionid或token),一般 登录状态会记录在cookie ,postman会自动记录登录状态写入cookies.所以执行非登录接口的请求前,需要先执行登录接口请求。
image

关联

------------恢复内容结束------------

------------恢复内容开始------------

## Postman安装 > Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

1、postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

get请求

不带参数的请求:
image
发送需要认证的get接口:
image

post请求

选择请求格式为post
传参:

  • Body中raw:支持任意格式的数据编辑,选json(也可xml或html传参)
  • Body中Form-data:以表单的方式进行数据编辑
  • Body中x-www-form-urlencoded:与form-data类似,也是以表单的方式进行数据编辑,但是表单中的每一条数据只能是键值对.
  • Body中Binary:用来上传文件.并且由于没有键值,因此一次只能上传一个文件.

Pre-request Scrip

image

Tests

image

postman保存测试用例

image

postman批量运行

image
image

选择文件进行参数化

json文件

image

txt文件

image
使用参数时,变量名称要与文件里的变量名保持一致

postman环境管理

image
image
引用环境信息:

postman全局变量

image
也可以用javascript写变量:
image
引用全局变量信息:
image
image
Cookie用途:一个请求需要用到用户的登录状态(sessionid或token),一般 登录状态会记录在cookie ,postman会自动记录登录状态写入cookies.所以执行非登录接口的请求前,需要先执行登录接口请求。
image

关联

断言

Postman通过tests插入断言
image

关联

把上一个接口的返回数据作为下一个参数的输入参数使用

  • 先发送一个接口,查看返回值
  • 在上一个接口的tests里面添加js脚本
    • 获取上一个接口返回值并赋值给变量
    • 定义全局变量,并获取要作为下一个接口输入的数据字段
  • 引用全局变量

生成并导出接口脚本

导出接口测试脚本

image

导出测试集

image
image

导入测试集

image

文章作者: gglss
文章链接: http://example.com/posts/20480.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用Postman如何做接口测试 | GGLSS

使用Postman如何做接口测试

Postman安装

Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

不带参数的请求:
image
发送需要认证的get接口:
image

------------恢复内容开始------------

## Postman安装 > Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

1、postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

get请求

不带参数的请求:
image
发送需要认证的get接口:
image

post请求

选择请求格式为post
传参:

  • Body中raw:支持任意格式的数据编辑,选json(也可xml或html传参)
  • Body中Form-data:以表单的方式进行数据编辑
  • Body中x-www-form-urlencoded:与form-data类似,也是以表单的方式进行数据编辑,但是表单中的每一条数据只能是键值对.
  • Body中Binary:用来上传文件.并且由于没有键值,因此一次只能上传一个文件.

Pre-request Scrip

image

Tests

image

postman保存测试用例

image

postman批量运行

image
image

选择文件进行参数化

json文件

image

txt文件

image
使用参数时,变量名称要与文件里的变量名保持一致

postman环境管理

image
image
引用环境信息:

postman全局变量

image
也可以用javascript写变量:
image
引用全局变量信息:
image
image
Cookie用途:一个请求需要用到用户的登录状态(sessionid或token),一般 登录状态会记录在cookie ,postman会自动记录登录状态写入cookies.所以执行非登录接口的请求前,需要先执行登录接口请求。
image

关联

------------恢复内容结束------------

------------恢复内容开始------------

## Postman安装 > Postman下载:https://www.postman.com/downloads/

image
下载后双击即可安装,安装后需要创建账号,登录后可以在不同平台同步数据。

postman主要功能说明

1、postman主要模块功能介绍

image
点击最上面的测试集的添加目录图标,来新增一个根目录,这样等于新建了一个项目.可以将一个项目或一个模块的用例都存放在这个目录之下,并且在根目录下还可以创建子目录进行用例的细分.
image
image
image
image
创建了目录后可以进行用例的新建,具体是通过测试集右侧区域中的三个点来新增一个空的用例模板,当然也可以通过复制一个已有的用例来达到新建用例的目的.
image
image

发送http请求和分析响应数据

在postman中新建用例对应即将要执行的一次请求,默认为空,测试人员需要添加相应的请求信息,需要添加的信息包括:
请求的方法:get或post
请求的URL:协议+域名/IP+端口+资源路径

get请求

不带参数的请求:
image
发送需要认证的get接口:
image

post请求

选择请求格式为post
传参:

  • Body中raw:支持任意格式的数据编辑,选json(也可xml或html传参)
  • Body中Form-data:以表单的方式进行数据编辑
  • Body中x-www-form-urlencoded:与form-data类似,也是以表单的方式进行数据编辑,但是表单中的每一条数据只能是键值对.
  • Body中Binary:用来上传文件.并且由于没有键值,因此一次只能上传一个文件.

Pre-request Scrip

image

Tests

image

postman保存测试用例

image

postman批量运行

image
image

选择文件进行参数化

json文件

image

txt文件

image
使用参数时,变量名称要与文件里的变量名保持一致

postman环境管理

image
image
引用环境信息:

postman全局变量

image
也可以用javascript写变量:
image
引用全局变量信息:
image
image
Cookie用途:一个请求需要用到用户的登录状态(sessionid或token),一般 登录状态会记录在cookie ,postman会自动记录登录状态写入cookies.所以执行非登录接口的请求前,需要先执行登录接口请求。
image

关联

断言

Postman通过tests插入断言
image

关联

把上一个接口的返回数据作为下一个参数的输入参数使用

  • 先发送一个接口,查看返回值
  • 在上一个接口的tests里面添加js脚本
    • 获取上一个接口返回值并赋值给变量
    • 定义全局变量,并获取要作为下一个接口输入的数据字段
  • 引用全局变量

生成并导出接口脚本

导出接口测试脚本

image

导出测试集

image
image

导入测试集

image

文章作者: gglss
文章链接: http://example.com/posts/20480.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/2166.html b/posts/2166.html index ca1d02c33..b264c1967 100644 --- a/posts/2166.html +++ b/posts/2166.html @@ -1 +1 @@ -硬件性能监控平台 | GGLSS

硬件性能监控平台

拉取prometheus镜像

1
docker pull prom/prometheus

创建prometheus容器并启动

1
docker run -itd --name=docker_prometheus --restart=always -p 3090:9090 -v /opt/prometheus:/ prom/prometheus

验证

通过浏览器访问http://ip:3090进行访问

方法一:服务器上直接安装node_export

首先,用浏览器访问:node_export 下载,然后上传到被监控的服务器并解压
进入解压文件夹,直接启动./node_exporter

方法二:拉取docker node_export镜像

1
docker pull prom/node-exporter

创建node_export容器并启动

1
2
3
4
5
6
7
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter

验证

在浏览器访问http://ip:9100/metrics进行访问

配置prometheus + node_export

node_export的作用收集硬件数据

使用vim修改yum文件容器内:/etc/prometheus/prometheus.yml

1
2
3
4
5
6
7
8
9
10
11
12
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus

- job_name: linux
static_configs:
- targets: ['被监控的服务器ip:9100']
labels:
instance: localhost

重启prometheus容器

1
docker restart docker_prometheus

配置Grafana

使用Grafana下载版本

配置数据源

  • 数据源:选择prometheus

  • URL输入http://prometheus机器ip:3090

  • 点击Save & Test保存

添加仪表盘

使用官方仪表盘进行下载仪表盘
导入仪表盘
import via grafana.com输入框输入模板ID12884

ID:12633也可以使用。

点击 load,然后底部选择刚弄的数据源,点击import

注意:
点击json下载12884的json文件

文章作者: gglss
文章链接: http://example.com/posts/2166.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +硬件性能监控平台 | GGLSS

硬件性能监控平台

拉取prometheus镜像

1
docker pull prom/prometheus

创建prometheus容器并启动

1
docker run -itd --name=docker_prometheus --restart=always -p 3090:9090 -v /opt/prometheus:/ prom/prometheus

验证

通过浏览器访问http://ip:3090进行访问

方法一:服务器上直接安装node_export

首先,用浏览器访问:node_export 下载,然后上传到被监控的服务器并解压
进入解压文件夹,直接启动./node_exporter

方法二:拉取docker node_export镜像

1
docker pull prom/node-exporter

创建node_export容器并启动

1
2
3
4
5
6
7
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter

验证

在浏览器访问http://ip:9100/metrics进行访问

配置prometheus + node_export

node_export的作用收集硬件数据

使用vim修改yum文件容器内:/etc/prometheus/prometheus.yml

1
2
3
4
5
6
7
8
9
10
11
12
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus

- job_name: linux
static_configs:
- targets: ['被监控的服务器ip:9100']
labels:
instance: localhost

重启prometheus容器

1
docker restart docker_prometheus

配置Grafana

使用Grafana下载版本

配置数据源

  • 数据源:选择prometheus

  • URL输入http://prometheus机器ip:3090

  • 点击Save & Test保存

添加仪表盘

使用官方仪表盘进行下载仪表盘
导入仪表盘
import via grafana.com输入框输入模板ID12884

ID:12633也可以使用。

点击 load,然后底部选择刚弄的数据源,点击import

注意:
点击json下载12884的json文件

文章作者: gglss
文章链接: http://example.com/posts/2166.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/22551.html b/posts/22551.html index 2dd4261b9..385af62ba 100644 --- a/posts/22551.html +++ b/posts/22551.html @@ -1 +1 @@ -Groovy编写方法 | GGLSS

Groovy编写方法

关键字:

  • **log**:写入信息到jmeterlog文件,使用方法:log.info(*Thisisloginfo
  • **ctx**:该变量引用了当前线程的上下文,使用方法可参考:org.apache.imeter.threads.JMeterContext。
  • vars-(JMeterVariables):操作imeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,
    常用方法:
    • a)vars.get(Stringkey):从imeter中获得变量值
    • b)vars.put(Stringkey,Stringvalue):数据存到imeter变量中
      更多方法可参考:org.apache.imeter.threads.JMeterVariables
  • props-(JMeterProperties-classjava.util.Properties):操作imeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。
    对应于iava.util.Properties。
    • a)props.get(“START.HMS”); 注:START.HMS为属性名,在文件imeter.properties中定义
    • b)props.put(“PROP1”,”1234”);

  • prey-(SampleResult):获取前面的sample返回的信息,
    常用方法:
    • a)getResponseDataAsString():获取响应信息
    • b)getResponseCode():获取响应code
      更多方法可参考:org.apache.imeter.samplers.SampleResult
  • sampler-(Sampler):gives access to the current sampler
文章作者: gglss
文章链接: http://example.com/posts/22551.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Groovy编写方法 | GGLSS

Groovy编写方法

关键字:

  • **log**:写入信息到jmeterlog文件,使用方法:log.info(*Thisisloginfo
  • **ctx**:该变量引用了当前线程的上下文,使用方法可参考:org.apache.imeter.threads.JMeterContext。
  • vars-(JMeterVariables):操作imeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,
    常用方法:
    • a)vars.get(Stringkey):从imeter中获得变量值
    • b)vars.put(Stringkey,Stringvalue):数据存到imeter变量中
      更多方法可参考:org.apache.imeter.threads.JMeterVariables
  • props-(JMeterProperties-classjava.util.Properties):操作imeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。
    对应于iava.util.Properties。
    • a)props.get(“START.HMS”); 注:START.HMS为属性名,在文件imeter.properties中定义
    • b)props.put(“PROP1”,”1234”);

  • prey-(SampleResult):获取前面的sample返回的信息,
    常用方法:
    • a)getResponseDataAsString():获取响应信息
    • b)getResponseCode():获取响应code
      更多方法可参考:org.apache.imeter.samplers.SampleResult
  • sampler-(Sampler):gives access to the current sampler
文章作者: gglss
文章链接: http://example.com/posts/22551.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/23767.html b/posts/23767.html index e1d5297f1..677374133 100644 --- a/posts/23767.html +++ b/posts/23767.html @@ -1,4 +1,4 @@ -性能监控平台 | GGLSS

性能监控平台

搭建容器

拉取CentOS7镜像,下载安装Grafana和Influxdb


+性能监控平台 | GGLSS

性能监控平台

搭建容器

拉取CentOS7镜像,下载安装Grafana和Influxdb


         # 拉取阿里云的centos7镜像
         git pull registry.cn-zhangjiakou.aliyuncs.com/ggls/centos:7.1
         # 运行镜像生成容器
@@ -11,4 +11,4 @@
         # 进入容器
         docker exec -it centos7-influx bash
     
-

端口说明:

  • 8083:InfluxDB的UI界面展示的端口
  • 8086:Grafana用来从数据库取数据的端口
  • 2003:Jmeter往数据库发数据的端口
  • 3000:本地访问服务器内部docker容器的端口

安装Influxdb

  1. 下载influxDB

新版本可以点击influxDB官网进行下载

# 下载安装包 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm # 安装运行 yum localinstall influxdb-1.6.3.x86_64.rpm
  1. influxDB配置

安装运行后,然后对influxDB进行配置,主要是配置Jmeter连接的数据库和端口号

vim /etc/influxdb/influxdb.conf

找到graphite并且修改它的库与端口

1
2
3
4
5
6
enabled = true
database = "jmeter"
retention-policy = ""
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"
  1. 找到[http],将前面的#号去掉
  1. 配置成功,启动influxDB
  • 启动命令: systemctl start influxdb.service
  • 查看状态命令: systemctl status influxdb.service

安装Grafana

新版本下载位置:Grafana官网下载:https://grafana.com/grafana/download

1
2
3
wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm

sudo yum localinstall grafana-6.5.2-1.x86_64.rpm

然后启动

启动命令: systemctl start grafana-server.service

查看状态命令: systemctl status grafana-server.service

然后在浏览器访问登录http://ip:3000

配置Jmeter

一、添加监听器:Backend Listener

  • 右键点击Thread Group
  • 点击Add -> Listener -> Backend Listener

二、配置监听器:Backend Listener

Backend Listener implementation 默认选择GraphiteBackendListenerClient

  • graphiteHost:InfluxDB安装的服务器的ip
  • graphitePort:端口;默认就是2003,除非你自己安装InfluxDB时设置了其他端口是哦(可见上面安装InfluxDB后关于graphite的配置)
  • rootMetricsPrefix:指标的根前缀;将测试结果存入数据库时,不同指标会生成不同表,但这些表都最好要有一个共同的前缀,这个就是了;后面会讲到不同的指标的含义(重点哦)
  • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告
  • samplersList:取样器列表;想收集哪些请求就填哪些,最好用正则去匹配,减轻工作量
  • useRegexpForSamplersList:是否使用正则;如果true则使用,samplersList里可以匹配正则表达式
  • percentiles:百分比;即类似聚合报告里90% Line,95% Line,99% Line的数据;倘若想要99.9时,需要写成【99_9】,用下划线代替点

三:运行Jmeter脚本,查看数据库

数据库里面有两个库,jmeter库就是jmeter运行生成表的数据库

可以看到生成了三类前缀的表,分别是: jmeter.all 、 jmeter.[请求名称];最后还有 jmeter.test 开头的表,这个后面会单独拿出来说

前缀的含义

  • jmeter.all :代表了所有请求;当summaryOnly=true时,就只有samplerName=all的表了
  • jmeter.[请求名称]:代表了HTTP请求,即samplerName=[请求名称]

Thread/Virtual Users metrics - 线程/虚拟用户指标
跟线程组设置相关的

指标全称含义
jmeter.test.minATMin active threads最小活跃线程数
jmeter.test.maxATMax active threads最大活跃线程数
jmeter.test.meanATMean active threads平均活跃线程数
jmeter.test.startedTStarted threads启动线程数
jmeter.test.endedTFinished threads结束线程数

Response times metrics - 响应时间指标

划重点:每个sampler(请求)都包含了所有响应时间指标,每个sampler(请求)的每个指标都会有单独的一个表存储结果数据

指标含义
.ok.countsampler的成功响应数
.h.count服务器每秒命中次数(每秒点击数,即TPS)
.ok.minsampler响应成功的最短响应时间
.ok.maxsampler响应成功的最长响应时间
.ok.avgsampler响应成功的平均响应时间
.ok.pctsampler响应成功的所占百分比
.ko.countsampler的失败响应数
.ko.minsampler响应失败的最短响应时间
.ko.maxsampler响应失败的最长响应时间
.ko.avgsampler响应失败的平均响应时间
.ko.pctsampler响应失败的所占百分比
.a.countsampler响应数(ok.count+ko.count)
.sb.bytes已发送字节
.rb.bytes已接收字节
.a.minsampler响应的最短响应时间(ok.count和ko.count的最小值)
.a.maxsampler响应的最长响应时间(ok.count和ko.count的最大值)
.a.avgsampler响应的平均响应时间(ok.count和ko.count的平均值)
.a.pctsampler响应的百分比(根据成功和失败的总数来计算)

四、配置Grafana

步骤:

  • 配置数据源

  • 创建数据面板

配置数据源

点击首页的Create your first data source,然后进行配置

点击选择influxDB

配置数据面板

选择Add Query,然后进行配置

当我们只想看数据而不想看数据趋势图的话,可以改变它的类型;

在同一个界面,点击左侧列表选中第二个icon,然后选择Singlestat即可

基本的配置完成,Jmeter使用GraphiteBackendListenerClient来采集数据的,因为请求多起来的时候会有非常多的表,维护成本也会增加;后面将会介绍如何通过InfluxDBBackendListenerClient来采集数据

给Jmeter的Backend Listener配置为InfluxDBBackendListenerClient

首先来看看每个配置项的含义

  1. influxdbUrl:安装influxdb的路径;主要格式:http://主机地址:8086/write?db=数据库名
  2. application:应用名称;在 events 表中对应的字段是 application
  3. measurement:表名;数据存储到哪个表,默认是jmeter,不用改即可
  4. summaryOnly:同GraphiteBackendListenerClient
  5. samplersRegex:同GraphiteBackendListenerClient
  6. percentiles:同GraphiteBackendListenerClient
  7. testTitle:测试名称;在 events 表中对应的字段是 text ,JMeter在测试的开始和结束时自动生成注释,该注释的值以’start’和’end’结尾
  8. eventTags:Grafana允许为每个注释显示标签;在 events 表中对应的字段是 tags

inDB数据库
使用InfluxDBBackendListenerClient好处就是,再多的请求也只会生成两张表:

events :主要拿存事件的

jmeter :存测试结果数据的,Grafana也是从这个表获取数据再展示

配置数据面板

首先,进入官方模板库: https://grafana.com/dashboards ,然后跟着图片导入模板并初始化即可

然后jmeter再次执行一下测试计划

模板自带了三个下拉筛选框

  1. data_source:数据源,在Grafana配置了多少个就显示多少个

  2. application:在Jmeter配置好的application,如果每次测试计划执行时的application都不一样,你就可以通过这个筛选出对应测试时机的结果数据了

  3. transaction:在Jmeter配置好的sampleList,譬如我只发了get、post请求,这里就只会给你选get、post;可以滑到页面下面看到针对某个请求的数据展示

卸载Grafana

停止Grafana服务。

1
systemctl stop grafana-server.service
1
systemctl disable grafana-server.service

查看要卸载的包的名称

1
yum list installed

输入命令行卸载Grafana

1
yum remove grafana.x86_64
文章作者: gglss
文章链接: http://example.com/posts/23767.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +

端口说明:

  • 8083:InfluxDB的UI界面展示的端口
  • 8086:Grafana用来从数据库取数据的端口
  • 2003:Jmeter往数据库发数据的端口
  • 3000:本地访问服务器内部docker容器的端口

安装Influxdb

  1. 下载influxDB

新版本可以点击influxDB官网进行下载

# 下载安装包 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3.x86_64.rpm # 安装运行 yum localinstall influxdb-1.6.3.x86_64.rpm
  1. influxDB配置

安装运行后,然后对influxDB进行配置,主要是配置Jmeter连接的数据库和端口号

vim /etc/influxdb/influxdb.conf

找到graphite并且修改它的库与端口

1
2
3
4
5
6
enabled = true
database = "jmeter"
retention-policy = ""
bind-address = ":2003"
protocol = "tcp"
consistency-level = "one"
  1. 找到[http],将前面的#号去掉
  1. 配置成功,启动influxDB
  • 启动命令: systemctl start influxdb.service
  • 查看状态命令: systemctl status influxdb.service

安装Grafana

新版本下载位置:Grafana官网下载:https://grafana.com/grafana/download

1
2
3
wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm

sudo yum localinstall grafana-6.5.2-1.x86_64.rpm

然后启动

启动命令: systemctl start grafana-server.service

查看状态命令: systemctl status grafana-server.service

然后在浏览器访问登录http://ip:3000

配置Jmeter

一、添加监听器:Backend Listener

  • 右键点击Thread Group
  • 点击Add -> Listener -> Backend Listener

二、配置监听器:Backend Listener

Backend Listener implementation 默认选择GraphiteBackendListenerClient

  • graphiteHost:InfluxDB安装的服务器的ip
  • graphitePort:端口;默认就是2003,除非你自己安装InfluxDB时设置了其他端口是哦(可见上面安装InfluxDB后关于graphite的配置)
  • rootMetricsPrefix:指标的根前缀;将测试结果存入数据库时,不同指标会生成不同表,但这些表都最好要有一个共同的前缀,这个就是了;后面会讲到不同的指标的含义(重点哦)
  • summaryOnly:当你线程组有多个请求又想知道每个请求的结果数据时,最好填false,因为true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告
  • samplersList:取样器列表;想收集哪些请求就填哪些,最好用正则去匹配,减轻工作量
  • useRegexpForSamplersList:是否使用正则;如果true则使用,samplersList里可以匹配正则表达式
  • percentiles:百分比;即类似聚合报告里90% Line,95% Line,99% Line的数据;倘若想要99.9时,需要写成【99_9】,用下划线代替点

三:运行Jmeter脚本,查看数据库

数据库里面有两个库,jmeter库就是jmeter运行生成表的数据库

可以看到生成了三类前缀的表,分别是: jmeter.all 、 jmeter.[请求名称];最后还有 jmeter.test 开头的表,这个后面会单独拿出来说

前缀的含义

  • jmeter.all :代表了所有请求;当summaryOnly=true时,就只有samplerName=all的表了
  • jmeter.[请求名称]:代表了HTTP请求,即samplerName=[请求名称]

Thread/Virtual Users metrics - 线程/虚拟用户指标
跟线程组设置相关的

指标全称含义
jmeter.test.minATMin active threads最小活跃线程数
jmeter.test.maxATMax active threads最大活跃线程数
jmeter.test.meanATMean active threads平均活跃线程数
jmeter.test.startedTStarted threads启动线程数
jmeter.test.endedTFinished threads结束线程数

Response times metrics - 响应时间指标

划重点:每个sampler(请求)都包含了所有响应时间指标,每个sampler(请求)的每个指标都会有单独的一个表存储结果数据

指标含义
.ok.countsampler的成功响应数
.h.count服务器每秒命中次数(每秒点击数,即TPS)
.ok.minsampler响应成功的最短响应时间
.ok.maxsampler响应成功的最长响应时间
.ok.avgsampler响应成功的平均响应时间
.ok.pctsampler响应成功的所占百分比
.ko.countsampler的失败响应数
.ko.minsampler响应失败的最短响应时间
.ko.maxsampler响应失败的最长响应时间
.ko.avgsampler响应失败的平均响应时间
.ko.pctsampler响应失败的所占百分比
.a.countsampler响应数(ok.count+ko.count)
.sb.bytes已发送字节
.rb.bytes已接收字节
.a.minsampler响应的最短响应时间(ok.count和ko.count的最小值)
.a.maxsampler响应的最长响应时间(ok.count和ko.count的最大值)
.a.avgsampler响应的平均响应时间(ok.count和ko.count的平均值)
.a.pctsampler响应的百分比(根据成功和失败的总数来计算)

四、配置Grafana

步骤:

  • 配置数据源

  • 创建数据面板

配置数据源

点击首页的Create your first data source,然后进行配置

点击选择influxDB

配置数据面板

选择Add Query,然后进行配置

当我们只想看数据而不想看数据趋势图的话,可以改变它的类型;

在同一个界面,点击左侧列表选中第二个icon,然后选择Singlestat即可

基本的配置完成,Jmeter使用GraphiteBackendListenerClient来采集数据的,因为请求多起来的时候会有非常多的表,维护成本也会增加;后面将会介绍如何通过InfluxDBBackendListenerClient来采集数据

给Jmeter的Backend Listener配置为InfluxDBBackendListenerClient

首先来看看每个配置项的含义

  1. influxdbUrl:安装influxdb的路径;主要格式:http://主机地址:8086/write?db=数据库名
  2. application:应用名称;在 events 表中对应的字段是 application
  3. measurement:表名;数据存储到哪个表,默认是jmeter,不用改即可
  4. summaryOnly:同GraphiteBackendListenerClient
  5. samplersRegex:同GraphiteBackendListenerClient
  6. percentiles:同GraphiteBackendListenerClient
  7. testTitle:测试名称;在 events 表中对应的字段是 text ,JMeter在测试的开始和结束时自动生成注释,该注释的值以’start’和’end’结尾
  8. eventTags:Grafana允许为每个注释显示标签;在 events 表中对应的字段是 tags

inDB数据库
使用InfluxDBBackendListenerClient好处就是,再多的请求也只会生成两张表:

events :主要拿存事件的

jmeter :存测试结果数据的,Grafana也是从这个表获取数据再展示

配置数据面板

首先,进入官方模板库: https://grafana.com/dashboards ,然后跟着图片导入模板并初始化即可

然后jmeter再次执行一下测试计划

模板自带了三个下拉筛选框

  1. data_source:数据源,在Grafana配置了多少个就显示多少个

  2. application:在Jmeter配置好的application,如果每次测试计划执行时的application都不一样,你就可以通过这个筛选出对应测试时机的结果数据了

  3. transaction:在Jmeter配置好的sampleList,譬如我只发了get、post请求,这里就只会给你选get、post;可以滑到页面下面看到针对某个请求的数据展示

卸载Grafana

停止Grafana服务。

1
systemctl stop grafana-server.service
1
systemctl disable grafana-server.service

查看要卸载的包的名称

1
yum list installed

输入命令行卸载Grafana

1
yum remove grafana.x86_64
文章作者: gglss
文章链接: http://example.com/posts/23767.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/24951.html b/posts/24951.html index 077b48b2b..1f5e9b3de 100644 --- a/posts/24951.html +++ b/posts/24951.html @@ -1 +1 @@ -返回cookie的Get接口开发 | GGLSS

返回cookie的Get接口开发

位置布局

1
2
3
4
5
6
7
- java
- com.course.server
- intertype
MyGetMethod
Application
- resources
- application.properties

Application 类

创建Application.java类,用来运行接口,类名只能是Application,不能自定义

1
2
3
4
5
6
7
8
@SpringBootApplication
@Controller("com.course.server.intertype")
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
  • @SpringBootApplication 作用是给当前类标明是运行的主类,相当于被SpringBoot托管了
  • @Controller("com.course.server.intertype") 钩子标识符,扫描包下面的类,被Springboot托管

编写Get接口

创建MyGetMethod

类名上有修饰符@RestController@Api(value = "/")

  • @RestController 标识该类会被扫描到,然后被SpringBoot托管
  • @Api(value = "/") 可加可不加
  • @RequestMapping(value = "访问路径", method = 访问方法) 定义接口的访问路径及访问方法
  • @ApiOperation(value = "接口信息", httpMethod = "接口的请求方法") 展示接口的基本信息和它的请求方法,可加可不加

下面是代码信息,之后的所有GET接口都在该类里面写接口方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
@Api(value = "/", tags = {SwaggerConfig.TagGet} )
public class MyGetMethod {

@RequestMapping(value = "/getCookies", method = RequestMethod.GET)
@ApiOperation(value = "通过这个方法可以获得cookies", httpMethod = "GET")
public String getCookies(HttpServletResponse response){

// HttpServerletRequest 装请求信息类
// HttpServerletResponse 装响应信息类

Cookie cookie = new Cookie("login", "True");

response.addCookie(cookie);

return "恭喜获得cookies信息成功";
}
}

上面就是返回cookie的get接口开发,接下来就是 需要携带cookies信息才能访问的get请求

文章作者: gglss
文章链接: http://example.com/posts/24951.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +返回cookie的Get接口开发 | GGLSS

返回cookie的Get接口开发

位置布局

1
2
3
4
5
6
7
- java
- com.course.server
- intertype
MyGetMethod
Application
- resources
- application.properties

Application 类

创建Application.java类,用来运行接口,类名只能是Application,不能自定义

1
2
3
4
5
6
7
8
@SpringBootApplication
@Controller("com.course.server.intertype")
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
  • @SpringBootApplication 作用是给当前类标明是运行的主类,相当于被SpringBoot托管了
  • @Controller("com.course.server.intertype") 钩子标识符,扫描包下面的类,被Springboot托管

编写Get接口

创建MyGetMethod

类名上有修饰符@RestController@Api(value = "/")

  • @RestController 标识该类会被扫描到,然后被SpringBoot托管
  • @Api(value = "/") 可加可不加
  • @RequestMapping(value = "访问路径", method = 访问方法) 定义接口的访问路径及访问方法
  • @ApiOperation(value = "接口信息", httpMethod = "接口的请求方法") 展示接口的基本信息和它的请求方法,可加可不加

下面是代码信息,之后的所有GET接口都在该类里面写接口方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
@Api(value = "/", tags = {SwaggerConfig.TagGet} )
public class MyGetMethod {

@RequestMapping(value = "/getCookies", method = RequestMethod.GET)
@ApiOperation(value = "通过这个方法可以获得cookies", httpMethod = "GET")
public String getCookies(HttpServletResponse response){

// HttpServerletRequest 装请求信息类
// HttpServerletResponse 装响应信息类

Cookie cookie = new Cookie("login", "True");

response.addCookie(cookie);

return "恭喜获得cookies信息成功";
}
}

上面就是返回cookie的get接口开发,接下来就是 需要携带cookies信息才能访问的get请求

文章作者: gglss
文章链接: http://example.com/posts/24951.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/25343.html b/posts/25343.html index addc4d9e8..551d877a7 100644 --- a/posts/25343.html +++ b/posts/25343.html @@ -1 +1 @@ -本地镜像发布到阿里云 | GGLSS

本地镜像发布到阿里云

本地镜像发布到阿里云


使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

执行顺序

  • 阿里云开发者平台
  • 点击镜像容器服务
  • 创建镜像仓库
    • 创建命名空间
    • 创建镜像仓库

然后在基本信息上面就可以看到仓库指南

根据指南进行操作

文章作者: gglss
文章链接: http://example.com/posts/25343.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +本地镜像发布到阿里云 | GGLSS

本地镜像发布到阿里云

本地镜像发布到阿里云


使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

执行顺序

  • 阿里云开发者平台
  • 点击镜像容器服务
  • 创建镜像仓库
    • 创建命名空间
    • 创建镜像仓库

然后在基本信息上面就可以看到仓库指南

根据指南进行操作

文章作者: gglss
文章链接: http://example.com/posts/25343.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/26527.html b/posts/26527.html index 1bc093fb3..3762bb143 100644 --- a/posts/26527.html +++ b/posts/26527.html @@ -1 +1 @@ -css教程一 | GGLSS

css教程一

css选择器

元素选择器(Element Selector)

通过元素名称选择 HTML 元素。

1
2
3
4
5
// 如下代码,p 选择器将选择所有 <p> 元素:

p {
color: blue;
}

类选择器(Class Selector)

通过类别名称选择具有特定类别的 HTML 元素。

1
2
3
4
5
6
// 类选择器以 . 开头,后面跟着类别名称。
// 如下代码,.highlight 选择器将选择所有具有类别为 "highlight" 的元素。

.highlight {
background-color: yellow;
}

ID 选择器(ID Selector)

通过元素的唯一标识符(ID)选择 HTML 元素。

1
2
3
4
5
6
// ID 选择器以 # 开头,后面跟着 ID 名称。
// 如下代码,#runoob 选择器将选择具有 ID 为 "runoob" 的元素。

#runoob {
width: 200px;
}

属性选择器(Attribute Selector)

通过元素的属性选择 HTML 元素。属性选择器可以根据属性名和属性值进行选择。

1
2
3
4
5
// 如下代码,input[type="text"] 选择器将选择所有 type 属性为 "text" 的 <input> 元素。

input[type="text"] {
border: 1px solid gray;
}

后代选择器(Descendant Selector)

通过指定元素的后代关系选择 HTML 元素。

1
2
3
4
5
6
// 后代选择器使用空格分隔元素名称。
// 如下代码,div p 选择器将选择所有在 <div> 元素内的 <p> 元素。

div p {
font-weight: bold;
}

背景: background 属性

文章作者: gglss
文章链接: http://example.com/posts/26527.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +css教程一 | GGLSS

css教程一

css选择器

元素选择器(Element Selector)

通过元素名称选择 HTML 元素。

1
2
3
4
5
// 如下代码,p 选择器将选择所有 <p> 元素:

p {
color: blue;
}

类选择器(Class Selector)

通过类别名称选择具有特定类别的 HTML 元素。

1
2
3
4
5
6
// 类选择器以 . 开头,后面跟着类别名称。
// 如下代码,.highlight 选择器将选择所有具有类别为 "highlight" 的元素。

.highlight {
background-color: yellow;
}

ID 选择器(ID Selector)

通过元素的唯一标识符(ID)选择 HTML 元素。

1
2
3
4
5
6
// ID 选择器以 # 开头,后面跟着 ID 名称。
// 如下代码,#runoob 选择器将选择具有 ID 为 "runoob" 的元素。

#runoob {
width: 200px;
}

属性选择器(Attribute Selector)

通过元素的属性选择 HTML 元素。属性选择器可以根据属性名和属性值进行选择。

1
2
3
4
5
// 如下代码,input[type="text"] 选择器将选择所有 type 属性为 "text" 的 <input> 元素。

input[type="text"] {
border: 1px solid gray;
}

后代选择器(Descendant Selector)

通过指定元素的后代关系选择 HTML 元素。

1
2
3
4
5
6
// 后代选择器使用空格分隔元素名称。
// 如下代码,div p 选择器将选择所有在 <div> 元素内的 <p> 元素。

div p {
font-weight: bold;
}

背景: background 属性

文章作者: gglss
文章链接: http://example.com/posts/26527.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/26691.html b/posts/26691.html index 300fe27d2..e872d7145 100644 --- a/posts/26691.html +++ b/posts/26691.html @@ -1 +1 @@ -Jmeter之json数据提取和参数传递 | GGLSS

Jmeter之json数据提取和参数传递

安装组件JSON Extractor

  • 右键Http Request
  • 点击Add -> Post Processors -> JSON Extractor

组件安装成功

组件配置

  • Names of created variables : 参数变量名称,提取出来的json使用这个变量
  • Json Path expressions : JSON提取的正则 比如:$.access_token这个是提取response里面的token
  • Match NO.(0 for Random):这个是写提取出json的第几条, 比如使用正则能匹配多条,使用这个输入数字就可以匹配对应的
引用json变量
  • Jmeter中引用变量的方法${变量名}

调试脚本 Debug Sampler

帮助检查变量值,调试脚本

  • 右键Thread Group
  • 点击Add -> Sampler -> Debug Sampler

注意:把Debug放到所有请求的最底下,运行的后可以查看变量参数,方便调试

文章作者: gglss
文章链接: http://example.com/posts/26691.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Jmeter之json数据提取和参数传递 | GGLSS

Jmeter之json数据提取和参数传递

安装组件JSON Extractor

  • 右键Http Request
  • 点击Add -> Post Processors -> JSON Extractor

组件安装成功

组件配置

  • Names of created variables : 参数变量名称,提取出来的json使用这个变量
  • Json Path expressions : JSON提取的正则 比如:$.access_token这个是提取response里面的token
  • Match NO.(0 for Random):这个是写提取出json的第几条, 比如使用正则能匹配多条,使用这个输入数字就可以匹配对应的
引用json变量
  • Jmeter中引用变量的方法${变量名}

调试脚本 Debug Sampler

帮助检查变量值,调试脚本

  • 右键Thread Group
  • 点击Add -> Sampler -> Debug Sampler

注意:把Debug放到所有请求的最底下,运行的后可以查看变量参数,方便调试

文章作者: gglss
文章链接: http://example.com/posts/26691.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/26726.html b/posts/26726.html index 0a82081cc..8cf79092b 100644 --- a/posts/26726.html +++ b/posts/26726.html @@ -1 +1 @@ -容器(一) | GGLSS

容器(一)

容器(一)

新建和启动容器

OPTIONS说明:

  • – name = “容器新名称” 为容器制定一个名称
  • -d 后台运行容器并返回容器id, 即启动守护式容器(后台运行)
  • -i 以交互模式运行容器,通常与 -t 同时使用
  • -t 为容器重新分配一个伪输入终端,通常与 -i 连用,也就是启动交互式容器
  • -P 随机端口映射
  • -p 指定端口映射

举个栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu:15.10 /bin/bash
root@4fb757f69adb:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:26 pts/0 00:00:00 /bin/bash
root 11 1 0 03:26 pts/0 00:00:00 ps -ef
root@4fb757f69adb:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@4fb757f69adb:/# exit
exit
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

docker run -it ubuntu:15.10 /bin/bash
/bin/bash 希望有交互式shell 就用/bin/bash

查询正在运行的容器

docker ps [OPTIONS]

1
2
3
4
5
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdee90a8c77d ubuntu "bash" 3 minutes ago Exited (0) 3 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 5 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

OPTIONS:

  • -a 展示所有容器,包含历史用过容器
  • -d 只展示容器id
  • -l 显示最近创建的容器
  • -n 展示最近创建的前n个容器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    List containers
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -n 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 2
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    0dcaa91afc0e ubuntu "/bin/bush" 19 minutes ago Created myubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

退出容器

  • exit

run进入容器,exit退出容器, 容器停止

  • ctrl + p + q

run进入容器,exit退出容器, 容器不停止

1
2
3
4
5
6
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu bash
root@562278524cda:/# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 16 seconds ago Up 15 seconds loving_dewdney
文章作者: gglss
文章链接: http://example.com/posts/26726.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +容器(一) | GGLSS

容器(一)

容器(一)

新建和启动容器

OPTIONS说明:

  • – name = “容器新名称” 为容器制定一个名称
  • -d 后台运行容器并返回容器id, 即启动守护式容器(后台运行)
  • -i 以交互模式运行容器,通常与 -t 同时使用
  • -t 为容器重新分配一个伪输入终端,通常与 -i 连用,也就是启动交互式容器
  • -P 随机端口映射
  • -p 指定端口映射

举个栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu:15.10 /bin/bash
root@4fb757f69adb:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:26 pts/0 00:00:00 /bin/bash
root 11 1 0 03:26 pts/0 00:00:00 ps -ef
root@4fb757f69adb:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@4fb757f69adb:/# exit
exit
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

docker run -it ubuntu:15.10 /bin/bash
/bin/bash 希望有交互式shell 就用/bin/bash

查询正在运行的容器

docker ps [OPTIONS]

1
2
3
4
5
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdee90a8c77d ubuntu "bash" 3 minutes ago Exited (0) 3 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 5 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

OPTIONS:

  • -a 展示所有容器,包含历史用过容器
  • -d 只展示容器id
  • -l 显示最近创建的容器
  • -n 展示最近创建的前n个容器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    List containers
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -n 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 2
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    0dcaa91afc0e ubuntu "/bin/bush" 19 minutes ago Created myubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

退出容器

  • exit

run进入容器,exit退出容器, 容器停止

  • ctrl + p + q

run进入容器,exit退出容器, 容器不停止

1
2
3
4
5
6
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu bash
root@562278524cda:/# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 16 seconds ago Up 15 seconds loving_dewdney
文章作者: gglss
文章链接: http://example.com/posts/26726.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/27832.html b/posts/27832.html index 69bfac480..2ec59c345 100644 --- a/posts/27832.html +++ b/posts/27832.html @@ -1 +1 @@ -Shell函数 | GGLSS

Shell函数

系统函数
basename基本语法
1
basename [string/ pathname][文件后缀] 

basename命令会删掉所有的前缀,只留一个文件名

选项:

如果指定后缀,basename会将pathname或string中的文件后缀去掉

举个栗子

截取该/opt/banzhang.txt路径的文件名称

1
2
3
4
5
[root@b09ed0cc2c9d opt]# basename /opt/banzhang.txt
banzhang.txt
[root@b09ed0cc2c9d opt]# basename /opt/banzhang.txt .txt
banzhang
[root@b09ed0cc2c9d opt]#
dirname基本语法
1
dirname 文件绝对路径

从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录部分)

举个栗子
1
2
3
[root@b09ed0cc2c9d opt]# dirname /opt/banzhang.txt
/opt
[root@b09ed0cc2c9d opt]#
自定义函数
基本语法
1
2
3
4
5
6
7
[function] funname[()]
{
Action;
[retion int;]
}

funname
举个栗子
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

function sum()
{
s=0;
s=$[$1+$2]
echo $s
}

read -p "input your paratemer1:" p1
read -p "input your oaeayemer2:" p2

sum $p1 $p2
文章作者: gglss
文章链接: http://example.com/posts/27832.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell函数 | GGLSS

Shell函数

系统函数
basename基本语法
1
basename [string/ pathname][文件后缀] 

basename命令会删掉所有的前缀,只留一个文件名

选项:

如果指定后缀,basename会将pathname或string中的文件后缀去掉

举个栗子

截取该/opt/banzhang.txt路径的文件名称

1
2
3
4
5
[root@b09ed0cc2c9d opt]# basename /opt/banzhang.txt
banzhang.txt
[root@b09ed0cc2c9d opt]# basename /opt/banzhang.txt .txt
banzhang
[root@b09ed0cc2c9d opt]#
dirname基本语法
1
dirname 文件绝对路径

从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录部分)

举个栗子
1
2
3
[root@b09ed0cc2c9d opt]# dirname /opt/banzhang.txt
/opt
[root@b09ed0cc2c9d opt]#
自定义函数
基本语法
1
2
3
4
5
6
7
[function] funname[()]
{
Action;
[retion int;]
}

funname
举个栗子
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

function sum()
{
s=0;
s=$[$1+$2]
echo $s
}

read -p "input your paratemer1:" p1
read -p "input your oaeayemer2:" p2

sum $p1 $p2
文章作者: gglss
文章链接: http://example.com/posts/27832.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/28702.html b/posts/28702.html index 3bff9d5d8..5b2dec598 100644 --- a/posts/28702.html +++ b/posts/28702.html @@ -1 +1 @@ -如何使用pyyaml获取yaml里面的数据 | GGLSS

如何使用pyyaml获取yaml里面的数据

准备数据

在config目录下创建environment.yaml文件

1
2
username: 周杰伦
password: 123456
使用pyyaml获取yaml中的数据
解析yaml文件

首先创建yaml_config文件,为了方便自动化后面的引用,需要创建一个类,在__init__里面打开yaml文件,使用yaml.load(文件名称, Loader=yaml.FullLoader )方法获取数据

打印出字典格式的数据{'username': '周杰伦', 'password': 123456}

1
2
3
4
5
6
7
8
9
import yaml
from common.tools import get_project_path, sep


class GetConf:
def __init__(self):
with open(../config.environment.yaml), "r", encoding="utf-8")\
as env_file:
self.env = yaml.load(env_file, Loader=yaml.FullLoader)

现在使用的是相对路径,后期如果换系统,或者更换文件位置,就需要自己获得文件路径,下面对代码进行优化

优化项:获得项目名称的url地址

创建get_project_path方法,获取项目根目录的绝对路径

首先定义一个变量,变量的值是项目的名称project_name = "trading_system_autotest"

获取当前文件的所在目录的绝对路径,需要使用python的os模块file_path=os.path.dirname(__file__)

在绝对路径中找到项目名称的下标位置file_path.find(project_name)

找到项目所在目录的绝对路径下标+项目名称的长度=项目根目录的绝对路径的下标file_path.find(project_name)+len(project_name)

然后对所在目录的绝对路径file_path进行切片获得项目根目录的绝对路径

file_path[: file_path.find(project_name)+len(project_name)]

1
2
3
4
5
6
7
8
9
10
11
12
13
def get_project_path():
"""
获取项目根目录的绝对路径
:return:
"""
project_name = "trading_system_autotest"
# 获取当前文件的所在目录的绝对路径
file_path = os.path.dirname(__file__)
# # 在绝对路径中找到项目名称的下标位置
# print(file_path.find(project_name))
# 找到项目所在目录的绝对路径+项目名称的长度=项目的绝对路径
# print(len(project_name))
return file_path[: file_path.find(project_name)+len(project_name)]
优化项:获得拼接后的目录和文件

创建sep(path, add_sep_before=False, add_sep_after=False)方法,获得文件和目录的拼接

变量

path变量需要传输一个列表,列表里面是文件所在目录和文件名称,如[文件所在目录,文件名称]

首先使用os.sep.join对列表的字段进行拼接all_path = os.sep.join(path)

add_sep_before进行判断,如果是True,就在前面添加拼接符all_path = os.sep + all_path

add_sep_after进行判断,如果是True,就在后面添加拼接符all_path = all_path + os.sep

windows格式拼接符有可能错误,就要对拼接符转换格式all_path = all_path.replace('\\', '/'),就算没有这个代码,也可以运行出来,只是调试该代码看起来不好看

然后返回all_path

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def sep(path, add_sep_before=False, add_sep_after=False):
"""
:param path: is list format:[Current directory , Current file]
:param add_sep_before: Add before directory "/"
:param add_sep_after: Add after directory "/"
:return: Current directory/Current file
"""
all_path = os.sep.join(path)
# 在前面添加\
if add_sep_before:
all_path = os.sep + all_path
# 在后面添加\
if add_sep_after:
all_path = all_path + os.sep
# 转换格式 把\转换为/
all_path = all_path.replace('\\', '/')
return all_path
优化后的代码
1
2
3
4
5
6
7
8
9
class GetConf:
def __init__(self):
with open(get_project_path()+sep(["config", "environment.yaml"], add_sep_before=True), "r", encoding="utf-8")\
as env_file:
self.env = yaml.load(env_file, Loader=yaml.FullLoader)
print(self.env)

def get_username_password(self):
return self.env["username"], self.env["password"]
文章作者: gglss
文章链接: http://example.com/posts/28702.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +如何使用pyyaml获取yaml里面的数据 | GGLSS

如何使用pyyaml获取yaml里面的数据

准备数据

在config目录下创建environment.yaml文件

1
2
username: 周杰伦
password: 123456
使用pyyaml获取yaml中的数据
解析yaml文件

首先创建yaml_config文件,为了方便自动化后面的引用,需要创建一个类,在__init__里面打开yaml文件,使用yaml.load(文件名称, Loader=yaml.FullLoader )方法获取数据

打印出字典格式的数据{'username': '周杰伦', 'password': 123456}

1
2
3
4
5
6
7
8
9
import yaml
from common.tools import get_project_path, sep


class GetConf:
def __init__(self):
with open(../config.environment.yaml), "r", encoding="utf-8")\
as env_file:
self.env = yaml.load(env_file, Loader=yaml.FullLoader)

现在使用的是相对路径,后期如果换系统,或者更换文件位置,就需要自己获得文件路径,下面对代码进行优化

优化项:获得项目名称的url地址

创建get_project_path方法,获取项目根目录的绝对路径

首先定义一个变量,变量的值是项目的名称project_name = "trading_system_autotest"

获取当前文件的所在目录的绝对路径,需要使用python的os模块file_path=os.path.dirname(__file__)

在绝对路径中找到项目名称的下标位置file_path.find(project_name)

找到项目所在目录的绝对路径下标+项目名称的长度=项目根目录的绝对路径的下标file_path.find(project_name)+len(project_name)

然后对所在目录的绝对路径file_path进行切片获得项目根目录的绝对路径

file_path[: file_path.find(project_name)+len(project_name)]

1
2
3
4
5
6
7
8
9
10
11
12
13
def get_project_path():
"""
获取项目根目录的绝对路径
:return:
"""
project_name = "trading_system_autotest"
# 获取当前文件的所在目录的绝对路径
file_path = os.path.dirname(__file__)
# # 在绝对路径中找到项目名称的下标位置
# print(file_path.find(project_name))
# 找到项目所在目录的绝对路径+项目名称的长度=项目的绝对路径
# print(len(project_name))
return file_path[: file_path.find(project_name)+len(project_name)]
优化项:获得拼接后的目录和文件

创建sep(path, add_sep_before=False, add_sep_after=False)方法,获得文件和目录的拼接

变量

path变量需要传输一个列表,列表里面是文件所在目录和文件名称,如[文件所在目录,文件名称]

首先使用os.sep.join对列表的字段进行拼接all_path = os.sep.join(path)

add_sep_before进行判断,如果是True,就在前面添加拼接符all_path = os.sep + all_path

add_sep_after进行判断,如果是True,就在后面添加拼接符all_path = all_path + os.sep

windows格式拼接符有可能错误,就要对拼接符转换格式all_path = all_path.replace('\\', '/'),就算没有这个代码,也可以运行出来,只是调试该代码看起来不好看

然后返回all_path

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def sep(path, add_sep_before=False, add_sep_after=False):
"""
:param path: is list format:[Current directory , Current file]
:param add_sep_before: Add before directory "/"
:param add_sep_after: Add after directory "/"
:return: Current directory/Current file
"""
all_path = os.sep.join(path)
# 在前面添加\
if add_sep_before:
all_path = os.sep + all_path
# 在后面添加\
if add_sep_after:
all_path = all_path + os.sep
# 转换格式 把\转换为/
all_path = all_path.replace('\\', '/')
return all_path
优化后的代码
1
2
3
4
5
6
7
8
9
class GetConf:
def __init__(self):
with open(get_project_path()+sep(["config", "environment.yaml"], add_sep_before=True), "r", encoding="utf-8")\
as env_file:
self.env = yaml.load(env_file, Loader=yaml.FullLoader)
print(self.env)

def get_username_password(self):
return self.env["username"], self.env["password"]
文章作者: gglss
文章链接: http://example.com/posts/28702.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/28863.html b/posts/28863.html index f141f56c5..16d9ab376 100644 --- a/posts/28863.html +++ b/posts/28863.html @@ -1 +1 @@ -使用moko编写测试接口(无) | GGLSS

使用moko编写测试接口(无)

测试

测试

测试moko


测试

🐱

❄️

文章作者: gglss
文章链接: http://example.com/posts/28863.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写测试接口(无) | GGLSS

使用moko编写测试接口(无)

测试

测试

测试moko


测试

🐱

❄️

文章作者: gglss
文章链接: http://example.com/posts/28863.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/29537.html b/posts/29537.html index fba9cfe81..5369ad45d 100644 --- a/posts/29537.html +++ b/posts/29537.html @@ -1 +1 @@ -随机控制器Random Controller和Random Order Controller | GGLSS

随机控制器Random Controller和Random Order Controller

作用

  • Random Controller:控制器子节点随机运行一个请求
    • lgnore sub-controller blocks:忽略子控制器块
  • Random Order Controller:控制器子节点随机运行全部请求
文章作者: gglss
文章链接: http://example.com/posts/29537.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +随机控制器Random Controller和Random Order Controller | GGLSS

随机控制器Random Controller和Random Order Controller

作用

  • Random Controller:控制器子节点随机运行一个请求
    • lgnore sub-controller blocks:忽略子控制器块
  • Random Order Controller:控制器子节点随机运行全部请求
文章作者: gglss
文章链接: http://example.com/posts/29537.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/31621.html b/posts/31621.html index b9e23280e..698cdf8b2 100644 --- a/posts/31621.html +++ b/posts/31621.html @@ -1 +1 @@ -Yaml的使用 | GGLSS

Yaml的使用

编写字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#字符串
#单行
username: admin
username1: "周杰\n伦" #双引号不转义
username2: '周杰\n伦' ##单引号转义
#多行
william:



william2: |




william3: >



回显的结果是:

1
2
3
4
5
6
{ username: 'admin',
username1: '周杰\n伦',
username2: '周杰\\n伦',
william: '一 二 三',
william2: '一\n二\n三\n',
william3: '一 二 三\n' }
强制转换
1
2
3
forceStr: !!str 123
forceBoll: !!str true
forceInt: !!int "123"

回显的结果是:

1
2
3
forceStr: '123',
forceBoll: 'true',
forceInt: 123 }
编写数组
1
2
3
4
5
6
#数组
myFavourite:
- backaetball
- football

myFavourite2: ["bass","bahddd"]

回显的结果是:

1
2
myFavourite: [ 'backaetball', 'football' ],
myFavourite2: [ 'bass', 'bahddd' ],
编写对象
1
2
3
4
5
6
7
8
#对象
autotest:
username: root
password: root
age: 18
male: true

autotest2: [{username: admin, password: root, age: 22, male: false}]

回显的结果是:

1
2
autotest: { username: 'root', password: 'root', age: 18, male: true },
autotest2: [ { username: 'admin', password: 'root', age: 22, male: false } ],
编写复合结构的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#复合结构
companies:
-
id: 1
name: zhangsan
value: 10e+11

-
id: 2
name: lisi
value: 10e+12


websites:
baidu: www.baidu.com
google: www.google.com

回显的结果是:

1
2
3
4
companies: 
[ { id: 1, name: 'zhangsan', value: 1000000000000 },
{ id: 2, name: 'lisi', value: 10000000000000 } ],
websites: { baidu: 'www.baidu.com', google: 'www.google.com' } }
引用
1
2
3
4
5
6
7
8
#引用
father: &father_lastName
lastName:

son:
<<: *father_lastName
firstName:
age: 18

回显的结果是:

1
2
father: { lastName: '周' },
son: { lastName: '周', firstName: '董', age: 18 } }
文章作者: gglss
文章链接: http://example.com/posts/31621.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Yaml的使用 | GGLSS

Yaml的使用

编写字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#字符串
#单行
username: admin
username1: "周杰\n伦" #双引号不转义
username2: '周杰\n伦' ##单引号转义
#多行
william:



william2: |




william3: >



回显的结果是:

1
2
3
4
5
6
{ username: 'admin',
username1: '周杰\n伦',
username2: '周杰\\n伦',
william: '一 二 三',
william2: '一\n二\n三\n',
william3: '一 二 三\n' }
强制转换
1
2
3
forceStr: !!str 123
forceBoll: !!str true
forceInt: !!int "123"

回显的结果是:

1
2
3
forceStr: '123',
forceBoll: 'true',
forceInt: 123 }
编写数组
1
2
3
4
5
6
#数组
myFavourite:
- backaetball
- football

myFavourite2: ["bass","bahddd"]

回显的结果是:

1
2
myFavourite: [ 'backaetball', 'football' ],
myFavourite2: [ 'bass', 'bahddd' ],
编写对象
1
2
3
4
5
6
7
8
#对象
autotest:
username: root
password: root
age: 18
male: true

autotest2: [{username: admin, password: root, age: 22, male: false}]

回显的结果是:

1
2
autotest: { username: 'root', password: 'root', age: 18, male: true },
autotest2: [ { username: 'admin', password: 'root', age: 22, male: false } ],
编写复合结构的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#复合结构
companies:
-
id: 1
name: zhangsan
value: 10e+11

-
id: 2
name: lisi
value: 10e+12


websites:
baidu: www.baidu.com
google: www.google.com

回显的结果是:

1
2
3
4
companies: 
[ { id: 1, name: 'zhangsan', value: 1000000000000 },
{ id: 2, name: 'lisi', value: 10000000000000 } ],
websites: { baidu: 'www.baidu.com', google: 'www.google.com' } }
引用
1
2
3
4
5
6
7
8
#引用
father: &father_lastName
lastName:

son:
<<: *father_lastName
firstName:
age: 18

回显的结果是:

1
2
father: { lastName: '周' },
son: { lastName: '周', firstName: '董', age: 18 } }
文章作者: gglss
文章链接: http://example.com/posts/31621.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/31868.html b/posts/31868.html index 7cbac813a..b460e576f 100644 --- a/posts/31868.html +++ b/posts/31868.html @@ -1 +1 @@ -逻辑控制器Simple Controller | GGLSS

逻辑控制器Simple Controller

作用

把多个请求放入Simple Controller,可以多个请求进行同时操作

文章作者: gglss
文章链接: http://example.com/posts/31868.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +逻辑控制器Simple Controller | GGLSS

逻辑控制器Simple Controller

作用

把多个请求放入Simple Controller,可以多个请求进行同时操作

文章作者: gglss
文章链接: http://example.com/posts/31868.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/32161.html b/posts/32161.html index 1a05a8c3c..913b3ecbf 100644 --- a/posts/32161.html +++ b/posts/32161.html @@ -1 +1 @@ -使用docker安装常用软件:redis | GGLSS

使用docker安装常用软件:redis

使用docker安装常用软件:redis

使用docker pull redis:6.0.8 拉取redis:6.0.8镜像

创建容器

容器卷要加入--privileged=true

在宿主机下新建目录mkdir -p /app/redis

文章作者: gglss
文章链接: http://example.com/posts/32161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用docker安装常用软件:redis | GGLSS

使用docker安装常用软件:redis

使用docker安装常用软件:redis

使用docker pull redis:6.0.8 拉取redis:6.0.8镜像

创建容器

容器卷要加入--privileged=true

在宿主机下新建目录mkdir -p /app/redis

文章作者: gglss
文章链接: http://example.com/posts/32161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/3219.html b/posts/3219.html index 4d378fa37..dbd037b43 100644 --- a/posts/3219.html +++ b/posts/3219.html @@ -1 +1 @@ -Jmeter之静默压测 | GGLSS

Jmeter之静默压测

静默压测

jmeter -n -t $jmx_file -l $jtl_file

如: jmeter -n -t HTTP代理服务器luzhi.jmx -l result.jtl

jmx: Jmeter压测程序脚本文件
jtl: Jmeter压测请求响应数据的原始文件,查看结果树和聚合报告可以导入该文件查看

文章作者: gglss
文章链接: http://example.com/posts/3219.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Jmeter之静默压测 | GGLSS

Jmeter之静默压测

静默压测

jmeter -n -t $jmx_file -l $jtl_file

如: jmeter -n -t HTTP代理服务器luzhi.jmx -l result.jtl

jmx: Jmeter压测程序脚本文件
jtl: Jmeter压测请求响应数据的原始文件,查看结果树和聚合报告可以导入该文件查看

文章作者: gglss
文章链接: http://example.com/posts/3219.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/32473.html b/posts/32473.html index d3a45cbe5..5f67721e6 100644 --- a/posts/32473.html +++ b/posts/32473.html @@ -1 +1 @@ -性能测试主要关注点 | GGLSS

性能测试主要关注点

性能关注点

接口响应时间

吞吐量

TPS: 事务处理能力,每秒处理事务数(打开页面、登录、选择商品、加入购物车、下单、付款)

注意:“日活” 每日活跃用户数,是运营数据,与性能无关

八二原则

计算QPS/TPS

相信80%会集中在20%时间内,24小时的流量集中在白天8小时内,同时在午高峰达到高峰

举个栗子

根据相应耗时计算公式预估所需并发,一次请求100ms

根据 QPS = Vue * Rt

1000000 * 80% / 8 * 3600 * 20% = 277 QPS

需要27个并发

文章作者: gglss
文章链接: http://example.com/posts/32473.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +性能测试主要关注点 | GGLSS

性能测试主要关注点

性能关注点

接口响应时间

吞吐量

TPS: 事务处理能力,每秒处理事务数(打开页面、登录、选择商品、加入购物车、下单、付款)

注意:“日活” 每日活跃用户数,是运营数据,与性能无关

八二原则

计算QPS/TPS

相信80%会集中在20%时间内,24小时的流量集中在白天8小时内,同时在午高峰达到高峰

举个栗子

根据相应耗时计算公式预估所需并发,一次请求100ms

根据 QPS = Vue * Rt

1000000 * 80% / 8 * 3600 * 20% = 277 QPS

需要27个并发

文章作者: gglss
文章链接: http://example.com/posts/32473.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/34250.html b/posts/34250.html index 8e8a02e14..673ecc481 100644 --- a/posts/34250.html +++ b/posts/34250.html @@ -1 +1 @@ -Modeule Controller和Include Controller | GGLSS

Modeule Controller和Include Controller

Modeule Controller介绍

文章作者: gglss
文章链接: http://example.com/posts/34250.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Modeule Controller和Include Controller | GGLSS

Modeule Controller和Include Controller

Modeule Controller介绍

文章作者: gglss
文章链接: http://example.com/posts/34250.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/34655.html b/posts/34655.html index 5c010dd99..d0b7a478f 100644 --- a/posts/34655.html +++ b/posts/34655.html @@ -1 +1 @@ -抽象类与接口 | GGLSS

抽象类与接口

抽象类

使用abstract修饰一个类,把这个类变成抽象类,抽象类不能直接创建对象,需要其他类进行继承该抽象类

  • 抽象方法不能有方法体
  • 抽象方法必须使用abstract进行修饰,不能有方法体
  • 子类必须实现父抽象类的方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public abstract class Ahsse {
    String name;
    int age;

    //普通方法
    public String aaa(){
    return name;
    };
    // 抽象方法
    public abstract String bbb();
    }

    class sss extends Ahsse{

    @Override
    public String bbb() {
    System.out.println("实现抽象类的抽象方法");
    return "ces ";
    }
    }

接口

使用interface定义接口,相当于class

  • 接口可以多继承
  • 变量全部默认使用public static final修饰,使用之前必须赋值
  • 类里面全部是抽象方法(默认使用public abstract修饰,没有方法体)需要被实现类进行实现
  • 接口可以被多实现–implements
文章作者: gglss
文章链接: http://example.com/posts/34655.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +抽象类与接口 | GGLSS

抽象类与接口

抽象类

使用abstract修饰一个类,把这个类变成抽象类,抽象类不能直接创建对象,需要其他类进行继承该抽象类

  • 抽象方法不能有方法体
  • 抽象方法必须使用abstract进行修饰,不能有方法体
  • 子类必须实现父抽象类的方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public abstract class Ahsse {
    String name;
    int age;

    //普通方法
    public String aaa(){
    return name;
    };
    // 抽象方法
    public abstract String bbb();
    }

    class sss extends Ahsse{

    @Override
    public String bbb() {
    System.out.println("实现抽象类的抽象方法");
    return "ces ";
    }
    }

接口

使用interface定义接口,相当于class

  • 接口可以多继承
  • 变量全部默认使用public static final修饰,使用之前必须赋值
  • 类里面全部是抽象方法(默认使用public abstract修饰,没有方法体)需要被实现类进行实现
  • 接口可以被多实现–implements
文章作者: gglss
文章链接: http://example.com/posts/34655.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/36554.html b/posts/36554.html index edf024ac9..a6ae79ddc 100644 --- a/posts/36554.html +++ b/posts/36554.html @@ -1 +1 @@ -_3主3从的`Redis集群`搭建(下) | GGLSS

_3主3从的`Redis集群`搭建(下)

_3主3从的Redis集群搭建(下)

进入主机6381

redis-cli -p 6381

查看集群信息

cluster info

查看主机和从机之间的主从关系

cluster nodes

image-20220509101455220

文章作者: gglss
文章链接: http://example.com/posts/36554.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +_3主3从的`Redis集群`搭建(下) | GGLSS

_3主3从的`Redis集群`搭建(下)

_3主3从的Redis集群搭建(下)

进入主机6381

redis-cli -p 6381

查看集群信息

cluster info

查看主机和从机之间的主从关系

cluster nodes

image-20220509101455220

文章作者: gglss
文章链接: http://example.com/posts/36554.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/37984.html b/posts/37984.html index d0d304f9d..63feb4f2a 100644 --- a/posts/37984.html +++ b/posts/37984.html @@ -1 +1 @@ -使用moko编写测试接口(一) | GGLSS

使用moko编写测试接口(一)

编写规则

  • []包裹着以{}包起来的接口脚本

  • description:接口简介

  • request:使用{}包含接口的请求信息

    • uri:接口的地址名称
    • method:请求方法
    • queries:get请求参数
    • forms:post请求参数
    • headers:请求头信息
  • response:返回的数据,使用{}

    • text:返回的文字数据
    • cookies:返回的cookie信息
    • status:返回的响应码

举个栗子demo

1
2
3
4
5
6
7
8
9
10
11
[
{
"description": "这是我们的第一个mock栗子",
"request": {
"uri": "/demo"
},
"response": {
"text": "第一个mock响应demo"
}
}
]

get请求demo

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"description": "接口的get请求",
"request": {
"uri": "/#/test/xml",
"method": "get"
},
"response": {
"text": "get请求接口"
}
}
]
文章作者: gglss
文章链接: http://example.com/posts/37984.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写测试接口(一) | GGLSS

使用moko编写测试接口(一)

编写规则

  • []包裹着以{}包起来的接口脚本

  • description:接口简介

  • request:使用{}包含接口的请求信息

    • uri:接口的地址名称
    • method:请求方法
    • queries:get请求参数
    • forms:post请求参数
    • headers:请求头信息
  • response:返回的数据,使用{}

    • text:返回的文字数据
    • cookies:返回的cookie信息
    • status:返回的响应码

举个栗子demo

1
2
3
4
5
6
7
8
9
10
11
[
{
"description": "这是我们的第一个mock栗子",
"request": {
"uri": "/demo"
},
"response": {
"text": "第一个mock响应demo"
}
}
]

get请求demo

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"description": "接口的get请求",
"request": {
"uri": "/#/test/xml",
"method": "get"
},
"response": {
"text": "get请求接口"
}
}
]
文章作者: gglss
文章链接: http://example.com/posts/37984.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/38168.html b/posts/38168.html index 270a323af..44c4a2322 100644 --- a/posts/38168.html +++ b/posts/38168.html @@ -1 +1 @@ -Shell脚本初探 | GGLSS

Shell脚本初探

编写shell脚本时,必须以 #! /bin/bash 开头

在linux创建helloworld.sh文件,在文件内输入:

1
2
3
#!/bin/bash
#################
echo "hello World"

然后保存该文件

运行.sh文件时,有两种方法可以运行

第一种是给该文件添加可执行权限
1
chmod +x ./helloworld.sh

运行文件:./ 不能省略

1
./helloworld.sh
第二种是使用bash或sh 文件路径运行该文件
1
2
3
bash helloworld.sh
#
sh helloworld.sh
文章作者: gglss
文章链接: http://example.com/posts/38168.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell脚本初探 | GGLSS

Shell脚本初探

编写shell脚本时,必须以 #! /bin/bash 开头

在linux创建helloworld.sh文件,在文件内输入:

1
2
3
#!/bin/bash
#################
echo "hello World"

然后保存该文件

运行.sh文件时,有两种方法可以运行

第一种是给该文件添加可执行权限
1
chmod +x ./helloworld.sh

运行文件:./ 不能省略

1
./helloworld.sh
第二种是使用bash或sh 文件路径运行该文件
1
2
3
bash helloworld.sh
#
sh helloworld.sh
文章作者: gglss
文章链接: http://example.com/posts/38168.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/40953.html b/posts/40953.html index a83e99475..7e77347d9 100644 --- a/posts/40953.html +++ b/posts/40953.html @@ -1 +1 @@ -Gaussian Random Timer定时器 | GGLSS

Gaussian Random Timer定时器

作用

生成随机等待时间

参数

  • Deviation(in milliseconds) :高斯定时器参数,随机的
  • Constant Delay Offset(in milliseconds):固定等待时长

生成的时长是Deviation + Constant Delay Offset

文章作者: gglss
文章链接: http://example.com/posts/40953.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Gaussian Random Timer定时器 | GGLSS

Gaussian Random Timer定时器

作用

生成随机等待时间

参数

  • Deviation(in milliseconds) :高斯定时器参数,随机的
  • Constant Delay Offset(in milliseconds):固定等待时长

生成的时长是Deviation + Constant Delay Offset

文章作者: gglss
文章链接: http://example.com/posts/40953.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/41091.html b/posts/41091.html index 0738c56dd..6b66dfb9d 100644 --- a/posts/41091.html +++ b/posts/41091.html @@ -1 +1 @@ -Shell脚本入门 | GGLSS

Shell脚本入门

创建txt文件并向txt文件追加数据

首先创建test_shell.sh文件

1
touch test_shell.sh

test_shell.sh文件输入shell脚本

  • 使用shell创建banzhang.txt文件

  • 在文件中追加数据echo "aabbccdd" >> banzhang.txt

1
2
3
4
5
6
7
#!/bin/bash
# 指定目录
cd /opt/
# 创建文件
touch banzhang.txt
# 向文件追加数据
echo "touch banzhang" >> banzhang.txt
文章作者: gglss
文章链接: http://example.com/posts/41091.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell脚本入门 | GGLSS

Shell脚本入门

创建txt文件并向txt文件追加数据

首先创建test_shell.sh文件

1
touch test_shell.sh

test_shell.sh文件输入shell脚本

  • 使用shell创建banzhang.txt文件

  • 在文件中追加数据echo "aabbccdd" >> banzhang.txt

1
2
3
4
5
6
7
#!/bin/bash
# 指定目录
cd /opt/
# 创建文件
touch banzhang.txt
# 向文件追加数据
echo "touch banzhang" >> banzhang.txt
文章作者: gglss
文章链接: http://example.com/posts/41091.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/42012.html b/posts/42012.html index 429ea922b..cae72f4ec 100644 --- a/posts/42012.html +++ b/posts/42012.html @@ -1 +1 @@ -使用moko编写测试接口(五) | GGLSS

使用moko编写测试接口(五)

下载jar包

点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

使用命令启动测试脚本

1
java -jar jar包的存放路径 http -p 端口 -c json文件路径
文章作者: gglss
文章链接: http://example.com/posts/42012.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写测试接口(五) | GGLSS

使用moko编写测试接口(五)

下载jar包

点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

使用命令启动测试脚本

1
java -jar jar包的存放路径 http -p 端口 -c json文件路径
文章作者: gglss
文章链接: http://example.com/posts/42012.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/42075.html b/posts/42075.html index 9a59f5801..75799d638 100644 --- a/posts/42075.html +++ b/posts/42075.html @@ -1 +1 @@ -开发获得cookie的Post登录接口 | GGLSS

开发获得cookie的Post登录接口

开发获得cookie的Post登录接口

@RequestMapping(value = "/v1")的作用是把这个value和方法上的登录地址进行拼接,比如:/v1/login

@RestController标识该接口可以被托管

方法参数@RequestParam(value = "userName", required = true) String userName,代码中的required = true起到必填的作用

举个栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RestController
@Api(value = "/", tags = {SwaggerConfig.TagPost})
@RequestMapping(value = "/v1")
public class MyPostMethod {

//这个变量用来装cookie信息的
private static Cookie cookie;

//用户登录成功获取到cookies,然后访问其他接口获取到列表
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ApiOperation(value = "登录接口,成功后获取到cookies信息",httpMethod = "POST")
public String login(HttpServletResponse response,
@RequestParam(value = "userName", required = true) String userName,
@RequestParam(value = "password", required = true) String password){
if (userName.equals("zhangsan") && password.equals("123456")){
cookie = new Cookie("login","true");
response.addCookie(cookie);
return "恭喜你登录成功!";
}
return "用户名或密码错误!";

}
文章作者: gglss
文章链接: http://example.com/posts/42075.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +开发获得cookie的Post登录接口 | GGLSS

开发获得cookie的Post登录接口

开发获得cookie的Post登录接口

@RequestMapping(value = "/v1")的作用是把这个value和方法上的登录地址进行拼接,比如:/v1/login

@RestController标识该接口可以被托管

方法参数@RequestParam(value = "userName", required = true) String userName,代码中的required = true起到必填的作用

举个栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@RestController
@Api(value = "/", tags = {SwaggerConfig.TagPost})
@RequestMapping(value = "/v1")
public class MyPostMethod {

//这个变量用来装cookie信息的
private static Cookie cookie;

//用户登录成功获取到cookies,然后访问其他接口获取到列表
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ApiOperation(value = "登录接口,成功后获取到cookies信息",httpMethod = "POST")
public String login(HttpServletResponse response,
@RequestParam(value = "userName", required = true) String userName,
@RequestParam(value = "password", required = true) String password){
if (userName.equals("zhangsan") && password.equals("123456")){
cookie = new Cookie("login","true");
response.addCookie(cookie);
return "恭喜你登录成功!";
}
return "用户名或密码错误!";

}
文章作者: gglss
文章链接: http://example.com/posts/42075.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/42174.html b/posts/42174.html index dca2b3d1d..192ac5d29 100644 --- a/posts/42174.html +++ b/posts/42174.html @@ -1,4 +1,4 @@ -解析ini文件用于数据驱动 | GGLSS

解析ini文件用于数据驱动

背景

  • PO设计模式是selenum自动化测试中比较好的设计模式
  • 在项目的开发过程中,UI界面上的元素不确定,会经常变化

过程解析

  • 在PyCharm创建ini文件
  • 创建一个可以解析ini文件的python模块(parse_ini)
  • 其他模块引用parse_ini文件里面的方法把ini文件解析出来

创建ini文件

image

创建parse_ini模块

import configparser
+解析ini文件用于数据驱动 | GGLSS

解析ini文件用于数据驱动

背景

  • PO设计模式是selenum自动化测试中比较好的设计模式
  • 在项目的开发过程中,UI界面上的元素不确定,会经常变化

过程解析

  • 在PyCharm创建ini文件
  • 创建一个可以解析ini文件的python模块(parse_ini)
  • 其他模块引用parse_ini文件里面的方法把ini文件解析出来

创建ini文件

image

创建parse_ini模块

import configparser
 
 class Parse_Ini(object):
 
@@ -36,4 +36,4 @@
 
 if __name__ == "__init__":
     pass
-

举个栗子:

栗子1

image

运行结果:

image

栗子2

image

运行结果:

image

文章作者: gglss
文章链接: http://example.com/posts/42174.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +

举个栗子:

栗子1

image

运行结果:

image

栗子2

image

运行结果:

image

文章作者: gglss
文章链接: http://example.com/posts/42174.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/42395.html b/posts/42395.html index c27fcfb3d..d7ab0695d 100644 --- a/posts/42395.html +++ b/posts/42395.html @@ -1 +1 @@ -本地镜像发布到私有库 | GGLSS

本地镜像发布到私有库

本地镜像发布到私有库

步骤

  • 下载Docker Registry
1
docker pull registry
  • 运行私有库 Registry,相当于本地有Docker Registry
1
docker run -d -p 5000:5000 -v/ggls/myregistry/:/tmp/registry --privileged=true registry
  • 新启动ubuntu容器,新增ifconfig命令

    • ​ 进入容器中输入apt-get update命令
    • ​ 输入apt-get install net-tools命令
    • xxxxxxxxxx [root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker psCONTAINER ID   IMAGE               COMMAND   CREATED       STATUS       PORTS     NAMES356e32244966   mytest/ubuntu:3.5   “bash”    2 hours ago   Up 2 hours             elated_aryabhata[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m=”vim cmd add ok” -a=”ggls” 356e32244966 ggls/ubuntu:1.5sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker imagesREPOSITORY     TAG       IMAGE ID       CREATED         SIZEggls/ubuntu     1.5       87e99e19eeef   7 seconds ago   176MBmytest/ubuntu   3.5       a92a27affdde   2 hours ago     72.8MBtomcat          9.0       b8e65a4d736d   4 months ago   680MBubuntu         latest   ba6acccedd29   6 months ago    72.8MBredis           6.0.8     16ecd2772934   18 months ago   104MB[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# shell
  • 容器外部执行docker commit -m="ifconfig cmd add" -a="ggls" ffcc5edf5071 ubuntu:1.6命令

  • curl验证私服库上有什么镜像

1
curl -XGET http://8.142.144.75:5000/v2/_catalog
  • 将新镜像修改为符合私服库格式的镜像
1
2
3
docker tag 镜像:Tag Host:Port/Repository:Tag
#
docker tag ubuntu:1.6 8.142.144.75:5000/ubuntu:1.3
  • 修改配置文件使之支持http

    docker 默认不允许http方式推送镜像,通过此配置取消这个限制,若不生效,重启docker

    • 使用命令vim /etc/docker/daemon.json打开配置文件
    • 在阿里云加速后面新增一个json
    1
    2
    3
    4
    {
    "registry-mirrors": ["https://qp747t9w.mirror.aliyuncs.com"],
    "insecure-registries": ["8.142.144.75:5000"]
    }
    • 重启docker,重启docker私服仓库
  • push推送到私服库

1
docker push 符合私服库格式的镜像名称:tag
  • curl验证私服库上有什么镜像
  • pull到本地并运行
1
docker pull 8.142.144.75:5000/ubuntu:1.6
文章作者: gglss
文章链接: http://example.com/posts/42395.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +本地镜像发布到私有库 | GGLSS

本地镜像发布到私有库

本地镜像发布到私有库

步骤

  • 下载Docker Registry
1
docker pull registry
  • 运行私有库 Registry,相当于本地有Docker Registry
1
docker run -d -p 5000:5000 -v/ggls/myregistry/:/tmp/registry --privileged=true registry
  • 新启动ubuntu容器,新增ifconfig命令

    • ​ 进入容器中输入apt-get update命令
    • ​ 输入apt-get install net-tools命令
    • xxxxxxxxxx [root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker psCONTAINER ID   IMAGE               COMMAND   CREATED       STATUS       PORTS     NAMES356e32244966   mytest/ubuntu:3.5   “bash”    2 hours ago   Up 2 hours             elated_aryabhata[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m=”vim cmd add ok” -a=”ggls” 356e32244966 ggls/ubuntu:1.5sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker imagesREPOSITORY     TAG       IMAGE ID       CREATED         SIZEggls/ubuntu     1.5       87e99e19eeef   7 seconds ago   176MBmytest/ubuntu   3.5       a92a27affdde   2 hours ago     72.8MBtomcat          9.0       b8e65a4d736d   4 months ago   680MBubuntu         latest   ba6acccedd29   6 months ago    72.8MBredis           6.0.8     16ecd2772934   18 months ago   104MB[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# shell
  • 容器外部执行docker commit -m="ifconfig cmd add" -a="ggls" ffcc5edf5071 ubuntu:1.6命令

  • curl验证私服库上有什么镜像

1
curl -XGET http://8.142.144.75:5000/v2/_catalog
  • 将新镜像修改为符合私服库格式的镜像
1
2
3
docker tag 镜像:Tag Host:Port/Repository:Tag
#
docker tag ubuntu:1.6 8.142.144.75:5000/ubuntu:1.3
  • 修改配置文件使之支持http

    docker 默认不允许http方式推送镜像,通过此配置取消这个限制,若不生效,重启docker

    • 使用命令vim /etc/docker/daemon.json打开配置文件
    • 在阿里云加速后面新增一个json
    1
    2
    3
    4
    {
    "registry-mirrors": ["https://qp747t9w.mirror.aliyuncs.com"],
    "insecure-registries": ["8.142.144.75:5000"]
    }
    • 重启docker,重启docker私服仓库
  • push推送到私服库

1
docker push 符合私服库格式的镜像名称:tag
  • curl验证私服库上有什么镜像
  • pull到本地并运行
1
docker pull 8.142.144.75:5000/ubuntu:1.6
文章作者: gglss
文章链接: http://example.com/posts/42395.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/42656.html b/posts/42656.html index c6aba244d..52c245b3e 100644 --- a/posts/42656.html +++ b/posts/42656.html @@ -1 +1 @@ -_mysql主从复制docker版 | GGLSS

_mysql主从复制docker版

_mysql主从复制docker版

安装mysql主从复制(一主一从)

新建主服务器容器实例3307

1
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log/:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

进入/mydata/mysql-master/conf目录下新建my.cnf把下面内容粘贴到my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

修改完配置后重启master容器

master容器实例内创建数据同步用户

1
2
3
4
# 建立一个用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 对新建的用户进行授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

新建从服务器实例3308

1
docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log/:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

进入/mydata/mysql-slave/conf目录下新建my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

重启从机实例docker restart mysql-slave

在主数据库中查看主从同步状态show master status;

进入mysql-slave从机容器

在从数据库中配置主从复制change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

1
2
3
4
5
6
7
8
# 说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。

在从数据库中查看主从同步状态show slave status \G;

在从数据库中开启主从同步start slave

查看从数据库状态发现已经同步

主从复制测试

主机创建数据库,创建表,插入数据,搜索表的数据

从机直接搜索标的数据

文章作者: gglss
文章链接: http://example.com/posts/42656.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +_mysql主从复制docker版 | GGLSS

_mysql主从复制docker版

_mysql主从复制docker版

安装mysql主从复制(一主一从)

新建主服务器容器实例3307

1
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log/:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

进入/mydata/mysql-master/conf目录下新建my.cnf把下面内容粘贴到my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

修改完配置后重启master容器

master容器实例内创建数据同步用户

1
2
3
4
# 建立一个用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 对新建的用户进行授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

新建从服务器实例3308

1
docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log/:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

进入/mydata/mysql-slave/conf目录下新建my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

重启从机实例docker restart mysql-slave

在主数据库中查看主从同步状态show master status;

进入mysql-slave从机容器

在从数据库中配置主从复制change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

1
2
3
4
5
6
7
8
# 说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。

在从数据库中查看主从同步状态show slave status \G;

在从数据库中开启主从同步start slave

查看从数据库状态发现已经同步

主从复制测试

主机创建数据库,创建表,插入数据,搜索表的数据

从机直接搜索标的数据

文章作者: gglss
文章链接: http://example.com/posts/42656.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/43612.html b/posts/43612.html index 8a0b5fd27..300a2d325 100644 --- a/posts/43612.html +++ b/posts/43612.html @@ -1 +1 @@ -关闭chrome浏览器自动更新 | GGLSS

关闭chrome浏览器自动更新

屏蔽谷歌的更新服务器

1
修改 "C:\Windows\System32\drivers\etc\host 文件,在最后增加

修改C:\Windows\System32\drivers\etc\hosts文件,在最后增加

1
127.0.0.1 update.googleapis.com

保存后win+r,输入CMD,输入ipconfig /flushdns刷新DNS

然后重启浏览器

文章作者: gglss
文章链接: http://example.com/posts/43612.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +关闭chrome浏览器自动更新 | GGLSS

关闭chrome浏览器自动更新

屏蔽谷歌的更新服务器

1
修改 "C:\Windows\System32\drivers\etc\host 文件,在最后增加

修改C:\Windows\System32\drivers\etc\hosts文件,在最后增加

1
127.0.0.1 update.googleapis.com

保存后win+r,输入CMD,输入ipconfig /flushdns刷新DNS

然后重启浏览器

文章作者: gglss
文章链接: http://example.com/posts/43612.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/43613.html b/posts/43613.html index 2e3cba059..147ddf341 100644 --- a/posts/43613.html +++ b/posts/43613.html @@ -1 +1 @@ -自动化基础之Xpath定位 | GGLSS

自动化基础之Xpath定位

常用函数定位
定位函数position
//*contains(text(),’文字’)/li[position()=3]找到第三个 li
//*contains(text(),’文字’)/li[position()<=2]找到前两个 li
Xpath函数进行定位
定位方式描述实例
contains匹配在元素文本中查找包含 ‘文字’ 的元素//*contains(text(),’文字’)
starts-with匹配所有id开头为 ‘s’ 的元素//*[starts-with(@id,’s’)]
ends-with匹配所有id结尾头为 ‘s’ 的元素//*[ends-with(@id,”s”)]
following-sibling匹配和 ‘ul’ 元素同级别的下一个元素//div/following-sibling::ul
preceding-sibling匹配当前节点之前的所有同级节点
ancestor匹配当前节点的所有父级,祖父级还有更高级//div/ancestor::li[@role=”menuitem”]
parent匹配当前节点的父节点,相当于 ..//div/parent::button
文章作者: gglss
文章链接: http://example.com/posts/43613.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +自动化基础之Xpath定位 | GGLSS

自动化基础之Xpath定位

常用函数定位
定位函数position
//*contains(text(),’文字’)/li[position()=3]找到第三个 li
//*contains(text(),’文字’)/li[position()<=2]找到前两个 li
Xpath函数进行定位
定位方式描述实例
contains匹配在元素文本中查找包含 ‘文字’ 的元素//*contains(text(),’文字’)
starts-with匹配所有id开头为 ‘s’ 的元素//*[starts-with(@id,’s’)]
ends-with匹配所有id结尾头为 ‘s’ 的元素//*[ends-with(@id,”s”)]
following-sibling匹配和 ‘ul’ 元素同级别的下一个元素//div/following-sibling::ul
preceding-sibling匹配当前节点之前的所有同级节点
ancestor匹配当前节点的所有父级,祖父级还有更高级//div/ancestor::li[@role=”menuitem”]
parent匹配当前节点的父节点,相当于 ..//div/parent::button
文章作者: gglss
文章链接: http://example.com/posts/43613.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/44160.html b/posts/44160.html index 055e01f88..7eb5184f3 100644 --- a/posts/44160.html +++ b/posts/44160.html @@ -1 +1 @@ -english one | GGLSS

english one

记录的目的

想学习英语,目前的一个目标也可能是因为考研吧,在学校的时候专升本考试真是没有重视,导致面临了这个一个尴尬的局面(当时考虑的是学历不重要,结果刚出学校社会就给出一个巴掌),还是要有一个学历,英语在工作中也是要使用的,加油!

学习进程

目前在使用不背单词软件背单词,但是心里总想偷懒,特意做记录一下,学习长难句也会在这个博客上进行记录

原文

Curbs on business-method claims would be a dramatic about-face, because it was the

Federal Circuit itself that introduced such patents with its 1998 decision in the so-called

State Street Bank case, approving a patent on a way of pooling mutual-fund assets.

【2010英语一Text2】

分析过程

  1. 找动词
  2. 划分主从句
  3. 进行翻译

curb:控制

about-face (about turn):重大转变

business-method:商业方法

claim:声称、要求拥有

dramatic:戏剧化的、喜剧的

patent:专利,专利权

circuit:环行、电路、巡回

文章作者: gglss
文章链接: http://example.com/posts/44160.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +english one | GGLSS

english one

记录的目的

想学习英语,目前的一个目标也可能是因为考研吧,在学校的时候专升本考试真是没有重视,导致面临了这个一个尴尬的局面(当时考虑的是学历不重要,结果刚出学校社会就给出一个巴掌),还是要有一个学历,英语在工作中也是要使用的,加油!

学习进程

目前在使用不背单词软件背单词,但是心里总想偷懒,特意做记录一下,学习长难句也会在这个博客上进行记录

原文

Curbs on business-method claims would be a dramatic about-face, because it was the

Federal Circuit itself that introduced such patents with its 1998 decision in the so-called

State Street Bank case, approving a patent on a way of pooling mutual-fund assets.

【2010英语一Text2】

分析过程

  1. 找动词
  2. 划分主从句
  3. 进行翻译

curb:控制

about-face (about turn):重大转变

business-method:商业方法

claim:声称、要求拥有

dramatic:戏剧化的、喜剧的

patent:专利,专利权

circuit:环行、电路、巡回

文章作者: gglss
文章链接: http://example.com/posts/44160.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/44161.html b/posts/44161.html index e35163025..ad604ab12 100644 --- a/posts/44161.html +++ b/posts/44161.html @@ -1 +1 @@ -2023立的flag | GGLSS

2023立的flag

目前所拥有的进度

  • 考研恋练有词必背词全部背锅一边

  • 自动化测试已部署

文章作者: gglss
文章链接: http://example.com/posts/44161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +2023立的flag | GGLSS

2023立的flag

目前所拥有的进度

  • 考研恋练有词必背词全部背锅一边

  • 自动化测试已部署

文章作者: gglss
文章链接: http://example.com/posts/44161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/45938.html b/posts/45938.html index 60b05eb69..20ca161d4 100644 --- a/posts/45938.html +++ b/posts/45938.html @@ -1 +1 @@ -Butterfly美化记录二 | GGLSS

Butterfly美化记录二

侧边栏分类归档美化

修改 aside_archives文件

打开 [you_blog]\themes\butterfly\scripts\helpers\aside_archives.js 修改第 92 行左右。

1
2
3
4
5
6
7
8
9
10
result += transform ? transform(item.name) : item.name
result += '</span>'

if (showCount) {
- result += `<span class="card-archive-list-count">${item.count}</span>`
+ result += `<div class="card-archive-list-count-group"><span class="card-archive-list-count">${item.count}</span><span>篇</span></div>`
}
result += '</a>'
result += '</li>'

增加css

在自定义[blogRoot]/self/css/meihua.css文件中添加如下代码:

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
/* 侧栏归档样式start */
span.card-archive-list-count {
width: auto;
text-align: left;
font-size: 1.5rem;
line-height: 0.9;
font-weight: 700;
}
.card-archive-list-count-group {
display: flex;
flex-direction: row;
align-items: baseline;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a span:last-child,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a span:last-child {
width: fit-content;
margin-left: 4px;
}
span.card-archive-list-count {
width: auto;
text-align: left;
font-size: 1.1rem;
line-height: 0.9;
font-weight: 700;
}
.card-archive-list-date {
font-size: 14px;
opacity: 0.6;
}
li.card-category-list-item {
flex: 0 0 31%;
}
li.card-archive-list-item {
flex: 0 0 48%;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:hover,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:hover {
color: #fff;
/* background-color: #3b70fc; */
background-color: #49B1F5; /*侧边栏的鼠标悬浮颜色*/
box-shadow: 0 8px 12px -3px #4259ef23;
border-radius: 8px;
padding-left: 0.5rem;
padding-right: 0.5rem;
}
@media screen and (min-width: 1300px) {
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:hover,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:hover {
transform: scale(1.03);
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:active,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:active {
transform: scale(0.97);
}
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a {
border-radius: 8px;
margin: 4px 0;
display: flex;
flex-direction: column;
align-content: space-between;
border: 1px solid #e3e8f7;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a span:first-child,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a span:first-child {
width: auto;
flex: inherit;
}
#aside-content .card-archives ul.card-archive-list,
#aside-content .card-categories ul.card-category-list {
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
}
/* 侧栏归档样式end */

添加夜间模式的转换动画

转自雷雷屋头

新建 sun_moon.pug

[you_blog]\themes\butterfly\layout\includes\custom\ 文件夹下,新建 sun_moon.pug 文件

1
2
3
4
5
6
7
8
9
10
11
svg(aria-hidden='true', style='position:absolute; overflow:hidden; width:0; height:0')
symbol#icon-sun(viewBox='0 0 1024 1024')
path(d='M960 512l-128 128v192h-192l-128 128-128-128H192v-192l-128-128 128-128V192h192l128-128 128 128h192v192z', fill='#FFD878', p-id='8420')
path(d='M736 512a224 224 0 1 0-448 0 224 224 0 1 0 448 0z', fill='#FFE4A9', p-id='8421')
path(d='M512 109.248L626.752 224H800v173.248L914.752 512 800 626.752V800h-173.248L512 914.752 397.248 800H224v-173.248L109.248 512 224 397.248V224h173.248L512 109.248M512 64l-128 128H192v192l-128 128 128 128v192h192l128 128 128-128h192v-192l128-128-128-128V192h-192l-128-128z', fill='#4D5152', p-id='8422')
path(d='M512 320c105.888 0 192 86.112 192 192s-86.112 192-192 192-192-86.112-192-192 86.112-192 192-192m0-32a224 224 0 1 0 0 448 224 224 0 0 0 0-448z', fill='#4D5152', p-id='8423')
symbol#icon-moon(viewBox='0 0 1024 1024')
path(d='M611.370667 167.082667a445.013333 445.013333 0 0 1-38.4 161.834666 477.824 477.824 0 0 1-244.736 244.394667 445.141333 445.141333 0 0 1-161.109334 38.058667 85.077333 85.077333 0 0 0-65.066666 135.722666A462.08 462.08 0 1 0 747.093333 102.058667a85.077333 85.077333 0 0 0-135.722666 65.024z', fill='#FFB531', p-id='11345')
path(d='M329.728 274.133333l35.157333-35.157333a21.333333 21.333333 0 1 0-30.165333-30.165333l-35.157333 35.157333-35.114667-35.157333a21.333333 21.333333 0 0 0-30.165333 30.165333l35.114666 35.157333-35.114666 35.157334a21.333333 21.333333 0 1 0 30.165333 30.165333l35.114667-35.157333 35.157333 35.157333a21.333333 21.333333 0 1 0 30.165333-30.165333z', fill='#030835', p-id='11346')


新建css

[blogRoot]/self/css/新建sun_moon.css,增加下面的代码

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
/* 白天夜晚切换动画start */
.Cuteen_DarkSky, .Cuteen_DarkSky:before {
content: '';
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 88888888;
}
.Cuteen_DarkSky {
background: linear-gradient(#feb8b0, #fef9db);
}
.Cuteen_DarkSky:before {
transition: 2s ease all;
opacity: 0;
background: linear-gradient(#4c3f6d, #6c62bb, #93b1ed);
}
.DarkMode .Cuteen_DarkSky:before {
opacity: 1;
}
.Cuteen_DarkPlanet {
z-index: 99999999;
position: fixed;
left: -50%;
top: -50%;
width: 200%;
height: 200%;
-webkit-animation: CuteenPlanetMove 2s cubic-bezier(0.7, 0, 0, 1);
animation: CuteenPlanetMove 2s cubic-bezier(0.7, 0, 0, 1);
transform-origin: center bottom;
}
@-webkit-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
.Cuteen_DarkPlanet:after {
position: absolute;
left: 35%;
top: 40%;
width: 9.375rem;
height: 9.375rem;
border-radius: 50%;
content: '';
background: linear-gradient(#fefefe, #fffbe8);
}
.search span {
display: none;
}
.menus_item a {
text-decoration: none !important;
}
.icon-V {
padding: 5px;
}
@-moz-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@-webkit-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@-o-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
/* 白天夜晚切换动画end */


新建js

[blogRoot]/self/js/新建`sun_moon.js,增加下面的代码

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
// 白天夜晚切换动画start
function switchNightMode() {
document.querySelector('body').insertAdjacentHTML('beforeend', '<div class="Cuteen_DarkSky"><div class="Cuteen_DarkPlanet"></div></div>'),
setTimeout(function() {
document.querySelector('body').classList.contains('DarkMode') ? (document.querySelector('body').classList.remove('DarkMode'), localStorage.setItem('isDark', '0'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-moon')) : (document.querySelector('body').classList.add('DarkMode'), localStorage.setItem('isDark', '1'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-sun')),
setTimeout(function() {
document.getElementsByClassName('Cuteen_DarkSky')[0].style.transition = 'opacity 3s';
document.getElementsByClassName('Cuteen_DarkSky')[0].style.opacity = '0';
setTimeout(function() {
document.getElementsByClassName('Cuteen_DarkSky')[0].remove();
}, 1e3);
}, 2e3)
})
const nowMode = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'
if (nowMode === 'light') {
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
document.getElementById('modeicon').setAttribute('xlink:href', '#icon-sun')
} else {
activateLightMode()
saveToLocal.set('theme', 'light', 2)
document.querySelector('body').classList.add('DarkMode'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-moon')
}
// handle some cases
typeof utterancesTheme === 'function' && utterancesTheme()
typeof FB === 'object' && window.loadFBComment()
window.DISQUS && document.getElementById('disqus_thread').children.length && setTimeout(() => window.disqusReset(), 200)
}
// 白天夜晚切换动画end


引用 sun_moon.pug

修改 [you_blog]\themes\butterfly\layout\includes\head.pug, 在文件末位增加以下代码:

1
2
3
4
5
6
7
8
9
10
11
  //- global config
!=partial('includes/head/config', {}, {cache: true})

include ./head/config_site.pug
include ./head/noscript.pug

!=fragment_cache('injectHeadJs', function(){return inject_head_js()})

!=fragment_cache('injectHead', function(){return injectHtml(theme.inject.head)})
+ include ./custom/sun_moon.pug

替换昼夜切换按钮

修改[you_blog]\themes\butterfly\layout\includes\rightside.pug, 替换原本的昼夜切换按钮

1
2
3
4
5
6
7
8
9
10
11
  when 'translate'
if translate.enable
button#translateLink(type="button" title=_p('rightside.translate_title'))= translate.default
when 'darkmode'
if darkmode.enable && darkmode.button
- button#darkmode(type="button" title=_p('rightside.night_mode_title'))
- i.fas.fa-adjust
+ a.icon-V.hidden(onclick='switchNightMode()', title=_p('rightside.night_mode_title'))
+ svg(width='25', height='25', viewBox='0 0 1024 1024')
+ use#modeicon(xlink:href='#icon-moon')

为博客添加波浪效果

修改index.pug文件

修改themes/butterfly/layout/includes/header/index.pug,在第 38 行左右

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if top_img !== false
if is_post()
include ./post-info.pug
+ section.main-hero-waves-area.waves-area
+ svg.waves-svg(xmlns='http://www.w3.org/2000/svg', xlink='http://www.w3.org/1999/xlink', viewBox='0 24 150 28', preserveAspectRatio='none', shape-rendering='auto')
+ defs
+ path#gentle-wave(d='M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z')
+ g.parallax
+ use(href='#gentle-wave', x='48', y='0')
+ use(href='#gentle-wave', x='48', y='3')
+ use(href='#gentle-wave', x='48', y='5')
+ use(href='#gentle-wave', x='48', y='7')
#post-top-cover
img#post-top-bg(class='nolazyload' src=bg_img)
else if is_home()
#site-info
h1#site-title=site_title
if theme.subtitle.enable

添加css

[blogRoot]/self/css/meihua.css,增加下面的代码

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
/* 波浪css */
.main-hero-waves-area {
width: 100%;
position: absolute;
left: 0;
bottom: -11px;
z-index: 5;
}
.waves-area .waves-svg {
width: 100%;
height: 5rem;
}
/* Animation */

.parallax > use {
animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
}
.parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #f7f9febd;
}
.parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #f7f9fe82;
}
.parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #f7f9fe36;
}
.parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #f7f9fe;
}
/* 黑色模式背景 */
[data-theme="dark"] .parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #18171dc8;
}
[data-theme="dark"] .parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #18171d80;
}
[data-theme="dark"] .parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #18171d3e;
}
[data-theme="dark"] .parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #18171d;
}

@keyframes move-forever {
0% {
transform: translate3d(-90px, 0, 0);
}
100% {
transform: translate3d(85px, 0, 0);
}
}
/*Shrinking for mobile*/
@media (max-width: 768px) {
.waves-area .waves-svg {
height: 40px;
min-height: 40px;
}
}

注意: 的是 css 中fill属性可以控制波浪颜色

页脚透明

[blogRoot]/self/css/meihua.css,增加下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 页脚透明start */
#footer {
background: var(--icat-footer-background);
}

#footer #footer-wrap {
color: var(--font-color)
}

#footer #footer-wrap a {
color: var(--font-color)
}

/* 页脚透明end */

文章页版权样式美化

[blogRoot]/self/css/meihua.css,增加下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* 版权样式调整start */
#post .post-copyright {
background: var(--icat-card-bg);
padding: 1rem 1.3rem;
overflow: hidden;
border: var(--style-border);
border-width: 1px;
transition: 0.3s;
position: relative;
margin: 1.5rem 0px 0.5rem;
border-radius: 8px;
}
#post .post-copyright:before {
position: absolute;
right: 22px;
top: -77px;
content: "\e039";
font-size: 180px;
font-family: "iconfont";
color: var(--icat-fontcolor);
opacity: 0.1;
filter: blur(7px);
}
/* 版权样式调整end */
文章作者: gglss
文章链接: http://example.com/posts/45938.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Butterfly美化记录二 | GGLSS

Butterfly美化记录二

侧边栏分类归档美化

修改 aside_archives文件

打开 [you_blog]\themes\butterfly\scripts\helpers\aside_archives.js 修改第 92 行左右。

1
2
3
4
5
6
7
8
9
10
result += transform ? transform(item.name) : item.name
result += '</span>'

if (showCount) {
- result += `<span class="card-archive-list-count">${item.count}</span>`
+ result += `<div class="card-archive-list-count-group"><span class="card-archive-list-count">${item.count}</span><span>篇</span></div>`
}
result += '</a>'
result += '</li>'

增加css

在自定义[blogRoot]/self/css/meihua.css文件中添加如下代码:

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
/* 侧栏归档样式start */
span.card-archive-list-count {
width: auto;
text-align: left;
font-size: 1.5rem;
line-height: 0.9;
font-weight: 700;
}
.card-archive-list-count-group {
display: flex;
flex-direction: row;
align-items: baseline;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a span:last-child,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a span:last-child {
width: fit-content;
margin-left: 4px;
}
span.card-archive-list-count {
width: auto;
text-align: left;
font-size: 1.1rem;
line-height: 0.9;
font-weight: 700;
}
.card-archive-list-date {
font-size: 14px;
opacity: 0.6;
}
li.card-category-list-item {
flex: 0 0 31%;
}
li.card-archive-list-item {
flex: 0 0 48%;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:hover,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:hover {
color: #fff;
/* background-color: #3b70fc; */
background-color: #49B1F5; /*侧边栏的鼠标悬浮颜色*/
box-shadow: 0 8px 12px -3px #4259ef23;
border-radius: 8px;
padding-left: 0.5rem;
padding-right: 0.5rem;
}
@media screen and (min-width: 1300px) {
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:hover,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:hover {
transform: scale(1.03);
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a:active,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a:active {
transform: scale(0.97);
}
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a {
border-radius: 8px;
margin: 4px 0;
display: flex;
flex-direction: column;
align-content: space-between;
border: 1px solid #e3e8f7;
}
#aside-content .card-archives ul.card-archive-list > .card-archive-list-item a span:first-child,
#aside-content .card-categories ul.card-category-list > .card-category-list-item a span:first-child {
width: auto;
flex: inherit;
}
#aside-content .card-archives ul.card-archive-list,
#aside-content .card-categories ul.card-category-list {
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
}
/* 侧栏归档样式end */

添加夜间模式的转换动画

转自雷雷屋头

新建 sun_moon.pug

[you_blog]\themes\butterfly\layout\includes\custom\ 文件夹下,新建 sun_moon.pug 文件

1
2
3
4
5
6
7
8
9
10
11
svg(aria-hidden='true', style='position:absolute; overflow:hidden; width:0; height:0')
symbol#icon-sun(viewBox='0 0 1024 1024')
path(d='M960 512l-128 128v192h-192l-128 128-128-128H192v-192l-128-128 128-128V192h192l128-128 128 128h192v192z', fill='#FFD878', p-id='8420')
path(d='M736 512a224 224 0 1 0-448 0 224 224 0 1 0 448 0z', fill='#FFE4A9', p-id='8421')
path(d='M512 109.248L626.752 224H800v173.248L914.752 512 800 626.752V800h-173.248L512 914.752 397.248 800H224v-173.248L109.248 512 224 397.248V224h173.248L512 109.248M512 64l-128 128H192v192l-128 128 128 128v192h192l128 128 128-128h192v-192l128-128-128-128V192h-192l-128-128z', fill='#4D5152', p-id='8422')
path(d='M512 320c105.888 0 192 86.112 192 192s-86.112 192-192 192-192-86.112-192-192 86.112-192 192-192m0-32a224 224 0 1 0 0 448 224 224 0 0 0 0-448z', fill='#4D5152', p-id='8423')
symbol#icon-moon(viewBox='0 0 1024 1024')
path(d='M611.370667 167.082667a445.013333 445.013333 0 0 1-38.4 161.834666 477.824 477.824 0 0 1-244.736 244.394667 445.141333 445.141333 0 0 1-161.109334 38.058667 85.077333 85.077333 0 0 0-65.066666 135.722666A462.08 462.08 0 1 0 747.093333 102.058667a85.077333 85.077333 0 0 0-135.722666 65.024z', fill='#FFB531', p-id='11345')
path(d='M329.728 274.133333l35.157333-35.157333a21.333333 21.333333 0 1 0-30.165333-30.165333l-35.157333 35.157333-35.114667-35.157333a21.333333 21.333333 0 0 0-30.165333 30.165333l35.114666 35.157333-35.114666 35.157334a21.333333 21.333333 0 1 0 30.165333 30.165333l35.114667-35.157333 35.157333 35.157333a21.333333 21.333333 0 1 0 30.165333-30.165333z', fill='#030835', p-id='11346')


新建css

[blogRoot]/self/css/新建sun_moon.css,增加下面的代码

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
/* 白天夜晚切换动画start */
.Cuteen_DarkSky, .Cuteen_DarkSky:before {
content: '';
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 88888888;
}
.Cuteen_DarkSky {
background: linear-gradient(#feb8b0, #fef9db);
}
.Cuteen_DarkSky:before {
transition: 2s ease all;
opacity: 0;
background: linear-gradient(#4c3f6d, #6c62bb, #93b1ed);
}
.DarkMode .Cuteen_DarkSky:before {
opacity: 1;
}
.Cuteen_DarkPlanet {
z-index: 99999999;
position: fixed;
left: -50%;
top: -50%;
width: 200%;
height: 200%;
-webkit-animation: CuteenPlanetMove 2s cubic-bezier(0.7, 0, 0, 1);
animation: CuteenPlanetMove 2s cubic-bezier(0.7, 0, 0, 1);
transform-origin: center bottom;
}
@-webkit-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
.Cuteen_DarkPlanet:after {
position: absolute;
left: 35%;
top: 40%;
width: 9.375rem;
height: 9.375rem;
border-radius: 50%;
content: '';
background: linear-gradient(#fefefe, #fffbe8);
}
.search span {
display: none;
}
.menus_item a {
text-decoration: none !important;
}
.icon-V {
padding: 5px;
}
@-moz-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@-webkit-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@-o-keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@keyframes CuteenPlanetMove {
0% {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
/* 白天夜晚切换动画end */


新建js

[blogRoot]/self/js/新建`sun_moon.js,增加下面的代码

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
// 白天夜晚切换动画start
function switchNightMode() {
document.querySelector('body').insertAdjacentHTML('beforeend', '<div class="Cuteen_DarkSky"><div class="Cuteen_DarkPlanet"></div></div>'),
setTimeout(function() {
document.querySelector('body').classList.contains('DarkMode') ? (document.querySelector('body').classList.remove('DarkMode'), localStorage.setItem('isDark', '0'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-moon')) : (document.querySelector('body').classList.add('DarkMode'), localStorage.setItem('isDark', '1'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-sun')),
setTimeout(function() {
document.getElementsByClassName('Cuteen_DarkSky')[0].style.transition = 'opacity 3s';
document.getElementsByClassName('Cuteen_DarkSky')[0].style.opacity = '0';
setTimeout(function() {
document.getElementsByClassName('Cuteen_DarkSky')[0].remove();
}, 1e3);
}, 2e3)
})
const nowMode = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'
if (nowMode === 'light') {
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
document.getElementById('modeicon').setAttribute('xlink:href', '#icon-sun')
} else {
activateLightMode()
saveToLocal.set('theme', 'light', 2)
document.querySelector('body').classList.add('DarkMode'), document.getElementById('modeicon').setAttribute('xlink:href', '#icon-moon')
}
// handle some cases
typeof utterancesTheme === 'function' && utterancesTheme()
typeof FB === 'object' && window.loadFBComment()
window.DISQUS && document.getElementById('disqus_thread').children.length && setTimeout(() => window.disqusReset(), 200)
}
// 白天夜晚切换动画end


引用 sun_moon.pug

修改 [you_blog]\themes\butterfly\layout\includes\head.pug, 在文件末位增加以下代码:

1
2
3
4
5
6
7
8
9
10
11
  //- global config
!=partial('includes/head/config', {}, {cache: true})

include ./head/config_site.pug
include ./head/noscript.pug

!=fragment_cache('injectHeadJs', function(){return inject_head_js()})

!=fragment_cache('injectHead', function(){return injectHtml(theme.inject.head)})
+ include ./custom/sun_moon.pug

替换昼夜切换按钮

修改[you_blog]\themes\butterfly\layout\includes\rightside.pug, 替换原本的昼夜切换按钮

1
2
3
4
5
6
7
8
9
10
11
  when 'translate'
if translate.enable
button#translateLink(type="button" title=_p('rightside.translate_title'))= translate.default
when 'darkmode'
if darkmode.enable && darkmode.button
- button#darkmode(type="button" title=_p('rightside.night_mode_title'))
- i.fas.fa-adjust
+ a.icon-V.hidden(onclick='switchNightMode()', title=_p('rightside.night_mode_title'))
+ svg(width='25', height='25', viewBox='0 0 1024 1024')
+ use#modeicon(xlink:href='#icon-moon')

为博客添加波浪效果

修改index.pug文件

修改themes/butterfly/layout/includes/header/index.pug,在第 38 行左右

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if top_img !== false
if is_post()
include ./post-info.pug
+ section.main-hero-waves-area.waves-area
+ svg.waves-svg(xmlns='http://www.w3.org/2000/svg', xlink='http://www.w3.org/1999/xlink', viewBox='0 24 150 28', preserveAspectRatio='none', shape-rendering='auto')
+ defs
+ path#gentle-wave(d='M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z')
+ g.parallax
+ use(href='#gentle-wave', x='48', y='0')
+ use(href='#gentle-wave', x='48', y='3')
+ use(href='#gentle-wave', x='48', y='5')
+ use(href='#gentle-wave', x='48', y='7')
#post-top-cover
img#post-top-bg(class='nolazyload' src=bg_img)
else if is_home()
#site-info
h1#site-title=site_title
if theme.subtitle.enable

添加css

[blogRoot]/self/css/meihua.css,增加下面的代码

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
/* 波浪css */
.main-hero-waves-area {
width: 100%;
position: absolute;
left: 0;
bottom: -11px;
z-index: 5;
}
.waves-area .waves-svg {
width: 100%;
height: 5rem;
}
/* Animation */

.parallax > use {
animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
}
.parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #f7f9febd;
}
.parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #f7f9fe82;
}
.parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #f7f9fe36;
}
.parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #f7f9fe;
}
/* 黑色模式背景 */
[data-theme="dark"] .parallax > use:nth-child(1) {
animation-delay: -2s;
animation-duration: 7s;
fill: #18171dc8;
}
[data-theme="dark"] .parallax > use:nth-child(2) {
animation-delay: -3s;
animation-duration: 10s;
fill: #18171d80;
}
[data-theme="dark"] .parallax > use:nth-child(3) {
animation-delay: -4s;
animation-duration: 13s;
fill: #18171d3e;
}
[data-theme="dark"] .parallax > use:nth-child(4) {
animation-delay: -5s;
animation-duration: 20s;
fill: #18171d;
}

@keyframes move-forever {
0% {
transform: translate3d(-90px, 0, 0);
}
100% {
transform: translate3d(85px, 0, 0);
}
}
/*Shrinking for mobile*/
@media (max-width: 768px) {
.waves-area .waves-svg {
height: 40px;
min-height: 40px;
}
}

注意: 的是 css 中fill属性可以控制波浪颜色

页脚透明

[blogRoot]/self/css/meihua.css,增加下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 页脚透明start */
#footer {
background: var(--icat-footer-background);
}

#footer #footer-wrap {
color: var(--font-color)
}

#footer #footer-wrap a {
color: var(--font-color)
}

/* 页脚透明end */

文章页版权样式美化

[blogRoot]/self/css/meihua.css,增加下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* 版权样式调整start */
#post .post-copyright {
background: var(--icat-card-bg);
padding: 1rem 1.3rem;
overflow: hidden;
border: var(--style-border);
border-width: 1px;
transition: 0.3s;
position: relative;
margin: 1.5rem 0px 0.5rem;
border-radius: 8px;
}
#post .post-copyright:before {
position: absolute;
right: 22px;
top: -77px;
content: "\e039";
font-size: 180px;
font-family: "iconfont";
color: var(--icat-fontcolor);
opacity: 0.1;
filter: blur(7px);
}
/* 版权样式调整end */
文章作者: gglss
文章链接: http://example.com/posts/45938.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/4654.html b/posts/4654.html index 09288e477..5850f7dbc 100644 --- a/posts/4654.html +++ b/posts/4654.html @@ -1 +1 @@ -Shell变量 | GGLSS

Shell变量

shell变量分为系统变量和自定义变量,变量默认字符串类型

系统变量

$HOME 获取当前用户的家目录

$PWD 获取当前目录的路径

$SHELL 获取shell的执行引擎

$USER 获取当前用户的名称

自定义变量

在linux系统中定义变量A=1,等号两边不能有空格,使用echo $A显示A的值

使用unset A命令,撤销变量

定义只读变量readonly b=3,使用echo $b显示b的值,不能unset

export命令进行设置全局变量,可以让其他shell命令进行使用

特殊变量:**$n**

定义

n表示数字,范围是09,$0表示脚本名称,$19表示1~9个参数,10以上的参数要用花括号包裹,如${10}

运行apple.sh文件时可以传递参数

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
echo "filename_4:" $4
echo "filename_5:" $5

运行后传递参数bash apple.sh 001 002 test "test sss" "hsgd_dee"

特殊变量:$#

定义

获取所有输入参数的个数,常用于循环

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
#
echo $#
特殊变量:$#,$*

定义

$*代表命令行中所有参数,把参数作为一个整体

$@代表命令行中所有参数,把参数区分对待

特殊变量:$?

定义

最后一次命令的返回状态,如果返回变量的值为0,则表示最后一次命令执行正确,如果变量的值非0,则证明上一条变量返回不正确

举个栗子

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# $?
bash: 0: command not found
[root@b09ed0cc2c9d opt]# echo $?
127
[root@b09ed0cc2c9d opt]# echo $?
0
[root@b09ed0cc2c9d opt]#
文章作者: gglss
文章链接: http://example.com/posts/4654.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell变量 | GGLSS

Shell变量

shell变量分为系统变量和自定义变量,变量默认字符串类型

系统变量

$HOME 获取当前用户的家目录

$PWD 获取当前目录的路径

$SHELL 获取shell的执行引擎

$USER 获取当前用户的名称

自定义变量

在linux系统中定义变量A=1,等号两边不能有空格,使用echo $A显示A的值

使用unset A命令,撤销变量

定义只读变量readonly b=3,使用echo $b显示b的值,不能unset

export命令进行设置全局变量,可以让其他shell命令进行使用

特殊变量:**$n**

定义

n表示数字,范围是09,$0表示脚本名称,$19表示1~9个参数,10以上的参数要用花括号包裹,如${10}

运行apple.sh文件时可以传递参数

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
echo "filename_4:" $4
echo "filename_5:" $5

运行后传递参数bash apple.sh 001 002 test "test sss" "hsgd_dee"

特殊变量:$#

定义

获取所有输入参数的个数,常用于循环

举个栗子

1
2
3
4
5
6
7
8
#!/bin/bash
#
echo "filename:" $0
echo "filename_1:" $1
echo "filename_2:" $2
echo "filename_3:" $3
#
echo $#
特殊变量:$#,$*

定义

$*代表命令行中所有参数,把参数作为一个整体

$@代表命令行中所有参数,把参数区分对待

特殊变量:$?

定义

最后一次命令的返回状态,如果返回变量的值为0,则表示最后一次命令执行正确,如果变量的值非0,则证明上一条变量返回不正确

举个栗子

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# $?
bash: 0: command not found
[root@b09ed0cc2c9d opt]# echo $?
127
[root@b09ed0cc2c9d opt]# echo $?
0
[root@b09ed0cc2c9d opt]#
文章作者: gglss
文章链接: http://example.com/posts/4654.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/47474.html b/posts/47474.html index 156a58e7f..cc643b44f 100644 --- a/posts/47474.html +++ b/posts/47474.html @@ -1 +1 @@ -Butterfly美化记录五 | GGLSS

Butterfly美化记录五

文章增加最新文章标识

转载于云端

修改page.js

在js文件里面添加一段js

1
2
3
4
5
6
7
8
9
// 最新文章
hexo.extend.helper.register('newPost', function() {
let name, time;
hexo.locals.get('posts').map((item, index) => {
if (index == 0) name = item.title, time = item.date
else if (item.date > time) { name = item.title, time = item.date }
});
return name
})

修改post-ui.pug

themes\butterfly\layout\includes\mixins\post-ui.pug 添加代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mixin postUI(posts)
+ - let newTitle= newPost()
each article , index in page.posts.data
.recent-post-item
-
let link = article.link || article.path
let title = article.title || _p('no_title')
const position = theme.cover.position
let leftOrRight = position === 'both'
? index%2 == 0 ? 'left' : 'right'
: position === 'left' ? 'left' : 'right'
let post_cover = article.cover
let no_cover = article.cover === false || !theme.cover.index_enable ? 'no-cover' : ''
-
if post_cover && theme.cover.index_enable
.post_cover(class=leftOrRight)
a(href=url_for(link) title=title)
img.post_bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title)
.recent-post-info(class=no_cover)
+ if newTitle == title
+ span(class=`newPost-${leftOrRight=='left'?'right':'left'}`) 最新

添加自定义CSS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#recent-posts>.recent-post-item {
position: relative;
}

/* 最新文章图标 */
.newPost-left,
.newPost-right {
position: absolute;
top: 0;
color: white;
padding: 0 15px;
background-color: #49b1f5;
border-radius: 0 0 10px 10px;
}

.newPost-left {
left: 15px;
}

.newPost-right {
right: 15px;
}

hexo加速

使用[akilar](使用gulp压缩博客静态资源 | Akilarの糖果屋)教程

安装Gulp插件

在博客根目录[Blogroot]打开终端,输入:

1
2
npm install --global gulp-cli #全局安装gulp指令集
npm install gulp --save #安装gulp插件

安装各个下属插件以实现对各类静态资源的压缩

  • 压缩HTML:
1
2
3
npm install gulp-htmlclean --save-dev
npm install gulp-html-minifier-terser --save-dev
# 用gulp-html-minifier-terser可以压缩HTML中的ES6语法
  • 压缩CSS:
1
npm install gulp-clean-css --save-dev
  • 压缩JS:
1
npm install gulp-terser --save-dev
  • 压缩字体包:
1
npm install gulp-fontmin --save-dev

为Gulp创建gulpfile.js任务脚本

在博客根目录[Blogroot]下新建gulpfile.js,打开[Blogroot]\gulpfile.js,输入以下内容:

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
//用到的各个插件
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var htmlmin = require('gulp-html-minifier-terser');
var htmlclean = require('gulp-htmlclean');
var fontmin = require('gulp-fontmin');
// gulp-tester
var terser = require('gulp-terser');
// 压缩js
gulp.task('compress', async() =>{
gulp.src(['./public/**/*.js', '!./public/**/*.min.js'])
.pipe(terser())
.pipe(gulp.dest('./public'))
});
//压缩css
gulp.task('minify-css', () => {
return gulp.src(['./public/**/*.css'])
.pipe(cleanCSS({
compatibility: 'ie11'
}))
.pipe(gulp.dest('./public'));
});
//压缩html
gulp.task('minify-html', () => {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true, //清除html注释
collapseWhitespace: true, //压缩html
collapseBooleanAttributes: true,
//省略布尔属性的值,例如:<input checked="true"/> ==> <input />
removeEmptyAttributes: true,
//删除所有空格作属性值,例如:<input id="" /> ==> <input />
removeScriptTypeAttributes: true,
//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,
//删除<style>和<link>的 type="text/css"
minifyJS: true, //压缩页面 JS
minifyCSS: true, //压缩页面 CSS
minifyURLs: true //压缩页面URL
}))
.pipe(gulp.dest('./public'))
});
//压缩字体
function minifyFont(text, cb) {
gulp
.src('./public/fonts/*.ttf') //原字体所在目录
.pipe(fontmin({
text: text
}))
.pipe(gulp.dest('./public/fontsdest/')) //压缩后的输出目录
.on('end', cb);
}

gulp.task('mini-font', (cb) => {
var buffers = [];
gulp
.src(['./public/**/*.html']) //HTML文件所在目录请根据自身情况修改
.on('data', function(file) {
buffers.push(file.contents);
})
.on('end', function() {
var text = Buffer.concat(buffers).toString('utf-8');
minifyFont(text, cb);
});
});
// 运行gulp命令时依次执行以下任务
gulp.task('default', gulp.parallel(
'compress', 'minify-css', 'minify-html','mini-font'
##))

在每次运行完hexo generate生成静态页面后,运行gulp对其进行压缩。指令流程如下:

1
2
3
4
hexo clean
hexo generate
gulp
hexo server 或 hexo deploy
文章作者: gglss
文章链接: http://example.com/posts/47474.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Butterfly美化记录五 | GGLSS

Butterfly美化记录五

文章增加最新文章标识

转载于云端

修改page.js

在js文件里面添加一段js

1
2
3
4
5
6
7
8
9
// 最新文章
hexo.extend.helper.register('newPost', function() {
let name, time;
hexo.locals.get('posts').map((item, index) => {
if (index == 0) name = item.title, time = item.date
else if (item.date > time) { name = item.title, time = item.date }
});
return name
})

修改post-ui.pug

themes\butterfly\layout\includes\mixins\post-ui.pug 添加代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mixin postUI(posts)
+ - let newTitle= newPost()
each article , index in page.posts.data
.recent-post-item
-
let link = article.link || article.path
let title = article.title || _p('no_title')
const position = theme.cover.position
let leftOrRight = position === 'both'
? index%2 == 0 ? 'left' : 'right'
: position === 'left' ? 'left' : 'right'
let post_cover = article.cover
let no_cover = article.cover === false || !theme.cover.index_enable ? 'no-cover' : ''
-
if post_cover && theme.cover.index_enable
.post_cover(class=leftOrRight)
a(href=url_for(link) title=title)
img.post_bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title)
.recent-post-info(class=no_cover)
+ if newTitle == title
+ span(class=`newPost-${leftOrRight=='left'?'right':'left'}`) 最新

添加自定义CSS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#recent-posts>.recent-post-item {
position: relative;
}

/* 最新文章图标 */
.newPost-left,
.newPost-right {
position: absolute;
top: 0;
color: white;
padding: 0 15px;
background-color: #49b1f5;
border-radius: 0 0 10px 10px;
}

.newPost-left {
left: 15px;
}

.newPost-right {
right: 15px;
}

hexo加速

使用[akilar](使用gulp压缩博客静态资源 | Akilarの糖果屋)教程

安装Gulp插件

在博客根目录[Blogroot]打开终端,输入:

1
2
npm install --global gulp-cli #全局安装gulp指令集
npm install gulp --save #安装gulp插件

安装各个下属插件以实现对各类静态资源的压缩

  • 压缩HTML:
1
2
3
npm install gulp-htmlclean --save-dev
npm install gulp-html-minifier-terser --save-dev
# 用gulp-html-minifier-terser可以压缩HTML中的ES6语法
  • 压缩CSS:
1
npm install gulp-clean-css --save-dev
  • 压缩JS:
1
npm install gulp-terser --save-dev
  • 压缩字体包:
1
npm install gulp-fontmin --save-dev

为Gulp创建gulpfile.js任务脚本

在博客根目录[Blogroot]下新建gulpfile.js,打开[Blogroot]\gulpfile.js,输入以下内容:

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
//用到的各个插件
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var htmlmin = require('gulp-html-minifier-terser');
var htmlclean = require('gulp-htmlclean');
var fontmin = require('gulp-fontmin');
// gulp-tester
var terser = require('gulp-terser');
// 压缩js
gulp.task('compress', async() =>{
gulp.src(['./public/**/*.js', '!./public/**/*.min.js'])
.pipe(terser())
.pipe(gulp.dest('./public'))
});
//压缩css
gulp.task('minify-css', () => {
return gulp.src(['./public/**/*.css'])
.pipe(cleanCSS({
compatibility: 'ie11'
}))
.pipe(gulp.dest('./public'));
});
//压缩html
gulp.task('minify-html', () => {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true, //清除html注释
collapseWhitespace: true, //压缩html
collapseBooleanAttributes: true,
//省略布尔属性的值,例如:<input checked="true"/> ==> <input />
removeEmptyAttributes: true,
//删除所有空格作属性值,例如:<input id="" /> ==> <input />
removeScriptTypeAttributes: true,
//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,
//删除<style>和<link>的 type="text/css"
minifyJS: true, //压缩页面 JS
minifyCSS: true, //压缩页面 CSS
minifyURLs: true //压缩页面URL
}))
.pipe(gulp.dest('./public'))
});
//压缩字体
function minifyFont(text, cb) {
gulp
.src('./public/fonts/*.ttf') //原字体所在目录
.pipe(fontmin({
text: text
}))
.pipe(gulp.dest('./public/fontsdest/')) //压缩后的输出目录
.on('end', cb);
}

gulp.task('mini-font', (cb) => {
var buffers = [];
gulp
.src(['./public/**/*.html']) //HTML文件所在目录请根据自身情况修改
.on('data', function(file) {
buffers.push(file.contents);
})
.on('end', function() {
var text = Buffer.concat(buffers).toString('utf-8');
minifyFont(text, cb);
});
});
// 运行gulp命令时依次执行以下任务
gulp.task('default', gulp.parallel(
'compress', 'minify-css', 'minify-html','mini-font'
##))

在每次运行完hexo generate生成静态页面后,运行gulp对其进行压缩。指令流程如下:

1
2
3
4
hexo clean
hexo generate
gulp
hexo server 或 hexo deploy
文章作者: gglss
文章链接: http://example.com/posts/47474.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/47564.html b/posts/47564.html index 01b1146c9..46602f5f3 100644 --- a/posts/47564.html +++ b/posts/47564.html @@ -1 +1 @@ -字符串 | GGLSS

字符串

字符串的方法

方法描述
str.concat()将参数拼接到字符串上
trim()去除字符串两端的字符串,不能去除中间
replace(oldChar, newChar)将字符串的old参数替换为new参数
length()返回此字符串的长度
isEmpty()判断字符串是否为空

concat()方法

  • 返回字符串类型
  • 字符串在后面拼接
    1
    2
    3
    String str = "床前明月光";
    String str1 = str.concat("疑是地上霜。");
    System.out.println(str1);

trim()方法

1
2
3
String str = "    床  前明   月光   ";
String str1 = str.trim();
System.out.println(str1);

replace(oldChar, newChar)方法

1
2
3
String str = "床前明月光";
String str1 = str.replace("床", "llll");
System.out.println(str1);

length()方法

  • 返回int类型
    1
    2
    3
    String str = "床前明月光";
    int str1 = str.length();
    System.out.println(str1);

isEmpty()方法

  • 返回布尔类型
    1
    2
    3
    String str = "床前明月光";
    boolean str1 = str.isEmpty();
    System.out.println(str1);
文章作者: gglss
文章链接: http://example.com/posts/47564.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +字符串 | GGLSS

字符串

字符串的方法

方法描述
str.concat()将参数拼接到字符串上
trim()去除字符串两端的字符串,不能去除中间
replace(oldChar, newChar)将字符串的old参数替换为new参数
length()返回此字符串的长度
isEmpty()判断字符串是否为空

concat()方法

  • 返回字符串类型
  • 字符串在后面拼接
    1
    2
    3
    String str = "床前明月光";
    String str1 = str.concat("疑是地上霜。");
    System.out.println(str1);

trim()方法

1
2
3
String str = "    床  前明   月光   ";
String str1 = str.trim();
System.out.println(str1);

replace(oldChar, newChar)方法

1
2
3
String str = "床前明月光";
String str1 = str.replace("床", "llll");
System.out.println(str1);

length()方法

  • 返回int类型
    1
    2
    3
    String str = "床前明月光";
    int str1 = str.length();
    System.out.println(str1);

isEmpty()方法

  • 返回布尔类型
    1
    2
    3
    String str = "床前明月光";
    boolean str1 = str.isEmpty();
    System.out.println(str1);
文章作者: gglss
文章链接: http://example.com/posts/47564.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/4851.html b/posts/4851.html index b4028cb04..d745bcc10 100644 --- a/posts/4851.html +++ b/posts/4851.html @@ -1 +1 @@ -使用pip install报错的解决办法 | GGLSS

使用pip install报错的解决办法

报错提示

今天使用PyCharm下载一个模块pip.exe install locust,有错误提示

1
2
3
4
5
6
7
8
9
10
11
https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
// 报错位置
ERROR: Failed building wheel for psutil

ERROR: Could not build wheels for psutil, which is required to install pyproject.toml-based projects
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)

原因

缺少对应的whl文件

解决办法

碰到了这个错误ERROR: Failed building wheel for psutil,就需要下载psutil.whl

下载网站点击进入网站

下载psutil-5.9.0-cp38-cp38-win_amd64.whl文件

然后使用(pip install 文件的绝对路径)进行安装,然后使用pip.exe install locust正常安装

1
2
3
4
5

pip.exe install D:\Appium\psutil-5.9.0-cp38-cp38-win_amd64.whl

pip.exe install locust

文章作者: gglss
文章链接: http://example.com/posts/4851.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用pip install报错的解决办法 | GGLSS

使用pip install报错的解决办法

报错提示

今天使用PyCharm下载一个模块pip.exe install locust,有错误提示

1
2
3
4
5
6
7
8
9
10
11
https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
// 报错位置
ERROR: Failed building wheel for psutil

ERROR: Could not build wheels for psutil, which is required to install pyproject.toml-based projects
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (d:\work software\python3.8\lib\site-packages)

原因

缺少对应的whl文件

解决办法

碰到了这个错误ERROR: Failed building wheel for psutil,就需要下载psutil.whl

下载网站点击进入网站

下载psutil-5.9.0-cp38-cp38-win_amd64.whl文件

然后使用(pip install 文件的绝对路径)进行安装,然后使用pip.exe install locust正常安装

1
2
3
4
5

pip.exe install D:\Appium\psutil-5.9.0-cp38-cp38-win_amd64.whl

pip.exe install locust

文章作者: gglss
文章链接: http://example.com/posts/4851.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/48785.html b/posts/48785.html index 4b35c8cd3..1fa21b534 100644 --- a/posts/48785.html +++ b/posts/48785.html @@ -1 +1 @@ -使用moko编写包含cookie信息的测试接口(二) | GGLSS

使用moko编写包含cookie信息的测试接口(二)

上一节已经写了规则,这次直接来编写Get和Post请求

这是一个会返回cookie的get请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"description": "这是一个会返回cookie的get请求",
"request": {
"uri": "/getCookies",
"method": "get"
},
"response": {
"cookies": {
"login": "true"
},
"text": "恭喜你获得cookies信息成功",
"status": 200,
"msg": "成功"
}
}

这是一个携带cookies信息的get请求

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"description": "这是一个带cookies信息的get请求",
"request": {
"uri": "/get/with/cookies",
"method": "get",
"cookies": {
"login": "true"
}
},
"response": {
"text": "这是一个需要携带cookies信息才能访问的get请求"
}
}

这是一个携带cookies信息的post请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"description": "这是一个带cookies信息的post请求",
"request": {
"uri": "/post/with/cookies",
"method": "post",
"cookies": {
"login": "true"
},
"json": {
"name": "huhansan",
"age": "18"
}
},
"response": {
"status": 200,
"json": {
"huhansan": "success",
"status": "1"
}
}
}
文章作者: gglss
文章链接: http://example.com/posts/48785.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写包含cookie信息的测试接口(二) | GGLSS

使用moko编写包含cookie信息的测试接口(二)

上一节已经写了规则,这次直接来编写Get和Post请求

这是一个会返回cookie的get请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"description": "这是一个会返回cookie的get请求",
"request": {
"uri": "/getCookies",
"method": "get"
},
"response": {
"cookies": {
"login": "true"
},
"text": "恭喜你获得cookies信息成功",
"status": 200,
"msg": "成功"
}
}

这是一个携带cookies信息的get请求

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"description": "这是一个带cookies信息的get请求",
"request": {
"uri": "/get/with/cookies",
"method": "get",
"cookies": {
"login": "true"
}
},
"response": {
"text": "这是一个需要携带cookies信息才能访问的get请求"
}
}

这是一个携带cookies信息的post请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"description": "这是一个带cookies信息的post请求",
"request": {
"uri": "/post/with/cookies",
"method": "post",
"cookies": {
"login": "true"
},
"json": {
"name": "huhansan",
"age": "18"
}
},
"response": {
"status": 200,
"json": {
"huhansan": "success",
"status": "1"
}
}
}
文章作者: gglss
文章链接: http://example.com/posts/48785.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/48851.html b/posts/48851.html index 764671b3b..a5e269ca0 100644 --- a/posts/48851.html +++ b/posts/48851.html @@ -1 +1 @@ -Constant Throughput Timer定时器 | GGLSS

Constant Throughput Timer定时器

作用

限制整个运行过程中的生成的吞吐量不要超过某一个值,防止压死系统

参数

  • Target throughput(in samples per minute):目标吞吐量,指的是每分钟发送的请求数,对应测试要求的20 QPS,这里应该输入1200
  • Calculate Throughput based on:有5个选项
    • This Thread only:控制每个线程的吞吐量,这个模式的作用是:总的吞吐量=Target throughput * 线程的数量
    • All active threads:设置的Target throughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理时间后再次运行。活跃线程指的是同一时刻同时运行的线程
    • All active threads in current thread group:设置的`Target throughput将分配在当前线程祖的每一个活跃线程上,当测试计划只有一个线程组,这个模式作用和All active threads一样
    • All active threads(shared):与All active threads选项基本一致,唯一区别是,每一个活跃线程都会在所有活跃线程上一次运行结束后等待合理时间再次运行
    • All active threads in current thread group(shared):与All active threads in current thread group选项基本一致,唯一区别是,每个活跃线程都会在所有活跃线程的上一次运行结束等待合理的时间后再次运行
文章作者: gglss
文章链接: http://example.com/posts/48851.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Constant Throughput Timer定时器 | GGLSS

Constant Throughput Timer定时器

作用

限制整个运行过程中的生成的吞吐量不要超过某一个值,防止压死系统

参数

  • Target throughput(in samples per minute):目标吞吐量,指的是每分钟发送的请求数,对应测试要求的20 QPS,这里应该输入1200
  • Calculate Throughput based on:有5个选项
    • This Thread only:控制每个线程的吞吐量,这个模式的作用是:总的吞吐量=Target throughput * 线程的数量
    • All active threads:设置的Target throughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理时间后再次运行。活跃线程指的是同一时刻同时运行的线程
    • All active threads in current thread group:设置的`Target throughput将分配在当前线程祖的每一个活跃线程上,当测试计划只有一个线程组,这个模式作用和All active threads一样
    • All active threads(shared):与All active threads选项基本一致,唯一区别是,每一个活跃线程都会在所有活跃线程上一次运行结束后等待合理时间再次运行
    • All active threads in current thread group(shared):与All active threads in current thread group选项基本一致,唯一区别是,每个活跃线程都会在所有活跃线程的上一次运行结束等待合理的时间后再次运行
文章作者: gglss
文章链接: http://example.com/posts/48851.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/48990.html b/posts/48990.html index 64ff00ba1..0243a53e0 100644 --- a/posts/48990.html +++ b/posts/48990.html @@ -1 +1 @@ -循环控制器Loop Controller | GGLSS

循环控制器Loop Controller

作用

指定子节点运行的次数,使用变量或数值进行控制

  • Infinite:表示一直循环
  • 如果同时设置线程组循环次数和循环控制器的循环次数,那控制器子节点运行的次数为两个数值相乘的结果

添加

文章作者: gglss
文章链接: http://example.com/posts/48990.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +循环控制器Loop Controller | GGLSS

循环控制器Loop Controller

作用

指定子节点运行的次数,使用变量或数值进行控制

  • Infinite:表示一直循环
  • 如果同时设置线程组循环次数和循环控制器的循环次数,那控制器子节点运行的次数为两个数值相乘的结果

添加

文章作者: gglss
文章链接: http://example.com/posts/48990.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/49262.html b/posts/49262.html index bcab5ef13..6036ad94c 100644 --- a/posts/49262.html +++ b/posts/49262.html @@ -1 +1 @@ -Jmeter之全局参数设置和csv数据导入 | GGLSS

Jmeter之全局参数设置和csv数据导入

全局参数设置

添加组件
  • 右键Thread Group
  • 点击Add -> Config Element -> User Defined Variables
添加对应的变量
  • hostname:localhost
  • port:9090
  • protocol:http

然后再请求参数中使用对应的参数变量名

  • ${hostname}
  • ${port}
  • ${protocol}

csv数据导入

创建csv文件
  • 使用Excel创建csv文件
  • csv数据之间使用英文逗号来分割
  • 保存成.csv文件
添加csv导入组件
  • 右键Thread Group
  • 点击Add -> Config Element -> CSV Data Set Config
配置
  • Filename:文件位置
  • File encoding:编码格式
  • Variable Names(comma-delimited):数据参数 如:no,username,password
  • lgnore first lline (only user if Variable Names is not empty):是否忽略第一行(表头)
  • Delimiter(use "\t" for tab):分隔符
  • Allow quoted data?:是否允许双引号括住数据
  • Recycle on EOF?:到了文件结尾是否循环
  • Stop thread on EOF?:到了文件结尾是否停止
  • Sharinng mode:共享模式

注意:把请求的参数修改为:${变量}

文章作者: gglss
文章链接: http://example.com/posts/49262.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Jmeter之全局参数设置和csv数据导入 | GGLSS

Jmeter之全局参数设置和csv数据导入

全局参数设置

添加组件
  • 右键Thread Group
  • 点击Add -> Config Element -> User Defined Variables
添加对应的变量
  • hostname:localhost
  • port:9090
  • protocol:http

然后再请求参数中使用对应的参数变量名

  • ${hostname}
  • ${port}
  • ${protocol}

csv数据导入

创建csv文件
  • 使用Excel创建csv文件
  • csv数据之间使用英文逗号来分割
  • 保存成.csv文件
添加csv导入组件
  • 右键Thread Group
  • 点击Add -> Config Element -> CSV Data Set Config
配置
  • Filename:文件位置
  • File encoding:编码格式
  • Variable Names(comma-delimited):数据参数 如:no,username,password
  • lgnore first lline (only user if Variable Names is not empty):是否忽略第一行(表头)
  • Delimiter(use "\t" for tab):分隔符
  • Allow quoted data?:是否允许双引号括住数据
  • Recycle on EOF?:到了文件结尾是否循环
  • Stop thread on EOF?:到了文件结尾是否停止
  • Sharinng mode:共享模式

注意:把请求的参数修改为:${变量}

文章作者: gglss
文章链接: http://example.com/posts/49262.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/50013.html b/posts/50013.html index 8248ce81d..0ce74cda8 100644 --- a/posts/50013.html +++ b/posts/50013.html @@ -1 +1 @@ -Shell条件判断 | GGLSS

Shell条件判断

基本语法

[ condition ] (注意,condition 前后要有空格

注意:条件非空即为 true,[ atguigu ]返回 true, [] 返回 false.

常用条件判断
两个整数之间进行比较
1
2
3
4
5
6
7
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

举个栗子

1
2
[23 -lt 80]
echo $? # 判断上一步操作是不是正确
按照文件权限进行判断
1
2
3
-r 读
-w 写
-x 执行

举个栗子

1
2
[ -w 1.sh ]
echo $?
文件类型判断
1
2
3
-f 文件存在且是一个常规文件
-e 文件存在
-d 文件存在且是一个目录

举个栗子

1
2
[ -e 2.sh ]
echo $?
多条件判断

$$ 与 ,前对,才执行后

||

文章作者: gglss
文章链接: http://example.com/posts/50013.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell条件判断 | GGLSS

Shell条件判断

基本语法

[ condition ] (注意,condition 前后要有空格

注意:条件非空即为 true,[ atguigu ]返回 true, [] 返回 false.

常用条件判断
两个整数之间进行比较
1
2
3
4
5
6
7
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于

举个栗子

1
2
[23 -lt 80]
echo $? # 判断上一步操作是不是正确
按照文件权限进行判断
1
2
3
-r 读
-w 写
-x 执行

举个栗子

1
2
[ -w 1.sh ]
echo $?
文件类型判断
1
2
3
-f 文件存在且是一个常规文件
-e 文件存在
-d 文件存在且是一个目录

举个栗子

1
2
[ -e 2.sh ]
echo $?
多条件判断

$$ 与 ,前对,才执行后

||

文章作者: gglss
文章链接: http://example.com/posts/50013.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/50070.html b/posts/50070.html index 50a56ab3c..a3c5b0d3a 100644 --- a/posts/50070.html +++ b/posts/50070.html @@ -1 +1 @@ -马哲 | GGLSS

马哲

马哲的基本特征

  • 实践性
  • 阶级性
  • 革命性
  • 科学性

【主观题】主观能动性与规律的统一

  • 尊重客观规律是正确发挥主观能动性的提前
  • 认识和利用客观规律必须充分发挥人的主观能动性
  • 在社会主义现代化建设中,必须把发挥人的主观能动性和尊重客观规律相结合

唯物辩证法的基本特征

联系的观点和发展的观点

世界联系和发展的三个普遍规律

  • 对立统一规律(唯物辩证法的实质和核心): 揭示事物发展的动力和源泉

    矛盾的同一性和斗争性

  • 质量互变规律: 揭示事物发展的状态和形式
  • 否定之否定规律: 揭示事物发展的趋势和道路

【主观题】实践对认识的决定作用

  • 实践是认识的来源
  • 实践是认识发展的动力
  • 实践是认识的目的
  • 实践是检验真理的唯一标准
文章作者: gglss
文章链接: http://example.com/posts/50070.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +马哲 | GGLSS

马哲

马哲的基本特征

  • 实践性
  • 阶级性
  • 革命性
  • 科学性

【主观题】主观能动性与规律的统一

  • 尊重客观规律是正确发挥主观能动性的提前
  • 认识和利用客观规律必须充分发挥人的主观能动性
  • 在社会主义现代化建设中,必须把发挥人的主观能动性和尊重客观规律相结合

唯物辩证法的基本特征

联系的观点和发展的观点

世界联系和发展的三个普遍规律

  • 对立统一规律(唯物辩证法的实质和核心): 揭示事物发展的动力和源泉

    矛盾的同一性和斗争性

  • 质量互变规律: 揭示事物发展的状态和形式
  • 否定之否定规律: 揭示事物发展的趋势和道路

【主观题】实践对认识的决定作用

  • 实践是认识的来源
  • 实践是认识发展的动力
  • 实践是认识的目的
  • 实践是检验真理的唯一标准
文章作者: gglss
文章链接: http://example.com/posts/50070.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/50581.html b/posts/50581.html index eb9833c6d..9aa6e44dc 100644 --- a/posts/50581.html +++ b/posts/50581.html @@ -1 +1 @@ -使用Java解析Properties文件 | GGLSS

使用Java解析Properties文件

主要函数

文件后缀函数方法
.Propertiesload加载文件
setProperty设置
getProperty获取

编写逻辑

创建加载文件的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 加载文件
* @return Properties 对象
* @throws IOException I/O输入异常
*/
private Properties readProperties() throws IOException{
// 实例化,创建 Properties 对象
Properties properties = new Properties();
try {
// 创建文件输入对象 FileInputStream("testpro.properties")
InputStream inputStream = new FileInputStream(filepath);
// 把文件输入对象放入缓存输入对象 new BufferedInputStream 里面
BufferedInputStream in = new BufferedInputStream(inputStream);
// 加载文件 in = ParseProperties.class.getResourceAsStream("testpro.properties"),自动获取 resources 文件夹下路径
properties.load(in);
}catch (IOException e){
e.printStackTrace();
}
return properties;
}

获取key后面的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 获取数据
* @param key 数据名称
* @return 数据等号右边的值
* @throws Exception 异常
*/
public String getPro(String key) throws Exception {
// 判断文件里面有没有这个 Key
if (prop.containsKey(key)) {
// 获得key后面的value值
return prop.getProperty(key);
}else {
System.out.println("你获取的key值不对");
return "";
}
}

获取定位类型或者定位表达式

1
2
3
4
5
6
7
8
9
/**
* 返回定位类型或者定位表达式
* @param key 数据名称
* @param num 输入0/1
* @return num=0时,返回定位类型,num=1时,返回定位表达式
*/
public String get_pro_element(String key, int num){
return (num!=0 & num!=1) ? "num:参数输入错误" : prop.getProperty(key).split("->")[num];
}
文章作者: gglss
文章链接: http://example.com/posts/50581.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用Java解析Properties文件 | GGLSS

使用Java解析Properties文件

主要函数

文件后缀函数方法
.Propertiesload加载文件
setProperty设置
getProperty获取

编写逻辑

创建加载文件的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 加载文件
* @return Properties 对象
* @throws IOException I/O输入异常
*/
private Properties readProperties() throws IOException{
// 实例化,创建 Properties 对象
Properties properties = new Properties();
try {
// 创建文件输入对象 FileInputStream("testpro.properties")
InputStream inputStream = new FileInputStream(filepath);
// 把文件输入对象放入缓存输入对象 new BufferedInputStream 里面
BufferedInputStream in = new BufferedInputStream(inputStream);
// 加载文件 in = ParseProperties.class.getResourceAsStream("testpro.properties"),自动获取 resources 文件夹下路径
properties.load(in);
}catch (IOException e){
e.printStackTrace();
}
return properties;
}

获取key后面的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 获取数据
* @param key 数据名称
* @return 数据等号右边的值
* @throws Exception 异常
*/
public String getPro(String key) throws Exception {
// 判断文件里面有没有这个 Key
if (prop.containsKey(key)) {
// 获得key后面的value值
return prop.getProperty(key);
}else {
System.out.println("你获取的key值不对");
return "";
}
}

获取定位类型或者定位表达式

1
2
3
4
5
6
7
8
9
/**
* 返回定位类型或者定位表达式
* @param key 数据名称
* @param num 输入0/1
* @return num=0时,返回定位类型,num=1时,返回定位表达式
*/
public String get_pro_element(String key, int num){
return (num!=0 & num!=1) ? "num:参数输入错误" : prop.getProperty(key).split("->")[num];
}
文章作者: gglss
文章链接: http://example.com/posts/50581.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/50699.html b/posts/50699.html index c99874807..fa3f7e463 100644 --- a/posts/50699.html +++ b/posts/50699.html @@ -1 +1 @@ -使用docker安装常用软件:tomcat | GGLSS

使用docker安装常用软件:tomcat

使用docker安装常用软件:tomcat

安装流程

首先把tomcat在镜像源中pull下来,使用docker images 查看镜像

使用docker run -d -p 8080:8080 tomcat:9.0 新建容器运行tomcat

运行后使用本地PC使用阿里云的ip和端口访问docker上面的tomcat

这是什么原因呢

使用docker ps查询到容器编号,docker exec -it 容器编号 bash 打开容器

1
2
3
4
5
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c52ab6b8b8df b8e65a4d736d "catalina.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp inspiring_bohr
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker exec -it c52ab6b8b8df bash
root@c52ab6b8b8df:/usr/local/tomcat#

使用ls-l查看文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@c52ab6b8b8df:/usr/local/tomcat# ls -l
total 156
-rw-r--r-- 1 root root 18970 Dec 2 14:30 BUILDING.txt
-rw-r--r-- 1 root root 6210 Dec 2 14:30 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec 2 14:30 LICENSE
-rw-r--r-- 1 root root 2333 Dec 2 14:30 NOTICE
-rw-r--r-- 1 root root 3378 Dec 2 14:30 README.md
-rw-r--r-- 1 root root 6898 Dec 2 14:30 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec 2 14:30 RUNNING.txt
drwxr-xr-x 2 root root 4096 Dec 22 17:16 bin
drwxr-xr-x 1 root root 4096 Apr 29 01:48 conf
drwxr-xr-x 2 root root 4096 Dec 22 17:16 lib
drwxrwxrwx 1 root root 4096 Apr 29 01:48 logs
drwxr-xr-x 2 root root 4096 Dec 22 17:16 native-jni-lib
drwxrwxrwx 2 root root 4096 Dec 22 17:16 temp
drwxr-xr-x 2 root root 4096 Dec 22 17:16 webapps
drwxr-xr-x 7 root root 4096 Dec 2 14:30 webapps.dist
drwxrwxrwx 2 root root 4096 Dec 2 14:30 work
root@c52ab6b8b8df:/usr/local/tomcat#

从列表可以看到有两个文件夹webappswebapps.dist,数据全部在webapps.dist里面,需要将webapps删除,把webapps.dist重命名成webapps即可访问

使用rm -rf webapps删除webapps文件夹

使用mv webapps.dist webapps 重命名

再次使用本地访问

使用免修改版的tomcat

docker pull billygoo/tomcat8-jdk8

docker run -d -p 8080:8080 –name tomcat8 billygoo/tomcat8-jdk8

文章作者: gglss
文章链接: http://example.com/posts/50699.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用docker安装常用软件:tomcat | GGLSS

使用docker安装常用软件:tomcat

使用docker安装常用软件:tomcat

安装流程

首先把tomcat在镜像源中pull下来,使用docker images 查看镜像

使用docker run -d -p 8080:8080 tomcat:9.0 新建容器运行tomcat

运行后使用本地PC使用阿里云的ip和端口访问docker上面的tomcat

这是什么原因呢

使用docker ps查询到容器编号,docker exec -it 容器编号 bash 打开容器

1
2
3
4
5
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c52ab6b8b8df b8e65a4d736d "catalina.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp inspiring_bohr
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker exec -it c52ab6b8b8df bash
root@c52ab6b8b8df:/usr/local/tomcat#

使用ls-l查看文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@c52ab6b8b8df:/usr/local/tomcat# ls -l
total 156
-rw-r--r-- 1 root root 18970 Dec 2 14:30 BUILDING.txt
-rw-r--r-- 1 root root 6210 Dec 2 14:30 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec 2 14:30 LICENSE
-rw-r--r-- 1 root root 2333 Dec 2 14:30 NOTICE
-rw-r--r-- 1 root root 3378 Dec 2 14:30 README.md
-rw-r--r-- 1 root root 6898 Dec 2 14:30 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec 2 14:30 RUNNING.txt
drwxr-xr-x 2 root root 4096 Dec 22 17:16 bin
drwxr-xr-x 1 root root 4096 Apr 29 01:48 conf
drwxr-xr-x 2 root root 4096 Dec 22 17:16 lib
drwxrwxrwx 1 root root 4096 Apr 29 01:48 logs
drwxr-xr-x 2 root root 4096 Dec 22 17:16 native-jni-lib
drwxrwxrwx 2 root root 4096 Dec 22 17:16 temp
drwxr-xr-x 2 root root 4096 Dec 22 17:16 webapps
drwxr-xr-x 7 root root 4096 Dec 2 14:30 webapps.dist
drwxrwxrwx 2 root root 4096 Dec 2 14:30 work
root@c52ab6b8b8df:/usr/local/tomcat#

从列表可以看到有两个文件夹webappswebapps.dist,数据全部在webapps.dist里面,需要将webapps删除,把webapps.dist重命名成webapps即可访问

使用rm -rf webapps删除webapps文件夹

使用mv webapps.dist webapps 重命名

再次使用本地访问

使用免修改版的tomcat

docker pull billygoo/tomcat8-jdk8

docker run -d -p 8080:8080 –name tomcat8 billygoo/tomcat8-jdk8

文章作者: gglss
文章链接: http://example.com/posts/50699.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/51796.html b/posts/51796.html index b36cf8c9c..68d3efafc 100644 --- a/posts/51796.html +++ b/posts/51796.html @@ -1 +1 @@ -redis的3主3从扩容 | GGLSS

redis的3主3从扩容

redis的3主3从扩容

首先添加两个redis

1
2
3
4
# 创建redis-node-7
docler run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
# 创建redis-node-8
docler run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

注:在阿里云的安全组和防火墙上添加6387,16387 6388,16388四个端口

配置步骤:

执行docker exec -it redis-node-1 bash 进入redis-node-1里面
执行redis-cli --cluster add-node 8.142.144.75:6387 8.142.144.75:6381

6387 新加入的节点

6381 相当于6387的领路人

使用redis-cli --cluster check 8.142.144.75:6381检查
重新分配槽号

redis-cli –cluster reshard IP地址:端口号

注:上图的1指的是:对主机数平分16384个节点,16384/主机数(包含想要添加的主机)

注:上图的2指的是:新加入的6387节点的ID

all:表示全部进行重新分配

在重新加载过程会碰到Do you want to proceed with the proposed reshard plan (yes/no)?一句话,选择yes就可以

检查集群情况
为主节点6387分配从节点6388

redis-cli –cluster add-node ip:新slave端口 ip:新master端口 –cluster-slave –cluster-master-id 新主机节点ID

检查集群情况
文章作者: gglss
文章链接: http://example.com/posts/51796.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +redis的3主3从扩容 | GGLSS

redis的3主3从扩容

redis的3主3从扩容

首先添加两个redis

1
2
3
4
# 创建redis-node-7
docler run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
# 创建redis-node-8
docler run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

注:在阿里云的安全组和防火墙上添加6387,16387 6388,16388四个端口

配置步骤:

执行docker exec -it redis-node-1 bash 进入redis-node-1里面
执行redis-cli --cluster add-node 8.142.144.75:6387 8.142.144.75:6381

6387 新加入的节点

6381 相当于6387的领路人

使用redis-cli --cluster check 8.142.144.75:6381检查
重新分配槽号

redis-cli –cluster reshard IP地址:端口号

注:上图的1指的是:对主机数平分16384个节点,16384/主机数(包含想要添加的主机)

注:上图的2指的是:新加入的6387节点的ID

all:表示全部进行重新分配

在重新加载过程会碰到Do you want to proceed with the proposed reshard plan (yes/no)?一句话,选择yes就可以

检查集群情况
为主节点6387分配从节点6388

redis-cli –cluster add-node ip:新slave端口 ip:新master端口 –cluster-slave –cluster-master-id 新主机节点ID

检查集群情况
文章作者: gglss
文章链接: http://example.com/posts/51796.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/52630.html b/posts/52630.html index 99dca1802..fc2c14f23 100644 --- a/posts/52630.html +++ b/posts/52630.html @@ -1 +1 @@ -考研进度实况 | GGLSS

考研进度实况

考研实况

文章作者: gglss
文章链接: http://example.com/posts/52630.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +考研进度实况 | GGLSS

考研进度实况

考研实况

文章作者: gglss
文章链接: http://example.com/posts/52630.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/527.html b/posts/527.html index 9f2f6c8d9..faa17c3d2 100644 --- a/posts/527.html +++ b/posts/527.html @@ -1 +1 @@ -Constant Timer定时器 | GGLSS

Constant Timer定时器

作用

就是loadrunner上面的思考时间,就是模拟真实用户操作过程的等待时间

生效范围

定时器的父节点和子节点,如果想让一个请求强制停止一段时间,就把定时器放在这个请求的下面

单位是以ms为单位,1s=1000ms

文章作者: gglss
文章链接: http://example.com/posts/527.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Constant Timer定时器 | GGLSS

Constant Timer定时器

作用

就是loadrunner上面的思考时间,就是模拟真实用户操作过程的等待时间

生效范围

定时器的父节点和子节点,如果想让一个请求强制停止一段时间,就把定时器放在这个请求的下面

单位是以ms为单位,1s=1000ms

文章作者: gglss
文章链接: http://example.com/posts/527.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/52845.html b/posts/52845.html index b8dd80609..1c48c06bc 100644 --- a/posts/52845.html +++ b/posts/52845.html @@ -1 +1 @@ -使用jmeter录制压测 | GGLSS

使用jmeter录制压测

业务

  • 压测对象:http://news.baidu.com
  • 压测页面:首页、国际频道、财经频道
  • 步骤
    • 访问首页
    • 单击“国际”(频道)
    • 单击“财经”(频道)
  • 操作手段:录制回放

操作步骤

  • 添加录制器“HTTP(S) Test Script Recorder”

    • 右键Test Plan,点击add
    • 点击Non-Test Elements
    • 点击HTTP(S) Test Script Recorder
  • 添加线程组“Thread Group”

  • 添加录制控制器“Recording Controller”,

    • 右键线程组,点击and
    • 点击Logic Controller
    • 点击Recording Controller
  • 录制脚本的配置(Test Plan Creation)

    • Port=8088
    • Target Controller = TestPlan > Tread Group > Recording Controller
    • 其他的配置保持默认
  • 录制脚本的配置(Requests Filtering 请求过滤器)

    • URl Patterns to Include上添加正则.*\.(baidu\.com).*;表示只抓取百度URL的内容,不抓取其他网站的
    • URl Patterns to Exclude上添加正则.*\.(js|css|PNG|jpg|jpeg|ico|png|gif).*;去掉一些静态请求
    • 目的是:避免录制过多没必要的请求
  • 单击保存按钮,将Jmeter脚本存储

  • 打开浏览器,设置代理,将浏览器的代理服务地址指向http://localhost:8088,然后就可以进行访问录制了

  • 访问百度新闻的首页、国际、财经页面

  • 查看jmeter,录制结果在Recording Controller下面看到,然后停止录制

校验

录制结束后,要对录制的代码进行校验

  • 添加查看结果树组件

运行录制的代码,在查看结果树上查看运行的结果

文章作者: gglss
文章链接: http://example.com/posts/52845.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用jmeter录制压测 | GGLSS

使用jmeter录制压测

业务

  • 压测对象:http://news.baidu.com
  • 压测页面:首页、国际频道、财经频道
  • 步骤
    • 访问首页
    • 单击“国际”(频道)
    • 单击“财经”(频道)
  • 操作手段:录制回放

操作步骤

  • 添加录制器“HTTP(S) Test Script Recorder”

    • 右键Test Plan,点击add
    • 点击Non-Test Elements
    • 点击HTTP(S) Test Script Recorder
  • 添加线程组“Thread Group”

  • 添加录制控制器“Recording Controller”,

    • 右键线程组,点击and
    • 点击Logic Controller
    • 点击Recording Controller
  • 录制脚本的配置(Test Plan Creation)

    • Port=8088
    • Target Controller = TestPlan > Tread Group > Recording Controller
    • 其他的配置保持默认
  • 录制脚本的配置(Requests Filtering 请求过滤器)

    • URl Patterns to Include上添加正则.*\.(baidu\.com).*;表示只抓取百度URL的内容,不抓取其他网站的
    • URl Patterns to Exclude上添加正则.*\.(js|css|PNG|jpg|jpeg|ico|png|gif).*;去掉一些静态请求
    • 目的是:避免录制过多没必要的请求
  • 单击保存按钮,将Jmeter脚本存储

  • 打开浏览器,设置代理,将浏览器的代理服务地址指向http://localhost:8088,然后就可以进行访问录制了

  • 访问百度新闻的首页、国际、财经页面

  • 查看jmeter,录制结果在Recording Controller下面看到,然后停止录制

校验

录制结束后,要对录制的代码进行校验

  • 添加查看结果树组件

运行录制的代码,在查看结果树上查看运行的结果

文章作者: gglss
文章链接: http://example.com/posts/52845.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/53299.html b/posts/53299.html index def604db0..23b0c86bf 100644 --- a/posts/53299.html +++ b/posts/53299.html @@ -1 +1 @@ -_3主3从的`Redis集群`搭建之哈希槽算法 | GGLSS

_3主3从的`Redis集群`搭建之哈希槽算法

_3主3从的Redis集群搭建之哈希槽算法

目的

解决一致性哈希算法数据倾斜问题

实质

是一个数组,数组[0,2^14-1]形成hash slot空间

作用

解决均匀分配问题,在数据和节点之间加入一层(哈希槽slot)用于管理数据和节点之间的关系,现在相当于节点里放槽,槽里放数据

方便数据移动

哈希解决的映射问题,使用key的哈希值来计算所在的槽,便于数据分配

多少个hash槽

一个集群只能有16384个槽,编号0-16383(0-2^14-1)

这些槽会分配给集群中的所有主节点,分配策略没有要求。可以指定哪些编号的槽分配给哪个主节点。集群会记录节点和槽的对应关系。

接下来就需要对key求哈希值,然后对16384取余,余数是几key就落入对应的槽里。slot = CRC16(key) % 16384

以槽为单位移动数据,因为槽的数目是固定的,处理起来比较容易,这样数据移动问题就解决了。

举个栗子

Redis 集群中内置了 16384 个哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,也就是映射到某个节点上。如下代码,key之A 、B在Node2, key之C落在Node3上

首先有几个redis就把0-16383分成几个

文章作者: gglss
文章链接: http://example.com/posts/53299.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +_3主3从的`Redis集群`搭建之哈希槽算法 | GGLSS

_3主3从的`Redis集群`搭建之哈希槽算法

_3主3从的Redis集群搭建之哈希槽算法

目的

解决一致性哈希算法数据倾斜问题

实质

是一个数组,数组[0,2^14-1]形成hash slot空间

作用

解决均匀分配问题,在数据和节点之间加入一层(哈希槽slot)用于管理数据和节点之间的关系,现在相当于节点里放槽,槽里放数据

方便数据移动

哈希解决的映射问题,使用key的哈希值来计算所在的槽,便于数据分配

多少个hash槽

一个集群只能有16384个槽,编号0-16383(0-2^14-1)

这些槽会分配给集群中的所有主节点,分配策略没有要求。可以指定哪些编号的槽分配给哪个主节点。集群会记录节点和槽的对应关系。

接下来就需要对key求哈希值,然后对16384取余,余数是几key就落入对应的槽里。slot = CRC16(key) % 16384

以槽为单位移动数据,因为槽的数目是固定的,处理起来比较容易,这样数据移动问题就解决了。

举个栗子

Redis 集群中内置了 16384 个哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,也就是映射到某个节点上。如下代码,key之A 、B在Node2, key之C落在Node3上

首先有几个redis就把0-16383分成几个

文章作者: gglss
文章链接: http://example.com/posts/53299.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/53427.html b/posts/53427.html index 6311d2937..419c7ad3a 100644 --- a/posts/53427.html +++ b/posts/53427.html @@ -1 +1 @@ -Butterfly美化记录三 | GGLSS

Butterfly美化记录三

分类页和标签页面添加Bar条

使用justlovesmile

新增pug文件

新增categoryBar.pug文件

首先是分类条,在themes/butterfly/layout/includes/处新建文件categoryBar.pug

1
2
3
4
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("category")
a.category-bar-more(href="/categories/") 更多

新增tarsBar.pug文件

其次是标签条,在themes/butterfly/layout/includes/处新建文件tagBar.pug,因为样式一样,所以没有更改id和class名称。

1
2
3
4
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("tag")
a.category-bar-more(href="/tags/") 更多

新建Hexo辅助函数

theme/butterfly/scripts/helpers/中创建get_arrays.js

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
hexo.extend.helper.register('getarray_bar', function (types) {
if (!types) {
types = "category"
}
const categoriesBar = function (categories) {
if (!categories || !categories.length) return ``
const categoryArr = []
hexo.locals.get('categories').map(function (category) {
categoryArr.push({ name: category.name, value: category.length })
})
categoryArr.sort((a, b) => { return b.value - a.value })
let strCategoriesBar = ``
for (let i = 0; i < categories.length; i++) {
strTemp=`
<div class="category-bar-item" id="${categoryArr[i].name}">
<a href="/categories/${categoryArr[i].name}/">${categoryArr[i].name}</a>
</div>`
strCategoriesBar+=strTemp
}
return strCategoriesBar
}
const tagsBar = function(tags) {
if (!tags || !tags.length) return ``
const tagArr = []
hexo.locals.get('tags').map(function (tag) {
tagArr.push({ name: tag.name, value: tag.length })
})
tagArr.sort((a, b) => { return b.value - a.value })
let strTagsBar = ``
for (let i = 0; i < tags.length; i++) {
strTemp=`
<div class="category-bar-item" id="${tagArr[i].name}">
<a href="/tags/${tagArr[i].name}/">${tagArr[i].name}</a>
</div>`
strTagsBar+=strTemp
}
return strTagsBar
}
if (types == "category"){
return categoriesBar(this.site.categories)
}
if (types == "tag"){
return tagsBar(this.site.tags)
}
})

在页面引用模块

在分类页面引用:找到theme/butterfly/layout/category.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extends includes/layout.pug

block content
if theme.category_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts.category_ui
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#category
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-folder-open
+ include includes/categoryBar.pug
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug

在标签页引用:找到theme/butterfly/layout/tag.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extends includes/layout.pug

block content
if theme.tag_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#tag
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-tags
+ include includes/tagBar.pug
.article-sort-title= _p('page.tag') + ' - ' + page.tag
+articleSort(page.posts)
include includes/pagination.pug

引入js和css文件

在自定义的js里面添加

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
// -----------分类条的js-----------
categoriesBarActive()
topCategoriesBarScroll()
tagsBarActive()

//分类条
function categoriesBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#category-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/categories\/.*?\//;
var patbool = pattern.test(urlinfo);
console.log(patbool);
// 获取当前的分类
if (patbool) {
var valuegroup = urlinfo.split("/");
console.log(valuegroup[2]);
// 获取当前分类
var nowCategorie = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowCategorie).classList.add("select");
}
}
}

}

//鼠标控制横向滚动
function topCategoriesBarScroll(){
if (document.getElementById("category-bar-items")){
let xscroll = document.getElementById("category-bar-items");
xscroll.addEventListener("mousewheel", function (e) {
//计算鼠标滚轮滚动的距离
let v = -e.wheelDelta / 2;
xscroll.scrollLeft += v;
//阻止浏览器默认方法
e.preventDefault();
}, false);
}
}

// -----------标签条的js-----------
//标签条
function tagsBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
//console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#tags-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/tags\/.*?\//;
var patbool = pattern.test(urlinfo);
//console.log(patbool);
// 获取当前的标签
if (patbool) {
var valuegroup = urlinfo.split("/");
//console.log(valuegroup[2]);
// 获取当前分类
var nowTag = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowTag).classList.add("select");
}
}
}
}

修改导航栏一闪的问题

使用的安知鱼

修改main.js

修改顶栏一闪而过的 bug 修改本地themes/butterfly/source/js/main.js

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
  window.scrollCollect = () => {
return btf.throttle(function (e) {
const currentTop = window.scrollY || document.documentElement.scrollTop
const isDown = scrollDirection(currentTop)
if (currentTop > 56) {
+ $header.classList.add('is-top-bar')
if (isDown) {
if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible')
if (isChatBtnShow && isChatShow === true) {
chatBtnHide()
isChatShow = false
}
} else {
if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible')
if (isChatBtnHide && isChatShow === false) {
chatBtnShow()
isChatShow = true
}
}
$header.classList.add('nav-fixed')
if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
} else {
if (currentTop === 0) {
- $header.classList.remove('nav-fixed', 'nav-visible')
+ $header.classList.remove('is-top-bar')
}
$rightside.style.cssText = "opacity: ''; transform: ''"
}

if (document.body.scrollHeight <= innerHeight) {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
}, 200)()
}

侧边栏最近文章梅花

修改index.pug布局

去除首页最近文章显示,改为文章页显示,修改themes/butterfly/layout/includes/widget/index.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else
//- page
!=partial('includes/widget/card_author', {}, {cache: true})
!=partial('includes/widget/card_announcement', {}, {cache: true})
!=partial('includes/widget/card_top_self', {}, {cache: true})

.sticky_layout
if showToc
include ./card_post_toc.pug

//- !=partial('includes/widget/card_recent_post', {}, {cache: true}) //- 注释掉最近文章

!=partial('includes/widget/card_ad', {}, {cache: true})
!=partial('includes/widget/card_newest_comment', {}, {cache: true})
!=partial('includes/widget/card_categories', {}, {cache: true})
!=partial('includes/widget/card_tags', {}, {cache: true})

添加css美化

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
#aside-content .aside-list > .aside-list-item .content > time {
display: none;
}
#aside-content .aside-list > .aside-list-item .content > .title {
-webkit-line-clamp: 3;
font-weight: 700;
padding: 2px 0;
}
#aside-content .aside-list > .aside-list-item {
padding: 8px;
padding-top: 6px !important;
padding-bottom: 6px !important;
border-radius: 12px;
transition: 0.3s;
margin: 4px 0;
cursor: pointer;
}
@media screen and (min-width: 1300px) {
#aside-content .aside-list > .aside-list-item:hover {
transform: scale(1.03);
}
#aside-content .aside-list > .aside-list-item:active {
transform: scale(0.97);
}
}
#aside-content .aside-list > .aside-list-item:hover .thumbnail > img {
transform: scale(1);
}
#aside-content .aside-list > .aside-list-item:not(:last-child) {
border-bottom: 0 dashed var(--anzhiyu-background) !important;
}
#aside-content .aside-list > .aside-list-item .thumbnail {
border-radius: 8px;
border: var(--style-border);
}
#aside-content .aside-list > .aside-list-item:hover {
background: var(--anzhiyu-blue-main);
color: var(--anzhiyu-white);
transition: 0.3s;
box-shadow: var(--anzhiyu-shadow-main);
}
#aside-content .aside-list > .aside-list-item:hover a {
color: var(--anzhiyu-white) !important;
}
.card-widget.card-recent-post {
padding: 0.4rem 0.6rem !important;
}
文章作者: gglss
文章链接: http://example.com/posts/53427.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Butterfly美化记录三 | GGLSS

Butterfly美化记录三

分类页和标签页面添加Bar条

使用justlovesmile

新增pug文件

新增categoryBar.pug文件

首先是分类条,在themes/butterfly/layout/includes/处新建文件categoryBar.pug

1
2
3
4
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("category")
a.category-bar-more(href="/categories/") 更多

新增tarsBar.pug文件

其次是标签条,在themes/butterfly/layout/includes/处新建文件tagBar.pug,因为样式一样,所以没有更改id和class名称。

1
2
3
4
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("tag")
a.category-bar-more(href="/tags/") 更多

新建Hexo辅助函数

theme/butterfly/scripts/helpers/中创建get_arrays.js

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
hexo.extend.helper.register('getarray_bar', function (types) {
if (!types) {
types = "category"
}
const categoriesBar = function (categories) {
if (!categories || !categories.length) return ``
const categoryArr = []
hexo.locals.get('categories').map(function (category) {
categoryArr.push({ name: category.name, value: category.length })
})
categoryArr.sort((a, b) => { return b.value - a.value })
let strCategoriesBar = ``
for (let i = 0; i < categories.length; i++) {
strTemp=`
<div class="category-bar-item" id="${categoryArr[i].name}">
<a href="/categories/${categoryArr[i].name}/">${categoryArr[i].name}</a>
</div>`
strCategoriesBar+=strTemp
}
return strCategoriesBar
}
const tagsBar = function(tags) {
if (!tags || !tags.length) return ``
const tagArr = []
hexo.locals.get('tags').map(function (tag) {
tagArr.push({ name: tag.name, value: tag.length })
})
tagArr.sort((a, b) => { return b.value - a.value })
let strTagsBar = ``
for (let i = 0; i < tags.length; i++) {
strTemp=`
<div class="category-bar-item" id="${tagArr[i].name}">
<a href="/tags/${tagArr[i].name}/">${tagArr[i].name}</a>
</div>`
strTagsBar+=strTemp
}
return strTagsBar
}
if (types == "category"){
return categoriesBar(this.site.categories)
}
if (types == "tag"){
return tagsBar(this.site.tags)
}
})

在页面引用模块

在分类页面引用:找到theme/butterfly/layout/category.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extends includes/layout.pug

block content
if theme.category_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts.category_ui
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#category
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-folder-open
+ include includes/categoryBar.pug
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug

在标签页引用:找到theme/butterfly/layout/tag.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extends includes/layout.pug

block content
if theme.tag_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#tag
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-tags
+ include includes/tagBar.pug
.article-sort-title= _p('page.tag') + ' - ' + page.tag
+articleSort(page.posts)
include includes/pagination.pug

引入js和css文件

在自定义的js里面添加

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
// -----------分类条的js-----------
categoriesBarActive()
topCategoriesBarScroll()
tagsBarActive()

//分类条
function categoriesBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#category-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/categories\/.*?\//;
var patbool = pattern.test(urlinfo);
console.log(patbool);
// 获取当前的分类
if (patbool) {
var valuegroup = urlinfo.split("/");
console.log(valuegroup[2]);
// 获取当前分类
var nowCategorie = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowCategorie).classList.add("select");
}
}
}

}

//鼠标控制横向滚动
function topCategoriesBarScroll(){
if (document.getElementById("category-bar-items")){
let xscroll = document.getElementById("category-bar-items");
xscroll.addEventListener("mousewheel", function (e) {
//计算鼠标滚轮滚动的距离
let v = -e.wheelDelta / 2;
xscroll.scrollLeft += v;
//阻止浏览器默认方法
e.preventDefault();
}, false);
}
}

// -----------标签条的js-----------
//标签条
function tagsBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
//console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#tags-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/tags\/.*?\//;
var patbool = pattern.test(urlinfo);
//console.log(patbool);
// 获取当前的标签
if (patbool) {
var valuegroup = urlinfo.split("/");
//console.log(valuegroup[2]);
// 获取当前分类
var nowTag = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowTag).classList.add("select");
}
}
}
}

修改导航栏一闪的问题

使用的安知鱼

修改main.js

修改顶栏一闪而过的 bug 修改本地themes/butterfly/source/js/main.js

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
  window.scrollCollect = () => {
return btf.throttle(function (e) {
const currentTop = window.scrollY || document.documentElement.scrollTop
const isDown = scrollDirection(currentTop)
if (currentTop > 56) {
+ $header.classList.add('is-top-bar')
if (isDown) {
if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible')
if (isChatBtnShow && isChatShow === true) {
chatBtnHide()
isChatShow = false
}
} else {
if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible')
if (isChatBtnHide && isChatShow === false) {
chatBtnShow()
isChatShow = true
}
}
$header.classList.add('nav-fixed')
if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
} else {
if (currentTop === 0) {
- $header.classList.remove('nav-fixed', 'nav-visible')
+ $header.classList.remove('is-top-bar')
}
$rightside.style.cssText = "opacity: ''; transform: ''"
}

if (document.body.scrollHeight <= innerHeight) {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
}, 200)()
}

侧边栏最近文章梅花

修改index.pug布局

去除首页最近文章显示,改为文章页显示,修改themes/butterfly/layout/includes/widget/index.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else
//- page
!=partial('includes/widget/card_author', {}, {cache: true})
!=partial('includes/widget/card_announcement', {}, {cache: true})
!=partial('includes/widget/card_top_self', {}, {cache: true})

.sticky_layout
if showToc
include ./card_post_toc.pug

//- !=partial('includes/widget/card_recent_post', {}, {cache: true}) //- 注释掉最近文章

!=partial('includes/widget/card_ad', {}, {cache: true})
!=partial('includes/widget/card_newest_comment', {}, {cache: true})
!=partial('includes/widget/card_categories', {}, {cache: true})
!=partial('includes/widget/card_tags', {}, {cache: true})

添加css美化

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
#aside-content .aside-list > .aside-list-item .content > time {
display: none;
}
#aside-content .aside-list > .aside-list-item .content > .title {
-webkit-line-clamp: 3;
font-weight: 700;
padding: 2px 0;
}
#aside-content .aside-list > .aside-list-item {
padding: 8px;
padding-top: 6px !important;
padding-bottom: 6px !important;
border-radius: 12px;
transition: 0.3s;
margin: 4px 0;
cursor: pointer;
}
@media screen and (min-width: 1300px) {
#aside-content .aside-list > .aside-list-item:hover {
transform: scale(1.03);
}
#aside-content .aside-list > .aside-list-item:active {
transform: scale(0.97);
}
}
#aside-content .aside-list > .aside-list-item:hover .thumbnail > img {
transform: scale(1);
}
#aside-content .aside-list > .aside-list-item:not(:last-child) {
border-bottom: 0 dashed var(--anzhiyu-background) !important;
}
#aside-content .aside-list > .aside-list-item .thumbnail {
border-radius: 8px;
border: var(--style-border);
}
#aside-content .aside-list > .aside-list-item:hover {
background: var(--anzhiyu-blue-main);
color: var(--anzhiyu-white);
transition: 0.3s;
box-shadow: var(--anzhiyu-shadow-main);
}
#aside-content .aside-list > .aside-list-item:hover a {
color: var(--anzhiyu-white) !important;
}
.card-widget.card-recent-post {
padding: 0.4rem 0.6rem !important;
}
文章作者: gglss
文章链接: http://example.com/posts/53427.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/53508.html b/posts/53508.html index 2073d796b..f3783f670 100644 --- a/posts/53508.html +++ b/posts/53508.html @@ -1 +1 @@ -docker 帮助启动类命令(二) | GGLSS

docker 帮助启动类命令(二)

docker 帮助启动类命令(二)

docker 开机启动

systemctl enable docker

查看 docker 概要信息

docker info

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
scan: Docker Scan (Docker Inc., v0.12.0)

Server:
Containers: 6
Running: 0
Paused: 0
Stopped: 6
Images: 5
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc version: v1.0.2-0-g52b36a2
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: iZ8vbfaek3x3ogtpxnpnwfZ
ID: NQOP:KCP6:LS6G:K52A:XOQX:E7FG:FEHL:K3QX:NSLP:VY5S:TFX5:UR42
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://qp747t9w.mirror.aliyuncs.com/
Live Restore Enabled: false

查看 docker 总体帮助文档

docker –help

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST
env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)


查看 docker 命令帮助文档
> docker 具体命令 --help

```shell
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps --help

Usage: docker ps [OPTIONS]

List containers

Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

文章作者: gglss
文章链接: http://example.com/posts/53508.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +docker 帮助启动类命令(二) | GGLSS

docker 帮助启动类命令(二)

docker 帮助启动类命令(二)

docker 开机启动

systemctl enable docker

查看 docker 概要信息

docker info

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
scan: Docker Scan (Docker Inc., v0.12.0)

Server:
Containers: 6
Running: 0
Paused: 0
Stopped: 6
Images: 5
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc version: v1.0.2-0-g52b36a2
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: iZ8vbfaek3x3ogtpxnpnwfZ
ID: NQOP:KCP6:LS6G:K52A:XOQX:E7FG:FEHL:K3QX:NSLP:VY5S:TFX5:UR42
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://qp747t9w.mirror.aliyuncs.com/
Live Restore Enabled: false

查看 docker 总体帮助文档

docker –help

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST
env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)


查看 docker 命令帮助文档
> docker 具体命令 --help

```shell
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps --help

Usage: docker ps [OPTIONS]

List containers

Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

文章作者: gglss
文章链接: http://example.com/posts/53508.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/53812.html b/posts/53812.html index 7fd1f9839..17be736f6 100644 --- a/posts/53812.html +++ b/posts/53812.html @@ -1 +1 @@ -git提示Timed out的解决办法 | GGLSS

git提示Timed out的解决办法

报错代码

运行git代码会提示Timed out错误

1
使用git,会发生报错:Failed to connect to github.com port 443 after 21098 ms: Timed out

解决办法

设置代理

1
git config --global https.proxy

取消代理

1
git config --global --unset https.proxy

然后输入git 命令使用

文章作者: gglss
文章链接: http://example.com/posts/53812.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +git提示Timed out的解决办法 | GGLSS

git提示Timed out的解决办法

报错代码

运行git代码会提示Timed out错误

1
使用git,会发生报错:Failed to connect to github.com port 443 after 21098 ms: Timed out

解决办法

设置代理

1
git config --global https.proxy

取消代理

1
git config --global --unset https.proxy

然后输入git 命令使用

文章作者: gglss
文章链接: http://example.com/posts/53812.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/54899.html b/posts/54899.html index 84e626a5c..54403a748 100644 --- a/posts/54899.html +++ b/posts/54899.html @@ -1 +1 @@ -Butterfly美化记录一 | GGLSS

Butterfly美化记录一

注:这个魔改转载于Ariasakaの小窝

导航栏

分离菜单栏和搜索栏

让搜索栏放在最右侧,其他的导航栏居中

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
- if (theme.algolia_search.enable || theme.local_search.enable)
- #search-button
- a.site-page.social-icon.search
- i.fas.fa-search.fa-fw
- span=' '+_p('search.title')
!=partial('includes/header/menu_item', {}, {cache: true})
#nav-right
+ if (theme.algolia_search.enable || theme.local_search.enable)
+ #search-button
+ a.site-page.social-icon.search
+ i.fas.fa-search.fa-fw
- #toggle-menu
- a.site-page
- i.fas.fa-bars.fa-fw
+ #toggle-menu
+ a.site-page
+ i.fas.fa-bars.fa-fw

修改的文件nav.pug,版本为Butterfly 4.10.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
nav#nav
span#blog-info
a(href=url_for('/') title=config.title)
if theme.nav.logo
img.site-icon(src=url_for(theme.nav.logo))
if theme.nav.display_title
span.site-name=config.title

#menus
!=partial('includes/header/menu_item', {}, {cache: true})

#nav-right
if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable)
#search-button
a.site-page.social-icon.search(href="javascript:void(0);")
i.fas.fa-search.fa-fw

#toggle-menu
a.site-page
i.fas.fa-bars.fa-fw

居中

使用自定义[blogRoot]/self/css/meihua.css,添加下面的代码

1
2
3
4
5
6
7
#nav-right{
flex:1 1 auto;
justify-content: flex-end;
margin-left: auto;
display: flex;
flex-wrap:nowrap;
}

去掉导航栏下的蓝色长条

在自定义[blogRoot]/self/css/meihua.css里面添加

1
2
3
#nav *::after{
background-color: transparent!important;
}

子菜单横向布局

在自定义[blogRoot]/self/css/meihua.css里面添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* ----------导航栏横向下拉框---------- */

.menus_item_child li:not(#sidebar-menus li){
float: left;
border-radius: 6px!important;
-webkit-border-radius: 6px!important;
-moz-border-radius: 6px!important;
-ms-border-radius: 6px!important;
-o-border-radius: 6px!important;
}
.menus_item_child:not(#sidebar-menus ul){
/*left:calc(-150%)!important;*//*这是估算值,为了保持元素居中的,如果不合适可以自己调*/
left:50%;
translate:-50%;
}

显示标题

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug

1
2
3
4
5
6
7
8
9
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
!=partial('includes/header/menu_item', {}, {cache: true})
+ center(id="name-container")
+ a(id="page-name" href="javascript:scrollToTop()") PAGE_NAME
...

[blogRoot]/self/js/创建jquery.js文件,添加以下代码

1
2
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});

然后添加nav.js,并且按照注释修改配置

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
//js有一个小问题:就是只要鼠标滚动不论哪里都会响应,即便你滚动的是子元素

//2022.9.11 已修复,需要jq,请自行引入
document.getElementById("name-container").setAttribute("style", "display:none");

var position = $(window).scrollTop();

$(window).scroll(function () {

var scroll = $(window).scrollTop();

if (scroll > position) {


document.getElementById("name-container").setAttribute("style", "");
document.getElementsByClassName("menus_items")[1].setAttribute("style", "display:none!important");

} else {


document.getElementsByClassName("menus_items")[1].setAttribute("style", "");
document.getElementById("name-container").setAttribute("style", "display:none");

}

position = scroll;

});
function scrollToTop(){
document.getElementsByClassName("menus_items")[1].setAttribute("style","");
document.getElementById("name-container").setAttribute("style","display:none");
btf.scrollToDest(0, 500);
}
//修复没有弄右键菜单的童鞋无法回顶部的问题
document.getElementById("page-name").innerText = document.title.split(" | Ariasakaの小窝")[0];
/*这里是去掉你的网站全局名称的设置,如果你不需要去掉,你可以写成:
document.getElementById("page-name").innerText=document.title

或者把你的网站的分隔符和全局网站名称加上去*/

最后添加如下css,按照注释修改参数:

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
/*
2022.10.4更新:
根据我发现的没有自适应,间距不合理问题进行调整,如果用了这个的朋友们建议改一改
*/
#page-name::before{
font-size:18px;
position: absolute;
width:100%;
height:100%;
border-radius: 8px;
color:white!important;
top:0;
left:0;
content:'回到顶部';
background-color: var(--lyx-theme);
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
opacity: 0;
box-shadow: 0 0 3px var(--lyx-theme);
line-height: 45px; /*如果垂直位置不居中可以微调此值,也可以删了*/
}
#page-name:hover:before{
opacity: 1;
}
@media screen and (max-width:900px){
#page-name,#menus{
display:none!important;
}
}

#name-container{
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
#name-container:hover{
scale:1.03
}
#page-name{
position: relative;
padding:10px 30px/*如果文字间隔不合理可以微调修改,第二个是水平方向的padding,第一个是垂直的*/
}
#nav{
padding: 0 20px;
}

导航栏显示haver颜色

在自定义[blogRoot]/self/css/meihua.css里面添加

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
/* ----------修改导航栏的haver---------- */

.site-page {
padding: 5px;
margin: 3px;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
}
.site-page:hover {
background-color: var(--gglss-theme);
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 5px;
}
.site-page.child:hover {
background-color: var(--gglss-theme)!important;
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 4px;
}

/* ----------网站标题部分的增强版---------- */
#site-name::before{
opacity: 0;
background-color: var(--gglss-theme)!important;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
-o-border-radius: 8px;
transition: .3s;
-webkit-transition: .3s;
-moz-transition: .3s;
-ms-transition: .3s;
-o-transition: .3s;
position:absolute;
top:0!important;
right:0!important;
width:100%;
height:100%;
content: "\f015";
box-shadow: 0 0 5px var(--gglss-theme);
font-family: "Font Awesome 6 Free";
text-align: center;
color:white;
line-height:34px;/*如果有溢出或者垂直不居中的现象微调一下这个参数*/
font-size: 18px;/*根据个人喜好*/
}
#site-name:hover::before{
opacity: 1;
scale:1.03;
}
#site-name{
position: relative;
font-size: 24px; /*一定要把字体调大点,否则效果惨不忍睹!*/
}
:root{
--gglss-theme:#49B1F5 /*我的主题色*/
}

文章作者: gglss
文章链接: http://example.com/posts/54899.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Butterfly美化记录一 | GGLSS

Butterfly美化记录一

注:这个魔改转载于Ariasakaの小窝

导航栏

分离菜单栏和搜索栏

让搜索栏放在最右侧,其他的导航栏居中

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
- if (theme.algolia_search.enable || theme.local_search.enable)
- #search-button
- a.site-page.social-icon.search
- i.fas.fa-search.fa-fw
- span=' '+_p('search.title')
!=partial('includes/header/menu_item', {}, {cache: true})
#nav-right
+ if (theme.algolia_search.enable || theme.local_search.enable)
+ #search-button
+ a.site-page.social-icon.search
+ i.fas.fa-search.fa-fw
- #toggle-menu
- a.site-page
- i.fas.fa-bars.fa-fw
+ #toggle-menu
+ a.site-page
+ i.fas.fa-bars.fa-fw

修改的文件nav.pug,版本为Butterfly 4.10.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
nav#nav
span#blog-info
a(href=url_for('/') title=config.title)
if theme.nav.logo
img.site-icon(src=url_for(theme.nav.logo))
if theme.nav.display_title
span.site-name=config.title

#menus
!=partial('includes/header/menu_item', {}, {cache: true})

#nav-right
if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable)
#search-button
a.site-page.social-icon.search(href="javascript:void(0);")
i.fas.fa-search.fa-fw

#toggle-menu
a.site-page
i.fas.fa-bars.fa-fw

居中

使用自定义[blogRoot]/self/css/meihua.css,添加下面的代码

1
2
3
4
5
6
7
#nav-right{
flex:1 1 auto;
justify-content: flex-end;
margin-left: auto;
display: flex;
flex-wrap:nowrap;
}

去掉导航栏下的蓝色长条

在自定义[blogRoot]/self/css/meihua.css里面添加

1
2
3
#nav *::after{
background-color: transparent!important;
}

子菜单横向布局

在自定义[blogRoot]/self/css/meihua.css里面添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* ----------导航栏横向下拉框---------- */

.menus_item_child li:not(#sidebar-menus li){
float: left;
border-radius: 6px!important;
-webkit-border-radius: 6px!important;
-moz-border-radius: 6px!important;
-ms-border-radius: 6px!important;
-o-border-radius: 6px!important;
}
.menus_item_child:not(#sidebar-menus ul){
/*left:calc(-150%)!important;*//*这是估算值,为了保持元素居中的,如果不合适可以自己调*/
left:50%;
translate:-50%;
}

显示标题

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug

1
2
3
4
5
6
7
8
9
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
!=partial('includes/header/menu_item', {}, {cache: true})
+ center(id="name-container")
+ a(id="page-name" href="javascript:scrollToTop()") PAGE_NAME
...

[blogRoot]/self/js/创建jquery.js文件,添加以下代码

1
2
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});

然后添加nav.js,并且按照注释修改配置

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
//js有一个小问题:就是只要鼠标滚动不论哪里都会响应,即便你滚动的是子元素

//2022.9.11 已修复,需要jq,请自行引入
document.getElementById("name-container").setAttribute("style", "display:none");

var position = $(window).scrollTop();

$(window).scroll(function () {

var scroll = $(window).scrollTop();

if (scroll > position) {


document.getElementById("name-container").setAttribute("style", "");
document.getElementsByClassName("menus_items")[1].setAttribute("style", "display:none!important");

} else {


document.getElementsByClassName("menus_items")[1].setAttribute("style", "");
document.getElementById("name-container").setAttribute("style", "display:none");

}

position = scroll;

});
function scrollToTop(){
document.getElementsByClassName("menus_items")[1].setAttribute("style","");
document.getElementById("name-container").setAttribute("style","display:none");
btf.scrollToDest(0, 500);
}
//修复没有弄右键菜单的童鞋无法回顶部的问题
document.getElementById("page-name").innerText = document.title.split(" | Ariasakaの小窝")[0];
/*这里是去掉你的网站全局名称的设置,如果你不需要去掉,你可以写成:
document.getElementById("page-name").innerText=document.title

或者把你的网站的分隔符和全局网站名称加上去*/

最后添加如下css,按照注释修改参数:

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
/*
2022.10.4更新:
根据我发现的没有自适应,间距不合理问题进行调整,如果用了这个的朋友们建议改一改
*/
#page-name::before{
font-size:18px;
position: absolute;
width:100%;
height:100%;
border-radius: 8px;
color:white!important;
top:0;
left:0;
content:'回到顶部';
background-color: var(--lyx-theme);
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
opacity: 0;
box-shadow: 0 0 3px var(--lyx-theme);
line-height: 45px; /*如果垂直位置不居中可以微调此值,也可以删了*/
}
#page-name:hover:before{
opacity: 1;
}
@media screen and (max-width:900px){
#page-name,#menus{
display:none!important;
}
}

#name-container{
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
#name-container:hover{
scale:1.03
}
#page-name{
position: relative;
padding:10px 30px/*如果文字间隔不合理可以微调修改,第二个是水平方向的padding,第一个是垂直的*/
}
#nav{
padding: 0 20px;
}

导航栏显示haver颜色

在自定义[blogRoot]/self/css/meihua.css里面添加

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
/* ----------修改导航栏的haver---------- */

.site-page {
padding: 5px;
margin: 3px;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
}
.site-page:hover {
background-color: var(--gglss-theme);
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 5px;
}
.site-page.child:hover {
background-color: var(--gglss-theme)!important;
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 4px;
}

/* ----------网站标题部分的增强版---------- */
#site-name::before{
opacity: 0;
background-color: var(--gglss-theme)!important;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
-o-border-radius: 8px;
transition: .3s;
-webkit-transition: .3s;
-moz-transition: .3s;
-ms-transition: .3s;
-o-transition: .3s;
position:absolute;
top:0!important;
right:0!important;
width:100%;
height:100%;
content: "\f015";
box-shadow: 0 0 5px var(--gglss-theme);
font-family: "Font Awesome 6 Free";
text-align: center;
color:white;
line-height:34px;/*如果有溢出或者垂直不居中的现象微调一下这个参数*/
font-size: 18px;/*根据个人喜好*/
}
#site-name:hover::before{
opacity: 1;
scale:1.03;
}
#site-name{
position: relative;
font-size: 24px; /*一定要把字体调大点,否则效果惨不忍睹!*/
}
:root{
--gglss-theme:#49B1F5 /*我的主题色*/
}

文章作者: gglss
文章链接: http://example.com/posts/54899.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55045.html b/posts/55045.html index d281ee72f..7b83ec733 100644 --- a/posts/55045.html +++ b/posts/55045.html @@ -1 +1 @@ -镜像 | GGLSS

镜像

镜像

背景

docker镜像是最小的,被精简过的Linux系统,是不带vim命令的

使用命令 ‘vim a.txt’ 进行新建编辑a.txt文件,就会提示找不到命令

给镜像容器新增vim命令

  1. 更新镜像

    apt-get update

  2. 下载vim功能

    apt-get -y install vim

  3. 提交副本使成为一个新镜像

    docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
356e32244966 mytest/ubuntu:3.5 "bash" 2 hours ago Up 2 hours elated_aryabhata
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m="vim cmd add ok" -a="ggls" 356e32244966 ggls/ubuntu:1.5
sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ggls/ubuntu 1.5 87e99e19eeef 7 seconds ago 176MB
mytest/ubuntu 3.5 a92a27affdde 2 hours ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
文章作者: gglss
文章链接: http://example.com/posts/55045.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +镜像 | GGLSS

镜像

镜像

背景

docker镜像是最小的,被精简过的Linux系统,是不带vim命令的

使用命令 ‘vim a.txt’ 进行新建编辑a.txt文件,就会提示找不到命令

给镜像容器新增vim命令

  1. 更新镜像

    apt-get update

  2. 下载vim功能

    apt-get -y install vim

  3. 提交副本使成为一个新镜像

    docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
356e32244966 mytest/ubuntu:3.5 "bash" 2 hours ago Up 2 hours elated_aryabhata
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker commit -m="vim cmd add ok" -a="ggls" 356e32244966 ggls/ubuntu:1.5
sha256:87e99e19eeef47d4f0daaffc8498690614e0d95eae60ef61b439abe97b62fd16
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ggls/ubuntu 1.5 87e99e19eeef 7 seconds ago 176MB
mytest/ubuntu 3.5 a92a27affdde 2 hours ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
文章作者: gglss
文章链接: http://example.com/posts/55045.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55320.html b/posts/55320.html index 8dceca45d..3013d2559 100644 --- a/posts/55320.html +++ b/posts/55320.html @@ -1 +1 @@ -Jmeter之断言和聚合报告 | GGLSS

Jmeter之断言和聚合报告

怎么对请求进行响应断言

  • 右键 HTTP Request

  • 点击add --> Assertions --> Response Assertion

断言组件就添加成功

配置响应断言

Field to Test 下面就是断言的各种方法

  • Text Response 文本断言

Patterns to Test输入title之间包含的文字,及配置成功

  • Response Code 响应码断言

Patterns to Test输入响应码,比如 200

  • Response Message
  • Request Headers
  • URL Sampled
  • Document(text)
  • Request Data

然后运行但并发压测,验证断言添加是否正确,在View Results Tree 中查看结果

怎么使用聚合报告

  • 右键 Thread Group

  • 点击 Add --> Listener --> Aggregate Report

聚合报告就添加了

性能指标解读

  • Average: 单个请求的平均响应时间
  • Median: 中位数,也就是50%用户的响应时间
  • 90%Line: 90%用户的响应时间
  • 95%Line: 95%用户的响应时间
  • 99%Line: 99%用户的响应时间
  • Min: 最小的请求响应时间
  • Max: 最大的请求响应时间
  • Error%: 错误率
  • Throughput: 吞吐量
  • Received KB/sec: 每秒从服务器接收到的数据量
  • Sent KB/sec: 每秒从客户端发送的请求的数量
文章作者: gglss
文章链接: http://example.com/posts/55320.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Jmeter之断言和聚合报告 | GGLSS

Jmeter之断言和聚合报告

怎么对请求进行响应断言

  • 右键 HTTP Request

  • 点击add --> Assertions --> Response Assertion

断言组件就添加成功

配置响应断言

Field to Test 下面就是断言的各种方法

  • Text Response 文本断言

Patterns to Test输入title之间包含的文字,及配置成功

  • Response Code 响应码断言

Patterns to Test输入响应码,比如 200

  • Response Message
  • Request Headers
  • URL Sampled
  • Document(text)
  • Request Data

然后运行但并发压测,验证断言添加是否正确,在View Results Tree 中查看结果

怎么使用聚合报告

  • 右键 Thread Group

  • 点击 Add --> Listener --> Aggregate Report

聚合报告就添加了

性能指标解读

  • Average: 单个请求的平均响应时间
  • Median: 中位数,也就是50%用户的响应时间
  • 90%Line: 90%用户的响应时间
  • 95%Line: 95%用户的响应时间
  • 99%Line: 99%用户的响应时间
  • Min: 最小的请求响应时间
  • Max: 最大的请求响应时间
  • Error%: 错误率
  • Throughput: 吞吐量
  • Received KB/sec: 每秒从服务器接收到的数据量
  • Sent KB/sec: 每秒从客户端发送的请求的数量
文章作者: gglss
文章链接: http://example.com/posts/55320.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55332.html b/posts/55332.html index ff95e6d7d..f43ec6894 100644 --- a/posts/55332.html +++ b/posts/55332.html @@ -1 +1 @@ -继承、重写与重载 | GGLSS

继承、重写与重载

继承

继承是相对于类来说,通过关键字extends来实现

  • 可以获取父类的属性和方法
  • 提高代码的复用性
  • 父类修改了内容,子类也会修改

调用

父类的属性和方法

  • this表示当前对象的引用
  • super表示父类对象的引用
  • 调用构造方法
    • this(参数列表)表示调用当前类中的构造方法
    • super(参数列表)表示调用父类的构造方法,必须放在方法中的第一行
  • 调用属性
    • this.属性表示调用当前对象的属性
    • super.属性表示调用父类的属性,可以拿到被重写之前的数据
  • 调用方法
    • this.方法表示调用当前对象的方法
    • super.方法表示调用父类的方法,可以拿到被重写之前的方法,不用放在代码的第一行

重写

重写是子类可以重写父类的方法,使用override标识

  • 方法名和参数不变,只修改方法体
  • 访问权限不能比父类的范围更小
  • 私有的方法能被子类继承,但不能使用和重写
  • 静态的方法能被子类继承,能使用但不能被重写
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class testeass {

    public void aa(String name, int age){
    System.out.println(name + age);
    }
    }

    class testaaa extends testeass{

    @Override
    public void aa(String name, int age) {
    System.out.println("这是重写方法,方法名、参数和返回数据都不变,只能修改方法体");
    System.out.println(name + age);
    }
    }

重载

重载是同一个类下对方法进行重载

  • 方法名相同,参数不相同 (参数个数不同/参数类型不同/参数排列顺序不同)
  • 返回类型不限制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class jichu {

    // 原方法
    public void hello(String name, int aa){
    System.out.println("拼接起来的值是:"+ name + aa );
    }

    // 重载后的方法
    public void hello(int aa, String name){
    System.out.println("aaaaaaa:" + aa);
    }
    }
文章作者: gglss
文章链接: http://example.com/posts/55332.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +继承、重写与重载 | GGLSS

继承、重写与重载

继承

继承是相对于类来说,通过关键字extends来实现

  • 可以获取父类的属性和方法
  • 提高代码的复用性
  • 父类修改了内容,子类也会修改

调用

父类的属性和方法

  • this表示当前对象的引用
  • super表示父类对象的引用
  • 调用构造方法
    • this(参数列表)表示调用当前类中的构造方法
    • super(参数列表)表示调用父类的构造方法,必须放在方法中的第一行
  • 调用属性
    • this.属性表示调用当前对象的属性
    • super.属性表示调用父类的属性,可以拿到被重写之前的数据
  • 调用方法
    • this.方法表示调用当前对象的方法
    • super.方法表示调用父类的方法,可以拿到被重写之前的方法,不用放在代码的第一行

重写

重写是子类可以重写父类的方法,使用override标识

  • 方法名和参数不变,只修改方法体
  • 访问权限不能比父类的范围更小
  • 私有的方法能被子类继承,但不能使用和重写
  • 静态的方法能被子类继承,能使用但不能被重写
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class testeass {

    public void aa(String name, int age){
    System.out.println(name + age);
    }
    }

    class testaaa extends testeass{

    @Override
    public void aa(String name, int age) {
    System.out.println("这是重写方法,方法名、参数和返回数据都不变,只能修改方法体");
    System.out.println(name + age);
    }
    }

重载

重载是同一个类下对方法进行重载

  • 方法名相同,参数不相同 (参数个数不同/参数类型不同/参数排列顺序不同)
  • 返回类型不限制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class jichu {

    // 原方法
    public void hello(String name, int aa){
    System.out.println("拼接起来的值是:"+ name + aa );
    }

    // 重载后的方法
    public void hello(int aa, String name){
    System.out.println("aaaaaaa:" + aa);
    }
    }
文章作者: gglss
文章链接: http://example.com/posts/55332.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55393.html b/posts/55393.html index fd0f3b428..5f7cc57ca 100644 --- a/posts/55393.html +++ b/posts/55393.html @@ -1 +1 @@ -jmeter对数据库进行增删改查 | GGLSS

jmeter对数据库进行增删改查

环境

  • jmeter版本(5.1.1)
  • mysql-connector-java-8.0.15.jar

mysql.jar放在jmeter的lib目录下

配置

连接配置组件

  • 右键Thread Group
  • 点击Add -> Config Element -> JDBC Connection Configuration

参数配置

  • ==Varianle Name for created pool==:db_connnection_pool # 连接池名称
  • ==Validation Query==:select 1
  • ==Database URL==:jdbc:mysql://8.142.144.75:3306/jmeter_class?alloMultiQueries = true&useSSL=false
  • ==JDBC Driver class==:选择com.mysql.jbc.Driver
  • 输入username
  • 输入password

Jmeter数据库JDBC请求

  • 右键Thread Group
  • 点击Add -> Sampler -> JDBC Request
配置介绍

Variable Name Bound to Pool: 配置参数区
SQL Query:sql语句区
其他:变量配置区

举个栗子:通过Insert语句,向数据库添加测试数据
  • JDBC Connection Configuration: db_connnection_pool #输入连接池名称
  • Query Type:选择Prepared Updata Statement
  • Quert:输入sql语句
1
INSERT INTO jmeter_class.user (`username`,`password`) VALUES(?,?)
  • Paeameter values:testuser,aaaaaa
  • Paeameter types:varchar,varchar
  • Query timeout(s):6
  • 添加查看结果树
  • 运行

运行结果ResponseBody:

1
1 updates.

这就配置成功

文章作者: gglss
文章链接: http://example.com/posts/55393.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +jmeter对数据库进行增删改查 | GGLSS

jmeter对数据库进行增删改查

环境

  • jmeter版本(5.1.1)
  • mysql-connector-java-8.0.15.jar

mysql.jar放在jmeter的lib目录下

配置

连接配置组件

  • 右键Thread Group
  • 点击Add -> Config Element -> JDBC Connection Configuration

参数配置

  • ==Varianle Name for created pool==:db_connnection_pool # 连接池名称
  • ==Validation Query==:select 1
  • ==Database URL==:jdbc:mysql://8.142.144.75:3306/jmeter_class?alloMultiQueries = true&useSSL=false
  • ==JDBC Driver class==:选择com.mysql.jbc.Driver
  • 输入username
  • 输入password

Jmeter数据库JDBC请求

  • 右键Thread Group
  • 点击Add -> Sampler -> JDBC Request
配置介绍

Variable Name Bound to Pool: 配置参数区
SQL Query:sql语句区
其他:变量配置区

举个栗子:通过Insert语句,向数据库添加测试数据
  • JDBC Connection Configuration: db_connnection_pool #输入连接池名称
  • Query Type:选择Prepared Updata Statement
  • Quert:输入sql语句
1
INSERT INTO jmeter_class.user (`username`,`password`) VALUES(?,?)
  • Paeameter values:testuser,aaaaaa
  • Paeameter types:varchar,varchar
  • Query timeout(s):6
  • 添加查看结果树
  • 运行

运行结果ResponseBody:

1
1 updates.

这就配置成功

文章作者: gglss
文章链接: http://example.com/posts/55393.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55605.html b/posts/55605.html index cd0231640..82530eac5 100644 --- a/posts/55605.html +++ b/posts/55605.html @@ -1 +1 @@ -docker 镜像(一) | GGLSS

docker 镜像(一)

镜像(一)

查询本地主机上的镜像

docker images
OPTIONS说明:

    • a 列出本地所有的镜像(含历史镜像)
    • q 只显示镜像ID

举个栗子

1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images -q
b8e65a4d736d
fb5657adc892
feb5d9fea6a5
5d0da3dc9764
9b9cb95443b5
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

查询镜像仓库是否有该镜像

docker search 镜像名称

举个栗子

STARS 点赞数
OFFICIAL 官方认证

1
2
3
4
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker search hello-world
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hello-world Hello World! (an example of minimal Dockeriz… 1718 [OK]
kitematic/hello-world-nginx A light-weight nginx container that demonstr… 151

显示前n条镜像

docker search –limit n 镜像名称

1
2
3
4
5
6
7
8
9
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker search --limit 5 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 10851 [OK]
bitnami/redis Bitnami Redis Docker Image 214 [OK]
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 36 [OK]
circleci/redis CircleCI images for Redis 12 [OK]
bitnami/redis-exporter 6
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

下载安装镜像到本地

docker pull 镜像名称:标签版本号

没有tag就是最新版

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker pull redis:6.0.8
6.0.8: Pulling from library/redis
bb79b6b2107f: Pull complete
1ed3521a5dcb: Pull complete
5999b99cee8f: Pull complete
3f806f5245c9: Pull complete
f8a4497572b2: Pull complete
eafe3b6b8d06: Pull complete
Digest: sha256:21db12e5ab3cc343e9376d655e8eabbdbe5516801373e95a8a9e66010c5b8819
Status: Downloaded newer image for redis:6.0.8
docker.io/library/redis:6.0.8
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

文章作者: gglss
文章链接: http://example.com/posts/55605.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +docker 镜像(一) | GGLSS

docker 镜像(一)

镜像(一)

查询本地主机上的镜像

docker images
OPTIONS说明:

    • a 列出本地所有的镜像(含历史镜像)
    • q 只显示镜像ID

举个栗子

1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#
1
2
3
4
5
6
7
8
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker images -q
b8e65a4d736d
fb5657adc892
feb5d9fea6a5
5d0da3dc9764
9b9cb95443b5
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

查询镜像仓库是否有该镜像

docker search 镜像名称

举个栗子

STARS 点赞数
OFFICIAL 官方认证

1
2
3
4
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker search hello-world
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
hello-world Hello World! (an example of minimal Dockeriz… 1718 [OK]
kitematic/hello-world-nginx A light-weight nginx container that demonstr… 151

显示前n条镜像

docker search –limit n 镜像名称

1
2
3
4
5
6
7
8
9
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker search --limit 5 redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 10851 [OK]
bitnami/redis Bitnami Redis Docker Image 214 [OK]
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 36 [OK]
circleci/redis CircleCI images for Redis 12 [OK]
bitnami/redis-exporter 6
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

下载安装镜像到本地

docker pull 镜像名称:标签版本号

没有tag就是最新版

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker pull redis:6.0.8
6.0.8: Pulling from library/redis
bb79b6b2107f: Pull complete
1ed3521a5dcb: Pull complete
5999b99cee8f: Pull complete
3f806f5245c9: Pull complete
f8a4497572b2: Pull complete
eafe3b6b8d06: Pull complete
Digest: sha256:21db12e5ab3cc343e9376d655e8eabbdbe5516801373e95a8a9e66010c5b8819
Status: Downloaded newer image for redis:6.0.8
docker.io/library/redis:6.0.8
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

文章作者: gglss
文章链接: http://example.com/posts/55605.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/557.html b/posts/557.html index 93bce623c..441af819a 100644 --- a/posts/557.html +++ b/posts/557.html @@ -1 +1 @@ -接口开发环境部署 | GGLSS

接口开发环境部署

开发环境

  • IDEA
  • Maven
  • Spring Boot
  • JDK_86001

在idea安装SpringBoot插件

在maven下安装插件,需要在pox.xml文件输入下面的数据,然后更新文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<springboot.version>2.5.6</springboot.version>
<swagger.version>2.9.2</swagger.version>
</properties>

<dependencies>
<!-- springboot 2.5.6 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${springboot.version}</version>
</dependency>
</dependencies>

上面的${springboot.version}是在上面里面定义的版本信息,如果多个插件的版本一致就可以在属性上进行定义,然后使用变量进行引用

文章作者: gglss
文章链接: http://example.com/posts/557.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +接口开发环境部署 | GGLSS

接口开发环境部署

开发环境

  • IDEA
  • Maven
  • Spring Boot
  • JDK_86001

在idea安装SpringBoot插件

在maven下安装插件,需要在pox.xml文件输入下面的数据,然后更新文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<springboot.version>2.5.6</springboot.version>
<swagger.version>2.9.2</swagger.version>
</properties>

<dependencies>
<!-- springboot 2.5.6 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${springboot.version}</version>
</dependency>
</dependencies>

上面的${springboot.version}是在上面里面定义的版本信息,如果多个插件的版本一致就可以在属性上进行定义,然后使用变量进行引用

文章作者: gglss
文章链接: http://example.com/posts/557.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/55957.html b/posts/55957.html index a3e9d0c25..ce9e955a9 100644 --- a/posts/55957.html +++ b/posts/55957.html @@ -1 +1 @@ -Shell工具(二) | GGLSS

Shell工具(二)

awk工具

强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

awk [选项参数] ‘pattern1{action1}’ filename

  • pattern:表示awk在数据中查找的内容
  • action:找到匹配内容时执行命令
选项参数功能
-F指定输入文件分隔符
-v赋值一个用户定义变量
举个栗子

数据准备的是/etc/passwd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@b09ed0cc2c9d opt]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

搜素passwd文件以root关键字开头的所有航,并输出该行的第7列

1
2
3
[root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $7}' passwd
/bin/bash
[root@b09ed0cc2c9d opt]#

搜素passwd文件以root关键字开头的所有航,并输出该行的第1列和第7列,输出时以逗号分隔

1
2
[root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $1","$7}' passwd
root,/bin/bash

只显示/etc/passwd的第一列和第7列,以逗号分隔,且在所有航前面添加列名 user,shell在最后一行添加 ddd, /bin/zuishuai

1
[root@b09ed0cc2c9d opt]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "ddd,bin/zuishuai"}' passwd

注意:BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行

将passwd 文件中的用户id增加数值1并输出

1
[root@b09ed0cc2c9d opt]# awk -F : -v i=1 '{print $3+i}' passwd
内置变量
变量说明
filename文件名
nr已读的记录数
nf浏览记录的域的个数
举个栗子

数据准备

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# cat sed.txt
dong shen
guan zhen
wo wo
lai lai

le le

统计passwd文件名,每行的行号,每列的列数

1
[root@b09ed0cc2c9d opt]# awk -F : '{print FILENAME "," NR "," NF}' passwd

打印空行所在的行号

1
awk '/^$/ {print NR}' sed.txt
sort工具

文件排序

sort(选项)(参数)

选项说明
-n按照数值大小排序
-r以相反的顺序排序
-t设置排序使用的分隔字符
-k指定需要排序的列

参数是指定待排序文件列表

文章作者: gglss
文章链接: http://example.com/posts/55957.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell工具(二) | GGLSS

Shell工具(二)

awk工具

强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

awk [选项参数] ‘pattern1{action1}’ filename

  • pattern:表示awk在数据中查找的内容
  • action:找到匹配内容时执行命令
选项参数功能
-F指定输入文件分隔符
-v赋值一个用户定义变量
举个栗子

数据准备的是/etc/passwd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@b09ed0cc2c9d opt]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

搜素passwd文件以root关键字开头的所有航,并输出该行的第7列

1
2
3
[root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $7}' passwd
/bin/bash
[root@b09ed0cc2c9d opt]#

搜素passwd文件以root关键字开头的所有航,并输出该行的第1列和第7列,输出时以逗号分隔

1
2
[root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $1","$7}' passwd
root,/bin/bash

只显示/etc/passwd的第一列和第7列,以逗号分隔,且在所有航前面添加列名 user,shell在最后一行添加 ddd, /bin/zuishuai

1
[root@b09ed0cc2c9d opt]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "ddd,bin/zuishuai"}' passwd

注意:BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行

将passwd 文件中的用户id增加数值1并输出

1
[root@b09ed0cc2c9d opt]# awk -F : -v i=1 '{print $3+i}' passwd
内置变量
变量说明
filename文件名
nr已读的记录数
nf浏览记录的域的个数
举个栗子

数据准备

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# cat sed.txt
dong shen
guan zhen
wo wo
lai lai

le le

统计passwd文件名,每行的行号,每列的列数

1
[root@b09ed0cc2c9d opt]# awk -F : '{print FILENAME "," NR "," NF}' passwd

打印空行所在的行号

1
awk '/^$/ {print NR}' sed.txt
sort工具

文件排序

sort(选项)(参数)

选项说明
-n按照数值大小排序
-r以相反的顺序排序
-t设置排序使用的分隔字符
-k指定需要排序的列

参数是指定待排序文件列表

文章作者: gglss
文章链接: http://example.com/posts/55957.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/56062.html b/posts/56062.html index e6470133c..c204b625b 100644 --- a/posts/56062.html +++ b/posts/56062.html @@ -1 +1 @@ -高数一 | GGLSS

高数一

极限的等价无穷小替换

当 x->0 时

  • sinx~x

  • tanx ~ x

  • e^x-1 ~ x

  • ln(1+x) ~ x

  • 1-cosx~1/2 x²

  • a^x -1 ~ xIna

  • arcsinx ~ x

  • arctanx ~ x

  • tanx-sinx ~1/2 x³

  • (1+x)^a-1 ~ ax

导数

文章作者: gglss
文章链接: http://example.com/posts/56062.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +高数一 | GGLSS

高数一

极限的等价无穷小替换

当 x->0 时

  • sinx~x

  • tanx ~ x

  • e^x-1 ~ x

  • ln(1+x) ~ x

  • 1-cosx~1/2 x²

  • a^x -1 ~ xIna

  • arcsinx ~ x

  • arctanx ~ x

  • tanx-sinx ~1/2 x³

  • (1+x)^a-1 ~ ax

导数

文章作者: gglss
文章链接: http://example.com/posts/56062.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/56883.html b/posts/56883.html index bde5ed228..1841b0037 100644 --- a/posts/56883.html +++ b/posts/56883.html @@ -1 +1 @@ -Regular Expression Extractor正则表达式处理器 | GGLSS

Regular Expression Extractor正则表达式处理器

正则表达式规则

  • ():括起来的部分是要提取的
  • .:匹配任何字符串
  • +:一次或多次
  • ?:在找到第一个匹配项后停止

模板

用$$引用起来,如果正则表达式中有多个正则表达式,可以是$3$$2$等,表示解析到的第几个值给title,$1$表示第一个

匹配数字

0代表随机,1代表全部取值,通常使用0

缺省值

若参数没有取到值,那默认给一个值让他取

文章作者: gglss
文章链接: http://example.com/posts/56883.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Regular Expression Extractor正则表达式处理器 | GGLSS

Regular Expression Extractor正则表达式处理器

正则表达式规则

  • ():括起来的部分是要提取的
  • .:匹配任何字符串
  • +:一次或多次
  • ?:在找到第一个匹配项后停止

模板

用$$引用起来,如果正则表达式中有多个正则表达式,可以是$3$$2$等,表示解析到的第几个值给title,$1$表示第一个

匹配数字

0代表随机,1代表全部取值,通常使用0

缺省值

若参数没有取到值,那默认给一个值让他取

文章作者: gglss
文章链接: http://example.com/posts/56883.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/57578.html b/posts/57578.html index 9399e3444..1773d8a9b 100644 --- a/posts/57578.html +++ b/posts/57578.html @@ -1 +1 @@ -使用moko编写重定向测试接口(四) | GGLSS

使用moko编写重定向测试接口(四)

上一节已经写了规则,这次直接来编写Get和Post请求

重定向的测试接口

  • 使用了redirectTo:目标地址
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
[
{
"description": "重定向到百度",
"request": {
"uri": "/redirect"
},
"redirectTo": "http://www.baidu.com"
},
{
"description": "重定向到自己的网页上",
"request": {
"uri": "/redirect/topath"
},
"redirectTo": "/redirect/new"
},
{
"description": "这是被重定到的请求",
"request": {
"uri": "/redirect/new"
},
"response": {
"text": "重定向成功了"
}
}
]
文章作者: gglss
文章链接: http://example.com/posts/57578.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用moko编写重定向测试接口(四) | GGLSS

使用moko编写重定向测试接口(四)

上一节已经写了规则,这次直接来编写Get和Post请求

重定向的测试接口

  • 使用了redirectTo:目标地址
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
[
{
"description": "重定向到百度",
"request": {
"uri": "/redirect"
},
"redirectTo": "http://www.baidu.com"
},
{
"description": "重定向到自己的网页上",
"request": {
"uri": "/redirect/topath"
},
"redirectTo": "/redirect/new"
},
{
"description": "这是被重定到的请求",
"request": {
"uri": "/redirect/new"
},
"response": {
"text": "重定向成功了"
}
}
]
文章作者: gglss
文章链接: http://example.com/posts/57578.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/58312.html b/posts/58312.html index edc38ed0e..61daac3c8 100644 --- a/posts/58312.html +++ b/posts/58312.html @@ -1 +1 @@ -使用docker安装常用软件:mysql | GGLSS

使用docker安装常用软件:mysql

使用docker安装常用软件:mysql

以mysql 5.7为例

使用docker pull mysql:5.7拉取mysql 5.7镜像

使用镜像创建容器

简单版

使用docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7运行镜像创建容器

因为linux系统自己装了mysql,避免端口冲突,先运行ps -ef|grep mysql查询

使用docker ps查询容器编号

使用docker exec -it 容器编号 bash进入mysql容器

使用mysql -uroot -p,输入密码,登录mysql

验证

show databases

1
2
3
4
5
6
7
8
9
10
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
中文乱码问题
1
2
3
4
5
INSERT INTo t1 VALUES(3, "张三");
---
INSERT INTo t1 VALUES(3, "张三")
> 1366 - Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
> 时间: 0.038s

因为docker默认编码字符集隐患

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>

解决中文乱码问题

在宿主机的/ggls/mysql/conf目录下vim my.cnf文件,通过容器卷同步给容器实例

1
2
3
4
5
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

改完后重启mysql实例

服务器输入SHOW VARIABLES LIKE 'character%';验证

docker安装好并run出容器后,先修改字符集编码在创建mysql库

删库备份问题

只要本机上面的容器卷存在,容器卷位置没有改变的情况下,就算容器被删除,重新打开后,创建的数据库,表都还存在

工作使用版启动容器方法

1
2
3
4
5
6
7
docker run -d -p 3306:3306 --privileged=true
-v /ggls/mysql/log:/var/log/mysql
-v /ggls/mysql/data:/var/lib/mysql
-v /ggls/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
文章作者: gglss
文章链接: http://example.com/posts/58312.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用docker安装常用软件:mysql | GGLSS

使用docker安装常用软件:mysql

使用docker安装常用软件:mysql

以mysql 5.7为例

使用docker pull mysql:5.7拉取mysql 5.7镜像

使用镜像创建容器

简单版

使用docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7运行镜像创建容器

因为linux系统自己装了mysql,避免端口冲突,先运行ps -ef|grep mysql查询

使用docker ps查询容器编号

使用docker exec -it 容器编号 bash进入mysql容器

使用mysql -uroot -p,输入密码,登录mysql

验证

show databases

1
2
3
4
5
6
7
8
9
10
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
中文乱码问题
1
2
3
4
5
INSERT INTo t1 VALUES(3, "张三");
---
INSERT INTo t1 VALUES(3, "张三")
> 1366 - Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
> 时间: 0.038s

因为docker默认编码字符集隐患

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>

解决中文乱码问题

在宿主机的/ggls/mysql/conf目录下vim my.cnf文件,通过容器卷同步给容器实例

1
2
3
4
5
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

改完后重启mysql实例

服务器输入SHOW VARIABLES LIKE 'character%';验证

docker安装好并run出容器后,先修改字符集编码在创建mysql库

删库备份问题

只要本机上面的容器卷存在,容器卷位置没有改变的情况下,就算容器被删除,重新打开后,创建的数据库,表都还存在

工作使用版启动容器方法

1
2
3
4
5
6
7
docker run -d -p 3306:3306 --privileged=true
-v /ggls/mysql/log:/var/log/mysql
-v /ggls/mysql/data:/var/lib/mysql
-v /ggls/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
文章作者: gglss
文章链接: http://example.com/posts/58312.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/58345.html b/posts/58345.html index 2d677f082..a7a70d738 100644 --- a/posts/58345.html +++ b/posts/58345.html @@ -1 +1 @@ -开发时遇到端口冲突解决办法 | GGLSS

开发时遇到端口冲突解决办法

解决办法

resources下面新建文件application.properties,名称不能变,只能是这个,运行时系统会自动获取这个端口数据

在里面输入代码数据

1
server.port=${port:8888}
文章作者: gglss
文章链接: http://example.com/posts/58345.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +开发时遇到端口冲突解决办法 | GGLSS

开发时遇到端口冲突解决办法

解决办法

resources下面新建文件application.properties,名称不能变,只能是这个,运行时系统会自动获取这个端口数据

在里面输入代码数据

1
server.port=${port:8888}
文章作者: gglss
文章链接: http://example.com/posts/58345.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/58353.html b/posts/58353.html index 3580145d0..88e0a0615 100644 --- a/posts/58353.html +++ b/posts/58353.html @@ -1 +1 @@ -_主从容错切换迁移 | GGLSS

_主从容错切换迁移

_主从容错切换迁移

进入redis集群

注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

因为这样会在增加数据时有error报错出现

使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

正确进入的方法redis-cli -p 6381 -c

-c 的作用是优化路由

注:FLUSHALL:作用是清除之前添加的记录

集群检查

redis-cli –cluster check 8.142.144.75:6381

注:可以进入任意一台主机

主从容错切换迁移

主机宕机,从机自动切换成主机

文章作者: gglss
文章链接: http://example.com/posts/58353.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +_主从容错切换迁移 | GGLSS

_主从容错切换迁移

_主从容错切换迁移

进入redis集群

注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

因为这样会在增加数据时有error报错出现

使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

正确进入的方法redis-cli -p 6381 -c

-c 的作用是优化路由

注:FLUSHALL:作用是清除之前添加的记录

集群检查

redis-cli –cluster check 8.142.144.75:6381

注:可以进入任意一台主机

主从容错切换迁移

主机宕机,从机自动切换成主机

文章作者: gglss
文章链接: http://example.com/posts/58353.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/59561.html b/posts/59561.html index 91ff6a37e..65b72e930 100644 --- a/posts/59561.html +++ b/posts/59561.html @@ -1 +1 @@ -Shell运算符 | GGLSS

Shell运算符

基本语法
  1. $((运算式)) 或 $[运算式]
  2. expr + - * /

注意,运算符号间要有空格

举个加法栗子
1
2
expr 3 + 2
5
举栗子[(2+3)*4]

需要使用键盘左上角的`,把需要提前运算的包起来

1
expr `expr 2 + 3` \* 4

或者

1
2
s=$[(2+3)*4]
echo $s
文章作者: gglss
文章链接: http://example.com/posts/59561.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell运算符 | GGLSS

Shell运算符

基本语法
  1. $((运算式)) 或 $[运算式]
  2. expr + - * /

注意,运算符号间要有空格

举个加法栗子
1
2
expr 3 + 2
5
举栗子[(2+3)*4]

需要使用键盘左上角的`,把需要提前运算的包起来

1
expr `expr 2 + 3` \* 4

或者

1
2
s=$[(2+3)*4]
echo $s
文章作者: gglss
文章链接: http://example.com/posts/59561.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/6166.html b/posts/6166.html index 47918b268..67d84b575 100644 --- a/posts/6166.html +++ b/posts/6166.html @@ -1 +1 @@ -Ultimate Thread Group的使用 | GGLSS

Ultimate Thread Group的使用

前提

  • 安装插件,下载Custom Thread Groupsan插件

  • 添加Ultimate Thread Group

配置

  • Start Threads Count : 线程数
  • Initial Delay,sec : 线程延迟启动,0指的是立即启动;5代表五秒后启动
  • Startup Time,sec : 线程及时启动,0代表立即启动,5代表五秒之内启动完成
  • Hold Load For,sec : 启动后运行的时间,120代表运行120秒
  • Shutdown Time : 代表运行结束后停止的时间,0代表运行结束后立即停止,5代表运行结束后五秒内停止
文章作者: gglss
文章链接: http://example.com/posts/6166.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Ultimate Thread Group的使用 | GGLSS

Ultimate Thread Group的使用

前提

  • 安装插件,下载Custom Thread Groupsan插件

  • 添加Ultimate Thread Group

配置

  • Start Threads Count : 线程数
  • Initial Delay,sec : 线程延迟启动,0指的是立即启动;5代表五秒后启动
  • Startup Time,sec : 线程及时启动,0代表立即启动,5代表五秒之内启动完成
  • Hold Load For,sec : 启动后运行的时间,120代表运行120秒
  • Shutdown Time : 代表运行结束后停止的时间,0代表运行结束后立即停止,5代表运行结束后五秒内停止
文章作者: gglss
文章链接: http://example.com/posts/6166.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/622.html b/posts/622.html index c70edca1e..945b05940 100644 --- a/posts/622.html +++ b/posts/622.html @@ -1 +1 @@ -redis的4主4从缩容 | GGLSS

redis的4主4从缩容

redis的4主4从缩容

目的:6387和6388下线
检查集群情况获得6388的节点ID

redis-cli –cluster check 8.142.144.75:6382

从集群中将4号从节点6388删除

redis-cli –cluster del-node ip:从机端口 从机6388节点ID

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查

6388删除成功

将6387的槽号清空,重新分配

本例将清出来的槽号都给6381

使用redis-cli --cluster reshard ip:6381进行节点的重组

注:

上图中1输入的4096是6387主机所拥有的槽点数量,把他们全部拿出来分掉

上图的2输入的ID是接收6387主机所放出的槽点数的主机id

上图中3输入的ID是放出槽点数的6387主机的id

上图中4输入的done指的是已经输入完所有的节点

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查
删除6387节点的主机

redis-cli –cluster del-node ip:端口 6387节点ID

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查
文章作者: gglss
文章链接: http://example.com/posts/622.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +redis的4主4从缩容 | GGLSS

redis的4主4从缩容

redis的4主4从缩容

目的:6387和6388下线
检查集群情况获得6388的节点ID

redis-cli –cluster check 8.142.144.75:6382

从集群中将4号从节点6388删除

redis-cli –cluster del-node ip:从机端口 从机6388节点ID

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查

6388删除成功

将6387的槽号清空,重新分配

本例将清出来的槽号都给6381

使用redis-cli --cluster reshard ip:6381进行节点的重组

注:

上图中1输入的4096是6387主机所拥有的槽点数量,把他们全部拿出来分掉

上图的2输入的ID是接收6387主机所放出的槽点数的主机id

上图中3输入的ID是放出槽点数的6387主机的id

上图中4输入的done指的是已经输入完所有的节点

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查
删除6387节点的主机

redis-cli –cluster del-node ip:端口 6387节点ID

使用redis-cli --cluster check 8.142.144.75:6382进行集群检查
文章作者: gglss
文章链接: http://example.com/posts/622.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/62565.html b/posts/62565.html index cede14022..6bf64d0d0 100644 --- a/posts/62565.html +++ b/posts/62565.html @@ -1 +1 @@ -容器(三) | GGLSS

容器(三)

容器(三)

创建后台守护式容器

(问题):使用docker run -d ubuntu命令启动后台模式的容器ubuntu,然后用docker ps 查询提示没有找到运行的容器

Docker容器后台运行就必须有一个前台进程,不然容器没事做,会自杀

解决方法:将运行的程序以前台进程的方式运行
常见方式:命令行模式

查看容器日志

docker logs 容器id

查看容器的进程

docker top 容器id

查看容器内部细节

docker inspect 容器id

重新进入

  • 进入正在运行的容器并以命令行交互

    docker exec -it 容器id bashShell

  • 重新进入

    docker attach 容器id

(区别)
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止

1
2
3
4
5
6
7
8
9
10
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAME
S562278524cda   ubuntu    "bash"    20 minutes ago   Up 20 minutes             loving_dewdn
eycdee90a8c77d   ubuntu    "bash"    45 minutes ago   Up 15 minutes             ubuntu

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#​shell

从容器内拷贝文件到主机

docker cp 容器id:容器地址 主机地址

1
2
3
4
5
6
7
8
9
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker cp 26191ecfb227:/tmp/a.txt /opt/ab.txt
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /opt/
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 8
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

导入和导出容器

  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

    docker export 容器id > 自定义文件名.tar

  • import从tar包中的内容创建一个新的文件系统再导入为镜像[export]

    cat 文件名.tar | docker import - 自定义/镜像名:3.5(3.5是自定义)

1
2
3
4
5
6
7
8
9
10
11
12
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26191ecfb227 ubuntu "bash" 7 minutes ago Up 7 minutes quirky_jemison
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker export 26191ecfb227 > abcd.tar
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# cat abcd.tar | docker import - mytest/ubuntu:3.5
sha256:a92a27affdde8ad7f07bef2fdc0f04b8e3aeacb9d6919a77da2921d552ab940b
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytest/ubuntu 3.5 a92a27affdde 11 seconds ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker run -it mytest/ubuntu:3.5 bash
root@356e32244966:/#
root@356e32244966:/# cd /tmp/
root@356e32244966:/tmp# ll
total 8
drwxrwxrwt 2 root root 4096 Apr 27 07:13 ./
drwxr-xr-x 1 root root 4096 Apr 27 07:32 ../
-rw-r--r-- 1 root root 0 Apr 27 07:13 a.txt
root@356e32244966:/tmp#

文章作者: gglss
文章链接: http://example.com/posts/62565.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +容器(三) | GGLSS

容器(三)

容器(三)

创建后台守护式容器

(问题):使用docker run -d ubuntu命令启动后台模式的容器ubuntu,然后用docker ps 查询提示没有找到运行的容器

Docker容器后台运行就必须有一个前台进程,不然容器没事做,会自杀

解决方法:将运行的程序以前台进程的方式运行
常见方式:命令行模式

查看容器日志

docker logs 容器id

查看容器的进程

docker top 容器id

查看容器内部细节

docker inspect 容器id

重新进入

  • 进入正在运行的容器并以命令行交互

    docker exec -it 容器id bashShell

  • 重新进入

    docker attach 容器id

(区别)
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止

1
2
3
4
5
6
7
8
9
10
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAME
S562278524cda   ubuntu    "bash"    20 minutes ago   Up 20 minutes             loving_dewdn
eycdee90a8c77d   ubuntu    "bash"    45 minutes ago   Up 15 minutes             ubuntu

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#​shell

从容器内拷贝文件到主机

docker cp 容器id:容器地址 主机地址

1
2
3
4
5
6
7
8
9
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker cp 26191ecfb227:/tmp/a.txt /opt/ab.txt
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /opt/
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 8
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

导入和导出容器

  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

    docker export 容器id > 自定义文件名.tar

  • import从tar包中的内容创建一个新的文件系统再导入为镜像[export]

    cat 文件名.tar | docker import - 自定义/镜像名:3.5(3.5是自定义)

1
2
3
4
5
6
7
8
9
10
11
12
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26191ecfb227 ubuntu "bash" 7 minutes ago Up 7 minutes quirky_jemison
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker export 26191ecfb227 > abcd.tar
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

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
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# cat abcd.tar | docker import - mytest/ubuntu:3.5
sha256:a92a27affdde8ad7f07bef2fdc0f04b8e3aeacb9d6919a77da2921d552ab940b
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytest/ubuntu 3.5 a92a27affdde 11 seconds ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker run -it mytest/ubuntu:3.5 bash
root@356e32244966:/#
root@356e32244966:/# cd /tmp/
root@356e32244966:/tmp# ll
total 8
drwxrwxrwt 2 root root 4096 Apr 27 07:13 ./
drwxr-xr-x 1 root root 4096 Apr 27 07:32 ../
-rw-r--r-- 1 root root 0 Apr 27 07:13 a.txt
root@356e32244966:/tmp#

文章作者: gglss
文章链接: http://example.com/posts/62565.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/63387.html b/posts/63387.html index ad4ed5fa6..7de34221b 100644 --- a/posts/63387.html +++ b/posts/63387.html @@ -1 +1 @@ -Arrivals Thread Group的使用 | GGLSS

Arrivals Thread Group的使用

前提

  • 安装插件,下载Custom Thread Groupsan插件

  • 添加Arrivals Thread Group

配置

  • Target Rate (arrivals/sec) : 相当于QPS, 输入10就是10QPS
  • Ramp Up Time (sec) : 在多少秒内达到最大的QPS,4代表在4秒内获得最大的QPS
  • Ramp-Up Steps Count : 代表并发数,4代表实现4次的并发
  • Hold Target Rate Time (sec) : 对系统压多长时间就输入多长时间 ,10代表压上10s
  • Concurrency Limit : 最大启动多少线程,100代表最多启动100线程
文章作者: gglss
文章链接: http://example.com/posts/63387.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Arrivals Thread Group的使用 | GGLSS

Arrivals Thread Group的使用

前提

  • 安装插件,下载Custom Thread Groupsan插件

  • 添加Arrivals Thread Group

配置

  • Target Rate (arrivals/sec) : 相当于QPS, 输入10就是10QPS
  • Ramp Up Time (sec) : 在多少秒内达到最大的QPS,4代表在4秒内获得最大的QPS
  • Ramp-Up Steps Count : 代表并发数,4代表实现4次的并发
  • Hold Target Rate Time (sec) : 对系统压多长时间就输入多长时间 ,10代表压上10s
  • Concurrency Limit : 最大启动多少线程,100代表最多启动100线程
文章作者: gglss
文章链接: http://example.com/posts/63387.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/63516.html b/posts/63516.html index 1209d5c7f..ec1f7bb6b 100644 --- a/posts/63516.html +++ b/posts/63516.html @@ -1 +1 @@ -容器(二) | GGLSS

容器(二)

容器(二)

启动已经停止运行的容器

docker start 容器id/容器名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 4 minutes ago Up 4 minutes loving_dewdney
9a1a43aee837 ubuntu "bush" 4 minutes ago Created admiring_wiles
cdee90a8c77d ubuntu "bash" 29 minutes ago Exited (0) 29 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 31 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 4 minutes ago Up 4 minutes loving_dewdney
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker start cdee90a8c77d
cdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 5 minutes ago Up 5 minutes loving_dewdney
cdee90a8c77d ubuntu "bash" 30 minutes ago Up 3 seconds ubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

重启容器

docker restart 容器id/容器名

停止容器

docker stop 容器id/容器名

强制停止容器

docker kill 容器id/容器名

删除已经停止的容器

docker rm 容器id

一次性删除多个容器

  • docker rm -f $(docker ps -a -q)
  • docker ps -a -q | xargs docker rm

注:xargs是linux系统的可变参数,把分隔符前面的结果传给xargs里面,然后执行分隔符后面的命令

1
2
3
4
5
6
7
8
9
10
11
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 20 minutes ago Up 20 minutes loving_dewdney
cdee90a8c77d ubuntu "bash" 45 minutes ago Up 15 minutes ubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f
562278524cda
cdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

文章作者: gglss
文章链接: http://example.com/posts/63516.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +容器(二) | GGLSS

容器(二)

容器(二)

启动已经停止运行的容器

docker start 容器id/容器名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 4 minutes ago Up 4 minutes loving_dewdney
9a1a43aee837 ubuntu "bush" 4 minutes ago Created admiring_wiles
cdee90a8c77d ubuntu "bash" 29 minutes ago Exited (0) 29 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 31 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 4 minutes ago Up 4 minutes loving_dewdney
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker start cdee90a8c77d
cdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 5 minutes ago Up 5 minutes loving_dewdney
cdee90a8c77d ubuntu "bash" 30 minutes ago Up 3 seconds ubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

重启容器

docker restart 容器id/容器名

停止容器

docker stop 容器id/容器名

强制停止容器

docker kill 容器id/容器名

删除已经停止的容器

docker rm 容器id

一次性删除多个容器

  • docker rm -f $(docker ps -a -q)
  • docker ps -a -q | xargs docker rm

注:xargs是linux系统的可变参数,把分隔符前面的结果传给xargs里面,然后执行分隔符后面的命令

1
2
3
4
5
6
7
8
9
10
11
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 20 minutes ago Up 20 minutes loving_dewdney
cdee90a8c77d ubuntu "bash" 45 minutes ago Up 15 minutes ubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f
562278524cda
cdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

文章作者: gglss
文章链接: http://example.com/posts/63516.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/63722.html b/posts/63722.html index 0fa9428ae..b9c68d0fc 100644 --- a/posts/63722.html +++ b/posts/63722.html @@ -1 +1 @@ -jmeter自动化压力测试 | GGLSS

jmeter自动化压力测试

思路

  • jmeter脚本实现压测逻辑
  • Shell控制逻辑
  • 使用jmeter进行静默压测
文章作者: gglss
文章链接: http://example.com/posts/63722.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +jmeter自动化压力测试 | GGLSS

jmeter自动化压力测试

思路

  • jmeter脚本实现压测逻辑
  • Shell控制逻辑
  • 使用jmeter进行静默压测
文章作者: gglss
文章链接: http://example.com/posts/63722.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
公告
好好学习,天天向上
目录
最新文章
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/65365.html b/posts/65365.html index 1a6ac0243..85abf9624 100644 --- a/posts/65365.html +++ b/posts/65365.html @@ -1 +1 @@ -Shell流程控制 | GGLSS

Shell流程控制

if判断
基本语法
  • [ 条件判断式 ],中括号和条件判断式之间必须有空格

  • if后要有空格

1
2
3
4
5
6
7
8
if [ 条件判断式 ]:then
程序
fi
#或者
if[ 条件判断式 ]
then
程序
fi
举个栗子

输入一个数字,如果是1,则输出 banzhang zhen shuai,如果是2,则输出 cls zhen mei ,如果是其他,则什么都不输出

1
2
3
4
5
6
7
8
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "banzhang zhen shuai"
elif [ $1 -eq 2 ]
then
echo "cls zhen mei"
fi
case 语句
基本语法
  • case行尾必须是单词 “in”,每一个模式匹配必须以右括号 “)” 结束
  • 双分号 “;;” 表示命令序列结束,相当于java的break
  • 最后的 “*)” 表示默认模式,相当于java的default
1
2
3
4
5
6
7
8
9
10
case $变量名 in  
"值 1")
如果变量的值等于1,执行程序1
;;
"值 2")
如果变量的值等于2,执行程序2
;;
*)
如果变量的值不是以上的值,则执行此程序
esac
举个栗子

输入一个数字,如果是 1,则输出 banzhang,如果是 2,则输出 cls,如果是其他,输出 renyao

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
case $1 in
"1")
echo "banzhang"
;;

"2")
echo "cls"
;;

*)
echo "renyou"
esac
For循环
基本语法1
1
2
3
4
for(( 初始值;循环控制添加;变量变化 ))
do
程序
done
举个栗子1

输出从1加到100的值

1
2
3
4
5
6
7
8
#!/bin/bash

s=0
for ((i=1;i<=100;i++))
do
s=$[$s+$i]
done
echo "cong1jiadao100:$s"
基本语法2
1
2
3
4
for 变量 in 值1 值2 值3...
do
程序
done
举个栗子2

打印所有输入参数

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

for i in "$*"
do
echo "banzhang xihuan $i"
done
#-----------------------------------
for j in "$@"
do
echo "banzhang xihuan $j"
done
while 循环
基本语法
1
2
3
4
while[ 条件判断式 ]
do
程序
done
举个栗子

输出从1加到100的值

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

i=1
while [ $i -le 100 ]
do
s=$[$s + $i]
i=$[$i + 1]
done

echo $s
read 读取控制台输入
基本语法
1
2
3
4
5
6
read(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时的等待的时间(秒)
参数:
变量:指定读取值的变量名
举个栗子

提示7秒内,读取控制台输入的名称

1
2
3
4
5
#!/bin/bash

read -t 7 -p "input your name" NAME

echo $NAME
文章作者: gglss
文章链接: http://example.com/posts/65365.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell流程控制 | GGLSS

Shell流程控制

if判断
基本语法
  • [ 条件判断式 ],中括号和条件判断式之间必须有空格

  • if后要有空格

1
2
3
4
5
6
7
8
if [ 条件判断式 ]:then
程序
fi
#或者
if[ 条件判断式 ]
then
程序
fi
举个栗子

输入一个数字,如果是1,则输出 banzhang zhen shuai,如果是2,则输出 cls zhen mei ,如果是其他,则什么都不输出

1
2
3
4
5
6
7
8
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "banzhang zhen shuai"
elif [ $1 -eq 2 ]
then
echo "cls zhen mei"
fi
case 语句
基本语法
  • case行尾必须是单词 “in”,每一个模式匹配必须以右括号 “)” 结束
  • 双分号 “;;” 表示命令序列结束,相当于java的break
  • 最后的 “*)” 表示默认模式,相当于java的default
1
2
3
4
5
6
7
8
9
10
case $变量名 in  
"值 1")
如果变量的值等于1,执行程序1
;;
"值 2")
如果变量的值等于2,执行程序2
;;
*)
如果变量的值不是以上的值,则执行此程序
esac
举个栗子

输入一个数字,如果是 1,则输出 banzhang,如果是 2,则输出 cls,如果是其他,输出 renyao

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
case $1 in
"1")
echo "banzhang"
;;

"2")
echo "cls"
;;

*)
echo "renyou"
esac
For循环
基本语法1
1
2
3
4
for(( 初始值;循环控制添加;变量变化 ))
do
程序
done
举个栗子1

输出从1加到100的值

1
2
3
4
5
6
7
8
#!/bin/bash

s=0
for ((i=1;i<=100;i++))
do
s=$[$s+$i]
done
echo "cong1jiadao100:$s"
基本语法2
1
2
3
4
for 变量 in 值1 值2 值3...
do
程序
done
举个栗子2

打印所有输入参数

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

for i in "$*"
do
echo "banzhang xihuan $i"
done
#-----------------------------------
for j in "$@"
do
echo "banzhang xihuan $j"
done
while 循环
基本语法
1
2
3
4
while[ 条件判断式 ]
do
程序
done
举个栗子

输出从1加到100的值

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

i=1
while [ $i -le 100 ]
do
s=$[$s + $i]
i=$[$i + 1]
done

echo $s
read 读取控制台输入
基本语法
1
2
3
4
5
6
read(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时的等待的时间(秒)
参数:
变量:指定读取值的变量名
举个栗子

提示7秒内,读取控制台输入的名称

1
2
3
4
5
#!/bin/bash

read -t 7 -p "input your name" NAME

echo $NAME
文章作者: gglss
文章链接: http://example.com/posts/65365.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/6705.html b/posts/6705.html index 8525fa460..2ce31ee2e 100644 --- a/posts/6705.html +++ b/posts/6705.html @@ -1 +1 @@ -Shell工具(一) | GGLSS

Shell工具(一)

Cut工具

用于剪切数据

基本用法

cut[选项参数] filename

说明:默认分隔符是制表符

选项参数功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列
举个栗子

准备数据

1
2
3
4
5
6
7
8
[root@b09ed0cc2c9d local]# touch cut.txt
[root@b09ed0cc2c9d local]# vim cut.txt

dong shen
guan zhen
wo wo
lai lai
le le

切割第一列数据

1
2
3
4
5
6
[root@b09ed0cc2c9d local]# cut -d " " -f 1 cut.txt
dong
guan
wo
lai
le

切割第二,三列

1
2
3
4
5
6
[root@b09ed0cc2c9d local]# cut -d " " -f 2,3 cut.txt
shen
zhen
wo
lai
le

在cut.txt文件切割出guan

1
2
3
4
5
6
7
8
9
10
11
12
[root@b09ed0cc2c9d local]# cat cut.txt
dong shen
guan zhen
wo wo
lai lai
le le
[root@b09ed0cc2c9d local]#
[root@b09ed0cc2c9d local]# cat cut.txt | grep guan
guan zhen
[root@b09ed0cc2c9d local]# cat cut.txt | grep guan | cut -d " " -f 1
guan
[root@b09ed0cc2c9d local]#

选取系统PATH变量值,第二个“:”之后的所有路径

1
2
3
4
[root@b09ed0cc2c9d local]# echo $PATH
/usr/local/java/jdk1.8.0_181/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root@b09ed0cc2c9d local]# echo $PATH | cut -d : -f 3- # 不加-表示第三列,加上-表示第三列之后
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

切割ifconfig后打印的IP地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@b09ed0cc2c9d local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link>
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 656 (656.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@b09ed0cc2c9d local]# ifconfig eth0 | grep "inet " | cut -d "t" -f 2 | cut -d " " -f 2
172.17.0.2
[root@b09ed0cc2c9d local]#
sed工具

一种流编辑器,一次处理一行内容

基本用法

sed [选项参数] command filename

选项参数说明

选项参数功能
-a直接在指定列模式上进行sed的动作编辑

命令功能描述

命令功能描述
a新增,a的后面可以接字串,在下一行出现
d删除
s查找并替换
举个栗子

数据准备

1
2
3
4
5
6
7
8
9
[root@b09ed0cc2c9d opt]# touch sed.txt
[root@b09ed0cc2c9d opt]# vim sed.txt

dong shen
guan zhen
wo wo
lai lai

le le

将mei nv 这个单词插入到 sed.txt 第二行下,打印

1
2
3
4
5
6
7
8
9
[root@b09ed0cc2c9d opt]# sed "2a mei nv" sed.txt
dong shen
guan zhen
mei nv
wo wo
lai lai

le le
[root@b09ed0cc2c9d opt]#

删除sed.txt文件所有包含 wo 的行

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# sed "/wo/d" sed.txt
dong shen
guan zhen
lai lai

le le
[root@b09ed0cc2c9d opt]#

将sed.txt文件中 wo 替换为 ni

1
2
3
4
5
6
7
8
[root@b09ed0cc2c9d opt]# sed "s/wo/ni/g" sed.txt
dong shen
guan zhen
ni ni
lai lai

le le
[root@b09ed0cc2c9d opt]#

注意:g表示global,全部替换

将sed.txt文件中的第二行删除并将wo替换成ni

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# sed -e "2d" -e "s/wo/ni/g" sed.txt
dong shen
ni ni
lai lai

le le
[root@b09ed0cc2c9d opt]#
文章作者: gglss
文章链接: http://example.com/posts/6705.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +Shell工具(一) | GGLSS

Shell工具(一)

Cut工具

用于剪切数据

基本用法

cut[选项参数] filename

说明:默认分隔符是制表符

选项参数功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列
举个栗子

准备数据

1
2
3
4
5
6
7
8
[root@b09ed0cc2c9d local]# touch cut.txt
[root@b09ed0cc2c9d local]# vim cut.txt

dong shen
guan zhen
wo wo
lai lai
le le

切割第一列数据

1
2
3
4
5
6
[root@b09ed0cc2c9d local]# cut -d " " -f 1 cut.txt
dong
guan
wo
lai
le

切割第二,三列

1
2
3
4
5
6
[root@b09ed0cc2c9d local]# cut -d " " -f 2,3 cut.txt
shen
zhen
wo
lai
le

在cut.txt文件切割出guan

1
2
3
4
5
6
7
8
9
10
11
12
[root@b09ed0cc2c9d local]# cat cut.txt
dong shen
guan zhen
wo wo
lai lai
le le
[root@b09ed0cc2c9d local]#
[root@b09ed0cc2c9d local]# cat cut.txt | grep guan
guan zhen
[root@b09ed0cc2c9d local]# cat cut.txt | grep guan | cut -d " " -f 1
guan
[root@b09ed0cc2c9d local]#

选取系统PATH变量值,第二个“:”之后的所有路径

1
2
3
4
[root@b09ed0cc2c9d local]# echo $PATH
/usr/local/java/jdk1.8.0_181/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root@b09ed0cc2c9d local]# echo $PATH | cut -d : -f 3- # 不加-表示第三列,加上-表示第三列之后
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

切割ifconfig后打印的IP地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@b09ed0cc2c9d local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link>
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 656 (656.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@b09ed0cc2c9d local]# ifconfig eth0 | grep "inet " | cut -d "t" -f 2 | cut -d " " -f 2
172.17.0.2
[root@b09ed0cc2c9d local]#
sed工具

一种流编辑器,一次处理一行内容

基本用法

sed [选项参数] command filename

选项参数说明

选项参数功能
-a直接在指定列模式上进行sed的动作编辑

命令功能描述

命令功能描述
a新增,a的后面可以接字串,在下一行出现
d删除
s查找并替换
举个栗子

数据准备

1
2
3
4
5
6
7
8
9
[root@b09ed0cc2c9d opt]# touch sed.txt
[root@b09ed0cc2c9d opt]# vim sed.txt

dong shen
guan zhen
wo wo
lai lai

le le

将mei nv 这个单词插入到 sed.txt 第二行下,打印

1
2
3
4
5
6
7
8
9
[root@b09ed0cc2c9d opt]# sed "2a mei nv" sed.txt
dong shen
guan zhen
mei nv
wo wo
lai lai

le le
[root@b09ed0cc2c9d opt]#

删除sed.txt文件所有包含 wo 的行

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# sed "/wo/d" sed.txt
dong shen
guan zhen
lai lai

le le
[root@b09ed0cc2c9d opt]#

将sed.txt文件中 wo 替换为 ni

1
2
3
4
5
6
7
8
[root@b09ed0cc2c9d opt]# sed "s/wo/ni/g" sed.txt
dong shen
guan zhen
ni ni
lai lai

le le
[root@b09ed0cc2c9d opt]#

注意:g表示global,全部替换

将sed.txt文件中的第二行删除并将wo替换成ni

1
2
3
4
5
6
7
[root@b09ed0cc2c9d opt]# sed -e "2d" -e "s/wo/ni/g" sed.txt
dong shen
ni ni
lai lai

le le
[root@b09ed0cc2c9d opt]#
文章作者: gglss
文章链接: http://example.com/posts/6705.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/7272.html b/posts/7272.html index 9becf9dda..58fae435a 100644 --- a/posts/7272.html +++ b/posts/7272.html @@ -1 +1 @@ -使用docker的ubuntu容器安装code-server | GGLSS

使用docker的ubuntu容器安装code-server

搭建code-server

拉取Ubuntu 镜像

1
2
3
4
# 拉取镜像
docker pull aliyun
# 进入镜像
docker run --name [自定义名称] -u root --privileged=true -p 3300:8881 -v /opt/testubuntu/:/opt/main_file -it [镜像id]

安装code-server

github上下载安装包,解压后剪切到/home目录

运行code-server

1
2
3
4
# 找到bin目录下的code-server*
cd /home/code-server/bin
# 输入运行命令
export PASSWORD="123456" && ./code-server --host 0.0.0.0 --port 8881

然后在浏览器输入http://ip:3000查看搭建情况

但是这样搭建有问题

使用上面方法部署的code-server,因为是http的,导致一些功能不好用,比如写md文档无法预览

下面就是配置使用https运行

配置HTTPS

使用openssl为IP签发证书

安装openssl

一般的linux系统已经内置openssl,可以输入openssl进行查看,没有的话就需要安装

创建证书请求文件

新建openssl.cnf,并编辑如下内容

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
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CH
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ZJ
localityName = Locality Name (eg, city)
localityName_default = HangZhou
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = THS
commonName = Internet Widgits Ltd
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]

# 改成自己的域名
# DNS.1 = your_domain_name.com

# 改成自己的ip
IP.1 = 8.142.144.75
IP.2 = 0.0.0.0

生成私钥

san_domain_com 为最终生成的文件名,一般以服务器命名,可改。

1
openssl genrsa -out san_domain_com.key 2048

生成CSR文件

1
openssl req -new -out san_domain_com.csr -key san_domain_com.key -config openssl.cnf

执行后,系统提示输入组织等信息,按[]内容提示输入如即可。

需要测试CSR文件是否生成成功

1
> openssl req -text -noout -in san_domain_com.csr

有下面的信息,说明生成成功

1
2
3
4
5
6
7
8
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=MN, L=Minneapolis, OU=Domain Control Validated, CN=zz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
//...

自签名并生成证书

1
openssl x509 -req -days 3650 -in san_domain_com.csr -signkey san_domain_com.key -out san_domain_com.crt -extensions v3_req -extfile openssl.cnf

在当前目录会生成三个文件

1
2
3
4
5
san_domain_com.crt

san_domain_com.csr

san_domain_com.key

在用户电脑安装证书

.crt证书发给用户,用户双击进行安装,然后重启浏览器

code server启动

在code-server的bin目录下运行如下命令,设置端口号为8881,指定对应生成的crt和key密钥文件,即可正常访问https域名

1
2
3
4
# 给ssh创建密码
export PASSWORD="123456"
# 启动ssh
nohup ./code-server --port 8881 --host 0.0.0.0 --cert ../san_domain_com.crt --cert-key ../san_domain_com.key > vscode.log 2>&1 &

然后通过浏览器访问https://ip:3000

文章作者: gglss
文章链接: http://example.com/posts/7272.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +使用docker的ubuntu容器安装code-server | GGLSS

使用docker的ubuntu容器安装code-server

搭建code-server

拉取Ubuntu 镜像

1
2
3
4
# 拉取镜像
docker pull aliyun
# 进入镜像
docker run --name [自定义名称] -u root --privileged=true -p 3300:8881 -v /opt/testubuntu/:/opt/main_file -it [镜像id]

安装code-server

github上下载安装包,解压后剪切到/home目录

运行code-server

1
2
3
4
# 找到bin目录下的code-server*
cd /home/code-server/bin
# 输入运行命令
export PASSWORD="123456" && ./code-server --host 0.0.0.0 --port 8881

然后在浏览器输入http://ip:3000查看搭建情况

但是这样搭建有问题

使用上面方法部署的code-server,因为是http的,导致一些功能不好用,比如写md文档无法预览

下面就是配置使用https运行

配置HTTPS

使用openssl为IP签发证书

安装openssl

一般的linux系统已经内置openssl,可以输入openssl进行查看,没有的话就需要安装

创建证书请求文件

新建openssl.cnf,并编辑如下内容

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
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CH
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ZJ
localityName = Locality Name (eg, city)
localityName_default = HangZhou
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = THS
commonName = Internet Widgits Ltd
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]

# 改成自己的域名
# DNS.1 = your_domain_name.com

# 改成自己的ip
IP.1 = 8.142.144.75
IP.2 = 0.0.0.0

生成私钥

san_domain_com 为最终生成的文件名,一般以服务器命名,可改。

1
openssl genrsa -out san_domain_com.key 2048

生成CSR文件

1
openssl req -new -out san_domain_com.csr -key san_domain_com.key -config openssl.cnf

执行后,系统提示输入组织等信息,按[]内容提示输入如即可。

需要测试CSR文件是否生成成功

1
> openssl req -text -noout -in san_domain_com.csr

有下面的信息,说明生成成功

1
2
3
4
5
6
7
8
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=MN, L=Minneapolis, OU=Domain Control Validated, CN=zz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
//...

自签名并生成证书

1
openssl x509 -req -days 3650 -in san_domain_com.csr -signkey san_domain_com.key -out san_domain_com.crt -extensions v3_req -extfile openssl.cnf

在当前目录会生成三个文件

1
2
3
4
5
san_domain_com.crt

san_domain_com.csr

san_domain_com.key

在用户电脑安装证书

.crt证书发给用户,用户双击进行安装,然后重启浏览器

code server启动

在code-server的bin目录下运行如下命令,设置端口号为8881,指定对应生成的crt和key密钥文件,即可正常访问https域名

1
2
3
4
# 给ssh创建密码
export PASSWORD="123456"
# 启动ssh
nohup ./code-server --port 8881 --host 0.0.0.0 --cert ../san_domain_com.crt --cert-key ../san_domain_com.key > vscode.log 2>&1 &

然后通过浏览器访问https://ip:3000

文章作者: gglss
文章链接: http://example.com/posts/7272.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/7388.html b/posts/7388.html index 74130d7c4..b0b6d3680 100644 --- a/posts/7388.html +++ b/posts/7388.html @@ -1 +1 @@ -java基础之方法和函数 | GGLSS

java基础之方法和函数

方法和函数

定义方式作用调用方式
函数public static void 函数名(){}封装指定功能的代码块函数名()
方法public [static] void 方法名(){}类的行为,对象可以执行的一些功能对象名.方法名

定义函数

使用static修饰的内容成为静态的内容

1
2
public static void function1(){
}

调用函数

1
function1()

定义方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void class className1{

String name;
//静态变量
static String age;

//静态方法
public static function1(){
}

//类方法
//非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
public function2(){
}
}

调用方法

  • 调用静态方法,不需要实例化
1
className1.function1()
  • 调用方法
1
className1的对象,需要实例化

静态方法注意事项:

  • 静态方法无法直接引用非静态的变量
  • 静态方法不能直接调用非静态的方法

代码块

  • 定义在方法内部,和局部变量处于平行的位置
  • 生命周期随着方法的调用而加载,随着方法的结束而消亡
  • 可以在局部代码块中定义一些使用范围和时间都很短的变量,用完就消失啦
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void class className1{

String name;
static String age;

//类方法
//非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
public void function2(){

//定义代码块
{
int i = 100;
System.out.println("方法中的变量i=" + i);
}

}
}

构造代码块

  • 构造代码快写在和构造方法平行的位置
  • 只要创建对象,构造代码块就会执行,不论是采用有参的还是无参数的构造方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void class{
//有参构造
class(String name){
}
//无参构造
class(){
}
//构造代码块
{
int i=100;
System.out.println("构造代码块i=" + i);
}

}

静态代码块

  • 被static修饰的代码块称为静态代码块
  • 随着类的加载而加载
  • 静态代码块只执行一次,在程序中可以完成加载驱动等只执行一次的操作
1
2
3
4
5
public void className1{
static{
System.out.println("我是静态代码块i=" + i);
}
}
文章作者: gglss
文章链接: http://example.com/posts/7388.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +java基础之方法和函数 | GGLSS

java基础之方法和函数

方法和函数

定义方式作用调用方式
函数public static void 函数名(){}封装指定功能的代码块函数名()
方法public [static] void 方法名(){}类的行为,对象可以执行的一些功能对象名.方法名

定义函数

使用static修饰的内容成为静态的内容

1
2
public static void function1(){
}

调用函数

1
function1()

定义方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void class className1{

String name;
//静态变量
static String age;

//静态方法
public static function1(){
}

//类方法
//非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
public function2(){
}
}

调用方法

  • 调用静态方法,不需要实例化
1
className1.function1()
  • 调用方法
1
className1的对象,需要实例化

静态方法注意事项:

  • 静态方法无法直接引用非静态的变量
  • 静态方法不能直接调用非静态的方法

代码块

  • 定义在方法内部,和局部变量处于平行的位置
  • 生命周期随着方法的调用而加载,随着方法的结束而消亡
  • 可以在局部代码块中定义一些使用范围和时间都很短的变量,用完就消失啦
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void class className1{

String name;
static String age;

//类方法
//非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
public void function2(){

//定义代码块
{
int i = 100;
System.out.println("方法中的变量i=" + i);
}

}
}

构造代码块

  • 构造代码快写在和构造方法平行的位置
  • 只要创建对象,构造代码块就会执行,不论是采用有参的还是无参数的构造方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void class{
//有参构造
class(String name){
}
//无参构造
class(){
}
//构造代码块
{
int i=100;
System.out.println("构造代码块i=" + i);
}

}

静态代码块

  • 被static修饰的代码块称为静态代码块
  • 随着类的加载而加载
  • 静态代码块只执行一次,在程序中可以完成加载驱动等只执行一次的操作
1
2
3
4
5
public void className1{
static{
System.out.println("我是静态代码块i=" + i);
}
}
文章作者: gglss
文章链接: http://example.com/posts/7388.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/7613.html b/posts/7613.html index 0452b44d2..bcc7c0851 100644 --- a/posts/7613.html +++ b/posts/7613.html @@ -1 +1 @@ -需要参数才能访问的get请求 | GGLSS

需要参数才能访问的get请求

编写需要参数才能访问的get请求

使用参数就要用到@RequestParam 参数类型 参数变量,可以有多个参数

这个接口还是在MyGetMethod类里面编写方法,有两种方法

第一种url:key=value&&key=value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 开发一个需要参数才能访问的get请求
* 模拟获取商品列表
*/
@RequestMapping(value = "/get/with/param", method = RequestMethod.GET)
@ApiOperation(value = "需要参数才能访问的get请求的第一种实现方法", httpMethod = "GET")
public Map<String, Integer> getList(@RequestParam Integer start,
@RequestParam Integer end){

Map<String, Integer> myList = new HashMap<>();

myList.put("鞋",400);
myList.put("电脑",5000);
myList.put("手机",3500);

return myList;

}

方法二url: ip:port/get/with/param/10/20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

/**
* 第二种需要携带参数访问的get请求
*/

@RequestMapping(value = "/get/with/param/{start}/{end}", method = RequestMethod.GET)
@ApiOperation(value = "需要参数才能访问的get请求的第二种实现方法", httpMethod = "GET")
public Map<String,Integer> myGetList(@PathVariable Integer start,
@PathVariable Integer end){

Map<String, Integer> myList = new HashMap<>();

myList.put("鞋",400);
myList.put("电脑",5000);
myList.put("手机",3500);

return myList;
}
文章作者: gglss
文章链接: http://example.com/posts/7613.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +需要参数才能访问的get请求 | GGLSS

需要参数才能访问的get请求

编写需要参数才能访问的get请求

使用参数就要用到@RequestParam 参数类型 参数变量,可以有多个参数

这个接口还是在MyGetMethod类里面编写方法,有两种方法

第一种url:key=value&&key=value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 开发一个需要参数才能访问的get请求
* 模拟获取商品列表
*/
@RequestMapping(value = "/get/with/param", method = RequestMethod.GET)
@ApiOperation(value = "需要参数才能访问的get请求的第一种实现方法", httpMethod = "GET")
public Map<String, Integer> getList(@RequestParam Integer start,
@RequestParam Integer end){

Map<String, Integer> myList = new HashMap<>();

myList.put("鞋",400);
myList.put("电脑",5000);
myList.put("手机",3500);

return myList;

}

方法二url: ip:port/get/with/param/10/20

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

/**
* 第二种需要携带参数访问的get请求
*/

@RequestMapping(value = "/get/with/param/{start}/{end}", method = RequestMethod.GET)
@ApiOperation(value = "需要参数才能访问的get请求的第二种实现方法", httpMethod = "GET")
public Map<String,Integer> myGetList(@PathVariable Integer start,
@PathVariable Integer end){

Map<String, Integer> myList = new HashMap<>();

myList.put("鞋",400);
myList.put("电脑",5000);
myList.put("手机",3500);

return myList;
}
文章作者: gglss
文章链接: http://example.com/posts/7613.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/posts/7883.html b/posts/7883.html index eee665f23..6da5d3bd8 100644 --- a/posts/7883.html +++ b/posts/7883.html @@ -1,4 +1,4 @@ -_3主3从的`Redis集群`搭建(上) | GGLSS

_3主3从的`Redis集群`搭建(上)

_3主3从的Redis集群搭建(上)

  • 关闭防火墙,启动docker
  • 新建6个docker容器docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
    • docker run 创建并运行docker容器实例
    • –name redis-node-6 容器名字
    • –net host 使用宿主机的IP和端口,默认
    • –privileged=true 获取宿主机root用户权限
    • -v /data/redis/share/redis-node-6:/data 容器卷,宿主机地址:docker内部地址
    • redis:6.0.8 redis镜像和版本号
    • –cluster-enabled yes 开启redis集群
    • –appendonly yes 开启持久化
    • –port 6386 redis端口号
1
2
3
4
5
6
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

运行成功,使用docker ps查看

  • 进入容器redis-node-1并为6台机器构建集群关系

    • 进入一台redis进行配置docker exec -it redis-node-1 bash

    • #进入后执行
      +_3主3从的`Redis集群`搭建(上) | GGLSS

      _3主3从的`Redis集群`搭建(上)

      _3主3从的Redis集群搭建(上)

      • 关闭防火墙,启动docker
      • 新建6个docker容器docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
        • docker run 创建并运行docker容器实例
        • –name redis-node-6 容器名字
        • –net host 使用宿主机的IP和端口,默认
        • –privileged=true 获取宿主机root用户权限
        • -v /data/redis/share/redis-node-6:/data 容器卷,宿主机地址:docker内部地址
        • redis:6.0.8 redis镜像和版本号
        • –cluster-enabled yes 开启redis集群
        • –appendonly yes 开启持久化
        • –port 6386 redis端口号
      1
      2
      3
      4
      5
      6
      docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
      docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
      docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
      docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
      docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
      docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

      运行成功,使用docker ps查看

      • 进入容器redis-node-1并为6台机器构建集群关系

        • 进入一台redis进行配置docker exec -it redis-node-1 bash

        • #进入后执行
           redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383 8.142.144.75:6384 8.142.144.75:6385 8.142.144.75:6386 --cluster-replicas 1
           
            --cluster create	构建集群
          @@ -6,4 +6,4 @@
            
           --cluster-replicas 1 表示为每个master创建一个slave节点
           # 注意:上面的ip为真实IP
          -

        有下面的绿色ok字样显示运行成功

      如果运行不成功,一直显示Waiting for the cluster to join.. 一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

      就是需要在安全组上面配置63816386的6个端口,还需要配置1638116386的6个端口,共12个端口都要开放,不然会一直提示等待

      • 一切OK的话,3主3从搭建搞定
      文章作者: gglss
      文章链接: http://example.com/posts/7883.html
      版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
      控制面板×

      性能设置

      禁用模糊效果
      开启帧率检测(刷新后生效)

      主题设置

      显示aplayer
      落樱特效
      明暗模式自动切换
      自动主题色(跟随文章封面)
      未完工
      固定导航栏
      ###

      主题色

      背景设置

      注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

      图片(手机)

      图片(电脑)

      渐变色

      纯色

      文章统计

      监控

      文章统计

      访问统计显示不出来请刷新页面

      关于

      Hexo-theme-Acryple v1.0.100
      Ariasaka Console v0.01
      欢迎反馈!
      \ No newline at end of file +

    有下面的绿色ok字样显示运行成功

如果运行不成功,一直显示Waiting for the cluster to join.. 一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

就是需要在安全组上面配置63816386的6个端口,还需要配置1638116386的6个端口,共12个端口都要开放,不然会一直提示等待

  • 一切OK的话,3主3从搭建搞定
文章作者: gglss
文章链接: http://example.com/posts/7883.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/random/random.js b/random/random.js index c9928e04a..a0231c81d 100644 --- a/random/random.js +++ b/random/random.js @@ -1 +1 @@ -var posts=["posts/16107.html","posts/44160.html","posts/13923.html","posts/26527.html","posts/45938.html","posts/53427.html","posts/47474.html","posts/11643.html","posts/53812.html","posts/4851.html","posts/36554.html","posts/53299.html","posts/7883.html","posts/54899.html","posts/58353.html","posts/16766.html","posts/13844.html","posts/53508.html","posts/55605.html","posts/42656.html","posts/51796.html","posts/622.html","posts/18767.html","posts/32161.html","posts/58312.html","posts/26726.html","posts/1351.html","posts/50699.html","posts/63516.html","posts/42395.html","posts/62565.html","posts/55045.html","posts/25343.html","posts/52845.html","posts/55320.html","posts/63722.html","posts/3219.html","posts/26691.html","posts/49262.html","posts/55393.html","posts/34250.html","posts/527.html","posts/29537.html","posts/48990.html","posts/31868.html","posts/15488.html","posts/12932.html","posts/48851.html","posts/40953.html","posts/56883.html","posts/22551.html","posts/7388.html","posts/50581.html","posts/34655.html","posts/16468.html","posts/47564.html","posts/55332.html","posts/31621.html","posts/20480.html","posts/11783.html","posts/32473.html","posts/43612.html","posts/43613.html","posts/7272.html","posts/2166.html","posts/23767.html","posts/10988.html","posts/48785.html","posts/28863.html","posts/42012.html","posts/57578.html","posts/37984.html","posts/12080.html","posts/42174.html","posts/28702.html","posts/1.html","posts/1.html","posts/38168.html","posts/4654.html","posts/41091.html","posts/27832.html","posts/6705.html","posts/50013.html","posts/65365.html","posts/59561.html","posts/55957.html","posts/50070.html","posts/56062.html","posts/44161.html","posts/52630.html","posts/58345.html","posts/557.html","posts/24951.html","posts/7613.html","posts/15521.html","posts/16785.html","posts/42075.html","posts/63387.html","posts/6166.html"];function toRandomPost(){pjax.loadUrl("/"+posts[Math.floor(Math.random()*posts.length)])} \ No newline at end of file +var posts=["posts/16107.html","posts/44160.html","posts/13923.html","posts/53427.html","posts/45938.html","posts/11643.html","posts/54899.html","posts/26527.html","posts/47474.html","posts/53812.html","posts/4851.html","posts/36554.html","posts/53299.html","posts/7883.html","posts/16766.html","posts/53508.html","posts/13844.html","posts/55605.html","posts/18767.html","posts/51796.html","posts/42656.html","posts/622.html","posts/58312.html","posts/32161.html","posts/50699.html","posts/1351.html","posts/58353.html","posts/26726.html","posts/62565.html","posts/63516.html","posts/42395.html","posts/25343.html","posts/55045.html","posts/50581.html","posts/7388.html","posts/16468.html","posts/47564.html","posts/34655.html","posts/55332.html","posts/52845.html","posts/63722.html","posts/55320.html","posts/3219.html","posts/49262.html","posts/26691.html","posts/55393.html","posts/527.html","posts/34250.html","posts/48990.html","posts/29537.html","posts/31868.html","posts/15488.html","posts/12932.html","posts/48851.html","posts/40953.html","posts/56883.html","posts/22551.html","posts/10988.html","posts/28863.html","posts/48785.html","posts/37984.html","posts/42012.html","posts/57578.html","posts/31621.html","posts/20480.html","posts/11783.html","posts/32473.html","posts/43612.html","posts/43613.html","posts/7272.html","posts/23767.html","posts/2166.html","posts/28702.html","posts/12080.html","posts/42174.html","posts/1.html","posts/1.html","posts/38168.html","posts/4654.html","posts/41091.html","posts/27832.html","posts/6705.html","posts/50013.html","posts/65365.html","posts/59561.html","posts/55957.html","posts/58345.html","posts/557.html","posts/24951.html","posts/15521.html","posts/7613.html","posts/16785.html","posts/42075.html","posts/50070.html","posts/56062.html","posts/44161.html","posts/52630.html","posts/6166.html","posts/63387.html"];function toRandomPost(){pjax.loadUrl("/"+posts[Math.floor(Math.random()*posts.length)])} \ No newline at end of file diff --git a/redirect/index.html b/redirect/index.html index 43d4724d6..d6f9f2b0b 100644 --- a/redirect/index.html +++ b/redirect/index.html @@ -1 +1 @@ -GGLSS | GGLSS
跳转
即将离开 Research • 呓语,前往第三方网站,请注意账号财产安全
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file +GGLSS | GGLSS
跳转
即将离开 Research • 呓语,前往第三方网站,请注意账号财产安全
控制面板×

性能设置

禁用模糊效果
开启帧率检测(刷新后生效)

主题设置

显示aplayer
落樱特效
明暗模式自动切换
自动主题色(跟随文章封面)
未完工
固定导航栏
###

主题色

背景设置

注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

访问统计显示不出来请刷新页面

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
\ No newline at end of file diff --git a/search.xml b/search.xml index 6b0809e37..3e35d8dca 100644 --- a/search.xml +++ b/search.xml @@ -80,37 +80,48 @@ - css教程一 - /posts/26527.html - css选择器

元素选择器(Element Selector)

-

通过元素名称选择 HTML 元素。

+ Butterfly美化记录三 + /posts/53427.html + 分类页和标签页面添加Bar条
+

使用justlovesmile

-
// 如下代码,p 选择器将选择所有 <p> 元素:

p {
color: blue;
}
+

新增pug文件

新增categoryBar.pug文件

首先是分类条,在themes/butterfly/layout/includes/处新建文件categoryBar.pug

+
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("category")
a.category-bar-more(href="/categories/") 更多
-

类选择器(Class Selector)

-

通过类别名称选择具有特定类别的 HTML 元素。

-
-
// 类选择器以 . 开头,后面跟着类别名称。
// 如下代码,.highlight 选择器将选择所有具有类别为 "highlight" 的元素。

.highlight {
background-color: yellow;
}
+

新增tarsBar.pug文件

其次是标签条,在themes/butterfly/layout/includes/处新建文件tagBar.pug,因为样式一样,所以没有更改id和class名称。

+
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("tag")
a.category-bar-more(href="/tags/") 更多
-

ID 选择器(ID Selector)

-

通过元素的唯一标识符(ID)选择 HTML 元素。

-
-
// ID 选择器以 # 开头,后面跟着 ID 名称。
// 如下代码,#runoob 选择器将选择具有 ID 为 "runoob" 的元素。

#runoob {
width: 200px;
}
-

属性选择器(Attribute Selector)

-

通过元素的属性选择 HTML 元素。属性选择器可以根据属性名和属性值进行选择。

-
-
// 如下代码,input[type="text"] 选择器将选择所有 type 属性为 "text" 的 <input> 元素。

input[type="text"] {
border: 1px solid gray;
}
-

后代选择器(Descendant Selector)

-

通过指定元素的后代关系选择 HTML 元素。

+

新建Hexo辅助函数

theme/butterfly/scripts/helpers/中创建get_arrays.js

+
hexo.extend.helper.register('getarray_bar', function (types) {
if (!types) {
types = "category"
}
const categoriesBar = function (categories) {
if (!categories || !categories.length) return ``
const categoryArr = []
hexo.locals.get('categories').map(function (category) {
categoryArr.push({ name: category.name, value: category.length })
})
categoryArr.sort((a, b) => { return b.value - a.value })
let strCategoriesBar = ``
for (let i = 0; i < categories.length; i++) {
strTemp=`
<div class="category-bar-item" id="${categoryArr[i].name}">
<a href="/categories/${categoryArr[i].name}/">${categoryArr[i].name}</a>
</div>`
strCategoriesBar+=strTemp
}
return strCategoriesBar
}
const tagsBar = function(tags) {
if (!tags || !tags.length) return ``
const tagArr = []
hexo.locals.get('tags').map(function (tag) {
tagArr.push({ name: tag.name, value: tag.length })
})
tagArr.sort((a, b) => { return b.value - a.value })
let strTagsBar = ``
for (let i = 0; i < tags.length; i++) {
strTemp=`
<div class="category-bar-item" id="${tagArr[i].name}">
<a href="/tags/${tagArr[i].name}/">${tagArr[i].name}</a>
</div>`
strTagsBar+=strTemp
}
return strTagsBar
}
if (types == "category"){
return categoriesBar(this.site.categories)
}
if (types == "tag"){
return tagsBar(this.site.tags)
}
})
+ +

在页面引用模块

在分类页面引用:找到theme/butterfly/layout/category.pug

+
extends includes/layout.pug

block content
if theme.category_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts.category_ui
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#category
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-folder-open
+ include includes/categoryBar.pug
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug
+ +

在标签页引用:找到theme/butterfly/layout/tag.pug

+
extends includes/layout.pug

block content
if theme.tag_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#tag
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-tags
+ include includes/tagBar.pug
.article-sort-title= _p('page.tag') + ' - ' + page.tag
+articleSort(page.posts)
include includes/pagination.pug
+ +

引入js和css文件

在自定义的js里面添加

+
// -----------分类条的js-----------
categoriesBarActive()
topCategoriesBarScroll()
tagsBarActive()

//分类条
function categoriesBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#category-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/categories\/.*?\//;
var patbool = pattern.test(urlinfo);
console.log(patbool);
// 获取当前的分类
if (patbool) {
var valuegroup = urlinfo.split("/");
console.log(valuegroup[2]);
// 获取当前分类
var nowCategorie = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowCategorie).classList.add("select");
}
}
}

}

//鼠标控制横向滚动
function topCategoriesBarScroll(){
if (document.getElementById("category-bar-items")){
let xscroll = document.getElementById("category-bar-items");
xscroll.addEventListener("mousewheel", function (e) {
//计算鼠标滚轮滚动的距离
let v = -e.wheelDelta / 2;
xscroll.scrollLeft += v;
//阻止浏览器默认方法
e.preventDefault();
}, false);
}
}

// -----------标签条的js-----------
//标签条
function tagsBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
//console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#tags-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/tags\/.*?\//;
var patbool = pattern.test(urlinfo);
//console.log(patbool);
// 获取当前的标签
if (patbool) {
var valuegroup = urlinfo.split("/");
//console.log(valuegroup[2]);
// 获取当前分类
var nowTag = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowTag).classList.add("select");
}
}
}
}
+ +

修改导航栏一闪的问题

+

使用的安知鱼

-
// 后代选择器使用空格分隔元素名称。
// 如下代码,div p 选择器将选择所有在 <div> 元素内的 <p> 元素。

div p {
font-weight: bold;
}
+

修改main.js

修改顶栏一闪而过的 bug 修改本地themes/butterfly/source/js/main.js

+
  window.scrollCollect = () => {
return btf.throttle(function (e) {
const currentTop = window.scrollY || document.documentElement.scrollTop
const isDown = scrollDirection(currentTop)
if (currentTop > 56) {
+ $header.classList.add('is-top-bar')
if (isDown) {
if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible')
if (isChatBtnShow && isChatShow === true) {
chatBtnHide()
isChatShow = false
}
} else {
if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible')
if (isChatBtnHide && isChatShow === false) {
chatBtnShow()
isChatShow = true
}
}
$header.classList.add('nav-fixed')
if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
} else {
if (currentTop === 0) {
- $header.classList.remove('nav-fixed', 'nav-visible')
+ $header.classList.remove('is-top-bar')
}
$rightside.style.cssText = "opacity: ''; transform: ''"
}

if (document.body.scrollHeight <= innerHeight) {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
}, 200)()
}
-

背景: background 属性

]]> +

侧边栏最近文章梅花

修改index.pug布局

去除首页最近文章显示,改为文章页显示,修改themes/butterfly/layout/includes/widget/index.pug

+
else
//- page
!=partial('includes/widget/card_author', {}, {cache: true})
!=partial('includes/widget/card_announcement', {}, {cache: true})
!=partial('includes/widget/card_top_self', {}, {cache: true})

.sticky_layout
if showToc
include ./card_post_toc.pug

//- !=partial('includes/widget/card_recent_post', {}, {cache: true}) //- 注释掉最近文章

!=partial('includes/widget/card_ad', {}, {cache: true})
!=partial('includes/widget/card_newest_comment', {}, {cache: true})
!=partial('includes/widget/card_categories', {}, {cache: true})
!=partial('includes/widget/card_tags', {}, {cache: true})
+ +

添加css美化

#aside-content .aside-list > .aside-list-item .content > time {
display: none;
}
#aside-content .aside-list > .aside-list-item .content > .title {
-webkit-line-clamp: 3;
font-weight: 700;
padding: 2px 0;
}
#aside-content .aside-list > .aside-list-item {
padding: 8px;
padding-top: 6px !important;
padding-bottom: 6px !important;
border-radius: 12px;
transition: 0.3s;
margin: 4px 0;
cursor: pointer;
}
@media screen and (min-width: 1300px) {
#aside-content .aside-list > .aside-list-item:hover {
transform: scale(1.03);
}
#aside-content .aside-list > .aside-list-item:active {
transform: scale(0.97);
}
}
#aside-content .aside-list > .aside-list-item:hover .thumbnail > img {
transform: scale(1);
}
#aside-content .aside-list > .aside-list-item:not(:last-child) {
border-bottom: 0 dashed var(--anzhiyu-background) !important;
}
#aside-content .aside-list > .aside-list-item .thumbnail {
border-radius: 8px;
border: var(--style-border);
}
#aside-content .aside-list > .aside-list-item:hover {
background: var(--anzhiyu-blue-main);
color: var(--anzhiyu-white);
transition: 0.3s;
box-shadow: var(--anzhiyu-shadow-main);
}
#aside-content .aside-list > .aside-list-item:hover a {
color: var(--anzhiyu-white) !important;
}
.card-widget.card-recent-post {
padding: 0.4rem 0.6rem !important;
}
+ + + +]]> 工具教程 - css + Butterfly @@ -166,39 +177,91 @@ - Butterfly美化记录三 - /posts/53427.html - 分类页和标签页面添加Bar条
-

使用justlovesmile

+ Butterfly美化记录四 + /posts/11643.html + 文章页H1-H6添加小风车
+

使用的安知鱼

-

新增pug文件

新增categoryBar.pug文件

首先是分类条,在themes/butterfly/layout/includes/处新建文件categoryBar.pug

-
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("category")
a.category-bar-more(href="/categories/") 更多
+

修改主题配置文件

beautify:
enable: true
field: post # site/post
# title-prefix-icon: '\f0c1' 原内容
title-prefix-icon: '\f863'
title-prefix-icon-color: "#F47466"
-

新增tarsBar.pug文件

其次是标签条,在themes/butterfly/layout/includes/处新建文件tagBar.pug,因为样式一样,所以没有更改id和class名称。

-
#category-bar
.category-bar-items#category-bar-items
!=getarray_bar("tag")
a.category-bar-more(href="/tags/") 更多
+

让小风车转起来

在自定义 [blog]/source/self/css/custom.css 文件中,加入以下代码即可

+
/* 文章页H1-H6图标样式效果 */
h1::before,
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
-webkit-animation: ccc 1.6s linear infinite;
animation: ccc 1.6s linear infinite;
}
@-webkit-keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
@keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
-

新建Hexo辅助函数

theme/butterfly/scripts/helpers/中创建get_arrays.js

-
hexo.extend.helper.register('getarray_bar', function (types) {
if (!types) {
types = "category"
}
const categoriesBar = function (categories) {
if (!categories || !categories.length) return ``
const categoryArr = []
hexo.locals.get('categories').map(function (category) {
categoryArr.push({ name: category.name, value: category.length })
})
categoryArr.sort((a, b) => { return b.value - a.value })
let strCategoriesBar = ``
for (let i = 0; i < categories.length; i++) {
strTemp=`
<div class="category-bar-item" id="${categoryArr[i].name}">
<a href="/categories/${categoryArr[i].name}/">${categoryArr[i].name}</a>
</div>`
strCategoriesBar+=strTemp
}
return strCategoriesBar
}
const tagsBar = function(tags) {
if (!tags || !tags.length) return ``
const tagArr = []
hexo.locals.get('tags').map(function (tag) {
tagArr.push({ name: tag.name, value: tag.length })
})
tagArr.sort((a, b) => { return b.value - a.value })
let strTagsBar = ``
for (let i = 0; i < tags.length; i++) {
strTemp=`
<div class="category-bar-item" id="${tagArr[i].name}">
<a href="/tags/${tagArr[i].name}/">${tagArr[i].name}</a>
</div>`
strTagsBar+=strTemp
}
return strTagsBar
}
if (types == "category"){
return categoriesBar(this.site.categories)
}
if (types == "tag"){
return tagsBar(this.site.tags)
}
})
+

小风车的颜色和大小

修改小风车的颜色和大小,加入下面的代码

+
#content-inner.layout h1::before {
color: #ef50a8;
margin-left: -1.55rem;
font-size: 1.3rem;
margin-top: -0.23rem;
}
#content-inner.layout h2::before {
color: #fb7061;
margin-left: -1.35rem;
font-size: 1.1rem;
margin-top: -0.12rem;
}
#content-inner.layout h3::before {
color: #ffbf00;
margin-left: -1.22rem;
font-size: 0.95rem;
margin-top: -0.09rem;
}
#content-inner.layout h4::before {
color: #a9e000;
margin-left: -1.05rem;
font-size: 0.8rem;
margin-top: -0.09rem;
}
#content-inner.layout h5::before {
color: #57c850;
margin-left: -0.9rem;
font-size: 0.7rem;
margin-top: 0rem;
}
#content-inner.layout h6::before {
color: #5ec1e0;
margin-left: -0.9rem;
font-size: 0.66rem;
margin-top: 0rem;
}
-

在页面引用模块

在分类页面引用:找到theme/butterfly/layout/category.pug

-
extends includes/layout.pug

block content
if theme.category_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts.category_ui
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#category
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-folder-open
+ include includes/categoryBar.pug
.article-sort-title= _p('page.category') + ' - ' + page.category
+articleSort(page.posts)
include includes/pagination.pug
+

小风车hover效果

设置鼠标碰到标题时,小风车跟随标题变色,且像是被光标阻碍了,转速变慢。鼠标离开恢复转速。也可以设置为 none 鼠标碰到停止转动。

+
#content-inner.layout h1:hover,
#content-inner.layout h2:hover,
#content-inner.layout h3:hover,
#content-inner.layout h4:hover,
#content-inner.layout h5:hover,
#content-inner.layout h6:hover {
color: #3b70fc;
}
#content-inner.layout h1:hover::before,
#content-inner.layout h2:hover::before,
#content-inner.layout h3:hover::before,
#content-inner.layout h4:hover::before,
#content-inner.layout h5:hover::before,
#content-inner.layout h6:hover::before {
color: #3b70fc;
-webkit-animation: ccc 3.2s linear infinite;
animation: ccc 3.2s linear infinite;
}
-

在标签页引用:找到theme/butterfly/layout/tag.pug

-
extends includes/layout.pug

block content
if theme.tag_ui == 'index'
include ./includes/mixins/post-ui.pug
#recent-posts.recent-posts
+postUI
include includes/pagination.pug
else
include ./includes/mixins/article-sort.pug
#tag
+ .category-in-bar
+ .category-in-bar-tips
+ i.fa-fw.fas.fa-tags
+ include includes/tagBar.pug
.article-sort-title= _p('page.tag') + ' - ' + page.tag
+articleSort(page.posts)
include includes/pagination.pug
+

右下角设置 icon 转的太快了,让它慢一点吧。继续添加:

+
/* 页面设置icon转动速度调整 */
#rightside_config i.fas.fa-cog.fa-spin {
animation: fa-spin 5s linear infinite;
}
-

引入js和css文件

在自定义的js里面添加

-
// -----------分类条的js-----------
categoriesBarActive()
topCategoriesBarScroll()
tagsBarActive()

//分类条
function categoriesBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#category-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/categories\/.*?\//;
var patbool = pattern.test(urlinfo);
console.log(patbool);
// 获取当前的分类
if (patbool) {
var valuegroup = urlinfo.split("/");
console.log(valuegroup[2]);
// 获取当前分类
var nowCategorie = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowCategorie).classList.add("select");
}
}
}

}

//鼠标控制横向滚动
function topCategoriesBarScroll(){
if (document.getElementById("category-bar-items")){
let xscroll = document.getElementById("category-bar-items");
xscroll.addEventListener("mousewheel", function (e) {
//计算鼠标滚轮滚动的距离
let v = -e.wheelDelta / 2;
xscroll.scrollLeft += v;
//阻止浏览器默认方法
e.preventDefault();
}, false);
}
}

// -----------标签条的js-----------
//标签条
function tagsBarActive(){
var urlinfo = window.location.pathname;
urlinfo = decodeURIComponent(urlinfo)
//console.log(urlinfo);
//判断是否是首页
if (urlinfo == '/'){
if (document.querySelector('#tags-bar')){
document.getElementById('首页').classList.add("select")
}
}else {
// 验证是否是分类链接
var pattern = /\/tags\/.*?\//;
var patbool = pattern.test(urlinfo);
//console.log(patbool);
// 获取当前的标签
if (patbool) {
var valuegroup = urlinfo.split("/");
//console.log(valuegroup[2]);
// 获取当前分类
var nowTag = valuegroup[2];
if (document.querySelector('#category-bar')){
document.getElementById(nowTag).classList.add("select");
}
}
}
}
+

文章加密

安装插件

通过插件,实现文章输入密码才能浏览

+
npm install hexo-blog-encrypt --save
-

修改导航栏一闪的问题

-

使用的安知鱼

+

修改文章

在文章头部加入

+
---
title: 加密文章测试,输入test即可查看
password: test
message: 测试加密,这里的密码是:test
---
+ + + +

https://blog.bywind.xyz/posts/ab6e072d.html#%E6%B7%BB%E5%8A%A0css%E6%A0%B7%E5%BC%8F

+

https://www.qcqx.cn/article/dbde845d.html

+

网站加速压缩

    +
  • hexo g

    +
  • +
  • gulp

    +
  • +
  • hexo d

    +
  • +
+]]> + + 工具教程 + + + Butterfly + + + + Butterfly美化记录一 + /posts/54899.html + +

注:这个魔改转载于Ariasakaの小窝

-

修改main.js

修改顶栏一闪而过的 bug 修改本地themes/butterfly/source/js/main.js

-
  window.scrollCollect = () => {
return btf.throttle(function (e) {
const currentTop = window.scrollY || document.documentElement.scrollTop
const isDown = scrollDirection(currentTop)
if (currentTop > 56) {
+ $header.classList.add('is-top-bar')
if (isDown) {
if ($header.classList.contains('nav-visible')) $header.classList.remove('nav-visible')
if (isChatBtnShow && isChatShow === true) {
chatBtnHide()
isChatShow = false
}
} else {
if (!$header.classList.contains('nav-visible')) $header.classList.add('nav-visible')
if (isChatBtnHide && isChatShow === false) {
chatBtnShow()
isChatShow = true
}
}
$header.classList.add('nav-fixed')
if (window.getComputedStyle($rightside).getPropertyValue('opacity') === '0') {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
} else {
if (currentTop === 0) {
- $header.classList.remove('nav-fixed', 'nav-visible')
+ $header.classList.remove('is-top-bar')
}
$rightside.style.cssText = "opacity: ''; transform: ''"
}

if (document.body.scrollHeight <= innerHeight) {
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
}
}, 200)()
}
+

导航栏

分离菜单栏和搜索栏

让搜索栏放在最右侧,其他的导航栏居中

+

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug:

+
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
- if (theme.algolia_search.enable || theme.local_search.enable)
- #search-button
- a.site-page.social-icon.search
- i.fas.fa-search.fa-fw
- span=' '+_p('search.title')
!=partial('includes/header/menu_item', {}, {cache: true})
#nav-right
+ if (theme.algolia_search.enable || theme.local_search.enable)
+ #search-button
+ a.site-page.social-icon.search
+ i.fas.fa-search.fa-fw
- #toggle-menu
- a.site-page
- i.fas.fa-bars.fa-fw
+ #toggle-menu
+ a.site-page
+ i.fas.fa-bars.fa-fw
-

侧边栏最近文章梅花

修改index.pug布局

去除首页最近文章显示,改为文章页显示,修改themes/butterfly/layout/includes/widget/index.pug

-
else
//- page
!=partial('includes/widget/card_author', {}, {cache: true})
!=partial('includes/widget/card_announcement', {}, {cache: true})
!=partial('includes/widget/card_top_self', {}, {cache: true})

.sticky_layout
if showToc
include ./card_post_toc.pug

//- !=partial('includes/widget/card_recent_post', {}, {cache: true}) //- 注释掉最近文章

!=partial('includes/widget/card_ad', {}, {cache: true})
!=partial('includes/widget/card_newest_comment', {}, {cache: true})
!=partial('includes/widget/card_categories', {}, {cache: true})
!=partial('includes/widget/card_tags', {}, {cache: true})
+

修改的文件nav.pug,版本为Butterfly 4.10.0

+
nav#nav
span#blog-info
a(href=url_for('/') title=config.title)
if theme.nav.logo
img.site-icon(src=url_for(theme.nav.logo))
if theme.nav.display_title
span.site-name=config.title

#menus
!=partial('includes/header/menu_item', {}, {cache: true})

#nav-right
if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable)
#search-button
a.site-page.social-icon.search(href="javascript:void(0);")
i.fas.fa-search.fa-fw

#toggle-menu
a.site-page
i.fas.fa-bars.fa-fw
-

添加css美化

#aside-content .aside-list > .aside-list-item .content > time {
display: none;
}
#aside-content .aside-list > .aside-list-item .content > .title {
-webkit-line-clamp: 3;
font-weight: 700;
padding: 2px 0;
}
#aside-content .aside-list > .aside-list-item {
padding: 8px;
padding-top: 6px !important;
padding-bottom: 6px !important;
border-radius: 12px;
transition: 0.3s;
margin: 4px 0;
cursor: pointer;
}
@media screen and (min-width: 1300px) {
#aside-content .aside-list > .aside-list-item:hover {
transform: scale(1.03);
}
#aside-content .aside-list > .aside-list-item:active {
transform: scale(0.97);
}
}
#aside-content .aside-list > .aside-list-item:hover .thumbnail > img {
transform: scale(1);
}
#aside-content .aside-list > .aside-list-item:not(:last-child) {
border-bottom: 0 dashed var(--anzhiyu-background) !important;
}
#aside-content .aside-list > .aside-list-item .thumbnail {
border-radius: 8px;
border: var(--style-border);
}
#aside-content .aside-list > .aside-list-item:hover {
background: var(--anzhiyu-blue-main);
color: var(--anzhiyu-white);
transition: 0.3s;
box-shadow: var(--anzhiyu-shadow-main);
}
#aside-content .aside-list > .aside-list-item:hover a {
color: var(--anzhiyu-white) !important;
}
.card-widget.card-recent-post {
padding: 0.4rem 0.6rem !important;
}
+ + +

居中

使用自定义[blogRoot]/self/css/meihua.css,添加下面的代码

+
#nav-right{
flex:1 1 auto;
justify-content: flex-end;
margin-left: auto;
display: flex;
flex-wrap:nowrap;
}
+ +

去掉导航栏下的蓝色长条

在自定义[blogRoot]/self/css/meihua.css里面添加

+
#nav *::after{
background-color: transparent!important;
}
+ +

子菜单横向布局

在自定义[blogRoot]/self/css/meihua.css里面添加

+
/* ----------导航栏横向下拉框---------- */

.menus_item_child li:not(#sidebar-menus li){
float: left;
border-radius: 6px!important;
-webkit-border-radius: 6px!important;
-moz-border-radius: 6px!important;
-ms-border-radius: 6px!important;
-o-border-radius: 6px!important;
}
.menus_item_child:not(#sidebar-menus ul){
/*left:calc(-150%)!important;*//*这是估算值,为了保持元素居中的,如果不合适可以自己调*/
left:50%;
translate:-50%;
}
+ + + +

显示标题

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug

+
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
!=partial('includes/header/menu_item', {}, {cache: true})
+ center(id="name-container")
+ a(id="page-name" href="javascript:scrollToTop()") PAGE_NAME
...
+ +

[blogRoot]/self/js/创建jquery.js文件,添加以下代码

+
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
+ +

然后添加nav.js,并且按照注释修改配置

+
//js有一个小问题:就是只要鼠标滚动不论哪里都会响应,即便你滚动的是子元素

//2022.9.11 已修复,需要jq,请自行引入
document.getElementById("name-container").setAttribute("style", "display:none");

var position = $(window).scrollTop();

$(window).scroll(function () {

var scroll = $(window).scrollTop();

if (scroll > position) {


document.getElementById("name-container").setAttribute("style", "");
document.getElementsByClassName("menus_items")[1].setAttribute("style", "display:none!important");

} else {


document.getElementsByClassName("menus_items")[1].setAttribute("style", "");
document.getElementById("name-container").setAttribute("style", "display:none");

}

position = scroll;

});
function scrollToTop(){
document.getElementsByClassName("menus_items")[1].setAttribute("style","");
document.getElementById("name-container").setAttribute("style","display:none");
btf.scrollToDest(0, 500);
}
//修复没有弄右键菜单的童鞋无法回顶部的问题
document.getElementById("page-name").innerText = document.title.split(" | Ariasakaの小窝")[0];
/*这里是去掉你的网站全局名称的设置,如果你不需要去掉,你可以写成:
document.getElementById("page-name").innerText=document.title

或者把你的网站的分隔符和全局网站名称加上去*/

+ +

最后添加如下css,按照注释修改参数:

+
/*
2022.10.4更新:
根据我发现的没有自适应,间距不合理问题进行调整,如果用了这个的朋友们建议改一改
*/
#page-name::before{
font-size:18px;
position: absolute;
width:100%;
height:100%;
border-radius: 8px;
color:white!important;
top:0;
left:0;
content:'回到顶部';
background-color: var(--lyx-theme);
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
opacity: 0;
box-shadow: 0 0 3px var(--lyx-theme);
line-height: 45px; /*如果垂直位置不居中可以微调此值,也可以删了*/
}
#page-name:hover:before{
opacity: 1;
}
@media screen and (max-width:900px){
#page-name,#menus{
display:none!important;
}
}

#name-container{
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
#name-container:hover{
scale:1.03
}
#page-name{
position: relative;
padding:10px 30px/*如果文字间隔不合理可以微调修改,第二个是水平方向的padding,第一个是垂直的*/
}
#nav{
padding: 0 20px;
}

+ +

导航栏显示haver颜色

在自定义[blogRoot]/self/css/meihua.css里面添加

+
/* ----------修改导航栏的haver---------- */

.site-page {
padding: 5px;
margin: 3px;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
}
.site-page:hover {
background-color: var(--gglss-theme);
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 5px;
}
.site-page.child:hover {
background-color: var(--gglss-theme)!important;
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 4px;
}

/* ----------网站标题部分的增强版---------- */
#site-name::before{
opacity: 0;
background-color: var(--gglss-theme)!important;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
-o-border-radius: 8px;
transition: .3s;
-webkit-transition: .3s;
-moz-transition: .3s;
-ms-transition: .3s;
-o-transition: .3s;
position:absolute;
top:0!important;
right:0!important;
width:100%;
height:100%;
content: "\f015";
box-shadow: 0 0 5px var(--gglss-theme);
font-family: "Font Awesome 6 Free";
text-align: center;
color:white;
line-height:34px;/*如果有溢出或者垂直不居中的现象微调一下这个参数*/
font-size: 18px;/*根据个人喜好*/
}
#site-name:hover::before{
opacity: 1;
scale:1.03;
}
#site-name{
position: relative;
font-size: 24px; /*一定要把字体调大点,否则效果惨不忍睹!*/
}
:root{
--gglss-theme:#49B1F5 /*我的主题色*/
}

@@ -210,6 +273,40 @@ Butterfly + + css教程一 + /posts/26527.html + css选择器

元素选择器(Element Selector)

+

通过元素名称选择 HTML 元素。

+
+
// 如下代码,p 选择器将选择所有 <p> 元素:

p {
color: blue;
}
+ +

类选择器(Class Selector)

+

通过类别名称选择具有特定类别的 HTML 元素。

+
+
// 类选择器以 . 开头,后面跟着类别名称。
// 如下代码,.highlight 选择器将选择所有具有类别为 "highlight" 的元素。

.highlight {
background-color: yellow;
}
+ +

ID 选择器(ID Selector)

+

通过元素的唯一标识符(ID)选择 HTML 元素。

+
+
// ID 选择器以 # 开头,后面跟着 ID 名称。
// 如下代码,#runoob 选择器将选择具有 ID 为 "runoob" 的元素。

#runoob {
width: 200px;
}
+

属性选择器(Attribute Selector)

+

通过元素的属性选择 HTML 元素。属性选择器可以根据属性名和属性值进行选择。

+
+
// 如下代码,input[type="text"] 选择器将选择所有 type 属性为 "text" 的 <input> 元素。

input[type="text"] {
border: 1px solid gray;
}
+

后代选择器(Descendant Selector)

+

通过指定元素的后代关系选择 HTML 元素。

+
+
// 后代选择器使用空格分隔元素名称。
// 如下代码,div p 选择器将选择所有在 <div> 元素内的 <p> 元素。

div p {
font-weight: bold;
}
+ +

背景: background 属性

]]>
+ + 工具教程 + + + css + +
Butterfly美化记录五 /posts/47474.html @@ -264,52 +361,6 @@ Butterfly - - Butterfly美化记录四 - /posts/11643.html - 文章页H1-H6添加小风车
-

使用的安知鱼

-
-

修改主题配置文件

beautify:
enable: true
field: post # site/post
# title-prefix-icon: '\f0c1' 原内容
title-prefix-icon: '\f863'
title-prefix-icon-color: "#F47466"
- -

让小风车转起来

在自定义 [blog]/source/self/css/custom.css 文件中,加入以下代码即可

-
/* 文章页H1-H6图标样式效果 */
h1::before,
h2::before,
h3::before,
h4::before,
h5::before,
h6::before {
-webkit-animation: ccc 1.6s linear infinite;
animation: ccc 1.6s linear infinite;
}
@-webkit-keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
@keyframes ccc {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn);
}
}
- -

小风车的颜色和大小

修改小风车的颜色和大小,加入下面的代码

-
#content-inner.layout h1::before {
color: #ef50a8;
margin-left: -1.55rem;
font-size: 1.3rem;
margin-top: -0.23rem;
}
#content-inner.layout h2::before {
color: #fb7061;
margin-left: -1.35rem;
font-size: 1.1rem;
margin-top: -0.12rem;
}
#content-inner.layout h3::before {
color: #ffbf00;
margin-left: -1.22rem;
font-size: 0.95rem;
margin-top: -0.09rem;
}
#content-inner.layout h4::before {
color: #a9e000;
margin-left: -1.05rem;
font-size: 0.8rem;
margin-top: -0.09rem;
}
#content-inner.layout h5::before {
color: #57c850;
margin-left: -0.9rem;
font-size: 0.7rem;
margin-top: 0rem;
}
#content-inner.layout h6::before {
color: #5ec1e0;
margin-left: -0.9rem;
font-size: 0.66rem;
margin-top: 0rem;
}
- -

小风车hover效果

设置鼠标碰到标题时,小风车跟随标题变色,且像是被光标阻碍了,转速变慢。鼠标离开恢复转速。也可以设置为 none 鼠标碰到停止转动。

-
#content-inner.layout h1:hover,
#content-inner.layout h2:hover,
#content-inner.layout h3:hover,
#content-inner.layout h4:hover,
#content-inner.layout h5:hover,
#content-inner.layout h6:hover {
color: #3b70fc;
}
#content-inner.layout h1:hover::before,
#content-inner.layout h2:hover::before,
#content-inner.layout h3:hover::before,
#content-inner.layout h4:hover::before,
#content-inner.layout h5:hover::before,
#content-inner.layout h6:hover::before {
color: #3b70fc;
-webkit-animation: ccc 3.2s linear infinite;
animation: ccc 3.2s linear infinite;
}
- -

右下角设置 icon 转的太快了,让它慢一点吧。继续添加:

-
/* 页面设置icon转动速度调整 */
#rightside_config i.fas.fa-cog.fa-spin {
animation: fa-spin 5s linear infinite;
}
- -

文章加密

安装插件

通过插件,实现文章输入密码才能浏览

-
npm install hexo-blog-encrypt --save
- -

修改文章

在文章头部加入

-
---
title: 加密文章测试,输入test即可查看
password: test
message: 测试加密,这里的密码是:test
---
- - - -

https://blog.bywind.xyz/posts/ab6e072d.html#%E6%B7%BB%E5%8A%A0css%E6%A0%B7%E5%BC%8F

-

https://www.qcqx.cn/article/dbde845d.html

-

网站加速压缩

    -
  • hexo g

    -
  • -
  • gulp

    -
  • -
  • hexo d

    -
  • -
-]]>
- - 工具教程 - - - Butterfly - -
git提示Timed out的解决办法 /posts/53812.html @@ -475,90 +526,23 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383 - Butterfly美化记录一 - /posts/54899.html - -

注:这个魔改转载于Ariasakaの小窝

+ docker 帮助启动类命令(一) + /posts/16766.html + docker 帮助启动类命令(一)

启动docker

+
+

systemctl start docker

-

导航栏

分离菜单栏和搜索栏

让搜索栏放在最右侧,其他的导航栏居中

-

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug:

-
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
- if (theme.algolia_search.enable || theme.local_search.enable)
- #search-button
- a.site-page.social-icon.search
- i.fas.fa-search.fa-fw
- span=' '+_p('search.title')
!=partial('includes/header/menu_item', {}, {cache: true})
#nav-right
+ if (theme.algolia_search.enable || theme.local_search.enable)
+ #search-button
+ a.site-page.social-icon.search
+ i.fas.fa-search.fa-fw
- #toggle-menu
- a.site-page
- i.fas.fa-bars.fa-fw
+ #toggle-menu
+ a.site-page
+ i.fas.fa-bars.fa-fw
- -

修改的文件nav.pug,版本为Butterfly 4.10.0

-
nav#nav
span#blog-info
a(href=url_for('/') title=config.title)
if theme.nav.logo
img.site-icon(src=url_for(theme.nav.logo))
if theme.nav.display_title
span.site-name=config.title

#menus
!=partial('includes/header/menu_item', {}, {cache: true})

#nav-right
if (theme.algolia_search.enable || theme.local_search.enable || theme.docsearch.enable)
#search-button
a.site-page.social-icon.search(href="javascript:void(0);")
i.fas.fa-search.fa-fw

#toggle-menu
a.site-page
i.fas.fa-bars.fa-fw
- - - -

居中

使用自定义[blogRoot]/self/css/meihua.css,添加下面的代码

-
#nav-right{
flex:1 1 auto;
justify-content: flex-end;
margin-left: auto;
display: flex;
flex-wrap:nowrap;
}
- -

去掉导航栏下的蓝色长条

在自定义[blogRoot]/self/css/meihua.css里面添加

-
#nav *::after{
background-color: transparent!important;
}
- -

子菜单横向布局

在自定义[blogRoot]/self/css/meihua.css里面添加

-
/* ----------导航栏横向下拉框---------- */

.menus_item_child li:not(#sidebar-menus li){
float: left;
border-radius: 6px!important;
-webkit-border-radius: 6px!important;
-moz-border-radius: 6px!important;
-ms-border-radius: 6px!important;
-o-border-radius: 6px!important;
}
.menus_item_child:not(#sidebar-menus ul){
/*left:calc(-150%)!important;*//*这是估算值,为了保持元素居中的,如果不合适可以自己调*/
left:50%;
translate:-50%;
}
- - - -

显示标题

修改[blogRoot]\themes\Butterfly\layout\includes\header\nav.pug

-
nav#nav
span#blog_name
a#site-name(href=url_for('/')) #[=config.title]

#menus
!=partial('includes/header/menu_item', {}, {cache: true})
+ center(id="name-container")
+ a(id="page-name" href="javascript:scrollToTop()") PAGE_NAME
...
- -

[blogRoot]/self/js/创建jquery.js文件,添加以下代码

-
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
- -

然后添加nav.js,并且按照注释修改配置

-
//js有一个小问题:就是只要鼠标滚动不论哪里都会响应,即便你滚动的是子元素

//2022.9.11 已修复,需要jq,请自行引入
document.getElementById("name-container").setAttribute("style", "display:none");

var position = $(window).scrollTop();

$(window).scroll(function () {

var scroll = $(window).scrollTop();

if (scroll > position) {


document.getElementById("name-container").setAttribute("style", "");
document.getElementsByClassName("menus_items")[1].setAttribute("style", "display:none!important");

} else {


document.getElementsByClassName("menus_items")[1].setAttribute("style", "");
document.getElementById("name-container").setAttribute("style", "display:none");

}

position = scroll;

});
function scrollToTop(){
document.getElementsByClassName("menus_items")[1].setAttribute("style","");
document.getElementById("name-container").setAttribute("style","display:none");
btf.scrollToDest(0, 500);
}
//修复没有弄右键菜单的童鞋无法回顶部的问题
document.getElementById("page-name").innerText = document.title.split(" | Ariasakaの小窝")[0];
/*这里是去掉你的网站全局名称的设置,如果你不需要去掉,你可以写成:
document.getElementById("page-name").innerText=document.title

或者把你的网站的分隔符和全局网站名称加上去*/

- -

最后添加如下css,按照注释修改参数:

-
/*
2022.10.4更新:
根据我发现的没有自适应,间距不合理问题进行调整,如果用了这个的朋友们建议改一改
*/
#page-name::before{
font-size:18px;
position: absolute;
width:100%;
height:100%;
border-radius: 8px;
color:white!important;
top:0;
left:0;
content:'回到顶部';
background-color: var(--lyx-theme);
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
opacity: 0;
box-shadow: 0 0 3px var(--lyx-theme);
line-height: 45px; /*如果垂直位置不居中可以微调此值,也可以删了*/
}
#page-name:hover:before{
opacity: 1;
}
@media screen and (max-width:900px){
#page-name,#menus{
display:none!important;
}
}

#name-container{
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
#name-container:hover{
scale:1.03
}
#page-name{
position: relative;
padding:10px 30px/*如果文字间隔不合理可以微调修改,第二个是水平方向的padding,第一个是垂直的*/
}
#nav{
padding: 0 20px;
}

- -

导航栏显示haver颜色

在自定义[blogRoot]/self/css/meihua.css里面添加

-
/* ----------修改导航栏的haver---------- */

.site-page {
padding: 5px;
margin: 3px;
padding-left: 10px;
padding-right: 10px;
white-space: nowrap;
}
.site-page:hover {
background-color: var(--gglss-theme);
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 5px;
}
.site-page.child:hover {
background-color: var(--gglss-theme)!important;
box-shadow: 0 0 3px var(--gglss-theme)!important;
border-radius: 4px;
}

/* ----------网站标题部分的增强版---------- */
#site-name::before{
opacity: 0;
background-color: var(--gglss-theme)!important;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
-o-border-radius: 8px;
transition: .3s;
-webkit-transition: .3s;
-moz-transition: .3s;
-ms-transition: .3s;
-o-transition: .3s;
position:absolute;
top:0!important;
right:0!important;
width:100%;
height:100%;
content: "\f015";
box-shadow: 0 0 5px var(--gglss-theme);
font-family: "Font Awesome 6 Free";
text-align: center;
color:white;
line-height:34px;/*如果有溢出或者垂直不居中的现象微调一下这个参数*/
font-size: 18px;/*根据个人喜好*/
}
#site-name:hover::before{
opacity: 1;
scale:1.03;
}
#site-name{
position: relative;
font-size: 24px; /*一定要把字体调大点,否则效果惨不忍睹!*/
}
:root{
--gglss-theme:#49B1F5 /*我的主题色*/
}

- - - -]]>
- - 工具教程 - - - Butterfly - -
- - _主从容错切换迁移 - /posts/58353.html - _主从容错切换迁移

进入redis集群

-

注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

-
-

因为这样会在增加数据时有error报错出现

-
- -
- - -

使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

+

停止docker

-

正确进入的方法redis-cli -p 6381 -c

-

-c 的作用是优化路由

+

systemctl stop docker

-
- -
- - -

注:FLUSHALL:作用是清除之前添加的记录

-

集群检查

-

redis-cli –cluster check 8.142.144.75:6381

+

查看docker状态

+
+

systemctl status docker

-

注:可以进入任意一台主机

-
- -
- - -

主从容错切换迁移

-

主机宕机,从机自动切换成主机

+

重启 docker,没有任何提示说明启动成功

+
+

systemctl restart docker

]]> @@ -569,24 +553,23 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383 - docker 帮助启动类命令(一) - /posts/16766.html - docker 帮助启动类命令(一)

启动docker

-
-

systemctl start docker

-
-

停止docker

+ docker 帮助启动类命令(二) + /posts/53508.html + docker 帮助启动类命令(二)

docker 开机启动

-

systemctl stop docker

+

systemctl enable docker

-

查看docker状态

+

查看 docker 概要信息

-

systemctl status docker

+

docker info

-

重启 docker,没有任何提示说明启动成功

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
scan: Docker Scan (Docker Inc., v0.12.0)

Server:
Containers: 6
Running: 0
Paused: 0
Stopped: 6
Images: 5
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc version: v1.0.2-0-g52b36a2
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: iZ8vbfaek3x3ogtpxnpnwfZ
ID: NQOP:KCP6:LS6G:K52A:XOQX:E7FG:FEHL:K3QX:NSLP:VY5S:TFX5:UR42
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://qp747t9w.mirror.aliyuncs.com/
Live Restore Enabled: false

+ +

查看 docker 总体帮助文档

-

systemctl restart docker

+

docker –help

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST
env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)


查看 docker 命令帮助文档
> docker 具体命令 --help

```shell
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps --help

Usage: docker ps [OPTIONS]

List containers

Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

]]>
工具教程 @@ -610,32 +593,6 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383

碰到它还是进行删除的好

使用docker image ls -f dangling=true查找虚悬镜像

使用docker image prune删除镜像

-]]>
- - 工具教程 - - - docker - -
- - docker 帮助启动类命令(二) - /posts/53508.html - docker 帮助启动类命令(二)

docker 开机启动

-
-

systemctl enable docker

-
-

查看 docker 概要信息

-
-

docker info

-
-
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
scan: Docker Scan (Docker Inc., v0.12.0)

Server:
Containers: 6
Running: 0
Paused: 0
Stopped: 6
Images: 5
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc version: v1.0.2-0-g52b36a2
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.795GiB
Name: iZ8vbfaek3x3ogtpxnpnwfZ
ID: NQOP:KCP6:LS6G:K52A:XOQX:E7FG:FEHL:K3QX:NSLP:VY5S:TFX5:UR42
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://qp747t9w.mirror.aliyuncs.com/
Live Restore Enabled: false

- -

查看 docker 总体帮助文档

-
-

docker –help

-
-
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST
env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit

Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)


查看 docker 命令帮助文档
> docker 具体命令 --help

```shell
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# docker ps --help

Usage: docker ps [OPTIONS]

List containers

Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#

]]>
工具教程 @@ -689,46 +646,30 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383
- _mysql主从复制docker版 - /posts/42656.html - _mysql主从复制docker版

安装mysql主从复制(一主一从)

新建主服务器容器实例3307

-
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log/:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- -

进入/mydata/mysql-master/conf目录下新建my.cnf把下面内容粘贴到my.cnf

-
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
- -

修改完配置后重启master容器

-

master容器实例内创建数据同步用户

-
# 建立一个用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 对新建的用户进行授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
- -
- -
- - -

新建从服务器实例3308

-
docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log/:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
+ docker 镜像(二) + /posts/18767.html + 镜像(二)

查看 镜像/容器/数据 卷所占的空间

+

docker system df

+
+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 6 3 1.173GB 921.1MB (78%)
Containers 6 0 4.517MB 4.517MB (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

-

进入/mydata/mysql-slave/conf目录下新建my.cnf

-
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
+

删除镜像

+

docker rmi 镜像ID

+
+
#### 如果提示报错
+Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container 13111f725991
 
-

重启从机实例docker restart mysql-slave

-

在主数据库中查看主从同步状态show master status;

-

进入mysql-slave从机容器

-

在从数据库中配置主从复制change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

-
# 说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。
+说明之前运行过这个镜像,生成了容器,需要先删除容器,再删除镜像 -

在从数据库中查看主从同步状态show slave status \G;

-

在从数据库中开启主从同步start slave

-

查看从数据库状态发现已经同步

-
- -
+#### 使用 -f 删除一个 +> docker rmi -f 镜像id +#### 使用 -f 删除多个 +> xxxxxxxxxx # 没有任何提示说明启动成功[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# systemctl restart docker[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#shell -

主从复制测试

-

主机创建数据库,创建表,插入数据,搜索表的数据

-

从机直接搜索标的数据

+#### 使用 -f 删除全部 +> docker rmi -f $(docker images -qa) +
]]>
工具教程 @@ -788,6 +729,55 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383
检查集群情况
+]]>
+ + 工具教程 + + + docker + +
+ + _mysql主从复制docker版 + /posts/42656.html + _mysql主从复制docker版

安装mysql主从复制(一主一从)

新建主服务器容器实例3307

+
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log/:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
+ +

进入/mydata/mysql-master/conf目录下新建my.cnf把下面内容粘贴到my.cnf

+
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
+ +

修改完配置后重启master容器

+

master容器实例内创建数据同步用户

+
# 建立一个用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 对新建的用户进行授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
+ +
+ +
+ + +

新建从服务器实例3308

+
docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log/:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
+ +

进入/mydata/mysql-slave/conf目录下新建my.cnf

+
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
+ +

重启从机实例docker restart mysql-slave

+

在主数据库中查看主从同步状态show master status;

+

进入mysql-slave从机容器

+

在从数据库中配置主从复制change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

+
# 说明:
master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。
+ +

在从数据库中查看主从同步状态show slave status \G;

+

在从数据库中开启主从同步start slave

+

查看从数据库状态发现已经同步

+
+ +
+ + +

主从复制测试

+

主机创建数据库,创建表,插入数据,搜索表的数据

+

从机直接搜索标的数据

]]>
工具教程 @@ -851,30 +841,35 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383
- docker 镜像(二) - /posts/18767.html - 镜像(二)

查看 镜像/容器/数据 卷所占的空间

-

docker system df

-
-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 6 3 1.173GB 921.1MB (78%)
Containers 6 0 4.517MB 4.517MB (100%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

- -

删除镜像

-

docker rmi 镜像ID

+ 使用docker安装常用软件:mysql + /posts/58312.html + 使用docker安装常用软件:mysql

以mysql 5.7为例

使用docker pull mysql:5.7拉取mysql 5.7镜像

+

使用镜像创建容器

简单版

使用docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7运行镜像创建容器

+
+

因为linux系统自己装了mysql,避免端口冲突,先运行ps -ef|grep mysql查询

-
#### 如果提示报错
-Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container 13111f725991
+

使用docker ps查询容器编号

+

使用docker exec -it 容器编号 bash进入mysql容器

+

使用mysql -uroot -p,输入密码,登录mysql

+
验证

show databases

+
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
-说明之前运行过这个镜像,生成了容器,需要先删除容器,再删除镜像 +
中文乱码问题
INSERT INTo t1 VALUES(3, "张三");
---
INSERT INTo t1 VALUES(3, "张三")
> 1366 - Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
> 时间: 0.038s
+ +

因为docker默认编码字符集隐患

+
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
+ +

解决中文乱码问题

在宿主机的/ggls/mysql/conf目录下vim my.cnf文件,通过容器卷同步给容器实例

+
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
+ +

改完后重启mysql实例

+
服务器输入SHOW VARIABLES LIKE 'character%';验证

docker安装好并run出容器后,先修改字符集编码在创建mysql库

+
删库备份问题

只要本机上面的容器卷存在,容器卷位置没有改变的情况下,就算容器被删除,重新打开后,创建的数据库,表都还存在

+

工作使用版启动容器方法

+
docker run -d -p 3306:3306 --privileged=true
-v /ggls/mysql/log:/var/log/mysql
-v /ggls/mysql/data:/var/lib/mysql
-v /ggls/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
-#### 使用 -f 删除一个 -> docker rmi -f 镜像id -#### 使用 -f 删除多个 -> xxxxxxxxxx # 没有任何提示说明启动成功[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# systemctl restart docker[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#shell -#### 使用 -f 删除全部 -> docker rmi -f $(docker images -qa) -
]]>
工具教程 @@ -901,76 +896,38 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 使用docker安装常用软件:mysql - /posts/58312.html - 使用docker安装常用软件:mysql

以mysql 5.7为例

使用docker pull mysql:5.7拉取mysql 5.7镜像

-

使用镜像创建容器

简单版

使用docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7运行镜像创建容器

+ 使用docker安装常用软件:tomcat + /posts/50699.html + 使用docker安装常用软件:tomcat

安装流程

首先把tomcat在镜像源中pull下来,使用docker images 查看镜像

+

使用docker run -d -p 8080:8080 tomcat:9.0 新建容器运行tomcat

-

因为linux系统自己装了mysql,避免端口冲突,先运行ps -ef|grep mysql查询

+

运行后使用本地PC使用阿里云的ip和端口访问docker上面的tomcat

-

使用docker ps查询容器编号

-

使用docker exec -it 容器编号 bash进入mysql容器

-

使用mysql -uroot -p,输入密码,登录mysql

-
验证

show databases

-
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
+
+ +
-
中文乱码问题
INSERT INTo t1 VALUES(3, "张三");
---
INSERT INTo t1 VALUES(3, "张三")
> 1366 - Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1
> 时间: 0.038s
-

因为docker默认编码字符集隐患

-
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>
-

解决中文乱码问题

在宿主机的/ggls/mysql/conf目录下vim my.cnf文件,通过容器卷同步给容器实例

-
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
+

这是什么原因呢

使用docker ps查询到容器编号,docker exec -it 容器编号 bash 打开容器

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c52ab6b8b8df b8e65a4d736d "catalina.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp inspiring_bohr
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker exec -it c52ab6b8b8df bash
root@c52ab6b8b8df:/usr/local/tomcat#
-

改完后重启mysql实例

-
服务器输入SHOW VARIABLES LIKE 'character%';验证

docker安装好并run出容器后,先修改字符集编码在创建mysql库

-
删库备份问题

只要本机上面的容器卷存在,容器卷位置没有改变的情况下,就算容器被删除,重新打开后,创建的数据库,表都还存在

-

工作使用版启动容器方法

-
docker run -d -p 3306:3306 --privileged=true
-v /ggls/mysql/log:/var/log/mysql
-v /ggls/mysql/data:/var/lib/mysql
-v /ggls/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql
mysql:5.7
+

使用ls-l查看文件列表

+
root@c52ab6b8b8df:/usr/local/tomcat# ls -l
total 156
-rw-r--r-- 1 root root 18970 Dec 2 14:30 BUILDING.txt
-rw-r--r-- 1 root root 6210 Dec 2 14:30 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec 2 14:30 LICENSE
-rw-r--r-- 1 root root 2333 Dec 2 14:30 NOTICE
-rw-r--r-- 1 root root 3378 Dec 2 14:30 README.md
-rw-r--r-- 1 root root 6898 Dec 2 14:30 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec 2 14:30 RUNNING.txt
drwxr-xr-x 2 root root 4096 Dec 22 17:16 bin
drwxr-xr-x 1 root root 4096 Apr 29 01:48 conf
drwxr-xr-x 2 root root 4096 Dec 22 17:16 lib
drwxrwxrwx 1 root root 4096 Apr 29 01:48 logs
drwxr-xr-x 2 root root 4096 Dec 22 17:16 native-jni-lib
drwxrwxrwx 2 root root 4096 Dec 22 17:16 temp
drwxr-xr-x 2 root root 4096 Dec 22 17:16 webapps
drwxr-xr-x 7 root root 4096 Dec 2 14:30 webapps.dist
drwxrwxrwx 2 root root 4096 Dec 2 14:30 work
root@c52ab6b8b8df:/usr/local/tomcat#
+

从列表可以看到有两个文件夹webappswebapps.dist,数据全部在webapps.dist里面,需要将webapps删除,把webapps.dist重命名成webapps即可访问

+

使用rm -rf webapps删除webapps文件夹

+

使用mv webapps.dist webapps 重命名

+

再次使用本地访问

+
+ +
-]]>
- - 工具教程 - - - docker - -
- - 容器(一) - /posts/26726.html - 容器(一)

新建和启动容器

OPTIONS说明:

    -
  • – name = “容器新名称” 为容器制定一个名称
  • -
  • -d 后台运行容器并返回容器id, 即启动守护式容器(后台运行)
  • -
  • -i 以交互模式运行容器,通常与 -t 同时使用
  • -
  • -t 为容器重新分配一个伪输入终端,通常与 -i 连用,也就是启动交互式容器
  • -
  • -P 随机端口映射
  • -
  • -p 指定端口映射
  • -
-

举个栗子

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu:15.10 /bin/bash
root@4fb757f69adb:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:26 pts/0 00:00:00 /bin/bash
root 11 1 0 03:26 pts/0 00:00:00 ps -ef
root@4fb757f69adb:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@4fb757f69adb:/# exit
exit
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
-

docker run -it ubuntu:15.10 /bin/bash
/bin/bash 希望有交互式shell 就用/bin/bash

-

查询正在运行的容器

-

docker ps [OPTIONS]

+

使用免修改版的tomcat

+

docker pull billygoo/tomcat8-jdk8

+

docker run -d -p 8080:8080 –name tomcat8 billygoo/tomcat8-jdk8

-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdee90a8c77d ubuntu "bash" 3 minutes ago Exited (0) 3 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 5 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
-

OPTIONS:

-
    -
  • -a 展示所有容器,包含历史用过容器
  • -
  • -d 只展示容器id
  • -
  • -l 显示最近创建的容器
  • -
  • -n 展示最近创建的前n个容器
    List containers
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -n 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 2
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    0dcaa91afc0e ubuntu "/bin/bush" 19 minutes ago Created myubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

  • -
-

退出容器

    -
  • exit
  • -
-

run进入容器,exit退出容器, 容器停止

-
    -
  • ctrl + p + q
  • -
-

run进入容器,exit退出容器, 容器不停止

-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu bash
root@562278524cda:/# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 16 seconds ago Up 15 seconds loving_dewdney
]]> 工具教程 @@ -1028,38 +985,81 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 使用docker安装常用软件:tomcat - /posts/50699.html - 使用docker安装常用软件:tomcat

安装流程

首先把tomcat在镜像源中pull下来,使用docker images 查看镜像

-

使用docker run -d -p 8080:8080 tomcat:9.0 新建容器运行tomcat

-
-

运行后使用本地PC使用阿里云的ip和端口访问docker上面的tomcat

+ _主从容错切换迁移 + /posts/58353.html + _主从容错切换迁移

进入redis集群

+

注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

+

因为这样会在增加数据时有error报错出现

- +
+

使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

+
+

正确进入的方法redis-cli -p 6381 -c

+

-c 的作用是优化路由

+
+
+ +
-

这是什么原因呢

使用docker ps查询到容器编号,docker exec -it 容器编号 bash 打开容器

-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c52ab6b8b8df b8e65a4d736d "catalina.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp inspiring_bohr
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker exec -it c52ab6b8b8df bash
root@c52ab6b8b8df:/usr/local/tomcat#
- -

使用ls-l查看文件列表

-
root@c52ab6b8b8df:/usr/local/tomcat# ls -l
total 156
-rw-r--r-- 1 root root 18970 Dec 2 14:30 BUILDING.txt
-rw-r--r-- 1 root root 6210 Dec 2 14:30 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec 2 14:30 LICENSE
-rw-r--r-- 1 root root 2333 Dec 2 14:30 NOTICE
-rw-r--r-- 1 root root 3378 Dec 2 14:30 README.md
-rw-r--r-- 1 root root 6898 Dec 2 14:30 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec 2 14:30 RUNNING.txt
drwxr-xr-x 2 root root 4096 Dec 22 17:16 bin
drwxr-xr-x 1 root root 4096 Apr 29 01:48 conf
drwxr-xr-x 2 root root 4096 Dec 22 17:16 lib
drwxrwxrwx 1 root root 4096 Apr 29 01:48 logs
drwxr-xr-x 2 root root 4096 Dec 22 17:16 native-jni-lib
drwxrwxrwx 2 root root 4096 Dec 22 17:16 temp
drwxr-xr-x 2 root root 4096 Dec 22 17:16 webapps
drwxr-xr-x 7 root root 4096 Dec 2 14:30 webapps.dist
drwxrwxrwx 2 root root 4096 Dec 2 14:30 work
root@c52ab6b8b8df:/usr/local/tomcat#
-

从列表可以看到有两个文件夹webappswebapps.dist,数据全部在webapps.dist里面,需要将webapps删除,把webapps.dist重命名成webapps即可访问

-

使用rm -rf webapps删除webapps文件夹

-

使用mv webapps.dist webapps 重命名

-

再次使用本地访问

+

注:FLUSHALL:作用是清除之前添加的记录

+

集群检查

+

redis-cli –cluster check 8.142.144.75:6381

+
+

注:可以进入任意一台主机

- +
-

使用免修改版的tomcat

-

docker pull billygoo/tomcat8-jdk8

-

docker run -d -p 8080:8080 –name tomcat8 billygoo/tomcat8-jdk8

+

主从容错切换迁移

+

主机宕机,从机自动切换成主机

+
+]]> + + 工具教程 + + + docker + + + + 容器(一) + /posts/26726.html + 容器(一)

新建和启动容器

OPTIONS说明:

    +
  • – name = “容器新名称” 为容器制定一个名称
  • +
  • -d 后台运行容器并返回容器id, 即启动守护式容器(后台运行)
  • +
  • -i 以交互模式运行容器,通常与 -t 同时使用
  • +
  • -t 为容器重新分配一个伪输入终端,通常与 -i 连用,也就是启动交互式容器
  • +
  • -P 随机端口映射
  • +
  • -p 指定端口映射
  • +
+

举个栗子

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
ubuntu 15.10 9b9cb95443b5 5 years ago 137MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu:15.10 /bin/bash
root@4fb757f69adb:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:26 pts/0 00:00:00 /bin/bash
root 11 1 0 03:26 pts/0 00:00:00 ps -ef
root@4fb757f69adb:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@4fb757f69adb:/# exit
exit
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
+

docker run -it ubuntu:15.10 /bin/bash
/bin/bash 希望有交互式shell 就用/bin/bash

+

查询正在运行的容器

+

docker ps [OPTIONS]

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdee90a8c77d ubuntu "bash" 3 minutes ago Exited (0) 3 minutes ago ubuntu
0dcaa91afc0e ubuntu "/bin/bush" 5 minutes ago Created myubuntu
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
+

OPTIONS:

+
    +
  • -a 展示所有容器,包含历史用过容器
  • +
  • -d 只展示容器id
  • +
  • -l 显示最近创建的容器
  • +
  • -n 展示最近创建的前n个容器
    List containers
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -n 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 1
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -an 2
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    cdee90a8c77d ubuntu "bash" 17 minutes ago Exited (0) 17 minutes ago ubuntu
    0dcaa91afc0e ubuntu "/bin/bush" 19 minutes ago Created myubuntu
    [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#

  • +
+

退出容器

    +
  • exit
  • +
+

run进入容器,exit退出容器, 容器停止

+
    +
  • ctrl + p + q
  • +
+

run进入容器,exit退出容器, 容器不停止

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker run -it ubuntu bash
root@562278524cda:/# [root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
562278524cda ubuntu "bash" 16 seconds ago Up 15 seconds loving_dewdney
]]>
工具教程 @@ -1068,6 +1068,63 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for docker
+ + 容器(三) + /posts/62565.html + 容器(三)

创建后台守护式容器

(问题):使用docker run -d ubuntu命令启动后台模式的容器ubuntu,然后用docker ps 查询提示没有找到运行的容器

+
+

Docker容器后台运行就必须有一个前台进程,不然容器没事做,会自杀

+
+

解决方法:将运行的程序以前台进程的方式运行
常见方式:命令行模式

+

查看容器日志

+

docker logs 容器id

+
+

查看容器的进程

+

docker top 容器id

+
+

查看容器内部细节

+

docker inspect 容器id

+
+

重新进入

    +
  • 进入正在运行的容器并以命令行交互

    +
    +

    docker exec -it 容器id bashShell

    +
    +
  • +
  • 重新进入

    +
    +

    docker attach 容器id

    +
    +
  • +
+

(区别)
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAME
S562278524cda   ubuntu    "bash"    20 minutes ago   Up 20 minutes             loving_dewdn
eycdee90a8c77d   ubuntu    "bash"    45 minutes ago   Up 15 minutes             ubuntu

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#​shell
+ +

从容器内拷贝文件到主机

+

docker cp 容器id:容器地址 主机地址

+
+
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker cp 26191ecfb227:/tmp/a.txt /opt/ab.txt
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /opt/
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 8
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

+

导入和导出容器

    +
  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

    +
    +

    docker export 容器id > 自定义文件名.tar

    +
    +
  • +
  • import从tar包中的内容创建一个新的文件系统再导入为镜像[export]

    +
    +

    cat 文件名.tar | docker import - 自定义/镜像名:3.5(3.5是自定义)

    +
    +
  • +
+
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26191ecfb227 ubuntu "bash" 7 minutes ago Up 7 minutes quirky_jemison
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker export 26191ecfb227 > abcd.tar
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

+
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# cat abcd.tar | docker import - mytest/ubuntu:3.5
sha256:a92a27affdde8ad7f07bef2fdc0f04b8e3aeacb9d6919a77da2921d552ab940b
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytest/ubuntu 3.5 a92a27affdde 11 seconds ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker run -it mytest/ubuntu:3.5 bash
root@356e32244966:/#
root@356e32244966:/# cd /tmp/
root@356e32244966:/tmp# ll
total 8
drwxrwxrwt 2 root root 4096 Apr 27 07:13 ./
drwxr-xr-x 1 root root 4096 Apr 27 07:32 ../
-rw-r--r-- 1 root root 0 Apr 27 07:13 a.txt
root@356e32244966:/tmp#

]]>
+ + 工具教程 + + + docker + +
容器(二) /posts/63516.html @@ -1175,55 +1232,35 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 容器(三) - /posts/62565.html - 容器(三)

创建后台守护式容器

(问题):使用docker run -d ubuntu命令启动后台模式的容器ubuntu,然后用docker ps 查询提示没有找到运行的容器

+ 本地镜像发布到阿里云 + /posts/25343.html + 本地镜像发布到阿里云
+

使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

+

执行顺序

    +
  • 阿里云开发者平台
  • +
  • 点击镜像容器服务
  • +
  • 创建镜像仓库
      +
    • 创建命名空间
    • +
    • 创建镜像仓库
    • +
    +
  • +
+

然后在基本信息上面就可以看到仓库指南

-

Docker容器后台运行就必须有一个前台进程,不然容器没事做,会自杀

-
-

解决方法:将运行的程序以前台进程的方式运行
常见方式:命令行模式

-

查看容器日志

-

docker logs 容器id

+

根据指南进行操作

-

查看容器的进程

-

docker top 容器id

-
-

查看容器内部细节

-

docker inspect 容器id

-
-

重新进入

    -
  • 进入正在运行的容器并以命令行交互

    -
    -

    docker exec -it 容器id bashShell

    -
    -
  • -
  • 重新进入

    -
    -

    docker attach 容器id

    -
    -
  • -
-

(区别)
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止
exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止

-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAME
S562278524cda   ubuntu    "bash"    20 minutes ago   Up 20 minutes             loving_dewdn
eycdee90a8c77d   ubuntu    "bash"    45 minutes ago   Up 15 minutes             ubuntu

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps -a -q | xargs docker rm -f562278524cdacdee90a8c77d
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]#​shell
+
+ +
-

从容器内拷贝文件到主机

-

docker cp 容器id:容器地址 主机地址

-
-
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# docker cp 26191ecfb227:/tmp/a.txt /opt/ab.txt
[root@iZ8vbfaek3x3ogtpxnpnwfZ ~]# cd /opt/
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 8
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

-

导入和导出容器

    -
  • export 导出容器的内容留作为一个tar归档文件[对应import命令]

    -
    -

    docker export 容器id > 自定义文件名.tar

    -
    -
  • -
  • import从tar包中的内容创建一个新的文件系统再导入为镜像[export]

    -
    -

    cat 文件名.tar | docker import - 自定义/镜像名:3.5(3.5是自定义)

    -
    -
  • -
-
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26191ecfb227 ubuntu "bash" 7 minutes ago Up 7 minutes quirky_jemison
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker export 26191ecfb227 > abcd.tar
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]#

-
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# ll
total 73408
-rw-r--r-- 1 root root 75158016 Apr 27 15:21 abcd.tar
-rw-r--r-- 1 root root 0 Apr 27 15:13 ab.txt
drwx--x--x 4 root root 4096 Dec 28 16:17 containerd
drwxr-xr-x 4 root root 4096 Dec 8 16:49 downfile
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# cat abcd.tar | docker import - mytest/ubuntu:3.5
sha256:a92a27affdde8ad7f07bef2fdc0f04b8e3aeacb9d6919a77da2921d552ab940b
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytest/ubuntu 3.5 a92a27affdde 11 seconds ago 72.8MB
tomcat 9.0 b8e65a4d736d 4 months ago 680MB
ubuntu latest ba6acccedd29 6 months ago 72.8MB
redis 6.0.8 16ecd2772934 18 months ago 104MB
[root@iZ8vbfaek3x3ogtpxnpnwfZ opt]# docker run -it mytest/ubuntu:3.5 bash
root@356e32244966:/#
root@356e32244966:/# cd /tmp/
root@356e32244966:/tmp# ll
total 8
drwxrwxrwt 2 root root 4096 Apr 27 07:13 ./
drwxr-xr-x 1 root root 4096 Apr 27 07:32 ../
-rw-r--r-- 1 root root 0 Apr 27 07:13 a.txt
root@356e32244966:/tmp#

]]>
+
+ +
+ +
+ +
+]]>
工具教程 @@ -1265,250 +1302,522 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for
- 本地镜像发布到阿里云 - /posts/25343.html - 本地镜像发布到阿里云
-

使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

-

执行顺序

    -
  • 阿里云开发者平台
  • -
  • 点击镜像容器服务
  • -
  • 创建镜像仓库
      -
    • 创建命名空间
    • -
    • 创建镜像仓库
    • -
    -
  • -
-

然后在基本信息上面就可以看到仓库指南

-
-

根据指南进行操作

-
-
- -
+ 使用Java解析Properties文件 + /posts/50581.html + 主要函数 + + + + + + + + + + + + + + + + + + + + + + +
文件后缀函数方法
.Propertiesload加载文件
setProperty设置
getProperty获取
+

编写逻辑

创建加载文件的方法

+
/**
* 加载文件
* @return Properties 对象
* @throws IOException I/O输入异常
*/
private Properties readProperties() throws IOException{
// 实例化,创建 Properties 对象
Properties properties = new Properties();
try {
// 创建文件输入对象 FileInputStream("testpro.properties")
InputStream inputStream = new FileInputStream(filepath);
// 把文件输入对象放入缓存输入对象 new BufferedInputStream 里面
BufferedInputStream in = new BufferedInputStream(inputStream);
// 加载文件 in = ParseProperties.class.getResourceAsStream("testpro.properties"),自动获取 resources 文件夹下路径
properties.load(in);
}catch (IOException e){
e.printStackTrace();
}
return properties;
}
-
- -
+

获取key后面的数据

+
/**
* 获取数据
* @param key 数据名称
* @return 数据等号右边的值
* @throws Exception 异常
*/
public String getPro(String key) throws Exception {
// 判断文件里面有没有这个 Key
if (prop.containsKey(key)) {
// 获得key后面的value值
return prop.getProperty(key);
}else {
System.out.println("你获取的key值不对");
return "";
}
}
+ +

获取定位类型或者定位表达式

+
/**
* 返回定位类型或者定位表达式
* @param key 数据名称
* @param num 输入0/1
* @return num=0时,返回定位类型,num=1时,返回定位表达式
*/
public String get_pro_element(String key, int num){
return (num!=0 & num!=1) ? "num:参数输入错误" : prop.getProperty(key).split("->")[num];
}
-
- -
]]>
工具教程 - docker + java + Properties
- 使用jmeter录制压测 - /posts/52845.html - 业务
    -
  • 压测对象:http://news.baidu.com
  • -
  • 压测页面:首页、国际频道、财经频道
  • -
  • 步骤
      -
    • 访问首页
    • -
    • 单击“国际”(频道)
    • -
    • 单击“财经”(频道)
    • -
    -
  • -
  • 操作手段:录制回放
  • -
-

操作步骤

    -
  • 添加录制器“HTTP(S) Test Script Recorder”

    -
      -
    • 右键Test Plan,点击add
    • -
    • 点击Non-Test Elements
    • -
    • 点击HTTP(S) Test Script Recorder
    • + java基础之方法和函数 + /posts/7388.html + 方法和函数 + + + + + + + + + + + + + + + + + + + + +
      定义方式作用调用方式
      函数public static void 函数名(){}封装指定功能的代码块函数名()
      方法public [static] void 方法名(){}类的行为,对象可以执行的一些功能对象名.方法名
      +

      定义函数

      +

      使用static修饰的内容成为静态的内容

      +
      +
      public static void function1(){
      }
      + +

      调用函数

      function1()
      + +

      定义方法

      public void class className1{

      String name;
      //静态变量
      static String age;

      //静态方法
      public static function1(){
      }

      //类方法
      //非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
      public function2(){
      }
      }
      +

      调用方法

        +
      • 调用静态方法,不需要实例化
      - -
    • 添加线程组“Thread Group”

      -
    • -
    • 添加录制控制器“Recording Controller”,

      +
      className1.function1()
      +
        -
      • 右键线程组,点击and
      • -
      • 点击Logic Controller
      • -
      • 点击Recording Controller
      • +
      • 调用方法
      -
    • -
    • 录制脚本的配置(Test Plan Creation)

      -
        -
      • Port=8088
      • -
      • Target Controller = TestPlan > Tread Group > Recording Controller
      • -
      • 其他的配置保持默认
      • +
        className1的对象,需要实例化
        + + +

        静态方法注意事项:

          +
        • 静态方法无法直接引用非静态的变量
        • +
        • 静态方法不能直接调用非静态的方法
        - -
      • 录制脚本的配置(Requests Filtering 请求过滤器)

        -
          -
        • URl Patterns to Include上添加正则.*\.(baidu\.com).*;表示只抓取百度URL的内容,不抓取其他网站的
        • -
        • URl Patterns to Exclude上添加正则.*\.(js|css|PNG|jpg|jpeg|ico|png|gif).*;去掉一些静态请求
        • -
        • 目的是:避免录制过多没必要的请求
        • +

          代码块

            +
          • 定义在方法内部,和局部变量处于平行的位置
          • +
          • 生命周期随着方法的调用而加载,随着方法的结束而消亡
          • +
          • 可以在局部代码块中定义一些使用范围和时间都很短的变量,用完就消失啦
          - -
        • 单击保存按钮,将Jmeter脚本存储

          -
        • -
        • -
        • 打开浏览器,设置代理,将浏览器的代理服务地址指向http://localhost:8088,然后就可以进行访问录制了

          -
        • -
        • -
        • 访问百度新闻的首页、国际、财经页面

          -
        • -
        • -
        • 查看jmeter,录制结果在Recording Controller下面看到,然后停止录制

          -
        • +
          public void class className1{

          String name;
          static String age;

          //类方法
          //非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
          public void function2(){

          //定义代码块
          {
          int i = 100;
          System.out.println("方法中的变量i=" + i);
          }

          }
          }
          + +

          构造代码块

            +
          • 构造代码快写在和构造方法平行的位置
          • +
          • 只要创建对象,构造代码块就会执行,不论是采用有参的还是无参数的构造方法
          -

          校验

          录制结束后,要对录制的代码进行校验

          -
            -
          • 添加查看结果树组件
          • +
            public void class{
            //有参构造
            class(String name){
            }
            //无参构造
            class(){
            }
            //构造代码块
            {
            int i=100;
            System.out.println("构造代码块i=" + i);
            }

            }
            +

            静态代码块

              +
            • 被static修饰的代码块称为静态代码块
            • +
            • 随着类的加载而加载
            • +
            • 静态代码块只执行一次,在程序中可以完成加载驱动等只执行一次的操作
            -

            运行录制的代码,在查看结果树上查看运行的结果

            -]]> +
            public void className1{
            static{
            System.out.println("我是静态代码块i=" + i);
            }
            }
            ]]> 工具教程 - jmeter + java - Jmeter之断言和聚合报告 - /posts/55320.html - 怎么对请求进行响应断言
              -
            • 右键 HTTP Request

              -
            • -
            • 点击add --> Assertions --> Response Assertion

              -
            • -
            -

            断言组件就添加成功

            -

            配置响应断言

            Field to Test 下面就是断言的各种方法

            -
              -
            • Text Response 文本断言
            • -
            -
            -

            Patterns to Test输入title之间包含的文字,及配置成功

            -
            -
              -
            • Response Code 响应码断言
            • -
            -
            -

            Patterns to Test输入响应码,比如 200

            -
            -
              -
            • Response Message
            • -
            • Request Headers
            • -
            • URL Sampled
            • -
            • Document(text)
            • -
            • Request Data
            • + 包装类 + /posts/16468.html + +
            • 基本数据类型对应的包装类
            -

            然后运行但并发压测,验证断言添加是否正确,在View Results Tree 中查看结果

            -

            怎么使用聚合报告

              -
            • 右键 Thread Group

              -
            • -
            • 点击 Add --> Listener --> Aggregate Report

              -
            • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              基本数据类型包装类大小(字节)
              byteByte1–(-128~127)
              shortShort2–(-32768~32767)
              intInteger4
              longLong8
              floatFloat4
              doubleDouble8
              charCharacter2
              booleanBoolean1
              +

              包装类方法

                +
              • Integer的作用主要是对int、Integer、String几种类型的数据进行转换,还能获取一些常量
              -

              聚合报告就添加了

              -

              性能指标解读

                -
              • Average: 单个请求的平均响应时间
              • -
              • Median: 中位数,也就是50%用户的响应时间
              • -
              • 90%Line: 90%用户的响应时间
              • -
              • 95%Line: 95%用户的响应时间
              • -
              • 99%Line: 99%用户的响应时间
              • -
              • Min: 最小的请求响应时间
              • -
              • Max: 最大的请求响应时间
              • -
              • Error%: 错误率
              • -
              • Throughput: 吞吐量
              • -
              • Received KB/sec: 每秒从服务器接收到的数据量
              • -
              • Sent KB/sec: 每秒从客户端发送的请求的数量
              • + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                方法描述
                compareTo()用于将对象与方法的参数进行比较(相同类型)
                decode()将方法的参数转为包装类对象
                equals()判断对象是否与参数相等
                Integer.parseInt(“字符串’)将字符串转为Int类型
                Integer.toString(int数据)将Int类型转为字符串
                +

                compareTo()方法

                  +
                • 如果指定的数与参数相等返回 0。
                • +
                • 如果指定的数小于参数返回 -1。
                • +
                • 如果指定的数大于参数返回 1。
                ]]> 工具教程 - jmeter + java - jmeter自动化压力测试 - /posts/63722.html - 思路
                  -
                • jmeter脚本实现压测逻辑
                • -
                • Shell控制逻辑
                • -
                • 使用jmeter进行静默压测
                • + 字符串 + /posts/47564.html + 字符串的方法 + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  方法描述
                  str.concat()将参数拼接到字符串上
                  trim()去除字符串两端的字符串,不能去除中间
                  replace(oldChar, newChar)将字符串的old参数替换为new参数
                  length()返回此字符串的长度
                  isEmpty()判断字符串是否为空
                  +

                  concat()方法

                    +
                  • 返回字符串类型
                  • +
                  • 字符串在后面拼接
                    String str = "床前明月光";
                    String str1 = str.concat("疑是地上霜。");
                    System.out.println(str1);
                  • +
                  +

                  trim()方法

                  String str = "    床  前明   月光   ";
                  String str1 = str.trim();
                  System.out.println(str1);
                  +

                  replace(oldChar, newChar)方法

                  String str = "床前明月光";
                  String str1 = str.replace("床", "llll");
                  System.out.println(str1);
                  +

                  length()方法

                    +
                  • 返回int类型
                    String str = "床前明月光";
                    int str1 = str.length();
                    System.out.println(str1);
                  • +
                  +

                  isEmpty()方法

                    +
                  • 返回布尔类型
                    String str = "床前明月光";
                    boolean str1 = str.isEmpty();
                    System.out.println(str1);
                  ]]>
                  工具教程 - jmeter + java - Jmeter之静默压测 - /posts/3219.html - 静默压测
                  -

                  jmeter -n -t $jmx_file -l $jtl_file

                  -
                  -

                  如: jmeter -n -t HTTP代理服务器luzhi.jmx -l result.jtl

                  -

                  jmx: Jmeter压测程序脚本文件
                  jtl: Jmeter压测请求响应数据的原始文件,查看结果树和聚合报告可以导入该文件查看

                  + 抽象类与接口 + /posts/34655.html + 抽象类

                  使用abstract修饰一个类,把这个类变成抽象类,抽象类不能直接创建对象,需要其他类进行继承该抽象类

                  +
                    +
                  • 抽象方法不能有方法体
                  • +
                  • 抽象方法必须使用abstract进行修饰,不能有方法体
                  • +
                  • 子类必须实现父抽象类的方法
                    public abstract class Ahsse {
                    String name;
                    int age;

                    //普通方法
                    public String aaa(){
                    return name;
                    };
                    // 抽象方法
                    public abstract String bbb();
                    }

                    class sss extends Ahsse{

                    @Override
                    public String bbb() {
                    System.out.println("实现抽象类的抽象方法");
                    return "ces ";
                    }
                    }
                  • +
                  +

                  接口

                  使用interface定义接口,相当于class

                  +
                    +
                  • 接口可以多继承
                  • +
                  • 变量全部默认使用public static final修饰,使用之前必须赋值
                  • +
                  • 类里面全部是抽象方法(默认使用public abstract修饰,没有方法体)需要被实现类进行实现
                  • +
                  • 接口可以被多实现–implements
                  • +
                  ]]>
                  工具教程 - jmeter + java
                  - Jmeter之json数据提取和参数传递 - /posts/26691.html - 安装组件JSON Extractor
                    -
                  • 右键Http Request
                  • -
                  • 点击Add -> Post Processors -> JSON Extractor
                  • + 继承、重写与重载 + /posts/55332.html + 继承

                    继承是相对于类来说,通过关键字extends来实现

                    +
                      +
                    • 可以获取父类的属性和方法
                    • +
                    • 提高代码的复用性
                    • +
                    • 父类修改了内容,子类也会修改
                    -

                    组件安装成功

                    -

                    组件配置

                      -
                    • Names of created variables : 参数变量名称,提取出来的json使用这个变量
                    • -
                    • Json Path expressions : JSON提取的正则 比如:$.access_token这个是提取response里面的token
                    • -
                    • Match NO.(0 for Random):这个是写提取出json的第几条, 比如使用正则能匹配多条,使用这个输入数字就可以匹配对应的
                    • +

                      调用

                      父类的属性和方法

                      +
                        +
                      • this表示当前对象的引用
                      • +
                      • super表示父类对象的引用
                      • +
                      • 调用构造方法
                          +
                        • this(参数列表)表示调用当前类中的构造方法
                        • +
                        • super(参数列表)表示调用父类的构造方法,必须放在方法中的第一行
                        -
                        引用json变量
                          -
                        • Jmeter中引用变量的方法${变量名}
                        • + +
                        • 调用属性
                            +
                          • this.属性表示调用当前对象的属性
                          • +
                          • super.属性表示调用父类的属性,可以拿到被重写之前的数据
                          -

                          调试脚本 Debug Sampler

                          -

                          帮助检查变量值,调试脚本

                          -
                          +
                        • +
                        • 调用方法
                            +
                          • this.方法表示调用当前对象的方法
                          • +
                          • super.方法表示调用父类的方法,可以拿到被重写之前的方法,不用放在代码的第一行
                          • +
                          +
                        • +
                        +

                        重写

                        重写是子类可以重写父类的方法,使用override标识

                          -
                        • 右键Thread Group
                        • -
                        • 点击Add -> Sampler -> Debug Sampler
                        • +
                        • 方法名和参数不变,只修改方法体
                        • +
                        • 访问权限不能比父类的范围更小
                        • +
                        • 私有的方法能被子类继承,但不能使用和重写
                        • +
                        • 静态的方法能被子类继承,能使用但不能被重写
                          public class testeass {

                          public void aa(String name, int age){
                          System.out.println(name + age);
                          }
                          }

                          class testaaa extends testeass{

                          @Override
                          public void aa(String name, int age) {
                          System.out.println("这是重写方法,方法名、参数和返回数据都不变,只能修改方法体");
                          System.out.println(name + age);
                          }
                          }
                        • +
                        +

                        重载

                        重载是同一个类下对方法进行重载

                        +
                          +
                        • 方法名相同,参数不相同 (参数个数不同/参数类型不同/参数排列顺序不同)
                        • +
                        • 返回类型不限制
                          public class jichu {

                          // 原方法
                          public void hello(String name, int aa){
                          System.out.println("拼接起来的值是:"+ name + aa );
                          }

                          // 重载后的方法
                          public void hello(int aa, String name){
                          System.out.println("aaaaaaa:" + aa);
                          }
                          }
                        -

                        注意:把Debug放到所有请求的最底下,运行的后可以查看变量参数,方便调试

                        ]]> 工具教程 - jmeter + java - Jmeter之全局参数设置和csv数据导入 - /posts/49262.html - 全局参数设置
                        添加组件
                          -
                        • 右键Thread Group
                        • -
                        • 点击Add -> Config Element -> User Defined Variables
                        • + 使用jmeter录制压测 + /posts/52845.html + 业务
                            +
                          • 压测对象:http://news.baidu.com
                          • +
                          • 压测页面:首页、国际频道、财经频道
                          • +
                          • 步骤
                              +
                            • 访问首页
                            • +
                            • 单击“国际”(频道)
                            • +
                            • 单击“财经”(频道)
                            -
                            添加对应的变量
                              -
                            • hostname:localhost
                            • -
                            • port:9090
                            • -
                            • protocol:http
                            • + +
                            • 操作手段:录制回放
                            -

                            然后再请求参数中使用对应的参数变量名

                            +

                            操作步骤

                              +
                            • 添加录制器“HTTP(S) Test Script Recorder”

                                -
                              • ${hostname}
                              • +
                              • 右键Test Plan,点击add
                              • +
                              • 点击Non-Test Elements
                              • +
                              • 点击HTTP(S) Test Script Recorder
                              • +
                              +
                            • +
                            • 添加线程组“Thread Group”

                              +
                            • +
                            • 添加录制控制器“Recording Controller”,

                              +
                                +
                              • 右键线程组,点击and
                              • +
                              • 点击Logic Controller
                              • +
                              • 点击Recording Controller
                              • +
                              +
                            • +
                            • 录制脚本的配置(Test Plan Creation)

                              +
                                +
                              • Port=8088
                              • +
                              • Target Controller = TestPlan > Tread Group > Recording Controller
                              • +
                              • 其他的配置保持默认
                              • +
                              +
                            • +
                            • 录制脚本的配置(Requests Filtering 请求过滤器)

                              +
                                +
                              • URl Patterns to Include上添加正则.*\.(baidu\.com).*;表示只抓取百度URL的内容,不抓取其他网站的
                              • +
                              • URl Patterns to Exclude上添加正则.*\.(js|css|PNG|jpg|jpeg|ico|png|gif).*;去掉一些静态请求
                              • +
                              • 目的是:避免录制过多没必要的请求
                              • +
                              +
                            • +
                            • 单击保存按钮,将Jmeter脚本存储

                              +
                            • +
                            • +
                            • 打开浏览器,设置代理,将浏览器的代理服务地址指向http://localhost:8088,然后就可以进行访问录制了

                              +
                            • +
                            • +
                            • 访问百度新闻的首页、国际、财经页面

                              +
                            • +
                            • +
                            • 查看jmeter,录制结果在Recording Controller下面看到,然后停止录制

                              +
                            • +
                            +

                            校验

                            录制结束后,要对录制的代码进行校验

                            +
                              +
                            • 添加查看结果树组件
                            • +
                            +

                            运行录制的代码,在查看结果树上查看运行的结果

                            +]]> + + 工具教程 + + + jmeter + + + + jmeter自动化压力测试 + /posts/63722.html + 思路
                              +
                            • jmeter脚本实现压测逻辑
                            • +
                            • Shell控制逻辑
                            • +
                            • 使用jmeter进行静默压测
                            • +
                            +]]>
                            + + 工具教程 + + + jmeter + +
                            + + Jmeter之断言和聚合报告 + /posts/55320.html + 怎么对请求进行响应断言
                              +
                            • 右键 HTTP Request

                              +
                            • +
                            • 点击add --> Assertions --> Response Assertion

                              +
                            • +
                            +

                            断言组件就添加成功

                            +

                            配置响应断言

                            Field to Test 下面就是断言的各种方法

                            +
                              +
                            • Text Response 文本断言
                            • +
                            +
                            +

                            Patterns to Test输入title之间包含的文字,及配置成功

                            +
                            +
                              +
                            • Response Code 响应码断言
                            • +
                            +
                            +

                            Patterns to Test输入响应码,比如 200

                            +
                            +
                              +
                            • Response Message
                            • +
                            • Request Headers
                            • +
                            • URL Sampled
                            • +
                            • Document(text)
                            • +
                            • Request Data
                            • +
                            +

                            然后运行但并发压测,验证断言添加是否正确,在View Results Tree 中查看结果

                            +

                            怎么使用聚合报告

                              +
                            • 右键 Thread Group

                              +
                            • +
                            • 点击 Add --> Listener --> Aggregate Report

                              +
                            • +
                            +

                            聚合报告就添加了

                            +

                            性能指标解读

                              +
                            • Average: 单个请求的平均响应时间
                            • +
                            • Median: 中位数,也就是50%用户的响应时间
                            • +
                            • 90%Line: 90%用户的响应时间
                            • +
                            • 95%Line: 95%用户的响应时间
                            • +
                            • 99%Line: 99%用户的响应时间
                            • +
                            • Min: 最小的请求响应时间
                            • +
                            • Max: 最大的请求响应时间
                            • +
                            • Error%: 错误率
                            • +
                            • Throughput: 吞吐量
                            • +
                            • Received KB/sec: 每秒从服务器接收到的数据量
                            • +
                            • Sent KB/sec: 每秒从客户端发送的请求的数量
                            • +
                            +]]>
                            + + 工具教程 + + + jmeter + +
                            + + Jmeter之静默压测 + /posts/3219.html + 静默压测
                            +

                            jmeter -n -t $jmx_file -l $jtl_file

                            +
                            +

                            如: jmeter -n -t HTTP代理服务器luzhi.jmx -l result.jtl

                            +

                            jmx: Jmeter压测程序脚本文件
                            jtl: Jmeter压测请求响应数据的原始文件,查看结果树和聚合报告可以导入该文件查看

                            +]]>
                            + + 工具教程 + + + jmeter + +
                            + + Jmeter之全局参数设置和csv数据导入 + /posts/49262.html + 全局参数设置
                            添加组件
                              +
                            • 右键Thread Group
                            • +
                            • 点击Add -> Config Element -> User Defined Variables
                            • +
                            +
                            添加对应的变量
                              +
                            • hostname:localhost
                            • +
                            • port:9090
                            • +
                            • protocol:http
                            • +
                            +

                            然后再请求参数中使用对应的参数变量名

                            +
                              +
                            • ${hostname}
                            • ${port}
                            • ${protocol}
                            @@ -1533,6 +1842,38 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for
                          • Sharinng mode:共享模式

                          注意:把请求的参数修改为:${变量}

                          +]]>
                          + + 工具教程 + + + jmeter + + + + Jmeter之json数据提取和参数传递 + /posts/26691.html + 安装组件JSON Extractor
                            +
                          • 右键Http Request
                          • +
                          • 点击Add -> Post Processors -> JSON Extractor
                          • +
                          +

                          组件安装成功

                          +

                          组件配置

                            +
                          • Names of created variables : 参数变量名称,提取出来的json使用这个变量
                          • +
                          • Json Path expressions : JSON提取的正则 比如:$.access_token这个是提取response里面的token
                          • +
                          • Match NO.(0 for Random):这个是写提取出json的第几条, 比如使用正则能匹配多条,使用这个输入数字就可以匹配对应的
                          • +
                          +
                          引用json变量
                            +
                          • Jmeter中引用变量的方法${变量名}
                          • +
                          +

                          调试脚本 Debug Sampler

                          +

                          帮助检查变量值,调试脚本

                          +
                          +
                            +
                          • 右键Thread Group
                          • +
                          • 点击Add -> Sampler -> Debug Sampler
                          • +
                          +

                          注意:把Debug放到所有请求的最底下,运行的后可以查看变量参数,方便调试

                          ]]>
                          工具教程 @@ -1590,17 +1931,6 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for jmeter
                          - - Modeule Controller和Include Controller - /posts/34250.html - Modeule Controller介绍]]> - - 工具教程 - - - jmeter - - Constant Timer定时器 /posts/527.html @@ -1616,16 +1946,9 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 随机控制器Random Controller和Random Order Controller - /posts/29537.html - 作用
                            -
                          • Random Controller:控制器子节点随机运行一个请求
                              -
                            • lgnore sub-controller blocks:忽略子控制器块
                            • -
                            -
                          • -
                          • Random Order Controller:控制器子节点随机运行全部请求
                          • -
                          -]]>
                          + Modeule Controller和Include Controller + /posts/34250.html + Modeule Controller介绍]]> 工具教程 @@ -1649,6 +1972,24 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for jmeter
                          + + 随机控制器Random Controller和Random Order Controller + /posts/29537.html + 作用
                            +
                          • Random Controller:控制器子节点随机运行一个请求
                              +
                            • lgnore sub-controller blocks:忽略子控制器块
                            • +
                            +
                          • +
                          • Random Order Controller:控制器子节点随机运行全部请求
                          • +
                          +]]>
                          + + 工具教程 + + + jmeter + +
                          逻辑控制器Simple Controller /posts/31868.html @@ -1798,139 +2139,33 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - java基础之方法和函数 - /posts/7388.html - 方法和函数 - - - - - - - - - - - - - - - - - - - - -
                          定义方式作用调用方式
                          函数public static void 函数名(){}封装指定功能的代码块函数名()
                          方法public [static] void 方法名(){}类的行为,对象可以执行的一些功能对象名.方法名
                          -

                          定义函数

                          -

                          使用static修饰的内容成为静态的内容

                          -
                          -
                          public static void function1(){
                          }
                          - -

                          调用函数

                          function1()
                          - -

                          定义方法

                          public void class className1{

                          String name;
                          //静态变量
                          static String age;

                          //静态方法
                          public static function1(){
                          }

                          //类方法
                          //非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
                          public function2(){
                          }
                          }
                          -

                          调用方法

                            -
                          • 调用静态方法,不需要实例化
                          • -
                          -
                          className1.function1()
                          - -
                            -
                          • 调用方法
                          • -
                          -
                          className1的对象,需要实例化
                          - - -

                          静态方法注意事项:

                            -
                          • 静态方法无法直接引用非静态的变量
                          • -
                          • 静态方法不能直接调用非静态的方法
                          • -
                          -

                          代码块

                            -
                          • 定义在方法内部,和局部变量处于平行的位置
                          • -
                          • 生命周期随着方法的调用而加载,随着方法的结束而消亡
                          • -
                          • 可以在局部代码块中定义一些使用范围和时间都很短的变量,用完就消失啦
                          • -
                          -
                          public void class className1{

                          String name;
                          static String age;

                          //类方法
                          //非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
                          public void function2(){

                          //定义代码块
                          {
                          int i = 100;
                          System.out.println("方法中的变量i=" + i);
                          }

                          }
                          }
                          - -

                          构造代码块

                            -
                          • 构造代码快写在和构造方法平行的位置
                          • -
                          • 只要创建对象,构造代码块就会执行,不论是采用有参的还是无参数的构造方法
                          • -
                          -
                          public void class{
                          //有参构造
                          class(String name){
                          }
                          //无参构造
                          class(){
                          }
                          //构造代码块
                          {
                          int i=100;
                          System.out.println("构造代码块i=" + i);
                          }

                          }
                          -

                          静态代码块

                            -
                          • 被static修饰的代码块称为静态代码块
                          • -
                          • 随着类的加载而加载
                          • -
                          • 静态代码块只执行一次,在程序中可以完成加载驱动等只执行一次的操作
                          • -
                          -
                          public void className1{
                          static{
                          System.out.println("我是静态代码块i=" + i);
                          }
                          }
                          ]]>
                          - - 工具教程 - - - java - -
                          - - 使用Java解析Properties文件 - /posts/50581.html - 主要函数 - - - - - - - - - - - - - - - - - - - - - - -
                          文件后缀函数方法
                          .Propertiesload加载文件
                          setProperty设置
                          getProperty获取
                          -

                          编写逻辑

                          创建加载文件的方法

                          -
                          /**
                          * 加载文件
                          * @return Properties 对象
                          * @throws IOException I/O输入异常
                          */
                          private Properties readProperties() throws IOException{
                          // 实例化,创建 Properties 对象
                          Properties properties = new Properties();
                          try {
                          // 创建文件输入对象 FileInputStream("testpro.properties")
                          InputStream inputStream = new FileInputStream(filepath);
                          // 把文件输入对象放入缓存输入对象 new BufferedInputStream 里面
                          BufferedInputStream in = new BufferedInputStream(inputStream);
                          // 加载文件 in = ParseProperties.class.getResourceAsStream("testpro.properties"),自动获取 resources 文件夹下路径
                          properties.load(in);
                          }catch (IOException e){
                          e.printStackTrace();
                          }
                          return properties;
                          }
                          - -

                          获取key后面的数据

                          -
                          /**
                          * 获取数据
                          * @param key 数据名称
                          * @return 数据等号右边的值
                          * @throws Exception 异常
                          */
                          public String getPro(String key) throws Exception {
                          // 判断文件里面有没有这个 Key
                          if (prop.containsKey(key)) {
                          // 获得key后面的value值
                          return prop.getProperty(key);
                          }else {
                          System.out.println("你获取的key值不对");
                          return "";
                          }
                          }
                          + 使用moko编写Get和Post测试接口(二) + /posts/10988.html + 上一节已经写了规则,这次直接来编写Get和Post请求

                          +

                          模拟一个没有参数的get请求

                          +
                          {
                          "description": "模拟一个没有参数的get请求",
                          "request": {
                          "uri": "/getdemo",
                          "method": "get"
                          },
                          "response": {
                          "text": "这是一个没有参数的get请求"
                          }
                          }
                          +

                          模拟一个带参数的请求

                          +
                          {
                          "description": "模拟一个带参数的请求",
                          "request": {
                          "uri": "getwithparam",
                          "method": "get",
                          "queries": {
                          "name": "胡汉三",
                          "age": "18"
                          }
                          },
                          "response": {
                          "text": "我胡汉三又回来了!!!!!"
                          }
                          }
                          -

                          获取定位类型或者定位表达式

                          -
                          /**
                          * 返回定位类型或者定位表达式
                          * @param key 数据名称
                          * @param num 输入0/1
                          * @return num=0时,返回定位类型,num=1时,返回定位表达式
                          */
                          public String get_pro_element(String key, int num){
                          return (num!=0 & num!=1) ? "num:参数输入错误" : prop.getProperty(key).split("->")[num];
                          }
                          +

                          模拟一个Post请求

                          +
                          {
                          "description": "模拟一个Post请求",
                          "request": {
                          "uri": "/postdemo",
                          "method": "post"
                          },
                          "response": {
                          "text": "这是我的第一个mosk的post请求"
                          }
                          }
                          -]]>
                          +

                          这是一个带参数的post请求

                          +
                          {
                          "description": "这是一个带参数的post请求",
                          "request": {
                          "uri": "/postwithparam",
                          "method": "post",
                          "forms": {
                          "name": "胡汉三",
                          "sex": "男人"
                          }
                          },
                          "response": {
                          "text": "我胡汉三带着参数来了!!!!"
                          }
                          }
                          ]]>
                          工具教程 java - Properties
                          - 抽象类与接口 - /posts/34655.html - 抽象类

                          使用abstract修饰一个类,把这个类变成抽象类,抽象类不能直接创建对象,需要其他类进行继承该抽象类

                          -
                            -
                          • 抽象方法不能有方法体
                          • -
                          • 抽象方法必须使用abstract进行修饰,不能有方法体
                          • -
                          • 子类必须实现父抽象类的方法
                            public abstract class Ahsse {
                            String name;
                            int age;

                            //普通方法
                            public String aaa(){
                            return name;
                            };
                            // 抽象方法
                            public abstract String bbb();
                            }

                            class sss extends Ahsse{

                            @Override
                            public String bbb() {
                            System.out.println("实现抽象类的抽象方法");
                            return "ces ";
                            }
                            }
                          • -
                          -

                          接口

                          使用interface定义接口,相当于class

                          -
                            -
                          • 接口可以多继承
                          • -
                          • 变量全部默认使用public static final修饰,使用之前必须赋值
                          • -
                          • 类里面全部是抽象方法(默认使用public abstract修饰,没有方法体)需要被实现类进行实现
                          • -
                          • 接口可以被多实现–implements
                          • -
                          + 使用moko编写测试接口(无) + /posts/28863.html + 测试

                          测试

                          测试moko


                          +

                          测试

                          +

                          🐱

                          +

                          ❄️

                          ]]>
                          工具教程 @@ -1940,96 +2175,15 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for
                          - 包装类 - /posts/16468.html - -
                        • 基本数据类型对应的包装类
                        • -
                        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        基本数据类型包装类大小(字节)
                        byteByte1–(-128~127)
                        shortShort2–(-32768~32767)
                        intInteger4
                        longLong8
                        floatFloat4
                        doubleDouble8
                        charCharacter2
                        booleanBoolean1
                        -

                        包装类方法

                          -
                        • Integer的作用主要是对int、Integer、String几种类型的数据进行转换,还能获取一些常量
                        • -
                        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        方法描述
                        compareTo()用于将对象与方法的参数进行比较(相同类型)
                        decode()将方法的参数转为包装类对象
                        equals()判断对象是否与参数相等
                        Integer.parseInt(“字符串’)将字符串转为Int类型
                        Integer.toString(int数据)将Int类型转为字符串
                        -

                        compareTo()方法

                          -
                        • 如果指定的数与参数相等返回 0。
                        • -
                        • 如果指定的数小于参数返回 -1。
                        • -
                        • 如果指定的数大于参数返回 1。
                        • -
                        + 使用moko编写包含cookie信息的测试接口(二) + /posts/48785.html + 上一节已经写了规则,这次直接来编写Get和Post请求

                        +

                        这是一个会返回cookie的get请求

                        {
                        "description": "这是一个会返回cookie的get请求",
                        "request": {
                        "uri": "/getCookies",
                        "method": "get"
                        },
                        "response": {
                        "cookies": {
                        "login": "true"
                        },
                        "text": "恭喜你获得cookies信息成功",
                        "status": 200,
                        "msg": "成功"
                        }
                        }
                        + +

                        这是一个携带cookies信息的get请求

                        {
                        "description": "这是一个带cookies信息的get请求",
                        "request": {
                        "uri": "/get/with/cookies",
                        "method": "get",
                        "cookies": {
                        "login": "true"
                        }
                        },
                        "response": {
                        "text": "这是一个需要携带cookies信息才能访问的get请求"
                        }
                        }
                        + +

                        这是一个携带cookies信息的post请求

                        {
                        "description": "这是一个带cookies信息的post请求",
                        "request": {
                        "uri": "/post/with/cookies",
                        "method": "post",
                        "cookies": {
                        "login": "true"
                        },
                        "json": {
                        "name": "huhansan",
                        "age": "18"
                        }
                        },
                        "response": {
                        "status": 200,
                        "json": {
                        "huhansan": "success",
                        "status": "1"
                        }
                        }
                        }
                        + ]]>
                        工具教程 @@ -2039,49 +2193,34 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for
                        - 字符串 - /posts/47564.html - 字符串的方法 - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        方法描述
                        str.concat()将参数拼接到字符串上
                        trim()去除字符串两端的字符串,不能去除中间
                        replace(oldChar, newChar)将字符串的old参数替换为new参数
                        length()返回此字符串的长度
                        isEmpty()判断字符串是否为空
                        -

                        concat()方法

                          -
                        • 返回字符串类型
                        • -
                        • 字符串在后面拼接
                          String str = "床前明月光";
                          String str1 = str.concat("疑是地上霜。");
                          System.out.println(str1);
                        • + 使用moko编写测试接口(一) + /posts/37984.html + 编写规则
                            +
                          • []包裹着以{}包起来的接口脚本

                            +
                          • +
                          • description:接口简介

                            +
                          • +
                          • request:使用{}包含接口的请求信息

                            +
                              +
                            • uri:接口的地址名称
                            • +
                            • method:请求方法
                            • +
                            • queries:get请求参数
                            • +
                            • forms:post请求参数
                            • +
                            • headers:请求头信息
                            -

                            trim()方法

                            String str = "    床  前明   月光   ";
                            String str1 = str.trim();
                            System.out.println(str1);
                            -

                            replace(oldChar, newChar)方法

                            String str = "床前明月光";
                            String str1 = str.replace("床", "llll");
                            System.out.println(str1);
                            -

                            length()方法

                              -
                            • 返回int类型
                              String str = "床前明月光";
                              int str1 = str.length();
                              System.out.println(str1);
                            • + +
                            • response:返回的数据,使用{}

                              +
                                +
                              • text:返回的文字数据
                              • +
                              • cookies:返回的cookie信息
                              • +
                              • status:返回的响应码
                              -

                              isEmpty()方法

                                -
                              • 返回布尔类型
                                String str = "床前明月光";
                                boolean str1 = str.isEmpty();
                                System.out.println(str1);
                              • +
                              -]]> +

                              举个栗子demo

                              +
                              [
                              {
                              "description": "这是我们的第一个mock栗子",
                              "request": {
                              "uri": "/demo"
                              },
                              "response": {
                              "text": "第一个mock响应demo"
                              }
                              }
                              ]
                              +

                              get请求demo

                              +
                              [
                              {
                              "description": "接口的get请求",
                              "request": {
                              "uri": "/#/test/xml",
                              "method": "get"
                              },
                              "response": {
                              "text": "get请求接口"
                              }
                              }
                              ]
                              ]]> 工具教程 @@ -2090,46 +2229,25 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 继承、重写与重载 - /posts/55332.html - 继承

                              继承是相对于类来说,通过关键字extends来实现

                              -
                                -
                              • 可以获取父类的属性和方法
                              • -
                              • 提高代码的复用性
                              • -
                              • 父类修改了内容,子类也会修改
                              • -
                              -

                              调用

                              父类的属性和方法

                              -
                                -
                              • this表示当前对象的引用
                              • -
                              • super表示父类对象的引用
                              • -
                              • 调用构造方法
                                  -
                                • this(参数列表)表示调用当前类中的构造方法
                                • -
                                • super(参数列表)表示调用父类的构造方法,必须放在方法中的第一行
                                • -
                                -
                              • -
                              • 调用属性
                                  -
                                • this.属性表示调用当前对象的属性
                                • -
                                • super.属性表示调用父类的属性,可以拿到被重写之前的数据
                                • -
                                -
                              • -
                              • 调用方法
                                  -
                                • this.方法表示调用当前对象的方法
                                • -
                                • super.方法表示调用父类的方法,可以拿到被重写之前的方法,不用放在代码的第一行
                                • -
                                -
                              • -
                              -

                              重写

                              重写是子类可以重写父类的方法,使用override标识

                              -
                                -
                              • 方法名和参数不变,只修改方法体
                              • -
                              • 访问权限不能比父类的范围更小
                              • -
                              • 私有的方法能被子类继承,但不能使用和重写
                              • -
                              • 静态的方法能被子类继承,能使用但不能被重写
                                public class testeass {

                                public void aa(String name, int age){
                                System.out.println(name + age);
                                }
                                }

                                class testaaa extends testeass{

                                @Override
                                public void aa(String name, int age) {
                                System.out.println("这是重写方法,方法名、参数和返回数据都不变,只能修改方法体");
                                System.out.println(name + age);
                                }
                                }
                              • -
                              -

                              重载

                              重载是同一个类下对方法进行重载

                              -
                                -
                              • 方法名相同,参数不相同 (参数个数不同/参数类型不同/参数排列顺序不同)
                              • -
                              • 返回类型不限制
                                public class jichu {

                                // 原方法
                                public void hello(String name, int aa){
                                System.out.println("拼接起来的值是:"+ name + aa );
                                }

                                // 重载后的方法
                                public void hello(int aa, String name){
                                System.out.println("aaaaaaa:" + aa);
                                }
                                }
                              • + 使用moko编写测试接口(五) + /posts/42012.html + 下载jar包

                                点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

                                +

                                使用命令启动测试脚本

                                java -jar jar包的存放路径 http -p 端口 -c json文件路径
                                ]]>
                                + + 工具教程 + + + java + + + + 使用moko编写重定向测试接口(四) + /posts/57578.html + 上一节已经写了规则,这次直接来编写Get和Post请求

                                +

                                重定向的测试接口

                                  +
                                • 使用了redirectTo:目标地址
                                +
                                [
                                {
                                "description": "重定向到百度",
                                "request": {
                                "uri": "/redirect"
                                },
                                "redirectTo": "http://www.baidu.com"
                                },
                                {
                                "description": "重定向到自己的网页上",
                                "request": {
                                "uri": "/redirect/topath"
                                },
                                "redirectTo": "/redirect/new"
                                },
                                {
                                "description": "这是被重定到的请求",
                                "request": {
                                "uri": "/redirect/new"
                                },
                                "response": {
                                "text": "重定向成功了"
                                }
                                }
                                ]
                                ]]>
                                工具教程 @@ -2582,47 +2700,6 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for ubuntu
                                - - 硬件性能监控平台 - /posts/2166.html - 拉取prometheus镜像
                                docker pull prom/prometheus
                                -

                                创建prometheus容器并启动

                                docker run -itd --name=docker_prometheus --restart=always -p 3090:9090 -v /opt/prometheus:/ prom/prometheus
                                -

                                验证

                                -

                                通过浏览器访问http://ip:3090进行访问

                                -

                                方法一:服务器上直接安装node_export

                                首先,用浏览器访问:node_export 下载,然后上传到被监控的服务器并解压
                                进入解压文件夹,直接启动./node_exporter

                                -

                                方法二:拉取docker node_export镜像

                                docker pull prom/node-exporter
                                - -

                                创建node_export容器并启动

                                docker run -itd --name=node-exporter \
                                --restart=always \
                                -p 9100:9100 \
                                -v "/proc:/host/proc:ro" \
                                -v "/sys:/host/sys:ro" \
                                -v "/:/rootfs:ro" \
                                prom/node-exporter
                                - -

                                验证

                                -

                                在浏览器访问http://ip:9100/metrics进行访问

                                -

                                配置prometheus + node_export

                                node_export的作用收集硬件数据

                                -

                                使用vim修改yum文件容器内:/etc/prometheus/prometheus.yml

                                -
                                scrape_configs:
                                - job_name: prometheus
                                static_configs:
                                - targets: ['localhost:9090']
                                labels:
                                instance: prometheus

                                - job_name: linux
                                static_configs:
                                - targets: ['被监控的服务器ip:9100']
                                labels:
                                instance: localhost
                                - -

                                重启prometheus容器

                                docker restart docker_prometheus
                                - -

                                配置Grafana

                                使用Grafana下载版本

                                -

                                配置数据源

                                  -
                                • 数据源:选择prometheus

                                  -
                                • -
                                • URL输入http://prometheus机器ip:3090

                                  -
                                • -
                                • 点击Save & Test保存

                                  -
                                • -
                                -

                                添加仪表盘

                                使用官方仪表盘进行下载仪表盘
                                导入仪表盘
                                import via grafana.com输入框输入模板ID12884

                                -

                                ID:12633也可以使用。

                                -

                                点击 load,然后底部选择刚弄的数据源,点击import

                                -

                                注意:
                                点击json下载12884的json文件

                                -]]>
                                - - 工具教程 - - - 监控 - -
                                性能监控平台 /posts/23767.html @@ -2938,121 +3015,84 @@ Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be for - 使用moko编写Get和Post测试接口(二) - /posts/10988.html - 上一节已经写了规则,这次直接来编写Get和Post请求

                                -

                                模拟一个没有参数的get请求

                                -
                                {
                                "description": "模拟一个没有参数的get请求",
                                "request": {
                                "uri": "/getdemo",
                                "method": "get"
                                },
                                "response": {
                                "text": "这是一个没有参数的get请求"
                                }
                                }
                                -

                                模拟一个带参数的请求

                                -
                                {
                                "description": "模拟一个带参数的请求",
                                "request": {
                                "uri": "getwithparam",
                                "method": "get",
                                "queries": {
                                "name": "胡汉三",
                                "age": "18"
                                }
                                },
                                "response": {
                                "text": "我胡汉三又回来了!!!!!"
                                }
                                }
                                - -

                                模拟一个Post请求

                                -
                                {
                                "description": "模拟一个Post请求",
                                "request": {
                                "uri": "/postdemo",
                                "method": "post"
                                },
                                "response": {
                                "text": "这是我的第一个mosk的post请求"
                                }
                                }
                                + 硬件性能监控平台 + /posts/2166.html + 拉取prometheus镜像
                                docker pull prom/prometheus
                                +

                                创建prometheus容器并启动

                                docker run -itd --name=docker_prometheus --restart=always -p 3090:9090 -v /opt/prometheus:/ prom/prometheus
                                +

                                验证

                                +

                                通过浏览器访问http://ip:3090进行访问

                                +

                                方法一:服务器上直接安装node_export

                                首先,用浏览器访问:node_export 下载,然后上传到被监控的服务器并解压
                                进入解压文件夹,直接启动./node_exporter

                                +

                                方法二:拉取docker node_export镜像

                                docker pull prom/node-exporter
                                -

                                这是一个带参数的post请求

                                -
                                {
                                "description": "这是一个带参数的post请求",
                                "request": {
                                "uri": "/postwithparam",
                                "method": "post",
                                "forms": {
                                "name": "胡汉三",
                                "sex": "男人"
                                }
                                },
                                "response": {
                                "text": "我胡汉三带着参数来了!!!!"
                                }
                                }
                                ]]>
                                - - 工具教程 - - - java - -
                                - - 使用moko编写包含cookie信息的测试接口(二) - /posts/48785.html - 上一节已经写了规则,这次直接来编写Get和Post请求

                                -

                                这是一个会返回cookie的get请求

                                {
                                "description": "这是一个会返回cookie的get请求",
                                "request": {
                                "uri": "/getCookies",
                                "method": "get"
                                },
                                "response": {
                                "cookies": {
                                "login": "true"
                                },
                                "text": "恭喜你获得cookies信息成功",
                                "status": 200,
                                "msg": "成功"
                                }
                                }
                                +

                                创建node_export容器并启动

                                docker run -itd --name=node-exporter \
                                --restart=always \
                                -p 9100:9100 \
                                -v "/proc:/host/proc:ro" \
                                -v "/sys:/host/sys:ro" \
                                -v "/:/rootfs:ro" \
                                prom/node-exporter
                                -

                                这是一个携带cookies信息的get请求

                                {
                                "description": "这是一个带cookies信息的get请求",
                                "request": {
                                "uri": "/get/with/cookies",
                                "method": "get",
                                "cookies": {
                                "login": "true"
                                }
                                },
                                "response": {
                                "text": "这是一个需要携带cookies信息才能访问的get请求"
                                }
                                }
                                +

                                验证

                                +

                                在浏览器访问http://ip:9100/metrics进行访问

                                +

                                配置prometheus + node_export

                                node_export的作用收集硬件数据

                                +

                                使用vim修改yum文件容器内:/etc/prometheus/prometheus.yml

                                +
                                scrape_configs:
                                - job_name: prometheus
                                static_configs:
                                - targets: ['localhost:9090']
                                labels:
                                instance: prometheus

                                - job_name: linux
                                static_configs:
                                - targets: ['被监控的服务器ip:9100']
                                labels:
                                instance: localhost
                                -

                                这是一个携带cookies信息的post请求

                                {
                                "description": "这是一个带cookies信息的post请求",
                                "request": {
                                "uri": "/post/with/cookies",
                                "method": "post",
                                "cookies": {
                                "login": "true"
                                },
                                "json": {
                                "name": "huhansan",
                                "age": "18"
                                }
                                },
                                "response": {
                                "status": 200,
                                "json": {
                                "huhansan": "success",
                                "status": "1"
                                }
                                }
                                }
                                +

                                重启prometheus容器

                                docker restart docker_prometheus
                                -]]>
                                - - 工具教程 - - - java - -
                                - - 使用moko编写测试接口(无) - /posts/28863.html - 测试

                                测试

                                测试moko


                                -

                                测试

                                -

                                🐱

                                -

                                ❄️

                                -]]>
                                - - 工具教程 - - - java - -
                                - - 使用moko编写测试接口(五) - /posts/42012.html - 下载jar包

                                点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

                                -

                                使用命令启动测试脚本

                                java -jar jar包的存放路径 http -p 端口 -c json文件路径
                                ]]>
                                - - 工具教程 - - - java - -
                                - - 使用moko编写重定向测试接口(四) - /posts/57578.html - 上一节已经写了规则,这次直接来编写Get和Post请求

                                -

                                重定向的测试接口

                                  -
                                • 使用了redirectTo:目标地址
                                • +

                                  配置Grafana

                                  使用Grafana下载版本

                                  +

                                  配置数据源

                                    +
                                  • 数据源:选择prometheus

                                    +
                                  • +
                                  • URL输入http://prometheus机器ip:3090

                                    +
                                  • +
                                  • 点击Save & Test保存

                                    +
                                  -
                                  [
                                  {
                                  "description": "重定向到百度",
                                  "request": {
                                  "uri": "/redirect"
                                  },
                                  "redirectTo": "http://www.baidu.com"
                                  },
                                  {
                                  "description": "重定向到自己的网页上",
                                  "request": {
                                  "uri": "/redirect/topath"
                                  },
                                  "redirectTo": "/redirect/new"
                                  },
                                  {
                                  "description": "这是被重定到的请求",
                                  "request": {
                                  "uri": "/redirect/new"
                                  },
                                  "response": {
                                  "text": "重定向成功了"
                                  }
                                  }
                                  ]
                                  +

                                  添加仪表盘

                                  使用官方仪表盘进行下载仪表盘
                                  导入仪表盘
                                  import via grafana.com输入框输入模板ID12884

                                  +

                                  ID:12633也可以使用。

                                  +

                                  点击 load,然后底部选择刚弄的数据源,点击import

                                  +

                                  注意:
                                  点击json下载12884的json文件

                                  ]]> 工具教程 - java + 监控 - 使用moko编写测试接口(一) - /posts/37984.html - 编写规则
                                    -
                                  • []包裹着以{}包起来的接口脚本

                                    -
                                  • -
                                  • description:接口简介

                                    -
                                  • -
                                  • request:使用{}包含接口的请求信息

                                    -
                                      -
                                    • uri:接口的地址名称
                                    • -
                                    • method:请求方法
                                    • -
                                    • queries:get请求参数
                                    • -
                                    • forms:post请求参数
                                    • -
                                    • headers:请求头信息
                                    • -
                                    -
                                  • -
                                  • response:返回的数据,使用{}

                                    -
                                      -
                                    • text:返回的文字数据
                                    • -
                                    • cookies:返回的cookie信息
                                    • -
                                    • status:返回的响应码
                                    • -
                                    -
                                  • -
                                  -

                                  举个栗子demo

                                  -
                                  [
                                  {
                                  "description": "这是我们的第一个mock栗子",
                                  "request": {
                                  "uri": "/demo"
                                  },
                                  "response": {
                                  "text": "第一个mock响应demo"
                                  }
                                  }
                                  ]
                                  -

                                  get请求demo

                                  -
                                  [
                                  {
                                  "description": "接口的get请求",
                                  "request": {
                                  "uri": "/#/test/xml",
                                  "method": "get"
                                  },
                                  "response": {
                                  "text": "get请求接口"
                                  }
                                  }
                                  ]
                                  ]]>
                                  + 如何使用pyyaml获取yaml里面的数据 + /posts/28702.html + 准备数据

                                  在config目录下创建environment.yaml文件

                                  +
                                  username: 周杰伦
                                  password: 123456
                                  + +
                                  使用pyyaml获取yaml中的数据
                                  解析yaml文件

                                  首先创建yaml_config文件,为了方便自动化后面的引用,需要创建一个类,在__init__里面打开yaml文件,使用yaml.load(文件名称, Loader=yaml.FullLoader )方法获取数据

                                  +

                                  打印出字典格式的数据{'username': '周杰伦', 'password': 123456}

                                  +
                                  import yaml
                                  from common.tools import get_project_path, sep


                                  class GetConf:
                                  def __init__(self):
                                  with open(../config.environment.yaml), "r", encoding="utf-8")\
                                  as env_file:
                                  self.env = yaml.load(env_file, Loader=yaml.FullLoader)
                                  + +

                                  现在使用的是相对路径,后期如果换系统,或者更换文件位置,就需要自己获得文件路径,下面对代码进行优化

                                  +
                                  优化项:获得项目名称的url地址

                                  创建get_project_path方法,获取项目根目录的绝对路径

                                  +

                                  首先定义一个变量,变量的值是项目的名称project_name = "trading_system_autotest"

                                  +

                                  获取当前文件的所在目录的绝对路径,需要使用python的os模块file_path=os.path.dirname(__file__)

                                  +

                                  在绝对路径中找到项目名称的下标位置file_path.find(project_name)

                                  +

                                  找到项目所在目录的绝对路径下标+项目名称的长度=项目根目录的绝对路径的下标file_path.find(project_name)+len(project_name)

                                  +

                                  然后对所在目录的绝对路径file_path进行切片获得项目根目录的绝对路径

                                  +

                                  file_path[: file_path.find(project_name)+len(project_name)]

                                  +
                                  def get_project_path():
                                  """
                                  获取项目根目录的绝对路径
                                  :return:
                                  """
                                  project_name = "trading_system_autotest"
                                  # 获取当前文件的所在目录的绝对路径
                                  file_path = os.path.dirname(__file__)
                                  # # 在绝对路径中找到项目名称的下标位置
                                  # print(file_path.find(project_name))
                                  # 找到项目所在目录的绝对路径+项目名称的长度=项目的绝对路径
                                  # print(len(project_name))
                                  return file_path[: file_path.find(project_name)+len(project_name)]
                                  + +
                                  优化项:获得拼接后的目录和文件

                                  创建sep(path, add_sep_before=False, add_sep_after=False)方法,获得文件和目录的拼接

                                  +

                                  变量

                                  +

                                  path变量需要传输一个列表,列表里面是文件所在目录和文件名称,如[文件所在目录,文件名称]

                                  +

                                  首先使用os.sep.join对列表的字段进行拼接all_path = os.sep.join(path)

                                  +

                                  add_sep_before进行判断,如果是True,就在前面添加拼接符all_path = os.sep + all_path

                                  +

                                  add_sep_after进行判断,如果是True,就在后面添加拼接符all_path = all_path + os.sep

                                  +

                                  windows格式拼接符有可能错误,就要对拼接符转换格式all_path = all_path.replace('\\', '/'),就算没有这个代码,也可以运行出来,只是调试该代码看起来不好看

                                  +

                                  然后返回all_path

                                  +
                                  def sep(path, add_sep_before=False, add_sep_after=False):
                                  """
                                  :param path: is list format:[Current directory , Current file]
                                  :param add_sep_before: Add before directory "/"
                                  :param add_sep_after: Add after directory "/"
                                  :return: Current directory/Current file
                                  """
                                  all_path = os.sep.join(path)
                                  # 在前面添加\
                                  if add_sep_before:
                                  all_path = os.sep + all_path
                                  # 在后面添加\
                                  if add_sep_after:
                                  all_path = all_path + os.sep
                                  # 转换格式 把\转换为/
                                  all_path = all_path.replace('\\', '/')
                                  return all_path
                                  + +
                                  优化后的代码
                                  class GetConf:
                                  def __init__(self):
                                  with open(get_project_path()+sep(["config", "environment.yaml"], add_sep_before=True), "r", encoding="utf-8")\
                                  as env_file:
                                  self.env = yaml.load(env_file, Loader=yaml.FullLoader)
                                  print(self.env)

                                  def get_username_password(self):
                                  return self.env["username"], self.env["password"]
                                  + +]]>
                                  工具教程 - java + python
                                  @@ -3149,46 +3189,6 @@ if __name__ == "__init__":
                                  运行结果:

                                  image

                                  栗子2

                                  image

                                  运行结果:

                                  image

                                  -]]> - - 工具教程 - - - python - -
                                  - - 如何使用pyyaml获取yaml里面的数据 - /posts/28702.html - 准备数据

                                  在config目录下创建environment.yaml文件

                                  -
                                  username: 周杰伦
                                  password: 123456
                                  - -
                                  使用pyyaml获取yaml中的数据
                                  解析yaml文件

                                  首先创建yaml_config文件,为了方便自动化后面的引用,需要创建一个类,在__init__里面打开yaml文件,使用yaml.load(文件名称, Loader=yaml.FullLoader )方法获取数据

                                  -

                                  打印出字典格式的数据{'username': '周杰伦', 'password': 123456}

                                  -
                                  import yaml
                                  from common.tools import get_project_path, sep


                                  class GetConf:
                                  def __init__(self):
                                  with open(../config.environment.yaml), "r", encoding="utf-8")\
                                  as env_file:
                                  self.env = yaml.load(env_file, Loader=yaml.FullLoader)
                                  - -

                                  现在使用的是相对路径,后期如果换系统,或者更换文件位置,就需要自己获得文件路径,下面对代码进行优化

                                  -
                                  优化项:获得项目名称的url地址

                                  创建get_project_path方法,获取项目根目录的绝对路径

                                  -

                                  首先定义一个变量,变量的值是项目的名称project_name = "trading_system_autotest"

                                  -

                                  获取当前文件的所在目录的绝对路径,需要使用python的os模块file_path=os.path.dirname(__file__)

                                  -

                                  在绝对路径中找到项目名称的下标位置file_path.find(project_name)

                                  -

                                  找到项目所在目录的绝对路径下标+项目名称的长度=项目根目录的绝对路径的下标file_path.find(project_name)+len(project_name)

                                  -

                                  然后对所在目录的绝对路径file_path进行切片获得项目根目录的绝对路径

                                  -

                                  file_path[: file_path.find(project_name)+len(project_name)]

                                  -
                                  def get_project_path():
                                  """
                                  获取项目根目录的绝对路径
                                  :return:
                                  """
                                  project_name = "trading_system_autotest"
                                  # 获取当前文件的所在目录的绝对路径
                                  file_path = os.path.dirname(__file__)
                                  # # 在绝对路径中找到项目名称的下标位置
                                  # print(file_path.find(project_name))
                                  # 找到项目所在目录的绝对路径+项目名称的长度=项目的绝对路径
                                  # print(len(project_name))
                                  return file_path[: file_path.find(project_name)+len(project_name)]
                                  - -
                                  优化项:获得拼接后的目录和文件

                                  创建sep(path, add_sep_before=False, add_sep_after=False)方法,获得文件和目录的拼接

                                  -

                                  变量

                                  -

                                  path变量需要传输一个列表,列表里面是文件所在目录和文件名称,如[文件所在目录,文件名称]

                                  -

                                  首先使用os.sep.join对列表的字段进行拼接all_path = os.sep.join(path)

                                  -

                                  add_sep_before进行判断,如果是True,就在前面添加拼接符all_path = os.sep + all_path

                                  -

                                  add_sep_after进行判断,如果是True,就在后面添加拼接符all_path = all_path + os.sep

                                  -

                                  windows格式拼接符有可能错误,就要对拼接符转换格式all_path = all_path.replace('\\', '/'),就算没有这个代码,也可以运行出来,只是调试该代码看起来不好看

                                  -

                                  然后返回all_path

                                  -
                                  def sep(path, add_sep_before=False, add_sep_after=False):
                                  """
                                  :param path: is list format:[Current directory , Current file]
                                  :param add_sep_before: Add before directory "/"
                                  :param add_sep_after: Add after directory "/"
                                  :return: Current directory/Current file
                                  """
                                  all_path = os.sep.join(path)
                                  # 在前面添加\
                                  if add_sep_before:
                                  all_path = os.sep + all_path
                                  # 在后面添加\
                                  if add_sep_after:
                                  all_path = all_path + os.sep
                                  # 转换格式 把\转换为/
                                  all_path = all_path.replace('\\', '/')
                                  return all_path
                                  - -
                                  优化后的代码
                                  class GetConf:
                                  def __init__(self):
                                  with open(get_project_path()+sep(["config", "environment.yaml"], add_sep_before=True), "r", encoding="utf-8")\
                                  as env_file:
                                  self.env = yaml.load(env_file, Loader=yaml.FullLoader)
                                  print(self.env)

                                  def get_username_password(self):
                                  return self.env["username"], self.env["password"]
                                  - ]]>
                                  工具教程 @@ -3671,209 +3671,104 @@ if __name__ == "__init__":

                                  awk [选项参数] ‘pattern1{action1}’ filename

                                  • pattern:表示awk在数据中查找的内容
                                  • -
                                  • action:找到匹配内容时执行命令
                                  • -
                                  - - - - - - - - - - - - - - - -
                                  选项参数功能
                                  -F指定输入文件分隔符
                                  -v赋值一个用户定义变量
                                  -
                                  举个栗子

                                  数据准备的是/etc/passwd

                                  -
                                  [root@b09ed0cc2c9d opt]# cat passwd
                                  root:x:0:0:root:/root:/bin/bash
                                  bin:x:1:1:bin:/bin:/sbin/nologin
                                  daemon:x:2:2:daemon:/sbin:/sbin/nologin
                                  adm:x:3:4:adm:/var/adm:/sbin/nologin
                                  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
                                  sync:x:5:0:sync:/sbin:/bin/sync
                                  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
                                  halt:x:7:0:halt:/sbin:/sbin/halt
                                  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
                                  operator:x:11:0:operator:/root:/sbin/nologin
                                  games:x:12:100:games:/usr/games:/sbin/nologin
                                  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
                                  nobody:x:99:99:Nobody:/:/sbin/nologin
                                  systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
                                  dbus:x:81:81:System message bus:/:/sbin/nologin
                                  - -

                                  搜素passwd文件以root关键字开头的所有航,并输出该行的第7列

                                  -
                                  [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $7}' passwd
                                  /bin/bash
                                  [root@b09ed0cc2c9d opt]#
                                  - -

                                  搜素passwd文件以root关键字开头的所有航,并输出该行的第1列和第7列,输出时以逗号分隔

                                  -
                                  [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $1","$7}' passwd
                                  root,/bin/bash
                                  - -

                                  只显示/etc/passwd的第一列和第7列,以逗号分隔,且在所有航前面添加列名 user,shell在最后一行添加 ddd, /bin/zuishuai

                                  -
                                  [root@b09ed0cc2c9d opt]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "ddd,bin/zuishuai"}' passwd
                                  - -

                                  注意:BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行

                                  -

                                  将passwd 文件中的用户id增加数值1并输出

                                  -
                                  [root@b09ed0cc2c9d opt]# awk -F : -v i=1 '{print $3+i}' passwd
                                  - -
                                  内置变量
                                  - - - - - - - - - - - - - - - - - - -
                                  变量说明
                                  filename文件名
                                  nr已读的记录数
                                  nf浏览记录的域的个数
                                  -
                                  举个栗子

                                  数据准备

                                  -
                                  [root@b09ed0cc2c9d opt]# cat sed.txt
                                  dong shen
                                  guan zhen
                                  wo wo
                                  lai lai

                                  le le
                                  - -

                                  统计passwd文件名,每行的行号,每列的列数

                                  -
                                  [root@b09ed0cc2c9d opt]# awk -F : '{print FILENAME "," NR "," NF}' passwd
                                  - -

                                  打印空行所在的行号

                                  -
                                  awk '/^$/ {print NR}' sed.txt
                                  - -
                                  sort工具
                                  -

                                  文件排序

                                  -
                                  -

                                  sort(选项)(参数)

                                  - - - - - - - - - - - - - - - - - - - - - - - -
                                  选项说明
                                  -n按照数值大小排序
                                  -r以相反的顺序排序
                                  -t设置排序使用的分隔字符
                                  -k指定需要排序的列
                                  -

                                  参数是指定待排序文件列表

                                  -]]> - - 工具教程 - - - shell - -
                                  - - 马哲 - /posts/50070.html - 马哲的基本特征
                                    -
                                  • 实践性
                                  • -
                                  • 阶级性
                                  • -
                                  • 革命性
                                  • -
                                  • 科学性
                                  • -
                                  -

                                  【主观题】主观能动性与规律的统一

                                    -
                                  • 尊重客观规律是正确发挥主观能动性的提前
                                  • -
                                  • 认识和利用客观规律必须充分发挥人的主观能动性
                                  • -
                                  • 在社会主义现代化建设中,必须把发挥人的主观能动性和尊重客观规律相结合
                                  • -
                                  -

                                  唯物辩证法的基本特征

                                  联系的观点和发展的观点

                                  -

                                  世界联系和发展的三个普遍规律

                                    -
                                  • 对立统一规律(唯物辩证法的实质和核心): 揭示事物发展的动力和源泉
                                    -

                                    矛盾的同一性和斗争性

                                    -
                                    -
                                  • -
                                  • 质量互变规律: 揭示事物发展的状态和形式
                                  • -
                                  • 否定之否定规律: 揭示事物发展的趋势和道路
                                  • -
                                  -

                                  【主观题】实践对认识的决定作用

                                    -
                                  • 实践是认识的来源
                                  • -
                                  • 实践是认识发展的动力
                                  • -
                                  • 实践是认识的目的
                                  • -
                                  • 实践是检验真理的唯一标准
                                  • -
                                  -]]>
                                  - - 学习日常 - - - 马哲 - -
                                  - - 高数一 - /posts/56062.html - 极限的等价无穷小替换
                                  -

                                  当 x->0 时

                                  -
                                  -
                                    -
                                  • sinx~x

                                    -
                                  • -
                                  • tanx ~ x

                                    -
                                  • -
                                  • e^x-1 ~ x

                                    -
                                  • -
                                  • ln(1+x) ~ x

                                    -
                                  • -
                                  • 1-cosx~1/2 x²

                                    -
                                  • -
                                  • a^x -1 ~ xIna

                                    -
                                  • -
                                  • arcsinx ~ x

                                    -
                                  • -
                                  • arctanx ~ x

                                    -
                                  • -
                                  • tanx-sinx ~1/2 x³

                                    -
                                  • -
                                  • (1+x)^a-1 ~ ax

                                    -
                                  • -
                                  -

                                  导数

                                  ]]>
                                  - - 学习日常 - - - 高数 - -
                                  - - 2023立的flag - /posts/44161.html - 目前所拥有的进度
                                    -
                                  • 考研恋练有词必背词全部背锅一边

                                    -
                                  • -
                                  • 自动化测试已部署

                                    -
                                  • -
                                  • -
                                  • -
                                  -]]>
                                  - - 生活日常 - - - 目标&优化 - -
                                  - - 考研进度实况 - /posts/52630.html - 考研实况
                                  +
                                • action:找到匹配内容时执行命令
                                • +
                                + + + + + + + + + + + + + + + +
                                选项参数功能
                                -F指定输入文件分隔符
                                -v赋值一个用户定义变量
                                +
                                举个栗子

                                数据准备的是/etc/passwd

                                +
                                [root@b09ed0cc2c9d opt]# cat passwd
                                root:x:0:0:root:/root:/bin/bash
                                bin:x:1:1:bin:/bin:/sbin/nologin
                                daemon:x:2:2:daemon:/sbin:/sbin/nologin
                                adm:x:3:4:adm:/var/adm:/sbin/nologin
                                lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
                                sync:x:5:0:sync:/sbin:/bin/sync
                                shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
                                halt:x:7:0:halt:/sbin:/sbin/halt
                                mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
                                operator:x:11:0:operator:/root:/sbin/nologin
                                games:x:12:100:games:/usr/games:/sbin/nologin
                                ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
                                nobody:x:99:99:Nobody:/:/sbin/nologin
                                systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
                                dbus:x:81:81:System message bus:/:/sbin/nologin
                                + +

                                搜素passwd文件以root关键字开头的所有航,并输出该行的第7列

                                +
                                [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $7}' passwd
                                /bin/bash
                                [root@b09ed0cc2c9d opt]#
                                + +

                                搜素passwd文件以root关键字开头的所有航,并输出该行的第1列和第7列,输出时以逗号分隔

                                +
                                [root@b09ed0cc2c9d opt]# awk -F : '/^root/{print $1","$7}' passwd
                                root,/bin/bash
                                + +

                                只显示/etc/passwd的第一列和第7列,以逗号分隔,且在所有航前面添加列名 user,shell在最后一行添加 ddd, /bin/zuishuai

                                +
                                [root@b09ed0cc2c9d opt]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "ddd,bin/zuishuai"}' passwd
                                + +

                                注意:BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行

                                +

                                将passwd 文件中的用户id增加数值1并输出

                                +
                                [root@b09ed0cc2c9d opt]# awk -F : -v i=1 '{print $3+i}' passwd
                                + +
                                内置变量
                                + + + + + + + + + + + + + + + + + + +
                                变量说明
                                filename文件名
                                nr已读的记录数
                                nf浏览记录的域的个数
                                +
                                举个栗子

                                数据准备

                                +
                                [root@b09ed0cc2c9d opt]# cat sed.txt
                                dong shen
                                guan zhen
                                wo wo
                                lai lai

                                le le
                                + +

                                统计passwd文件名,每行的行号,每列的列数

                                +
                                [root@b09ed0cc2c9d opt]# awk -F : '{print FILENAME "," NR "," NF}' passwd
                                + +

                                打印空行所在的行号

                                +
                                awk '/^$/ {print NR}' sed.txt
                                + +
                                sort工具
                                +

                                文件排序

                                +

                                sort(选项)(参数)

                                + + + + + + + + + + + + + + + + + + + + + + + +
                                选项说明
                                -n按照数值大小排序
                                -r以相反的顺序排序
                                -t设置排序使用的分隔字符
                                -k指定需要排序的列
                                +

                                参数是指定待排序文件列表

                                ]]>
                                - 学习日常 + 工具教程 - 考研 + shell
                                @@ -3942,6 +3837,18 @@ if __name__ == "__init__": SpringBoot + + 需要cookie访问的Get接口开发 + /posts/15521.html + 编写需要cookie才能访问的接口

                                这个接口还是在MyGetMethod类里面编写方法

                                +
                                /**
                                * 要求客户端携带cookie访问
                                * 这是一个需要携带cookies信息才能访问的get请求
                                */
                                @RequestMapping(value = "/get/with/cookies", method = RequestMethod.GET)
                                @ApiOperation(value = "要求客户端携带cookie访问", httpMethod = "GET")
                                public String getWithCookies(HttpServletRequest request){
                                Cookie[] cookies = request.getCookies();
                                if(Objects.isNull(cookies)){
                                return "你必须携带cookies信息来";
                                }
                                for(Cookie cookie : cookies){
                                if(cookie.getName().equals("login") && cookie.getValue().equals("True")){
                                return "恭喜你,访问成功!,这是一个需要携带cookies信息才能访问的get请求";
                                }
                                }
                                return "你必须携带cookies信息来";
                                }
                                ]]>
                                + + 工具教程 + + + SpringBoot + +
                                需要参数才能访问的get请求 /posts/7613.html @@ -3960,18 +3867,6 @@ if __name__ == "__init__": SpringBoot - - 需要cookie访问的Get接口开发 - /posts/15521.html - 编写需要cookie才能访问的接口

                                这个接口还是在MyGetMethod类里面编写方法

                                -
                                /**
                                * 要求客户端携带cookie访问
                                * 这是一个需要携带cookies信息才能访问的get请求
                                */
                                @RequestMapping(value = "/get/with/cookies", method = RequestMethod.GET)
                                @ApiOperation(value = "要求客户端携带cookie访问", httpMethod = "GET")
                                public String getWithCookies(HttpServletRequest request){
                                Cookie[] cookies = request.getCookies();
                                if(Objects.isNull(cookies)){
                                return "你必须携带cookies信息来";
                                }
                                for(Cookie cookie : cookies){
                                if(cookie.getName().equals("login") && cookie.getValue().equals("True")){
                                return "恭喜你,访问成功!,这是一个需要携带cookies信息才能访问的get请求";
                                }
                                }
                                return "你必须携带cookies信息来";
                                }
                                ]]>
                                - - 工具教程 - - - SpringBoot - -
                                开发获取用户列表的Post接口 /posts/16785.html @@ -4002,29 +3897,108 @@ if __name__ == "__init__": - Arrivals Thread Group的使用 - /posts/63387.html - 前提
                                  -
                                • 安装插件,下载Custom Thread Groupsan插件

                                  + 马哲 + /posts/50070.html + 马哲的基本特征
                                    +
                                  • 实践性
                                  • +
                                  • 阶级性
                                  • +
                                  • 革命性
                                  • +
                                  • 科学性
                                  • +
                                  +

                                  【主观题】主观能动性与规律的统一

                                    +
                                  • 尊重客观规律是正确发挥主观能动性的提前
                                  • +
                                  • 认识和利用客观规律必须充分发挥人的主观能动性
                                  • +
                                  • 在社会主义现代化建设中,必须把发挥人的主观能动性和尊重客观规律相结合
                                  • +
                                  +

                                  唯物辩证法的基本特征

                                  联系的观点和发展的观点

                                  +

                                  世界联系和发展的三个普遍规律

                                    +
                                  • 对立统一规律(唯物辩证法的实质和核心): 揭示事物发展的动力和源泉
                                    +

                                    矛盾的同一性和斗争性

                                    +
                                  • -
                                  • 添加Arrivals Thread Group

                                    +
                                  • 质量互变规律: 揭示事物发展的状态和形式
                                  • +
                                  • 否定之否定规律: 揭示事物发展的趋势和道路
                                  • +
                                  +

                                  【主观题】实践对认识的决定作用

                                    +
                                  • 实践是认识的来源
                                  • +
                                  • 实践是认识发展的动力
                                  • +
                                  • 实践是认识的目的
                                  • +
                                  • 实践是检验真理的唯一标准
                                  • +
                                  +]]>
                                  + + 学习日常 + + + 马哲 + + + + 高数一 + /posts/56062.html + 极限的等价无穷小替换
                                  +

                                  当 x->0 时

                                  +
                                  +
                                    +
                                  • sinx~x

                                    +
                                  • +
                                  • tanx ~ x

                                    +
                                  • +
                                  • e^x-1 ~ x

                                    +
                                  • +
                                  • ln(1+x) ~ x

                                    +
                                  • +
                                  • 1-cosx~1/2 x²

                                    +
                                  • +
                                  • a^x -1 ~ xIna

                                    +
                                  • +
                                  • arcsinx ~ x

                                    +
                                  • +
                                  • arctanx ~ x

                                    +
                                  • +
                                  • tanx-sinx ~1/2 x³

                                    +
                                  • +
                                  • (1+x)^a-1 ~ ax

                                  -

                                  配置

                                    -
                                  • Target Rate (arrivals/sec) : 相当于QPS, 输入10就是10QPS
                                  • -
                                  • Ramp Up Time (sec) : 在多少秒内达到最大的QPS,4代表在4秒内获得最大的QPS
                                  • -
                                  • Ramp-Up Steps Count : 代表并发数,4代表实现4次的并发
                                  • -
                                  • Hold Target Rate Time (sec) : 对系统压多长时间就输入多长时间 ,10代表压上10s
                                  • -
                                  • Concurrency Limit : 最大启动多少线程,100代表最多启动100线程
                                  • +

                                    导数

                                    ]]> + + 学习日常 + + + 高数 + + + + 2023立的flag + /posts/44161.html + 目前所拥有的进度
                                      +
                                    • 考研恋练有词必背词全部背锅一边

                                      +
                                    • +
                                    • 自动化测试已部署

                                      +
                                    • +
                                    • +
                                    -
                                    - -
                                    ]]>
                                    +]]> - 工具教程 + 生活日常 - jmeter + 目标&优化 + +
                                    + + 考研进度实况 + /posts/52630.html + 考研实况
                                    +
                                    +]]>
                                    + + 学习日常 + + + 考研
                                    @@ -4054,4 +4028,30 @@ if __name__ == "__init__": jmeter + + Arrivals Thread Group的使用 + /posts/63387.html + 前提
                                      +
                                    • 安装插件,下载Custom Thread Groupsan插件

                                      +
                                    • +
                                    • 添加Arrivals Thread Group

                                      +
                                    • +
                                    +

                                    配置

                                      +
                                    • Target Rate (arrivals/sec) : 相当于QPS, 输入10就是10QPS
                                    • +
                                    • Ramp Up Time (sec) : 在多少秒内达到最大的QPS,4代表在4秒内获得最大的QPS
                                    • +
                                    • Ramp-Up Steps Count : 代表并发数,4代表实现4次的并发
                                    • +
                                    • Hold Target Rate Time (sec) : 对系统压多长时间就输入多长时间 ,10代表压上10s
                                    • +
                                    • Concurrency Limit : 最大启动多少线程,100代表最多启动100线程
                                    • +
                                    +
                                    + +
                                    ]]>
                                    + + 工具教程 + + + jmeter + +
                                    diff --git a/self/css/gundong_bunner.css b/self/css/gundong_bunner.css index 3f717a005..a3fec6058 100644 --- a/self/css/gundong_bunner.css +++ b/self/css/gundong_bunner.css @@ -1 +1 @@ -@charset "UTF-8";:root{--bywind-white:#fff;--bywind-white-op:rgba(255, 255, 255, 0.2);--bywind-black:#000;--bywind-black-op:rgba(0, 0, 0, 0.2);--bywind-none:#00000000;--bywind-gray:#999999;--bywind-gray-op:#9999992b;--bywind-vip:#e5a80d;--bywind-main:var(--bywind-theme);--bywind-main-op:var(--bywind-theme-op);--bywind-main-op-deep:var(--bywind-theme-op-deep);--bywind-main-none:var(--bywind-theme-none);--bywind-shadow-theme:0 8px 12px -3px var(--bywind-theme-op);--bywind-shadow-blackdeep:0 2px 16px -3px rgba(0, 0, 0, .15);--bywind-shadow-main:0 8px 12px -3px var(--bywind-main-op);--bywind-shadow-blue:0 8px 12px -3px rgba(40, 109, 234, .20);--bywind-shadow-white:0 8px 12px -3px rgba(255, 255, 255, .20);--bywind-shadow-black:0 0 12px 4px rgba(0, 0, 0, .05);--bywind-shadow-yellow:0px 38px 77px -26px rgba(255, 201, 62, .12);--bywind-shadow-red:0 8px 12px -3px #ee7d7936;--bywind-shadow-green:0 8px 12px -3px #87ee7936;--bywind-logo-color:linear-gradient(215deg, #4584ff 0%, #cf0db9 100%);--bywind-snackbar-time:2s}::selection{background:var(--bywind-fontcolor);color:var(--bywind-background)}[data-theme=light]{--bywind-theme:#425AEF;--bywind-theme-op:rgba(66,89,239,0.137);--bywind-theme-op-deep:#4259efdd;--bywind-theme-none:#4259ef01;--bywind-blue:#425AEF;--bywind-red:#f04a63;--bywind-pink:#FF7C7C;--bywind-green:#57bd6a;--bywind-yellow:#c28b00;--bywind-yellow-op:#d99c001a;--bywind-orange:#e38100;--bywind-purple:#7a60d2;--bywind-fontcolor:#363636;--bywind-background:#f7f9fe;--bywind-reverse:#000;--bywind-maskbg:rgba(255, 255, 255, 0.6);--bywind-maskbgdeep:rgba(255, 255, 255, 0.85);--bywind-hovertext:var(--bywind-main);--bywind-ahoverbg:#F7F7FA;--bywind-lighttext:var(--bywind-main);--bywind-secondtext:rgba(60, 60, 67, 0.8);--bywind-scrollbar:rgba(60, 60, 67, 0.4);--bywind-card-btn-bg:#edf0f7;--bywind-post-blockquote-bg:#fafcff;--bywind-post-tabs-bg:#f2f5f8;--bywind-secondbg:#f1f3f8;--bywind-shadow-nav:0 5px 12px -5px rgba(102, 68, 68, 0.05);--bywind-card-bg:#fff;--bywind-card-bg-op:var(--bywind-black-op);--bywind-card-bg-none:rgba(255, 255, 255, 0);--bywind-shadow-lightblack:0 5px 12px -5px rgba(102, 68, 68, 0.00);--bywind-shadow-light2black:0 5px 12px -5px rgba(102, 68, 68, 0.00);--bywind-card-border:#e3e8f7;--bywind-shadow-border:0 8px 16px -4px #2c2d300c;--style-border:1px solid var(--bywind-card-border);--style-border-always:1px solid var(--bywind-card-border);--style-border-hover:1px solid var(--bywind-main);--style-border-hover-always:1px solid var(--bywind-main);--style-border-dashed:1px dashed var(--bywind-theme-op);--style-border-forever:2px solid var(--bywind-main)}[data-theme=dark]{--bywind-theme:#f2b94b;--bywind-theme-op:#f2b94b23;--bywind-theme-op-deep:#f2b94bdd;--bywind-theme-none:#f2b94b00;--bywind-blue:#0084FF;--bywind-red:#FF3842;--bywind-pink:#d44040;--bywind-green:#3e9f50;--bywind-purple:#7a60d2;--bywind-yellow:#ffc93e;--bywind-yellow-op:#ffc93e30;--bywind-orange:#ff953e;--bywind-fontcolor:#F7F7FA;--bywind-background:#18171d;--bywind-reverse:#fff;--bywind-maskbg:rgba(0, 0, 0, 0.6);--bywind-maskbgdeep:rgba(0, 0, 0, 0.85);--bywind-hovertext:#0A84FF;--bywind-ahoverbg:#fff;--bywind-lighttext:var(--bywind-theme);--bywind-secondtext:#a1a2b8;--bywind-scrollbar:rgba(200, 200, 223, 0.4);--bywind-card-btn-bg:#30343f;--bywind-post-blockquote-bg:#000;--bywind-post-tabs-bg:#121212;--bywind-secondbg:#30343f;--bywind-shadow-nav:0 5px 20px 0px rgba(28, 28, 28, 0.4);--bywind-card-bg:#1d1e22;--bywind-card-bg-op:var(--bywind-white-op);--bywind-card-bg-none:#1d1b2600;--bywind-shadow-lightblack:0 5px 12px -5px rgba(102, 68, 68, 0.0);--bywind-shadow-light2black:0 5px 12px -5px rgba(102, 68, 68, 0.0);--bywind-card-border:#3d3d3f;--bywind-shadow-border:0 8px 16px -4px #00000050;--style-border:1px solid var(--bywind-card-border);--style-border-always:1px solid var(--bywind-card-border);--style-border-hover:1px solid var(--bywind-theme);--style-border-hover-always:1px solid var(--bywind-theme);--style-border-dashed:1px dashed var(--bywind-theme-op);--style-border-forever:2px solid var(--bywind-lighttext)}#home_top{max-width:1470px;margin:auto;margin-top:.5rem;padding:0 1.5rem;width:100%}@media screen and (max-width:768px){#home_top{padding:0;margin-top:0}}.recent-top-post-group{border-radius:12px;overflow:hidden;overflow-x:auto;width:100%;margin-bottom:0}.recent-post-top{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;overflow-x:scroll}.recent-post-top::-webkit-scrollbar{display:none}.recent-post-top .recent-post-item{display:flex;width:200px;flex-direction:column;align-items:flex-start;margin-left:.5rem;background:var(--bywind-card-bg);border-radius:12px;overflow:hidden;min-width:200px;height:164px;max-height:164px;border:var(--style-border-always);transition:.3s;position:relative;box-shadow:0 8px 16px -4px #2c2d300c}@media screen and (max-width:768px){.recent-post-top .recent-post-item{border-radius:8px;box-shadow:none;clip-path:inset(0 0 0 0 round 8px)}.recent-post-top .recent-post-item:last-child{margin-right:1rem}}@media screen and (min-width:1300px){.recent-post-top .recent-post-item{margin-right:0;margin-bottom:.5rem}.recent-post-top .recent-post-item:active{transform:scale(.97)}.recent-post-top{overflow-x:visible}.recent-top-post-group{overflow:visible;overflow-x:visible}}span.recent-post-top-text{position:absolute;top:0;left:-40px;display:flex;z-index:1;background:var(--bywind-theme);color:var(--bywind-white);padding:2px 8px;font-size:.6rem;border-radius:12px 0 12px 0;transition:.3s;cursor:pointer}.recent-post-item:hover .recent-post-top-text{left:0}@media screen and (min-width:1300px){.recent-post-top .recent-post-item:hover{border:var(--style-border-hover);box-shadow:var(--bywind-shadow-main);transform:scale(1.03)}.recent-post-top .recent-post-item:active{transform:scale(.97)}}@media screen and (max-width:768px){.recent-top-post-group{border-radius:0;background:var(--bywind-background)}.recent-post-top-text{display:none!important}.recent-post-top .recent-post-item .post_cover img{border-radius:8px 8px 0 0!important}}.recent-post-top .recent-post-item .post_cover a{height:100px;overflow:hidden;display:flex}.recent-post-top .recent-post-item .post_cover img{object-fit:cover;width:100%;background:var(--bywind-secondbg);border-radius:12px 12px 0 0}.recent-post-top .recent-post-item:hover .post_cover img{transform:scale(1)}.recent-post-top .recent-post-item .recent-post-info{padding:.3rem .5rem .3rem .5rem!important;transition:.3s}.recent-post-top .recent-post-item:hover .recent-post-info a{color:var(--bywind-fontcolor)}@media screen and (max-width:1300px){.recent-post-top .recent-post-item:hover .recent-post-info a{color:var(--bywind-theme);transition:.3s}}.recent-post-top .recent-post-item .recent-post-info .article-title{-webkit-line-clamp:2;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;line-height:1.5;justify-content:center;align-items:flex-end;align-content:center;padding-top:.5rem;font-weight:700;font-size:.8rem!important;padding:0!important}.categoryItem{overflow:hidden;transform:scale(1);transition:all .8s cubic-bezier(.65,.15,.37,1.19);height:48%;border-radius:12px}a.categoryButton{height:100%;width:100%;background:var(--bywind-card-bg);border-radius:12px;display:inline-block;text-align:left;line-height:4em;font-weight:700;font-size:.9rem;color:var(--bywind-white);transition:all .8s cubic-bezier(.39,.575,.565,1);transform:scale(1);overflow:hidden;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei}a.categoryButton i{transform:scale(1) rotate(15deg)}@media screen and (min-width:1300px){a.categoryButton:active{transform:scale(.97)}}@media screen and (max-width:768px){a.categoryButton{border-radius:8px}.categoryItem{border-radius:0;height:47%;box-shadow:none!important}}a.categoryButton:after{top:50px;width:1rem;left:21px;height:2px;background:var(--bywind-white);content:"";border-radius:1px;position:absolute}.categoryButtonText{padding-left:21px}a.categoryButton i{font-size:5rem;opacity:.2;position:absolute;right:0;top:20%;transition:.3s;width:100px;text-align:center;filter:blur(2px)}@media screen and (max-width:768px){a.categoryButton i{display:none}.recent-post-top .categoryGroup{min-width:130px!important;margin-bottom:.5rem;margin-left:1rem;max-height:164px;overflow:hidden;position:relative}}.topGroup{display:flex}#bannerGroup{display:flex}div#banners{display:none}.topGroup .todayCard{display:none}@media screen and (min-width:1300px){.topGroup{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;height:calc(328px + .5rem);align-content:space-between;width:calc(600px + 1.5rem);position:relative}div#bannerGroup{width:calc(100% - 600px - 2rem);margin-right:.5rem;height:calc(328px + .5rem);display:flex;flex-direction:column;justify-content:space-between}[data-theme=light] div#banners{display:flex;width:100%;height:76%;background:#fff;margin-bottom:.5rem;border:1px solid #c9c9c9;border-radius:12px;overflow:hidden;position:relative;box-shadow:0 8px 16px -4px #2c2d300c;flex-direction:column;overflow:hidden;transition:.3s;clip-path:inset(0 0 0 0 round 12px)}[data-theme=dark] div#banners{display:flex;width:100%;height:76%;/*! background: var(--bywind-card-bg); */background:#020202;margin-bottom:.5rem;border:1px solid #c9c9c9;border-radius:12px;overflow:hidden;position:relative;box-shadow:0 8px 16px -4px #2c2d300c;flex-direction:column;overflow:hidden;transition:.3s;clip-path:inset(0 0 0 0 round 12px)}div#banners:hover{box-shadow:var(--bywind-shadow-main)}#banners.flink{margin-bottom:.5rem}#banners .banner-button-group{position:absolute;right:2rem;top:2rem;display:flex}#banners .banner-button{padding:8px 12px;background:var(--bywind-fontcolor);border-radius:12px;color:var(--bywind-card-bg);display:flex;align-items:center;z-index:1;transition:.3s;cursor:pointer;box-shadow:var(--bywind-shadow-black)}#banners .banner-button.secondary{background:var(--bywind-secondbg);border:var(--style-border-always);color:var(--bywind-lighttext);margin-right:1rem;box-shadow:0 8px 16px -4px #2c2d300c}#banners .banner-button:hover{background:var(--bywind-theme);color:var(--bywind-white)}#banners .banner-button i{margin-right:8px;font-size:1rem}.banners-title{top:2rem;left:1.5rem;position:absolute;display:flex;flex-direction:column}.banners-title-big{font-size:36px;line-height:1;font-weight:700;margin-bottom:8px}.banners-title-small{font-size:12px;line-height:1;color:var(--bywind-secondtext);margin-top:8px;margin-bottom:.5rem}#banner-hover{position:absolute;width:100%;height:100%;top:0;left:0;background:var(--bywind-theme);color:var(--bywind-white);padding-left:.5rem;display:flex;flex-direction:column;justify-content:center;opacity:0;transition:cubic-bezier(.71,.15,.16,1.15) .6s}.bannerText{font-size:4rem;line-height:4rem;font-weight:700}.banner-righticon{font-size:4rem;opacity:.6}[data-theme=light] #banners:hover #banner-hover{opacity:1;padding-left:2rem;background:#4259efc9;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;transition:.3s;background-size:200%;cursor:pointer}[data-theme=dark] #banners:hover #banner-hover{opacity:1;padding-left:2rem;background:#fc9827b7;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;transition:.3s;background-size:200%;cursor:pointer}#banners #banner-hover i{font-size:80px;opacity:.4}.topGroup .todayCard{position:absolute;width:calc(600px + 1rem);height:100%;z-index:1;top:0;left:0;background:var(--bywind-card-bg);border-radius:12px;margin-left:.5rem;overflow:hidden;transition:.3s;display:flex;cursor:pointer;pointer-events:all}.topGroup .todayCard::after{position:absolute;content:'';width:100%;height:100%;top:0;left:0}.topGroup .todayCard.hide{opacity:0;pointer-events:none}.topGroup .todayCard .todayCard-info{position:absolute;bottom:2rem;left:2rem;z-index:2;color:#fff;max-width:60%;transition:.3s}.topGroup .todayCard.hide .todayCard-info{bottom:1rem;opacity:0}.topGroup .todayCard .todayCard-info .todayCard-tips{opacity:.8;font-size:.6rem}.topGroup .todayCard .todayCard-info .todayCard-title{font-size:28px;font-weight:700;line-height:36px}.topGroup .banner-button-group{position:absolute;right:2rem;bottom:2rem;display:flex;transition:.3s}.topGroup .todayCard.hide .banner-button-group{bottom:1rem}.topGroup .banner-button{background:#fff3;border-radius:20px;color:#fff;display:flex;align-items:center;z-index:1;transition:.3s;cursor:pointer;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:blur(20px);transform:translateZ(0);height:40px;width:118px;justify-content:center}.topGroup .banner-button:hover{background:#425aef;color:#fff}.topGroup .banner-button i{margin-right:8px;font-size:22px}.topGroup .todayCard .todayCard-cover{position:absolute;min-width:100%;min-height:100%;top:0;left:0;background-size:cover;z-index:-1;transition:.3s}.topGroup .todayCard.hide .todayCard-cover{transform:scale(1.2)}}.tags-group-icon{width:120px;height:120px;border-radius:30px}.tags-group-all{display:flex;transform:rotate(-30deg)}.tags-group-all.nowrapMove{transform:rotate(0);padding-bottom:2rem}.tags-group-wrapper{margin-top:5rem;display:flex;flex-wrap:nowrap;animation:rowup 60s linear infinite}.nowrapMove .tags-group-wrapper{margin-top:7rem;animation:rowup 120s linear infinite}.tags-group-icon-pair .tags-group-icon:nth-child(even){margin-top:1rem;transform:translate(-60px)}.tags-group-icon-pair{margin-left:1rem}.tags-group-icon{display:flex;align-items:center;justify-content:center;color:#fff;font-size:66px;font-weight:700;box-shadow:var(--bywind-shadow-blackdeep)}.nowrapMove .tags-group-icon{border-radius:50%}.tags-group-icon img{width:60%}.nowrapMove .tags-group-icon img{min-width:100%;min-height:100%;border-radius:50%;object-fit:cover}.categoryItem:hover i{opacity:.8;transition:.8s;transition-delay:.15s;transform:scale(1.03) rotate(0);font-size:2.5rem;filter:blur(0)}@media screen and (min-width:1300px){.categoryItem:hover i{transform:scale(1.03) rotate(0)}}.cate-button-text{box-shadow:var(--bywind-shadow-black)}.recent-post-top .categoryGroup{display:flex;flex-direction:column;justify-content:space-between;min-width:200px}.categoryGroup .categoryItem:nth-child(3){display:none}@media screen and (min-width:1300px){.recent-post-top .categoryGroup{flex-direction:row;height:24%}.categoryItem{width:calc(100% / 3 - .33rem);height:100%;margin-right:.5rem}.categoryItem:last-child{margin-right:0}.categoryItem:hover{width:50%}.categoryGroup .categoryItem:nth-child(3){display:flex}}a.categoryButton.bikan{background:linear-gradient(to right,#358bff,#15c6ff);background-size:200%}a.categoryButton.remen{background:linear-gradient(to right,#f65,#ffbf37);background-size:200%}a.categoryButton.shiyong{background:linear-gradient(to right,#18e7ae,#1eebeb);background-size:200%}[data-theme=dark] a.categoryButton.bikan{background:linear-gradient(to right,#0653b8,#2fcbff);background-size:200%}[data-theme=dark] a.categoryButton.remen{background:linear-gradient(to right,#e22a16,#da980c);background-size:200%}[data-theme=dark] a.categoryButton.shiyong{background:linear-gradient(to right,#099e74,#0ea4a4);background-size:200%}a.categoryButton:hover{background-position:100% 0}@keyframes rowup{from{transform:translateX(0)}to{transform:translateX(-50%)}}#recent-post-top .recent-post-item .post_cover{width:100%}div#main_top{z-index:1;max-width:1450px;margin:20px auto 10px;width:100%;padding:0 15px}@media screen and (min-width:2000px){div#main_top{max-width:1400px}}#bber-talk{border-radius:12px;box-shadow:none;border:1px solid #c9c9c9;box-sizing:border-box;transition:all .3s ease-in-out;cursor:pointer;width:100%;min-height:50px;background:var(--card-bg);padding:.5rem 1rem;display:flex;align-items:center;overflow:hidden;font-weight:700}#bber-talk:hover{border-color:#f05011;box-shadow:none}#bber-talk a,[data-theme=light] #bber-talk{color:#3e3d3d}#bber-talk a,[data-theme=dark] #bber-talk{color:#c9c9c9}#bber-talk svg.icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden;font-size:20px}#bber-talk .item i{margin-left:5px}#bber-talk>i{font-size:1.1rem}#bber-talk .talk-list{flex:1;max-height:32px;font-size:16px;padding:0;margin:0;overflow:hidden}#bber-talk .talk-list :hover{color:#ff7550!important;transition:all .2s ease-in-out}#bber-talk .talk-list li{list-style:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-left:10px}@media screen and (min-width:768px){#bber-talk .talk-list{text-align:center;margin-right:20px}}@media screen and (max-width:768px){#bber-talk .talk-list{text-align:center;margin-right:20px}} \ No newline at end of file +@charset "UTF-8";:root{--bywind-white:#fff;--bywind-white-op:rgba(255, 255, 255, 0.2);--bywind-black:#000;--bywind-black-op:rgba(0, 0, 0, 0.2);--bywind-none:#00000000;--bywind-gray:#999999;--bywind-gray-op:#9999992b;--bywind-vip:#e5a80d;--bywind-main:var(--bywind-theme);--bywind-main-op:var(--bywind-theme-op);--bywind-main-op-deep:var(--bywind-theme-op-deep);--bywind-main-none:var(--bywind-theme-none);--bywind-shadow-theme:0 8px 12px -3px var(--bywind-theme-op);--bywind-shadow-blackdeep:0 2px 16px -3px rgba(0, 0, 0, .15);--bywind-shadow-main:0 8px 12px -3px var(--bywind-main-op);--bywind-shadow-blue:0 8px 12px -3px rgba(40, 109, 234, .20);--bywind-shadow-white:0 8px 12px -3px rgba(255, 255, 255, .20);--bywind-shadow-black:0 0 12px 4px rgba(0, 0, 0, .05);--bywind-shadow-yellow:0px 38px 77px -26px rgba(255, 201, 62, .12);--bywind-shadow-red:0 8px 12px -3px #ee7d7936;--bywind-shadow-green:0 8px 12px -3px #87ee7936;--bywind-logo-color:linear-gradient(215deg, #4584ff 0%, #cf0db9 100%);--bywind-snackbar-time:2s}::selection{background:var(--bywind-fontcolor);color:var(--bywind-background)}[data-theme=light]{--bywind-theme:#425AEF;--bywind-theme-op:rgba(66,89,239,0.137);--bywind-theme-op-deep:#4259efdd;--bywind-theme-none:#4259ef01;--bywind-blue:#425AEF;--bywind-red:#f04a63;--bywind-pink:#FF7C7C;--bywind-green:#57bd6a;--bywind-yellow:#c28b00;--bywind-yellow-op:#d99c001a;--bywind-orange:#e38100;--bywind-purple:#7a60d2;--bywind-fontcolor:#363636;--bywind-background:#f7f9fe;--bywind-reverse:#000;--bywind-maskbg:rgba(255, 255, 255, 0.6);--bywind-maskbgdeep:rgba(255, 255, 255, 0.85);--bywind-hovertext:var(--bywind-main);--bywind-ahoverbg:#F7F7FA;--bywind-lighttext:var(--bywind-main);--bywind-secondtext:rgba(60, 60, 67, 0.8);--bywind-scrollbar:rgba(60, 60, 67, 0.4);--bywind-card-btn-bg:#edf0f7;--bywind-post-blockquote-bg:#fafcff;--bywind-post-tabs-bg:#f2f5f8;--bywind-secondbg:#f1f3f8;--bywind-shadow-nav:0 5px 12px -5px rgba(102, 68, 68, 0.05);--bywind-card-bg:#fff;--bywind-card-bg-op:var(--bywind-black-op);--bywind-card-bg-none:rgba(255, 255, 255, 0);--bywind-shadow-lightblack:0 5px 12px -5px rgba(102, 68, 68, 0.00);--bywind-shadow-light2black:0 5px 12px -5px rgba(102, 68, 68, 0.00);--bywind-card-border:#e3e8f7;--bywind-shadow-border:0 8px 16px -4px #2c2d300c;--style-border:1px solid var(--bywind-card-border);--style-border-always:1px solid var(--bywind-card-border);--style-border-hover:1px solid var(--bywind-main);--style-border-hover-always:1px solid var(--bywind-main);--style-border-dashed:1px dashed var(--bywind-theme-op);--style-border-forever:2px solid var(--bywind-main)}[data-theme=dark]{--bywind-theme:#f2b94b;--bywind-theme-op:#f2b94b23;--bywind-theme-op-deep:#f2b94bdd;--bywind-theme-none:#f2b94b00;--bywind-blue:#0084FF;--bywind-red:#FF3842;--bywind-pink:#d44040;--bywind-green:#3e9f50;--bywind-purple:#7a60d2;--bywind-yellow:#ffc93e;--bywind-yellow-op:#ffc93e30;--bywind-orange:#ff953e;--bywind-fontcolor:#F7F7FA;--bywind-background:#18171d;--bywind-reverse:#fff;--bywind-maskbg:rgba(0, 0, 0, 0.6);--bywind-maskbgdeep:rgba(0, 0, 0, 0.85);--bywind-hovertext:#0A84FF;--bywind-ahoverbg:#fff;--bywind-lighttext:var(--bywind-theme);--bywind-secondtext:#a1a2b8;--bywind-scrollbar:rgba(200, 200, 223, 0.4);--bywind-card-btn-bg:#30343f;--bywind-post-blockquote-bg:#000;--bywind-post-tabs-bg:#121212;--bywind-secondbg:#30343f;--bywind-shadow-nav:0 5px 20px 0px rgba(28, 28, 28, 0.4);--bywind-card-bg:#1d1e22;--bywind-card-bg-op:var(--bywind-white-op);--bywind-card-bg-none:#1d1b2600;--bywind-shadow-lightblack:0 5px 12px -5px rgba(102, 68, 68, 0.0);--bywind-shadow-light2black:0 5px 12px -5px rgba(102, 68, 68, 0.0);--bywind-card-border:#3d3d3f;--bywind-shadow-border:0 8px 16px -4px #00000050;--style-border:1px solid var(--bywind-card-border);--style-border-always:1px solid var(--bywind-card-border);--style-border-hover:1px solid var(--bywind-theme);--style-border-hover-always:1px solid var(--bywind-theme);--style-border-dashed:1px dashed var(--bywind-theme-op);--style-border-forever:2px solid var(--bywind-lighttext)}#home_top{max-width:1470px;margin:auto;margin-top:.5rem;padding:0 1rem;width:100%}@media screen and (max-width:768px){#home_top{padding:0;margin-top:0}}.recent-top-post-group{border-radius:12px;overflow:hidden;overflow-x:auto;width:100%;margin-bottom:0}.recent-post-top{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;overflow-x:scroll}.recent-post-top::-webkit-scrollbar{display:none}.recent-post-top .recent-post-item{display:flex;width:200px;flex-direction:column;align-items:flex-start;margin-left:.5rem;background:var(--bywind-card-bg);border-radius:12px;overflow:hidden;min-width:200px;height:164px;max-height:164px;border:var(--style-border-always);transition:.3s;position:relative;box-shadow:0 8px 16px -4px #2c2d300c}@media screen and (max-width:768px){.recent-post-top .recent-post-item{border-radius:8px;box-shadow:none;clip-path:inset(0 0 0 0 round 8px)}.recent-post-top .recent-post-item:last-child{margin-right:1rem}}@media screen and (min-width:1300px){.recent-post-top .recent-post-item{margin-right:0;margin-bottom:.5rem}.recent-post-top .recent-post-item:active{transform:scale(.97)}.recent-post-top{overflow-x:visible}.recent-top-post-group{overflow:visible;overflow-x:visible}}span.recent-post-top-text{position:absolute;top:0;left:-40px;display:flex;z-index:1;background:var(--bywind-theme);color:var(--bywind-white);padding:2px 8px;font-size:.6rem;border-radius:12px 0 12px 0;transition:.3s;cursor:pointer}.recent-post-item:hover .recent-post-top-text{left:0}@media screen and (min-width:1300px){.recent-post-top .recent-post-item:hover{border:var(--style-border-hover);box-shadow:var(--bywind-shadow-main);transform:scale(1.03)}.recent-post-top .recent-post-item:active{transform:scale(.97)}}@media screen and (max-width:768px){.recent-top-post-group{border-radius:0;background:var(--bywind-background)}.recent-post-top-text{display:none!important}.recent-post-top .recent-post-item .post_cover img{border-radius:8px 8px 0 0!important}}.recent-post-top .recent-post-item .post_cover a{height:100px;overflow:hidden;display:flex}.recent-post-top .recent-post-item .post_cover img{object-fit:cover;width:100%;background:var(--bywind-secondbg);border-radius:12px 12px 0 0}.recent-post-top .recent-post-item:hover .post_cover img{transform:scale(1)}.recent-post-top .recent-post-item .recent-post-info{padding:.3rem .5rem .3rem .5rem!important;transition:.3s}.recent-post-top .recent-post-item:hover .recent-post-info a{color:var(--bywind-fontcolor)}@media screen and (max-width:1300px){.recent-post-top .recent-post-item:hover .recent-post-info a{color:var(--bywind-theme);transition:.3s}}.recent-post-top .recent-post-item .recent-post-info .article-title{-webkit-line-clamp:2;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;line-height:1.5;justify-content:center;align-items:flex-end;align-content:center;padding-top:.5rem;font-weight:700;font-size:.8rem!important;padding:0!important}.categoryItem{overflow:hidden;transform:scale(1);transition:all .8s cubic-bezier(.65,.15,.37,1.19);height:48%;border-radius:12px}a.categoryButton{height:100%;width:100%;background:var(--bywind-card-bg);border-radius:12px;display:inline-block;text-align:left;line-height:4em;font-weight:700;font-size:.9rem;color:var(--bywind-white);transition:all .8s cubic-bezier(.39,.575,.565,1);transform:scale(1);overflow:hidden;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei}a.categoryButton i{transform:scale(1) rotate(15deg)}@media screen and (min-width:1300px){a.categoryButton:active{transform:scale(.97)}}@media screen and (max-width:768px){a.categoryButton{border-radius:8px}.categoryItem{border-radius:0;height:47%;box-shadow:none!important}}a.categoryButton:after{top:50px;width:1rem;left:21px;height:2px;background:var(--bywind-white);content:"";border-radius:1px;position:absolute}.categoryButtonText{padding-left:21px}a.categoryButton i{font-size:5rem;opacity:.2;position:absolute;right:0;top:20%;transition:.3s;width:100px;text-align:center;filter:blur(2px)}@media screen and (max-width:768px){a.categoryButton i{display:none}.recent-post-top .categoryGroup{min-width:130px!important;margin-bottom:.5rem;margin-left:1rem;max-height:164px;overflow:hidden;position:relative}}.topGroup{display:flex}#bannerGroup{display:flex}div#banners{display:none}.topGroup .todayCard{display:none}@media screen and (min-width:1300px){.topGroup{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;height:calc(328px + .5rem);align-content:space-between;width:calc(600px + 1.5rem);position:relative}div#bannerGroup{width:calc(100% - 600px - 2rem);margin-right:.5rem;height:calc(328px + .5rem);display:flex;flex-direction:column;justify-content:space-between}[data-theme=light] div#banners{display:flex;width:100%;height:76%;background:#fff;margin-bottom:.5rem;border:1px solid #c9c9c9;border-radius:12px;overflow:hidden;position:relative;box-shadow:0 8px 16px -4px #2c2d300c;flex-direction:column;overflow:hidden;transition:.3s;clip-path:inset(0 0 0 0 round 12px)}[data-theme=dark] div#banners{display:flex;width:100%;height:76%;/*! background: var(--bywind-card-bg); */background:#020202;margin-bottom:.5rem;border:1px solid #c9c9c9;border-radius:12px;overflow:hidden;position:relative;box-shadow:0 8px 16px -4px #2c2d300c;flex-direction:column;overflow:hidden;transition:.3s;clip-path:inset(0 0 0 0 round 12px)}div#banners:hover{box-shadow:var(--bywind-shadow-main)}#banners.flink{margin-bottom:.5rem}#banners .banner-button-group{position:absolute;right:2rem;top:2rem;display:flex}#banners .banner-button{padding:8px 12px;background:var(--bywind-fontcolor);border-radius:12px;color:var(--bywind-card-bg);display:flex;align-items:center;z-index:1;transition:.3s;cursor:pointer;box-shadow:var(--bywind-shadow-black)}#banners .banner-button.secondary{background:var(--bywind-secondbg);border:var(--style-border-always);color:var(--bywind-lighttext);margin-right:1rem;box-shadow:0 8px 16px -4px #2c2d300c}#banners .banner-button:hover{background:var(--bywind-theme);color:var(--bywind-white)}#banners .banner-button i{margin-right:8px;font-size:1rem}.banners-title{top:2rem;left:1.5rem;position:absolute;display:flex;flex-direction:column}.banners-title-big{font-size:36px;line-height:1;font-weight:700;margin-bottom:8px}.banners-title-small{font-size:12px;line-height:1;color:var(--bywind-secondtext);margin-top:8px;margin-bottom:.5rem}#banner-hover{position:absolute;width:100%;height:100%;top:0;left:0;background:var(--bywind-theme);color:var(--bywind-white);padding-left:.5rem;display:flex;flex-direction:column;justify-content:center;opacity:0;transition:cubic-bezier(.71,.15,.16,1.15) .6s}.bannerText{font-size:4rem;line-height:4rem;font-weight:700}.banner-righticon{font-size:4rem;opacity:.6}[data-theme=light] #banners:hover #banner-hover{opacity:1;padding-left:2rem;background:#4259efc9;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;transition:.3s;background-size:200%;cursor:pointer}[data-theme=dark] #banners:hover #banner-hover{opacity:1;padding-left:2rem;background:#fc9827b7;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;transition:.3s;background-size:200%;cursor:pointer}#banners #banner-hover i{font-size:80px;opacity:.4}.topGroup .todayCard{position:absolute;width:calc(600px + 1rem);height:100%;z-index:1;top:0;left:0;background:var(--bywind-card-bg);border-radius:12px;margin-left:.5rem;overflow:hidden;transition:.3s;display:flex;cursor:pointer;pointer-events:all}.topGroup .todayCard::after{position:absolute;content:'';width:100%;height:100%;top:0;left:0}.topGroup .todayCard.hide{opacity:0;pointer-events:none}.topGroup .todayCard .todayCard-info{position:absolute;bottom:2rem;left:2rem;z-index:2;color:#fff;max-width:60%;transition:.3s}.topGroup .todayCard.hide .todayCard-info{bottom:1rem;opacity:0}.topGroup .todayCard .todayCard-info .todayCard-tips{opacity:.8;font-size:.6rem}.topGroup .todayCard .todayCard-info .todayCard-title{font-size:28px;font-weight:700;line-height:36px}.topGroup .banner-button-group{position:absolute;right:2rem;bottom:2rem;display:flex;transition:.3s}.topGroup .todayCard.hide .banner-button-group{bottom:1rem}.topGroup .banner-button{background:#fff3;border-radius:20px;color:#fff;display:flex;align-items:center;z-index:1;transition:.3s;cursor:pointer;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:blur(20px);transform:translateZ(0);height:40px;width:118px;justify-content:center}.topGroup .banner-button:hover{background:#425aef;color:#fff}.topGroup .banner-button i{margin-right:8px;font-size:22px}.topGroup .todayCard .todayCard-cover{position:absolute;min-width:100%;min-height:100%;top:0;left:0;background-size:cover;z-index:-1;transition:.3s}.topGroup .todayCard.hide .todayCard-cover{transform:scale(1.2)}}.tags-group-icon{width:120px;height:120px;border-radius:30px}.tags-group-all{display:flex;transform:rotate(-30deg)}.tags-group-all.nowrapMove{transform:rotate(0);padding-bottom:2rem}.tags-group-wrapper{margin-top:5rem;display:flex;flex-wrap:nowrap;animation:rowup 60s linear infinite}.nowrapMove .tags-group-wrapper{margin-top:7rem;animation:rowup 120s linear infinite}.tags-group-icon-pair .tags-group-icon:nth-child(even){margin-top:1rem;transform:translate(-60px)}.tags-group-icon-pair{margin-left:1rem}.tags-group-icon{display:flex;align-items:center;justify-content:center;color:#fff;font-size:66px;font-weight:700;box-shadow:var(--bywind-shadow-blackdeep)}.nowrapMove .tags-group-icon{border-radius:50%}.tags-group-icon img{width:60%}.nowrapMove .tags-group-icon img{min-width:100%;min-height:100%;border-radius:50%;object-fit:cover}.categoryItem:hover i{opacity:.8;transition:.8s;transition-delay:.15s;transform:scale(1.03) rotate(0);font-size:2.5rem;filter:blur(0)}@media screen and (min-width:1300px){.categoryItem:hover i{transform:scale(1.03) rotate(0)}}.cate-button-text{box-shadow:var(--bywind-shadow-black)}.recent-post-top .categoryGroup{display:flex;flex-direction:column;justify-content:space-between;min-width:200px}.categoryGroup .categoryItem:nth-child(3){display:none}@media screen and (min-width:1300px){.recent-post-top .categoryGroup{flex-direction:row;height:24%}.categoryItem{width:calc(100% / 3 - .33rem);height:100%;margin-right:.5rem}.categoryItem:last-child{margin-right:0}.categoryItem:hover{width:50%}.categoryGroup .categoryItem:nth-child(3){display:flex}}a.categoryButton.bikan{background:linear-gradient(to right,#358bff,#15c6ff);background-size:200%}a.categoryButton.remen{background:linear-gradient(to right,#f65,#ffbf37);background-size:200%}a.categoryButton.shiyong{background:linear-gradient(to right,#18e7ae,#1eebeb);background-size:200%}[data-theme=dark] a.categoryButton.bikan{background:linear-gradient(to right,#0653b8,#2fcbff);background-size:200%}[data-theme=dark] a.categoryButton.remen{background:linear-gradient(to right,#e22a16,#da980c);background-size:200%}[data-theme=dark] a.categoryButton.shiyong{background:linear-gradient(to right,#099e74,#0ea4a4);background-size:200%}a.categoryButton:hover{background-position:100% 0}@keyframes rowup{from{transform:translateX(0)}to{transform:translateX(-50%)}}#recent-post-top .recent-post-item .post_cover{width:100%}div#speak{z-index:1;max-width:1450px;margin:20px auto 10px;width:100%;padding:0}@media screen and (min-width:2000px){div#speak{max-width:1400px}}#bber-talk{border-radius:12px;box-shadow:none;border:1px solid #c9c9c9;box-sizing:border-box;transition:all .3s ease-in-out;cursor:pointer;width:100%;min-height:50px;background:var(--card-bg);padding:.5rem 1rem;display:flex;align-items:center;overflow:hidden;font-weight:700}#bber-talk:hover{border-color:#f05011;box-shadow:none}#bber-talk a,[data-theme=light] #bber-talk{color:#3e3d3d}#bber-talk a,[data-theme=dark] #bber-talk{color:#c9c9c9}#bber-talk svg.icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden;font-size:20px}#bber-talk .item i{margin-left:5px}#bber-talk>i{font-size:1.1rem}#bber-talk .talk-list{flex:1;max-height:32px;font-size:16px;padding:0;margin:0;overflow:hidden}#bber-talk .talk-list :hover{color:#ff7550!important;transition:all .2s ease-in-out}#bber-talk .talk-list li{list-style:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-left:10px}@media screen and (min-width:768px){#bber-talk .talk-list{text-align:center;margin-right:20px}}@media screen and (max-width:768px){#bber-talk .talk-list{text-align:center;margin-right:20px}} \ No newline at end of file diff --git a/self/css/indexs.css b/self/css/indexs.css index 0736f43cd..96f59b2b7 100644 --- a/self/css/indexs.css +++ b/self/css/indexs.css @@ -1 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{padding:0;margin:0;width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden;overflow-y:auto}@media screen and (max-width:765px){body,html{line-height:1.15;-webkit-text-size-adjust:100%;padding:0;margin:0;width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden;overflow-y:auto}}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}#article-container .flink .flink-item-desc,#article-container .flink .flink-item-name,#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span,#pagination .next_info,#pagination .prev_info,#sidebar #sidebar-menus .menus_items .site-page,.limit-one-line,.site-data>a .headline{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}#article-container figure.gallery-group .gallery-group-name,#article-container figure.gallery-group p,#aside-content .aside-list>.aside-list-item .content>.comment,#aside-content .aside-list>.aside-list-item .content>.name,#aside-content .aside-list>.aside-list-item .content>.title,#post-info .post-title,#recent-posts>.recent-post-item>.recent-post-info>.article-title,#recent-posts>.recent-post-item>.recent-post-info>.content,.article-sort-item-title,.limit-more-line,.relatedPosts>.relatedPosts-list .content .title{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}#article-container.post-content h1:before,#article-container.post-content h2:before,#article-container.post-content h3:before,#article-container.post-content h4:before,#article-container.post-content h5:before,#article-container.post-content h6:before,#post .post-outdate-notice:before,.fontawesomeIcon,.note:not(.no-icon)::before,span.categoryBar-list-count::before{display:inline-block;font-weight:600;font-family:'Font Awesome 6 Free';text-rendering:auto;-webkit-font-smoothing:antialiased}#aside-content .card-widget,#recent-posts>.recent-post-item,.cardHover,.layout>.recent-posts .pagination>:not(.space),.layout>div:first-child:not(.recent-posts){border-radius:12px;background:var(--card-bg);-webkit-box-shadow:var(--card-box-shadow);box-shadow:var(--card-box-shadow);-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#aside-content .card-widget:hover,#recent-posts>.recent-post-item:hover,.cardHover:hover,.layout>.recent-posts .pagination>:not(.space):hover,.layout>div:first-child:not(.recent-posts):hover{-webkit-box-shadow:var(--card-hover-box-shadow);box-shadow:var(--card-hover-box-shadow)}#aside-content .aside-list>.aside-list-item .thumbnail>img,#recent-posts>.recent-post-item .post_cover img.post_bg,.article-sort-item-img img,.imgHover{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .6s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .6s;-o-transition:filter 375ms ease-in .2s,-o-transform .6s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .6s;transition:filter 375ms ease-in .2s,transform .6s;object-fit:cover}#aside-content .aside-list>.aside-list-item .thumbnail>img:hover,#recent-posts>.recent-post-item .post_cover img.post_bg:hover,.article-sort-item-img img:hover,.imgHover:hover{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#pagination .next-post:hover img,#pagination .prev-post:hover img,.postImgHover:hover img,.relatedPosts>.relatedPosts-list>div:hover img{opacity:.8;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#pagination .next-post img,#pagination .prev-post img,.postImgHover img,.relatedPosts>.relatedPosts-list>div img{position:absolute;width:100%;height:100%;opacity:.4;-webkit-transition:all .6s,filter 375ms ease-in .2s;-moz-transition:all .6s,filter 375ms ease-in .2s;-o-transition:all .6s,filter 375ms ease-in .2s;-ms-transition:all .6s,filter 375ms ease-in .2s;transition:all .6s,filter 375ms ease-in .2s;object-fit:cover}.category-lists ul,.list-beauty{list-style:none}.category-lists ul li,.list-beauty li{position:relative;padding:.12em .4em .12em 1.4em}.category-lists ul li:hover:before,.list-beauty li:hover:before{border-color:var(--pseudo-hover)}.category-lists ul li:before,.list-beauty li:before{position:absolute;top:.67em;left:0;width:.43em;height:.43em;border:.215em solid #49b1f5;border-radius:.43em;background:0 0;content:'';cursor:pointer;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}#content-inner,#footer{-webkit-animation:bottom-top 1s;-moz-animation:bottom-top 1s;-o-animation:bottom-top 1s;-ms-animation:bottom-top 1s;animation:bottom-top 1s}#page-header{-webkit-animation:header-effect 1s;-moz-animation:header-effect 1s;-o-animation:header-effect 1s;-ms-animation:header-effect 1s;animation:header-effect 1s}#site-subtitle,#site-title{-webkit-animation:titleScale 1s;-moz-animation:titleScale 1s;-o-animation:titleScale 1s;-ms-animation:titleScale 1s;animation:titleScale 1s}#nav.show{-webkit-animation:headerNoOpacity 1s;-moz-animation:headerNoOpacity 1s;-o-animation:headerNoOpacity 1s;-ms-animation:headerNoOpacity 1s;animation:headerNoOpacity 1s}#web_bg,canvas:not(#ribbon-canvas){-webkit-animation:to_show 4s;-moz-animation:to_show 4s;-o-animation:to_show 4s;-ms-animation:to_show 4s;animation:to_show 4s}#ribbon-canvas{-webkit-animation:ribbon_to_show 4s;-moz-animation:ribbon_to_show 4s;-o-animation:ribbon_to_show 4s;-ms-animation:ribbon_to_show 4s;animation:ribbon_to_show 4s}#sidebar-menus.open>:nth-child(1){-webkit-animation:sidebarItem .2s;-moz-animation:sidebarItem .2s;-o-animation:sidebarItem .2s;-ms-animation:sidebarItem .2s;animation:sidebarItem .2s}#sidebar-menus.open>:nth-child(2){-webkit-animation:sidebarItem .4s;-moz-animation:sidebarItem .4s;-o-animation:sidebarItem .4s;-ms-animation:sidebarItem .4s;animation:sidebarItem .4s}#sidebar-menus.open>:nth-child(3){-webkit-animation:sidebarItem .6s;-moz-animation:sidebarItem .6s;-o-animation:sidebarItem .6s;-ms-animation:sidebarItem .6s;animation:sidebarItem .6s}#sidebar-menus.open>:nth-child(4){-webkit-animation:sidebarItem .8s;-moz-animation:sidebarItem .8s;-o-animation:sidebarItem .8s;-ms-animation:sidebarItem .8s;animation:sidebarItem .8s}.scroll-down-effects{-webkit-animation:scroll-down-effect 1.5s infinite;-moz-animation:scroll-down-effect 1.5s infinite;-o-animation:scroll-down-effect 1.5s infinite;-ms-animation:scroll-down-effect 1.5s infinite;animation:scroll-down-effect 1.5s infinite}.reward-main{-webkit-animation:donate_effcet .3s .1s ease both;-moz-animation:donate_effcet .3s .1s ease both;-o-animation:donate_effcet .3s .1s ease both;-ms-animation:donate_effcet .3s .1s ease both;animation:donate_effcet .3s .1s ease both}@-moz-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-webkit-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-o-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-moz-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-o-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-o-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-moz-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-webkit-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-o-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-moz-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-o-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-webkit-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-o-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-moz-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-webkit-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-o-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-moz-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-o-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}:root{--global-font-size:16px;--global-bg:#fff;--font-color:#4c4948;--hr-border:#a4d8fa;--hr-before-color:#80c8f8;--search-bg:#f6f8fa;--search-input-color:#4c4948;--search-result-title:#4c4948;--preloader-bg:#37474f;--preloader-color:#fff;--tab-border-color:#f0f0f0;--tab-botton-bg:#f0f0f0;--tab-botton-color:#1f2d3d;--tab-button-hover-bg:#dcdcdc;--tab-button-active-bg:#fff;--card-bg:#fff;--sidebar-bg:#f6f8fa;--btn-hover-color:#ff7242;--btn-color:#fff;--btn-bg:#49b1f5;--text-bg-hover:rgba(73,177,245,0.7);--light-grey:#eee;--dark-grey:#cacaca;--white:#fff;--text-highlight-color:#1f2d3d;--blockquote-color:#6a737d;--blockquote-bg:rgba(73,177,245,0.1);--reward-pop:#f5f5f5;--toc-link-color:#666261;--card-box-shadow:0 3px 8px 6px rgba(7,17,27,0.05);--card-hover-box-shadow:0 3px 8px 6px rgba(7,17,27,0.09);--pseudo-hover:#ff7242;--headline-presudo:#a0a0a0;--scrollbar-color:#49b1f5}body{position:relative;min-height:100%;background:var(--global-bg);color:var(--font-color);font-size:var(--global-font-size);font-family:-apple-system,IBM Plex Mono,monosapce,"微软雅黑",sans-serif;line-height:2;-webkit-tap-highlight-color:transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--scrollbar-color)}::-webkit-scrollbar-track{background-color:transparent}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color) transparent}input::placeholder{color:var(--font-color)}#web_bg{position:fixed;z-index:-999;width:100%;height:100%;background:#f7f9fe;background-attachment:local;background-position:center;background-size:cover;background-repeat:no-repeat}h1,h2,h3,h4,h5,h6{position:relative;margin:20px 0 14px;color:var(--text-highlight-color);font-weight:700}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:inherit!important}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.table-wrap{overflow-x:scroll;margin:0 0 20px}table{display:table;width:100%;border-spacing:0;border-collapse:collapse;empty-cells:show}table thead{background:rgba(153,169,191,.1)}table td,table th{padding:6px 12px;border:1px solid var(--light-grey);vertical-align:middle}::selection{background:#00c4b6;color:#f7f7f7}button{padding:0;outline:0;border:none;background:0 0;cursor:pointer;touch-action:manipulation}a{color:#99a9bf;text-decoration:none;word-wrap:break-word;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;-ms-transition:all .2s;transition:all .2s;overflow-wrap:break-word}a:hover{color:#49b1f5}.is-center{text-align:center}.copy-true{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.pull-left{float:left}.pull-right{float:right}img:not([src]),img[src='']{opacity:0}.img-alt{margin:-10px 0 10px;color:#858585}.img-alt:hover{text-decoration:none!important}blockquote{margin:0 0 20px;padding:12px 15px;border-left:3px solid #49b1f5;background-color:var(--blockquote-bg);color:var(--blockquote-color)}blockquote footer cite:before{padding:0 5px;content:'—'}blockquote>:last-child{margin-bottom:0!important}:root{--hl-color:#90a4ae;--hl-bg:#f6f8fa;--hltools-bg:#e6ebf1;--hltools-color:#90a4ae;--hlnumber-bg:#f6f8fa;--hlnumber-color:rgba(144,164,174,0.5);--hlscrollbar-bg:#dce4eb;--hlexpand-bg:linear-gradient(180deg, rgba(246,248,250,0.6), rgba(246,248,250,0.9))}figure.highlight table{scrollbar-color:var(--hlscrollbar-bg) transparent}figure.highlight table::-webkit-scrollbar-thumb{background:var(--hlscrollbar-bg)}figure.highlight pre .deletion{color:#bf42bf}figure.highlight pre .addition{color:#105ede}figure.highlight pre .meta{color:#7c4dff}figure.highlight pre .comment{color:rgba(149,165,166,.8)}figure.highlight pre .attribute,figure.highlight pre .css .class,figure.highlight pre .css .id,figure.highlight pre .css .pseudo,figure.highlight pre .html .doctype,figure.highlight pre .regexp,figure.highlight pre .ruby .constant,figure.highlight pre .tag .name,figure.highlight pre .variable,figure.highlight pre .xml .doctype,figure.highlight pre .xml .pi,figure.highlight pre .xml .tag .title{color:#e53935}figure.highlight pre .tag{color:#39adb5}figure.highlight pre .command,figure.highlight pre .constant,figure.highlight pre .literal,figure.highlight pre .number,figure.highlight pre .params,figure.highlight pre .preprocessor{color:#f76d47}figure.highlight pre .built_in{color:#ffb62c}figure.highlight pre .css .rules .attribute,figure.highlight pre .formula,figure.highlight pre .header,figure.highlight pre .inheritance,figure.highlight pre .number,figure.highlight pre .ruby .class .title,figure.highlight pre .ruby .symbol,figure.highlight pre .special,figure.highlight pre .string,figure.highlight pre .value,figure.highlight pre .xml .cdata{color:#91b859}figure.highlight pre .css .hexcolor,figure.highlight pre .keyword,figure.highlight pre .title{color:#39adb5}figure.highlight pre .coffeescript .title,figure.highlight pre .function,figure.highlight pre .javascript .title,figure.highlight pre .perl .sub,figure.highlight pre .python .decorator,figure.highlight pre .python .title,figure.highlight pre .ruby .function .title,figure.highlight pre .ruby .title .keyword{color:#6182b8}figure.highlight pre .javascript .function,figure.highlight pre .tag .attr{color:#7c4dff}#article-container figure.highlight .line.marked{background-color:rgba(128,203,196,.251)}#article-container figure.highlight table{display:block;overflow:auto;border:none}#article-container figure.highlight table td{padding:0;border:none}#article-container figure.highlight .gutter pre{padding-right:10px;padding-left:10px;background-color:var(--hlnumber-bg);color:var(--hlnumber-color);text-align:right}#article-container figure.highlight .code pre{padding-right:10px;padding-left:10px;width:100%}#article-container figure.highlight,#article-container pre{overflow:auto;margin:0 0 20px;padding:0;background:var(--hl-bg);color:var(--hl-color);line-height:1.6}#article-container code,#article-container pre{font-size:var(--global-font-size)}#article-container code{padding:2px 4px;background:rgba(27,31,35,.05);color:#f47466}#article-container pre{padding:10px 20px}#article-container pre code{padding:0;background:0 0;color:var(--hl-color);text-shadow:none}#article-container figure.highlight{position:relative}#article-container figure.highlight pre{margin:0;padding:8px 0;border:none}#article-container figure.highlight .caption,#article-container figure.highlight figcaption{padding:6px 0 2px 14px;font-size:var(--global-font-size);line-height:1em}#article-container figure.highlight .caption a,#article-container figure.highlight figcaption a{float:right;padding-right:10px;color:var(--hl-color)}#article-container figure.highlight .caption a:hover,#article-container figure.highlight figcaption a:hover{border-bottom-color:var(--hl-color)}#article-container .highlight-tools{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;min-height:24px;height:2.15em;background:var(--hltools-bg);color:var(--hltools-color);font-size:var(--global-font-size)}#article-container .highlight-tools.closed~*{display:none}#article-container .highlight-tools .expand{position:absolute;padding:.57em .7em;cursor:pointer;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#article-container .highlight-tools .expand+.code-lang{left:1.7em}#article-container .highlight-tools .expand.closed{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:rotate(-90deg)!important;-moz-transform:rotate(-90deg)!important;-o-transform:rotate(-90deg)!important;-ms-transform:rotate(-90deg)!important;transform:rotate(-90deg)!important}#article-container .highlight-tools .code-lang{position:absolute;left:14px;text-transform:uppercase;font-weight:700;font-size:1.15em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#article-container .highlight-tools .copy-notice{position:absolute;right:2.4em;opacity:0;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}#article-container .highlight-tools .copy-button{position:absolute;right:14px;cursor:pointer;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}#article-container .highlight-tools .copy-button:hover{color:#49b1f5}#article-container .gutter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#article-container .gist table{width:auto}#article-container .gist table td{border:none}#article-container figure.highlight{margin:0 0 24px;border-radius:7px;-webkit-box-shadow:0 5px 10px 0 rgba(144,164,174,.4);box-shadow:0 5px 10px 0 rgba(144,164,174,.4);-webkit-transform:translateZ(0)}#article-container figure.highlight .highlight-tools:after{position:absolute;left:14px;width:12px;height:12px;border-radius:50%;background:#fc625d;-webkit-box-shadow:20px 0 #fdbc40,40px 0 #35cd4b;box-shadow:20px 0 #fdbc40,40px 0 #35cd4b;content:' '}#article-container figure.highlight .highlight-tools .expand{right:0}#article-container figure.highlight .highlight-tools .expand.closed{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:rotate(90deg)!important;-moz-transform:rotate(90deg)!important;-o-transform:rotate(90deg)!important;-ms-transform:rotate(90deg)!important;transform:rotate(90deg)!important}#article-container figure.highlight .highlight-tools .expand~.copy-notice{right:3.45em}#article-container figure.highlight .highlight-tools .expand~.copy-button{right:2.1em}#article-container figure.highlight .highlight-tools .code-lang{left:75px}#article-container .code-expand-btn{position:absolute;bottom:0;z-index:10;width:100%;background:var(--hlexpand-bg);text-align:center;font-size:var(--global-font-size);cursor:pointer}#article-container .code-expand-btn i{padding:6px 0;color:var(--hlnumber-color);-webkit-animation:code-expand-key 1.2s infinite;-moz-animation:code-expand-key 1.2s infinite;-o-animation:code-expand-key 1.2s infinite;-ms-animation:code-expand-key 1.2s infinite;animation:code-expand-key 1.2s infinite}#article-container .code-expand-btn.expand-done>i{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}#article-container .code-expand-btn.expand-done+pre,#article-container .code-expand-btn.expand-done+table{margin-bottom:1.8em}#article-container .code-expand-btn:not(.expand-done)~pre,#article-container .code-expand-btn:not(.expand-done)~table{overflow:hidden;height:500px}@-moz-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@-webkit-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@-o-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}.article-sort{margin-left:10px;padding-left:20px;border-left:2px solid #aadafa}.article-sort-title{position:relative;margin-left:10px;padding-bottom:20px;padding-left:20px;font-size:1.72em}.article-sort-title:hover:before{border-color:var(--pseudo-hover)}.article-sort-title:before{position:absolute;top:calc(((100% - 36px)/ 2));left:-9px;z-index:1;width:10px;height:10px;border:5px solid #49b1f5;border-radius:10px;background:var(--card-bg);content:'';line-height:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-title:after{position:absolute;bottom:0;left:0;z-index:0;width:2px;height:1.5em;background:#aadafa;content:''}.article-sort-item{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;margin:0 0 20px 10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-item:hover:before{border-color:var(--pseudo-hover)}.article-sort-item:before{position:absolute;left:calc(-20px - 17px);width:6px;height:6px;border:3px solid #49b1f5;border-radius:6px;background:var(--card-bg);content:'';-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-item.no-article-cover{height:80px}.article-sort-item.no-article-cover .article-sort-item-info{padding:0}.article-sort-item.year{font-size:1.43em}.article-sort-item.year:hover:before{border-color:#49b1f5}.article-sort-item.year:before{border-color:var(--pseudo-hover)}.article-sort-item-time{color:#858585;font-size:95%}.article-sort-item-time time{padding-left:6px;cursor:default}.article-sort-item-title{color:var(--font-color);font-size:1.1em;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-line-clamp:2}.article-sort-item-title:hover{color:#49b1f5;-webkit-transform:translateX(10px);-moz-transform:translateX(10px);-o-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.article-sort-item-img{overflow:hidden;width:80px;height:80px}.article-sort-item-info{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:0 16px}.category-lists .category-title{font-size:2.57em}@media screen and (max-width:768px){.category-lists .category-title{font-size:2em}}.category-lists .category-list{margin-bottom:0}.category-lists .category-list a{color:var(--font-color)}.category-lists .category-list a:hover{color:#49b1f5}.category-lists .category-list .category-list-count{margin-left:8px;color:#858585}.category-lists .category-list .category-list-count:before{content:'('}.category-lists .category-list .category-list-count:after{content:')'}.category-lists ul{padding:0 0 0 20px}.category-lists ul ul{padding-left:4px}.category-lists ul li{position:relative;margin:6px 0;padding:.12em .4em .12em 1.4em}#body-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh}@media screen and (max-width:900px){.layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.layout .card-widget:not(#card-toc){display:none}}@media screen and (max-width:768px){.layout{padding:20px 5px}}@media screen and (min-width:2000px){.layout{max-width:1500px}}.layout>div:first-child:not(.recent-posts){-webkit-align-self:flex-start;align-self:flex-start;-ms-flex-item-align:start;padding:50px 40px}@media screen and (max-width:768px){.layout>div:first-child:not(.recent-posts){padding:36px 14px}}.layout>div:first-child{width:74%;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}@media screen and (max-width:900px){.layout>div:first-child{width:100%!important}.layout>div:first-child .card-widget:not(#card-toc){display:none}}@media screen and (min-width:900px){.layout>div:first-child{-webkit-box-ordinal-group:2;-moz-box-ordinal-group:2;-o-box-ordinal-group:2;-ms-flex-order:2;-webkit-order:2;order:2}}@media screen and (min-width:2000px){.layout.hide-aside{max-width:1300px}}.layout.hide-aside>div{width:100%!important}.apple #page-header.full_page{background-attachment:scroll!important}.apple .avatar-img,.apple .flink-item-icon,.apple .recent-post-item{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}#article-container .flink{margin-bottom:20px}#article-container .flink .flink-list{overflow:auto;padding:10px 10px 0;text-align:center}#article-container .flink .flink-list>.flink-list-item{position:relative;float:left;overflow:hidden;margin:15px 7px;width:calc(100% / 3 - 15px);height:90px;border-radius:12px;line-height:17px;-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear;-webkit-transform:translateZ(0)}@media screen and (max-width:1024px){#article-container .flink .flink-list>.flink-list-item{width:calc(50% - 15px)!important}}@media screen and (max-width:600px){#article-container .flink .flink-list>.flink-list-item{width:calc(100% - 15px)!important}}#article-container .flink .flink-list>.flink-list-item:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;content:'';-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear;-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}#article-container .flink .flink-list>.flink-list-item:active:before,#article-container .flink .flink-list>.flink-list-item:focus:before,#article-container .flink .flink-list>.flink-list-item:hover:before{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear}#article-container .flink .flink-list>.flink-list-item a{color:var(--font-color);text-decoration:none}#article-container .flink .flink-list>.flink-list-item a .flink-item-icon{float:left;overflow:hidden;margin:15px 10px;width:60px;height:60px;border-radius:35px;-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;-ms-transition:width .3s ease-out;transition:width .3s ease-out}#article-container .flink .flink-list>.flink-list-item a .flink-item-icon img{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .3s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .3s;-o-transition:filter 375ms ease-in .2s,-o-transform .3s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .3s;transition:filter 375ms ease-in .2s,transform .3s;object-fit:cover}#article-container .flink .flink-list>.flink-list-item a .img-alt{display:none}#article-container .flink .flink-item-name{padding:16px 10px 0 0;height:40px;font-weight:700;font-size:1.43em}#article-container .flink .flink-item-desc{padding:16px 10px 16px 0;height:50px;font-size:.93em}#article-container .flink .flink-name{margin-bottom:5px;font-weight:700;font-size:1.5em}#recent-posts>.recent-post-item:not(:first-child){margin-top:20px}#recent-posts>.recent-post-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;height:18em}@media screen and (max-width:768px){#recent-posts>.recent-post-item{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:auto}}#recent-posts>.recent-post-item:hover img.post_bg{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#recent-posts>.recent-post-item.ads-wrap{display:block!important;height:auto!important}#recent-posts>.recent-post-item .post_cover{overflow:hidden;width:44%;height:100%}@media screen and (max-width:768px){#recent-posts>.recent-post-item .post_cover{width:100%;height:230px}}#recent-posts>.recent-post-item .post_cover.right{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-o-box-ordinal-group:1;-ms-flex-order:1;-webkit-order:1;order:1}@media screen and (max-width:768px){#recent-posts>.recent-post-item .post_cover.right{-webkit-box-ordinal-group:0;-moz-box-ordinal-group:0;-o-box-ordinal-group:0;-ms-flex-order:0;-webkit-order:0;order:0}}#recent-posts>.recent-post-item>.recent-post-info{padding:0 40px;width:57%}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info{padding:20px 20px 30px;width:100%}}#recent-posts>.recent-post-item>.recent-post-info.no-cover{width:100%}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info.no-cover{padding:30px 20px}}#recent-posts>.recent-post-item>.recent-post-info>.article-title{color:var(--text-highlight-color);font-size:1.72em;line-height:1.4;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-line-clamp:2}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info>.article-title{font-size:1.43em}}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap{margin:6px 0;color:#858585;font-size:90%}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap>.post-meta-date{cursor:default}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .sticky{color:#ff7242}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap i{margin:0 4px 0 0}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-label{padding-right:4px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-separator{margin:0 6px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-link{margin:0 4px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap a{color:#858585}#recent-posts>.recent-post-item>.recent-post-info>.content{-webkit-line-clamp:2}.tag-cloud-list a{display:inline-block;padding:0 8px;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.tag-cloud-list a:hover{color:#49b1f5!important;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}@media screen and (max-width:768px){.tag-cloud-list a{zoom:.85}}.tag-cloud-title{font-size:2.57em}@media screen and (max-width:768px){.tag-cloud-title{font-size:2em}}h1.page-title+.tag-cloud-list{text-align:left}#aside-content{width:26%}@media screen and (min-width:900px){#aside-content{padding-right:15px}}@media screen and (max-width:900px){#aside-content{width:100%}#aside-content .card-widget:not(#card-toc){display:none}}#aside-content>.card-widget:first-child{margin-top:0}@media screen and (max-width:900px){#aside-content>.card-widget:first-child{margin-top:20px}#aside-content>.card-widget:first-child .card-widget:not(#card-toc){display:none}}#aside-content .card-widget{position:relative;overflow:hidden;margin-top:20px;padding:20px 24px}@media screen and (max-width:768px){#aside-content .card-widget:not(#card-toc){display:none}}#aside-content .card-info .author-info__name{font-weight:500;font-size:1.57em}#aside-content .card-info .author-info__description{margin-top:-.42em}#aside-content .card-info .card-info-data{margin:4px 0 4px}#aside-content .card-info .card-info-social-icons{margin:6px 0 -6px}#aside-content .card-info .card-info-social-icons .social-icon{margin:0 10px;color:var(--font-color);font-size:1.4em}#aside-content .card-info .card-info-social-icons i{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#aside-content .card-info .card-info-social-icons i:hover{-webkit-transform:rotate(540deg);-moz-transform:rotate(540deg);-o-transform:rotate(540deg);-ms-transform:rotate(540deg);transform:rotate(540deg)}#aside-content .card-info #card-info-btn{display:block;margin-top:14px;background-color:#f05012;color:var(--btn-color);text-align:center;line-height:2.4}#aside-content .card-info #card-info-btn:hover{background-color:var(--btn-hover-color)}#aside-content .card-info #card-info-btn span{padding-left:10px}#aside-content .item-headline{padding-bottom:6px;font-size:1.2em}#aside-content .item-headline span{margin-left:6px}@media screen and (min-width:900px){#aside-content .sticky_layout{position:sticky;position:-webkit-sticky;top:20px;-webkit-transition:top .3s;-moz-transition:top .3s;-o-transition:top .3s;-ms-transition:top .3s;transition:top .3s}}#aside-content .card-tag-cloud a{display:inline-block;padding:0 4px}#aside-content .aside-list>span{display:block;margin-bottom:10px;text-align:center}#aside-content .aside-list>.aside-list-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:6px 0}#aside-content .aside-list>.aside-list-item:first-child{padding-top:0}#aside-content .aside-list>.aside-list-item:not(:last-child){border-bottom:1px dashed #f5f5f5}#aside-content .aside-list>.aside-list-item:last-child{padding-bottom:0}#aside-content .aside-list>.aside-list-item .thumbnail{overflow:hidden;width:4.2em;height:4.2em}#aside-content .aside-list>.aside-list-item .content{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-left:10px;word-break:break-all}#aside-content .aside-list>.aside-list-item .content>.name{-webkit-line-clamp:1}#aside-content .aside-list>.aside-list-item .content>.name,#aside-content .aside-list>.aside-list-item .content>time{display:block;color:#858585;font-size:85%}#aside-content .aside-list>.aside-list-item .content>.comment,#aside-content .aside-list>.aside-list-item .content>.title{color:var(--font-color);font-size:95%;line-height:1.5;-webkit-line-clamp:2}#aside-content .aside-list>.aside-list-item .content>.comment:hover,#aside-content .aside-list>.aside-list-item .content>.title:hover{color:#49b1f5}#aside-content .aside-list>.aside-list-item.no-cover{min-height:4.4em}#aside-content .card-archives ul.card-archive-list,#aside-content .card-categories ul.card-category-list{margin:0;padding:0;list-style:none}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a,#aside-content .card-categories ul.card-category-list>.card-category-list-item a{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:3px 10px;color:var(--font-color);-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:first-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:first-child{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}#aside-content .card-categories .card-category-list.child{padding:0 0 0 16px}#aside-content .card-categories .card-category-list>.parent>a .card-category-list-name{width:70%!important}#aside-content .card-categories .card-category-list>.parent>a .card-category-list-count{width:calc(100% - 70% - 20px);text-align:right}#aside-content .card-categories .card-category-list>.parent i{float:right;margin-right:-.5em;padding:.5em;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s;-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#aside-content .card-categories .card-category-list>.parent i.expand{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}#aside-content .card-webinfo .webinfo .webinfo-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:2px 10px 0}#aside-content .card-webinfo .webinfo .webinfo-item div:first-child{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-right:20px}@media screen and (min-width:901px){#aside-content #card-toc{right:0!important}}@media screen and (max-width:900px){#aside-content #card-toc{position:fixed;right:-100%;bottom:30px;z-index:100;max-width:380px;max-height:calc(100% - 60px);width:calc(100% - 80px);opacity:0;-webkit-transition:initial;-moz-transition:initial;-o-transition:initial;-ms-transition:initial;transition:initial;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-o-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}#aside-content #card-toc .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-percentage{float:right;margin-top:-9px;color:#a9a9a9;font-style:italic;font-size:140%}#aside-content #card-toc .toc-content{overflow-y:scroll;overflow-y:overlay;margin:0 -24px;max-height:calc(100vh - 120px)}@media screen and (max-width:900px){#aside-content #card-toc .toc-content{max-height:calc(100vh - 140px)}#aside-content #card-toc .toc-content .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-content>*>.toc-item>.toc-child{margin-left:10px;padding-left:10px;border-left:1px solid var(--dark-grey)}#aside-content #card-toc .toc-content:not(.is-expand) .toc-child{display:none}@media screen and (max-width:900px){#aside-content #card-toc .toc-content:not(.is-expand) .toc-child{display:block!important}#aside-content #card-toc .toc-content:not(.is-expand) .toc-child .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-content:not(.is-expand) .toc-item.active .toc-child{display:block}#aside-content #card-toc .toc-content li,#aside-content #card-toc .toc-content ol{list-style:none}#aside-content #card-toc .toc-content>ol{padding:0!important}#aside-content #card-toc .toc-content ol{margin:0;padding-left:18px}#aside-content #card-toc .toc-content .toc-link{display:block;margin:4px 0;padding:1px 6px;color:var(--toc-link-color);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#aside-content #card-toc .toc-content .toc-link:hover{color:#f05011}#aside-content #card-toc .toc-content .toc-link.active{background:#f05011;color:#fff}#aside-content :only-child>.card-widget{margin-top:0}#aside-content .card-more-btn{float:right;color:inherit}#aside-content .card-more-btn:hover{-webkit-animation:more-btn-move 1s infinite;-moz-animation:more-btn-move 1s infinite;-o-animation:more-btn-move 1s infinite;-ms-animation:more-btn-move 1s infinite;animation:more-btn-move 1s infinite}#aside-content .card-announcement .item-headline i{color:red}.avatar-img{overflow:hidden;margin:0 auto;width:110px;height:110px;border-radius:70px}.avatar-img img{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .3s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .3s;-o-transition:filter 375ms ease-in .2s,-o-transform .3s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .3s;transition:filter 375ms ease-in .2s,transform .3s;object-fit:cover}.avatar-img img:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.site-data{display:table;width:100%;table-layout:fixed}.site-data>a{display:table-cell}.site-data>a div{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.site-data>a:hover div{color:#f05012!important}.site-data>a .headline{color:var(--font-color)}.site-data>a .length-num{margin-top:-.32em;color:var(--text-highlight-color);font-size:1.4em}@media screen and (min-width:900px){html.hide-aside .layout{-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}html.hide-aside .layout>.aside-content{display:none}html.hide-aside .layout>div:first-child{width:80%}}.page .sticky_layout{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}@-moz-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-webkit-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-o-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-moz-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-o-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-moz-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-webkit-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-o-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}#calendar a{text-decoration:none}.cal-head{position:relative;height:20px;padding:8px 6px 2px 6px;margin-bottom:15px}.cal-next,.cal-prev{position:absolute;top:9px;width:9px;height:10px;padding:3px 4px;border:1px solid transparent;color:#333;outline:0}.cal-prev{left:8px}.cal-prev:before{border-right:9px solid #333}.cal-next{right:8px}.cal-next:before{border-left:9px solid #333}.cal-next:before,.cal-prev:before{content:'';display:block;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent}.cal-title{width:120px;margin:0 auto;color:#333;font:bold 14px/18px Arial;text-align:center}.cal-title a{border:1px solid transparent;color:#f76b61}.cal,.cal td,.cal th{border:none}.cal{border-collapse:collapse;border-spacing:0;table-layout:fixed;width:100%;margin:0}.cal th{background:rgba(0,0,0,0);color:#000;font-weight:900!important}.cal tbody a{background-color:#f76b61;color:#fff;display:block;font-weight:700;border:1px solid #fff}.cal tbody .cal-today{background-color:#ffdfdd;color:#f76b61}.cal .cal-gray{color:#ddd}.cal td,.cal th{font-weight:400;line-height:2.5625;padding:0;text-align:center}.cal .cal-foot:focus,.cal .cal-foot:hover,.cal-next:hover,.cal-prev:hover,.cal-title a:hover{cursor:pointer;background-color:transparent;cursor:pointer;color:#42d3d8}.cal tbody a:focus,.cal tbody a:hover{background-color:#ffdfdd;color:#fff;cursor:pointer}#categoryBar{width:100%!important}ul.categoryBar-list{margin:5px 5px 0 5px!important;padding:0!important}li.categoryBar-list-item{font-weight:700;display:inline-block;height:180px!important;margin:5px .5% 0 .5%!important;background-image:-webkit-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-moz-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-o-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-ms-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);border-radius:10px;padding:25px 0 25px 25px!important;-webkit-box-shadow:rgba(50,50,50,.3) 50px 50px 50px 50px inset;box-shadow:rgba(50,50,50,.3) 50px 50px 50px 50px inset;overflow:hidden;background-size:100%!important;background-position:center!important}li.categoryBar-list-item:hover{background-size:110%!important;-webkit-box-shadow:inset 500px 50px 50px 50px rgba(50,50,50,.6);box-shadow:inset 500px 50px 50px 50px rgba(50,50,50,.6)}li.categoryBar-list-item:hover span.categoryBar-list-count::after{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;-webkit-transform:translate(-100%,0);-moz-transform:translate(-100%,0);-o-transform:translate(-100%,0);-ms-transform:translate(-100%,0);transform:translate(-100%,0)}a.categoryBar-list-link{color:#fff!important;font-size:20px!important}a.categoryBar-list-link::before{content:'|'!important;color:#fff!important;font-size:20px!important}a.categoryBar-list-link:after{content:'';position:relative;width:0;bottom:0;display:block;height:3px;border-radius:3px;background-color:#fff}a.categoryBar-list-link:hover:after{width:90%;left:1%;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}span.categoryBar-list-count{display:block!important;color:#fff!important;font-size:20px!important}span.categoryBar-list-count::before{content:'\f02d'!important;padding-right:15px!important}span.categoryBar-list-count::after{padding:5px;display:block!important;color:#fff!important;font-size:20px!important;position:relative;right:-100%}li.categoryBar-list-item:nth-child(1){background:rgba(255,20,200,.6)}li.categoryBar-list-item:nth-child(2){background:rgba(255,40,40,.6)}li.categoryBar-list-item:nth-child(3){background:rgba(112,235,12,.6)}li.categoryBar-list-item:nth-child(4){background:rgba(235,146,12,.6)}li.categoryBar-list-item:nth-child(5){background:rgba(12,135,235,.6)}li.categoryBar-list-item:nth-child(6){background:#425aef88}li.categoryBar-list-item:nth-child(7){background:#ed709b88}li.categoryBar-list-item:nth-child(8){background:#79b8ff}li.categoryBar-list-item:nth-child(9){background:#6d5493}li.categoryBar-list-item:nth-child(10){background:#ed9090}li.categoryBar-list-item:nth-child(11){background:#d9b44f}li.categoryBar-list-item:nth-child(12){background:#1ea4df}li.categoryBar-list-item:nth-child(1)>span::after{content:'3D打印分享'!important}li.categoryBar-list-item:nth-child(2)>span::after{content:'Hexo魔改教程'!important}li.categoryBar-list-item:nth-child(3)>span::after{content:'自己的杂谈和事情'!important}li.categoryBar-list-item:nth-child(4)>span::after{content:'白嫖党万岁!'!important}li.categoryBar-list-item:nth-child(5)>span::after{content:'一些教程'!important}li.categoryBar-list-item:nth-child(6)>span::after{content:'解决一些bug与避坑'!important}li.categoryBar-list-item{width:32.3%!important}@media screen and (max-width:650px){li.categoryBar-list-item{width:48%!important;height:150px!important;margin:5px 1% 0 1%!important}}.categoryBar-list{max-height:380px;overflow:auto}.categoryBar-list::-webkit-scrollbar{width:0!important}@media screen and (max-width:650px){.categoryBar-list{max-height:320px}}#post-comment .comment-head{margin-bottom:20px}#post-comment .comment-head .comment-headline{display:inline-block;vertical-align:middle;font-weight:700;font-size:1.43em}#post-comment .comment-head #comment-switch{display:inline-block;float:right;margin:2px auto 0;padding:4px 16px;width:max-content;border-radius:12px;background:#f6f8fa}#post-comment .comment-head #comment-switch .first-comment{color:#49b1f5}#post-comment .comment-head #comment-switch .second-comment{color:#ff7242}#post-comment .comment-head #comment-switch .switch-btn{position:relative;display:inline-block;margin:-4px 8px 0;width:42px;height:22px;border-radius:34px;background-color:#49b1f5;vertical-align:middle;cursor:pointer;-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;-ms-transition:.4s;transition:.4s}#post-comment .comment-head #comment-switch .switch-btn:before{position:absolute;bottom:4px;left:4px;width:14px;height:14px;border-radius:50%;background-color:#fff;content:'';-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;-ms-transition:.4s;transition:.4s}#post-comment .comment-head #comment-switch .switch-btn.move{background-color:#ff7242}#post-comment .comment-head #comment-switch .switch-btn.move:before{-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-o-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}#post-comment .comment-wrap>div:nth-child(2){display:none}.fixed-card-widget:not(#card-toc){visibility:visible!important;display:block!important;position:fixed!important;bottom:0;left:0;top:0;right:0;margin:auto;margin-bottom:auto!important;margin-top:auto!important;max-width:300px;max-height:500px;width:auto;height:fit-content;z-index:999;-webkit-animation:rotateX .5s ease;-moz-animation:rotateX .5s ease;-o-animation:rotateX .5s ease;-ms-animation:rotateX .5s ease;animation:rotateX .5s ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;-o-animation-fill-mode:forwards;-ms-animation-fill-mode:forwards;animation-fill-mode:forwards}.card-shuo.fixed-card-widget #artitalk_main{max-height:460px;overflow:scroll}.card-shuo.fixed-card-widget #artitalk_main::-webkit-scrollbar{display:none}.card-shuo.fixed-card-widget #operare_artitalk .c2{z-index:1000}.card-tags.fixed-card-widget .card-tag-cloud{max-height:460px;overflow:scroll}.card-tags.fixed-card-widget .card-tag-cloud::-webkit-scrollbar{display:none}@media screen and (max-width:900px){div#fixedcard-dashboard{display:-webkit-box!important;display:-moz-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:box!important;display:flex!important}}div#fixedcard-dashboard{position:fixed;top:150px;width:fit-content;height:40px;opacity:.3;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;display:none;background:rgba(255,255,255,.9);padding:5px 10px;border-top-right-radius:20px;border-bottom-right-radius:20px;z-index:1000}div#fixedcard-dashboard:hover{opacity:1;-ms-filter:none;filter:none}div#fixedcard-dashboard:hover button.fixedcard-activebtn{width:30px;opacity:1;-ms-filter:none;filter:none;pointer-events:all}button.fixedcard-activebtn{width:0;height:30px;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;opacity:0;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:distribute;-moz-box-pack:distribute;-o-box-pack:distribute;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;pointer-events:none;color:#757273}.fixedcard-user-avatar{display:inline-block}.fixedcard-user-avatar img.fixedcard-user-avatar-img{width:30px;height:30px;border-radius:50%}[data-theme=dark] div#fixedcard-dashboard{background:rgba(55,55,55,.9)}[data-theme=dark] button.fixedcard-activebtn{color:#bcbdbd}div#quit-box{position:fixed;display:block;left:0;top:0;width:100vh;height:100vh;z-index:99;background:rgba(25,25,25,.3)}[data-theme=dark] div#quit-box{background:rgba(147,146,128,.3)}@-moz-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@-webkit-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@-o-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}.gitcalendar{border:1px solid #ddd;border-radius:3px;min-height:120px;text-align:center;margin:0 auto;border-width:0;width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;display:-webkit-flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.gitcalendar img.spinner{width:70px;margin-top:50px;min-height:70px}.gitcalendar-graph text.month,.gitcalendar-graph text.wday{font-size:10px;fill:#aaa}.contrib-legend{text-align:right;padding:0 14px 10px 0;display:inline-block;float:right}.contrib-legend .legend{display:inline-block;list-style:none;margin:0 5px;position:relative;bottom:-1px;padding:0}.contrib-legend .legend li{display:inline-block;width:10px;height:10px}.text-small{font-size:12px;color:#767676}.gitcalendar-graph{padding:15px 0 0;text-align:center}.contrib-column{text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;font-size:11px}.contrib-column-first{border-left:0}.table-column{padding:10px;display:table-cell;width:33%;vertical-align:top}.contrib-number{font-weight:300;line-height:1.3em;font-size:24px;display:block}.monospace{text-align:center;color:#000}.monospace a{color:#1d75ab;text-decoration:none}.contrib-footer{font-size:11px;padding:0 10px 12px;text-align:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:26px}.left.text-muted{float:left;margin-left:9px;color:#767676}.left.text-muted a{color:#4078c0;text-decoration:none}.left.text-muted a:hover,.monospace a:hover{text-decoration:underline}h2.f4.text-normal.mb-3{display:none}.float-left.text-gray{float:left}#user-activity-overview{display:none}.day-tooltip{white-space:nowrap;position:absolute;z-index:99999;padding:10px;font-size:12px;color:#959da5;text-align:center;background:rgba(0,0,0,.85);border-radius:3px;display:none;pointer-events:none}.day-tooltip strong{color:#dfe2e5}.day-tooltip.is-visible{display:block}.day-tooltip:after{position:absolute;bottom:-10px;left:50%;width:5px;height:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 -5px;content:" ";border:5px solid transparent;border-top-color:rgba(0,0,0,.85)}.position-relative{width:100%;padding-left:20px;padding-right:20px}@media screen and (max-width:650px){.contrib-column{display:none}}.angle-wrapper{z-index:9999;display:inline;display:none;width:200px;height:40px;position:relative;padding:5px 0;background:rgba(0,0,0,.8);border-radius:8px;text-align:center;color:#fff}.angle-wrapper span{padding-bottom:1em}.angle-wrapper:before{content:'';width:0;height:0;border:10px solid transparent;border-top-color:rgba(0,0,0,.8);position:absolute;left:47.5%;top:100%}.angle-box{position:fixed;padding:10px}#page-header{position:relative;width:100%;background-color:#49b1f5;background-position:center center;background-size:cover;background-repeat:no-repeat;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#page-header:not(.not-top-img):before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,.3);content:''}#page-header.full_page{height:300px;background-attachment:fixed}#page-header.full_page #site-info{position:absolute;top:43%;padding:0 10px;width:100%}#page-header #scroll-down .scroll-down-effects,#page-header #site-subtitle,#page-header #site-title{text-align:center;text-shadow:2px 2px 4px rgba(0,0,0,.15);line-height:1.5}#page-header #site-title{margin:0;color:var(--white);font-size:1.85em}@media screen and (min-width:768px){#page-header #site-title{font-size:2.85em}}#page-header #site-subtitle{color:var(--light-grey);font-size:1.15em}@media screen and (min-width:768px){#page-header #site-subtitle{font-size:1.72em}}#page-header #site_social_icons{display:none;margin:0 auto;width:300px;text-align:center}@media screen and (max-width:768px){#page-header #site_social_icons{display:block}}#page-header #site_social_icons .social-icon{margin:0 10px;color:var(--light-grey);text-shadow:2px 2px 4px rgba(0,0,0,.15);font-size:1.43em}#page-header #scroll-down{position:absolute;bottom:0;width:100%;cursor:pointer}#page-header #scroll-down .scroll-down-effects{position:relative;width:100%;color:var(--light-grey);font-size:30px}#page-header.not-home-page{height:400px}@media screen and (max-width:768px){#page-header.not-home-page{height:280px}}#page-header #page-site-info{position:absolute;top:200px;padding:0 10px;width:100%}@media screen and (max-width:768px){#page-header #page-site-info{top:140px}}#page-header.post-bg{height:400px}@media screen and (max-width:768px){#page-header.post-bg{height:360px}}#page-header.post-bg:before{background-color:rgba(0,0,0,.5)}#page-header #post-info{position:absolute;bottom:100px;padding:0 8%;width:100%;text-align:center}@media screen and (max-width:900px){#page-header #post-info{bottom:30px;text-align:left}#page-header #post-info .card-widget:not(#card-toc){display:none}}@media screen and (max-width:768px){#page-header #post-info{bottom:100px;padding:0 22px}}#page-header.not-top-img{margin-bottom:10px;height:60px;background:0}#page-header.not-top-img #nav{background:rgba(255,255,255,.6);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6)}#page-header.not-top-img #nav a{color:var(--font-color);text-shadow:none}#page-header.nav-fixed #nav{position:fixed;top:-60px;z-index:91;background:rgba(255,255,255,.6);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6);-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .2s ease-in-out,opacity .2s ease-in-out;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in-out;-ms-transition:-ms-transform .2s ease-in-out,opacity .2s ease-in-out;transition:transform .2s ease-in-out,opacity .2s ease-in-out}#page-header.nav-fixed #nav #site-name,#page-header.nav-fixed #nav #toggle-menu,#page-header.nav-fixed #nav a{color:var(--font-color);text-shadow:none}#page-header.nav-fixed #nav #site-name:hover,#page-header.nav-fixed #nav #toggle-menu:hover,#page-header.nav-fixed #nav a:hover{color:#49b1f5}#page-header.nav-visible #nav{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-o-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}#page-header.nav-visible+.layout>.aside-content>.sticky_layout{top:70px;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s}#page h1.page-title{margin:8px 0 20px}#post>#post-info{margin-bottom:30px}#post>#post-info .post-title{padding-bottom:4px;border-bottom:1px solid var(--light-grey);color:var(--text-highlight-color)}#post>#post-info .post-title .post-edit-link{float:right}#post>#post-info #post-meta,#post>#post-info #post-meta a{color:#78818a}#post-info .post-title{margin-bottom:8px;color:var(--white);font-weight:400;font-size:2.5em;line-height:1.5;-webkit-line-clamp:3}@media screen and (max-width:768px){#post-info .post-title{font-size:2.1em}}#post-info .post-title .post-edit-link{padding-left:10px}#post-info #post-meta{color:var(--light-grey);font-size:95%}@media screen and (min-width:768px){#post-info #post-meta>.meta-secondline>span:first-child{display:none}}@media screen and (max-width:768px){#post-info #post-meta{font-size:90%}#post-info #post-meta>.meta-firstline,#post-info #post-meta>.meta-secondline{display:inline}}#post-info #post-meta .post-meta-separator{margin:0 5px}#post-info #post-meta .post-meta-icon{margin-right:4px}#post-info #post-meta .post-meta-label{margin-right:4px}#post-info #post-meta a{color:var(--light-grey);-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}#post-info #post-meta a:hover{color:#49b1f5;text-decoration:underline}#nav{position:absolute;top:0;z-index:90;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:0 36px;width:100%;height:60px;font-size:1.3em;opacity:0;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media screen and (max-width:768px){#nav{padding:0 16px}}#nav.show{opacity:1;-ms-filter:none;filter:none}#nav #blog_name{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}#nav #toggle-menu{display:none;padding:2px 0 0 6px;vertical-align:top}#nav #toggle-menu:hover{color:var(--white)}#nav a{color:var(--light-grey)}#nav a:hover{color:var(--white)}#nav #site-name{text-shadow:2px 2px 4px rgba(0,0,0,.15);font-weight:700;cursor:pointer}#nav .menus_items{display:inline}#nav .menus_items .menus_item{position:relative;display:inline-block;padding:0 0 0 14px}#nav .menus_items .menus_item:hover .menus_item_child{display:block}#nav .menus_items .menus_item:hover>a>i:last-child{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}#nav .menus_items .menus_item>a>i:last-child{padding:4px;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#nav .menus_items .menus_item .menus_item_child{position:absolute;right:0;display:none;margin-top:8px;padding:0;width:max-content;background-color:var(--sidebar-bg);-webkit-box-shadow:0 5px 20px -4px rgba(0,0,0,.5);box-shadow:0 5px 20px -4px rgba(0,0,0,.5);-webkit-animation:sub_menus .3s .1s ease both;-moz-animation:sub_menus .3s .1s ease both;-o-animation:sub_menus .3s .1s ease both;-ms-animation:sub_menus .3s .1s ease both;animation:sub_menus .3s .1s ease both;border-radius:5px}#nav .menus_items .menus_item .menus_item_child:before{position:absolute;top:-8px;left:0;width:100%;height:20px;content:''}#nav.hide-menu #toggle-menu{display:inline-block!important}#nav.hide-menu #toggle-menu .site-page{font-size:inherit}#nav.hide-menu .menus_items{display:none}#nav.hide-menu #search-button span{display:none}#nav #search-button{display:inline;padding:0 0 0 14px}#nav .site-page{position:relative;padding-bottom:6px;text-shadow:1px 1px 2px rgba(0,0,0,.3);font-size:.78em;cursor:pointer}#loading-box .loading-left-bg,#loading-box .loading-right-bg,.loading-bg{--lyx-white-acrylic2:rgba(255,255,255,0.667);position:fixed;z-index:1000;width:50%;height:100%;background-color:var(--lyx-white-acrylic2)}#loading-box .loading-right-bg{right:0}#loading-box .spinner-box{position:fixed;z-index:1001;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;width:100%;height:100vh}#loading-box .spinner-box .configure-border-1{position:absolute;padding:3px;width:115px;height:115px;background:#ffab91;-webkit-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-moz-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-o-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-ms-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;animation:configure-clockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .configure-border-2{left:-115px;padding:3px;width:115px;height:115px;background:#3ff9dc;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-moz-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-o-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-ms-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;animation:configure-xclockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .loading-word{position:absolute;color:var(--preloader-color);font-size:16px}#loading-box .spinner-box .configure-core{width:100%;height:100%;background-color:var(--lyx-white-acrylic)}#loading-box.loaded .loading-left-bg{-webkit-transition:all .7s;-moz-transition:all .7s;-o-transition:all .7s;-ms-transition:all .7s;transition:all .7s;opacity:0}#loading-box.loaded .loading-right-bg{-webkit-transition:all .7s;-moz-transition:all .7s;-o-transition:all .7s;-ms-transition:all .7s;transition:all .7s;opacity:0}#loading-box.loaded .spinner-box{display:none}#loading-box.loaded #loadcat{display:none}#loading-box.loadend .loading-left-bg{display:none}#loading-box.loadend .loading-right-bg{display:none}@-moz-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@-webkit-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@-o-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}#pagination .pagination{margin-top:20px;text-align:center}#pagination .pagination-info{position:absolute;top:50%;padding:20px 40px;width:100%;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}#pagination .next_info,#pagination .prev_info{color:var(--white);font-weight:500}#pagination .next-post .pagination-info{text-align:right}#pagination .pull-full{width:100%!important}#pagination .next-post .label,#pagination .prev-post .label{color:var(--light-grey);text-transform:uppercase;font-size:90%}#pagination .next-post,#pagination .prev-post{width:50%}@media screen and (max-width:768px){#pagination .next-post,#pagination .prev-post{width:100%}}#pagination .next-post a,#pagination .prev-post a{position:relative;display:block;overflow:hidden;height:150px}#pagination.pagination-post{overflow:hidden;margin-top:40px;width:100%;background:#000}.layout>.recent-posts .pagination>*{display:inline-block;margin:0 6px;width:2.5em;height:2.5em;line-height:2.5em}.layout>.recent-posts .pagination>:not(.space):hover{background:var(--btn-hover-color);color:var(--btn-color)}.layout>div:not(.recent-posts) .pagination .page-number{display:inline-block;margin:0 4px;min-width:24px;height:24px;text-align:center;line-height:24px;cursor:pointer}#article-container{word-wrap:break-word;overflow-wrap:break-word}#article-container a{color:#49b1f5}#article-container a:hover{text-decoration:underline}#article-container img{display:block;margin:0 auto 20px;max-width:100%;-webkit-transition:filter 375ms ease-in .2s;-moz-transition:filter 375ms ease-in .2s;-o-transition:filter 375ms ease-in .2s;-ms-transition:filter 375ms ease-in .2s;transition:filter 375ms ease-in .2s}#article-container p{margin:0 0 16px}#article-container iframe{margin:0 0 20px}#article-container kbd{margin:0 3px;padding:3px 5px;border:1px solid #b4b4b4;border-radius:3px;background-color:#f8f8f8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25),0 2px 1px 0 rgba(255,255,255,.6) inset;box-shadow:0 1px 3px rgba(0,0,0,.25),0 2px 1px 0 rgba(255,255,255,.6) inset;color:#34495e;white-space:nowrap;font-weight:600;font-size:.9em;font-family:Monaco,'Ubuntu Mono',monospace;line-height:1em}#article-container ol ol,#article-container ol ul,#article-container ul ol,#article-container ul ul{padding-left:20px}#article-container ol li,#article-container ul li{margin:4px 0}#article-container ol p,#article-container ul p{margin:0 0 8px}#article-container.post-content h1,#article-container.post-content h2,#article-container.post-content h3,#article-container.post-content h4,#article-container.post-content h5,#article-container.post-content h6{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;-ms-transition:all .2s ease-out;transition:all .2s ease-out}#article-container.post-content h1:before,#article-container.post-content h2:before,#article-container.post-content h3:before,#article-container.post-content h4:before,#article-container.post-content h5:before,#article-container.post-content h6:before{position:absolute;top:calc(50% - 7px);color:#f47466;content:'\f863';line-height:1;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;-ms-transition:all .2s ease-out;transition:all .2s ease-out}#article-container.post-content h1:hover:before,#article-container.post-content h2:hover:before,#article-container.post-content h3:hover:before,#article-container.post-content h4:hover:before,#article-container.post-content h5:hover:before,#article-container.post-content h6:hover:before{color:#49b1f5}#article-container.post-content h1{padding-left:32px}#article-container.post-content h1:before{margin-left:-26px;font-size:20px}#article-container.post-content h1:hover{padding-left:38px}#article-container.post-content h2{padding-left:30px}#article-container.post-content h2:before{margin-left:-24px;font-size:18px}#article-container.post-content h2:hover{padding-left:36px}#article-container.post-content h3{padding-left:28px}#article-container.post-content h3:before{margin-left:-22px;font-size:16px}#article-container.post-content h3:hover{padding-left:34px}#article-container.post-content h4{padding-left:26px}#article-container.post-content h4:before{margin-left:-20px;font-size:14px}#article-container.post-content h4:hover{padding-left:32px}#article-container.post-content h5{padding-left:24px}#article-container.post-content h5:before{margin-left:-18px;font-size:12px}#article-container.post-content h5:hover{padding-left:30px}#article-container.post-content h6{padding-left:24px}#article-container.post-content h6:before{margin-left:-18px;font-size:12px}#article-container.post-content h6:hover{padding-left:30px}#article-container.post-content ol p,#article-container.post-content ul p{margin:0 0 8px}#article-container.post-content li::marker{color:#49b1f5;font-weight:600;font-size:1.05em}#article-container.post-content li:hover::marker{color:var(--pseudo-hover)}#article-container.post-content ul>li{list-style-type:circle}#article-container>:last-child{margin-bottom:0!important}#post .tag_share:after{display:block;clear:both;content:''}#post .tag_share .post-meta__tag-list{display:inline-block}#post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid #49b1f5;border-radius:12px;color:#49b1f5;font-size:.85em;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#post .tag_share .post-meta__tags:hover{background:#49b1f5;color:var(--white)}#post .tag_share .post_share{display:inline-block;float:right;margin:8px 0 0;width:fit-content}#post .tag_share .post_share .social-share{font-size:.85em}#post .tag_share .post_share .social-share .social-share-icon{margin:0 4px;width:1.85em;height:1.85em;font-size:1.2em;line-height:1.85em}#post .post-copyright{position:relative;margin:2rem 0 .5rem;padding:.5rem .8rem;border:1px solid #c9c9c9;-webkit-transition:box-shadow .3s ease-in-out;-moz-transition:box-shadow .3s ease-in-out;-o-transition:box-shadow .3s ease-in-out;-ms-transition:box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out;overflow:hidden;border-radius:12px!important;background-color:#fff}#post .post-copyright:before{background:var(--heo-post-blockquote-bg);position:absolute;right:-26px;top:-120px;content:'\f25e';font-size:200px;font-family:'Font Awesome 5 Brands';opacity:.2}#post .post-copyright:hover{-webkit-box-shadow:0 0 8px 0 rgba(232,237,250,.6),0 2px 4px 0 rgba(232,237,250,.5);box-shadow:0 0 8px 0 rgba(232,237,250,.6),0 2px 4px 0 rgba(232,237,250,.5)}#post .post-copyright .post-copyright-meta{color:#f05011;font-weight:700}#post .post-copyright .post-copyright-info{padding-left:.3rem}#post .post-copyright .post-copyright-info a{text-decoration:none;word-break:break-word}#post .post-copyright .post-copyright-info a:hover{text-decoration:none}#post .post-copyright-cc-info{color:#49b1f5}#post .post-outdate-notice{position:relative;margin:0 0 1rem;padding:.5em 1.2em;border-radius:15px;background-color:#ffe6e6;color:#f66;padding:.5em 1em .5em 2.6em;border-left:5px solid #ff8080}#post .post-outdate-notice:before{position:absolute;top:50%;left:.9em;color:#ff8080;content:'\f071';-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}#post .ads-wrap{margin:40px 0}.relatedPosts{margin-top:40px}.relatedPosts>.headline{margin-bottom:5px;font-weight:700;font-size:1.43em}.relatedPosts>.relatedPosts-list>div{position:relative;display:inline-block;overflow:hidden;margin:3px;width:calc(33.333% - 6px);height:200px;background:#000;vertical-align:bottom}@media screen and (max-width:768px){.relatedPosts>.relatedPosts-list>div{margin:2px;width:calc(50% - 4px);height:150px}}@media screen and (max-width:600px){.relatedPosts>.relatedPosts-list>div{width:calc(100% - 4px)}}.relatedPosts>.relatedPosts-list .content{position:absolute;top:50%;padding:0 20px;width:100%;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.relatedPosts>.relatedPosts-list .content .date{color:var(--light-grey);font-size:90%}.relatedPosts>.relatedPosts-list .content .title{color:var(--white);-webkit-line-clamp:2}.post-reward{position:relative;margin-top:80px;width:100%;text-align:center;pointer-events:none}.post-reward>*{pointer-events:auto}.post-reward .reward-button{display:inline-block;padding:4px 24px;background:var(--btn-bg);color:var(--btn-color);cursor:pointer}.post-reward:hover .reward-button{background:var(--btn-hover-color)}.post-reward:hover>.reward-main{display:block}.post-reward .reward-main{position:absolute;bottom:40px;left:0;z-index:100;display:none;padding:0 0 15px;width:100%}.post-reward .reward-main .reward-all{display:inline-block;margin:0;padding:20px 10px;border-radius:4px;background:var(--reward-pop)}.post-reward .reward-main .reward-all:before{position:absolute;bottom:-10px;left:0;width:100%;height:20px;content:''}.post-reward .reward-main .reward-all:after{position:absolute;right:0;bottom:2px;left:0;margin:0 auto;width:0;height:0;border-top:13px solid var(--reward-pop);border-right:13px solid transparent;border-left:13px solid transparent;content:''}.post-reward .reward-main .reward-all .reward-item{display:inline-block;padding:0 8px;list-style-type:none;vertical-align:top}.post-reward .reward-main .reward-all .reward-item img{width:130px;height:130px}.post-reward .reward-main .reward-all .reward-item .post-qr-code-desc{width:130px;color:#858585}#rightside #rightside-config-hide{height:0;opacity:0;-webkit-transition:-webkit-transform .4s;-moz-transition:-moz-transform .4s;-o-transition:-o-transform .4s;-ms-transition:-ms-transform .4s;transition:transform .4s;-webkit-transform:translate(45px,0);-moz-transform:translate(45px,0);-o-transform:translate(45px,0);-ms-transform:translate(45px,0);transform:translate(45px,0)}#rightside #rightside-config-hide.show{height:auto;opacity:1;-ms-filter:none;filter:none;-webkit-transform:translate(0,0);-moz-transform:translate(0,0);-o-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#rightside #rightside-config-hide.status{height:auto;opacity:1;-ms-filter:none;filter:none}#rightside>div>a:hover,#rightside>div>button:hover{background-color:var(--btn-hover-color)}#rightside #mobile-toc-button{display:none}@media screen and (max-width:900px){#rightside #mobile-toc-button{display:block}#rightside #mobile-toc-button .card-widget:not(#card-toc){display:none}}@media screen and (max-width:900px){#rightside #hide-aside-btn{display:none}#rightside .card-widget:not(#card-toc){display:none}}#sidebar #menu-mask{position:fixed;z-index:102;display:none;width:100%;height:100%;background:rgba(0,0,0,.8)}#sidebar #sidebar-menus.open{-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#sidebar #sidebar-menus>.avatar-img{margin:20px auto}#sidebar #sidebar-menus .sidebar-site-data{padding:0 10px}#sidebar #sidebar-menus hr{margin:20px auto}#sidebar #sidebar-menus .menus_items{padding:0 10px 40px}#sidebar #sidebar-menus .menus_items .site-page{position:relative;display:block;padding:6px 30px 6px 22px;color:var(--font-color);font-size:1.15em}#sidebar #sidebar-menus .menus_items .site-page:hover{background:#f05011}#sidebar #sidebar-menus .menus_items .site-page i:first-child{width:15%;text-align:left}#sidebar #sidebar-menus .menus_items .site-page.group>i:last-child{position:absolute;top:.78em;right:18px;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#sidebar #sidebar-menus .menus_items .site-page.group.hide>i:last-child{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}#sidebar #sidebar-menus .menus_items .site-page.group.hide+.menus_item_child{display:none}#sidebar #sidebar-menus .menus_items .menus_item_child{margin:0;list-style:none}#vcomment{font-size:1.1em}#vcomment .vbtn{border:none;background:var(--btn-bg);color:var(--btn-color)}#vcomment .vbtn:hover{background:var(--btn-hover-color)}#vcomment .vimg{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#vcomment .vimg:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}#vcomment .vcards .vcard .vcontent.expand:after,#vcomment .vcards .vcard .vcontent.expand:before{z-index:22}#waline-wrap{--waline-font-size:1.1em;--waline-theme-color:#49b1f5;--waline-active-color:#ff7242}#waline-wrap .vuser{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#waline-wrap .vuser:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.fireworks{position:fixed;top:0;left:0;z-index:-1;pointer-events:none}.medium-zoom-image--opened{z-index:99999!important;margin:0!important}.medium-zoom-overlay{z-index:99999!important}.mermaid-wrap{margin:0 0 20px;text-align:center}.mermaid-wrap>svg{height:100%}.fb-comments iframe,.utterances{width:100%!important}#gitalk-container .gt-meta{margin:0 0 .8em;padding:6px 0 16px}.katex-wrap{overflow:auto}.katex-wrap::-webkit-scrollbar{display:none}.has-jax,mjx-container[display]{overflow-x:auto;overflow-y:hidden;line-height:normal!important}.aplayer{color:#4c4948}#article-container .aplayer{margin:0 0 20px}#article-container .aplayer ol,#article-container .aplayer ul{margin:0;padding:0}#article-container .aplayer ol li,#article-container .aplayer ul li{margin:0;padding:0 15px}#article-container .aplayer ol li:before,#article-container .aplayer ul li:before{content:none}.snackbar-css{border-radius:5px!important}#article-container .btn-center{margin:0 0 20px;text-align:center}#article-container .btn-beautify{display:inline-block;margin:0 4px 6px;padding:0 15px;background-color:var(--btn-beautify-color,#777);color:#fff;line-height:2}#article-container .btn-beautify.blue{--btn-beautify-color:#428bca}#article-container .btn-beautify.pink{--btn-beautify-color:#ff69b4}#article-container .btn-beautify.red{--btn-beautify-color:#f00}#article-container .btn-beautify.purple{--btn-beautify-color:#6f42c1}#article-container .btn-beautify.orange{--btn-beautify-color:#ff8c00}#article-container .btn-beautify.green{--btn-beautify-color:#5cb85c}#article-container .btn-beautify:hover{background-color:var(--btn-hover-color)}#article-container .btn-beautify i+span{margin-left:6px}#article-container .btn-beautify:not(.block)+.btn-beautify:not(.block){margin:0 4px 20px}#article-container .btn-beautify.block{display:block;margin:0 0 20px;width:fit-content;width:-moz-fit-content}#article-container .btn-beautify.block.center{margin:0 auto 20px}#article-container .btn-beautify.block.right{margin:0 0 20px auto}#article-container .btn-beautify.larger{padding:6px 15px}#article-container .btn-beautify:hover{text-decoration:none}#article-container .btn-beautify.outline{border:1px solid transparent;border-color:var(--btn-beautify-color,#777);background-color:transparent;color:var(--btn-beautify-color,#777)}#article-container .btn-beautify.outline:hover{background-color:var(--btn-beautify-color,#777)}#article-container .btn-beautify.outline:hover{color:#fff!important}#article-container figure.gallery-group{position:relative;float:left;overflow:hidden;margin:6px 4px;width:calc(50% - 8px);height:250px;border-radius:12px;background:#000;-webkit-transform:translate3d(0,0,0)}@media screen and (max-width:600px){#article-container figure.gallery-group{width:calc(100% - 8px)}}#article-container figure.gallery-group:hover img{opacity:.4;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group:hover .gallery-group-name::after{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group:hover p{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group img{position:relative;margin:0;max-width:none;width:calc(100% + 20px);height:250px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;opacity:.8;-webkit-transition:all .3s,filter 375ms ease-in .2s;-moz-transition:all .3s,filter 375ms ease-in .2s;-o-transition:all .3s,filter 375ms ease-in .2s;-ms-transition:all .3s,filter 375ms ease-in .2s;transition:all .3s,filter 375ms ease-in .2s;-webkit-transform:translate3d(-10px,0,0);-moz-transform:translate3d(-10px,0,0);-o-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0);object-fit:cover}#article-container figure.gallery-group figcaption{position:absolute;top:0;left:0;padding:30px;width:100%;height:100%;color:#fff;text-transform:uppercase;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}#article-container figure.gallery-group figcaption>a{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;opacity:0}#article-container figure.gallery-group p{margin:0;padding:8px 0 0;letter-spacing:1px;font-size:1.1em;line-height:1.5;opacity:0;-webkit-transition:opacity .35s,-webkit-transform .35s;-moz-transition:opacity .35s,-moz-transform .35s;-o-transition:opacity .35s,-o-transform .35s;-ms-transition:opacity .35s,-ms-transform .35s;transition:opacity .35s,transform .35s;-webkit-transform:translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-line-clamp:4}#article-container figure.gallery-group .gallery-group-name{position:relative;margin:0;padding:8px 0;font-weight:700;font-size:1.65em;line-height:1.5;-webkit-line-clamp:2}#article-container figure.gallery-group .gallery-group-name:after{position:absolute;bottom:0;left:0;width:100%;height:2px;background:#fff;content:'';-webkit-transition:-webkit-transform .35s;-moz-transition:-moz-transform .35s;-o-transition:-o-transform .35s;-ms-transition:-ms-transform .35s;transition:transform .35s;-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#article-container .gallery-group-main{overflow:auto;padding:0 0 16px}#article-container .fj-gallery{margin:0 0 16px;opacity:0}#article-container .fj-gallery .img-alt{display:none}blockquote.pullquote{position:relative;max-width:45%;font-size:110%}blockquote.pullquote.left{float:left;margin:1em .5em 0 0}blockquote.pullquote.right{float:right;margin:1em 0 0 .5em}.video-container{position:relative;overflow:hidden;margin-bottom:16px;padding-top:56.25%;height:0}.video-container iframe{position:absolute;top:0;left:0;margin-top:0;width:100%;height:100%}.hide-block>.hide-button,.hide-inline>.hide-button{display:inline-block;padding:5px 18px;background:#49b1f5;color:var(--white)}.hide-block>.hide-button:hover,.hide-inline>.hide-button:hover{background-color:var(--btn-hover-color)}.hide-block>.hide-button.open,.hide-inline>.hide-button.open{display:none}.hide-block>.hide-button.open+div,.hide-inline>.hide-button.open+div{display:block}.hide-block>.hide-button.open+span,.hide-inline>.hide-button.open+span{display:inline}.hide-block>.hide-content,.hide-inline>.hide-content{display:none}.hide-inline>.hide-button{margin:0 6px}.hide-inline>.hide-content{margin:0 6px}.hide-block{margin:0 0 16px}.toggle{margin-bottom:20px;border:1px solid #f0f0f0}.toggle>.toggle-button{padding:6px 15px;background:#f0f0f0;color:#1f2d3d;cursor:pointer}.toggle>.toggle-content{margin:30px 24px}#article-container .inline-img{display:inline;margin:0 3px;height:1.1em;vertical-align:text-bottom}.hl-label{padding:2px 4px;border-radius:3px;color:#fff}.hl-label.default{background-color:#777}.hl-label.blue{background-color:#428bca}.hl-label.pink{background-color:#ff69b4}.hl-label.red{background-color:red}.hl-label.purple{background-color:#6f42c1}.hl-label.orange{background-color:#ff8c00}.hl-label.green{background-color:#5cb85c}.note{position:relative;margin:0 0 20px;padding:15px;border-radius:5px}.note.icon{padding-left:3em}.note>.note-icon{position:absolute;top:calc(50% - .5em);left:.8em;font-size:larger}.note.blue:not(.disabled){border-left-color:#428bca!important}.note.blue:not(.disabled).modern{border-left-color:transparent!important;color:#428bca}.note.blue:not(.disabled):not(.simple){background:#e3eef7!important}.note.blue>.note-icon{color:#428bca}.note.pink:not(.disabled){border-left-color:#ff69b4!important}.note.pink:not(.disabled).modern{border-left-color:transparent!important;color:#ff69b4}.note.pink:not(.disabled):not(.simple){background:#ffe9f4!important}.note.pink>.note-icon{color:#ff69b4}.note.red:not(.disabled){border-left-color:red!important}.note.red:not(.disabled).modern{border-left-color:transparent!important;color:red}.note.red:not(.disabled):not(.simple){background:#ffd9d9!important}.note.red>.note-icon{color:red}.note.purple:not(.disabled){border-left-color:#6f42c1!important}.note.purple:not(.disabled).modern{border-left-color:transparent!important;color:#6f42c1}.note.purple:not(.disabled):not(.simple){background:#e9e3f6!important}.note.purple>.note-icon{color:#6f42c1}.note.orange:not(.disabled){border-left-color:#ff8c00!important}.note.orange:not(.disabled).modern{border-left-color:transparent!important;color:#ff8c00}.note.orange:not(.disabled):not(.simple){background:#ffeed9!important}.note.orange>.note-icon{color:#ff8c00}.note.green:not(.disabled){border-left-color:#5cb85c!important}.note.green:not(.disabled).modern{border-left-color:transparent!important;color:#5cb85c}.note.green:not(.disabled):not(.simple){background:#e7f4e7!important}.note.green>.note-icon{color:#5cb85c}.note.simple{border:1px solid #eee;border-left-width:5px}.note.modern{border:1px solid transparent!important;background-color:#f5f5f5;color:#4c4948}.note.flat{border:initial;border-left:5px solid #eee;background-color:#f9f9f9;color:#4c4948}.note h2,.note h3,.note h4,.note h5,.note h6{margin-top:3px;margin-bottom:0;padding-top:0!important;border-bottom:initial}.note blockquote:first-child,.note img:first-child,.note ol:first-child,.note p:first-child,.note pre:first-child,.note table:first-child,.note ul:first-child{margin-top:0!important}.note blockquote:last-child,.note img:last-child,.note ol:last-child,.note p:last-child,.note pre:last-child,.note table:last-child,.note ul:last-child{margin-bottom:0!important}.note:not(.no-icon){padding-left:3em}.note:not(.no-icon)::before{position:absolute;top:calc(50% - .95em);left:.8em;font-size:larger}.note.default.flat{background:#f7f7f7}.note.default.modern{border-color:#e1e1e1;background:#f3f3f3;color:#666}.note.default.modern a:not(.btn){color:#666}.note.default.modern a:not(.btn):hover{color:#454545}.note.default:not(.modern){border-left-color:#777}.note.default:not(.modern) h2,.note.default:not(.modern) h3,.note.default:not(.modern) h4,.note.default:not(.modern) h5,.note.default:not(.modern) h6{color:#777}.note.default:not(.no-icon)::before{content:'\f0a9'}.note.default:not(.no-icon):not(.modern)::before{color:#777}.note.primary.flat{background:#f5f0fa}.note.primary.modern{border-color:#e1c2ff;background:#f3daff;color:#6f42c1}.note.primary.modern a:not(.btn){color:#6f42c1}.note.primary.modern a:not(.btn):hover{color:#453298}.note.primary:not(.modern){border-left-color:#6f42c1}.note.primary:not(.modern) h2,.note.primary:not(.modern) h3,.note.primary:not(.modern) h4,.note.primary:not(.modern) h5,.note.primary:not(.modern) h6{color:#6f42c1}.note.primary:not(.no-icon)::before{content:'\f055'}.note.primary:not(.no-icon):not(.modern)::before{color:#6f42c1}.note.info.flat{background:#eef7fa}.note.info.modern{border-color:#b3e5ef;background:#d9edf7;color:#31708f}.note.info.modern a:not(.btn){color:#31708f}.note.info.modern a:not(.btn):hover{color:#215761}.note.info:not(.modern){border-left-color:#428bca}.note.info:not(.modern) h2,.note.info:not(.modern) h3,.note.info:not(.modern) h4,.note.info:not(.modern) h5,.note.info:not(.modern) h6{color:#428bca}.note.info:not(.no-icon)::before{content:'\f05a'}.note.info:not(.no-icon):not(.modern)::before{color:#428bca}.note.success.flat{background:#eff8f0}.note.success.modern{border-color:#d0e6be;background:#dff0d8;color:#3c763d}.note.success.modern a:not(.btn){color:#3c763d}.note.success.modern a:not(.btn):hover{color:#32562c}.note.success:not(.modern){border-left-color:#5cb85c}.note.success:not(.modern) h2,.note.success:not(.modern) h3,.note.success:not(.modern) h4,.note.success:not(.modern) h5,.note.success:not(.modern) h6{color:#5cb85c}.note.success:not(.no-icon)::before{content:'\f058'}.note.success:not(.no-icon):not(.modern)::before{color:#5cb85c}.note.warning.flat{background:#fdf8ea}.note.warning.modern{border-color:#fae4cd;background:#fcf4e3;color:#8a6d3b}.note.warning.modern a:not(.btn){color:#8a6d3b}.note.warning.modern a:not(.btn):hover{color:#714f30}.note.warning:not(.modern){border-left-color:#f0ad4e}.note.warning:not(.modern) h2,.note.warning:not(.modern) h3,.note.warning:not(.modern) h4,.note.warning:not(.modern) h5,.note.warning:not(.modern) h6{color:#f0ad4e}.note.warning:not(.no-icon)::before{content:'\f06a'}.note.warning:not(.no-icon):not(.modern)::before{color:#f0ad4e}.note.danger.flat{background:#fcf1f2}.note.danger.modern{border-color:#ebcdd2;background:#f2dfdf;color:#a94442}.note.danger.modern a:not(.btn){color:#a94442}.note.danger.modern a:not(.btn):hover{color:#84333f}.note.danger:not(.modern){border-left-color:#d9534f}.note.danger:not(.modern) h2,.note.danger:not(.modern) h3,.note.danger:not(.modern) h4,.note.danger:not(.modern) h5,.note.danger:not(.modern) h6{color:#d9534f}.note.danger:not(.no-icon)::before{content:'\f056'}.note.danger:not(.no-icon):not(.modern)::before{color:#d9534f}#article-container .tabs{position:relative;margin:0 0 20px;border-right:1px solid var(--tab-border-color);border-bottom:1px solid var(--tab-border-color);border-left:1px solid var(--tab-border-color)}#article-container .tabs>.nav-tabs{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;background:var(--tab-botton-bg)}#article-container .tabs>.nav-tabs>.tab{margin:0;padding:0;list-style:none}@media screen and (max-width:768px){#article-container .tabs>.nav-tabs>.tab{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;-ms-box-flex:1;box-flex:1;-webkit-flex-grow:1;flex-grow:1}}#article-container .tabs>.nav-tabs>.tab button{display:block;padding:8px 18px;width:100%;border-top:2px solid var(--tab-border-color);background:var(--tab-botton-bg);color:var(--tab-botton-color);line-height:2;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s}#article-container .tabs>.nav-tabs>.tab button i{width:1.5em}#article-container .tabs>.nav-tabs>.tab.active button{border-top:2px solid #49b1f5;background:var(--tab-button-active-bg);cursor:default}#article-container .tabs>.nav-tabs>.tab:not(.active) button:hover{border-top:2px solid var(--tab-button-hover-bg);background:var(--tab-button-hover-bg)}#article-container .tabs>.tab-contents .tab-item-content{position:relative;display:none;padding:36px 24px}@media screen and (max-width:768px){#article-container .tabs>.tab-contents .tab-item-content{padding:24px 14px}}#article-container .tabs>.tab-contents .tab-item-content.active{display:block;-webkit-animation:tabshow .5s;-moz-animation:tabshow .5s;-o-animation:tabshow .5s;-ms-animation:tabshow .5s;animation:tabshow .5s}#article-container .tabs .tab-to-top{position:relative;display:block;margin:0 0 0 auto;color:#99a9bf}@-moz-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}#article-container .timeline{margin:0 0 20px 10px;padding:14px 20px 5px;border-left:2px solid var(--timeline-color,#49b1f5)}#article-container .timeline.blue{--timeline-color:#428bca;--timeline-bg:rgba(66,139,202, 0.2)}#article-container .timeline.pink{--timeline-color:#ff69b4;--timeline-bg:rgba(255,105,180, 0.2)}#article-container .timeline.red{--timeline-color:#f00;--timeline-bg:rgba(255,0,0, 0.2)}#article-container .timeline.purple{--timeline-color:#6f42c1;--timeline-bg:rgba(111,66,193, 0.2)}#article-container .timeline.orange{--timeline-color:#ff8c00;--timeline-bg:rgba(255,140,0, 0.2)}#article-container .timeline.green{--timeline-color:#5cb85c;--timeline-bg:rgba(92,184,92, 0.2)}#article-container .timeline .timeline-item{margin:0 0 15px}#article-container .timeline .timeline-item:hover .item-circle:before{border-color:var(--timeline-color,#49b1f5)}#article-container .timeline .timeline-item.headline .timeline-item-title .item-circle>p{font-weight:600;font-size:1.2em}#article-container .timeline .timeline-item.headline .timeline-item-title .item-circle:before{left:-28px;border:4px solid var(--timeline-color,#49b1f5)}#article-container .timeline .timeline-item.headline:hover .item-circle:before{border-color:var(--pseudo-hover)}#article-container .timeline .timeline-item .timeline-item-title{position:relative}#article-container .timeline .timeline-item .item-circle:before{position:absolute;top:50%;left:-27px;width:6px;height:6px;border:3px solid var(--pseudo-hover);border-radius:50%;background:var(--card-bg);content:'';-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}#article-container .timeline .timeline-item .item-circle>p{margin:0 0 8px;font-weight:500}#article-container .timeline .timeline-item .timeline-item-content{position:relative;padding:12px 15px;border-radius:12px;background:var(--timeline-bg,#e4f3fd);font-size:.93em}#article-container .timeline .timeline-item .timeline-item-content>:last-child{margin-bottom:0}#article-container .timeline+.timeline{margin-top:-20px}[data-theme=dark]{--global-bg:#0d0d0d;--font-color:rgba(255,255,255,0.7);--hr-border:rgba(255,255,255,0.4);--hr-before-color:rgba(255,255,255,0.7);--search-bg:#121212;--search-input-color:rgba(255,255,255,0.7);--search-result-title:rgba(255,255,255,0.9);--preloader-bg:#0d0d0d;--preloader-color:rgba(255,255,255,0.7);--tab-border-color:#2c2c2c;--tab-botton-bg:#2c2c2c;--tab-botton-color:rgba(255,255,255,0.7);--tab-button-hover-bg:#383838;--tab-button-active-bg:#121212;--card-bg:#121212;--sidebar-bg:#121212;--btn-hover-color:#787878;--btn-color:rgba(255,255,255,0.7);--btn-bg:#1f1f1f;--text-bg-hover:#383838;--light-grey:rgba(255,255,255,0.7);--dark-grey:rgba(255,255,255,0.2);--white:rgba(255,255,255,0.9);--text-highlight-color:rgba(255,255,255,0.9);--blockquote-color:rgba(255,255,255,0.7);--blockquote-bg:#2c2c2c;--reward-pop:#2c2c2c;--toc-link-color:rgba(255,255,255,0.6);--hl-color:rgba(255,255,255,0.7);--hl-bg:#171717;--hltools-bg:#1a1a1a;--hltools-color:#90a4ae;--hlnumber-bg:#171717;--hlnumber-color:rgba(255,255,255,0.4);--hlscrollbar-bg:#1f1f1f;--hlexpand-bg:linear-gradient(180deg, rgba(23,23,23,0.6), rgba(23,23,23,0.9));--scrollbar-color:#1f1f1f;--timeline-bg:#1f1f1f}[data-theme=dark] #post{background-color:#0d0d0d}[data-theme=dark] #article-container code{background:#2c2c2c}[data-theme=dark] #article-container pre>code{background:#171717}[data-theme=dark] #article-container figure.highlight{-webkit-box-shadow:none;box-shadow:none}[data-theme=dark] #article-container .note code{background:rgba(27,31,35,.05)}[data-theme=dark] #article-container .aplayer{filter:brightness(.8)}[data-theme=dark] #article-container kbd{border-color:#696969;background-color:#525252;color:#e2f1ff}[data-theme=dark] #page-header.nav-fixed>#nav,[data-theme=dark] #page-header.not-top-img>#nav{background:rgba(18,18,18,.8);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,0);box-shadow:0 5px 6px -5px rgba(133,133,133,0)}[data-theme=dark] #post-comment #comment-switch{background:#2c2c2c!important}[data-theme=dark] #post-comment #comment-switch .switch-btn{filter:brightness(.8)}[data-theme=dark] .note{filter:brightness(.8)}[data-theme=dark] #article-container iframe,[data-theme=dark] .ads-wrap,[data-theme=dark] .btn-beautify,[data-theme=dark] .error-img,[data-theme=dark] .gist,[data-theme=dark] .hide-button,[data-theme=dark] .hl-label,[data-theme=dark] .post-outdate-notice{filter:brightness(.8)}[data-theme=dark] img{filter:brightness(.8)}[data-theme=dark] #aside-content .aside-list>.aside-list-item:not(:last-child){border-bottom:1px dashed rgba(255,255,255,.1)}[data-theme=dark] #gitalk-container{filter:brightness(.8)}[data-theme=dark] #gitalk-container svg{fill:rgba(255,255,255,.9)!important}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-no-comment,[data-theme=dark] #disqus_thread #dsqjs .dsqjs-tab-active{color:rgba(255,255,255,.7)}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-order-label{background-color:#1f1f1f}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body{color:rgba(255,255,255,.7)}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body code,[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body pre{background:#2c2c2c}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body blockquote{color:rgba(255,255,255,.7)}[data-theme=dark] #artitalk_main #lazy{background:#121212}[data-theme=dark] #operare_artitalk .c2{background:#121212}@media screen and (max-width:900px){[data-theme=dark] #card-toc{background:#1f1f1f}[data-theme=dark] #card-toc .card-widget:not(#card-toc){display:none}}.read-mode{--font-color:#4c4948;--readmode-light-color:#fff;--white:#4c4948;--light-grey:#4c4948;--gray:#d6dbdf;--hr-border:#d6dbdf;--hr-before-color:#b9c2c9;--highlight-bg:#f7f7f7;--exit-btn-bg:#c0c0c0;--exit-btn-color:#fff;--exit-btn-hover:#8d8d8d;--pseudo-hover:none}[data-theme=dark] .read-mode{--font-color:rgba(255,255,255,0.7);--readmode-light-color:#0d0d0d;--white:rgba(255,255,255,0.9);--light-grey:rgba(255,255,255,0.7);--gray:rgba(255,255,255,0.7);--hr-border:rgba(255,255,255,0.5);--hr-before-color:rgba(255,255,255,0.7);--highlight-bg:#171717;--exit-btn-bg:#1f1f1f;--exit-btn-color:rgba(255,255,255,0.9);--exit-btn-hover:#525252}.read-mode{background:var(--readmode-light-color)}.read-mode .exit-readmode{position:fixed;top:30px;right:30px;z-index:100;width:40px;height:40px;border-radius:12px;background:var(--exit-btn-bg);color:var(--exit-btn-color);font-size:16px;-webkit-transition:background .3s;-moz-transition:background .3s;-o-transition:background .3s;-ms-transition:background .3s;transition:background .3s}@media screen and (max-width:768px){.read-mode .exit-readmode{top:initial;bottom:30px}}.read-mode .exit-readmode:hover{background:var(--exit-btn-hover)}.read-mode #aside-content{display:none}.read-mode #page-header.post-bg{background-color:transparent;background-image:none!important}.read-mode #page-header.post-bg:before{opacity:0}.read-mode #page-header.post-bg>#post-info{text-align:center}.read-mode #post{margin:0 auto;background:0 0;-webkit-box-shadow:none;box-shadow:none}.read-mode #post:hover{-webkit-box-shadow:none;box-shadow:none}.read-mode>canvas{display:none!important}.read-mode #footer,.read-mode #nav,.read-mode #post>:not(#post-info):not(.post-content),.read-mode #rightside,.read-mode #web_bg,.read-mode .highlight-tools,.read-mode .not-top-img,.read-mode .post-outdate-notice{display:none!important}.read-mode #article-container a{color:#99a9bf}.read-mode #article-container .highlight:not(.js-file-line-container),.read-mode #article-container pre{background:var(--highlight-bg)!important}.read-mode #article-container .highlight:not(.js-file-line-container) *,.read-mode #article-container pre *{color:var(--font-color)!important}.read-mode #article-container figure.highlight{border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.read-mode #article-container figure.highlight>:not(.highlight-tools){display:block!important}.read-mode #article-container figure.highlight .line:before{color:var(--font-color)!important}.read-mode #article-container figure.highlight .hljs{background:var(-highlight-bg)!important}.read-mode #article-container h1,.read-mode #article-container h2,.read-mode #article-container h3,.read-mode #article-container h4,.read-mode #article-container h5,.read-mode #article-container h6{padding:0}.read-mode #article-container h1:before,.read-mode #article-container h2:before,.read-mode #article-container h3:before,.read-mode #article-container h4:before,.read-mode #article-container h5:before,.read-mode #article-container h6:before{content:''}.read-mode #article-container h1:hover,.read-mode #article-container h2:hover,.read-mode #article-container h3:hover,.read-mode #article-container h4:hover,.read-mode #article-container h5:hover,.read-mode #article-container h6:hover{padding:0}.read-mode #article-container li:hover:before,.read-mode #article-container ol:hover:before,.read-mode #article-container ul:hover:before{-webkit-transform:none!important;-moz-transform:none!important;-o-transform:none!important;-ms-transform:none!important;transform:none!important}.read-mode #article-container li:before,.read-mode #article-container ol:before{background:0 0!important;color:var(--font-color)!important}.read-mode #article-container ul>li:before{border-color:var(--gray)!important}.read-mode #article-container .tabs{border:2px solid var(--tab-border-color)}.read-mode #article-container .tabs>.nav-tabs{background:0 0}.read-mode #article-container .tabs>.nav-tabs>.tab{border-bottom:0}.read-mode #article-container .tabs>.nav-tabs>.tab button{border-top:none!important;background:0 0}.read-mode #article-container .tabs>.nav-tabs>.tab button:hover{background:0 0!important}.read-mode #article-container .tabs>.nav-tabs>.tab.active button{text-decoration:underline}.read-mode #article-container .tabs>.tab-contents .tab-item-content.active{-webkit-animation:none;-moz-animation:none;-o-animation:none;-ms-animation:none;animation:none}.read-mode #article-container code{color:var(--font-color)}.read-mode #article-container blockquote{border-color:var(--gray);background-color:var(--readmode-light-color)}.read-mode #article-container kbd{border:1px solid var(--gray);background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:var(--font-color)}.read-mode #article-container .hide-toggle{border:1px solid var(--gray)!important}.read-mode #article-container .btn-beautify,.read-mode #article-container .hide-button,.read-mode #article-container .hl-label{border:1px solid var(--gray)!important;background:var(--readmode-light-color)!important;color:var(--font-color)!important}.read-mode #article-container .note{border:2px solid var(--gray);border-left-color:var(--gray)!important;filter:none;background-color:var(--readmode-light-color)!important;color:var(--font-color)}.read-mode #article-container .note .note-icon,.read-mode #article-container .note:before{color:var(--font-color)}.search-dialog{position:fixed;top:10%;left:50%;z-index:1001;display:none;margin-left:-300px;padding:20px;width:600px;border-radius:12px;background:var(--search-bg)}@media screen and (max-width:768px){.search-dialog{top:0;left:0;margin:0;width:100%;height:100%;border-radius:0}}.search-dialog hr{margin:20px auto}.search-dialog .search-nav{margin:0 0 14px;color:#49b1f5;font-size:1.4em;line-height:1}.search-dialog .search-nav .search-dialog-title{margin-right:10px}.search-dialog .search-nav .search-close-button{float:right;color:#858585;-webkit-transition:color .2s ease-in-out;-moz-transition:color .2s ease-in-out;-o-transition:color .2s ease-in-out;-ms-transition:color .2s ease-in-out;transition:color .2s ease-in-out}.search-dialog .search-nav .search-close-button:hover{color:#49b1f5}#search-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:none;background:rgba(0,0,0,.6)}#local-search .search-dialog .local-search-box{margin:0 auto;max-width:100%;width:100%}#local-search .search-dialog .local-search-box input{padding:5px 14px;width:100%;outline:0;border:2px solid #49b1f5;border-radius:40px;background:var(--search-bg);color:var(--search-input-color);-webkit-appearance:none}#local-search .search-dialog .search-wrap{display:none}#local-search .search-dialog .local-search__hit-item{position:relative;padding-left:24px;line-height:1.7}#local-search .search-dialog .local-search__hit-item:hover:before{border-color:var(--pseudo-hover)}#local-search .search-dialog .local-search__hit-item:before{position:absolute;top:.45em;left:0;width:.5em;height:.5em;border:3px solid #49b1f5;border-radius:.5em;background:0 0;content:'';line-height:.5em;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#local-search .search-dialog .local-search__hit-item a{display:block;color:var(--search-result-title);font-weight:600;cursor:pointer}#local-search .search-dialog .local-search__hit-item a:hover{color:#49b1f5}#local-search .search-dialog .local-search__hit-item .search-result{margin:0 8px 8px 0;word-break:break-all}#local-search .search-dialog .local-search__hit-item .search-keyword{color:#f47466;font-weight:700}#local-search .search-dialog .search-result-list{overflow-y:auto;max-height:calc(80vh - 130px)}@media screen and (max-width:768px){#local-search .search-dialog .search-result-list{padding-bottom:40px;max-height:75vh!important}} \ No newline at end of file +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{padding:0;margin:0;width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden;overflow-y:auto}@media screen and (max-width:765px){body,html{line-height:1.15;-webkit-text-size-adjust:100%;padding:0;margin:0;width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden;overflow-y:auto}}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}#article-container .flink .flink-item-desc,#article-container .flink .flink-item-name,#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span,#pagination .next_info,#pagination .prev_info,#sidebar #sidebar-menus .menus_items .site-page,.limit-one-line,.site-data>a .headline{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}#article-container figure.gallery-group .gallery-group-name,#article-container figure.gallery-group p,#aside-content .aside-list>.aside-list-item .content>.comment,#aside-content .aside-list>.aside-list-item .content>.name,#aside-content .aside-list>.aside-list-item .content>.title,#post-info .post-title,#recent-posts>.recent-post-item>.recent-post-info>.article-title,#recent-posts>.recent-post-item>.recent-post-info>.content,.article-sort-item-title,.limit-more-line,.relatedPosts>.relatedPosts-list .content .title{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}#article-container.post-content h1:before,#article-container.post-content h2:before,#article-container.post-content h3:before,#article-container.post-content h4:before,#article-container.post-content h5:before,#article-container.post-content h6:before,#post .post-outdate-notice:before,.fontawesomeIcon,.note:not(.no-icon)::before,span.categoryBar-list-count::before{display:inline-block;font-weight:600;font-family:'Font Awesome 6 Free';text-rendering:auto;-webkit-font-smoothing:antialiased}#aside-content .card-widget,#recent-posts>.recent-post-item,.cardHover,.layout>.recent-posts .pagination>:not(.space),.layout>div:first-child:not(.recent-posts){border-radius:12px;background:var(--card-bg);-webkit-box-shadow:var(--card-box-shadow);box-shadow:var(--card-box-shadow);-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#aside-content .card-widget:hover,#recent-posts>.recent-post-item:hover,.cardHover:hover,.layout>.recent-posts .pagination>:not(.space):hover,.layout>div:first-child:not(.recent-posts):hover{-webkit-box-shadow:var(--card-hover-box-shadow);box-shadow:var(--card-hover-box-shadow)}#aside-content .aside-list>.aside-list-item .thumbnail>img,#recent-posts>.recent-post-item .post_cover img.post_bg,.article-sort-item-img img,.imgHover{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .6s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .6s;-o-transition:filter 375ms ease-in .2s,-o-transform .6s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .6s;transition:filter 375ms ease-in .2s,transform .6s;object-fit:cover}#aside-content .aside-list>.aside-list-item .thumbnail>img:hover,#recent-posts>.recent-post-item .post_cover img.post_bg:hover,.article-sort-item-img img:hover,.imgHover:hover{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#pagination .next-post:hover img,#pagination .prev-post:hover img,.postImgHover:hover img,.relatedPosts>.relatedPosts-list>div:hover img{opacity:.8;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#pagination .next-post img,#pagination .prev-post img,.postImgHover img,.relatedPosts>.relatedPosts-list>div img{position:absolute;width:100%;height:100%;opacity:.4;-webkit-transition:all .6s,filter 375ms ease-in .2s;-moz-transition:all .6s,filter 375ms ease-in .2s;-o-transition:all .6s,filter 375ms ease-in .2s;-ms-transition:all .6s,filter 375ms ease-in .2s;transition:all .6s,filter 375ms ease-in .2s;object-fit:cover}.category-lists ul,.list-beauty{list-style:none}.category-lists ul li,.list-beauty li{position:relative;padding:.12em .4em .12em 1.4em}.category-lists ul li:hover:before,.list-beauty li:hover:before{border-color:var(--pseudo-hover)}.category-lists ul li:before,.list-beauty li:before{position:absolute;top:.67em;left:0;width:.43em;height:.43em;border:.215em solid #49b1f5;border-radius:.43em;background:0 0;content:'';cursor:pointer;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}#content-inner,#footer{-webkit-animation:bottom-top 1s;-moz-animation:bottom-top 1s;-o-animation:bottom-top 1s;-ms-animation:bottom-top 1s;animation:bottom-top 1s}#page-header{-webkit-animation:header-effect 1s;-moz-animation:header-effect 1s;-o-animation:header-effect 1s;-ms-animation:header-effect 1s;animation:header-effect 1s}#site-subtitle,#site-title{-webkit-animation:titleScale 1s;-moz-animation:titleScale 1s;-o-animation:titleScale 1s;-ms-animation:titleScale 1s;animation:titleScale 1s}#nav.show{-webkit-animation:headerNoOpacity 1s;-moz-animation:headerNoOpacity 1s;-o-animation:headerNoOpacity 1s;-ms-animation:headerNoOpacity 1s;animation:headerNoOpacity 1s}#web_bg,canvas:not(#ribbon-canvas){-webkit-animation:to_show 4s;-moz-animation:to_show 4s;-o-animation:to_show 4s;-ms-animation:to_show 4s;animation:to_show 4s}#ribbon-canvas{-webkit-animation:ribbon_to_show 4s;-moz-animation:ribbon_to_show 4s;-o-animation:ribbon_to_show 4s;-ms-animation:ribbon_to_show 4s;animation:ribbon_to_show 4s}#sidebar-menus.open>:nth-child(1){-webkit-animation:sidebarItem .2s;-moz-animation:sidebarItem .2s;-o-animation:sidebarItem .2s;-ms-animation:sidebarItem .2s;animation:sidebarItem .2s}#sidebar-menus.open>:nth-child(2){-webkit-animation:sidebarItem .4s;-moz-animation:sidebarItem .4s;-o-animation:sidebarItem .4s;-ms-animation:sidebarItem .4s;animation:sidebarItem .4s}#sidebar-menus.open>:nth-child(3){-webkit-animation:sidebarItem .6s;-moz-animation:sidebarItem .6s;-o-animation:sidebarItem .6s;-ms-animation:sidebarItem .6s;animation:sidebarItem .6s}#sidebar-menus.open>:nth-child(4){-webkit-animation:sidebarItem .8s;-moz-animation:sidebarItem .8s;-o-animation:sidebarItem .8s;-ms-animation:sidebarItem .8s;animation:sidebarItem .8s}.scroll-down-effects{-webkit-animation:scroll-down-effect 1.5s infinite;-moz-animation:scroll-down-effect 1.5s infinite;-o-animation:scroll-down-effect 1.5s infinite;-ms-animation:scroll-down-effect 1.5s infinite;animation:scroll-down-effect 1.5s infinite}.reward-main{-webkit-animation:donate_effcet .3s .1s ease both;-moz-animation:donate_effcet .3s .1s ease both;-o-animation:donate_effcet .3s .1s ease both;-ms-animation:donate_effcet .3s .1s ease both;animation:donate_effcet .3s .1s ease both}@-moz-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-webkit-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-o-keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@keyframes scroll-down-effect{0%{top:0;opacity:.4}50%{top:-16px;opacity:1;-ms-filter:none;filter:none}100%{top:0;opacity:.4}}@-moz-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes header-effect{0%{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes headerNoOpacity{0%{-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-o-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-o-keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@keyframes bottom-top{0%{margin-top:50px;opacity:0}100%{margin-top:0;opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-o-keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes titleScale{0%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-moz-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-webkit-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-o-keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@keyframes search_close{0%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-moz-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-o-keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@keyframes to_show{0%{opacity:0}100%{opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-webkit-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-o-keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@keyframes to_hide{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:0}}@-moz-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-webkit-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-o-keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@keyframes ribbon_to_show{0%{opacity:0}100%{opacity:.6}}@-moz-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes avatar_turn_around{from{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes sub_menus{0%{opacity:0;-webkit-transform:translateY(10px);-moz-transform:translateY(10px);-o-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes donate_effcet{0%{opacity:0;-webkit-transform:translateY(-20px);-moz-transform:translateY(-20px);-o-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-moz-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@-o-keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@keyframes sidebarItem{0%{-webkit-transform:translateX(200px);-moz-transform:translateX(200px);-o-transform:translateX(200px);-ms-transform:translateX(200px);transform:translateX(200px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}:root{--global-font-size:16px;--global-bg:#fff;--font-color:#4c4948;--hr-border:#a4d8fa;--hr-before-color:#80c8f8;--search-bg:#f6f8fa;--search-input-color:#4c4948;--search-result-title:#4c4948;--preloader-bg:#37474f;--preloader-color:#fff;--tab-border-color:#f0f0f0;--tab-botton-bg:#f0f0f0;--tab-botton-color:#1f2d3d;--tab-button-hover-bg:#dcdcdc;--tab-button-active-bg:#fff;--card-bg:#fff;--sidebar-bg:#f6f8fa;--btn-hover-color:#ff7242;--btn-color:#fff;--btn-bg:#49b1f5;--text-bg-hover:rgba(73,177,245,0.7);--light-grey:#eee;--dark-grey:#cacaca;--white:#fff;--text-highlight-color:#1f2d3d;--blockquote-color:#6a737d;--blockquote-bg:rgba(73,177,245,0.1);--reward-pop:#f5f5f5;--toc-link-color:#666261;--card-box-shadow:0 3px 8px 6px rgba(7,17,27,0.05);--card-hover-box-shadow:0 3px 8px 6px rgba(7,17,27,0.09);--pseudo-hover:#ff7242;--headline-presudo:#a0a0a0;--scrollbar-color:#49b1f5}body{position:relative;min-height:100%;background:var(--global-bg);color:var(--font-color);font-size:var(--global-font-size);font-family:-apple-system,IBM Plex Mono,monosapce,"微软雅黑",sans-serif;line-height:2;-webkit-tap-highlight-color:transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--scrollbar-color)}::-webkit-scrollbar-track{background-color:transparent}*{scrollbar-width:thin;scrollbar-color:#ff7242 transparent}input::placeholder{color:var(--font-color)}#web_bg{position:fixed;z-index:-999;width:100%;height:100%;background:#f7f9fe;background-attachment:local;background-position:center;background-size:cover;background-repeat:no-repeat}h1,h2,h3,h4,h5,h6{position:relative;margin:20px 0 14px;color:var(--text-highlight-color);font-weight:700}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:inherit!important}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.table-wrap{overflow-x:scroll;margin:0 0 20px}table{display:table;width:100%;border-spacing:0;border-collapse:collapse;empty-cells:show}table thead{background:rgba(153,169,191,.1)}table td,table th{padding:6px 12px;border:1px solid var(--light-grey);vertical-align:middle}::selection{background:#00c4b6;color:#f7f7f7}button{padding:0;outline:0;border:none;background:0 0;cursor:pointer;touch-action:manipulation}a{color:#99a9bf;text-decoration:none;word-wrap:break-word;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;-ms-transition:all .2s;transition:all .2s;overflow-wrap:break-word}a:hover{color:#49b1f5}.is-center{text-align:center}.copy-true{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.pull-left{float:left}.pull-right{float:right}img:not([src]),img[src='']{opacity:0}.img-alt{margin:-10px 0 10px;color:#858585}.img-alt:hover{text-decoration:none!important}blockquote{margin:0 0 20px;padding:12px 15px;border-left:3px solid #49b1f5;background-color:var(--blockquote-bg);color:var(--blockquote-color)}blockquote footer cite:before{padding:0 5px;content:'—'}blockquote>:last-child{margin-bottom:0!important}:root{--hl-color:#90a4ae;--hl-bg:#f6f8fa;--hltools-bg:#e6ebf1;--hltools-color:#90a4ae;--hlnumber-bg:#f6f8fa;--hlnumber-color:rgba(144,164,174,0.5);--hlscrollbar-bg:#dce4eb;--hlexpand-bg:linear-gradient(180deg, rgba(246,248,250,0.6), rgba(246,248,250,0.9))}figure.highlight table{scrollbar-color:var(--hlscrollbar-bg) transparent}figure.highlight table::-webkit-scrollbar-thumb{background:var(--hlscrollbar-bg)}figure.highlight pre .deletion{color:#bf42bf}figure.highlight pre .addition{color:#105ede}figure.highlight pre .meta{color:#7c4dff}figure.highlight pre .comment{color:rgba(149,165,166,.8)}figure.highlight pre .attribute,figure.highlight pre .css .class,figure.highlight pre .css .id,figure.highlight pre .css .pseudo,figure.highlight pre .html .doctype,figure.highlight pre .regexp,figure.highlight pre .ruby .constant,figure.highlight pre .tag .name,figure.highlight pre .variable,figure.highlight pre .xml .doctype,figure.highlight pre .xml .pi,figure.highlight pre .xml .tag .title{color:#e53935}figure.highlight pre .tag{color:#39adb5}figure.highlight pre .command,figure.highlight pre .constant,figure.highlight pre .literal,figure.highlight pre .number,figure.highlight pre .params,figure.highlight pre .preprocessor{color:#f76d47}figure.highlight pre .built_in{color:#ffb62c}figure.highlight pre .css .rules .attribute,figure.highlight pre .formula,figure.highlight pre .header,figure.highlight pre .inheritance,figure.highlight pre .number,figure.highlight pre .ruby .class .title,figure.highlight pre .ruby .symbol,figure.highlight pre .special,figure.highlight pre .string,figure.highlight pre .value,figure.highlight pre .xml .cdata{color:#91b859}figure.highlight pre .css .hexcolor,figure.highlight pre .keyword,figure.highlight pre .title{color:#39adb5}figure.highlight pre .coffeescript .title,figure.highlight pre .function,figure.highlight pre .javascript .title,figure.highlight pre .perl .sub,figure.highlight pre .python .decorator,figure.highlight pre .python .title,figure.highlight pre .ruby .function .title,figure.highlight pre .ruby .title .keyword{color:#6182b8}figure.highlight pre .javascript .function,figure.highlight pre .tag .attr{color:#7c4dff}#article-container figure.highlight .line.marked{background-color:rgba(128,203,196,.251)}#article-container figure.highlight table{display:block;overflow:auto;border:none}#article-container figure.highlight table td{padding:0;border:none}#article-container figure.highlight .gutter pre{padding-right:10px;padding-left:10px;background-color:var(--hlnumber-bg);color:var(--hlnumber-color);text-align:right}#article-container figure.highlight .code pre{padding-right:10px;padding-left:10px;width:100%}#article-container figure.highlight,#article-container pre{overflow:auto;margin:0 0 20px;padding:0;background:var(--hl-bg);color:var(--hl-color);line-height:1.6}#article-container code,#article-container pre{font-size:var(--global-font-size)}#article-container code{padding:2px 4px;background:rgba(27,31,35,.05);color:#f47466}#article-container pre{padding:10px 20px}#article-container pre code{padding:0;background:0 0;color:var(--hl-color);text-shadow:none}#article-container figure.highlight{position:relative}#article-container figure.highlight pre{margin:0;padding:8px 0;border:none}#article-container figure.highlight .caption,#article-container figure.highlight figcaption{padding:6px 0 2px 14px;font-size:var(--global-font-size);line-height:1em}#article-container figure.highlight .caption a,#article-container figure.highlight figcaption a{float:right;padding-right:10px;color:var(--hl-color)}#article-container figure.highlight .caption a:hover,#article-container figure.highlight figcaption a:hover{border-bottom-color:var(--hl-color)}#article-container .highlight-tools{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;min-height:24px;height:2.15em;background:var(--hltools-bg);color:var(--hltools-color);font-size:var(--global-font-size)}#article-container .highlight-tools.closed~*{display:none}#article-container .highlight-tools .expand{position:absolute;padding:.57em .7em;cursor:pointer;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#article-container .highlight-tools .expand+.code-lang{left:1.7em}#article-container .highlight-tools .expand.closed{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:rotate(-90deg)!important;-moz-transform:rotate(-90deg)!important;-o-transform:rotate(-90deg)!important;-ms-transform:rotate(-90deg)!important;transform:rotate(-90deg)!important}#article-container .highlight-tools .code-lang{position:absolute;left:14px;text-transform:uppercase;font-weight:700;font-size:1.15em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#article-container .highlight-tools .copy-notice{position:absolute;right:2.4em;opacity:0;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}#article-container .highlight-tools .copy-button{position:absolute;right:14px;cursor:pointer;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}#article-container .highlight-tools .copy-button:hover{color:#49b1f5}#article-container .gutter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#article-container .gist table{width:auto}#article-container .gist table td{border:none}#article-container figure.highlight{margin:0 0 24px;border-radius:7px;-webkit-box-shadow:0 5px 10px 0 rgba(144,164,174,.4);box-shadow:0 5px 10px 0 rgba(144,164,174,.4);-webkit-transform:translateZ(0)}#article-container figure.highlight .highlight-tools:after{position:absolute;left:14px;width:12px;height:12px;border-radius:50%;background:#fc625d;-webkit-box-shadow:20px 0 #fdbc40,40px 0 #35cd4b;box-shadow:20px 0 #fdbc40,40px 0 #35cd4b;content:' '}#article-container figure.highlight .highlight-tools .expand{right:0}#article-container figure.highlight .highlight-tools .expand.closed{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:rotate(90deg)!important;-moz-transform:rotate(90deg)!important;-o-transform:rotate(90deg)!important;-ms-transform:rotate(90deg)!important;transform:rotate(90deg)!important}#article-container figure.highlight .highlight-tools .expand~.copy-notice{right:3.45em}#article-container figure.highlight .highlight-tools .expand~.copy-button{right:2.1em}#article-container figure.highlight .highlight-tools .code-lang{left:75px}#article-container .code-expand-btn{position:absolute;bottom:0;z-index:10;width:100%;background:var(--hlexpand-bg);text-align:center;font-size:var(--global-font-size);cursor:pointer}#article-container .code-expand-btn i{padding:6px 0;color:var(--hlnumber-color);-webkit-animation:code-expand-key 1.2s infinite;-moz-animation:code-expand-key 1.2s infinite;-o-animation:code-expand-key 1.2s infinite;-ms-animation:code-expand-key 1.2s infinite;animation:code-expand-key 1.2s infinite}#article-container .code-expand-btn.expand-done>i{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}#article-container .code-expand-btn.expand-done+pre,#article-container .code-expand-btn.expand-done+table{margin-bottom:1.8em}#article-container .code-expand-btn:not(.expand-done)~pre,#article-container .code-expand-btn:not(.expand-done)~table{overflow:hidden;height:500px}@-moz-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@-webkit-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@-o-keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}@keyframes code-expand-key{0%{opacity:.6}50%{opacity:.1}100%{opacity:.6}}.article-sort{margin-left:10px;padding-left:20px;border-left:2px solid #aadafa}.article-sort-title{position:relative;margin-left:10px;padding-bottom:20px;padding-left:20px;font-size:1.72em}.article-sort-title:hover:before{border-color:var(--pseudo-hover)}.article-sort-title:before{position:absolute;top:calc(((100% - 36px)/ 2));left:-9px;z-index:1;width:10px;height:10px;border:5px solid #49b1f5;border-radius:10px;background:var(--card-bg);content:'';line-height:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-title:after{position:absolute;bottom:0;left:0;z-index:0;width:2px;height:1.5em;background:#aadafa;content:''}.article-sort-item{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;margin:0 0 20px 10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-item:hover:before{border-color:var(--pseudo-hover)}.article-sort-item:before{position:absolute;left:calc(-20px - 17px);width:6px;height:6px;border:3px solid #49b1f5;border-radius:6px;background:var(--card-bg);content:'';-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.article-sort-item.no-article-cover{height:80px}.article-sort-item.no-article-cover .article-sort-item-info{padding:0}.article-sort-item.year{font-size:1.43em}.article-sort-item.year:hover:before{border-color:#49b1f5}.article-sort-item.year:before{border-color:var(--pseudo-hover)}.article-sort-item-time{color:#858585;font-size:95%}.article-sort-item-time time{padding-left:6px;cursor:default}.article-sort-item-title{color:var(--font-color);font-size:1.1em;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-line-clamp:2}.article-sort-item-title:hover{color:#49b1f5;-webkit-transform:translateX(10px);-moz-transform:translateX(10px);-o-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.article-sort-item-img{overflow:hidden;width:80px;height:80px}.article-sort-item-info{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding:0 16px}.category-lists .category-title{font-size:2.57em}@media screen and (max-width:768px){.category-lists .category-title{font-size:2em}}.category-lists .category-list{margin-bottom:0}.category-lists .category-list a{color:var(--font-color)}.category-lists .category-list a:hover{color:#49b1f5}.category-lists .category-list .category-list-count{margin-left:8px;color:#858585}.category-lists .category-list .category-list-count:before{content:'('}.category-lists .category-list .category-list-count:after{content:')'}.category-lists ul{padding:0 0 0 20px}.category-lists ul ul{padding-left:4px}.category-lists ul li{position:relative;margin:6px 0;padding:.12em .4em .12em 1.4em}#body-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh}@media screen and (max-width:900px){.layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.layout .card-widget:not(#card-toc){display:none}}@media screen and (max-width:768px){.layout{padding:20px 5px}}@media screen and (min-width:2000px){.layout{max-width:1500px}}.layout>div:first-child:not(.recent-posts){-webkit-align-self:flex-start;align-self:flex-start;-ms-flex-item-align:start;padding:50px 40px}@media screen and (max-width:768px){.layout>div:first-child:not(.recent-posts){padding:36px 14px}}.layout>div:first-child{width:74%;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}@media screen and (max-width:900px){.layout>div:first-child{width:100%!important}.layout>div:first-child .card-widget:not(#card-toc){display:none}}@media screen and (min-width:900px){.layout>div:first-child{-webkit-box-ordinal-group:2;-moz-box-ordinal-group:2;-o-box-ordinal-group:2;-ms-flex-order:2;-webkit-order:2;order:2}}@media screen and (min-width:2000px){.layout.hide-aside{max-width:1300px}}.layout.hide-aside>div{width:100%!important}.apple #page-header.full_page{background-attachment:scroll!important}.apple .avatar-img,.apple .flink-item-icon,.apple .recent-post-item{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}#article-container .flink{margin-bottom:20px}#article-container .flink .flink-list{overflow:auto;padding:10px 10px 0;text-align:center}#article-container .flink .flink-list>.flink-list-item{position:relative;float:left;overflow:hidden;margin:15px 7px;width:calc(100% / 3 - 15px);height:90px;border-radius:12px;line-height:17px;-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear;-webkit-transform:translateZ(0)}@media screen and (max-width:1024px){#article-container .flink .flink-list>.flink-list-item{width:calc(50% - 15px)!important}}@media screen and (max-width:600px){#article-container .flink .flink-list>.flink-list-item{width:calc(100% - 15px)!important}}#article-container .flink .flink-list>.flink-list-item:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;content:'';-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear;-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}#article-container .flink .flink-list>.flink-list-item:active:before,#article-container .flink .flink-list>.flink-list-item:focus:before,#article-container .flink .flink-list>.flink-list-item:hover:before{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .25s linear;-moz-transition:background-color .25s linear;-o-transition:background-color .25s linear;-ms-transition:background-color .25s linear;transition:background-color .25s linear}#article-container .flink .flink-list>.flink-list-item a{color:var(--font-color);text-decoration:none}#article-container .flink .flink-list>.flink-list-item a .flink-item-icon{float:left;overflow:hidden;margin:15px 10px;width:60px;height:60px;border-radius:35px;-webkit-transition:width .3s ease-out;-moz-transition:width .3s ease-out;-o-transition:width .3s ease-out;-ms-transition:width .3s ease-out;transition:width .3s ease-out}#article-container .flink .flink-list>.flink-list-item a .flink-item-icon img{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .3s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .3s;-o-transition:filter 375ms ease-in .2s,-o-transform .3s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .3s;transition:filter 375ms ease-in .2s,transform .3s;object-fit:cover}#article-container .flink .flink-list>.flink-list-item a .img-alt{display:none}#article-container .flink .flink-item-name{padding:16px 10px 0 0;height:40px;font-weight:700;font-size:1.43em}#article-container .flink .flink-item-desc{padding:16px 10px 16px 0;height:50px;font-size:.93em}#article-container .flink .flink-name{margin-bottom:5px;font-weight:700;font-size:1.5em}#recent-posts>.recent-post-item:not(:first-child){margin-top:20px}#recent-posts>.recent-post-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;overflow:hidden;height:18em}@media screen and (max-width:768px){#recent-posts>.recent-post-item{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:auto}}#recent-posts>.recent-post-item:hover img.post_bg{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}#recent-posts>.recent-post-item.ads-wrap{display:block!important;height:auto!important}#recent-posts>.recent-post-item .post_cover{overflow:hidden;width:44%;height:100%}@media screen and (max-width:768px){#recent-posts>.recent-post-item .post_cover{width:100%;height:230px}}#recent-posts>.recent-post-item .post_cover.right{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-o-box-ordinal-group:1;-ms-flex-order:1;-webkit-order:1;order:1}@media screen and (max-width:768px){#recent-posts>.recent-post-item .post_cover.right{-webkit-box-ordinal-group:0;-moz-box-ordinal-group:0;-o-box-ordinal-group:0;-ms-flex-order:0;-webkit-order:0;order:0}}#recent-posts>.recent-post-item>.recent-post-info{padding:0 40px;width:57%}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info{padding:20px 20px 30px;width:100%}}#recent-posts>.recent-post-item>.recent-post-info.no-cover{width:100%}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info.no-cover{padding:30px 20px}}#recent-posts>.recent-post-item>.recent-post-info>.article-title{color:var(--text-highlight-color);font-size:1.72em;line-height:1.4;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-line-clamp:2}@media screen and (max-width:768px){#recent-posts>.recent-post-item>.recent-post-info>.article-title{font-size:1.43em}}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap{margin:6px 0;color:#858585;font-size:90%}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap>.post-meta-date{cursor:default}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .sticky{color:#ff7242}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap i{margin:0 4px 0 0}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-label{padding-right:4px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-separator{margin:0 6px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap .article-meta-link{margin:0 4px}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap a{color:#858585}#recent-posts>.recent-post-item>.recent-post-info>.content{-webkit-line-clamp:2}.tag-cloud-list a{display:inline-block;padding:0 8px;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.tag-cloud-list a:hover{color:#49b1f5!important;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-o-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}@media screen and (max-width:768px){.tag-cloud-list a{zoom:.85}}.tag-cloud-title{font-size:2.57em}@media screen and (max-width:768px){.tag-cloud-title{font-size:2em}}h1.page-title+.tag-cloud-list{text-align:left}#aside-content{width:26%}@media screen and (max-width:900px){#aside-content{width:100%}#aside-content .card-widget:not(#card-toc){display:none}}#aside-content>.card-widget:first-child{margin-top:0}@media screen and (max-width:900px){#aside-content>.card-widget:first-child{margin-top:20px}#aside-content>.card-widget:first-child .card-widget:not(#card-toc){display:none}}#aside-content .card-widget{position:relative;overflow:hidden;margin-top:20px;padding:20px 24px}@media screen and (max-width:768px){#aside-content .card-widget:not(#card-toc){display:none}}#aside-content .card-info .author-info__name{font-weight:500;font-size:1.57em}#aside-content .card-info .author-info__description{margin-top:-.42em}#aside-content .card-info .card-info-data{margin:4px 0 4px}#aside-content .card-info .card-info-social-icons{margin:6px 0 -6px}#aside-content .card-info .card-info-social-icons .social-icon{margin:0 10px;color:var(--font-color);font-size:1.4em}#aside-content .card-info .card-info-social-icons i{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#aside-content .card-info .card-info-social-icons i:hover{-webkit-transform:rotate(540deg);-moz-transform:rotate(540deg);-o-transform:rotate(540deg);-ms-transform:rotate(540deg);transform:rotate(540deg)}#aside-content .card-info #card-info-btn{display:block;margin-top:14px;background-color:#f05012;color:var(--btn-color);text-align:center;line-height:2.4}#aside-content .card-info #card-info-btn:hover{background-color:var(--btn-hover-color)}#aside-content .card-info #card-info-btn span{padding-left:10px}#aside-content .item-headline{padding-bottom:6px;font-size:1.2em}#aside-content .item-headline span{margin-left:6px}@media screen and (min-width:900px){#aside-content .sticky_layout{position:sticky;position:-webkit-sticky;top:20px;-webkit-transition:top .3s;-moz-transition:top .3s;-o-transition:top .3s;-ms-transition:top .3s;transition:top .3s}}#aside-content .card-tag-cloud a{display:inline-block;padding:0 4px}#aside-content .aside-list>span{display:block;margin-bottom:10px;text-align:center}#aside-content .aside-list>.aside-list-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:6px 0}#aside-content .aside-list>.aside-list-item:first-child{padding-top:0}#aside-content .aside-list>.aside-list-item:not(:last-child){border-bottom:1px dashed #f5f5f5}#aside-content .aside-list>.aside-list-item:last-child{padding-bottom:0}#aside-content .aside-list>.aside-list-item .thumbnail{overflow:hidden;width:4.2em;height:4.2em}#aside-content .aside-list>.aside-list-item .content{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-left:10px;word-break:break-all}#aside-content .aside-list>.aside-list-item .content>.name{-webkit-line-clamp:1}#aside-content .aside-list>.aside-list-item .content>.name,#aside-content .aside-list>.aside-list-item .content>time{display:block;color:#858585;font-size:85%}#aside-content .aside-list>.aside-list-item .content>.comment,#aside-content .aside-list>.aside-list-item .content>.title{color:var(--font-color);font-size:95%;line-height:1.5;-webkit-line-clamp:2}#aside-content .aside-list>.aside-list-item .content>.comment:hover,#aside-content .aside-list>.aside-list-item .content>.title:hover{color:#49b1f5}#aside-content .aside-list>.aside-list-item.no-cover{min-height:4.4em}#aside-content .card-archives ul.card-archive-list,#aside-content .card-categories ul.card-category-list{margin:0;padding:0;list-style:none}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a,#aside-content .card-categories ul.card-category-list>.card-category-list-item a{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:3px 10px;color:var(--font-color);-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:first-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:first-child{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}#aside-content .card-categories .card-category-list.child{padding:0 0 0 16px}#aside-content .card-categories .card-category-list>.parent>a .card-category-list-name{width:70%!important}#aside-content .card-categories .card-category-list>.parent>a .card-category-list-count{width:calc(100% - 70% - 20px);text-align:right}#aside-content .card-categories .card-category-list>.parent i{float:right;margin-right:-.5em;padding:.5em;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s;-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#aside-content .card-categories .card-category-list>.parent i.expand{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}#aside-content .card-webinfo .webinfo .webinfo-item{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:2px 10px 0}#aside-content .card-webinfo .webinfo .webinfo-item div:first-child{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-right:20px}@media screen and (min-width:901px){#aside-content #card-toc{right:0!important}}@media screen and (max-width:900px){#aside-content #card-toc{position:fixed;right:-100%;bottom:30px;z-index:100;max-width:380px;max-height:calc(100% - 60px);width:calc(100% - 80px);opacity:0;-webkit-transition:initial;-moz-transition:initial;-o-transition:initial;-ms-transition:initial;transition:initial;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-o-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}#aside-content #card-toc .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-percentage{float:right;margin-top:-9px;color:#a9a9a9;font-style:italic;font-size:140%}#aside-content #card-toc .toc-content{overflow-y:scroll;overflow-y:overlay;margin:0 -24px;max-height:calc(100vh - 120px)}@media screen and (max-width:900px){#aside-content #card-toc .toc-content{max-height:calc(100vh - 140px)}#aside-content #card-toc .toc-content .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-content>*>.toc-item>.toc-child{margin-left:10px;padding-left:10px;border-left:1px solid var(--dark-grey)}#aside-content #card-toc .toc-content:not(.is-expand) .toc-child{display:none}@media screen and (max-width:900px){#aside-content #card-toc .toc-content:not(.is-expand) .toc-child{display:block!important}#aside-content #card-toc .toc-content:not(.is-expand) .toc-child .card-widget:not(#card-toc){display:none}}#aside-content #card-toc .toc-content:not(.is-expand) .toc-item.active .toc-child{display:block}#aside-content #card-toc .toc-content li,#aside-content #card-toc .toc-content ol{list-style:none}#aside-content #card-toc .toc-content>ol{padding:0!important}#aside-content #card-toc .toc-content ol{margin:0;padding-left:18px}#aside-content #card-toc .toc-content .toc-link{display:block;margin:4px 0;padding:1px 6px;color:var(--toc-link-color);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#aside-content #card-toc .toc-content .toc-link:hover{color:#f05011}#aside-content #card-toc .toc-content .toc-link.active{background:#f05011;color:#fff}#aside-content :only-child>.card-widget{margin-top:0}#aside-content .card-more-btn{float:right;color:inherit}#aside-content .card-more-btn:hover{-webkit-animation:more-btn-move 1s infinite;-moz-animation:more-btn-move 1s infinite;-o-animation:more-btn-move 1s infinite;-ms-animation:more-btn-move 1s infinite;animation:more-btn-move 1s infinite}#aside-content .card-announcement .item-headline i{color:red}.avatar-img{overflow:hidden;margin:0 auto;width:110px;height:110px;border-radius:70px}.avatar-img img{width:100%;height:100%;-webkit-transition:filter 375ms ease-in .2s,-webkit-transform .3s;-moz-transition:filter 375ms ease-in .2s,-moz-transform .3s;-o-transition:filter 375ms ease-in .2s,-o-transform .3s;-ms-transition:filter 375ms ease-in .2s,-ms-transform .3s;transition:filter 375ms ease-in .2s,transform .3s;object-fit:cover}.avatar-img img:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.site-data{display:table;width:100%;table-layout:fixed}.site-data>a{display:table-cell}.site-data>a div{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.site-data>a:hover div{color:#f05012!important}.site-data>a .headline{color:var(--font-color)}.site-data>a .length-num{margin-top:-.32em;color:var(--text-highlight-color);font-size:1.4em}@media screen and (min-width:900px){html.hide-aside .layout{-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}html.hide-aside .layout>.aside-content{display:none}html.hide-aside .layout>div:first-child{width:80%}}.page .sticky_layout{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}@-moz-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-webkit-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-o-keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@keyframes more-btn-move{0%,100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-o-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}50%{-webkit-transform:translateX(3px);-moz-transform:translateX(3px);-o-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)}}@-moz-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-webkit-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-o-keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@keyframes toc-open{0%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}@-moz-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-webkit-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@-o-keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}@keyframes toc-close{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}100%{-webkit-transform:scale(.7);-moz-transform:scale(.7);-o-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}}#calendar a{text-decoration:none}.cal-head{position:relative;height:20px;padding:8px 6px 2px 6px;margin-bottom:15px}.cal-next,.cal-prev{position:absolute;top:9px;width:9px;height:10px;padding:3px 4px;border:1px solid transparent;color:#333;outline:0}.cal-prev{left:8px}.cal-prev:before{border-right:9px solid #333}.cal-next{right:8px}.cal-next:before{border-left:9px solid #333}.cal-next:before,.cal-prev:before{content:'';display:block;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent}.cal-title{width:120px;margin:0 auto;color:#333;font:bold 14px/18px Arial;text-align:center}.cal-title a{border:1px solid transparent;color:#f76b61}.cal,.cal td,.cal th{border:none}.cal{border-collapse:collapse;border-spacing:0;table-layout:fixed;width:100%;margin:0}.cal th{background:rgba(0,0,0,0);color:#000;font-weight:900!important}.cal tbody a{background-color:#f76b61;color:#fff;display:block;font-weight:700;border:1px solid #fff}.cal tbody .cal-today{background-color:#ffdfdd;color:#f76b61}.cal .cal-gray{color:#ddd}.cal td,.cal th{font-weight:400;line-height:2.5625;padding:0;text-align:center}.cal .cal-foot:focus,.cal .cal-foot:hover,.cal-next:hover,.cal-prev:hover,.cal-title a:hover{cursor:pointer;background-color:transparent;cursor:pointer;color:#42d3d8}.cal tbody a:focus,.cal tbody a:hover{background-color:#ffdfdd;color:#fff;cursor:pointer}#categoryBar{width:100%!important}ul.categoryBar-list{margin:5px 5px 0 5px!important;padding:0!important}li.categoryBar-list-item{font-weight:700;display:inline-block;height:180px!important;margin:5px .5% 0 .5%!important;background-image:-webkit-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-moz-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-o-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:-ms-linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);background-image:linear-gradient(rgba(0,0,0,.4) 25%,rgba(16,16,16,0) 100%);border-radius:10px;padding:25px 0 25px 25px!important;-webkit-box-shadow:rgba(50,50,50,.3) 50px 50px 50px 50px inset;box-shadow:rgba(50,50,50,.3) 50px 50px 50px 50px inset;overflow:hidden;background-size:100%!important;background-position:center!important}li.categoryBar-list-item:hover{background-size:110%!important;-webkit-box-shadow:inset 500px 50px 50px 50px rgba(50,50,50,.6);box-shadow:inset 500px 50px 50px 50px rgba(50,50,50,.6)}li.categoryBar-list-item:hover span.categoryBar-list-count::after{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;-webkit-transform:translate(-100%,0);-moz-transform:translate(-100%,0);-o-transform:translate(-100%,0);-ms-transform:translate(-100%,0);transform:translate(-100%,0)}a.categoryBar-list-link{color:#fff!important;font-size:20px!important}a.categoryBar-list-link::before{content:'|'!important;color:#fff!important;font-size:20px!important}a.categoryBar-list-link:after{content:'';position:relative;width:0;bottom:0;display:block;height:3px;border-radius:3px;background-color:#fff}a.categoryBar-list-link:hover:after{width:90%;left:1%;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}span.categoryBar-list-count{display:block!important;color:#fff!important;font-size:20px!important}span.categoryBar-list-count::before{content:'\f02d'!important;padding-right:15px!important}span.categoryBar-list-count::after{padding:5px;display:block!important;color:#fff!important;font-size:20px!important;position:relative;right:-100%}li.categoryBar-list-item:nth-child(1){background:rgba(255,20,200,.6)}li.categoryBar-list-item:nth-child(2){background:rgba(255,40,40,.6)}li.categoryBar-list-item:nth-child(3){background:rgba(112,235,12,.6)}li.categoryBar-list-item:nth-child(4){background:rgba(235,146,12,.6)}li.categoryBar-list-item:nth-child(5){background:rgba(12,135,235,.6)}li.categoryBar-list-item:nth-child(6){background:#425aef88}li.categoryBar-list-item:nth-child(7){background:#ed709b88}li.categoryBar-list-item:nth-child(8){background:#79b8ff}li.categoryBar-list-item:nth-child(9){background:#6d5493}li.categoryBar-list-item:nth-child(10){background:#ed9090}li.categoryBar-list-item:nth-child(11){background:#d9b44f}li.categoryBar-list-item:nth-child(12){background:#1ea4df}li.categoryBar-list-item:nth-child(1)>span::after{content:'3D打印分享'!important}li.categoryBar-list-item:nth-child(2)>span::after{content:'Hexo魔改教程'!important}li.categoryBar-list-item:nth-child(3)>span::after{content:'自己的杂谈和事情'!important}li.categoryBar-list-item:nth-child(4)>span::after{content:'白嫖党万岁!'!important}li.categoryBar-list-item:nth-child(5)>span::after{content:'一些教程'!important}li.categoryBar-list-item:nth-child(6)>span::after{content:'解决一些bug与避坑'!important}li.categoryBar-list-item{width:32.3%!important}@media screen and (max-width:650px){li.categoryBar-list-item{width:48%!important;height:150px!important;margin:5px 1% 0 1%!important}}.categoryBar-list{max-height:380px;overflow:auto}.categoryBar-list::-webkit-scrollbar{width:0!important}@media screen and (max-width:650px){.categoryBar-list{max-height:320px}}#post-comment .comment-head{margin-bottom:20px}#post-comment .comment-head .comment-headline{display:inline-block;vertical-align:middle;font-weight:700;font-size:1.43em}#post-comment .comment-head #comment-switch{display:inline-block;float:right;margin:2px auto 0;padding:4px 16px;width:max-content;border-radius:12px;background:#f6f8fa}#post-comment .comment-head #comment-switch .first-comment{color:#49b1f5}#post-comment .comment-head #comment-switch .second-comment{color:#ff7242}#post-comment .comment-head #comment-switch .switch-btn{position:relative;display:inline-block;margin:-4px 8px 0;width:42px;height:22px;border-radius:34px;background-color:#49b1f5;vertical-align:middle;cursor:pointer;-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;-ms-transition:.4s;transition:.4s}#post-comment .comment-head #comment-switch .switch-btn:before{position:absolute;bottom:4px;left:4px;width:14px;height:14px;border-radius:50%;background-color:#fff;content:'';-webkit-transition:.4s;-moz-transition:.4s;-o-transition:.4s;-ms-transition:.4s;transition:.4s}#post-comment .comment-head #comment-switch .switch-btn.move{background-color:#ff7242}#post-comment .comment-head #comment-switch .switch-btn.move:before{-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-o-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}#post-comment .comment-wrap>div:nth-child(2){display:none}.fixed-card-widget:not(#card-toc){visibility:visible!important;display:block!important;position:fixed!important;bottom:0;left:0;top:0;right:0;margin:auto;margin-bottom:auto!important;margin-top:auto!important;max-width:300px;max-height:500px;width:auto;height:fit-content;z-index:999;-webkit-animation:rotateX .5s ease;-moz-animation:rotateX .5s ease;-o-animation:rotateX .5s ease;-ms-animation:rotateX .5s ease;animation:rotateX .5s ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;-o-animation-fill-mode:forwards;-ms-animation-fill-mode:forwards;animation-fill-mode:forwards}.card-shuo.fixed-card-widget #artitalk_main{max-height:460px;overflow:scroll}.card-shuo.fixed-card-widget #artitalk_main::-webkit-scrollbar{display:none}.card-shuo.fixed-card-widget #operare_artitalk .c2{z-index:1000}.card-tags.fixed-card-widget .card-tag-cloud{max-height:460px;overflow:scroll}.card-tags.fixed-card-widget .card-tag-cloud::-webkit-scrollbar{display:none}@media screen and (max-width:900px){div#fixedcard-dashboard{display:-webkit-box!important;display:-moz-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:box!important;display:flex!important}}div#fixedcard-dashboard{position:fixed;top:150px;width:fit-content;height:40px;opacity:.3;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;display:none;background:rgba(255,255,255,.9);padding:5px 10px;border-top-right-radius:20px;border-bottom-right-radius:20px;z-index:1000}div#fixedcard-dashboard:hover{opacity:1;-ms-filter:none;filter:none}div#fixedcard-dashboard:hover button.fixedcard-activebtn{width:30px;opacity:1;-ms-filter:none;filter:none;pointer-events:all}button.fixedcard-activebtn{width:0;height:30px;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;opacity:0;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:distribute;-moz-box-pack:distribute;-o-box-pack:distribute;-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around;pointer-events:none;color:#757273}.fixedcard-user-avatar{display:inline-block}.fixedcard-user-avatar img.fixedcard-user-avatar-img{width:30px;height:30px;border-radius:50%}[data-theme=dark] div#fixedcard-dashboard{background:rgba(55,55,55,.9)}[data-theme=dark] button.fixedcard-activebtn{color:#bcbdbd}div#quit-box{position:fixed;display:block;left:0;top:0;width:100vh;height:100vh;z-index:99;background:rgba(25,25,25,.3)}[data-theme=dark] div#quit-box{background:rgba(147,146,128,.3)}@-moz-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@-webkit-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@-o-keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}@keyframes rotateX{from{-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-o-transform:rotateX(90deg);-ms-transform:rotateX(90deg);transform:rotateX(90deg)}to{-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-o-transform:rotateX(0);-ms-transform:rotateX(0);transform:rotateX(0)}}.gitcalendar{border:1px solid #ddd;border-radius:3px;min-height:120px;text-align:center;margin:0 auto;border-width:0;width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;display:-webkit-flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.gitcalendar img.spinner{width:70px;margin-top:50px;min-height:70px}.gitcalendar-graph text.month,.gitcalendar-graph text.wday{font-size:10px;fill:#aaa}.contrib-legend{text-align:right;padding:0 14px 10px 0;display:inline-block;float:right}.contrib-legend .legend{display:inline-block;list-style:none;margin:0 5px;position:relative;bottom:-1px;padding:0}.contrib-legend .legend li{display:inline-block;width:10px;height:10px}.text-small{font-size:12px;color:#767676}.gitcalendar-graph{padding:15px 0 0;text-align:center}.contrib-column{text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;font-size:11px}.contrib-column-first{border-left:0}.table-column{padding:10px;display:table-cell;width:33%;vertical-align:top}.contrib-number{font-weight:300;line-height:1.3em;font-size:24px;display:block}.monospace{text-align:center;color:#000}.monospace a{color:#1d75ab;text-decoration:none}.contrib-footer{font-size:11px;padding:0 10px 12px;text-align:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;height:26px}.left.text-muted{float:left;margin-left:9px;color:#767676}.left.text-muted a{color:#4078c0;text-decoration:none}.left.text-muted a:hover,.monospace a:hover{text-decoration:underline}h2.f4.text-normal.mb-3{display:none}.float-left.text-gray{float:left}#user-activity-overview{display:none}.day-tooltip{white-space:nowrap;position:absolute;z-index:99999;padding:10px;font-size:12px;color:#959da5;text-align:center;background:rgba(0,0,0,.85);border-radius:3px;display:none;pointer-events:none}.day-tooltip strong{color:#dfe2e5}.day-tooltip.is-visible{display:block}.day-tooltip:after{position:absolute;bottom:-10px;left:50%;width:5px;height:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 -5px;content:" ";border:5px solid transparent;border-top-color:rgba(0,0,0,.85)}.position-relative{width:100%;padding-left:20px;padding-right:20px}@media screen and (max-width:650px){.contrib-column{display:none}}.angle-wrapper{z-index:9999;display:inline;display:none;width:200px;height:40px;position:relative;padding:5px 0;background:rgba(0,0,0,.8);border-radius:8px;text-align:center;color:#fff}.angle-wrapper span{padding-bottom:1em}.angle-wrapper:before{content:'';width:0;height:0;border:10px solid transparent;border-top-color:rgba(0,0,0,.8);position:absolute;left:47.5%;top:100%}.angle-box{position:fixed;padding:10px}#page-header{position:relative;width:100%;background-color:#49b1f5;background-position:center center;background-size:cover;background-repeat:no-repeat;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#page-header:not(.not-top-img):before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,.3);content:''}#page-header.full_page{height:300px;background-attachment:fixed}#page-header.full_page #site-info{position:absolute;top:43%;padding:0 10px;width:100%}#page-header #scroll-down .scroll-down-effects,#page-header #site-subtitle,#page-header #site-title{text-align:center;text-shadow:2px 2px 4px rgba(0,0,0,.15);line-height:1.5}#page-header #site-title{margin:0;color:var(--white);font-size:1.85em}@media screen and (min-width:768px){#page-header #site-title{font-size:2.85em}}#page-header #site-subtitle{color:var(--light-grey);font-size:1.15em}@media screen and (min-width:768px){#page-header #site-subtitle{font-size:1.72em}}#page-header #site_social_icons{display:none;margin:0 auto;width:300px;text-align:center}@media screen and (max-width:768px){#page-header #site_social_icons{display:block}}#page-header #site_social_icons .social-icon{margin:0 10px;color:var(--light-grey);text-shadow:2px 2px 4px rgba(0,0,0,.15);font-size:1.43em}#page-header #scroll-down{position:absolute;bottom:0;width:100%;cursor:pointer}#page-header #scroll-down .scroll-down-effects{position:relative;width:100%;color:var(--light-grey);font-size:30px}#page-header.not-home-page{height:400px}@media screen and (max-width:768px){#page-header.not-home-page{height:280px}}#page-header #page-site-info{position:absolute;top:200px;padding:0 10px;width:100%}@media screen and (max-width:768px){#page-header #page-site-info{top:140px}}#page-header.post-bg{height:400px}@media screen and (max-width:768px){#page-header.post-bg{height:360px}}#page-header.post-bg:before{background-color:rgba(0,0,0,.5)}#page-header #post-info{position:absolute;bottom:100px;padding:0 8%;width:100%;text-align:center}@media screen and (max-width:900px){#page-header #post-info{bottom:30px;text-align:left}#page-header #post-info .card-widget:not(#card-toc){display:none}}@media screen and (max-width:768px){#page-header #post-info{bottom:100px;padding:0 22px}}#page-header.not-top-img{margin-bottom:10px;height:60px;background:0}#page-header.not-top-img #nav{background:rgba(255,255,255,.6);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6)}#page-header.not-top-img #nav a{color:var(--font-color);text-shadow:none}#page-header.nav-fixed #nav{position:fixed;top:-60px;z-index:91;background:rgba(255,255,255,.6);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6);-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .2s ease-in-out,opacity .2s ease-in-out;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in-out;-ms-transition:-ms-transform .2s ease-in-out,opacity .2s ease-in-out;transition:transform .2s ease-in-out,opacity .2s ease-in-out}#page-header.nav-fixed #nav #site-name,#page-header.nav-fixed #nav #toggle-menu,#page-header.nav-fixed #nav a{color:var(--font-color);text-shadow:none}#page-header.nav-fixed #nav #site-name:hover,#page-header.nav-fixed #nav #toggle-menu:hover,#page-header.nav-fixed #nav a:hover{color:#49b1f5}#page-header.nav-visible #nav{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s;-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-o-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}#page-header.nav-visible+.layout>.aside-content>.sticky_layout{top:70px;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s}#page h1.page-title{margin:8px 0 20px}#post>#post-info{margin-bottom:30px}#post>#post-info .post-title{padding-bottom:4px;border-bottom:1px solid var(--light-grey);color:var(--text-highlight-color)}#post>#post-info .post-title .post-edit-link{float:right}#post>#post-info #post-meta,#post>#post-info #post-meta a{color:#78818a}#post-info .post-title{margin-bottom:8px;color:var(--white);font-weight:400;font-size:2.5em;line-height:1.5;-webkit-line-clamp:3}@media screen and (max-width:768px){#post-info .post-title{font-size:2.1em}}#post-info .post-title .post-edit-link{padding-left:10px}#post-info #post-meta{color:var(--light-grey);font-size:95%}@media screen and (min-width:768px){#post-info #post-meta>.meta-secondline>span:first-child{display:none}}@media screen and (max-width:768px){#post-info #post-meta{font-size:90%}#post-info #post-meta>.meta-firstline,#post-info #post-meta>.meta-secondline{display:inline}}#post-info #post-meta .post-meta-separator{margin:0 5px}#post-info #post-meta .post-meta-icon{margin-right:4px}#post-info #post-meta .post-meta-label{margin-right:4px}#post-info #post-meta a{color:var(--light-grey);-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}#post-info #post-meta a:hover{color:#49b1f5;text-decoration:underline}#nav{position:absolute;top:0;z-index:90;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;padding:0 36px;width:100%;height:60px;font-size:1.3em;opacity:0;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media screen and (max-width:768px){#nav{padding:0 16px}}#nav.show{opacity:1;-ms-filter:none;filter:none}#nav #blog_name{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}#nav #toggle-menu{display:none;padding:2px 0 0 6px;vertical-align:top}#nav #toggle-menu:hover{color:var(--white)}#nav a{color:var(--light-grey)}#nav a:hover{color:var(--white)}#nav #site-name{text-shadow:2px 2px 4px rgba(0,0,0,.15);font-weight:700;cursor:pointer}#nav .menus_items{display:inline}#nav .menus_items .menus_item{position:relative;display:inline-block;padding:0 0 0 14px}#nav .menus_items .menus_item:hover .menus_item_child{display:block}#nav .menus_items .menus_item:hover>a>i:last-child{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}#nav .menus_items .menus_item>a>i:last-child{padding:4px;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#nav .menus_items .menus_item .menus_item_child{position:absolute;right:0;display:none;margin-top:8px;padding:0;width:max-content;background-color:var(--sidebar-bg);-webkit-box-shadow:0 5px 20px -4px rgba(0,0,0,.5);box-shadow:0 5px 20px -4px rgba(0,0,0,.5);-webkit-animation:sub_menus .3s .1s ease both;-moz-animation:sub_menus .3s .1s ease both;-o-animation:sub_menus .3s .1s ease both;-ms-animation:sub_menus .3s .1s ease both;animation:sub_menus .3s .1s ease both;border-radius:5px}#nav .menus_items .menus_item .menus_item_child:before{position:absolute;top:-8px;left:0;width:100%;height:20px;content:''}#nav.hide-menu #toggle-menu{display:inline-block!important}#nav.hide-menu #toggle-menu .site-page{font-size:inherit}#nav.hide-menu .menus_items{display:none}#nav.hide-menu #search-button span{display:none}#nav #search-button{display:inline;padding:0 0 0 14px}#nav .site-page{position:relative;padding-bottom:6px;text-shadow:1px 1px 2px rgba(0,0,0,.3);font-size:.78em;cursor:pointer}#loading-box .loading-left-bg,#loading-box .loading-right-bg,.loading-bg{--lyx-white-acrylic2:rgba(255,255,255,0.667);position:fixed;z-index:1000;width:50%;height:100%;background-color:var(--lyx-white-acrylic2)}#loading-box .loading-right-bg{right:0}#loading-box .spinner-box{position:fixed;z-index:1001;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;width:100%;height:100vh}#loading-box .spinner-box .configure-border-1{position:absolute;padding:3px;width:115px;height:115px;background:#ffab91;-webkit-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-moz-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-o-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;-ms-animation:configure-clockwise 3s ease-in-out 0s infinite alternate;animation:configure-clockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .configure-border-2{left:-115px;padding:3px;width:115px;height:115px;background:#3ff9dc;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-moz-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-o-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;-ms-animation:configure-xclockwise 3s ease-in-out 0s infinite alternate;animation:configure-xclockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .loading-word{position:absolute;color:var(--preloader-color);font-size:16px}#loading-box .spinner-box .configure-core{width:100%;height:100%;background-color:var(--lyx-white-acrylic)}#loading-box.loaded .loading-left-bg{-webkit-transition:all .7s;-moz-transition:all .7s;-o-transition:all .7s;-ms-transition:all .7s;transition:all .7s;opacity:0}#loading-box.loaded .loading-right-bg{-webkit-transition:all .7s;-moz-transition:all .7s;-o-transition:all .7s;-ms-transition:all .7s;transition:all .7s;opacity:0}#loading-box.loaded .spinner-box{display:none}#loading-box.loaded #loadcat{display:none}#loading-box.loadend .loading-left-bg{display:none}#loading-box.loadend .loading-right-bg{display:none}@-moz-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes configure-clockwise{0%{-webkit-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}25%{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@-webkit-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@-o-keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}@keyframes configure-xclockwise{0%{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}25%{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}50%{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-o-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}75%{-webkit-transform:rotate(-225deg);-moz-transform:rotate(-225deg);-o-transform:rotate(-225deg);-ms-transform:rotate(-225deg);transform:rotate(-225deg)}100%{-webkit-transform:rotate(-315deg);-moz-transform:rotate(-315deg);-o-transform:rotate(-315deg);-ms-transform:rotate(-315deg);transform:rotate(-315deg)}}#pagination .pagination{margin-top:20px;text-align:center}#pagination .pagination-info{position:absolute;top:50%;padding:20px 40px;width:100%;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}#pagination .next_info,#pagination .prev_info{color:var(--white);font-weight:500}#pagination .next-post .pagination-info{text-align:right}#pagination .pull-full{width:100%!important}#pagination .next-post .label,#pagination .prev-post .label{color:var(--light-grey);text-transform:uppercase;font-size:90%}#pagination .next-post,#pagination .prev-post{width:50%}@media screen and (max-width:768px){#pagination .next-post,#pagination .prev-post{width:100%}}#pagination .next-post a,#pagination .prev-post a{position:relative;display:block;overflow:hidden;height:150px}#pagination.pagination-post{overflow:hidden;margin-top:40px;width:100%;background:#000}.layout>.recent-posts .pagination>*{display:inline-block;margin:0 6px;width:2.5em;height:2.5em;line-height:2.5em}.layout>.recent-posts .pagination>:not(.space):hover{background:var(--btn-hover-color);color:var(--btn-color)}.layout>div:not(.recent-posts) .pagination .page-number{display:inline-block;margin:0 4px;min-width:24px;height:24px;text-align:center;line-height:24px;cursor:pointer}#article-container{word-wrap:break-word;overflow-wrap:break-word}#article-container a{color:#49b1f5}#article-container a:hover{text-decoration:underline}#article-container img{display:block;margin:0 auto 20px;max-width:100%;-webkit-transition:filter 375ms ease-in .2s;-moz-transition:filter 375ms ease-in .2s;-o-transition:filter 375ms ease-in .2s;-ms-transition:filter 375ms ease-in .2s;transition:filter 375ms ease-in .2s}#article-container p{margin:0 0 16px}#article-container iframe{margin:0 0 20px}#article-container kbd{margin:0 3px;padding:3px 5px;border:1px solid #b4b4b4;border-radius:3px;background-color:#f8f8f8;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25),0 2px 1px 0 rgba(255,255,255,.6) inset;box-shadow:0 1px 3px rgba(0,0,0,.25),0 2px 1px 0 rgba(255,255,255,.6) inset;color:#34495e;white-space:nowrap;font-weight:600;font-size:.9em;font-family:Monaco,'Ubuntu Mono',monospace;line-height:1em}#article-container ol ol,#article-container ol ul,#article-container ul ol,#article-container ul ul{padding-left:20px}#article-container ol li,#article-container ul li{margin:4px 0}#article-container ol p,#article-container ul p{margin:0 0 8px}#article-container.post-content h1,#article-container.post-content h2,#article-container.post-content h3,#article-container.post-content h4,#article-container.post-content h5,#article-container.post-content h6{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;-ms-transition:all .2s ease-out;transition:all .2s ease-out}#article-container.post-content h1:before,#article-container.post-content h2:before,#article-container.post-content h3:before,#article-container.post-content h4:before,#article-container.post-content h5:before,#article-container.post-content h6:before{position:absolute;top:calc(50% - 7px);color:#f47466;content:'\f863';line-height:1;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;-ms-transition:all .2s ease-out;transition:all .2s ease-out}#article-container.post-content h1:hover:before,#article-container.post-content h2:hover:before,#article-container.post-content h3:hover:before,#article-container.post-content h4:hover:before,#article-container.post-content h5:hover:before,#article-container.post-content h6:hover:before{color:#49b1f5}#article-container.post-content h1{padding-left:32px}#article-container.post-content h1:before{margin-left:-26px;font-size:20px}#article-container.post-content h1:hover{padding-left:38px}#article-container.post-content h2{padding-left:30px}#article-container.post-content h2:before{margin-left:-24px;font-size:18px}#article-container.post-content h2:hover{padding-left:36px}#article-container.post-content h3{padding-left:28px}#article-container.post-content h3:before{margin-left:-22px;font-size:16px}#article-container.post-content h3:hover{padding-left:34px}#article-container.post-content h4{padding-left:26px}#article-container.post-content h4:before{margin-left:-20px;font-size:14px}#article-container.post-content h4:hover{padding-left:32px}#article-container.post-content h5{padding-left:24px}#article-container.post-content h5:before{margin-left:-18px;font-size:12px}#article-container.post-content h5:hover{padding-left:30px}#article-container.post-content h6{padding-left:24px}#article-container.post-content h6:before{margin-left:-18px;font-size:12px}#article-container.post-content h6:hover{padding-left:30px}#article-container.post-content ol p,#article-container.post-content ul p{margin:0 0 8px}#article-container.post-content li::marker{color:#49b1f5;font-weight:600;font-size:1.05em}#article-container.post-content li:hover::marker{color:var(--pseudo-hover)}#article-container.post-content ul>li{list-style-type:circle}#article-container>:last-child{margin-bottom:0!important}#post .tag_share:after{display:block;clear:both;content:''}#post .tag_share .post-meta__tag-list{display:inline-block}#post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid #49b1f5;border-radius:12px;color:#49b1f5;font-size:.85em;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#post .tag_share .post-meta__tags:hover{background:#49b1f5;color:var(--white)}#post .tag_share .post_share{display:inline-block;float:right;margin:8px 0 0;width:fit-content}#post .tag_share .post_share .social-share{font-size:.85em}#post .tag_share .post_share .social-share .social-share-icon{margin:0 4px;width:1.85em;height:1.85em;font-size:1.2em;line-height:1.85em}#post .post-copyright{position:relative;margin:2rem 0 .5rem;padding:.5rem .8rem;border:1px solid #c9c9c9;-webkit-transition:box-shadow .3s ease-in-out;-moz-transition:box-shadow .3s ease-in-out;-o-transition:box-shadow .3s ease-in-out;-ms-transition:box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out;overflow:hidden;border-radius:12px!important;background-color:#fff}#post .post-copyright:before{background:var(--heo-post-blockquote-bg);position:absolute;right:-26px;top:-120px;content:'\f25e';font-size:200px;font-family:'Font Awesome 5 Brands';opacity:.2}#post .post-copyright:hover{-webkit-box-shadow:0 0 8px 0 rgba(232,237,250,.6),0 2px 4px 0 rgba(232,237,250,.5);box-shadow:0 0 8px 0 rgba(232,237,250,.6),0 2px 4px 0 rgba(232,237,250,.5)}#post .post-copyright .post-copyright-meta{color:#f05011;font-weight:700}#post .post-copyright .post-copyright-info{padding-left:.3rem}#post .post-copyright .post-copyright-info a{text-decoration:none;word-break:break-word}#post .post-copyright .post-copyright-info a:hover{text-decoration:none}#post .post-copyright-cc-info{color:#49b1f5}#post .post-outdate-notice{position:relative;margin:0 0 1rem;padding:.5em 1.2em;border-radius:15px;background-color:#ffe6e6;color:#f66;padding:.5em 1em .5em 2.6em;border-left:5px solid #ff8080}#post .post-outdate-notice:before{position:absolute;top:50%;left:.9em;color:#ff8080;content:'\f071';-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}#post .ads-wrap{margin:40px 0}.relatedPosts{margin-top:40px}.relatedPosts>.headline{margin-bottom:5px;font-weight:700;font-size:1.43em}.relatedPosts>.relatedPosts-list>div{position:relative;display:inline-block;overflow:hidden;margin:3px;width:calc(33.333% - 6px);height:200px;background:#000;vertical-align:bottom}@media screen and (max-width:768px){.relatedPosts>.relatedPosts-list>div{margin:2px;width:calc(50% - 4px);height:150px}}@media screen and (max-width:600px){.relatedPosts>.relatedPosts-list>div{width:calc(100% - 4px)}}.relatedPosts>.relatedPosts-list .content{position:absolute;top:50%;padding:0 20px;width:100%;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.relatedPosts>.relatedPosts-list .content .date{color:var(--light-grey);font-size:90%}.relatedPosts>.relatedPosts-list .content .title{color:var(--white);-webkit-line-clamp:2}.post-reward{position:relative;margin-top:80px;width:100%;text-align:center;pointer-events:none}.post-reward>*{pointer-events:auto}.post-reward .reward-button{display:inline-block;padding:4px 24px;background:var(--btn-bg);color:var(--btn-color);cursor:pointer}.post-reward:hover .reward-button{background:var(--btn-hover-color)}.post-reward:hover>.reward-main{display:block}.post-reward .reward-main{position:absolute;bottom:40px;left:0;z-index:100;display:none;padding:0 0 15px;width:100%}.post-reward .reward-main .reward-all{display:inline-block;margin:0;padding:20px 10px;border-radius:4px;background:var(--reward-pop)}.post-reward .reward-main .reward-all:before{position:absolute;bottom:-10px;left:0;width:100%;height:20px;content:''}.post-reward .reward-main .reward-all:after{position:absolute;right:0;bottom:2px;left:0;margin:0 auto;width:0;height:0;border-top:13px solid var(--reward-pop);border-right:13px solid transparent;border-left:13px solid transparent;content:''}.post-reward .reward-main .reward-all .reward-item{display:inline-block;padding:0 8px;list-style-type:none;vertical-align:top}.post-reward .reward-main .reward-all .reward-item img{width:130px;height:130px}.post-reward .reward-main .reward-all .reward-item .post-qr-code-desc{width:130px;color:#858585}#rightside #rightside-config-hide{height:0;opacity:0;-webkit-transition:-webkit-transform .4s;-moz-transition:-moz-transform .4s;-o-transition:-o-transform .4s;-ms-transition:-ms-transform .4s;transition:transform .4s;-webkit-transform:translate(45px,0);-moz-transform:translate(45px,0);-o-transform:translate(45px,0);-ms-transform:translate(45px,0);transform:translate(45px,0)}#rightside #rightside-config-hide.show{height:auto;opacity:1;-ms-filter:none;filter:none;-webkit-transform:translate(0,0);-moz-transform:translate(0,0);-o-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}#rightside #rightside-config-hide.status{height:auto;opacity:1;-ms-filter:none;filter:none}#rightside>div>a:hover,#rightside>div>button:hover{background-color:var(--btn-hover-color)}#rightside #mobile-toc-button{display:none}@media screen and (max-width:900px){#rightside #mobile-toc-button{display:block}#rightside #mobile-toc-button .card-widget:not(#card-toc){display:none}}@media screen and (max-width:900px){#rightside #hide-aside-btn{display:none}#rightside .card-widget:not(#card-toc){display:none}}#sidebar #menu-mask{position:fixed;z-index:102;display:none;width:100%;height:100%;background:rgba(0,0,0,.8)}#sidebar #sidebar-menus.open{-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#sidebar #sidebar-menus>.avatar-img{margin:20px auto}#sidebar #sidebar-menus .sidebar-site-data{padding:0 10px}#sidebar #sidebar-menus hr{margin:20px auto}#sidebar #sidebar-menus .menus_items{padding:0 10px 40px}#sidebar #sidebar-menus .menus_items .site-page{position:relative;display:block;padding:6px 30px 6px 22px;color:var(--font-color);font-size:1.15em}#sidebar #sidebar-menus .menus_items .site-page:hover{background:#f05011}#sidebar #sidebar-menus .menus_items .site-page i:first-child{width:15%;text-align:left}#sidebar #sidebar-menus .menus_items .site-page.group>i:last-child{position:absolute;top:.78em;right:18px;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;-o-transition:-o-transform .3s;-ms-transition:-ms-transform .3s;transition:transform .3s}#sidebar #sidebar-menus .menus_items .site-page.group.hide>i:last-child{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}#sidebar #sidebar-menus .menus_items .site-page.group.hide+.menus_item_child{display:none}#sidebar #sidebar-menus .menus_items .menus_item_child{margin:0;list-style:none}#vcomment{font-size:1.1em}#vcomment .vbtn{border:none;background:var(--btn-bg);color:var(--btn-color)}#vcomment .vbtn:hover{background:var(--btn-hover-color)}#vcomment .vimg{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}#vcomment .vimg:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}#vcomment .vcards .vcard .vcontent.expand:after,#vcomment .vcards .vcard .vcontent.expand:before{z-index:22}#waline-wrap{--waline-font-size:1.1em;--waline-theme-color:#49b1f5;--waline-active-color:#ff7242}#waline-wrap .vuser{-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#waline-wrap .vuser:hover{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.fireworks{position:fixed;top:0;left:0;z-index:-1;pointer-events:none}.medium-zoom-image--opened{z-index:99999!important;margin:0!important}.medium-zoom-overlay{z-index:99999!important}.mermaid-wrap{margin:0 0 20px;text-align:center}.mermaid-wrap>svg{height:100%}.fb-comments iframe,.utterances{width:100%!important}#gitalk-container .gt-meta{margin:0 0 .8em;padding:6px 0 16px}.katex-wrap{overflow:auto}.katex-wrap::-webkit-scrollbar{display:none}.has-jax,mjx-container[display]{overflow-x:auto;overflow-y:hidden;line-height:normal!important}.aplayer{color:#4c4948}#article-container .aplayer{margin:0 0 20px}#article-container .aplayer ol,#article-container .aplayer ul{margin:0;padding:0}#article-container .aplayer ol li,#article-container .aplayer ul li{margin:0;padding:0 15px}#article-container .aplayer ol li:before,#article-container .aplayer ul li:before{content:none}.snackbar-css{border-radius:5px!important}#article-container .btn-center{margin:0 0 20px;text-align:center}#article-container .btn-beautify{display:inline-block;margin:0 4px 6px;padding:0 15px;background-color:var(--btn-beautify-color,#777);color:#fff;line-height:2}#article-container .btn-beautify.blue{--btn-beautify-color:#428bca}#article-container .btn-beautify.pink{--btn-beautify-color:#ff69b4}#article-container .btn-beautify.red{--btn-beautify-color:#f00}#article-container .btn-beautify.purple{--btn-beautify-color:#6f42c1}#article-container .btn-beautify.orange{--btn-beautify-color:#ff8c00}#article-container .btn-beautify.green{--btn-beautify-color:#5cb85c}#article-container .btn-beautify:hover{background-color:var(--btn-hover-color)}#article-container .btn-beautify i+span{margin-left:6px}#article-container .btn-beautify:not(.block)+.btn-beautify:not(.block){margin:0 4px 20px}#article-container .btn-beautify.block{display:block;margin:0 0 20px;width:fit-content;width:-moz-fit-content}#article-container .btn-beautify.block.center{margin:0 auto 20px}#article-container .btn-beautify.block.right{margin:0 0 20px auto}#article-container .btn-beautify.larger{padding:6px 15px}#article-container .btn-beautify:hover{text-decoration:none}#article-container .btn-beautify.outline{border:1px solid transparent;border-color:var(--btn-beautify-color,#777);background-color:transparent;color:var(--btn-beautify-color,#777)}#article-container .btn-beautify.outline:hover{background-color:var(--btn-beautify-color,#777)}#article-container .btn-beautify.outline:hover{color:#fff!important}#article-container figure.gallery-group{position:relative;float:left;overflow:hidden;margin:6px 4px;width:calc(50% - 8px);height:250px;border-radius:12px;background:#000;-webkit-transform:translate3d(0,0,0)}@media screen and (max-width:600px){#article-container figure.gallery-group{width:calc(100% - 8px)}}#article-container figure.gallery-group:hover img{opacity:.4;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group:hover .gallery-group-name::after{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group:hover p{opacity:1;-ms-filter:none;filter:none;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}#article-container figure.gallery-group img{position:relative;margin:0;max-width:none;width:calc(100% + 20px);height:250px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;opacity:.8;-webkit-transition:all .3s,filter 375ms ease-in .2s;-moz-transition:all .3s,filter 375ms ease-in .2s;-o-transition:all .3s,filter 375ms ease-in .2s;-ms-transition:all .3s,filter 375ms ease-in .2s;transition:all .3s,filter 375ms ease-in .2s;-webkit-transform:translate3d(-10px,0,0);-moz-transform:translate3d(-10px,0,0);-o-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0);object-fit:cover}#article-container figure.gallery-group figcaption{position:absolute;top:0;left:0;padding:30px;width:100%;height:100%;color:#fff;text-transform:uppercase;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}#article-container figure.gallery-group figcaption>a{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;opacity:0}#article-container figure.gallery-group p{margin:0;padding:8px 0 0;letter-spacing:1px;font-size:1.1em;line-height:1.5;opacity:0;-webkit-transition:opacity .35s,-webkit-transform .35s;-moz-transition:opacity .35s,-moz-transform .35s;-o-transition:opacity .35s,-o-transform .35s;-ms-transition:opacity .35s,-ms-transform .35s;transition:opacity .35s,transform .35s;-webkit-transform:translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-line-clamp:4}#article-container figure.gallery-group .gallery-group-name{position:relative;margin:0;padding:8px 0;font-weight:700;font-size:1.65em;line-height:1.5;-webkit-line-clamp:2}#article-container figure.gallery-group .gallery-group-name:after{position:absolute;bottom:0;left:0;width:100%;height:2px;background:#fff;content:'';-webkit-transition:-webkit-transform .35s;-moz-transition:-moz-transform .35s;-o-transition:-o-transform .35s;-ms-transition:-ms-transform .35s;transition:transform .35s;-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}#article-container .gallery-group-main{overflow:auto;padding:0 0 16px}#article-container .fj-gallery{margin:0 0 16px;opacity:0}#article-container .fj-gallery .img-alt{display:none}blockquote.pullquote{position:relative;max-width:45%;font-size:110%}blockquote.pullquote.left{float:left;margin:1em .5em 0 0}blockquote.pullquote.right{float:right;margin:1em 0 0 .5em}.video-container{position:relative;overflow:hidden;margin-bottom:16px;padding-top:56.25%;height:0}.video-container iframe{position:absolute;top:0;left:0;margin-top:0;width:100%;height:100%}.hide-block>.hide-button,.hide-inline>.hide-button{display:inline-block;padding:5px 18px;background:#49b1f5;color:var(--white)}.hide-block>.hide-button:hover,.hide-inline>.hide-button:hover{background-color:var(--btn-hover-color)}.hide-block>.hide-button.open,.hide-inline>.hide-button.open{display:none}.hide-block>.hide-button.open+div,.hide-inline>.hide-button.open+div{display:block}.hide-block>.hide-button.open+span,.hide-inline>.hide-button.open+span{display:inline}.hide-block>.hide-content,.hide-inline>.hide-content{display:none}.hide-inline>.hide-button{margin:0 6px}.hide-inline>.hide-content{margin:0 6px}.hide-block{margin:0 0 16px}.toggle{margin-bottom:20px;border:1px solid #f0f0f0}.toggle>.toggle-button{padding:6px 15px;background:#f0f0f0;color:#1f2d3d;cursor:pointer}.toggle>.toggle-content{margin:30px 24px}#article-container .inline-img{display:inline;margin:0 3px;height:1.1em;vertical-align:text-bottom}.hl-label{padding:2px 4px;border-radius:3px;color:#fff}.hl-label.default{background-color:#777}.hl-label.blue{background-color:#428bca}.hl-label.pink{background-color:#ff69b4}.hl-label.red{background-color:red}.hl-label.purple{background-color:#6f42c1}.hl-label.orange{background-color:#ff8c00}.hl-label.green{background-color:#5cb85c}.note{position:relative;margin:0 0 20px;padding:15px;border-radius:5px}.note.icon{padding-left:3em}.note>.note-icon{position:absolute;top:calc(50% - .5em);left:.8em;font-size:larger}.note.blue:not(.disabled){border-left-color:#428bca!important}.note.blue:not(.disabled).modern{border-left-color:transparent!important;color:#428bca}.note.blue:not(.disabled):not(.simple){background:#e3eef7!important}.note.blue>.note-icon{color:#428bca}.note.pink:not(.disabled){border-left-color:#ff69b4!important}.note.pink:not(.disabled).modern{border-left-color:transparent!important;color:#ff69b4}.note.pink:not(.disabled):not(.simple){background:#ffe9f4!important}.note.pink>.note-icon{color:#ff69b4}.note.red:not(.disabled){border-left-color:red!important}.note.red:not(.disabled).modern{border-left-color:transparent!important;color:red}.note.red:not(.disabled):not(.simple){background:#ffd9d9!important}.note.red>.note-icon{color:red}.note.purple:not(.disabled){border-left-color:#6f42c1!important}.note.purple:not(.disabled).modern{border-left-color:transparent!important;color:#6f42c1}.note.purple:not(.disabled):not(.simple){background:#e9e3f6!important}.note.purple>.note-icon{color:#6f42c1}.note.orange:not(.disabled){border-left-color:#ff8c00!important}.note.orange:not(.disabled).modern{border-left-color:transparent!important;color:#ff8c00}.note.orange:not(.disabled):not(.simple){background:#ffeed9!important}.note.orange>.note-icon{color:#ff8c00}.note.green:not(.disabled){border-left-color:#5cb85c!important}.note.green:not(.disabled).modern{border-left-color:transparent!important;color:#5cb85c}.note.green:not(.disabled):not(.simple){background:#e7f4e7!important}.note.green>.note-icon{color:#5cb85c}.note.simple{border:1px solid #eee;border-left-width:5px}.note.modern{border:1px solid transparent!important;background-color:#f5f5f5;color:#4c4948}.note.flat{border:initial;border-left:5px solid #eee;background-color:#f9f9f9;color:#4c4948}.note h2,.note h3,.note h4,.note h5,.note h6{margin-top:3px;margin-bottom:0;padding-top:0!important;border-bottom:initial}.note blockquote:first-child,.note img:first-child,.note ol:first-child,.note p:first-child,.note pre:first-child,.note table:first-child,.note ul:first-child{margin-top:0!important}.note blockquote:last-child,.note img:last-child,.note ol:last-child,.note p:last-child,.note pre:last-child,.note table:last-child,.note ul:last-child{margin-bottom:0!important}.note:not(.no-icon){padding-left:3em}.note:not(.no-icon)::before{position:absolute;top:calc(50% - .95em);left:.8em;font-size:larger}.note.default.flat{background:#f7f7f7}.note.default.modern{border-color:#e1e1e1;background:#f3f3f3;color:#666}.note.default.modern a:not(.btn){color:#666}.note.default.modern a:not(.btn):hover{color:#454545}.note.default:not(.modern){border-left-color:#777}.note.default:not(.modern) h2,.note.default:not(.modern) h3,.note.default:not(.modern) h4,.note.default:not(.modern) h5,.note.default:not(.modern) h6{color:#777}.note.default:not(.no-icon)::before{content:'\f0a9'}.note.default:not(.no-icon):not(.modern)::before{color:#777}.note.primary.flat{background:#f5f0fa}.note.primary.modern{border-color:#e1c2ff;background:#f3daff;color:#6f42c1}.note.primary.modern a:not(.btn){color:#6f42c1}.note.primary.modern a:not(.btn):hover{color:#453298}.note.primary:not(.modern){border-left-color:#6f42c1}.note.primary:not(.modern) h2,.note.primary:not(.modern) h3,.note.primary:not(.modern) h4,.note.primary:not(.modern) h5,.note.primary:not(.modern) h6{color:#6f42c1}.note.primary:not(.no-icon)::before{content:'\f055'}.note.primary:not(.no-icon):not(.modern)::before{color:#6f42c1}.note.info.flat{background:#eef7fa}.note.info.modern{border-color:#b3e5ef;background:#d9edf7;color:#31708f}.note.info.modern a:not(.btn){color:#31708f}.note.info.modern a:not(.btn):hover{color:#215761}.note.info:not(.modern){border-left-color:#428bca}.note.info:not(.modern) h2,.note.info:not(.modern) h3,.note.info:not(.modern) h4,.note.info:not(.modern) h5,.note.info:not(.modern) h6{color:#428bca}.note.info:not(.no-icon)::before{content:'\f05a'}.note.info:not(.no-icon):not(.modern)::before{color:#428bca}.note.success.flat{background:#eff8f0}.note.success.modern{border-color:#d0e6be;background:#dff0d8;color:#3c763d}.note.success.modern a:not(.btn){color:#3c763d}.note.success.modern a:not(.btn):hover{color:#32562c}.note.success:not(.modern){border-left-color:#5cb85c}.note.success:not(.modern) h2,.note.success:not(.modern) h3,.note.success:not(.modern) h4,.note.success:not(.modern) h5,.note.success:not(.modern) h6{color:#5cb85c}.note.success:not(.no-icon)::before{content:'\f058'}.note.success:not(.no-icon):not(.modern)::before{color:#5cb85c}.note.warning.flat{background:#fdf8ea}.note.warning.modern{border-color:#fae4cd;background:#fcf4e3;color:#8a6d3b}.note.warning.modern a:not(.btn){color:#8a6d3b}.note.warning.modern a:not(.btn):hover{color:#714f30}.note.warning:not(.modern){border-left-color:#f0ad4e}.note.warning:not(.modern) h2,.note.warning:not(.modern) h3,.note.warning:not(.modern) h4,.note.warning:not(.modern) h5,.note.warning:not(.modern) h6{color:#f0ad4e}.note.warning:not(.no-icon)::before{content:'\f06a'}.note.warning:not(.no-icon):not(.modern)::before{color:#f0ad4e}.note.danger.flat{background:#fcf1f2}.note.danger.modern{border-color:#ebcdd2;background:#f2dfdf;color:#a94442}.note.danger.modern a:not(.btn){color:#a94442}.note.danger.modern a:not(.btn):hover{color:#84333f}.note.danger:not(.modern){border-left-color:#d9534f}.note.danger:not(.modern) h2,.note.danger:not(.modern) h3,.note.danger:not(.modern) h4,.note.danger:not(.modern) h5,.note.danger:not(.modern) h6{color:#d9534f}.note.danger:not(.no-icon)::before{content:'\f056'}.note.danger:not(.no-icon):not(.modern)::before{color:#d9534f}#article-container .tabs{position:relative;margin:0 0 20px;border-right:1px solid var(--tab-border-color);border-bottom:1px solid var(--tab-border-color);border-left:1px solid var(--tab-border-color)}#article-container .tabs>.nav-tabs{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;background:var(--tab-botton-bg)}#article-container .tabs>.nav-tabs>.tab{margin:0;padding:0;list-style:none}@media screen and (max-width:768px){#article-container .tabs>.nav-tabs>.tab{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;-ms-box-flex:1;box-flex:1;-webkit-flex-grow:1;flex-grow:1}}#article-container .tabs>.nav-tabs>.tab button{display:block;padding:8px 18px;width:100%;border-top:2px solid var(--tab-border-color);background:var(--tab-botton-bg);color:var(--tab-botton-color);line-height:2;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s}#article-container .tabs>.nav-tabs>.tab button i{width:1.5em}#article-container .tabs>.nav-tabs>.tab.active button{border-top:2px solid #49b1f5;background:var(--tab-button-active-bg);cursor:default}#article-container .tabs>.nav-tabs>.tab:not(.active) button:hover{border-top:2px solid var(--tab-button-hover-bg);background:var(--tab-button-hover-bg)}#article-container .tabs>.tab-contents .tab-item-content{position:relative;display:none;padding:36px 24px}@media screen and (max-width:768px){#article-container .tabs>.tab-contents .tab-item-content{padding:24px 14px}}#article-container .tabs>.tab-contents .tab-item-content.active{display:block;-webkit-animation:tabshow .5s;-moz-animation:tabshow .5s;-o-animation:tabshow .5s;-ms-animation:tabshow .5s;animation:tabshow .5s}#article-container .tabs .tab-to-top{position:relative;display:block;margin:0 0 0 auto;color:#99a9bf}@-moz-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@-o-keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}@keyframes tabshow{0%{-webkit-transform:translateY(15px);-moz-transform:translateY(15px);-o-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px)}100%{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}#article-container .timeline{margin:0 0 20px 10px;padding:14px 20px 5px;border-left:2px solid var(--timeline-color,#49b1f5)}#article-container .timeline.blue{--timeline-color:#428bca;--timeline-bg:rgba(66,139,202, 0.2)}#article-container .timeline.pink{--timeline-color:#ff69b4;--timeline-bg:rgba(255,105,180, 0.2)}#article-container .timeline.red{--timeline-color:#f00;--timeline-bg:rgba(255,0,0, 0.2)}#article-container .timeline.purple{--timeline-color:#6f42c1;--timeline-bg:rgba(111,66,193, 0.2)}#article-container .timeline.orange{--timeline-color:#ff8c00;--timeline-bg:rgba(255,140,0, 0.2)}#article-container .timeline.green{--timeline-color:#5cb85c;--timeline-bg:rgba(92,184,92, 0.2)}#article-container .timeline .timeline-item{margin:0 0 15px}#article-container .timeline .timeline-item:hover .item-circle:before{border-color:var(--timeline-color,#49b1f5)}#article-container .timeline .timeline-item.headline .timeline-item-title .item-circle>p{font-weight:600;font-size:1.2em}#article-container .timeline .timeline-item.headline .timeline-item-title .item-circle:before{left:-28px;border:4px solid var(--timeline-color,#49b1f5)}#article-container .timeline .timeline-item.headline:hover .item-circle:before{border-color:var(--pseudo-hover)}#article-container .timeline .timeline-item .timeline-item-title{position:relative}#article-container .timeline .timeline-item .item-circle:before{position:absolute;top:50%;left:-27px;width:6px;height:6px;border:3px solid var(--pseudo-hover);border-radius:50%;background:var(--card-bg);content:'';-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s;-webkit-transform:translate(0,-50%);-moz-transform:translate(0,-50%);-o-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}#article-container .timeline .timeline-item .item-circle>p{margin:0 0 8px;font-weight:500}#article-container .timeline .timeline-item .timeline-item-content{position:relative;padding:12px 15px;border-radius:12px;background:var(--timeline-bg,#e4f3fd);font-size:.93em}#article-container .timeline .timeline-item .timeline-item-content>:last-child{margin-bottom:0}#article-container .timeline+.timeline{margin-top:-20px}[data-theme=dark]{--global-bg:#0d0d0d;--font-color:rgba(255,255,255,0.7);--hr-border:rgba(255,255,255,0.4);--hr-before-color:rgba(255,255,255,0.7);--search-bg:#121212;--search-input-color:rgba(255,255,255,0.7);--search-result-title:rgba(255,255,255,0.9);--preloader-bg:#0d0d0d;--preloader-color:rgba(255,255,255,0.7);--tab-border-color:#2c2c2c;--tab-botton-bg:#2c2c2c;--tab-botton-color:rgba(255,255,255,0.7);--tab-button-hover-bg:#383838;--tab-button-active-bg:#121212;--card-bg:#121212;--sidebar-bg:#121212;--btn-hover-color:#787878;--btn-color:rgba(255,255,255,0.7);--btn-bg:#1f1f1f;--text-bg-hover:#383838;--light-grey:rgba(255,255,255,0.7);--dark-grey:rgba(255,255,255,0.2);--white:rgba(255,255,255,0.9);--text-highlight-color:rgba(255,255,255,0.9);--blockquote-color:rgba(255,255,255,0.7);--blockquote-bg:#2c2c2c;--reward-pop:#2c2c2c;--toc-link-color:rgba(255,255,255,0.6);--hl-color:rgba(255,255,255,0.7);--hl-bg:#171717;--hltools-bg:#1a1a1a;--hltools-color:#90a4ae;--hlnumber-bg:#171717;--hlnumber-color:rgba(255,255,255,0.4);--hlscrollbar-bg:#1f1f1f;--hlexpand-bg:linear-gradient(180deg, rgba(23,23,23,0.6), rgba(23,23,23,0.9));--scrollbar-color:#1f1f1f;--timeline-bg:#1f1f1f}[data-theme=dark] #post{background-color:#0d0d0d}[data-theme=dark] #article-container code{background:#2c2c2c}[data-theme=dark] #article-container pre>code{background:#171717}[data-theme=dark] #article-container figure.highlight{-webkit-box-shadow:none;box-shadow:none}[data-theme=dark] #article-container .note code{background:rgba(27,31,35,.05)}[data-theme=dark] #article-container .aplayer{filter:brightness(.8)}[data-theme=dark] #article-container kbd{border-color:#696969;background-color:#525252;color:#e2f1ff}[data-theme=dark] #page-header.nav-fixed>#nav,[data-theme=dark] #page-header.not-top-img>#nav{background:rgba(18,18,18,.8);-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,0);box-shadow:0 5px 6px -5px rgba(133,133,133,0)}[data-theme=dark] #post-comment #comment-switch{background:#2c2c2c!important}[data-theme=dark] #post-comment #comment-switch .switch-btn{filter:brightness(.8)}[data-theme=dark] .note{filter:brightness(.8)}[data-theme=dark] #article-container iframe,[data-theme=dark] .ads-wrap,[data-theme=dark] .btn-beautify,[data-theme=dark] .error-img,[data-theme=dark] .gist,[data-theme=dark] .hide-button,[data-theme=dark] .hl-label,[data-theme=dark] .post-outdate-notice{filter:brightness(.8)}[data-theme=dark] img{filter:brightness(.8)}[data-theme=dark] #aside-content .aside-list>.aside-list-item:not(:last-child){border-bottom:1px dashed rgba(255,255,255,.1)}[data-theme=dark] #gitalk-container{filter:brightness(.8)}[data-theme=dark] #gitalk-container svg{fill:rgba(255,255,255,.9)!important}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-no-comment,[data-theme=dark] #disqus_thread #dsqjs .dsqjs-tab-active{color:rgba(255,255,255,.7)}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-order-label{background-color:#1f1f1f}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body{color:rgba(255,255,255,.7)}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body code,[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body pre{background:#2c2c2c}[data-theme=dark] #disqus_thread #dsqjs .dsqjs-post-body blockquote{color:rgba(255,255,255,.7)}[data-theme=dark] #artitalk_main #lazy{background:#121212}[data-theme=dark] #operare_artitalk .c2{background:#121212}@media screen and (max-width:900px){[data-theme=dark] #card-toc{background:#1f1f1f}[data-theme=dark] #card-toc .card-widget:not(#card-toc){display:none}}.read-mode{--font-color:#4c4948;--readmode-light-color:#fff;--white:#4c4948;--light-grey:#4c4948;--gray:#d6dbdf;--hr-border:#d6dbdf;--hr-before-color:#b9c2c9;--highlight-bg:#f7f7f7;--exit-btn-bg:#c0c0c0;--exit-btn-color:#fff;--exit-btn-hover:#8d8d8d;--pseudo-hover:none}[data-theme=dark] .read-mode{--font-color:rgba(255,255,255,0.7);--readmode-light-color:#0d0d0d;--white:rgba(255,255,255,0.9);--light-grey:rgba(255,255,255,0.7);--gray:rgba(255,255,255,0.7);--hr-border:rgba(255,255,255,0.5);--hr-before-color:rgba(255,255,255,0.7);--highlight-bg:#171717;--exit-btn-bg:#1f1f1f;--exit-btn-color:rgba(255,255,255,0.9);--exit-btn-hover:#525252}.read-mode{background:var(--readmode-light-color)}.read-mode .exit-readmode{position:fixed;top:30px;right:30px;z-index:100;width:40px;height:40px;border-radius:12px;background:var(--exit-btn-bg);color:var(--exit-btn-color);font-size:16px;-webkit-transition:background .3s;-moz-transition:background .3s;-o-transition:background .3s;-ms-transition:background .3s;transition:background .3s}@media screen and (max-width:768px){.read-mode .exit-readmode{top:initial;bottom:30px}}.read-mode .exit-readmode:hover{background:var(--exit-btn-hover)}.read-mode #aside-content{display:none}.read-mode #page-header.post-bg{background-color:transparent;background-image:none!important}.read-mode #page-header.post-bg:before{opacity:0}.read-mode #page-header.post-bg>#post-info{text-align:center}.read-mode #post{margin:0 auto;background:0 0;-webkit-box-shadow:none;box-shadow:none}.read-mode #post:hover{-webkit-box-shadow:none;box-shadow:none}.read-mode>canvas{display:none!important}.read-mode #footer,.read-mode #nav,.read-mode #post>:not(#post-info):not(.post-content),.read-mode #rightside,.read-mode #web_bg,.read-mode .highlight-tools,.read-mode .not-top-img,.read-mode .post-outdate-notice{display:none!important}.read-mode #article-container a{color:#99a9bf}.read-mode #article-container .highlight:not(.js-file-line-container),.read-mode #article-container pre{background:var(--highlight-bg)!important}.read-mode #article-container .highlight:not(.js-file-line-container) *,.read-mode #article-container pre *{color:var(--font-color)!important}.read-mode #article-container figure.highlight{border-radius:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.read-mode #article-container figure.highlight>:not(.highlight-tools){display:block!important}.read-mode #article-container figure.highlight .line:before{color:var(--font-color)!important}.read-mode #article-container figure.highlight .hljs{background:var(-highlight-bg)!important}.read-mode #article-container h1,.read-mode #article-container h2,.read-mode #article-container h3,.read-mode #article-container h4,.read-mode #article-container h5,.read-mode #article-container h6{padding:0}.read-mode #article-container h1:before,.read-mode #article-container h2:before,.read-mode #article-container h3:before,.read-mode #article-container h4:before,.read-mode #article-container h5:before,.read-mode #article-container h6:before{content:''}.read-mode #article-container h1:hover,.read-mode #article-container h2:hover,.read-mode #article-container h3:hover,.read-mode #article-container h4:hover,.read-mode #article-container h5:hover,.read-mode #article-container h6:hover{padding:0}.read-mode #article-container li:hover:before,.read-mode #article-container ol:hover:before,.read-mode #article-container ul:hover:before{-webkit-transform:none!important;-moz-transform:none!important;-o-transform:none!important;-ms-transform:none!important;transform:none!important}.read-mode #article-container li:before,.read-mode #article-container ol:before{background:0 0!important;color:var(--font-color)!important}.read-mode #article-container ul>li:before{border-color:var(--gray)!important}.read-mode #article-container .tabs{border:2px solid var(--tab-border-color)}.read-mode #article-container .tabs>.nav-tabs{background:0 0}.read-mode #article-container .tabs>.nav-tabs>.tab{border-bottom:0}.read-mode #article-container .tabs>.nav-tabs>.tab button{border-top:none!important;background:0 0}.read-mode #article-container .tabs>.nav-tabs>.tab button:hover{background:0 0!important}.read-mode #article-container .tabs>.nav-tabs>.tab.active button{text-decoration:underline}.read-mode #article-container .tabs>.tab-contents .tab-item-content.active{-webkit-animation:none;-moz-animation:none;-o-animation:none;-ms-animation:none;animation:none}.read-mode #article-container code{color:var(--font-color)}.read-mode #article-container blockquote{border-color:var(--gray);background-color:var(--readmode-light-color)}.read-mode #article-container kbd{border:1px solid var(--gray);background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:var(--font-color)}.read-mode #article-container .hide-toggle{border:1px solid var(--gray)!important}.read-mode #article-container .btn-beautify,.read-mode #article-container .hide-button,.read-mode #article-container .hl-label{border:1px solid var(--gray)!important;background:var(--readmode-light-color)!important;color:var(--font-color)!important}.read-mode #article-container .note{border:2px solid var(--gray);border-left-color:var(--gray)!important;filter:none;background-color:var(--readmode-light-color)!important;color:var(--font-color)}.read-mode #article-container .note .note-icon,.read-mode #article-container .note:before{color:var(--font-color)}.search-dialog{position:fixed;top:10%;left:50%;z-index:1001;display:none;margin-left:-300px;padding:20px;width:600px;border-radius:12px;background:var(--search-bg)}@media screen and (max-width:768px){.search-dialog{top:0;left:0;margin:0;width:100%;height:100%;border-radius:0}}.search-dialog hr{margin:20px auto}.search-dialog .search-nav{margin:0 0 14px;color:#49b1f5;font-size:1.4em;line-height:1}.search-dialog .search-nav .search-dialog-title{margin-right:10px}.search-dialog .search-nav .search-close-button{float:right;color:#858585;-webkit-transition:color .2s ease-in-out;-moz-transition:color .2s ease-in-out;-o-transition:color .2s ease-in-out;-ms-transition:color .2s ease-in-out;transition:color .2s ease-in-out}.search-dialog .search-nav .search-close-button:hover{color:#49b1f5}#search-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:none;background:rgba(0,0,0,.6)}#local-search .search-dialog .local-search-box{margin:0 auto;max-width:100%;width:100%}#local-search .search-dialog .local-search-box input{padding:5px 14px;width:100%;outline:0;border:2px solid #49b1f5;border-radius:40px;background:var(--search-bg);color:var(--search-input-color);-webkit-appearance:none}#local-search .search-dialog .search-wrap{display:none}#local-search .search-dialog .local-search__hit-item{position:relative;padding-left:24px;line-height:1.7}#local-search .search-dialog .local-search__hit-item:hover:before{border-color:var(--pseudo-hover)}#local-search .search-dialog .local-search__hit-item:before{position:absolute;top:.45em;left:0;width:.5em;height:.5em;border:3px solid #49b1f5;border-radius:.5em;background:0 0;content:'';line-height:.5em;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#local-search .search-dialog .local-search__hit-item a{display:block;color:var(--search-result-title);font-weight:600;cursor:pointer}#local-search .search-dialog .local-search__hit-item a:hover{color:#49b1f5}#local-search .search-dialog .local-search__hit-item .search-result{margin:0 8px 8px 0;word-break:break-all}#local-search .search-dialog .local-search__hit-item .search-keyword{color:#f47466;font-weight:700}#local-search .search-dialog .search-result-list{overflow-y:auto;max-height:calc(80vh - 130px)}@media screen and (max-width:768px){#local-search .search-dialog .search-result-list{padding-bottom:40px;max-height:75vh!important}} \ No newline at end of file diff --git a/self/css/researchblog.css b/self/css/researchblog.css index e9df125fa..3785d5e3f 100644 --- a/self/css/researchblog.css +++ b/self/css/researchblog.css @@ -1 +1 @@ -#nav{display:flex;padding:0 36px;width:100%;height:60px;box-shadow:none!important;border-bottom:1px solid #c9c9c9}#nav .menus_items .menus_item:hover .menus_item_child{display:block}[data-theme=light] #page-header.not-top-img #nav{background:rgba(255,255,255,.8);font-size:22px;-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6)}[data-theme=dark] #page-header.not-top-img #nav{background:rgba(0,0,0,.8);font-size:22px;box-shadow:0 5px 6px -5px #f05011}#nav .menus_items .menus_item{flex:1 1 auto;justify-content:flex-end;margin-left:auto;flex-wrap:nowrap;translate:60%;padding:0 0 0 15px}#toggleButtons{display:flex;flex:1 1 auto;justify-content:flex-end}#nav ::after{background-color:transparent!important}.menus_item_child li:not(#sidebar-menusli){float:left;border-radius:6px!important;-webkit-border-radius:6px!important;-moz-border-radius:6px!important;-ms-border-radius:6px!important;-o-border-radius:6px!important}.menus_item_child:not(#sidebar-menusul){left:50%;translate:-50%}[data-theme=light].menus_items{margin:5px!important;border-radius:5px;padding:20px}[data-theme=dark].menus_items{margin:5px!important;border-radius:5px;padding:20px}#aside-content .card-info #card-info-btn{display:block;margin-top:14px;background-color:#f05012;color:#fff;text-align:center;line-height:2.4}#aside-content .card-info #card-info-btn:hover{background-color:#ff7242}@media screen and (max-width:768px){[data-theme=light] .menus_item_child>li{border:1px solid #464646;margin:5px!important;border-radius:7px;padding-left:10px;padding-right:10px;width:100%;display:flex;translate:50%}}[data-theme=light] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=light] .site-page:hover{color:#fff!important;background-color:#f05011}[data-theme=dark] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=dark] .site-page:hover{color:#fff!important;background-color:#f05011}.nav-fixed #nav{transform:translateY(58px)!important;-webkit-transform:translateY(58px)!important;-moz-transform:translateY(58px)!important;-ms-transform:translateY(58px)!important;-o-transform:translateY(58px)!important}#nav{transition:none!important;-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important}#nav #site-name:hover{color:#fff!important;background-color:#f05011!important;padding:5px;padding-left:10px;padding-right:10px;border-radius:7px;box-shadow:0 0 3px #f05011!important}@media screen and (min-width:1200px){.layout{display:flex;max-width:1450px;flex:1 auto;margin:0 auto;padding:40px 15px;width:100%;margin-top:-1rem}.layout.hide-aside{max-width:1450px}#recent-posts{margin-top:-1rem;align-content:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}#recent-posts>.recent-post-item:not(.latest){margin-top:1rem;display:inline-block;height:auto;width:49%}#recent-posts>.recent-post-item:not(.latest) .post_cover{width:100%;height:200px}#recent-posts>.recent-post-item:not(.latest) .post_cover img.post_bg{width:100%;height:100%}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.content{display:none}#recent-posts>.recent-post-item:not(.latest){-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}#recent-posts>.recent-post-item:not(.latest) .left_radius{border-radius:12px 8px 0 0}#recent-posts>.recent-post-item:not(.latest) .right_radius{border-radius:12px 8px 0 0}.recent-post-item:not(.latest){height:auto!important}.recent-post-info{padding:0 40px;margin-top:1em;width:100%!important}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-title{-webkit-line-clamp:1;margin-top:.3rem;margin-bottom:.3rem;font-size:1.2em;line-height:1.4}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-title :hover{color:var(--lyx-theme)}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-meta-wrap{margin-bottom:1rem}}.latest{margin-top:1rem}.aside-content{max-width:312px;min-width:300px}.recent-posts{width:auto!important}span.card-archive-list-count{width:auto;text-align:left;font-size:1.5rem;line-height:.9;font-weight:700}.card-archive-list-count-group{display:flex;flex-direction:row;align-items:baseline}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:last-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:last-child{width:fit-content;margin-left:4px}span.card-archive-list-count{width:auto;text-align:left;font-size:1.1rem;line-height:.9;font-weight:700}.card-archive-list-date{font-size:14px;opacity:.6}li.card-category-list-item{flex:0 0 31%}li.card-archive-list-item{flex:0 0 48%}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:hover,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:hover{color:#fff;background-color:#f05011;box-shadow:0 8px 12px -3px #4259ef23;border-radius:8px;padding-left:.5rem;padding-right:.5rem}@media screen and (min-width:1300px){#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:hover,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:hover{transform:scale(1.03)}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:active,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:active{transform:scale(.97)}}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a,#aside-content .card-categories ul.card-category-list>.card-category-list-item a{border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-content:space-between;border:1px solid #e3e8f7}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:first-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:first-child{width:auto;flex:inherit}#aside-content .card-archives ul.card-archive-list,#aside-content .card-categories ul.card-category-list{display:flex;flex-direction:row;justify-content:space-between;flex-wrap:wrap}[data-theme=light] #aside-content .card-tag-cloud a{color:#363636!important;font-size:.8rem;border-radius:8px}[data-theme=dark] #aside-content .card-tag-cloud a{color:#e7e7e7!important;font-size:.8rem;border-radius:8px}#aside-content .card-tag-cloud a:hover{background:#f05011;color:#fff!important;box-shadow:0 8px 12px -3px rgba(66,89,239,.137);display:inline-block}#aside-content .card-widget{position:relative;overflow:hidden;margin-top:20px;padding:20px 24px;border:1px solid #c9c9c9;box-shadow:none;border-radius:8px}#aside-content .card-widget:hover{border:1px solid #f05011;box-shadow:none}#footer{background:#f7f9fe00;border-radius:8px;width:97%;margin:auto;opacity:.6;margin-top:1rem;display:flex;flex-direction:column}[data-theme=dark] #footer{background:#0d0d0d00;border-radius:8px;width:97%;margin:auto;opacity:.6;margin-top:1rem;display:flex;flex-direction:column}#Jay-footer{display:flex;flex-direction:row;width:100%;max-width:1200px;margin:1rem auto;justify-content:space-between;flex-wrap:wrap;margin-bottom:3rem;padding:0 1rem}#Jay-footer .footer-links{display:flex;flex-direction:column;color:#425aef}.footer-banner-right{display:flex;flex-direction:row;flex-wrap:wrap}div#footer_deal{justify-content:center;display:flex;padding-top:2rem;align-items:center;flex-wrap:wrap}.footer_left{display:flex}.footer_right{display:flex}.footer-item{color:#000}#pagination{width:100%;margin:auto}#pagination .page-number.current{background:#f05011;color:#fff}#rightside>div>a,#rightside>div>button{display:block;margin-bottom:5px;width:35px;height:35px;border-radius:5px;background-color:#616268;color:#fff;text-align:center;font-size:16px;line-height:35px}#rightside>div>a:hover,#rightside>div>button:hover{background-color:#f05011}.recent-post-item{border:1px solid #c9c9c9}.recent-post-item:hover{border:1px solid #f05011;box-shadow:none}#recent-posts>.recent-post-item>.recent-post-info>.article-title:hover{color:#f05011}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap a:hover{color:#f05011;text-decoration:underline}img.footer_mini_logo{width:50px;height:50px;margin:0 1rem;cursor:pointer;transition:all .5s cubic-bezier(0,0,0,1.29) 0s}img.footer_mini_logo:hover{backface-visibility:hidden;transform-style:preserve-3d;transform:scale(1.2)}@media screen and (max-width:768px){img.footer_mini_logo{display:none}}[data-theme=light] a.deal_link{display:flex;margin:1rem 27px;color:#fff;border-radius:3rem;width:32px;height:32px;background:#151515;justify-content:center;align-items:center;transition:all .3s ease 0s}[data-theme=dark] a.deal_link{display:flex;margin:1rem 27px;color:#000;border-radius:3rem;width:32px;height:32px;background:#fff;justify-content:center;align-items:center;transition:all .3s ease 0s}a.deal_link:hover{color:#fff;background:#f05011;transform:scale(1.1)}[data-theme=light] .footer-links>a{color:#000}[data-theme=dark] .footer-links>a{color:#fff}.footer-links>a:hover{color:#f05011}#post{border:1px solid #e3e8f7;box-shadow:none}#post:hover{border:1px solid #f05011;box-shadow:none}h1::before,h2::before,h3::before,h4::before,h5::before,h6::before{-webkit-animation:ccc 1.6s linear infinite;animation:ccc 1.6s linear infinite}@-webkit-keyframes ccc{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes ccc{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}#content-inner.layout h1::before{color:#ef50a8;margin-left:-1.55rem;font-size:1.3rem;margin-top:-.23rem}#content-inner.layout h2::before{color:#fb7061;margin-left:-1.35rem;font-size:1.1rem;margin-top:-.12rem}#content-inner.layout h3::before{color:#ffbf00;margin-left:-1.22rem;font-size:.95rem;margin-top:-.09rem}#content-inner.layout h4::before{color:#a9e000;margin-left:-1.05rem;font-size:.8rem;margin-top:-.09rem}#content-inner.layout h5::before{color:#57c850;margin-left:-.9rem;font-size:.7rem;margin-top:0}#content-inner.layout h6::before{color:#5ec1e0;margin-left:-.9rem;font-size:.66rem;margin-top:0}#content-inner.layout h1:hover,#content-inner.layout h2:hover,#content-inner.layout h3:hover,#content-inner.layout h4:hover,#content-inner.layout h5:hover,#content-inner.layout h6:hover{color:#3b70fc}#content-inner.layout h1:hover::before,#content-inner.layout h2:hover::before,#content-inner.layout h3:hover::before,#content-inner.layout h4:hover::before,#content-inner.layout h5:hover::before,#content-inner.layout h6:hover::before{color:#3b70fc;-webkit-animation:ccc 3.2s linear infinite;animation:ccc 3.2s linear infinite}#rightside_config i.fas.fa-cog.fa-spin{animation:fa-spin 5s linear infinite}.main-hero-waves-area{width:100%;position:absolute;left:0;bottom:-11px;z-index:5}.waves-area .waves-svg{width:100%;height:5rem}.parallax>use{animation:move-forever 25s cubic-bezier(.55,.5,.45,.5) infinite}.parallax>use:nth-child(1){animation-delay:-2s;animation-duration:7s;fill:#f7f9febd}.parallax>use:nth-child(2){animation-delay:-3s;animation-duration:10s;fill:#f7f9fe82}.parallax>use:nth-child(3){animation-delay:-4s;animation-duration:13s;fill:#f7f9fe36}.parallax>use:nth-child(4){animation-delay:-5s;animation-duration:20s;fill:#f7f9fe}[data-theme=dark] .parallax>use:nth-child(1){animation-delay:-2s;animation-duration:7s;fill:#18171dc8}[data-theme=dark] .parallax>use:nth-child(2){animation-delay:-3s;animation-duration:10s;fill:#18171d80}[data-theme=dark] .parallax>use:nth-child(3){animation-delay:-4s;animation-duration:13s;fill:#18171d3e}[data-theme=dark] .parallax>use:nth-child(4){animation-delay:-5s;animation-duration:20s;fill:#18171d}@keyframes move-forever{0%{transform:translate3d(-90px,0,0)}100%{transform:translate3d(85px,0,0)}}@media (max-width:768px){.waves-area .waves-svg{height:40px;min-height:40px}}#page .category-list-item:hover{background:#0084ff!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #425aef}.category-lists .category-list{text-align:center;display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row;margin:5em 0 3em}.category-lists ul{padding:0}.category-lists ul li{display:flex;width:fit-content;font-size:1.2em!important;padding:.2em .5em;background:#fff;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}.category-lists .category-list a{color:#4c4948!important}.category-lists .category-list a:hover{color:#fff!important}.category-lists ul li:before{position:unset;width:auto;height:auto;border:0;border-radius:0;background:0;color:#363636!important;cursor:pointer;content:"\e038";font-family:iconfont!important;opacity:.4;padding-top:2px;padding-right:2px}.category-lists .category-list .category-list-count{background:#f7f7f9;padding:4px 4px;border-radius:6px;color:rgba(60,60,67,.8);line-height:1;text-align:center;min-width:35px;display:inline-block;font-size:1rem;box-shadow:0 8px 16px -4px #2c2d300c}.category-lists .category-list .category-list-count:after,.category-lists .category-list .category-list-count:before{content:''}[data-theme=dark] #page .tag-cloud-list a{display:flex;width:fit-content;color:#c7c7c7!important;font-size:1.6em!important;padding:.2em .5em;background:#121212;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}[data-theme=light] #page .tag-cloud-list a{display:flex;width:fit-content;color:#000!important;font-size:1.6em!important;padding:.2em .5em;background:#fff;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}#page .tag-cloud-list a:hover{background:#f05011!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #f05011}.is-center{display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row}#page .category-list-item a:hover{background:#0084ff!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #425aef}.category-list{display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row}#universe{display:block;position:fixed;margin:0;padding:0;border:0;outline:0;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:1}#recent-posts>.recent-post-item{position:relative}.newPost-left,.newPost-right{position:absolute;top:0;color:#fff;padding:0 15px;background-color:#ff7550;border-radius:0 0 10px 10px}.newPost-left{left:15px}.newPost-right{right:15px}#category-bar{background:#fff0;border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c8c9c9;width:100%;margin-top:15px}@media screen and (max-width:768px){#category-bar{border-radius:0}}#category #category-bar{padding:0;border:none}#category a.category-bar-item.select a{display:none}.category-in-bar{display:flex;white-space:nowrap}.category-in-bar-tips{margin-right:1rem;margin-top:15px}.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex}.category-bar-items::-webkit-scrollbar{display:none}.category-bar-item a{padding:.1rem .5rem;margin:0 .25rem;font-weight:700;border-radius:12px}.category-bar-item:hover a{background:#f05012;color:#fff}.category-bar-item.select a{background:#f05012;color:#fff;border-radius:12px}.category-bar-more{margin-left:1rem;font-weight:700}[data-theme=light] #post .post-copyright .post-copyright-meta{color:#4c4948;font-weight:700}[data-theme=dark] #post .post-copyright .post-copyright-meta{color:#ccc;font-weight:700}@media screen and (max-width:765px){#sidebar #sidebar-menus{position:fixed;top:0;right:-300px;z-index:103;overflow-x:hidden;overflow-y:auto;width:300px;height:100%;background:var(--sidebar-bg);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#sidebar #sidebar-menus.open>.avatar-img img{height:100px;width:100px;border-radius:50%;border:5px solid #fff;filter:none}} \ No newline at end of file +#nav{display:flex;padding:0 36px;width:100%;height:60px;box-shadow:none!important;border-bottom:1px solid #c9c9c9}#nav .menus_items .menus_item:hover .menus_item_child{display:block}[data-theme=light] #page-header.not-top-img #nav{background:rgba(255,255,255,.8);font-size:22px;-webkit-box-shadow:0 5px 6px -5px rgba(133,133,133,.6);box-shadow:0 5px 6px -5px rgba(133,133,133,.6)}[data-theme=dark] #page-header.not-top-img #nav{background:rgba(0,0,0,.8);font-size:22px;box-shadow:0 5px 6px -5px #f05011}#nav .menus_items .menus_item{flex:1 1 auto;justify-content:flex-end;margin-left:auto;flex-wrap:nowrap;translate:60%;padding:0 0 0 15px}#toggleButtons{display:flex;flex:1 1 auto;justify-content:flex-end}#nav ::after{background-color:transparent!important}.menus_item_child li:not(#sidebar-menusli){float:left;border-radius:6px!important;-webkit-border-radius:6px!important;-moz-border-radius:6px!important;-ms-border-radius:6px!important;-o-border-radius:6px!important}.menus_item_child:not(#sidebar-menusul){left:50%;translate:-50%}[data-theme=light].menus_items{margin:5px!important;border-radius:5px;padding:20px}[data-theme=dark].menus_items{margin:5px!important;border-radius:5px;padding:20px}#aside-content .card-info #card-info-btn{display:block;margin-top:14px;background-color:#f05012;color:#fff;text-align:center;line-height:2.4}#aside-content .card-info #card-info-btn:hover{background-color:#ff7242}@media screen and (max-width:768px){[data-theme=light] .menus_item_child>li{border:1px solid #464646;margin:5px!important;border-radius:7px;padding-left:10px;padding-right:10px;width:100%;display:flex;translate:50%}}[data-theme=light] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=light] .site-page:hover{color:#fff!important;background-color:#f05011}[data-theme=dark] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=dark] .site-page:hover{color:#fff!important;background-color:#f05011}.nav-fixed #nav{transform:translateY(58px)!important;-webkit-transform:translateY(58px)!important;-moz-transform:translateY(58px)!important;-ms-transform:translateY(58px)!important;-o-transform:translateY(58px)!important}#nav{transition:none!important;-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important}#nav #site-name:hover{color:#fff!important;background-color:#f05011!important;padding:5px;padding-left:10px;padding-right:10px;border-radius:7px;box-shadow:0 0 3px #f05011!important}@media screen and (min-width:1200px){.layout{display:flex;max-width:1450px;flex:1 auto;margin:0 auto;padding:40px 15px;width:100%;margin-top:-1rem}.layout.hide-aside{max-width:1450px}#recent-posts{margin-top:-1rem;align-content:flex-start;display:flex;flex-wrap:wrap;justify-content:space-between}#recent-posts>.recent-post-item:not(.latest){margin-top:1rem;display:inline-block;height:auto;width:49%}#recent-posts>.recent-post-item:not(.latest) .post_cover{width:100%;height:200px}#recent-posts>.recent-post-item:not(.latest) .post_cover img.post_bg{width:100%;height:100%}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.content{display:none}#recent-posts>.recent-post-item:not(.latest){-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}#recent-posts>.recent-post-item:not(.latest) .left_radius{border-radius:12px 8px 0 0}#recent-posts>.recent-post-item:not(.latest) .right_radius{border-radius:12px 8px 0 0}.recent-post-item:not(.latest){height:auto!important}.recent-post-info{padding:0 40px;margin-top:1em;width:100%!important}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-title{-webkit-line-clamp:1;margin-top:.3rem;margin-bottom:.3rem;font-size:1.2em;line-height:1.4}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-title :hover{color:var(--lyx-theme)}#recent-posts>.recent-post-item:not(.latest)>.recent-post-info>.article-meta-wrap{margin-bottom:1rem}}.latest{margin-top:1rem}.aside-content{max-width:312px;min-width:300px}.recent-posts{width:auto!important}span.card-archive-list-count{width:auto;text-align:left;font-size:1.5rem;line-height:.9;font-weight:700}.card-archive-list-count-group{display:flex;flex-direction:row;align-items:baseline}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:last-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:last-child{width:fit-content;margin-left:4px}span.card-archive-list-count{width:auto;text-align:left;font-size:1.1rem;line-height:.9;font-weight:700}.card-archive-list-date{font-size:14px;opacity:.6}li.card-category-list-item{flex:0 0 31%}li.card-archive-list-item{flex:0 0 48%}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:hover,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:hover{color:#fff;background-color:#f05011;box-shadow:0 8px 12px -3px #4259ef23;border-radius:8px;padding-left:.5rem;padding-right:.5rem}@media screen and (min-width:1300px){#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:hover,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:hover{transform:scale(1.03)}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a:active,#aside-content .card-categories ul.card-category-list>.card-category-list-item a:active{transform:scale(.97)}}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a,#aside-content .card-categories ul.card-category-list>.card-category-list-item a{border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-content:space-between;border:1px solid #e3e8f7}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a span:first-child,#aside-content .card-categories ul.card-category-list>.card-category-list-item a span:first-child{width:auto;flex:inherit}#aside-content .card-archives ul.card-archive-list,#aside-content .card-categories ul.card-category-list{display:flex;flex-direction:row;justify-content:space-between;flex-wrap:wrap}[data-theme=light] #aside-content .card-tag-cloud a{color:#363636!important;font-size:.8rem;border-radius:8px}[data-theme=dark] #aside-content .card-tag-cloud a{color:#e7e7e7!important;font-size:.8rem;border-radius:8px}#aside-content .card-tag-cloud a:hover{background:#f05011;color:#fff!important;box-shadow:0 8px 12px -3px rgba(66,89,239,.137);display:inline-block}#aside-content .card-widget{position:relative;overflow:hidden;margin-top:20px;padding:20px 24px;border:1px solid #c9c9c9;box-shadow:none;border-radius:8px}#aside-content .card-widget:hover{border:1px solid #f05011;box-shadow:none}#footer{background:#f7f9fe00;border-radius:8px;width:97%;margin:auto;opacity:.6;margin-top:1rem;display:flex;flex-direction:column}[data-theme=dark] #footer{background:#0d0d0d00;border-radius:8px;width:97%;margin:auto;opacity:.6;margin-top:1rem;display:flex;flex-direction:column}#Jay-footer{display:flex;flex-direction:row;width:100%;max-width:1200px;margin:1rem auto;justify-content:space-between;flex-wrap:wrap;margin-bottom:3rem;padding:0 1rem}#Jay-footer .footer-links{display:flex;flex-direction:column;color:#425aef}.footer-banner-right{display:flex;flex-direction:row;flex-wrap:wrap}div#footer_deal{justify-content:center;display:flex;padding-top:2rem;align-items:center;flex-wrap:wrap}.footer_left{display:flex}.footer_right{display:flex}.footer-item{color:#000}#pagination{width:100%;margin:auto}#pagination .page-number.current{background:#f05011;color:#fff}#rightside>div>a,#rightside>div>button{display:block;margin-bottom:5px;width:35px;height:35px;border-radius:5px;background-color:#616268;color:#fff;text-align:center;font-size:16px;line-height:35px}#rightside>div>a:hover,#rightside>div>button:hover{background-color:#f05011}.recent-post-item{border:1px solid #c9c9c9}.recent-post-item:hover{border:1px solid #f05011;box-shadow:none}#recent-posts>.recent-post-item>.recent-post-info>.article-title:hover{color:#f05011}#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap a:hover{color:#f05011;text-decoration:underline}img.footer_mini_logo{width:50px;height:50px;margin:0 1rem;cursor:pointer;transition:all .5s cubic-bezier(0,0,0,1.29) 0s}img.footer_mini_logo:hover{backface-visibility:hidden;transform-style:preserve-3d;transform:scale(1.2)}@media screen and (max-width:768px){img.footer_mini_logo{display:none}}[data-theme=light] a.deal_link{display:flex;margin:1rem 27px;color:#fff;border-radius:3rem;width:32px;height:32px;background:#151515;justify-content:center;align-items:center;transition:all .3s ease 0s}[data-theme=dark] a.deal_link{display:flex;margin:1rem 27px;color:#000;border-radius:3rem;width:32px;height:32px;background:#fff;justify-content:center;align-items:center;transition:all .3s ease 0s}a.deal_link:hover{color:#fff;background:#f05011;transform:scale(1.1)}[data-theme=light] .footer-links>a{color:#000}[data-theme=dark] .footer-links>a{color:#fff}.footer-links>a:hover{color:#f05011}#post{border:1px solid #e3e8f7;box-shadow:none}#post:hover{border:1px solid #f05011;box-shadow:none}h1::before,h2::before,h3::before,h4::before,h5::before,h6::before{-webkit-animation:ccc 1.6s linear infinite;animation:ccc 1.6s linear infinite}@-webkit-keyframes ccc{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes ccc{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}#content-inner.layout h1::before{color:#ef50a8;margin-left:-1.55rem;font-size:1.3rem;margin-top:-.23rem}#content-inner.layout h2::before{color:#fb7061;margin-left:-1.35rem;font-size:1.1rem;margin-top:-.12rem}#content-inner.layout h3::before{color:#ffbf00;margin-left:-1.22rem;font-size:.95rem;margin-top:-.09rem}#content-inner.layout h4::before{color:#a9e000;margin-left:-1.05rem;font-size:.8rem;margin-top:-.09rem}#content-inner.layout h5::before{color:#57c850;margin-left:-.9rem;font-size:.7rem;margin-top:0}#content-inner.layout h6::before{color:#5ec1e0;margin-left:-.9rem;font-size:.66rem;margin-top:0}#content-inner.layout h1:hover,#content-inner.layout h2:hover,#content-inner.layout h3:hover,#content-inner.layout h4:hover,#content-inner.layout h5:hover,#content-inner.layout h6:hover{color:#3b70fc}#content-inner.layout h1:hover::before,#content-inner.layout h2:hover::before,#content-inner.layout h3:hover::before,#content-inner.layout h4:hover::before,#content-inner.layout h5:hover::before,#content-inner.layout h6:hover::before{color:#3b70fc;-webkit-animation:ccc 3.2s linear infinite;animation:ccc 3.2s linear infinite}#rightside_config i.fas.fa-cog.fa-spin{animation:fa-spin 5s linear infinite}.main-hero-waves-area{width:100%;position:absolute;left:0;bottom:-11px;z-index:5}.waves-area .waves-svg{width:100%;height:5rem}.parallax>use{animation:move-forever 25s cubic-bezier(.55,.5,.45,.5) infinite}.parallax>use:nth-child(1){animation-delay:-2s;animation-duration:7s;fill:#f7f9febd}.parallax>use:nth-child(2){animation-delay:-3s;animation-duration:10s;fill:#f7f9fe82}.parallax>use:nth-child(3){animation-delay:-4s;animation-duration:13s;fill:#f7f9fe36}.parallax>use:nth-child(4){animation-delay:-5s;animation-duration:20s;fill:#f7f9fe}[data-theme=dark] .parallax>use:nth-child(1){animation-delay:-2s;animation-duration:7s;fill:#18171dc8}[data-theme=dark] .parallax>use:nth-child(2){animation-delay:-3s;animation-duration:10s;fill:#18171d80}[data-theme=dark] .parallax>use:nth-child(3){animation-delay:-4s;animation-duration:13s;fill:#18171d3e}[data-theme=dark] .parallax>use:nth-child(4){animation-delay:-5s;animation-duration:20s;fill:#18171d}@keyframes move-forever{0%{transform:translate3d(-90px,0,0)}100%{transform:translate3d(85px,0,0)}}@media (max-width:768px){.waves-area .waves-svg{height:40px;min-height:40px}}#page .category-list-item:hover{background:#0084ff!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #425aef}.category-lists .category-list{text-align:center;display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row;margin:5em 0 3em}.category-lists ul{padding:0}.category-lists ul li{display:flex;width:fit-content;font-size:1.2em!important;padding:.2em .5em;background:#fff;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}.category-lists .category-list a{color:#4c4948!important}.category-lists .category-list a:hover{color:#fff!important}.category-lists ul li:before{position:unset;width:auto;height:auto;border:0;border-radius:0;background:0;color:#363636!important;cursor:pointer;content:"\e038";font-family:iconfont!important;opacity:.4;padding-top:2px;padding-right:2px}.category-lists .category-list .category-list-count{background:#f7f7f9;padding:4px 4px;border-radius:6px;color:rgba(60,60,67,.8);line-height:1;text-align:center;min-width:35px;display:inline-block;font-size:1rem;box-shadow:0 8px 16px -4px #2c2d300c}.category-lists .category-list .category-list-count:after,.category-lists .category-list .category-list-count:before{content:''}[data-theme=dark] #page .tag-cloud-list a{display:flex;width:fit-content;color:#c7c7c7!important;font-size:1.6em!important;padding:.2em .5em;background:#121212;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}[data-theme=light] #page .tag-cloud-list a{display:flex;width:fit-content;color:#000!important;font-size:1.6em!important;padding:.2em .5em;background:#fff;margin:.5em .5em;border-radius:12px;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;border:1px solid #e3e8f7;box-shadow:0 8px 16px -4px #2c2d300c;align-items:center}#page .tag-cloud-list a:hover{background:#f05011!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #f05011}.is-center{display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row}#page .category-list-item a:hover{background:#0084ff!important;box-shadow:0 8px 12px -3px rgba(40,109,234,.2);color:#fff!important;border:1px solid #425aef}.category-list{display:flex;flex-wrap:wrap;justify-content:center;flex-direction:row}#universe{display:block;position:fixed;margin:0;padding:0;border:0;outline:0;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:1}#recent-posts>.recent-post-item{position:relative}.newPost-left,.newPost-right{position:absolute;top:0;color:#fff;padding:0 15px;background-color:#ff7550;border-radius:0 0 10px 10px}.newPost-left{left:15px}.newPost-right{right:15px}#category-bar{background:#fff0;border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c8c9c9;width:100%;margin-top:15px}@media screen and (max-width:768px){#category-bar{border-radius:0;border:0}}#category #category-bar{padding:0;border:none}#category a.category-bar-item.select a{display:none}.category-in-bar{display:flex;white-space:nowrap}.category-in-bar-tips{margin-right:1rem;margin-top:15px}.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex}.category-bar-items::-webkit-scrollbar{display:none}.category-bar-item a{padding:.1rem .5rem;margin:0 .25rem;font-weight:700;border-radius:12px}.category-bar-item:hover a{background:#f05012;color:#fff}.category-bar-item.select a{background:#f05012;color:#fff;border-radius:12px}.category-bar-more{margin-left:1rem;font-weight:700}@media screen and (min-width:900px){#aside-content{padding-right:15px;padding-left:0}}@media screen and (max-width:765px){#sidebar #sidebar-menus{position:fixed;top:0;right:-300px;z-index:103;overflow-x:hidden;overflow-y:auto;width:300px;height:100%;background:var(--sidebar-bg);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}#sidebar #sidebar-menus.open>.avatar-img img{height:100px;width:100px;border-radius:50%;border:5px solid #fff;filter:none}}[data-theme=light] #post .post-copyright .post-copyright-meta{color:#4c4948;font-weight:700}[data-theme=dark] #post .post-copyright .post-copyright-meta{color:#ccc;font-weight:700} \ No newline at end of file diff --git a/tags/Butterfly/index.html b/tags/Butterfly/index.html index e3682496d..959775bf0 100644 --- a/tags/Butterfly/index.html +++ b/tags/Butterfly/index.html @@ -1 +1 @@ -标签: Butterfly | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: Butterfly | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/English/index.html b/tags/English/index.html index 64afeff8f..84a24b9c7 100644 --- a/tags/English/index.html +++ b/tags/English/index.html @@ -1 +1 @@ -标签: English | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: English | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/Git/index.html b/tags/Git/index.html index 2c910cbba..b3157c721 100644 --- a/tags/Git/index.html +++ b/tags/Git/index.html @@ -1 +1 @@ -标签: Git | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: Git | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/Properties/index.html b/tags/Properties/index.html index 4821c4095..bdaa43a9e 100644 --- a/tags/Properties/index.html +++ b/tags/Properties/index.html @@ -1 +1 @@ -标签: Properties | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: Properties | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/SpringBoot/index.html b/tags/SpringBoot/index.html index bd284868a..56ddfcb5d 100644 --- a/tags/SpringBoot/index.html +++ b/tags/SpringBoot/index.html @@ -1 +1 @@ -标签: SpringBoot | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: SpringBoot | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/css/index.html b/tags/css/index.html index e623af7ec..6e6caf429 100644 --- a/tags/css/index.html +++ b/tags/css/index.html @@ -1 +1 @@ -标签: css | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: css | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/docker/index.html b/tags/docker/index.html index f119d2cac..4f048548f 100644 --- a/tags/docker/index.html +++ b/tags/docker/index.html @@ -1 +1 @@ -标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/docker/page/2/index.html b/tags/docker/page/2/index.html index 7aba6c183..aebca7194 100644 --- a/tags/docker/page/2/index.html +++ b/tags/docker/page/2/index.html @@ -1 +1 @@ -标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/docker/page/3/index.html b/tags/docker/page/3/index.html index 9e204ed77..924dd7b9e 100644 --- a/tags/docker/page/3/index.html +++ b/tags/docker/page/3/index.html @@ -1 +1 @@ -标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: docker | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/error/index.html b/tags/error/index.html index 194a09f3b..ab7f75620 100644 --- a/tags/error/index.html +++ b/tags/error/index.html @@ -1 +1 @@ -标签: error | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: error | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 07a6ec8f7..f57efe60d 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1 +1 @@ -标签 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/java/index.html b/tags/java/index.html index 98cc4343d..0fbfc1231 100644 --- a/tags/java/index.html +++ b/tags/java/index.html @@ -1 +1 @@ -标签: java | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: java | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/java/page/2/index.html b/tags/java/page/2/index.html index cf5964397..c827e4d65 100644 --- a/tags/java/page/2/index.html +++ b/tags/java/page/2/index.html @@ -1 +1 @@ -标签: java | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: java | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/jmeter/index.html b/tags/jmeter/index.html index 3776ff4be..ac053cdc7 100644 --- a/tags/jmeter/index.html +++ b/tags/jmeter/index.html @@ -1 +1 @@ -标签: jmeter | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: jmeter | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/jmeter/page/2/index.html b/tags/jmeter/page/2/index.html index 75d1356dc..0f2c38d23 100644 --- a/tags/jmeter/page/2/index.html +++ b/tags/jmeter/page/2/index.html @@ -1 +1 @@ -标签: jmeter | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: jmeter | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/postman/index.html b/tags/postman/index.html index e90fe9735..e391709d1 100644 --- a/tags/postman/index.html +++ b/tags/postman/index.html @@ -1 +1 @@ -标签: postman | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: postman | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/python/index.html b/tags/python/index.html index 29493f82d..5f529eac9 100644 --- a/tags/python/index.html +++ b/tags/python/index.html @@ -1 +1 @@ -标签: python | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: python | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/shell/index.html b/tags/shell/index.html index a8afb5030..36ba51535 100644 --- a/tags/shell/index.html +++ b/tags/shell/index.html @@ -1 +1 @@ -标签: shell | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: shell | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/sql/index.html b/tags/sql/index.html index 8c8e4aa29..e98c4a149 100644 --- a/tags/sql/index.html +++ b/tags/sql/index.html @@ -1 +1 @@ -标签: sql | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: sql | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/ubuntu/index.html b/tags/ubuntu/index.html index 24c06a3bf..3144ca3a1 100644 --- a/tags/ubuntu/index.html +++ b/tags/ubuntu/index.html @@ -1 +1 @@ -标签: ubuntu | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: ubuntu | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/xpath/index.html b/tags/xpath/index.html index 41853a4ca..48972e137 100644 --- a/tags/xpath/index.html +++ b/tags/xpath/index.html @@ -1 +1 @@ -标签: xpath | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: xpath | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git a/tags/yaml/index.html b/tags/yaml/index.html index 219819535..7335a45f4 100644 --- a/tags/yaml/index.html +++ b/tags/yaml/index.html @@ -1 +1 @@ -标签: yaml | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: yaml | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\346\200\247\350\203\275\346\265\213\350\257\225/index.html" "b/tags/\346\200\247\350\203\275\346\265\213\350\257\225/index.html" index dbeed5b7e..b254513a4 100644 --- "a/tags/\346\200\247\350\203\275\346\265\213\350\257\225/index.html" +++ "b/tags/\346\200\247\350\203\275\346\265\213\350\257\225/index.html" @@ -1 +1 @@ -标签: 性能测试 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 性能测试 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\347\233\221\346\216\247/index.html" "b/tags/\347\233\221\346\216\247/index.html" index 357377be8..8fd9809ad 100644 --- "a/tags/\347\233\221\346\216\247/index.html" +++ "b/tags/\347\233\221\346\216\247/index.html" @@ -1 +1 @@ -标签: 监控 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 监控 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\347\233\256\346\240\207-\344\274\230\345\214\226/index.html" "b/tags/\347\233\256\346\240\207-\344\274\230\345\214\226/index.html" index 1369c572d..c89cf7660 100644 --- "a/tags/\347\233\256\346\240\207-\344\274\230\345\214\226/index.html" +++ "b/tags/\347\233\256\346\240\207-\344\274\230\345\214\226/index.html" @@ -1 +1 @@ -标签: 目标&优化 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 目标&优化 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\350\200\203\347\240\224/index.html" "b/tags/\350\200\203\347\240\224/index.html" index 097f2e0f7..fcf08e8b3 100644 --- "a/tags/\350\200\203\347\240\224/index.html" +++ "b/tags/\350\200\203\347\240\224/index.html" @@ -1 +1 @@ -标签: 考研 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 考研 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\351\251\254\345\223\262/index.html" "b/tags/\351\251\254\345\223\262/index.html" index 6d40bc008..12a1f3021 100644 --- "a/tags/\351\251\254\345\223\262/index.html" +++ "b/tags/\351\251\254\345\223\262/index.html" @@ -1 +1 @@ -标签: 马哲 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 马哲 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/tags/\351\253\230\346\225\260/index.html" "b/tags/\351\253\230\346\225\260/index.html" index 58deffc3e..f518f1372 100644 --- "a/tags/\351\253\230\346\225\260/index.html" +++ "b/tags/\351\253\230\346\225\260/index.html" @@ -1 +1 @@ -标签: 高数 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +标签: 高数 | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    文章统计

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file diff --git "a/\346\265\213\350\257\225\351\241\265\351\235\242/index.html" "b/\346\265\213\350\257\225\351\241\265\351\235\242/index.html" index 9237e9587..eacf69f4f 100644 --- "a/\346\265\213\350\257\225\351\241\265\351\235\242/index.html" +++ "b/\346\265\213\350\257\225\351\241\265\351\235\242/index.html" @@ -1 +1 @@ -GGLSS | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file +GGLSS | GGLSS
                                    控制面板×

                                    性能设置

                                    禁用模糊效果
                                    开启帧率检测(刷新后生效)

                                    主题设置

                                    显示aplayer
                                    落樱特效
                                    明暗模式自动切换
                                    自动主题色(跟随文章封面)
                                    未完工
                                    固定导航栏
                                    ###

                                    主题色

                                    背景设置

                                    注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效

                                    图片(手机)

                                    图片(电脑)

                                    渐变色

                                    纯色

                                    文章统计

                                    监控

                                    访问统计显示不出来请刷新页面

                                    关于

                                    Hexo-theme-Acryple v1.0.100
                                    Ariasaka Console v0.01
                                    欢迎反馈!
                                    \ No newline at end of file