From 0d90597dc5fa9f77dbd49cf7eba568f8c81ccfac Mon Sep 17 00:00:00 2001 From: gglss Date: Fri, 26 Jan 2024 17:50:43 +0800 Subject: [PATCH] Site updated: 2024-01-26 17:50:37 --- 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/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/2023/09/index.html | 2 +- archives/2023/10/index.html | 2 +- archives/2023/12/index.html | 2 +- archives/2023/index.html | 2 +- archives/2024/01/index.html | 2 +- archives/2024/index.html | 2 +- archives/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 +- link/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/11783.html | 2 +- posts/12080.html | 2 +- posts/12932.html | 2 +- posts/1351.html | 2 +- posts/13844.html | 2 +- posts/13923.html | 2 +- posts/1450282867.html | 2 +- posts/15488.html | 2 +- posts/15521.html | 2 +- posts/16468.html | 2 +- posts/1672051471.html | 2 +- posts/16766.html | 2 +- posts/16785.html | 2 +- posts/1817691161.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/2943790551.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/38168.html | 2 +- posts/408340008.html | 2 +- posts/40953.html | 2 +- posts/41091.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/4654.html | 2 +- posts/47564.html | 2 +- posts/4851.html | 2 +- posts/48851.html | 2 +- posts/48990.html | 2 +- posts/49262.html | 2 +- posts/50013.html | 2 +- posts/50581.html | 2 +- posts/50699.html | 2 +- posts/51796.html | 2 +- posts/527.html | 2 +- posts/52845.html | 2 +- posts/53299.html | 2 +- posts/53508.html | 2 +- posts/53812.html | 2 +- posts/546861677.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/56883.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 +- search.xml | 1768 ++++++++--------- self/css/font_cursor.css | 2 +- self/css/researchblog.css | 2 +- self/img/siteicon/README.html | 4 +- sw.js | 2 +- tags/Butterfly/index.html | 2 +- tags/English/index.html | 2 +- tags/Git/index.html | 2 +- tags/Mac/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/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/window/index.html | 2 +- tags/xpath/index.html | 2 +- tags/yaml/index.html | 2 +- .../index.html" | 2 +- "tags/\346\227\205\346\270\270/index.html" | 2 +- "tags/\347\233\221\346\216\247/index.html" | 2 +- .../index.html" | 2 +- 178 files changed, 1065 insertions(+), 1065 deletions(-) diff --git a/about/index.html b/about/index.html index c8427c0e..07b3b8f2 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 a73f6160..f06557bb 100644 --- a/archives/2022/08/index.html +++ b/archives/2022/08/index.html @@ -1 +1 @@ -八月 2022 | GGLSS
文章总览 - 37
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
文章总览 - 37
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 810ca890..954c4301 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 f6978456..4f608585 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 1c283f58..458be16a 100644 --- a/archives/2022/08/page/4/index.html +++ b/archives/2022/08/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/09/index.html b/archives/2022/09/index.html index 07fe2549..43aa701f 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 07da7b60..4e7952e5 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 0d356e26..a8517e8e 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 ecaf9598..e38f83b3 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/12/index.html b/archives/2022/12/index.html index d92e7488..e3746a88 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 c65d5afb..4b83f66f 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 a1633be7..0c051a5a 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 20fafc4d..12a6bfc8 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 c4902ac9..407b13ca 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 5f0c1e74..3d23947d 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 95673e24..3b848bb0 100644 --- a/archives/2022/page/6/index.html +++ b/archives/2022/page/6/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/7/index.html b/archives/2022/page/7/index.html index 26a2dc19..6ff7a0dd 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 5a10f295..94e95c76 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/2023/09/index.html b/archives/2023/09/index.html index ad721a3c..75b50609 100644 --- a/archives/2023/09/index.html +++ b/archives/2023/09/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/10/index.html b/archives/2023/10/index.html index cad6ce36..c3cdf1fe 100644 --- a/archives/2023/10/index.html +++ b/archives/2023/10/index.html @@ -1 +1 @@ -十月 2023 | GGLSS
文章总览 - 1
2023
Butterfly美化记录
Butterfly美化记录
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +十月 2023 | GGLSS
文章总览 - 1
2023
Butterfly美化记录
Butterfly美化记录
控制面板×

性能设置

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

主题设置

显示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 768e6656..66042a92 100644 --- a/archives/2023/12/index.html +++ b/archives/2023/12/index.html @@ -1 +1 @@ -十二月 2023 | GGLSS
文章总览 - 2
2023
真正厉害的人都戒掉了玻璃心
真正厉害的人都戒掉了玻璃心
english one
english one
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +十二月 2023 | GGLSS
文章总览 - 2
2023
真正厉害的人都戒掉了玻璃心
真正厉害的人都戒掉了玻璃心
english one
english one
控制面板×

性能设置

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

主题设置

显示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 5c8b91c1..36a3092d 100644 --- a/archives/2023/index.html +++ b/archives/2023/index.html @@ -1 +1 @@ -2023 | GGLSS
文章总览 - 4
2023
真正厉害的人都戒掉了玻璃心
真正厉害的人都戒掉了玻璃心
english one
english one
Butterfly美化记录
Butterfly美化记录
长难句一
长难句一
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +2023 | GGLSS
文章总览 - 4
2023
真正厉害的人都戒掉了玻璃心
真正厉害的人都戒掉了玻璃心
english one
english one
Butterfly美化记录
Butterfly美化记录
长难句一
长难句一
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/archives/2024/01/index.html b/archives/2024/01/index.html index 095c1793..9598626e 100644 --- a/archives/2024/01/index.html +++ b/archives/2024/01/index.html @@ -1 +1 @@ -一月 2024 | GGLSS
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +一月 2024 | GGLSS
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/archives/2024/index.html b/archives/2024/index.html index 0bc31b3b..bfc44ceb 100644 --- a/archives/2024/index.html +++ b/archives/2024/index.html @@ -1 +1 @@ -2024 | GGLSS
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +2024 | GGLSS
控制面板×

性能设置

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

主题设置

显示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 a6e01191..ba09c18b 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/2/index.html b/archives/page/2/index.html index 07a5bda0..347ff848 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 fc948846..026a1a9e 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 925e3d1e..8354359d 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 3b527ded..bc5c85d8 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 b4e65e5c..dd56f780 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 37e9391b..93dd2ffa 100644 --- a/archives/page/7/index.html +++ b/archives/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/archives/page/8/index.html b/archives/page/8/index.html index 4971ce8b..12a91775 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 ed8b4ac5..5f5c103b 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 482d0b96..8563261a 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 7d8cee1e..c280406a 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
控制面板×

性能设置

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

主题设置

显示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/index.html" "b/categories/\345\267\245\345\205\267\346\225\231\347\250\213/index.html" index 5bbc0da6..fa71090f 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 5d7b72c9..8d18265b 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 8050635a..c0e7d68a 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 9bdf9183..411cfa35 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 1e86b6d2..89fff095 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 1c95ed02..9f1327ff 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 c8a1f667..d10cfc45 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 eb8ecb11..aeed6228 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 5fdd7cab..ed7e0d2e 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/\346\227\245\345\270\270\347\202\271\346\273\264/index.html" "b/categories/\346\227\245\345\270\270\347\202\271\346\273\264/index.html" index 5fbf9183..c7adcc63 100644 --- "a/categories/\346\227\245\345\270\270\347\202\271\346\273\264/index.html" +++ "b/categories/\346\227\245\345\270\270\347\202\271\346\273\264/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 705f6839..425c1afc 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 11608dc1..c72a01e3 100644 --- a/essay/index.html +++ b/essay/index.html @@ -1 +1 @@ -哔哔一下 | GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +哔哔一下 | GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 f42e8cbd..2d6625b4 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
Tag Plugins Plus
为博客编写bat文件
Mac提示安装包损坏
上海游玩日记
python自动化配置参数
自动获取driver
真正厉害的人都戒掉了玻璃心
english one
Butterfly美化记录
长难句一
包装类
字符串
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +GGLSS - Research • 呓语
Tag Plugins Plus
为博客编写bat文件
Mac提示安装包损坏
上海游玩日记
python自动化配置参数
自动获取driver
真正厉害的人都戒掉了玻璃心
english one
Butterfly美化记录
长难句一
包装类
字符串
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/link/index.html b/link/index.html index 8ad7a11f..d972c692 100644 --- a/link/index.html +++ b/link/index.html @@ -1 +1 @@ -link | GGLSS
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +link | GGLSS
控制面板×

性能设置

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

主题设置

显示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 f661f34c..3b8f7ae8 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的使用
Constant Timer定时器
循环控制器Loop Controller
Modeule Controller和Include Controller
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +GGLSS - Research • 呓语
抽象类与接口
继承、重写与重载
硬件性能监控平台
Gaussian Random Timer定时器
Regular Expression Extractor正则表达式处理器
Constant Throughput Timer定时器
Groovy编写方法
Ultimate Thread Group的使用
Arrivals Thread Group的使用
Constant Timer定时器
循环控制器Loop Controller
Modeule Controller和Include 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 da3b8d91..48941c70 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
随机控制器Random Controller和Random Order Controller
逻辑控制器Simple Controller
事务控制器Transcation Controller
逻辑控制器If Controller
使用moko编写测试接口
jmeter对数据库进行增删改查
jmeter自动化压力测试
Jmeter之json数据提取和参数传递
Jmeter之全局参数设置和csv数据导入
Jmeter之静默压测
Jmeter之断言和聚合报告
测试必会的sql基本操作
控制面板×

性能设置

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

主题设置

显示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编写测试接口
jmeter对数据库进行增删改查
jmeter自动化压力测试
Jmeter之json数据提取和参数传递
Jmeter之全局参数设置和csv数据导入
Jmeter之静默压测
Jmeter之断言和聚合报告
测试必会的sql基本操作
控制面板×

性能设置

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

主题设置

显示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 ef59752d..3fb77697 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
开发获取用户列表的Post接口
开发获得cookie的Post登录接口
开发时遇到端口冲突解决办法
接口开发环境部署
返回cookie的Get接口开发
需要cookie访问的Get接口开发
需要参数才能访问的get请求
使用docker的ubuntu容器安装code-server
性能监控平台
git提示Timed out的解决办法
使用Java解析Properties文件
java基础之方法和函数
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +GGLSS - Research • 呓语
开发获取用户列表的Post接口
开发获得cookie的Post登录接口
开发时遇到端口冲突解决办法
接口开发环境部署
返回cookie的Get接口开发
需要cookie访问的Get接口开发
需要参数才能访问的get请求
使用docker的ubuntu容器安装code-server
性能监控平台
git提示Timed out的解决办法
使用Java解析Properties文件
java基础之方法和函数
控制面板×

性能设置

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

主题设置

显示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 5c565bc1..d0f71b4c 100644 --- a/page/5/index.html +++ b/page/5/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
关闭chrome浏览器自动更新
自动化基础之Xpath定位
使用Postman如何做接口测试
解析Excel用于数据驱动
解析ini文件用于数据驱动
如何使用pyyaml获取yaml里面的数据
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 - Research • 呓语
关闭chrome浏览器自动更新
自动化基础之Xpath定位
使用Postman如何做接口测试
解析Excel用于数据驱动
解析ini文件用于数据驱动
如何使用pyyaml获取yaml里面的数据
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/page/6/index.html b/page/6/index.html index ee48ca60..74347730 100644 --- a/page/6/index.html +++ b/page/6/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
Shell脚本初探
Shell变量
Shell脚本入门
css教程一
_3主3从的`Redis集群`搭建(下)
_3主3从的`Redis集群`搭建之哈希槽算法
_3主3从的`Redis集群`搭建(上)
_dockerfile
_mysql主从复制docker版
_主从容错切换迁移
docker 帮助启动类命令(一)
docker 帮助启动类命令(二)
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +GGLSS - Research • 呓语
Shell脚本初探
Shell变量
Shell脚本入门
css教程一
_3主3从的`Redis集群`搭建(下)
_3主3从的`Redis集群`搭建之哈希槽算法
_3主3从的`Redis集群`搭建(上)
_dockerfile
_mysql主从复制docker版
_主从容错切换迁移
docker 帮助启动类命令(一)
docker 帮助启动类命令(二)
控制面板×

性能设置

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

主题设置

显示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 3b05376e..7aba808d 100644 --- a/page/7/index.html +++ b/page/7/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
docker 镜像(一)
docker 镜像(二)
redis的3主3从扩容
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 +GGLSS - Research • 呓语
docker 镜像(一)
docker 镜像(二)
redis的3主3从扩容
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 aa894739..2306f728 100644 --- a/page/8/index.html +++ b/page/8/index.html @@ -1 +1 @@ -GGLSS - Research • 呓语
本地镜像发布到阿里云
镜像
使用pip install报错的解决办法
使用jmeter录制压测
Yaml的使用
性能测试主要关注点
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +GGLSS - Research • 呓语
本地镜像发布到阿里云
镜像
使用pip install报错的解决办法
使用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 0e860e20..b5b863d0 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 57eafcbc..6b6779b5 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 a812d869..96178a3d 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 e642a3fe..00e3c64d 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 5c5f81ac..9f88d776 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 fdfb7583..8fda5c99 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 0a1e9396..f991fccf 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/1450282867.html b/posts/1450282867.html index 139a6963..ca9105cb 100644 --- a/posts/1450282867.html +++ b/posts/1450282867.html @@ -1 +1 @@ -Tag Plugins Plus | GGLSS

Tag Plugins Plus

引用自bywind

引用自akilar

安装

  • 安装插件
1
npm install hexo-butterfly-tag-plugins-plus --save
  • 重新安装渲染插件
1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save
  • 添加配置信息

在主题配置文件_config.butterfly.yml后面添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# tag-plugins-plus
# see https://akilar.top/posts/615e2dec/
tag_plugins:
enable: true # 开关
priority: 5 #过滤器优先权
issues: false #issues标签依赖注入开关
link:
placeholder: /img/link.png #link_card标签默认的图标图片
CDN:
anima: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css #动画标签anima的依赖
jquery: https://npm.elemecdn.com/jquery@latest/dist/jquery.min.js #issues标签依赖
issues: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/issues.js #issues标签依赖
iconfont: //at.alicdn.com/t/font_2032782_8d5kxvn09md.js #参看https://akilar.top/posts/d2ebecef/
carousel: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js
tag_plugins_css: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.css

参数事宜

参数备选值/类型释义
enabletrue/false【必选】控制开关
prioritynumber【可选】过滤器优先级,数值越小,执行越早,默认为10,选填
issuestrue/false【可选】issues标签控制开关,默认为false
link.placeholder【必选】link卡片外挂标签的默认图标
CDN.animaURL【可选】动画标签anima的依赖
CDN.jqueryURL【可选】issues标签依赖
CDN.issuesURL【可选】issues标签依赖
CDN.iconfontURL【可选】iconfont标签symbol样式引入,如果不想引入,则设为false
CDN.carouselURL【可选】carousel旋转相册标签鼠标拖动依赖,如果不想引入则设为false
CDN.tag_plugins_cssURL【可选】外挂标签样式的CSS依赖,为避免CDN缓存延迟,建议将@latest改为具体版本号

分栏Tab

1
2
3
4
5
{% tabs Unique name, [index] %}
<!-- tab [Tab caption] [@icon] -->
Any content (support inline tags too).
<!-- endtab -->
{% endtabs %}

1.Unique name :

  • 选项卡块标签的唯一名称,不带逗号。

  • 将在#id中用作每个标签及其索引号的前缀。

  • 如果名称中包含空格,则对于生成#id,所有空格将由破折号代替。

  • 仅当前帖子/页面的URL必须是唯一的!

2.[index]:

  • 活动选项卡的索引号。

  • 如果未指定,将选择第一个标签(1)。

  • 如果index为-1,则不会选择任何选项卡。

  • 可选参数。

3.[Tab caption]:

  • 当前选项卡的标题。

  • 如果未指定标题,则带有制表符索引后缀的唯一名称将用作制表符的标题。

  • 如果未指定标题,但指定了图标,则标题将为空。

  • 可选参数。

4.[@icon]:

  • FontAwesome图标名称(全名,看起来像“ fas fa-font”)

  • 可以指定带空格或不带空格;

  • 例如’Tab caption @icon’ 和 ‘Tab caption@icon’.

  • 可选参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
{% tabs test1 %}
<!-- tab -->
**This is Tab 1.**
<!-- endtab -->

<!-- tab -->
**This is Tab 2.**
<!-- endtab -->

<!-- tab -->
**This is Tab 3.**
<!-- endtab -->
{% endtabs %}

This is Tab 1.

This is Tab 2.

This is Tab 3.

时间轴 timeline

1
2
3
4
5
6
7
8
{% timeline 时间线标题(可选)[,color] %}
<!-- timeline 时间节点(标题) -->
正文内容
<!-- endtimeline -->
<!-- timeline 时间节点(标题) -->
正文内容
<!-- endtimeline -->
{% endtimeline %}
  • title: 标题/时间线
  • color: timeline颜色:default(留空) / blue / pink / red / purple / orange / green
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
{% timeline 时间轴样式,blue %}

<!-- timeline 2020-07-24 [2.6.6 -> 3.0](https://github.com/volantis-x/hexo-theme-volantis/releases) -->

1. 如果有 `hexo-lazyload-image` 插件,需要删除并重新安装最新版本,设置 `lazyload.isSPA: true`。
2. 2.x 版本的 css 和 js 不适用于 3.x 版本,如果使用了 `use_cdn: true` 则需要删除。
3. 2.x 版本的 fancybox 标签在 3.x 版本中被重命名为 gallery 。
4. 2.x 版本的置顶 `top: true` 改为了 `pin: true`,并且同样适用于 `layout: page` 的页面。
5. 如果使用了 `hexo-offline` 插件,建议卸载,3.0 版本默认开启了 pjax 服务。

<!-- endtimeline -->

<!-- timeline 2020-05-15 [2.6.3 -> 2.6.6](https://github.com/volantis-x/hexo-theme-volantis/releases/tag/2.6.6) -->

不需要额外处理。

<!-- endtimeline -->

<!-- timeline 2020-04-20 [2.6.2 -> 2.6.3](https://github.com/volantis-x/hexo-theme-volantis/releases/tag/2.6.3) -->

1. 全局搜索 `seotitle` 并替换为 `seo_title`。
2. group 组件的索引规则有变,使用 group 组件的文章内,`group: group_name` 对应的组件名必须是 `group_name`。
2. group 组件的列表名优先显示文章的 `short_title` 其次是 `title`。

<!-- endtimeline -->

{% endtimeline %}

时间轴样式

2020-07-24 2.6.6 -> 3.0

  1. 如果有 hexo-lazyload-image 插件,需要删除并重新安装最新版本,设置 lazyload.isSPA: true
  2. 2.x 版本的 css 和 js 不适用于 3.x 版本,如果使用了 use_cdn: true 则需要删除。
  3. 2.x 版本的 fancybox 标签在 3.x 版本中被重命名为 gallery 。
  4. 2.x 版本的置顶 top: true 改为了 pin: true,并且同样适用于 layout: page 的页面。
  5. 如果使用了 hexo-offline 插件,建议卸载,3.0 版本默认开启了 pjax 服务。

2020-05-15 2.6.3 -> 2.6.6

不需要额外处理。

2020-04-20 2.6.2 -> 2.6.3

  1. 全局搜索 seotitle 并替换为 seo_title
  2. group 组件的索引规则有变,使用 group 组件的文章内,group: group_name 对应的组件名必须是 group_name
  3. group 组件的列表名优先显示文章的 short_title 其次是 title

折叠框 folding

1
2
3
{% folding 参数(可选), 标题 %}
![](https://cloud-image-host.oss-cn-beijing.aliyuncs.com/background/image-20221203162942063.webp)
{% endfolding %}
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
{% folding 查看图片测试 %}

![](https://cloud-image-host.oss-cn-beijing.aliyuncs.com/background/image-20221203162942063.webp)

{% endfolding %}

{% folding cyan open, 查看默认打开的折叠框 %}

这是一个默认打开的折叠框。

{% endfolding %}

{% folding green, 查看代码测试 %}
假装这里有代码块(代码块没法嵌套代码块)
{% endfolding %}

{% folding yellow, 查看列表测试 %}

- haha
- hehe

{% endfolding %}

{% folding red, 查看嵌套测试 %}

{% folding blue, 查看嵌套测试2 %}

{% folding 查看嵌套测试3 %}

hahaha

{% endfolding %}

{% endfolding %}

{% endfolding %}
查看图片测试

查看默认打开的折叠框

这是一个默认打开的折叠框。

查看代码测试

假装这里有代码块(代码块没法嵌套代码块)

查看列表测试
  • haha
  • hehe
查看嵌套测试
查看嵌套测试2
查看嵌套测试3

hahaha

链接卡片 link

1
{% link [title],[sitename],[link] %}
  • title: 应用外链标题

  • text: 引用外链名称

  • link: 外链地址

1
{% link 获取网站的Favicon图标并显示在你的网页上,owen0o0,https://github.com/gglss/ %}
文章作者: gglss
文章链接: http://example.com/posts/1450282867.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +Tag Plugins Plus | GGLSS

Tag Plugins Plus

引用自bywind

引用自akilar

安装

  • 安装插件
1
npm install hexo-butterfly-tag-plugins-plus --save
  • 重新安装渲染插件
1
2
npm uninstall hexo-renderer-marked --save
npm install hexo-renderer-kramed --save
  • 添加配置信息

在主题配置文件_config.butterfly.yml后面添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# tag-plugins-plus
# see https://akilar.top/posts/615e2dec/
tag_plugins:
enable: true # 开关
priority: 5 #过滤器优先权
issues: false #issues标签依赖注入开关
link:
placeholder: /img/link.png #link_card标签默认的图标图片
CDN:
anima: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css #动画标签anima的依赖
jquery: https://npm.elemecdn.com/jquery@latest/dist/jquery.min.js #issues标签依赖
issues: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/issues.js #issues标签依赖
iconfont: //at.alicdn.com/t/font_2032782_8d5kxvn09md.js #参看https://akilar.top/posts/d2ebecef/
carousel: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js
tag_plugins_css: https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.css

参数事宜

参数备选值/类型释义
enabletrue/false【必选】控制开关
prioritynumber【可选】过滤器优先级,数值越小,执行越早,默认为10,选填
issuestrue/false【可选】issues标签控制开关,默认为false
link.placeholder【必选】link卡片外挂标签的默认图标
CDN.animaURL【可选】动画标签anima的依赖
CDN.jqueryURL【可选】issues标签依赖
CDN.issuesURL【可选】issues标签依赖
CDN.iconfontURL【可选】iconfont标签symbol样式引入,如果不想引入,则设为false
CDN.carouselURL【可选】carousel旋转相册标签鼠标拖动依赖,如果不想引入则设为false
CDN.tag_plugins_cssURL【可选】外挂标签样式的CSS依赖,为避免CDN缓存延迟,建议将@latest改为具体版本号

分栏Tab

1
2
3
4
5
{% tabs Unique name, [index] %}
<!-- tab [Tab caption] [@icon] -->
Any content (support inline tags too).
<!-- endtab -->
{% endtabs %}

1.Unique name :

  • 选项卡块标签的唯一名称,不带逗号。

  • 将在#id中用作每个标签及其索引号的前缀。

  • 如果名称中包含空格,则对于生成#id,所有空格将由破折号代替。

  • 仅当前帖子/页面的URL必须是唯一的!

2.[index]:

  • 活动选项卡的索引号。

  • 如果未指定,将选择第一个标签(1)。

  • 如果index为-1,则不会选择任何选项卡。

  • 可选参数。

3.[Tab caption]:

  • 当前选项卡的标题。

  • 如果未指定标题,则带有制表符索引后缀的唯一名称将用作制表符的标题。

  • 如果未指定标题,但指定了图标,则标题将为空。

  • 可选参数。

4.[@icon]:

  • FontAwesome图标名称(全名,看起来像“ fas fa-font”)

  • 可以指定带空格或不带空格;

  • 例如’Tab caption @icon’ 和 ‘Tab caption@icon’.

  • 可选参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
{% tabs test1 %}
<!-- tab -->
**This is Tab 1.**
<!-- endtab -->

<!-- tab -->
**This is Tab 2.**
<!-- endtab -->

<!-- tab -->
**This is Tab 3.**
<!-- endtab -->
{% endtabs %}

This is Tab 1.

This is Tab 2.

This is Tab 3.

时间轴 timeline

1
2
3
4
5
6
7
8
{% timeline 时间线标题(可选)[,color] %}
<!-- timeline 时间节点(标题) -->
正文内容
<!-- endtimeline -->
<!-- timeline 时间节点(标题) -->
正文内容
<!-- endtimeline -->
{% endtimeline %}
  • title: 标题/时间线
  • color: timeline颜色:default(留空) / blue / pink / red / purple / orange / green
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
{% timeline 时间轴样式,blue %}

<!-- timeline 2020-07-24 [2.6.6 -> 3.0](https://github.com/volantis-x/hexo-theme-volantis/releases) -->

1. 如果有 `hexo-lazyload-image` 插件,需要删除并重新安装最新版本,设置 `lazyload.isSPA: true`。
2. 2.x 版本的 css 和 js 不适用于 3.x 版本,如果使用了 `use_cdn: true` 则需要删除。
3. 2.x 版本的 fancybox 标签在 3.x 版本中被重命名为 gallery 。
4. 2.x 版本的置顶 `top: true` 改为了 `pin: true`,并且同样适用于 `layout: page` 的页面。
5. 如果使用了 `hexo-offline` 插件,建议卸载,3.0 版本默认开启了 pjax 服务。

<!-- endtimeline -->

<!-- timeline 2020-05-15 [2.6.3 -> 2.6.6](https://github.com/volantis-x/hexo-theme-volantis/releases/tag/2.6.6) -->

不需要额外处理。

<!-- endtimeline -->

<!-- timeline 2020-04-20 [2.6.2 -> 2.6.3](https://github.com/volantis-x/hexo-theme-volantis/releases/tag/2.6.3) -->

1. 全局搜索 `seotitle` 并替换为 `seo_title`。
2. group 组件的索引规则有变,使用 group 组件的文章内,`group: group_name` 对应的组件名必须是 `group_name`。
2. group 组件的列表名优先显示文章的 `short_title` 其次是 `title`。

<!-- endtimeline -->

{% endtimeline %}

时间轴样式

2020-07-24 2.6.6 -> 3.0

  1. 如果有 hexo-lazyload-image 插件,需要删除并重新安装最新版本,设置 lazyload.isSPA: true
  2. 2.x 版本的 css 和 js 不适用于 3.x 版本,如果使用了 use_cdn: true 则需要删除。
  3. 2.x 版本的 fancybox 标签在 3.x 版本中被重命名为 gallery 。
  4. 2.x 版本的置顶 top: true 改为了 pin: true,并且同样适用于 layout: page 的页面。
  5. 如果使用了 hexo-offline 插件,建议卸载,3.0 版本默认开启了 pjax 服务。

2020-05-15 2.6.3 -> 2.6.6

不需要额外处理。

2020-04-20 2.6.2 -> 2.6.3

  1. 全局搜索 seotitle 并替换为 seo_title
  2. group 组件的索引规则有变,使用 group 组件的文章内,group: group_name 对应的组件名必须是 group_name
  3. group 组件的列表名优先显示文章的 short_title 其次是 title

折叠框 folding

1
2
3
{% folding 参数(可选), 标题 %}
![](https://cloud-image-host.oss-cn-beijing.aliyuncs.com/background/image-20221203162942063.webp)
{% endfolding %}
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
{% folding 查看图片测试 %}

![](https://cloud-image-host.oss-cn-beijing.aliyuncs.com/background/image-20221203162942063.webp)

{% endfolding %}

{% folding cyan open, 查看默认打开的折叠框 %}

这是一个默认打开的折叠框。

{% endfolding %}

{% folding green, 查看代码测试 %}
假装这里有代码块(代码块没法嵌套代码块)
{% endfolding %}

{% folding yellow, 查看列表测试 %}

- haha
- hehe

{% endfolding %}

{% folding red, 查看嵌套测试 %}

{% folding blue, 查看嵌套测试2 %}

{% folding 查看嵌套测试3 %}

hahaha

{% endfolding %}

{% endfolding %}

{% endfolding %}
查看图片测试

查看默认打开的折叠框

这是一个默认打开的折叠框。

查看代码测试

假装这里有代码块(代码块没法嵌套代码块)

查看列表测试
  • haha
  • hehe
查看嵌套测试
查看嵌套测试2
查看嵌套测试3

hahaha

链接卡片 link

1
{% link [title],[sitename],[link] %}
  • title: 应用外链标题

  • text: 引用外链名称

  • link: 外链地址

1
{% link 获取网站的Favicon图标并显示在你的网页上,owen0o0,https://github.com/gglss/ %}
文章作者: gglss
文章链接: http://example.com/posts/1450282867.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 2ffc12e8..fe638868 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 447fe3a9..6e232d45 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 1e320be1..7c65e8a9 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/1672051471.html b/posts/1672051471.html index ffc5fbcd..5d6e57eb 100644 --- a/posts/1672051471.html +++ b/posts/1672051471.html @@ -1 +1 @@ -真正厉害的人都戒掉了玻璃心 | GGLSS

真正厉害的人都戒掉了玻璃心

I grew up with my identical twin, who was an incredibly loving brother. Now, one thing about being a twin is, it makes you an expert at spotting favoritism. If his cookie was even slightly bigger than my cookie, I had questions. And clearly, I wasn’t starving

我和我的双胞胎哥哥一起长大,他是个富有爱心的好兄弟。要知道,作为双胞胎,你很快 就在一件事上成为专家,就是注意到偏爱。如果他的饼干比我的大 哪怕一点点,我就会质疑。当然我也没被饿着。

identical adj.相同的

slightly adv.轻微地

psychologist n心理学家


When I became a psychologist, I began to notice favoritism of a different kind; and that is, how much more we value the body than we do the mind. I spent nine years at university earning my favoritism doctorate in psychology, and I can’t tell you how many people look at my business card and say, “Oh - - a psychologist. So, not a real doctor,” as if it should say that on my card. This favoritism doctorate we show the body over the mind - - I see it everywhere.

当我成为一-个心理学家,我开始 注意到另一种不同的偏爱,那就是我们赋子我们的身体 比精神更多的价值。我花了九年时问 获得心理学博士学位,但不知道有多少人看了我的名片说,“哦,心理学家,原水不是真正的医生。”就好像我的名片上就该明确说明似的。这种对身体多于精神的偏爱随处可见。

psychologist n.心理学家

doctorate n.博士学位

favoritism n.偏袒


I recently was at a friend’s house, and their fivc-year-old was getting ready for bed. He was standing on a stool by the sink, brushing his teeth, when he slipped and scratched his leg on the stool when he fell. He cried for a minute, but then he got back up, got back on the stool, and reached out for a box of BandAids to put one on his cut.


Now, this kid could barely tie his shoelaces, but he knew you have to cover a cut so it doesn’t become infected, and you have to care for your teeth by brushing twice a day. We all know how to maintain our physical health and how to practice dental hygiene, right? We’ve known it since we were five years old. But what do we know about maintaining our psychological health? Well, nothing. What do we teach our children about emotional hygiene? Nothing. How is it that we spend more time taking care of our teeth than we do our minds? Why is it that our physical health is so much more important to us than our psychological health?

这孩子刚学会系鞋带儿,但他都知道要保护伤口以免感染,同时还要一天刷两次牙来保护牙齿。我们都知道怎样保特身体的健康 还有怎样保持牙齿卫生,对不对:我们从五岁起就知道这些东西了。但是我们知道怎样 保持精神上的健康吗?完全不知道。我们教给孩子们情绪保健吗?完全没有。为什么我们花在牙齿的时间 比花在精神的时间上还多呢? 为什么我们那么重视身体健康 远远多于心理健康呢?


We sustain psychological injuries even more often than we do physical ones, injuries like failure or rejection or loneliness. And they can also get worse if we ignore them, and they can impact our lives in dramatic ways. And yet, even though there are scientifically proven techniques we could use to treat these kinds of psychological injuries, we don’t. It doesn’t even occur to us that we should. “Oh, you’re feeling depressed? Just shake it off; it’s all in your head.” Can you imagine saying that to somebody with a broken leg: “Oh, just walk it off; it’s all in vour leg.”

我们承受心理上的伤害 比身体上的多得多,例如失败,被拒绝,孤独。如果我们忽视它们,情况也会恶化,它们同样会给我们的生活带米重大的影响。然而,虽然有科学证实的疗法 米帮助我们治疗 这些心理上的伤害,我们却不采取行动。我们甚至都没意识到 我们应该采取行动。“哦,你感到抑郁么? 别去想了,都在你脑袋甲。”你能想象对一个骨折了的人说这样的话吗?“哦、走走就好了,都在你腿上。


It is time we closed the gap between our physical and our psychological health. It’s time we made them more equal, more like twins.Speaking of which, my brother is aiso a psychologist. So he’s not a real doctor, either.

我们应该消除这种对身体和 精神健康的区别对待。应该把两者对等起水,像双胞胎一样。说起双胞胎,我哥哥也是个心理医生。所以他也不是真正的医生。


We didn’t study together, though. In fact, the hardest thing I’ve ever done in my life is move across the Atlantic to New York City to get my doctorate in psychology. We were apart then for the first time in our lives, and the separation was brutal for both of us. But while he remained among family and friends, I was alone in a new country. We missed each other terribly, but international phone calls were really expensive then, and we could only afford to speak for five minutes a week. When our birthday rolled around, it was the first we wouldn’t be spending together. We decided to splurge, and that week, we would talk for 10 minutes.

我们不是在一起上的学。事实上,我这辈子经历过的最困难的事就是跨过大西洋搬到红约 来读心理学的博士学位。那是我们俩第一次分隔两地,这个分离对我俩来说都很残酷。当他和家人朋友一起

吋,我却孤单的在—-个新的国度。我们都非常想念对方,但那吋候国际长途都很贵 我们一周只打的起五分钟的电话。当我们生日快到了的时候,那是我们第一个 没在一起过的生日。我们决定奢侈把,在那个星期聊上十分钟。


I spent the morning pacing around my room, waiting for him to call — and waiting.. and waiting. But the phone didn’t ring

我那天早上在房间里踱来踱去,等着我哥哥给我打过来 - 我等啊等啊,电话就是不响。


Given the time difference, I assumed, “OK, he’s out with friends. he’ll call later.” There were no cell phones then. But he didn’t. And I began to realize that after being away for over 10 months, he no longer missed me the way I missed him. I knew he would call in the morning, but that night was one of the saddest and longest nights of my life. I woke up the next morning. I glanced down at the phone, and I realized I had kicked it off the hook when pacing the day before. I stumbled out of bed, I put the phone back on the receiver, and it rang a second later. And it was my brother, and boy, was he pissed.

由于时差的关系,我就想,“好吧,他一定是和朋友在一起,他晚点 v绊倒儿会打水的。”那时候也没有手机。但他始终没打来。我开妤意识到,在我商开十个月以后,他不再像我想他那样想我了。我知道他早上会打米,但那一晚是我一生中 最份心,最漫长的一晚。第二天一早醒来,我职了一-眼电话,我意识到,来回跛步吋 我把电话线踹下水了我迷迷糊糊的跳下床,我刚把电话插回接口,一秒钟之后电话就响了。是我哥哥,他可气坏了。


It was the saddest and longest night of his life as well. Now, I tried to explain what happened, but he said, “I don’t understand. If you saw I wasn’t calling you, why didn’t you just pick up the phone and call me?” He was right. Why didn’t I call him? I didn’t have an answer then. But I do today, and it’s a simple one: loneliness.

那也是他一生中 最伤心漫长的一夜。当我跟他解释事情的经过,他说,“我不明白。你看我没给你打,你为什么不打给我呢?”他说的对。我为什么不打给他呢?我当时无法解释,但我现在明白了,非常简单的原因:孤独。


Loneliness creates a deep psychological wound, one that distorts our perceptions and scrambies our thinking. It makes us believe that those around us care much less than they actuaily do. It make us really afraid to reach out, because why set yourself up for reiection and heartache when your heart is already aching more than you can stand? I was in the grips of real loneliness back then, but I was surrounded by people all day, so it never occurred to me. But loneliness is defined purely subjectively. It depends solely on whether you feel emotionally or socially disconnected from those around you. And I did.

孤独导致深重的心理创伤,扭曲我们的感知能力,剥夺我们的思考能力。它使我们相信 身边的人不再在乎我们。 它使我们不取与人联络,为什么给自取其辱被拒绝呢? 你的心痛的还不够多么?我那个时候被孤独紧紧包裹着,但我总和别人在一起,我自己都没意识到。但孤独是完全从主观上定义的。它完全取决于你是否觉得 在情绪上或是交际上 和你周围的人相隔绝。我当时是这样的。


There is a lot of research on loneliness, and all of it is horrifying.

Loneliness won’t just make you miserable; it will kill you. I’m

not kidding. Chronic loneliness increases your likelihood of an early death by 14 percent. Fourteen percent! Loneliness causes high blood pressure, high cholesterol. It even suppress the functioning of your immune system, making you vulnerable to

cholesterol

n胆固醇

all kinds of illnesses and diseases. In fact. scientists have concluded that taken together, chronic loneliness poses as significant a risk for your long-term health and longevity as

vulnerable

adi.脆弱的

cigarette smoking.

我们有很多关于孤独的研究, 都很可怕。孤独不仅让你觉得凄惨,它还可能致死。我可不是开玩笑。长期的抓独 会增加你早逝的可能性 高达14%之多。孤独可能导致 高血乐,高胆固醇。它甚至会影响你的免疫系统,使你容易患上各种疾病。事实上,科学家已经得出结论,长期的孤独对你的健康和长寿的负面影响比抽烟还要糟。

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +真正厉害的人都戒掉了玻璃心 | GGLSS

真正厉害的人都戒掉了玻璃心

I grew up with my identical twin, who was an incredibly loving brother. Now, one thing about being a twin is, it makes you an expert at spotting favoritism. If his cookie was even slightly bigger than my cookie, I had questions. And clearly, I wasn’t starving

我和我的双胞胎哥哥一起长大,他是个富有爱心的好兄弟。要知道,作为双胞胎,你很快 就在一件事上成为专家,就是注意到偏爱。如果他的饼干比我的大 哪怕一点点,我就会质疑。当然我也没被饿着。

identical adj.相同的

slightly adv.轻微地

psychologist n心理学家


When I became a psychologist, I began to notice favoritism of a different kind; and that is, how much more we value the body than we do the mind. I spent nine years at university earning my favoritism doctorate in psychology, and I can’t tell you how many people look at my business card and say, “Oh - - a psychologist. So, not a real doctor,” as if it should say that on my card. This favoritism doctorate we show the body over the mind - - I see it everywhere.

当我成为一-个心理学家,我开始 注意到另一种不同的偏爱,那就是我们赋子我们的身体 比精神更多的价值。我花了九年时问 获得心理学博士学位,但不知道有多少人看了我的名片说,“哦,心理学家,原水不是真正的医生。”就好像我的名片上就该明确说明似的。这种对身体多于精神的偏爱随处可见。

psychologist n.心理学家

doctorate n.博士学位

favoritism n.偏袒


I recently was at a friend’s house, and their fivc-year-old was getting ready for bed. He was standing on a stool by the sink, brushing his teeth, when he slipped and scratched his leg on the stool when he fell. He cried for a minute, but then he got back up, got back on the stool, and reached out for a box of BandAids to put one on his cut.


Now, this kid could barely tie his shoelaces, but he knew you have to cover a cut so it doesn’t become infected, and you have to care for your teeth by brushing twice a day. We all know how to maintain our physical health and how to practice dental hygiene, right? We’ve known it since we were five years old. But what do we know about maintaining our psychological health? Well, nothing. What do we teach our children about emotional hygiene? Nothing. How is it that we spend more time taking care of our teeth than we do our minds? Why is it that our physical health is so much more important to us than our psychological health?

这孩子刚学会系鞋带儿,但他都知道要保护伤口以免感染,同时还要一天刷两次牙来保护牙齿。我们都知道怎样保特身体的健康 还有怎样保持牙齿卫生,对不对:我们从五岁起就知道这些东西了。但是我们知道怎样 保持精神上的健康吗?完全不知道。我们教给孩子们情绪保健吗?完全没有。为什么我们花在牙齿的时间 比花在精神的时间上还多呢? 为什么我们那么重视身体健康 远远多于心理健康呢?


We sustain psychological injuries even more often than we do physical ones, injuries like failure or rejection or loneliness. And they can also get worse if we ignore them, and they can impact our lives in dramatic ways. And yet, even though there are scientifically proven techniques we could use to treat these kinds of psychological injuries, we don’t. It doesn’t even occur to us that we should. “Oh, you’re feeling depressed? Just shake it off; it’s all in your head.” Can you imagine saying that to somebody with a broken leg: “Oh, just walk it off; it’s all in vour leg.”

我们承受心理上的伤害 比身体上的多得多,例如失败,被拒绝,孤独。如果我们忽视它们,情况也会恶化,它们同样会给我们的生活带米重大的影响。然而,虽然有科学证实的疗法 米帮助我们治疗 这些心理上的伤害,我们却不采取行动。我们甚至都没意识到 我们应该采取行动。“哦,你感到抑郁么? 别去想了,都在你脑袋甲。”你能想象对一个骨折了的人说这样的话吗?“哦、走走就好了,都在你腿上。


It is time we closed the gap between our physical and our psychological health. It’s time we made them more equal, more like twins.Speaking of which, my brother is aiso a psychologist. So he’s not a real doctor, either.

我们应该消除这种对身体和 精神健康的区别对待。应该把两者对等起水,像双胞胎一样。说起双胞胎,我哥哥也是个心理医生。所以他也不是真正的医生。


We didn’t study together, though. In fact, the hardest thing I’ve ever done in my life is move across the Atlantic to New York City to get my doctorate in psychology. We were apart then for the first time in our lives, and the separation was brutal for both of us. But while he remained among family and friends, I was alone in a new country. We missed each other terribly, but international phone calls were really expensive then, and we could only afford to speak for five minutes a week. When our birthday rolled around, it was the first we wouldn’t be spending together. We decided to splurge, and that week, we would talk for 10 minutes.

我们不是在一起上的学。事实上,我这辈子经历过的最困难的事就是跨过大西洋搬到红约 来读心理学的博士学位。那是我们俩第一次分隔两地,这个分离对我俩来说都很残酷。当他和家人朋友一起

吋,我却孤单的在—-个新的国度。我们都非常想念对方,但那吋候国际长途都很贵 我们一周只打的起五分钟的电话。当我们生日快到了的时候,那是我们第一个 没在一起过的生日。我们决定奢侈把,在那个星期聊上十分钟。


I spent the morning pacing around my room, waiting for him to call — and waiting.. and waiting. But the phone didn’t ring

我那天早上在房间里踱来踱去,等着我哥哥给我打过来 - 我等啊等啊,电话就是不响。


Given the time difference, I assumed, “OK, he’s out with friends. he’ll call later.” There were no cell phones then. But he didn’t. And I began to realize that after being away for over 10 months, he no longer missed me the way I missed him. I knew he would call in the morning, but that night was one of the saddest and longest nights of my life. I woke up the next morning. I glanced down at the phone, and I realized I had kicked it off the hook when pacing the day before. I stumbled out of bed, I put the phone back on the receiver, and it rang a second later. And it was my brother, and boy, was he pissed.

由于时差的关系,我就想,“好吧,他一定是和朋友在一起,他晚点 v绊倒儿会打水的。”那时候也没有手机。但他始终没打来。我开妤意识到,在我商开十个月以后,他不再像我想他那样想我了。我知道他早上会打米,但那一晚是我一生中 最份心,最漫长的一晚。第二天一早醒来,我职了一-眼电话,我意识到,来回跛步吋 我把电话线踹下水了我迷迷糊糊的跳下床,我刚把电话插回接口,一秒钟之后电话就响了。是我哥哥,他可气坏了。


It was the saddest and longest night of his life as well. Now, I tried to explain what happened, but he said, “I don’t understand. If you saw I wasn’t calling you, why didn’t you just pick up the phone and call me?” He was right. Why didn’t I call him? I didn’t have an answer then. But I do today, and it’s a simple one: loneliness.

那也是他一生中 最伤心漫长的一夜。当我跟他解释事情的经过,他说,“我不明白。你看我没给你打,你为什么不打给我呢?”他说的对。我为什么不打给他呢?我当时无法解释,但我现在明白了,非常简单的原因:孤独。


Loneliness creates a deep psychological wound, one that distorts our perceptions and scrambies our thinking. It makes us believe that those around us care much less than they actuaily do. It make us really afraid to reach out, because why set yourself up for reiection and heartache when your heart is already aching more than you can stand? I was in the grips of real loneliness back then, but I was surrounded by people all day, so it never occurred to me. But loneliness is defined purely subjectively. It depends solely on whether you feel emotionally or socially disconnected from those around you. And I did.

孤独导致深重的心理创伤,扭曲我们的感知能力,剥夺我们的思考能力。它使我们相信 身边的人不再在乎我们。 它使我们不取与人联络,为什么给自取其辱被拒绝呢? 你的心痛的还不够多么?我那个时候被孤独紧紧包裹着,但我总和别人在一起,我自己都没意识到。但孤独是完全从主观上定义的。它完全取决于你是否觉得 在情绪上或是交际上 和你周围的人相隔绝。我当时是这样的。


There is a lot of research on loneliness, and all of it is horrifying.

Loneliness won’t just make you miserable; it will kill you. I’m

not kidding. Chronic loneliness increases your likelihood of an early death by 14 percent. Fourteen percent! Loneliness causes high blood pressure, high cholesterol. It even suppress the functioning of your immune system, making you vulnerable to

cholesterol

n胆固醇

all kinds of illnesses and diseases. In fact. scientists have concluded that taken together, chronic loneliness poses as significant a risk for your long-term health and longevity as

vulnerable

adi.脆弱的

cigarette smoking.

我们有很多关于孤独的研究, 都很可怕。孤独不仅让你觉得凄惨,它还可能致死。我可不是开玩笑。长期的抓独 会增加你早逝的可能性 高达14%之多。孤独可能导致 高血乐,高胆固醇。它甚至会影响你的免疫系统,使你容易患上各种疾病。事实上,科学家已经得出结论,长期的孤独对你的健康和长寿的负面影响比抽烟还要糟。

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 06d0c080..7de1eacd 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 af7629b7..d4a71428 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/1817691161.html b/posts/1817691161.html index f09858fe..675bf3c6 100644 --- a/posts/1817691161.html +++ b/posts/1817691161.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请求接口"
}
}
]

使用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": "我胡汉三带着参数来了!!!!"
}
}

使用moko编写包含cookie信息的测试接口

这是一个会返回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"
}
}
}

重定向的测试接口

  • 使用了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": "重定向成功了"
}
}
]

下载jar包

点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

使用命令启动测试脚本

1
java -jar jar包的存放路径 http -p 端口 -c json文件路径
文章作者: gglss
文章链接: http://example.com/posts/1817691161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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请求接口"
}
}
]

使用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": "我胡汉三带着参数来了!!!!"
}
}

使用moko编写包含cookie信息的测试接口

这是一个会返回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"
}
}
}

重定向的测试接口

  • 使用了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": "重定向成功了"
}
}
]

下载jar包

点击moke选择版本进行下载,我下载的的是moco-runner-0.11.0-standalone.jar

使用命令启动测试脚本

1
java -jar jar包的存放路径 http -p 端口 -c json文件路径
文章作者: gglss
文章链接: http://example.com/posts/1817691161.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 6f52601b..b52c8953 100644 --- a/posts/18767.html +++ b/posts/18767.html @@ -1 +1 @@ -docker 镜像(二) | GGLSS

docker 镜像(二)

镜像(二)

查看 镜像/容器/数据 卷所占的空间

docker system df

1
2
3
4
5
6
7
8
[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

```shell

如果提示报错

Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container 13111f725991

说明之前运行过这个镜像,生成了容器,需要先删除容器,再删除镜像

使用 -f 删除一个

docker rmi -f 镜像id

使用 -f 删除多个

xxxxxxxxxx # 没有任何提示说明启动成功[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# systemctl restart docker[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#shell

使用 -f 删除全部

docker rmi -f $(docker images -qa)

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +docker 镜像(二) | GGLSS

docker 镜像(二)

镜像(二)

查看 镜像/容器/数据 卷所占的空间

docker system df

1
2
3
4
5
6
7
8
[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

```shell

如果提示报错

Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is being used by stopped container 13111f725991

说明之前运行过这个镜像,生成了容器,需要先删除容器,再删除镜像

使用 -f 删除一个

docker rmi -f 镜像id

使用 -f 删除多个

xxxxxxxxxx # 没有任何提示说明启动成功[root@iZ8vbfaek3x3ogtpxnpnwfZ /]# systemctl restart docker[root@iZ8vbfaek3x3ogtpxnpnwfZ /]#shell

使用 -f 删除全部

docker rmi -f $(docker images -qa)

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 103a4023..f39c293f 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 8679cc22..0118229a 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 a4d1e6da..8f94a054 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 5df7e761..d748d564 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 5acef1be..43833b9a 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 5be8e33f..730afba6 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 a89756ea..ac80112a 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 5a2e0032..42e3d553 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 70725c13..d18a1892 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 d7510bb9..9d431953 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 3cddc891..2fb6aef3 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/2943790551.html b/posts/2943790551.html index f75c2b46..65a50b3a 100644 --- a/posts/2943790551.html +++ b/posts/2943790551.html @@ -1 +1 @@ -为博客编写bat文件 | GGLSS

为博客编写bat文件

.bat

window发布hexo博客时,需要多个命令,现在编写bat文件

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
@echo off
echo ====================================
echo 欢迎使用 Hexo 命令助手 请选择命令
echo 本地测试或上传网站时,将自动清理缓存
echo ====================================
echo 1. 访问作者博客
echo 2. 本地测试
echo 3. 上传网站
echo 4. 清理缓存
echo 5. 新建文章
echo 6. 新建页面
echo .
set /p input="请选择命令并按下回车:"
if %input%==1 goto A
if %input%==2 goto B
if %input%==3 goto C
if %input%==4 goto D
if %input%==5 goto E
if %input%==6 goto F

:A
cls
start https://hipeach.eu.org
exit

:B
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && hexo s && pause && exit"


:C
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && hexo d && echo. && echo 指令已完成 如出错请检查配置 && pause && cls && 运行脚本.bat"
exit

:D
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && pause && cls && 运行脚本.bat"
exit

:E
cls
set /p t1="请输入文章文件名:"
start cmd.exe /k "hexo n %t1% && echo. && echo 已在 source/_posts 目录下生成文件:%t1%.md 与 资源文件夹: %t1% && pause && exit"
exit

:F
cls
set /p t2="请输入独立页面文件名:"
start cmd.exe /k "hexo n page %t2% && echo. && echo 已在 source 目录下生成一个文件夹: %t2% 并在文件夹内创建了文件: %t2%.md && pause && exit"
exit

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +为博客编写bat文件 | GGLSS

为博客编写bat文件

.bat

window发布hexo博客时,需要多个命令,现在编写bat文件

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
@echo off
echo ====================================
echo 欢迎使用 Hexo 命令助手 请选择命令
echo 本地测试或上传网站时,将自动清理缓存
echo ====================================
echo 1. 访问作者博客
echo 2. 本地测试
echo 3. 上传网站
echo 4. 清理缓存
echo 5. 新建文章
echo 6. 新建页面
echo .
set /p input="请选择命令并按下回车:"
if %input%==1 goto A
if %input%==2 goto B
if %input%==3 goto C
if %input%==4 goto D
if %input%==5 goto E
if %input%==6 goto F

:A
cls
start https://hipeach.eu.org
exit

:B
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && hexo s && pause && exit"


:C
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && hexo d && echo. && echo 指令已完成 如出错请检查配置 && pause && cls && 运行脚本.bat"
exit

:D
start cmd.exe /k "@echo off && hexo cl && echo. && echo 已清理缓存 && pause && cls && 运行脚本.bat"
exit

:E
cls
set /p t1="请输入文章文件名:"
start cmd.exe /k "hexo n %t1% && echo. && echo 已在 source/_posts 目录下生成文件:%t1%.md 与 资源文件夹: %t1% && pause && exit"
exit

:F
cls
set /p t2="请输入独立页面文件名:"
start cmd.exe /k "hexo n page %t2% && echo. && echo 已在 source 目录下生成一个文件夹: %t2% 并在文件夹内创建了文件: %t2%.md && pause && exit"
exit

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 54c82750..48f28875 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 b6ce5b73..634ee0de 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 9b6054fb..7d38cd76 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 6f00296e..7b6a16cf 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 30b630d4..416e6a7c 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 df07f4c5..3d54e989 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c9d585c9..7c63b897 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 d0ac1c28..75414e69 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 35885907..48f978ba 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.assets\image-20220509101455220.png)

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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.assets\image-20220509101455220.png)

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c88c7bba..66c71ccc 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/408340008.html b/posts/408340008.html index 2f09b2ca..5f304d0f 100644 --- a/posts/408340008.html +++ b/posts/408340008.html @@ -1 +1 @@ -Mac提示安装包损坏 | GGLSS

Mac提示安装包损坏

Mac 提示文件已损坏,您应该将它移到废纸篓

解决办法:

在终端输入

sudo xattr -d com.apple.quarantine /Applications/PicGo.app

/后面是安装路径

然后输入密码

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +Mac提示安装包损坏 | GGLSS

Mac提示安装包损坏

Mac 提示文件已损坏,您应该将它移到废纸篓

解决办法:

在终端输入

sudo xattr -d com.apple.quarantine /Applications/PicGo.app

/后面是安装路径

然后输入密码

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 65f6b9ed..e15a9c24 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 c20c55f1..55b8d9ae 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 79c97c44..ea725fbc 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 a64dbd9b..6564b26e 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 833988c9..a1b2899b 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 03e47ae5..b4bec2f8 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 00015860..7337a996 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 2d612846..337d0f3e 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 dd801544..ab3a8215 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 226ed44f..6bc8162a 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表示数字,范围是0~9,$0表示脚本名称,$1~9表示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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表示数字,范围是0~9,$0表示脚本名称,$1~9表示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c4a0de2c..11b23cac 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c21a7e14..6c356190 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 82f09496..6b4bd0f9 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 5b62a340..aa1e6340 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 43023560..f3304bbf 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 843eed34..3c0a28af 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 65497dcb..b7ad4b11 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 3be73d30..59df2fda 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 622e2f92..9287c89f 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 f2b9678b..45fb93dc 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 8956e050..4dc5c1b1 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 3224876d..855b2a92 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 2a79c624..d28504b7 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 e25ad4b2..ead1a82d 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file diff --git a/posts/546861677.html b/posts/546861677.html index accd1687..439e798a 100644 --- a/posts/546861677.html +++ b/posts/546861677.html @@ -1 +1 @@ -上海游玩日记 | GGLSS

上海游玩日记

上个月心血来潮想去上海玩,然后第二天早上七点就坐高铁去上海

刚到上海就在上海闲林街道进行打卡,拍照技术太差,还是审美不好,弄成这种拍照不好的样子,还有那个地方人超级多,拍照的人也很多,转了下就离开了

IMG_1487

在换地方的路上

IMG_1492

晚上天气不太好,去了东方明珠塔,上了顶拍照,可惜晚上灯光太亮,拍不好,上面的玻璃感觉有点脏,白天应该会更好吧

IMG_1515

IMG_1516

IMG_1527

东方塔一层有上海历史变迁的博物馆,从里面可以看到上海近百年的变迁

IMG_1567

IMG_1577

IMG_1578

IMG_1584

IMG_1586

IMG_1587

第二天起来都十点多了,吃了个灌汤包,感觉味道一般,不符合口味,价格很贵

然后去思南公馆去打卡,哪里是许多名人的住所,拍照很好看,文艺气息很浓厚

IMG_1616

IMG_1619

IMG_1623

IMG_1625

IMG_1629

IMG_1633

IMG_1651

IMG_1659

IMG_1660

IMG_1662

IMG_1670

IMG_1676

IMG_1679

IMG_1683

这里就是最后一站,然后就回了杭州了

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

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

主题色

背景设置

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

图片(手机)

图片(电脑)

渐变色

纯色

文章统计

监控

文章统计

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

关于

Hexo-theme-Acryple v1.0.100
Ariasaka Console v0.01
欢迎反馈!
空降评论复制本文地址
🍭查看新品🍬
\ No newline at end of file +上海游玩日记 | GGLSS

上海游玩日记

上个月心血来潮想去上海玩,然后第二天早上七点就坐高铁去上海

刚到上海就在上海闲林街道进行打卡,拍照技术太差,还是审美不好,弄成这种拍照不好的样子,还有那个地方人超级多,拍照的人也很多,转了下就离开了

IMG_1487

在换地方的路上

IMG_1492

晚上天气不太好,去了东方明珠塔,上了顶拍照,可惜晚上灯光太亮,拍不好,上面的玻璃感觉有点脏,白天应该会更好吧

IMG_1515

IMG_1516

IMG_1527

东方塔一层有上海历史变迁的博物馆,从里面可以看到上海近百年的变迁

IMG_1567

IMG_1577

IMG_1578

IMG_1584

IMG_1586

IMG_1587

第二天起来都十点多了,吃了个灌汤包,感觉味道一般,不符合口味,价格很贵

然后去思南公馆去打卡,哪里是许多名人的住所,拍照很好看,文艺气息很浓厚

IMG_1616

IMG_1619

IMG_1623

IMG_1625

IMG_1629

IMG_1633

IMG_1651

IMG_1659

IMG_1660

IMG_1662

IMG_1670

IMG_1676

IMG_1679

IMG_1683

这里就是最后一站,然后就回了杭州了

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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 fac36f70..9821bd71 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 /*我的主题色*/
}

侧边栏分类归档美化

修改 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 */

分类页和标签页面添加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;
}

文章页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
---

文章增加最新文章标识

转载于云端

修改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插件

在博客根目录[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

手机端悬浮窗

使用akilar教程

新建[Blogroot]\themes\butterfly\source\js\custom\fixed_card_widget.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
// 固定卡片点击动作
function FixedCardWidget(type,name,index){
// 根据id或class选择元素
if (type === "id"){
var tempcard = document.getElementById(name);
}
else{
var tempcard = document.getElementsByClassName(name)[index];
}
// 若元素存在
if (tempcard) {
// 首先判断是否存在fixed-card-widget类
if (tempcard.className.indexOf('fixed-card-widget') > -1){
// 存在则移除
RemoveFixedCardWidget();
}
else{
// 不存在则先初始化防止卡片叠加
RemoveFixedCardWidget();
//新建退出蒙版
CreateQuitBox();
// 再添加固定卡片样式
tempcard.classList.add('fixed-card-widget');
}
}
}
//创建一个蒙版,作为退出键使用
function CreateQuitBox(){
var quitBox = `<div id="quit-box" onclick="RemoveFixedCardWidget()"></div>`
var asideContent = document.getElementById('aside-content');
asideContent.insertAdjacentHTML("beforebegin",quitBox)
}
// 移除卡片方法
function RemoveFixedCardWidget(){
var activedItems = document.querySelectorAll('.fixed-card-widget');
if (activedItems) {
for (i = 0; i < activedItems.length; i++) {
activedItems[i].classList.remove('fixed-card-widget');
}
}
//移除退出蒙版
var quitBox = document.getElementById('quit-box');
if (quitBox) quitBox.remove();
}
// 常规先初始化,确保切换页面后不会有固定卡片留存
RemoveFixedCardWidget()

新建[Blogroot]\themes\butterfly\source\css\_layout\fixed_card_widget.styl,此处使用stylus交给插件编译,能够更快捷的适配多种内核样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// 垂直居中卡片样式(排除toc目录卡片)
.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 auto
overflow-y: scroll
z-index 999
animation rotateX 0.5s ease
animation-fill-mode forwards
&::-webkit-scrollbar
width: 0
// 针对说说卡片做样式兼容适配
.card-shuo
&.fixed-card-widget
#artitalk_main
max-height 460px
overflow scroll
&::-webkit-scrollbar
display: none
#operare_artitalk
.c2
z-index 1000
// 针对标签卡片做样式兼容适配
.card-tags
&.fixed-card-widget
.card-tag-cloud
max-height 460px
overflow scroll
&::-webkit-scrollbar
display: none
// 控制手机端可见
@media screen and (max-width: 768px)
div#fixedcard-dashboard
display flex!important
// 侧栏悬浮按钮样式
div#fixedcard-dashboard
position fixed
top 150px
width fit-content
height 40px
opacity 0.3
transition all 0.5s
display none
background rgba(255,255,255,0.9)
padding 5px 10px
border-top-right-radius 20px
border-bottom-right-radius 20px
z-index 1000
&:hover
opacity 1
button
&.fixedcard-activebtn
width 30px
opacity 1
pointer-events all
// 按钮样式
button
&.fixedcard-activebtn
width 0px
height 30px
transition all .5s
display flex
opacity 0
align-items center
justify-content space-around
pointer-events none
color #757273
// 悬浮按钮头像
.fixedcard-user-avatar
display inline-block
img
&.fixedcard-user-avatar-img
width 30px
height 30px
border-radius 50%
// 悬浮按钮夜间模式适配
[data-theme="dark"]
div#fixedcard-dashboard
background rgba(55,55,55,0.9)
button
&.fixedcard-activebtn
color #bcbdbd

// 卡片开启动画效果
@keyframes rotateX
from
transform rotateX(90deg)
to
transform rotateX(0deg)
// 退出蒙版效果
div#quit-box
position fixed
display block
left 0
top 0
width 100vh
height 100vh
z-index 99
background rgba(25,25,25,0.3)


[data-theme="dark"]
div#quit-box
background rgba(147, 146, 128, 0.3)

新建[Blogroot]\themes\butterfly\layout\includes\custom\fixed_card_widget.pug,以后的源码魔改教程都会尽量将改动文件归纳到带custom字样的文件夹里,便于管理魔改文件。

1
2
3
4
5
6
7
8
9
10
11
12
#fixedcard-dashboard
if is_post()
each poitem in theme.fixed_card_widget.post
button.fixedcard-activebtn(type="button" title=poitem.title onclick=`FixedCardWidget("` + poitem.type + `","` + poitem.name + `","` + poitem.index + `")`)
i(class=poitem.icon)
else
each paitem in theme.fixed_card_widget.page
button.fixedcard-activebtn(type="button" title=paitem.title onclick=`FixedCardWidget("` + paitem.type + `","` + paitem.name + `","` + paitem.index + `")`)
i(class=paitem.icon)
.fixedcard-user-avatar.fixedcard-activebtn(onclick="RemoveFixedCardWidget()")
img.fixedcard-user-avatar-img(src=url_for(theme.avatar.img) title=config.author)

修改[Blogroot]\themes\butterfly\layout\includes\additional-js.pug,直接加在文件末尾即可,但是注意缩进!

1
2
3
4
  if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv
script(async data-pjax src=url_for(theme.CDN.busuanzi))
+ if !theme.aside.mobile && theme.fixed_card_widget.enable
+ include ./custom/fixed_card_widget.pug

因为还做了page和post页面不同悬浮按钮的配置,为了让它能够自动切换而不是惰性加载,需要修改[Blogroot]\themes\butterfly\layout\includes\third-party\pjax.pug大约第十四行的位置,在pjax选择器中加入悬浮按钮的id。

1
2
3
4
5
6
7
8
9
10
  script.
let pjaxSelectors = [
'title',
'#config-diff',
'#body-wrap',
'#rightside-config-hide',
'#rightside-config-show',
+ "#fixedcard-dashboard",
'.js-pjax'
]

修改[Blogroot]\_config.butterfly.yml,新增配置项,此处的选择器其实就是提取了document.getElementsByClassName("name")[index]document.getElementById("name")这两个方法中的参数来确保能够找到侧栏卡片。原本其实是可以做成自动根据侧栏生成的,但是考虑到还有插件挂载和自定义卡片,以及还有部分用户会刻意隐藏一些侧栏卡片,所以干脆还是让用户自己去配置想要加到菜单的卡片好了。
找id或者class的办法很简单,用F12开启控制台,用左上角的元素选择器点选想要的侧栏卡片,在源码栏找到对应的class或者id。因为class是可以重名的,所以还存在一个序列问题,从0开始计数。此处为了避免语意混乱,建议还是用特征明显的class或者id来选择对应卡片。

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
#侧栏悬浮卡片控制按钮
#https://akilar.top/posts/451ac5f8/
fixed_card_widget:
enable: true
page: #页面显示按钮
- type: class #侧栏卡片选择器类型
name: card-info #侧栏卡片选择器名称
index: 0 #侧栏卡片选择器序列
icon: fas fa-address-book #图标
title: 用户信息 #悬停显示提示
- type: class
name: card-clock
index: 0
icon: fas fa-cloud-sun
title: 电子钟
- type: class
name: card-shuo
index: 0
icon: fas fa-comments
title: 碎碎念
- type: class
name: card-recent-post
index: 0
icon: fas fa-history
title: 最新文章
- type: id
name: card-newest-comments
index: 0
icon: fas fa-comment-dots
title: 最新评论
- type: class
name: card-tags
index: 0
icon: fas fa-tags
title: 标签
- type: class
name: card-webinfo
index: 0
icon: fas fa-chart-line
title: 网站咨询
post: #文章页显示按钮
- type: class
name: card-info
index: 0
icon: fas fa-address-book
title: 用户信息
- type: class
name: card-clock
index: 0
icon: fas fa-cloud-sun
title: 电子钟
- type: class
name: card-recent-post
index: 0
icon: fas fa-history
title: 最新文章

修改[Blogroot]_config.butterfly.yml的inject配置项

1
2
3
4
5
 inject:
head:

bottom:
+ - <script data-pjax defer src="/js/custom/fixed_card_widget.js"></script>

注意要关闭手机端显示侧栏卡片才能启用fixed卡片样式。

1
2
3
4
5
6
7
  aside:
enable: true
hide: false
button: true
- mobile: true # display on mobile
+ mobile: false # display on mobile
position: right # left or right

设置弹窗

这个功能使用的注:这个魔改使用了Ariasakaの小窝Leonus的教程

新建setting.pug文件

[blogRoot]/themes\acryple\layout\includes\setting.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
html
body
#settingWindow.js-pjax
span.setting-title
span#stt 控制面板
a(id="close-console" onclick="toggleWinbox();") ×
button#backer(onclick='$(\'.asetting\').hide();$(\'.settingx\').show();$(\'#backer\').hide()')
i.fa.fa-chevron-left
span 返回
.settings
#setting-buttons
button.settingx(onclick='$(\'#theme-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fas.fa-layer-group
span 外观
button.settingx(onclick='$(\'#font-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fa.fa-font
span 字体
button.settingx(onclick='$(\'#background-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.far.fa-image
span 背景
button.settingx(onclick='$(\'#con-echarts\').show();$(\'.settingx\').hide();$(\'#backer\').show();var evt = document.createEvent("HTMLEvents");evt.initEvent("resize", false, false);window.dispatchEvent(evt);')
i.fas.fa-chart-pie
span 统计
button.settingx(onclick='$(\'#con-abouts\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fa.fa-cloud-download
span 关于
#setting-hides
#theme-settings.asetting
h2.content-head 性能设置
p
.content(style='display:flex')
input#blur(type='checkbox', onclick='setBlur()')
.content-text 禁用模糊效果
//- .content(style='display:flex')
//- input#yjjs(type='checkbox', onclick='yjjs1()')
//- .content-text 硬件加速
.content(style='display:flex')
input#fpson(type='checkbox', onclick='fpssw()' style="flex-shrink: 0")
.content-text
span 开启帧率检测(
a(href='javascript:window.location.reload()') 刷新
span 后生效)
p
h2.content-head 主题设置
//- .content(style='display:flex')
//- input#hideAside(type='checkbox', onclick='toggleRightside()')
//- .content-text 隐藏侧边栏
.content(style='display:flex')
input#hideAplayer(type='checkbox', onclick='toggleAplayer()')
.content-text 显示aplayer
.content(style='display:flex')
input#hideSakura(type='checkbox', onclick='toggleSakuras()')
.content-text 落樱特效
.content(style='display:flex')
input#autoTheme(type='checkbox', onclick='toggleAutoTheme()')
.content-text 明暗模式自动切换
.content(style='display:flex')
input#autoColor(type='checkbox', onclick='autoColor()')
.content-text 自动主题色(跟随文章封面)
| 未完工
.content(style='display:flex')
input#hideAplayer(type='checkbox', onclick='toggleNav()')
.content-text 固定导航栏
| ###
.content(style='display:flex')
button.content-button(onclick='switchTheme()') 切换主题

p
h3.content-head 主题色
#themeColorSettings.content(style='display:flex')
input#red(type='radio', name='colors', onclick='setColor(\'red\')')
input#orange(type='radio', name='colors', onclick='setColor(\'orange\')')
input#yellow(type='radio', name='colors', onclick='setColor(\'yellow\')')
input#green(type='radio', name='colors', onclick='setColor(\'green\')')
input#blue(type='radio', name='colors', onclick='setColor(\'blue\')')
input#heoblue(type='radio', name='colors', onclick='setColor(\'heoblue\')')
input#darkblue(type='radio', name='colors', onclick='setColor(\'darkblue\')')
input#purple(type='radio', name='colors', onclick='setColor(\'purple\')')
input#pink(type='radio', name='colors', onclick='setColor(\'pink\')', checked)
input#black(type='radio', name='colors', onclick='setColor(\'black\')')
input#blackgray(type='radio', name='colors', onclick='setColor(\'blackgray\')')
#font-settings.asetting
h2.content-head 字体设置
p#swfs
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'HYTMR\'!important;color:black', onclick='setFont(\'HYTMR\')') 汉仪唐美人
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'HYPailou\'!important;color:black', onclick='setFont(\'HYPailou\')') 汉仪新蒂牌楼
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZXJLJ\'!important;color:black', onclick='setFont(\'FZXJLJ\')') 方正金陵体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZXS\'!important;color:black', onclick='setFont(\'FZXS\')') 方正像素体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'ZhuZiAWan\'!important;color:black', onclick='setFont(\'ZhuZiAWan\')') 筑紫A丸ゴシック
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZODZK\'!important;color:black', onclick='setFont(\'FZODZK\')') 方正欧蝶正楷
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'Source Serif\'!important;color:black', onclick='setFont(\'Source Serif\')') 思源宋体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'Source Sans\'!important;color:black', onclick='setFont(\'Source Sans\')') 思源黑体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:-apple-system, IBM Plex Mono ,monosapce,\'微软雅黑\', sans-serif;', onclick='setFont(\'main\')') 系统默认
br
#background-settings.asetting
h2(style='margin-left:10px') 背景设置
div
span 注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效
button.content-button(onclick='localStorage.removeItem(\'blogbg\');location.reload();')
i.fa-solid.fa-arrows-rotate
span 点我恢复默认背景
button.content-button(onclick='switchTheme()') 切换主题
h3 图片(手机)
.bgbox
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)\')')
h3 图片(电脑)
.bgbox
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)\')')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aea549be6.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aea549be6.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aec701a68.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aec701a68.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aef4a5543.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aef4a5543.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324af3622884.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324af3622884.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/5.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/5.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/6.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/6.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/7.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/7.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/12/08/6391b77ed767c.png)\')')
img(src='https://bu.dusays.com/2022/12/08/6391b77ed767c.png')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/9.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/9.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/10.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/10.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/11.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/11.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/12.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/12.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/13.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/13.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/14.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/14.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/15.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/15.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/16.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/16.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/17.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/17.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/18.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/18.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/19.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/19.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/20.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/20.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/21.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/21.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/22.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/22.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/23.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/23.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/24.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/24.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/25.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/25.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/26.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/26.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/27.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/27.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/28.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/28.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/29.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/29.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/30.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/30.webp')
h3 渐变色
.bgbox
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #eecda3, #ef629f)', onclick='changeBg(\'linear-gradient(to right, #eecda3, #ef629f)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #B7D31E, #42CE1E)', onclick='changeBg(\'linear-gradient(to right, #B7D31E, #42CE1E)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #06DE86, #06A5DE)', onclick='changeBg(\'linear-gradient(to right, #06DE86, #06A5DE)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #189BC4, #183DC4)', onclick='changeBg(\'linear-gradient(to right, #189BC4, #183DC4)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #C018C4, #C41818)', onclick='changeBg(\'linear-gradient(to right, #C018C4, #C41818)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #8B00BB, #030094)', onclick='changeBg(\'linear-gradient(to right, #8B00BB, #030094)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #eecda3, #ef629f)', onclick='changeBg(\'linear-gradient(to right, #eecda3, #ef629f)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)', onclick='changeBg(\'linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)', onclick='changeBg(\'linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)\')')
h3 纯色
.bgbox
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #7D9D9C', onclick='changeBg(\'#7D9D9C\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #fff', onclick='changeBg(\'#fff\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #49A6E9', onclick='changeBg(\'#49A6E9\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #F7CEFF', onclick='changeBg(\'#F7CEFF\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #FFFFCE', onclick='changeBg(\'#FFFFCE\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #CFFFCE', onclick='changeBg(\'#CFFFCE\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #17EFE9', onclick='changeBg(\'#17EFE9\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #9F17EF', onclick='changeBg(\'#9F17EF\')')
#con-echarts.asetting
h1 文章统计
h2 监控
iframe(src="https://status.yisous.xyz" width="100%" height="500px" frameborder="no")
if !is_page()
h2 文章统计
script(src="https://npm.elemecdn.com/echarts@4.9.0/dist/echarts.min.js")
div(id="posts-chart" data-start="2021-01" style="border-radius: 8px; height: 300px; padding: 10px;")
div(id="tags-chart" data-length="10" style="border-radius: 8px; height: 300px; padding: 10px;")
div(id="categories-chart" data-parent="true" style="border-radius: 8px; height: 300px; padding: 10px;")
h2 访问统计
| 显示不出来请刷新页面
//-下面换成自己的51la统计

#con-abouts.asetting
h1 关于
| Hexo-theme-Acryple v1.0.100
br
| Ariasaka Console v0.01
br
| 欢迎
a(href="/messageboard")
| 反馈!
#setting-sidesl
button(title="恢复默认设置" class="reSettings con-rightside")
i.fa.fa-repeat
#setting-sides
button(title="繁简转换" class="con-rightside" id="con-translate" onclick="javascript:rmf.translate();")
i.iconfont.icon-fanti
button(title="昼夜切换" class="con-rightside" id="con-mode" onclick="switchDarkMode();")
i.fa.fa-adjust
if is_post()||is_page()
button(title="阅读模式" class="con-rightside" id="con-reading" onclick="rmf.switchReadMode();")
i.fa.fa-book-open
if !is_page()
button(title="单双栏切换" class="con-rightside" id="con-toggleaside" onclick="toggleAside();")
i.fas.fa-arrows-alt-h
if !is_page()
button(title="左右栏切换" class="con-rightside" id="con-toggleleftaside" onclick="switchAside();")
i.fas.fa-binoculars
if is_post()||is_page()
button(title="开关弹幕" class="con-rightside" id="con-barrage" onclick="switchCommentBarrage();")
i.iconfont.icon-danmu
button(title="全屏" class="con-rightside" id="con-fullscreen" onclick="fullScreen();")
i.fas.fa-expand

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
document.addEventListener('pjax:complete', tosetting);
document.addEventListener('DOMContentLoaded', tosetting);
function tosetting(){
$("#settingWindow").hide();
if(localStorage.getItem("blur")=="false"){
blur=0;
}else{
blur=1;

}
if(localStorage.getItem("yjjs")=="true"){
yjjs=1;
}else{
yjjs=0;

}
if(localStorage.getItem("fpson")==undefined){
localStorage.setItem("fpson","1");
}
if(!blur){
document.getElementById("settingStyle").innerText=`
*,*:not(.card-info)::before,*::after{
-webkit-backdrop-filter: none!important;
backdrop-filter: none!important;
-webkit-filter: none!important;
filter: none!important;
}`}
else{
document.getElementById("settingStyle").innerText=''
}
setBlur=function(){
blur=!blur;
localStorage.setItem("blur",blur);
if(!blur){
document.getElementById("settingStyle").innerText=`
*{
-webkit-backdrop-filter: none!important;
backdrop-filter: none!important;
-webkit-filter: none!important;
filter: none!important;
}`}
else{
document.getElementById("settingStyle").innerText=''
}
}
// if(yjjs){
// document.getElementById("yjjs").innerText=`
// *:not(#web_bg){
// transform:translateZ(0);
// backface-visibility: hidden
// }`}
// else{
// document.getElementById("yjjs").innerText=``
// }
yjjs1=function(){
yjjs=!yjjs;
localStorage.setItem("yjjs",yjjs)
// if(yjjs){
// document.getElementById("yjjs").innerText=`
// *:not(#web_bg){
// transform:translateZ(0);
// backface-visibility: hidden
// }`}
// else{
// document.getElementById("yjjs").innerText=``
// }
}
if(localStorage.getItem("blogTheme")=="acrylic"){
document.getElementById("css").href="";
}
switchTheme=function(){
if(document.getElementById("css").href==window.location.protocol+"//"+window.location.host+"/css/stylessimple.css"){
document.getElementById("css").href=""
localStorage.setItem("blogTheme","acrylic");
}else{
document.getElementById("css").href="/css/stylessimple.css"
localStorage.setItem("blogTheme","simple");
}
}
setColor=function(c){
document.getElementById("themeColor").innerText=`:root{--lyx-theme:var(--lyx-${c})!important}`;
localStorage.setItem("themeColor",c);

}
setFont=function(n){
localStorage.setItem("font",n);
if(n=="main"){
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="-apple-system, IBM Plex Mono ,monospace,'微软雅黑', sans-serif"
}
}
else if(n=="HYPailou"){
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="Fredoka,HYPailou,KyoukashoProL,-apple-system, IBM Plex Mono ,monospace,'微软雅黑', sans-serif"
}
}
else{
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="var(--global-font),KyoukashoProL,-apple-system, IBM Plex Mono ,monosapce,\"微软雅黑\", sans-serif"
}
document.body.style.fontFamily="var(--global-font),KyoukashoProL,-apple-system, IBM Plex Mono ,monosapce,'微软雅黑', sans-serif"
document.documentElement.style.setProperty('--global-font', n)
}
}
if(localStorage.getItem("themeColor")==undefined){
localStorage.setItem("themeColor","pink");
}

setColor(localStorage.getItem("themeColor"));



if(localStorage.getItem("hideRightside")==undefined){
localStorage.setItem("hideRightside","0");
}

if(localStorage.getItem("hideRightside")=="1"){
$("#rightside").toggle()
}
toggleRightside=function(){
$("#rightside").toggle();
localStorage.setItem("hideRightside",Math.abs(Number(localStorage.getItem("hideRightside"))-1))
}
if(localStorage.getItem("font")==undefined){
localStorage.setItem("font","HYTMR")
}
setFont(localStorage.getItem("font"))
// 存数据
// name:命名 data:数据
saveData=function(name, data) {
localStorage.setItem(name, JSON.stringify({ 'time': Date.now(), 'data': data }))
}

// 取数据
// name:命名 time:过期时长,单位分钟,如传入30,即加载数据时如果超出30分钟返回0,否则返回数据
loadData=function(name, time) {
let d = JSON.parse(localStorage.getItem(name));
// 过期或有错误返回 0 否则返回数据
if (d) {
let t = Date.now() - d.time
if (t < (time * 60 * 1000) && t > -1) return d.data;
}
return 0;
}
// 切换背景函数
// 此处的flag是为了每次读取时都重新存储一次,导致过期时间不稳定
// 如果flag为0则存储,即设置背景. 为1则不存储,即每次加载自动读取背景.
changeBg=function(s, flag) {
let bg = document.getElementById('web_bg')
if (s.charAt(0) == '#') {
bg.style.backgroundColor = s
bg.style.backgroundImage = 'none'
} else bg.style.backgroundImage = s
if (!flag) { saveData('blogbg', s) }
}
// 上面两个函数如果你有其他需要存取数据的功能,也可以直接使用

// 读取背景
try {
let data = loadData('blogbg', 1440)
if (data) changeBg(data, 1)
else localStorage.removeItem('blogbg');
} catch (error) { localStorage.removeItem('blogbg'); }



fpssw=function(){
if(localStorage.getItem("fpson")=="1"){
localStorage.setItem("fpson","0");
}else{
localStorage.setItem("fpson","1");
}
}
$(".asetting").hide();
$('#backer').hide();
$("#"+localStorage.getItem("themeColor")).attr("checked", true);
if(localStorage.getItem("blur")=="false"){
document.getElementById("blur").checked=true;
}
if(localStorage.getItem("yjjs")=="true"){
document.getElementById("yjjs").checked=true;
}
if(localStorage.getItem("fpson")=="1"){
document.getElementById("fpson").checked=true;
}


if(localStorage.getItem("sakurahide")=="false"){
document.getElementById("hideSakura").checked=true;
isSakura=1;
}
else if(localStorage.getItem("sakurahide")==null){
localStorage.setItem("sakurahide","false");
document.getElementById("hideSakura").checked=true;
isSakura=1;
}
else{
setTimeout(
stopp,1000);
isSakura=0;
}
if(localStorage.getItem("aplayerhide")=="false"){
document.getElementById("hideAplayer").checked=true;
}
else if(localStorage.getItem("aplayerhide")==null){
localStorage.setItem("aplayerhide","false");
document.getElementById("hideAplayer").checked=true;
}
else{
doStuff=function() {
flag=0;
try{
ap=aplayers[0];
ap.list;
flag=1;
}catch{
setTimeout(doStuff, 50);
return;
}
if(flag){
$(".aplayer-fixed").hide()
}
}
doStuff();

}

document.getElementsByClassName("reSettings")[0].onclick=function(){
localStorage.clear()
window.location.reload()
}

toggleWinbox=function(){
$("#settingWindow").fadeToggle();
if(document.getElementById("settingWindow").style.display!="none"){
document.getElementById("settingWindow").style.display="flex";
}
}
fullScreen=function() {
if (document.fullscreenElement) document.exitFullscreen()
else document.documentElement.requestFullscreen();
}
toggleAside=function(){
const $htmlDom = document.documentElement.classList
$htmlDom.contains('hide-aside')
? saveToLocal.set('aside-status', 'show', 2)
: saveToLocal.set('aside-status', 'hide', 2)
$htmlDom.toggle('hide-aside')
}
toggleAplayer=function(){
$(".aplayer-fixed").toggle()
if(localStorage.getItem("aplayerhide")=="true"){
localStorage.setItem("aplayerhide",false);
}
else{
localStorage.setItem("aplayerhide",true);
}
}
// position = $(window).scrollTop();
// $(window).scroll(function () {

// scroll = $(window).scrollTop();

// if (scroll > position) {
// document.getElementsByTagName("header")[0].style.transform="translateY(58px)";
// } else {


// document.getElementsByTagName("header")[0].style.transform="";

// }

// position = scroll;
// });
toggleSakuras=function(){
isSakura=!isSakura;
stopp(isSakura);
if(localStorage.getItem("sakurahide")=="true"){
localStorage.setItem("sakurahide",false);
}
else{
localStorage.setItem("sakurahide",true);
}
}
switchAside=function(){
if(left){
document.getElementById("aside-content").classList.add("right");
document.querySelector(".layout > div:first-child").classList.add("left");
localStorage.setItem("leftAside","false");
}
else{
document.getElementById("aside-content").className="aside-content";
document.querySelector(".layout > div:first-child").className="";
try{
document.querySelector("#recent-posts").className="recent-posts";
}catch(err){}localStorage.setItem("leftAside","true");}
left=!left;
}
left=1;
if(localStorage.getItem("leftAside")=="true"||localStorage.getItem("leftAside")==null){

}else{
switchAside();
}
if(localStorage.getItem("autoTheme")=="true"){
localStorage.setItem("autoTheme","false");
document.getElementById("autoTheme").checked=true;
var time=new Date();
if(time.getHours()<=7||time.getHours()>=19){
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
}
else{
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
}
if(location.href.indexOf('posts')!=-1){
var xhr = new XMLHttpRequest();
var url = document.querySelector('#page-header').style.backgroundImage.split('url("')[1].split('")')[0];
xhr.open("GET","https://apis.yisous.xyz/api/imageColor?imgurl="+url, true);
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState===4) {
if(xhr.status===200) {
document.getElementById("themeColor").innerText=`:root{--lyx-theme:${xhr.responseText}!important}`;
}
}
}
}
toggleAutoTheme=()=>{
if(localStorage.getItem("autoTheme")=="true"){
localStorage.setItem("autoTheme","false");
$("#con-mode").show();
}
else{
localStorage.setItem("autoTheme","true");
var time=new Date();
if(time.getHours()<=7||time.getHours()>=19){
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
}
else{
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
$("#con-mode").hide();
}
}
}
switchDarkMode = function () {
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)
} else {
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
// handle some cases
typeof utterancesTheme === 'function' && utterancesTheme()
typeof FB === 'object' && window.loadFBComment()
window.DISQUS && document.getElementById('disqus_thread').children.length && setTimeout(() => window.disqusReset(), 200)
};

新建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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*使用了Chrome105新特性has,兼容性不好qwq*/
.con-rightside{
height:50px!important;
width: 50px!important;
border-radius: 30px;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
-ms-border-radius: 30px;
-o-border-radius: 30px;
margin:10px;
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
.con-rightside:hover{
background-color: rgba(129, 129, 129, 0.568);
}
.con-rightside i::before{
font-size:30px;
}
[data-theme="dark"] .con-rightside i::before{
color:white
}
.con-rightside:hover{
background-color: rgba(129, 129, 129, 0.568);
}
@media screen and (max-width:600px){
.con-rightside i::before{
font-size: 16px;
}
.con-rightside{
height:20px!important;
width:20px!important;
}
}
@media screen and (max-width:768px){
#con-barrage{
display: none!important;
}
}
#setting-buttons{
display: flex;
flex-wrap: wrap;
}
.setting-title{
text-align: center;
font-size: 30px;
display: flex;
}
#setting-sides{
margin-left: auto;
}
#setting-sides{
white-space: nowrap;
}
#setting-sidesl{
display: flex;
}
.settings .content{
margin-left:20px;
}
.settings{
margin:15px
}
/* 开关 */
.settings input[type="checkbox"] {
width: 38px;
height: 20px;
position: relative;
border: 1px solid #000000;
background-color: #0000;
border-radius: 12px;
background-clip: content-box;
display: inline-block;
-webkit-appearance: none;
user-select: none;
outline: none;
transform: translateY(5px);}
[data-theme="dark"] .settings input[type="checkbox"] {
border: 1px solid white;
}
.settings input[type="checkbox"]:before {
content: '';
width: 12px;
height: 12px;
position: absolute;
top: 3px;
left: 5px;
border-radius: 10px;
background-color: #000;}
[data-theme="dark"] .settings input[type="checkbox"]:before{
background-color: white;
}
.settings input[type="checkbox"]:checked {
background-color: var(--lyx-theme);border-color:var(--lyx-theme)}
.settings input[type="checkbox"]:checked:before {
left: 19px;background-color: white!important;}

.settings input[type="checkbox"] {
transition: border background-color box-shadow }
.settings input[type="checkbox"]:before {
transition: left 0.2s;}
.settings input[type="checkbox"]:checked {
background-color: var(--lyx-theme);
/* transition: border ease 0.4s, background-color ease 1.2s; */
}.settings input[type="checkbox"]:checked:before {
transition: left 0.2s;}
.settings input[type="checkbox"]:checked:hover{
opacity: 0.8;
}
.settings input[type="checkbox"]:active{
background-color: #666666!important;
border-color:#666666!important;
}
.settings input[type="checkbox"]:active::before{
background-color:white!important;
}
.settings{
overflow: scroll;
width: 100%;
}
#settingWindow{
position: fixed;
display: block;
width: 80%;
max-width: 800px;
left: 50%;
top: 50%;
max-height: 80%;
background-color: #ffffffdd;
border-radius: 20px;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
-ms-border-radius: 20px;
-o-border-radius: 20px;
border: 1px solid var(--lyx-border);
padding:30px;
backdrop-filter: blur(10px);
-ms-transform-origin-y:translate(-50%,-50%);
-webkit-transform:translate(-50%,-50%);
-moz-transform:translate(-50%,-50%);
-ms-transform:translate(-50%,-50%);
-o-transform:translate(-50%,-50%);
z-index: 514;
display: none;
}
.settings{
overflow: scroll;
width: 100%;
}
#settingWindow{
display: none;
flex-direction: column;
}
.settingx{
width: 46%;
text-align: left;
font-size: 28px;
padding: 10px;
margin: 10px;
background-color: var(--lyx-light-grey);
opacity: 0.8;
border-radius: 10px;
}
.settingx:hover{
background-color: var(--lyx-gray);
}
.settingx i{
margin: 5px;
}
@media screen and (max-width:768px){
.settingx{
width:100%!important;
}
}
.setting-title{
text-align: center;
font-size: 30px;
display: flex;
}
#close-console{
text-align: right;
}
#stt,#close-console{
margin-left: auto;
}
#close-console:not(#close-console:hover){
color: var(--global-font-color);
}

然后在[blogRoot]/themes/butterfly/layout/includes/layout.pug中添加:

1
2
3
4
...
include ./rightside.pug
! =partial('includes/third-party/search/index', {}, {cache: true})
+ ! =partial('includes/setting',{}, {cache:false})

还要引入一些外挂css标签:

1
2
3
4
5
6
7
8
9
10
inject:
head:
- <style id="settingStyle"></style>
- <style id="css"></style>
- <style id="themeColor"></style>
...
bottom:
- <script type="text/javascript" src="https://gcore.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script>
...

butterfly\layout\includes\rightside.pug添加按钮

1
2
3
4
5
6
7
when 'comment'
if commentsJsLoad
a#to_comment(href="#post-comment" title=_p("rightside.scroll_to_comment"))
i.fas.fa-comments
+ when 'bg'
+ button(type="button" title='切换背景' onclick="toggleWinbox()")
+ i.fas.fa-display

然后修改:

1
2
3
4
5
#rightside
- const { enable, hide, show } = theme.rightside_item_order
- const hideArray = enable ? hide && hide.split(',') : ['readmode','translate','darkmode','hideAside']
- - const showArray = enable ? show && show.split(',') : ['toc','chat','comment']
+ - const showArray = enable ? show && show.split(',') : ['toc','chat','comment','bg']

修改鼠标样式

致美化下载鼠标样式

在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
/* 全局默认鼠标指针 */
body,
html {
cursor: url('/self/img/cursors/mogu/normal.cur'),auto !important;
}
/* 悬停图片时的鼠标指针 */
img {
cursor: url('/self/img/cursors/mogu/normal.cur'), auto !important;
}
/* 悬停图片弹出窗口时的鼠标指针 */
.fancybox__slide{
cursor: url('./mouse/xxx.cur'), auto !important;
}
.carousel__slide{
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选择链接标签时的鼠标指针 */
a:hover,#site-name:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选择代码框展开和复制按钮时的鼠标指针 */
.copy-button:hover,.expand:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选中输入框时的鼠标指针 */
input:hover, textarea:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停按钮时的鼠标指针 */
button:hover,.scroll-down-effects:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停页脚链接标签(例如页脚徽标)时的鼠标指针 */
#footer-wrap a:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停页码时的鼠标指针 */
#pagination .page-number:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停菜单栏时的鼠标指针 */
#nav .site-page:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 悬停滚动条的鼠标指针(只对Chrome有效) */
::-webkit-scrollbar:hover{
cursor: url('./mouse/xxx.cur'), auto!important;
}
/* 悬停评论按钮的鼠标指针(我使用的是Gitalk/Valine) */
.switch-btn,.switch-btn:before,.gt-user-inner,.gt-ico,.gt-user-name,.gt-btn,.vbtn,svg,.at_button{
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 悬停非链接文本时的鼠标指针 */
h1,h2,h3,h4,h5,h6,#subtitle,.content,.line,.post-content p,.post-content li{
cursor: url('/self/img/cursors/mogu/text.ani'), auto;
}
/* 悬停文章日期 */
.post-meta-date:hover,.post-meta-date-created:hover{
cursor: url('./mouse/xxx.cur'), auto!important;
}

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

评论
WalineValine
公告
好好学习,天天向上
最新文章
控制面板×

性能设置

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

主题设置

显示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 /*我的主题色*/
}

侧边栏分类归档美化

修改 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 */

分类页和标签页面添加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;
}

文章页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
---

文章增加最新文章标识

转载于云端

修改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插件

在博客根目录[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

手机端悬浮窗

使用akilar教程

新建[Blogroot]\themes\butterfly\source\js\custom\fixed_card_widget.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
// 固定卡片点击动作
function FixedCardWidget(type,name,index){
// 根据id或class选择元素
if (type === "id"){
var tempcard = document.getElementById(name);
}
else{
var tempcard = document.getElementsByClassName(name)[index];
}
// 若元素存在
if (tempcard) {
// 首先判断是否存在fixed-card-widget类
if (tempcard.className.indexOf('fixed-card-widget') > -1){
// 存在则移除
RemoveFixedCardWidget();
}
else{
// 不存在则先初始化防止卡片叠加
RemoveFixedCardWidget();
//新建退出蒙版
CreateQuitBox();
// 再添加固定卡片样式
tempcard.classList.add('fixed-card-widget');
}
}
}
//创建一个蒙版,作为退出键使用
function CreateQuitBox(){
var quitBox = `<div id="quit-box" onclick="RemoveFixedCardWidget()"></div>`
var asideContent = document.getElementById('aside-content');
asideContent.insertAdjacentHTML("beforebegin",quitBox)
}
// 移除卡片方法
function RemoveFixedCardWidget(){
var activedItems = document.querySelectorAll('.fixed-card-widget');
if (activedItems) {
for (i = 0; i < activedItems.length; i++) {
activedItems[i].classList.remove('fixed-card-widget');
}
}
//移除退出蒙版
var quitBox = document.getElementById('quit-box');
if (quitBox) quitBox.remove();
}
// 常规先初始化,确保切换页面后不会有固定卡片留存
RemoveFixedCardWidget()

新建[Blogroot]\themes\butterfly\source\css\_layout\fixed_card_widget.styl,此处使用stylus交给插件编译,能够更快捷的适配多种内核样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// 垂直居中卡片样式(排除toc目录卡片)
.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 auto
overflow-y: scroll
z-index 999
animation rotateX 0.5s ease
animation-fill-mode forwards
&::-webkit-scrollbar
width: 0
// 针对说说卡片做样式兼容适配
.card-shuo
&.fixed-card-widget
#artitalk_main
max-height 460px
overflow scroll
&::-webkit-scrollbar
display: none
#operare_artitalk
.c2
z-index 1000
// 针对标签卡片做样式兼容适配
.card-tags
&.fixed-card-widget
.card-tag-cloud
max-height 460px
overflow scroll
&::-webkit-scrollbar
display: none
// 控制手机端可见
@media screen and (max-width: 768px)
div#fixedcard-dashboard
display flex!important
// 侧栏悬浮按钮样式
div#fixedcard-dashboard
position fixed
top 150px
width fit-content
height 40px
opacity 0.3
transition all 0.5s
display none
background rgba(255,255,255,0.9)
padding 5px 10px
border-top-right-radius 20px
border-bottom-right-radius 20px
z-index 1000
&:hover
opacity 1
button
&.fixedcard-activebtn
width 30px
opacity 1
pointer-events all
// 按钮样式
button
&.fixedcard-activebtn
width 0px
height 30px
transition all .5s
display flex
opacity 0
align-items center
justify-content space-around
pointer-events none
color #757273
// 悬浮按钮头像
.fixedcard-user-avatar
display inline-block
img
&.fixedcard-user-avatar-img
width 30px
height 30px
border-radius 50%
// 悬浮按钮夜间模式适配
[data-theme="dark"]
div#fixedcard-dashboard
background rgba(55,55,55,0.9)
button
&.fixedcard-activebtn
color #bcbdbd

// 卡片开启动画效果
@keyframes rotateX
from
transform rotateX(90deg)
to
transform rotateX(0deg)
// 退出蒙版效果
div#quit-box
position fixed
display block
left 0
top 0
width 100vh
height 100vh
z-index 99
background rgba(25,25,25,0.3)


[data-theme="dark"]
div#quit-box
background rgba(147, 146, 128, 0.3)

新建[Blogroot]\themes\butterfly\layout\includes\custom\fixed_card_widget.pug,以后的源码魔改教程都会尽量将改动文件归纳到带custom字样的文件夹里,便于管理魔改文件。

1
2
3
4
5
6
7
8
9
10
11
12
#fixedcard-dashboard
if is_post()
each poitem in theme.fixed_card_widget.post
button.fixedcard-activebtn(type="button" title=poitem.title onclick=`FixedCardWidget("` + poitem.type + `","` + poitem.name + `","` + poitem.index + `")`)
i(class=poitem.icon)
else
each paitem in theme.fixed_card_widget.page
button.fixedcard-activebtn(type="button" title=paitem.title onclick=`FixedCardWidget("` + paitem.type + `","` + paitem.name + `","` + paitem.index + `")`)
i(class=paitem.icon)
.fixedcard-user-avatar.fixedcard-activebtn(onclick="RemoveFixedCardWidget()")
img.fixedcard-user-avatar-img(src=url_for(theme.avatar.img) title=config.author)

修改[Blogroot]\themes\butterfly\layout\includes\additional-js.pug,直接加在文件末尾即可,但是注意缩进!

1
2
3
4
  if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv
script(async data-pjax src=url_for(theme.CDN.busuanzi))
+ if !theme.aside.mobile && theme.fixed_card_widget.enable
+ include ./custom/fixed_card_widget.pug

因为还做了page和post页面不同悬浮按钮的配置,为了让它能够自动切换而不是惰性加载,需要修改[Blogroot]\themes\butterfly\layout\includes\third-party\pjax.pug大约第十四行的位置,在pjax选择器中加入悬浮按钮的id。

1
2
3
4
5
6
7
8
9
10
  script.
let pjaxSelectors = [
'title',
'#config-diff',
'#body-wrap',
'#rightside-config-hide',
'#rightside-config-show',
+ "#fixedcard-dashboard",
'.js-pjax'
]

修改[Blogroot]\_config.butterfly.yml,新增配置项,此处的选择器其实就是提取了document.getElementsByClassName("name")[index]document.getElementById("name")这两个方法中的参数来确保能够找到侧栏卡片。原本其实是可以做成自动根据侧栏生成的,但是考虑到还有插件挂载和自定义卡片,以及还有部分用户会刻意隐藏一些侧栏卡片,所以干脆还是让用户自己去配置想要加到菜单的卡片好了。
找id或者class的办法很简单,用F12开启控制台,用左上角的元素选择器点选想要的侧栏卡片,在源码栏找到对应的class或者id。因为class是可以重名的,所以还存在一个序列问题,从0开始计数。此处为了避免语意混乱,建议还是用特征明显的class或者id来选择对应卡片。

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
#侧栏悬浮卡片控制按钮
#https://akilar.top/posts/451ac5f8/
fixed_card_widget:
enable: true
page: #页面显示按钮
- type: class #侧栏卡片选择器类型
name: card-info #侧栏卡片选择器名称
index: 0 #侧栏卡片选择器序列
icon: fas fa-address-book #图标
title: 用户信息 #悬停显示提示
- type: class
name: card-clock
index: 0
icon: fas fa-cloud-sun
title: 电子钟
- type: class
name: card-shuo
index: 0
icon: fas fa-comments
title: 碎碎念
- type: class
name: card-recent-post
index: 0
icon: fas fa-history
title: 最新文章
- type: id
name: card-newest-comments
index: 0
icon: fas fa-comment-dots
title: 最新评论
- type: class
name: card-tags
index: 0
icon: fas fa-tags
title: 标签
- type: class
name: card-webinfo
index: 0
icon: fas fa-chart-line
title: 网站咨询
post: #文章页显示按钮
- type: class
name: card-info
index: 0
icon: fas fa-address-book
title: 用户信息
- type: class
name: card-clock
index: 0
icon: fas fa-cloud-sun
title: 电子钟
- type: class
name: card-recent-post
index: 0
icon: fas fa-history
title: 最新文章

修改[Blogroot]_config.butterfly.yml的inject配置项

1
2
3
4
5
 inject:
head:

bottom:
+ - <script data-pjax defer src="/js/custom/fixed_card_widget.js"></script>

注意要关闭手机端显示侧栏卡片才能启用fixed卡片样式。

1
2
3
4
5
6
7
  aside:
enable: true
hide: false
button: true
- mobile: true # display on mobile
+ mobile: false # display on mobile
position: right # left or right

设置弹窗

这个功能使用的注:这个魔改使用了Ariasakaの小窝Leonus的教程

新建setting.pug文件

[blogRoot]/themes\acryple\layout\includes\setting.pug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
html
body
#settingWindow.js-pjax
span.setting-title
span#stt 控制面板
a(id="close-console" onclick="toggleWinbox();") ×
button#backer(onclick='$(\'.asetting\').hide();$(\'.settingx\').show();$(\'#backer\').hide()')
i.fa.fa-chevron-left
span 返回
.settings
#setting-buttons
button.settingx(onclick='$(\'#theme-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fas.fa-layer-group
span 外观
button.settingx(onclick='$(\'#font-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fa.fa-font
span 字体
button.settingx(onclick='$(\'#background-settings\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.far.fa-image
span 背景
button.settingx(onclick='$(\'#con-echarts\').show();$(\'.settingx\').hide();$(\'#backer\').show();var evt = document.createEvent("HTMLEvents");evt.initEvent("resize", false, false);window.dispatchEvent(evt);')
i.fas.fa-chart-pie
span 统计
button.settingx(onclick='$(\'#con-abouts\').show();$(\'.settingx\').hide();$(\'#backer\').show();')
i.fa.fa-cloud-download
span 关于
#setting-hides
#theme-settings.asetting
h2.content-head 性能设置
p
.content(style='display:flex')
input#blur(type='checkbox', onclick='setBlur()')
.content-text 禁用模糊效果
//- .content(style='display:flex')
//- input#yjjs(type='checkbox', onclick='yjjs1()')
//- .content-text 硬件加速
.content(style='display:flex')
input#fpson(type='checkbox', onclick='fpssw()' style="flex-shrink: 0")
.content-text
span 开启帧率检测(
a(href='javascript:window.location.reload()') 刷新
span 后生效)
p
h2.content-head 主题设置
//- .content(style='display:flex')
//- input#hideAside(type='checkbox', onclick='toggleRightside()')
//- .content-text 隐藏侧边栏
.content(style='display:flex')
input#hideAplayer(type='checkbox', onclick='toggleAplayer()')
.content-text 显示aplayer
.content(style='display:flex')
input#hideSakura(type='checkbox', onclick='toggleSakuras()')
.content-text 落樱特效
.content(style='display:flex')
input#autoTheme(type='checkbox', onclick='toggleAutoTheme()')
.content-text 明暗模式自动切换
.content(style='display:flex')
input#autoColor(type='checkbox', onclick='autoColor()')
.content-text 自动主题色(跟随文章封面)
| 未完工
.content(style='display:flex')
input#hideAplayer(type='checkbox', onclick='toggleNav()')
.content-text 固定导航栏
| ###
.content(style='display:flex')
button.content-button(onclick='switchTheme()') 切换主题

p
h3.content-head 主题色
#themeColorSettings.content(style='display:flex')
input#red(type='radio', name='colors', onclick='setColor(\'red\')')
input#orange(type='radio', name='colors', onclick='setColor(\'orange\')')
input#yellow(type='radio', name='colors', onclick='setColor(\'yellow\')')
input#green(type='radio', name='colors', onclick='setColor(\'green\')')
input#blue(type='radio', name='colors', onclick='setColor(\'blue\')')
input#heoblue(type='radio', name='colors', onclick='setColor(\'heoblue\')')
input#darkblue(type='radio', name='colors', onclick='setColor(\'darkblue\')')
input#purple(type='radio', name='colors', onclick='setColor(\'purple\')')
input#pink(type='radio', name='colors', onclick='setColor(\'pink\')', checked)
input#black(type='radio', name='colors', onclick='setColor(\'black\')')
input#blackgray(type='radio', name='colors', onclick='setColor(\'blackgray\')')
#font-settings.asetting
h2.content-head 字体设置
p#swfs
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'HYTMR\'!important;color:black', onclick='setFont(\'HYTMR\')') 汉仪唐美人
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'HYPailou\'!important;color:black', onclick='setFont(\'HYPailou\')') 汉仪新蒂牌楼
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZXJLJ\'!important;color:black', onclick='setFont(\'FZXJLJ\')') 方正金陵体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZXS\'!important;color:black', onclick='setFont(\'FZXS\')') 方正像素体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'ZhuZiAWan\'!important;color:black', onclick='setFont(\'ZhuZiAWan\')') 筑紫A丸ゴシック
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'FZODZK\'!important;color:black', onclick='setFont(\'FZODZK\')') 方正欧蝶正楷
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'Source Serif\'!important;color:black', onclick='setFont(\'Source Serif\')') 思源宋体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:\'Source Sans\'!important;color:black', onclick='setFont(\'Source Sans\')') 思源黑体
br
a.swf(href='javascript:;', rel='noopener external nofollow', style='font-family:-apple-system, IBM Plex Mono ,monosapce,\'微软雅黑\', sans-serif;', onclick='setFont(\'main\')') 系统默认
br
#background-settings.asetting
h2(style='margin-left:10px') 背景设置
div
span 注意:切换背景功能仅在Acrylic主题中生效,在Simple主题中无效
button.content-button(onclick='localStorage.removeItem(\'blogbg\');location.reload();')
i.fa-solid.fa-arrows-rotate
span 点我恢复默认背景
button.content-button(onclick='switchTheme()') 切换主题
h3 图片(手机)
.bgbox
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d4d539a5.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d4e15c9d.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6f22c03c6.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d56c83eb.webp)\')')
a.pimgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d50b439b.webp)\')')
h3 图片(电脑)
.bgbox
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d5574d0e.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d529adf9.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d6d5159b31.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d718bbeef6.webp)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72f237d19.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72f2032c8.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2021/12/01/7792ff0082ec4.jpg)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72ee6d4f3.png)\')')
a.imgbox(href='javascript:;', rel='noopener external nofollow', style='background-image:url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)', onclick='changeBg(\'url(https://bu.dusays.com/2022/08/30/630d72ed76532.jpg)\')')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aea549be6.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aea549be6.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aec701a68.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aec701a68.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324aef4a5543.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324aef4a5543.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/09/17/6324af3622884.webp)\')')
img(src='https://bu.dusays.com/2022/09/17/6324af3622884.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/5.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/5.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/6.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/6.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/7.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/7.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://bu.dusays.com/2022/12/08/6391b77ed767c.png)\')')
img(src='https://bu.dusays.com/2022/12/08/6391b77ed767c.png')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/9.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/9.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/10.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/10.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/11.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/11.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/12.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/12.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/13.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/13.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/14.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/14.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/15.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/15.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/16.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/16.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/17.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/17.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/18.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/18.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/19.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/19.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/20.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/20.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/21.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/21.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/22.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/22.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/23.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/23.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/24.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/24.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/25.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/25.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/26.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/26.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/27.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/27.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/28.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/28.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/29.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/29.webp')
a.imgbox(href='javascript:;', onclick='changeBg(\'url(https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/30.webp)\')')
img(src='https://cdn.afdelivr.top/npm/saiodgm-api@1.0.1/randomimg-my/30.webp')
h3 渐变色
.bgbox
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #eecda3, #ef629f)', onclick='changeBg(\'linear-gradient(to right, #eecda3, #ef629f)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #B7D31E, #42CE1E)', onclick='changeBg(\'linear-gradient(to right, #B7D31E, #42CE1E)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #06DE86, #06A5DE)', onclick='changeBg(\'linear-gradient(to right, #06DE86, #06A5DE)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #189BC4, #183DC4)', onclick='changeBg(\'linear-gradient(to right, #189BC4, #183DC4)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #C018C4, #C41818)', onclick='changeBg(\'linear-gradient(to right, #C018C4, #C41818)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #8B00BB, #030094)', onclick='changeBg(\'linear-gradient(to right, #8B00BB, #030094)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(to right, #eecda3, #ef629f)', onclick='changeBg(\'linear-gradient(to right, #eecda3, #ef629f)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)', onclick='changeBg(\'linear-gradient(90deg, #ffd7e4 0%, #c8f1ff 100%)\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)', onclick='changeBg(\'linear-gradient(45deg, #e5737b, #c6999e, #96b9c2, #00d6e8)\')')
h3 纯色
.bgbox
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #7D9D9C', onclick='changeBg(\'#7D9D9C\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #fff', onclick='changeBg(\'#fff\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #49A6E9', onclick='changeBg(\'#49A6E9\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #F7CEFF', onclick='changeBg(\'#F7CEFF\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #FFFFCE', onclick='changeBg(\'#FFFFCE\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #CFFFCE', onclick='changeBg(\'#CFFFCE\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #17EFE9', onclick='changeBg(\'#17EFE9\')')
a.box(href='javascript:;', rel='noopener external nofollow', style='background: #9F17EF', onclick='changeBg(\'#9F17EF\')')
#con-echarts.asetting
h1 文章统计
h2 监控
iframe(src="https://status.yisous.xyz" width="100%" height="500px" frameborder="no")
if !is_page()
h2 文章统计
script(src="https://npm.elemecdn.com/echarts@4.9.0/dist/echarts.min.js")
div(id="posts-chart" data-start="2021-01" style="border-radius: 8px; height: 300px; padding: 10px;")
div(id="tags-chart" data-length="10" style="border-radius: 8px; height: 300px; padding: 10px;")
div(id="categories-chart" data-parent="true" style="border-radius: 8px; height: 300px; padding: 10px;")
h2 访问统计
| 显示不出来请刷新页面
//-下面换成自己的51la统计

#con-abouts.asetting
h1 关于
| Hexo-theme-Acryple v1.0.100
br
| Ariasaka Console v0.01
br
| 欢迎
a(href="/messageboard")
| 反馈!
#setting-sidesl
button(title="恢复默认设置" class="reSettings con-rightside")
i.fa.fa-repeat
#setting-sides
button(title="繁简转换" class="con-rightside" id="con-translate" onclick="javascript:rmf.translate();")
i.iconfont.icon-fanti
button(title="昼夜切换" class="con-rightside" id="con-mode" onclick="switchDarkMode();")
i.fa.fa-adjust
if is_post()||is_page()
button(title="阅读模式" class="con-rightside" id="con-reading" onclick="rmf.switchReadMode();")
i.fa.fa-book-open
if !is_page()
button(title="单双栏切换" class="con-rightside" id="con-toggleaside" onclick="toggleAside();")
i.fas.fa-arrows-alt-h
if !is_page()
button(title="左右栏切换" class="con-rightside" id="con-toggleleftaside" onclick="switchAside();")
i.fas.fa-binoculars
if is_post()||is_page()
button(title="开关弹幕" class="con-rightside" id="con-barrage" onclick="switchCommentBarrage();")
i.iconfont.icon-danmu
button(title="全屏" class="con-rightside" id="con-fullscreen" onclick="fullScreen();")
i.fas.fa-expand

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
document.addEventListener('pjax:complete', tosetting);
document.addEventListener('DOMContentLoaded', tosetting);
function tosetting(){
$("#settingWindow").hide();
if(localStorage.getItem("blur")=="false"){
blur=0;
}else{
blur=1;

}
if(localStorage.getItem("yjjs")=="true"){
yjjs=1;
}else{
yjjs=0;

}
if(localStorage.getItem("fpson")==undefined){
localStorage.setItem("fpson","1");
}
if(!blur){
document.getElementById("settingStyle").innerText=`
*,*:not(.card-info)::before,*::after{
-webkit-backdrop-filter: none!important;
backdrop-filter: none!important;
-webkit-filter: none!important;
filter: none!important;
}`}
else{
document.getElementById("settingStyle").innerText=''
}
setBlur=function(){
blur=!blur;
localStorage.setItem("blur",blur);
if(!blur){
document.getElementById("settingStyle").innerText=`
*{
-webkit-backdrop-filter: none!important;
backdrop-filter: none!important;
-webkit-filter: none!important;
filter: none!important;
}`}
else{
document.getElementById("settingStyle").innerText=''
}
}
// if(yjjs){
// document.getElementById("yjjs").innerText=`
// *:not(#web_bg){
// transform:translateZ(0);
// backface-visibility: hidden
// }`}
// else{
// document.getElementById("yjjs").innerText=``
// }
yjjs1=function(){
yjjs=!yjjs;
localStorage.setItem("yjjs",yjjs)
// if(yjjs){
// document.getElementById("yjjs").innerText=`
// *:not(#web_bg){
// transform:translateZ(0);
// backface-visibility: hidden
// }`}
// else{
// document.getElementById("yjjs").innerText=``
// }
}
if(localStorage.getItem("blogTheme")=="acrylic"){
document.getElementById("css").href="";
}
switchTheme=function(){
if(document.getElementById("css").href==window.location.protocol+"//"+window.location.host+"/css/stylessimple.css"){
document.getElementById("css").href=""
localStorage.setItem("blogTheme","acrylic");
}else{
document.getElementById("css").href="/css/stylessimple.css"
localStorage.setItem("blogTheme","simple");
}
}
setColor=function(c){
document.getElementById("themeColor").innerText=`:root{--lyx-theme:var(--lyx-${c})!important}`;
localStorage.setItem("themeColor",c);

}
setFont=function(n){
localStorage.setItem("font",n);
if(n=="main"){
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="-apple-system, IBM Plex Mono ,monospace,'微软雅黑', sans-serif"
}
}
else if(n=="HYPailou"){
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="Fredoka,HYPailou,KyoukashoProL,-apple-system, IBM Plex Mono ,monospace,'微软雅黑', sans-serif"
}
}
else{
var s=document.querySelectorAll("body,.aplayer")
for(var i = 0; i <s.length; i++) {
s[i].style.fontFamily="var(--global-font),KyoukashoProL,-apple-system, IBM Plex Mono ,monosapce,\"微软雅黑\", sans-serif"
}
document.body.style.fontFamily="var(--global-font),KyoukashoProL,-apple-system, IBM Plex Mono ,monosapce,'微软雅黑', sans-serif"
document.documentElement.style.setProperty('--global-font', n)
}
}
if(localStorage.getItem("themeColor")==undefined){
localStorage.setItem("themeColor","pink");
}

setColor(localStorage.getItem("themeColor"));



if(localStorage.getItem("hideRightside")==undefined){
localStorage.setItem("hideRightside","0");
}

if(localStorage.getItem("hideRightside")=="1"){
$("#rightside").toggle()
}
toggleRightside=function(){
$("#rightside").toggle();
localStorage.setItem("hideRightside",Math.abs(Number(localStorage.getItem("hideRightside"))-1))
}
if(localStorage.getItem("font")==undefined){
localStorage.setItem("font","HYTMR")
}
setFont(localStorage.getItem("font"))
// 存数据
// name:命名 data:数据
saveData=function(name, data) {
localStorage.setItem(name, JSON.stringify({ 'time': Date.now(), 'data': data }))
}

// 取数据
// name:命名 time:过期时长,单位分钟,如传入30,即加载数据时如果超出30分钟返回0,否则返回数据
loadData=function(name, time) {
let d = JSON.parse(localStorage.getItem(name));
// 过期或有错误返回 0 否则返回数据
if (d) {
let t = Date.now() - d.time
if (t < (time * 60 * 1000) && t > -1) return d.data;
}
return 0;
}
// 切换背景函数
// 此处的flag是为了每次读取时都重新存储一次,导致过期时间不稳定
// 如果flag为0则存储,即设置背景. 为1则不存储,即每次加载自动读取背景.
changeBg=function(s, flag) {
let bg = document.getElementById('web_bg')
if (s.charAt(0) == '#') {
bg.style.backgroundColor = s
bg.style.backgroundImage = 'none'
} else bg.style.backgroundImage = s
if (!flag) { saveData('blogbg', s) }
}
// 上面两个函数如果你有其他需要存取数据的功能,也可以直接使用

// 读取背景
try {
let data = loadData('blogbg', 1440)
if (data) changeBg(data, 1)
else localStorage.removeItem('blogbg');
} catch (error) { localStorage.removeItem('blogbg'); }



fpssw=function(){
if(localStorage.getItem("fpson")=="1"){
localStorage.setItem("fpson","0");
}else{
localStorage.setItem("fpson","1");
}
}
$(".asetting").hide();
$('#backer').hide();
$("#"+localStorage.getItem("themeColor")).attr("checked", true);
if(localStorage.getItem("blur")=="false"){
document.getElementById("blur").checked=true;
}
if(localStorage.getItem("yjjs")=="true"){
document.getElementById("yjjs").checked=true;
}
if(localStorage.getItem("fpson")=="1"){
document.getElementById("fpson").checked=true;
}


if(localStorage.getItem("sakurahide")=="false"){
document.getElementById("hideSakura").checked=true;
isSakura=1;
}
else if(localStorage.getItem("sakurahide")==null){
localStorage.setItem("sakurahide","false");
document.getElementById("hideSakura").checked=true;
isSakura=1;
}
else{
setTimeout(
stopp,1000);
isSakura=0;
}
if(localStorage.getItem("aplayerhide")=="false"){
document.getElementById("hideAplayer").checked=true;
}
else if(localStorage.getItem("aplayerhide")==null){
localStorage.setItem("aplayerhide","false");
document.getElementById("hideAplayer").checked=true;
}
else{
doStuff=function() {
flag=0;
try{
ap=aplayers[0];
ap.list;
flag=1;
}catch{
setTimeout(doStuff, 50);
return;
}
if(flag){
$(".aplayer-fixed").hide()
}
}
doStuff();

}

document.getElementsByClassName("reSettings")[0].onclick=function(){
localStorage.clear()
window.location.reload()
}

toggleWinbox=function(){
$("#settingWindow").fadeToggle();
if(document.getElementById("settingWindow").style.display!="none"){
document.getElementById("settingWindow").style.display="flex";
}
}
fullScreen=function() {
if (document.fullscreenElement) document.exitFullscreen()
else document.documentElement.requestFullscreen();
}
toggleAside=function(){
const $htmlDom = document.documentElement.classList
$htmlDom.contains('hide-aside')
? saveToLocal.set('aside-status', 'show', 2)
: saveToLocal.set('aside-status', 'hide', 2)
$htmlDom.toggle('hide-aside')
}
toggleAplayer=function(){
$(".aplayer-fixed").toggle()
if(localStorage.getItem("aplayerhide")=="true"){
localStorage.setItem("aplayerhide",false);
}
else{
localStorage.setItem("aplayerhide",true);
}
}
// position = $(window).scrollTop();
// $(window).scroll(function () {

// scroll = $(window).scrollTop();

// if (scroll > position) {
// document.getElementsByTagName("header")[0].style.transform="translateY(58px)";
// } else {


// document.getElementsByTagName("header")[0].style.transform="";

// }

// position = scroll;
// });
toggleSakuras=function(){
isSakura=!isSakura;
stopp(isSakura);
if(localStorage.getItem("sakurahide")=="true"){
localStorage.setItem("sakurahide",false);
}
else{
localStorage.setItem("sakurahide",true);
}
}
switchAside=function(){
if(left){
document.getElementById("aside-content").classList.add("right");
document.querySelector(".layout > div:first-child").classList.add("left");
localStorage.setItem("leftAside","false");
}
else{
document.getElementById("aside-content").className="aside-content";
document.querySelector(".layout > div:first-child").className="";
try{
document.querySelector("#recent-posts").className="recent-posts";
}catch(err){}localStorage.setItem("leftAside","true");}
left=!left;
}
left=1;
if(localStorage.getItem("leftAside")=="true"||localStorage.getItem("leftAside")==null){

}else{
switchAside();
}
if(localStorage.getItem("autoTheme")=="true"){
localStorage.setItem("autoTheme","false");
document.getElementById("autoTheme").checked=true;
var time=new Date();
if(time.getHours()<=7||time.getHours()>=19){
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
}
else{
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
}
if(location.href.indexOf('posts')!=-1){
var xhr = new XMLHttpRequest();
var url = document.querySelector('#page-header').style.backgroundImage.split('url("')[1].split('")')[0];
xhr.open("GET","https://apis.yisous.xyz/api/imageColor?imgurl="+url, true);
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState===4) {
if(xhr.status===200) {
document.getElementById("themeColor").innerText=`:root{--lyx-theme:${xhr.responseText}!important}`;
}
}
}
}
toggleAutoTheme=()=>{
if(localStorage.getItem("autoTheme")=="true"){
localStorage.setItem("autoTheme","false");
$("#con-mode").show();
}
else{
localStorage.setItem("autoTheme","true");
var time=new Date();
if(time.getHours()<=7||time.getHours()>=19){
activateDarkMode()
saveToLocal.set('theme', 'dark', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.day_to_night)
}
else{
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
$("#con-mode").hide();
}
}
}
switchDarkMode = function () {
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)
} else {
activateLightMode()
saveToLocal.set('theme', 'light', 2)
GLOBAL_CONFIG.Snackbar !== undefined && btf.snackbarShow(GLOBAL_CONFIG.Snackbar.night_to_day)
}
// handle some cases
typeof utterancesTheme === 'function' && utterancesTheme()
typeof FB === 'object' && window.loadFBComment()
window.DISQUS && document.getElementById('disqus_thread').children.length && setTimeout(() => window.disqusReset(), 200)
};

新建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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*使用了Chrome105新特性has,兼容性不好qwq*/
.con-rightside{
height:50px!important;
width: 50px!important;
border-radius: 30px;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
-ms-border-radius: 30px;
-o-border-radius: 30px;
margin:10px;
transition: all .3s;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-ms-transition: all .3s;
-o-transition: all .3s;
}
.con-rightside:hover{
background-color: rgba(129, 129, 129, 0.568);
}
.con-rightside i::before{
font-size:30px;
}
[data-theme="dark"] .con-rightside i::before{
color:white
}
.con-rightside:hover{
background-color: rgba(129, 129, 129, 0.568);
}
@media screen and (max-width:600px){
.con-rightside i::before{
font-size: 16px;
}
.con-rightside{
height:20px!important;
width:20px!important;
}
}
@media screen and (max-width:768px){
#con-barrage{
display: none!important;
}
}
#setting-buttons{
display: flex;
flex-wrap: wrap;
}
.setting-title{
text-align: center;
font-size: 30px;
display: flex;
}
#setting-sides{
margin-left: auto;
}
#setting-sides{
white-space: nowrap;
}
#setting-sidesl{
display: flex;
}
.settings .content{
margin-left:20px;
}
.settings{
margin:15px
}
/* 开关 */
.settings input[type="checkbox"] {
width: 38px;
height: 20px;
position: relative;
border: 1px solid #000000;
background-color: #0000;
border-radius: 12px;
background-clip: content-box;
display: inline-block;
-webkit-appearance: none;
user-select: none;
outline: none;
transform: translateY(5px);}
[data-theme="dark"] .settings input[type="checkbox"] {
border: 1px solid white;
}
.settings input[type="checkbox"]:before {
content: '';
width: 12px;
height: 12px;
position: absolute;
top: 3px;
left: 5px;
border-radius: 10px;
background-color: #000;}
[data-theme="dark"] .settings input[type="checkbox"]:before{
background-color: white;
}
.settings input[type="checkbox"]:checked {
background-color: var(--lyx-theme);border-color:var(--lyx-theme)}
.settings input[type="checkbox"]:checked:before {
left: 19px;background-color: white!important;}

.settings input[type="checkbox"] {
transition: border background-color box-shadow }
.settings input[type="checkbox"]:before {
transition: left 0.2s;}
.settings input[type="checkbox"]:checked {
background-color: var(--lyx-theme);
/* transition: border ease 0.4s, background-color ease 1.2s; */
}.settings input[type="checkbox"]:checked:before {
transition: left 0.2s;}
.settings input[type="checkbox"]:checked:hover{
opacity: 0.8;
}
.settings input[type="checkbox"]:active{
background-color: #666666!important;
border-color:#666666!important;
}
.settings input[type="checkbox"]:active::before{
background-color:white!important;
}
.settings{
overflow: scroll;
width: 100%;
}
#settingWindow{
position: fixed;
display: block;
width: 80%;
max-width: 800px;
left: 50%;
top: 50%;
max-height: 80%;
background-color: #ffffffdd;
border-radius: 20px;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
-ms-border-radius: 20px;
-o-border-radius: 20px;
border: 1px solid var(--lyx-border);
padding:30px;
backdrop-filter: blur(10px);
-ms-transform-origin-y:translate(-50%,-50%);
-webkit-transform:translate(-50%,-50%);
-moz-transform:translate(-50%,-50%);
-ms-transform:translate(-50%,-50%);
-o-transform:translate(-50%,-50%);
z-index: 514;
display: none;
}
.settings{
overflow: scroll;
width: 100%;
}
#settingWindow{
display: none;
flex-direction: column;
}
.settingx{
width: 46%;
text-align: left;
font-size: 28px;
padding: 10px;
margin: 10px;
background-color: var(--lyx-light-grey);
opacity: 0.8;
border-radius: 10px;
}
.settingx:hover{
background-color: var(--lyx-gray);
}
.settingx i{
margin: 5px;
}
@media screen and (max-width:768px){
.settingx{
width:100%!important;
}
}
.setting-title{
text-align: center;
font-size: 30px;
display: flex;
}
#close-console{
text-align: right;
}
#stt,#close-console{
margin-left: auto;
}
#close-console:not(#close-console:hover){
color: var(--global-font-color);
}

然后在[blogRoot]/themes/butterfly/layout/includes/layout.pug中添加:

1
2
3
4
...
include ./rightside.pug
! =partial('includes/third-party/search/index', {}, {cache: true})
+ ! =partial('includes/setting',{}, {cache:false})

还要引入一些外挂css标签:

1
2
3
4
5
6
7
8
9
10
inject:
head:
- <style id="settingStyle"></style>
- <style id="css"></style>
- <style id="themeColor"></style>
...
bottom:
- <script type="text/javascript" src="https://gcore.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script>
...

butterfly\layout\includes\rightside.pug添加按钮

1
2
3
4
5
6
7
when 'comment'
if commentsJsLoad
a#to_comment(href="#post-comment" title=_p("rightside.scroll_to_comment"))
i.fas.fa-comments
+ when 'bg'
+ button(type="button" title='切换背景' onclick="toggleWinbox()")
+ i.fas.fa-display

然后修改:

1
2
3
4
5
#rightside
- const { enable, hide, show } = theme.rightside_item_order
- const hideArray = enable ? hide && hide.split(',') : ['readmode','translate','darkmode','hideAside']
- - const showArray = enable ? show && show.split(',') : ['toc','chat','comment']
+ - const showArray = enable ? show && show.split(',') : ['toc','chat','comment','bg']

修改鼠标样式

致美化下载鼠标样式

在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
/* 全局默认鼠标指针 */
body,
html {
cursor: url('/self/img/cursors/mogu/normal.cur'),auto !important;
}
/* 悬停图片时的鼠标指针 */
img {
cursor: url('/self/img/cursors/mogu/normal.cur'), auto !important;
}
/* 悬停图片弹出窗口时的鼠标指针 */
.fancybox__slide{
cursor: url('./mouse/xxx.cur'), auto !important;
}
.carousel__slide{
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选择链接标签时的鼠标指针 */
a:hover,#site-name:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选择代码框展开和复制按钮时的鼠标指针 */
.copy-button:hover,.expand:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 选中输入框时的鼠标指针 */
input:hover, textarea:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停按钮时的鼠标指针 */
button:hover,.scroll-down-effects:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停页脚链接标签(例如页脚徽标)时的鼠标指针 */
#footer-wrap a:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停页码时的鼠标指针 */
#pagination .page-number:hover {
cursor: url('./mouse/xxx.cur'), auto;
}
/* 悬停菜单栏时的鼠标指针 */
#nav .site-page:hover {
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 悬停滚动条的鼠标指针(只对Chrome有效) */
::-webkit-scrollbar:hover{
cursor: url('./mouse/xxx.cur'), auto!important;
}
/* 悬停评论按钮的鼠标指针(我使用的是Gitalk/Valine) */
.switch-btn,.switch-btn:before,.gt-user-inner,.gt-ico,.gt-user-name,.gt-btn,.vbtn,svg,.at_button{
cursor: url('./mouse/xxx.cur'), auto !important;
}
/* 悬停非链接文本时的鼠标指针 */
h1,h2,h3,h4,h5,h6,#subtitle,.content,.line,.post-content p,.post-content li{
cursor: url('/self/img/cursors/mogu/text.ani'), auto;
}
/* 悬停文章日期 */
.post-meta-date:hover,.post-meta-date-created:hover{
cursor: url('./mouse/xxx.cur'), auto!important;
}

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

评论
WalineValine
公告
好好学习,天天向上
最新文章
控制面板×

性能设置

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

主题设置

显示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 10db5a89..3fe13b5c 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 53e0de94..bcab0a97 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 b90a6157..802c7b76 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 e9f3e349..414e85d0 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 f854d558..a10050bd 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 2ebfc977..82650a25 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c0f3f01d..90a0dac7 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 6f222e0d..ddd2f37d 100644 --- a/posts/56883.html +++ b/posts/56883.html @@ -1 +1 @@ -Regular Expression Extractor正则表达式处理器 | GGLSS

Regular Expression Extractor正则表达式处理器

正则表达式规则

  • ():括起来的部分是要提取的
  • .:匹配任何字符串
  • +:一次或多次
  • ?:在找到第一个匹配项后停止

模板

2$等,表示解析到的第几个值给title,$1$表示第一个

匹配数字

0代表随机,1代表全部取值,通常使用0

缺省值

若参数没有取到值,那默认给一个值让他取

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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正则表达式处理器

正则表达式规则

  • ():括起来的部分是要提取的
  • .:匹配任何字符串
  • +:一次或多次
  • ?:在找到第一个匹配项后停止

模板

2$等,表示解析到的第几个值给title,$1$表示第一个

匹配数字

0代表随机,1代表全部取值,通常使用0

缺省值

若参数没有取到值,那默认给一个值让他取

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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 d8ff939f..bc50b9f9 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c83c11bf..35aee9df 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 e593fdc6..80f4ee6b 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 04153005..c026ad68 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 5679ff4b..396e5768 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 edba5249..84cf6d7d 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 72a88140..1a66d4e5 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 42bf0a21..90a28a64 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 0bba7b57..1820034e 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 72cce895..92b00646 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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
公告
好好学习,天天向上
控制面板×

性能设置

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

主题设置

显示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 28123ff1..c9e37eaa 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 a65a0862..9520024d 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 8b2ee93f..b6be2cbb 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 6a2028c5..dc91b2a0 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 58ddae78..7d06a8b0 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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 c3011059..f4291629 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..一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

      就是需要在安全组上面配置6381~6386的6个端口,还需要配置16381~16386的6个端口,共12个端口都要开放,不然会一直提示等待

      • 一切OK的话,3主3从搭建搞定
      文章作者: gglss
      文章链接: http://example.com/posts/7883.html
      版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

      评论
      WalineValine
      控制面板×

      性能设置

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

      主题设置

      显示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..一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

就是需要在安全组上面配置6381~6386的6个端口,还需要配置16381~16386的6个端口,共12个端口都要开放,不然会一直提示等待

  • 一切OK的话,3主3从搭建搞定
文章作者: gglss
文章链接: http://example.com/posts/7883.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GGLSS

评论
WalineValine
控制面板×

性能设置

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

主题设置

显示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 aea9d750..1a26c7fe 100644 --- a/random/random.js +++ b/random/random.js @@ -1 +1 @@ -var posts=["posts/546861677.html","posts/1672051471.html","posts/44160.html","posts/13923.html","posts/1450282867.html","posts/26527.html","posts/50581.html","posts/54899.html","posts/7388.html","posts/16468.html","posts/47564.html","posts/34655.html","posts/55332.html","posts/36554.html","posts/53299.html","posts/7883.html","posts/13844.html","posts/42656.html","posts/58353.html","posts/16766.html","posts/53508.html","posts/55605.html","posts/18767.html","posts/51796.html","posts/622.html","posts/58312.html","posts/32161.html","posts/50699.html","posts/1351.html","posts/26726.html","posts/62565.html","posts/63516.html","posts/42395.html","posts/25343.html","posts/55045.html","posts/53812.html","posts/4851.html","posts/408340008.html","posts/52845.html","posts/63722.html","posts/55320.html","posts/3219.html","posts/26691.html","posts/49262.html","posts/55393.html","posts/527.html","posts/48990.html","posts/34250.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/1817691161.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/58345.html","posts/557.html","posts/24951.html","posts/15521.html","posts/7613.html","posts/16785.html","posts/42075.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/2943790551.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/546861677.html","posts/1672051471.html","posts/44160.html","posts/13923.html","posts/1450282867.html","posts/26527.html","posts/54899.html","posts/36554.html","posts/53299.html","posts/7883.html","posts/13844.html","posts/42656.html","posts/58353.html","posts/16766.html","posts/53508.html","posts/55605.html","posts/18767.html","posts/51796.html","posts/622.html","posts/58312.html","posts/32161.html","posts/50699.html","posts/1351.html","posts/26726.html","posts/62565.html","posts/63516.html","posts/42395.html","posts/25343.html","posts/55045.html","posts/53812.html","posts/4851.html","posts/408340008.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/26691.html","posts/49262.html","posts/527.html","posts/55393.html","posts/48990.html","posts/34250.html","posts/29537.html","posts/31868.html","posts/15488.html","posts/12932.html","posts/40953.html","posts/56883.html","posts/48851.html","posts/22551.html","posts/1817691161.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/2943790551.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/search.xml b/search.xml index 71674245..9a2af6a7 100644 --- a/search.xml +++ b/search.xml @@ -387,52 +387,6 @@ css - - 使用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];
}
-]]>
- - 工具教程 - - - java - Properties - -
Butterfly美化记录 /posts/54899.html @@ -610,521 +564,211 @@ - java基础之方法和函数 - /posts/7388.html - 方法和函数
- - - - - - - - - - - - - - - - - - - - - - - -
定义方式作用调用方式
函数public static void 函数名(){}封装指定功能的代码块函数名()
方法public [static] void 方法名(){}类的行为,对象可以执行的一些功能对象名.方法名
-
-

定义函数

-

使用static修饰的内容成为静态的内容

+ _3主3从的`Redis集群`搭建(下) + /posts/36554.html + _3主3从的Redis集群搭建(下)

进入主机6381

+

redis-cli -p 6381

-
public static void function1(){
}
-

调用函数

function1()
-

定义方法

public void class className1{

String name;
//静态变量
static String age;

//静态方法
public static function1(){
}

//类方法
//非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
public function2(){
}
}
-

调用方法

    -
  • 调用静态方法,不需要实例化
  • -
-
className1.function1()
-
    -
  • 调用方法
  • +
    + +
    + +

    查看集群信息

    +

    cluster info

    +
    +
    + +
    + +

    查看主机和从机之间的主从关系

    +
    +

    cluster nodes

    +
    +

    image-20220509101455220.assets\image-20220509101455220.png)

    +
    + +
    + + +]]> + + 工具教程 + + + docker + + + + _3主3从的`Redis集群`搭建之哈希槽算法 + /posts/53299.html + _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分成几个

    +
    + +
    ]]>
    + + 工具教程 + + + docker + +
    + + _3主3从的`Redis集群`搭建(上) + /posts/7883.html + _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端口号
      -
      className1的对象,需要实例化
      -

      静态方法注意事项:

        -
      • 静态方法无法直接引用非静态的变量
      • -
      • 静态方法不能直接调用非静态的方法
      • +
      -

      代码块

        -
      • 定义在方法内部,和局部变量处于平行的位置
      • -
      • 生命周期随着方法的调用而加载,随着方法的结束而消亡
      • -
      • 可以在局部代码块中定义一些使用范围和时间都很短的变量,用完就消失啦
      • +
        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    构建集群
            + --cluster-replicas 1    集群关联一比一的关系
            +
            +--cluster-replicas 1 表示为每个master创建一个slave节点
            +# 注意:上面的ip为真实IP
            +
            +
          -
          public void class className1{

          String name;
          static String age;

          //类方法
          //非静态方法可以调用静态变量和非静态变量、静态方法和非静态方法
          public void function2(){

          //定义代码块
          {
          int i = 100;
          System.out.println("方法中的变量i=" + i);
          }

          }
          }
          -

          构造代码块

            -
          • 构造代码快写在和构造方法平行的位置
          • -
          • 只要创建对象,构造代码块就会执行,不论是采用有参的还是无参数的构造方法
          • +

            有下面的绿色ok字样显示运行成功

            +
          -
          public void class{
          //有参构造
          class(String name){
          }
          //无参构造
          class(){
          }
          //构造代码块
          {
          int i=100;
          System.out.println("构造代码块i=" + i);
          }

          }
          -

          静态代码块

            -
          • 被static修饰的代码块称为静态代码块
          • -
          • 随着类的加载而加载
          • -
          • 静态代码块只执行一次,在程序中可以完成加载驱动等只执行一次的操作
          • +
            + +
            + +
            +

            如果运行不成功,一直显示Waiting for the cluster to join..一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

            +
            +

            就是需要在安全组上面配置6381~6386的6个端口,还需要配置16381~16386的6个端口,共12个端口都要开放,不然会一直提示等待

            +
              +
            • 一切OK的话,3主3从搭建搞定
            -
            public void className1{
            static{
            System.out.println("我是静态代码块i=" + i);
            }
            }
            ]]> +]]> 工具教程 - java + docker - 包装类 - /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。
          • -
          -]]> - - 工具教程 - - - java - - - - 字符串 - /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);
            -
          • -
          -]]>
          - - 工具教程 - - - java - -
          - - 抽象类与接口 - /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
          • -
          + _dockerfile + /posts/13844.html + _dockerfile

          以dockerfile的方法来进行对centos的具有vim,ifconfig和jdk8的镜像

          创建myfile文件夹

          创建Dockerfile文件

          +

          注意:jdk8需要和Dockerfile放到同一个文件夹

          +
          +
          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删除镜像

          ]]>
          工具教程 - java + docker
          - 继承、重写与重载 - /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);
            }
            }
            -
          • -
          + _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

          +

          查看从数据库状态发现已经同步

          +
          + +
          + + +

          主从复制测试

          +

          主机创建数据库,创建表,插入数据,搜索表的数据

          +

          从机直接搜索标的数据

          ]]>
          工具教程 - java + docker
          - _3主3从的`Redis集群`搭建(下) - /posts/36554.html - _3主3从的Redis集群搭建(下)

          进入主机6381

          -

          redis-cli -p 6381

          + _主从容错切换迁移 + /posts/58353.html + _主从容错切换迁移

          进入redis集群

          +

          注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

          +

          因为这样会在增加数据时有error报错出现

          - +
          -

          查看集群信息

          -

          cluster info

          -
          -
          - -
          -

          查看主机和从机之间的主从关系

          +

          使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

          -

          cluster nodes

          +

          正确进入的方法redis-cli -p 6381 -c

          +

          -c 的作用是优化路由

          -

          image-20220509101455220.assets\image-20220509101455220.png)

          - -
          - - -]]>
          - - 工具教程 - - - docker - - - - _3主3从的`Redis集群`搭建之哈希槽算法 - /posts/53299.html - _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分成几个

          -
          - -
          ]]>
          - - 工具教程 - - - docker - -
          - - _3主3从的`Redis集群`搭建(上) - /posts/7883.html - _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端口号
            • -
            -
          • -
          -
          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    构建集群
              - --cluster-replicas 1    集群关联一比一的关系
              -
              ---cluster-replicas 1 表示为每个master创建一个slave节点
              -# 注意:上面的ip为真实IP
              -
              -
            • -
            -

            有下面的绿色ok字样显示运行成功

            -
          • -
          -
          - -
          - -
          -

          如果运行不成功,一直显示Waiting for the cluster to join..一直………………………………….,则是端口没有全部开放,防火墙也要开放端口,以阿里云为例

          -
          -

          就是需要在安全组上面配置6381~6386的6个端口,还需要配置16381~16386的6个端口,共12个端口都要开放,不然会一直提示等待

          -
            -
          • 一切OK的话,3主3从搭建搞定
          • -
          -]]>
          - - 工具教程 - - - docker - -
          - - _dockerfile - /posts/13844.html - _dockerfile

          以dockerfile的方法来进行对centos的具有vim,ifconfig和jdk8的镜像

          创建myfile文件夹

          创建Dockerfile文件

          -

          注意:jdk8需要和Dockerfile放到同一个文件夹

          -
          -
          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删除镜像

          -]]>
          - - 工具教程 - - - 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

          -

          查看从数据库状态发现已经同步

          -
          - -
          - - -

          主从复制测试

          -

          主机创建数据库,创建表,插入数据,搜索表的数据

          -

          从机直接搜索标的数据

          -]]>
          - - 工具教程 - - - docker - -
          - - _主从容错切换迁移 - /posts/58353.html - _主从容错切换迁移

          进入redis集群

          -

          注意:进入集群环境后,不能使用单机版的redis-cli -p 6381

          -
          -

          因为这样会在增加数据时有error报错出现

          -
          - -
          - - -

          使用set k1 v1错误是因为1号主机里面的编号是0到5460,超过了这个范围就会报错

          -
          -

          正确进入的方法redis-cli -p 6381 -c

          -

          -c 的作用是优化路由

          -
          -
          - +
          @@ -1700,143 +1344,499 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383
        • push推送到私服库

        -
        docker push 符合私服库格式的镜像名称:tag
        -
          -
        • curl验证私服库上有什么镜像
        • -
        • pull到本地并运行
        • +
          docker push 符合私服库格式的镜像名称:tag
          +
            +
          • curl验证私服库上有什么镜像
          • +
          • pull到本地并运行
          • +
          +
          docker pull 8.142.144.75:5000/ubuntu:1.6
          +]]> + + 工具教程 + + + docker + + + + 本地镜像发布到阿里云 + /posts/25343.html + 本地镜像发布到阿里云
          +

          使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

          +

          执行顺序

            +
          • 阿里云开发者平台
          • +
          • 点击镜像容器服务
          • +
          • 创建镜像仓库
              +
            • 创建命名空间
            • +
            • 创建镜像仓库
            • +
            +
          • +
          +

          然后在基本信息上面就可以看到仓库指南

          +
          +

          根据指南进行操作

          +
          + +
          + +
          +
          + +
          + +
          + +
          +]]>
          + + 工具教程 + + + docker + +
          + + 镜像 + /posts/55045.html + 镜像

          背景

          docker镜像是最小的,被精简过的Linux系统,是不带vim命令的

          +
          +

          使用命令 ‘vim a.txt’ 进行新建编辑a.txt文件,就会提示找不到命令

          +
          +

          给镜像容器新增vim命令

            +
          1. 更新镜像

            +
            +

            apt-get update

            +
            +
          2. +
          3. 下载vim功能

            +
            +

            apt-get -y install vim

            +
            +
          4. +
          5. 提交副本使成为一个新镜像

            +
            +

            docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]

            +
            +
          6. +
          +
          [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 /]#
          +]]>
          + + 工具教程 + + + docker + +
          + + git提示Timed out的解决办法 + /posts/53812.html + 报错代码

          运行git代码会提示Timed out错误

          +
          使用git,会发生报错:Failed to connect to github.com port 443 after 21098 ms: Timed out
          +

          解决办法

          设置代理

          +
          git config --global https.proxy
          +

          取消代理

          +
          git config --global --unset https.proxy
          +

          然后输入git 命令使用

          +]]>
          + + 经验分享 + + + Git + +
          + + 使用pip install报错的解决办法 + /posts/4851.html + 报错提示

          今天使用PyCharm下载一个模块pip.exe install locust,有错误提示

          +
          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正常安装

          +

          pip.exe install D:\Appium\psutil-5.9.0-cp38-cp38-win_amd64.whl

          pip.exe install locust

          +]]>
          + + 经验分享 + + + error + +
          + + Mac提示安装包损坏 + /posts/408340008.html + Mac 提示文件已损坏,您应该将它移到废纸篓

          解决办法:

          +

          在终端输入

          +

          sudo xattr -d com.apple.quarantine /Applications/PicGo.app

          +

          /后面是安装路径

          +

          然后输入密码

          +]]>
          + + 工具教程 + + + mac + +
          + + 使用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];
          }
          +]]>
          + + 工具教程 + + + java + Properties + +
          + + 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 + +
          + + 包装类 + /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。
        -
        docker pull 8.142.144.75:5000/ubuntu:1.6
        ]]> 工具教程 - docker + java - 本地镜像发布到阿里云 - /posts/25343.html - 本地镜像发布到阿里云
        -

        使用docker进行对docker镜像功能的新增后,需要发布到阿里云上对镜像进行同步,下次pull镜像就不要pull缩减版的镜像,直接pull更新后的镜像,方便后续使用

        -

        执行顺序

          -
        • 阿里云开发者平台
        • -
        • 点击镜像容器服务
        • -
        • 创建镜像仓库
            -
          • 创建命名空间
          • -
          • 创建镜像仓库
          • -
          + 字符串 + /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);
          -

          然后在基本信息上面就可以看到仓库指南

          -
          -

          根据指南进行操作

          -
          - -
          - -
          -
          - -
          - -
          - -
          ]]>
          工具教程 - docker + java - 镜像 - /posts/55045.html - 镜像

          背景

          docker镜像是最小的,被精简过的Linux系统,是不带vim命令的

          -
          -

          使用命令 ‘vim a.txt’ 进行新建编辑a.txt文件,就会提示找不到命令

          -
          -

          给镜像容器新增vim命令

            -
          1. 更新镜像

            -
            -

            apt-get update

            -
            -
          2. -
          3. 下载vim功能

            -
            -

            apt-get -y install vim

            -
            + 抽象类与接口 + /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

            • -
            • 提交副本使成为一个新镜像

              -
              -

              docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]

              -
              +
            • 接口可以多继承

            • -
          -
          [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 /]#
          +
        • 变量全部默认使用public static final修饰,使用之前必须赋值
        • +
        • 类里面全部是抽象方法(默认使用public abstract修饰,没有方法体)需要被实现类进行实现
        • +
        • 接口可以被多实现—implements
        • +
        ]]>
        工具教程 - docker - -
        - - git提示Timed out的解决办法 - /posts/53812.html - 报错代码

        运行git代码会提示Timed out错误

        -
        使用git,会发生报错:Failed to connect to github.com port 443 after 21098 ms: Timed out
        -

        解决办法

        设置代理

        -
        git config --global https.proxy
        -

        取消代理

        -
        git config --global --unset https.proxy
        -

        然后输入git 命令使用

        -]]>
        - - 经验分享 - - - Git - -
        - - 使用pip install报错的解决办法 - /posts/4851.html - 报错提示

        今天使用PyCharm下载一个模块pip.exe install locust,有错误提示

        -
        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正常安装

        -

        pip.exe install D:\Appium\psutil-5.9.0-cp38-cp38-win_amd64.whl

        pip.exe install locust

        -]]>
        - - 经验分享 - - - error + java
        - Mac提示安装包损坏 - /posts/408340008.html - Mac 提示文件已损坏,您应该将它移到废纸篓

        解决办法:

        -

        在终端输入

        -

        sudo xattr -d com.apple.quarantine /Applications/PicGo.app

        -

        /后面是安装路径

        -

        然后输入密码

        + 继承、重写与重载 + /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);
          }
          }
          +
        • +
        ]]>
        工具教程 - mac + java
        @@ -2075,6 +2075,20 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383 jmeter + + Constant Timer定时器 + /posts/527.html + 作用

        就是loadrunner上面的思考时间,就是模拟真实用户操作过程的等待时间

        +

        生效范围

        定时器的父节点和子节点,如果想让一个请求强制停止一段时间,就把定时器放在这个请求的下面

        +

        单位是以ms为单位,1s=1000ms

        +]]>
        + + 工具教程 + + + jmeter + +
        jmeter对数据库进行增删改查 /posts/55393.html @@ -2114,20 +2128,6 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383
      • 运行

      运行结果ResponseBody:

      1 updates.

      这就配置成功

      -]]> - - 工具教程 - - - jmeter - - - - Constant Timer定时器 - /posts/527.html - 作用

      就是loadrunner上面的思考时间,就是模拟真实用户操作过程的等待时间

      -

      生效范围

      定时器的父节点和子节点,如果想让一个请求强制停止一段时间,就把定时器放在这个请求的下面

      -

      单位是以ms为单位,1s=1000ms

      ]]>
      工具教程 @@ -2237,29 +2237,6 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383 jmeter
      - - Constant Throughput Timer定时器 - /posts/48851.html - 作用

      限制整个运行过程中的生成的吞吐量不要超过某一个值,防止压死系统

      -

      参数

        -
      • 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选项基本一致,唯一区别是,每个活跃线程都会在所有活跃线程的上一次运行结束等待合理的时间后再次运行
        • -
        -
      • -
      -]]>
      - - 工具教程 - - - jmeter - -
      Gaussian Random Timer定时器 /posts/40953.html @@ -2289,6 +2266,29 @@ redis-cli --cluster create 8.142.144.75:6381 8.142.144.75:6382 8.142.144.75:6383

      模板

      2$等,表示解析到的第几个值给title,$1$表示第一个

      匹配数字

      0代表随机,1代表全部取值,通常使用0

      缺省值

      若参数没有取到值,那默认给一个值让他取

      +]]> + + 工具教程 + + + jmeter + +
      + + Constant Throughput Timer定时器 + /posts/48851.html + 作用

      限制整个运行过程中的生成的吞吐量不要超过某一个值,防止压死系统

      +

      参数

        +
      • 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选项基本一致,唯一区别是,每个活跃线程都会在所有活跃线程的上一次运行结束等待合理的时间后再次运行
        • +
        +
      • +
      ]]>
      工具教程 @@ -3246,224 +3246,106 @@ class Parse_Ini(object): :return: 指定sections下的options """ try: - option = self.parse.get(sections, options) - if ("-->" in option): - option = tuple(option.split("-->")) - return option - except configparser.NoOptionError as e: - return 'error: No option "{}" in section: "{}"'.format(options, sections) - - -if __name__ == "__init__": - pass -

      举个栗子:

      栗子1

      image

      -
      运行结果:

      image

      -
      栗子2

      image

      -
      运行结果:

      image

      -]]> - - 工具教程 - - - python - -
      - - python自动化配置参数 - /posts/1.html - selenium 配置参数

      每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器

      -

      selenium启动配置参数接收是ChromeOptions类,创建方式如下 :

      -
      from selenium import webdriver
      option = webdriver.ChromeOptions()
      driver = webdriver.Chrome(chrome_options=option)
      创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目
      -
      from selenium import webdriver
      option = webdriver.ChromeOptions()
      -

      添加启动参数

      option.add_argument()
      -

      添加扩展应用

      option.add_extension()
      option.add_encoded_extension()
      -

      添加实验性质的设置参数

      option.add_experimental_option()
      -

      设置调试器地址

      option.debugger_address()
      -

      常用配置参数:

      from selenium import webdriver
      option = webdriver.ChromeOptions()

      -

      添加UA

      options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
      -

      指定浏览器分辨率

      options.add_argument('window-size=1920x3000')
      -

      谷歌文档提到需要加上这个属性来规避bug

      chrome_options.add_argument('--disable-gpu')
      -

      隐藏滚动条, 应对一些特殊页面

      options.add_argument('--hide-scrollbars')
      -

      不加载图片, 提升速度

      options.add_argument('blink-settings=imagesEnabled=false')
      -

      浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

      options.add_argument('--headless')
      -

      以最高权限运行

      options.add_argument('--no-sandbox')
      -

      手动指定使用的浏览器位置

      options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
      -

      添加crx插件

      option.add_extension('d:crxAdBlock_v2.17.crx')
      -

      禁用JavaScript

      option.add_argument("--disable-javascript")
      -

      设置开发者模式启动,该模式下webdriver属性为正常值

      options.add_experimental_option('excludeSwitches', ['enable-automation'])
      -

      禁用浏览器弹窗

      prefs = { 
      'profile.default_content_setting_values' : {
      'notifications' : 2
      }
      }
      options.add_experimental_option('prefs',prefs)
      -

      添加代理 ip

      options.add_argument("--proxy-server=http://XXXXX.com:80")

      driver = webdriver.Chrome(chrome_options=chrome_options)
      -

      其他配置项目参数

      指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区

      --user-data-dir=[PATH]
      -

      指定缓存Cache路径

      –disk-cache-dir=[PATH]
      -

      指定Cache大小,单位Byte

      –disk-cache-size=
      -

      重置到初始状态,第一次运行

      –first run
      -

      隐身模式启动

      –incognito
      -

      禁用Javascript

      –disable-javascript
      -

      将地址栏弹出的提示菜单数量改为num个

      --omnibox-popup-count="num"
      -

      修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果

      --user-agent="xxxxxxxx"
      -

      禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果

      --disable-plugins
      -

      禁用JavaScript,如果觉得速度慢在加上这个

      --disable-javascript
      -

      禁用java

      --disable-java
      -

       启动就最大化

      --start-maximized
      -

      取消沙盒模式

      --no-sandbox
      -

      单进程运行

      --single-process
      -

      每个标签使用单独进程

      --process-per-tab
      -

      每个站点使用单独进程

      --process-per-site
      -

      插件不启用单独进程

      --in-process-plugins
      -

      禁用弹出拦截

      --disable-popup-blocking
      -

      禁用插件

      --disable-plugins
      -

      禁用图像

      --disable-images
      -

      启动进入隐身模式

      --incognito
      -

      启用账户切换菜单

      --enable-udd-profiles
      -

      使用pac代理 [via 1/2]

      --proxy-pac-url
      -

      设置语言为简体中文

      --lang=zh-CN
      -

      自定义缓存目录

      --disk-cache-dir
      -

      自定义缓存最大值(单位byte)

      --disk-cache-size
      -

      自定义多媒体缓存最大值(单位byte)

      --media-cache-size
      -

      在工具 栏增加一个书签按钮

      --bookmark-menu
      -

      启用书签同步

      --enable-sync
      -

      使用缓存

      options.add_argument("--disk-cache-dir=/path/to/cache/folder")
      options.add_argument("--disable-application-cache")
      options.add_argument("--disable-cache")
      -

      参考:https://www.cnblogs.com/sn5200/p/15949796.html

      -]]>
      - - 工具教程 - - - python - -
      - - 自动获取driver - /posts/1.html - 自动获取driver

      chrome

      下载驱动

      @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

      @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

      下载驱动

      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
      -

      使用

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

      firefox

      下载驱动

      @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
      -]]>
      - - 工具教程 - - - python - -
      - - 开发时遇到端口冲突解决办法 - /posts/58345.html - 解决办法

      resources下面新建文件application.properties,名称不能变,只能是这个,运行时系统会自动获取这个端口数据

      -

      在里面输入代码数据

      -
      server.port=${port:8888}
      -]]>
      - - 工具教程 - - - SpringBoot - -
      - - 接口开发环境部署 - /posts/557.html - 开发环境
        -
      • IDEA
      • -
      • Maven
      • -
      • Spring Boot
      • -
      • JDK_86001
      • -
      -

      在idea安装SpringBoot插件

      在maven下安装插件,需要在pox.xml文件输入下面的数据,然后更新文件


      <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}是在上面里面定义的版本信息,如果多个插件的版本一致就可以在属性上进行定义,然后使用变量进行引用

      -]]>
      - - 工具教程 - - - SpringBoot - -
      - - 返回cookie的Get接口开发 - /posts/24951.html - 位置布局
      - java
      - com.course.server
      - intertype
      MyGetMethod
      Application
      - resources
      - application.properties
      -

      Application 类

      创建Application.java类,用来运行接口,类名只能是Application,不能自定义

      -
      @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接口都在该类里面写接口方法

      -
      @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请求

      -]]>
      - - 工具教程 - - - 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 - 编写需要参数才能访问的get请求

      使用参数就要用到@RequestParam 参数类型 参数变量,可以有多个参数

      -

      这个接口还是在MyGetMethod类里面编写方法,有两种方法

      -

      第一种url:key=value&&key=value

      -
      /**
      * 开发一个需要参数才能访问的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

      -

      /**
      * 第二种需要携带参数访问的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;
      }
      + option = self.parse.get(sections, options) + if ("-->" in option): + option = tuple(option.split("-->")) + return option + except configparser.NoOptionError as e: + return 'error: No option "{}" in section: "{}"'.format(options, sections) + + +if __name__ == "__init__": + pass +

      举个栗子:

      栗子1

      image

      +
      运行结果:

      image

      +
      栗子2

      image

      +
      运行结果:

      image

      ]]>
      工具教程 - SpringBoot + python
      - 开发获取用户列表的Post接口 - /posts/16785.html - 开发获取用户列表的post请求

      开发添加人员信息时需要的字段数据

      首先,写一个User类,这将是添加时的字段数据

      -
      @Data
      public class User {
      private String userName;
      private String password;
      private String name;
      private String age;
      private String sex;
      }
      -

      然后开始写怎么获取用户列表,相当于添加用户

      @RequestBody User u请求post接口时,在Body填写上传的数据

      -
      @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 "参数不合法";
      }
      ]]>
      + python自动化配置参数 + /posts/1.html + selenium 配置参数

      每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件、没有收藏、没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器,这就是为什么需要配置参数的原因,但是有些时候我们需要的不仅是一个裸浏览器

      +

      selenium启动配置参数接收是ChromeOptions类,创建方式如下 :

      +
      from selenium import webdriver
      option = webdriver.ChromeOptions()
      driver = webdriver.Chrome(chrome_options=option)
      创建了ChromeOptions类之后就是添加参数,添加参数有几个特定的方法,分别对应添加不同类型的配置项目
      +
      from selenium import webdriver
      option = webdriver.ChromeOptions()
      +

      添加启动参数

      option.add_argument()
      +

      添加扩展应用

      option.add_extension()
      option.add_encoded_extension()
      +

      添加实验性质的设置参数

      option.add_experimental_option()
      +

      设置调试器地址

      option.debugger_address()
      +

      常用配置参数:

      from selenium import webdriver
      option = webdriver.ChromeOptions()

      +

      添加UA

      options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
      +

      指定浏览器分辨率

      options.add_argument('window-size=1920x3000')
      +

      谷歌文档提到需要加上这个属性来规避bug

      chrome_options.add_argument('--disable-gpu')
      +

      隐藏滚动条, 应对一些特殊页面

      options.add_argument('--hide-scrollbars')
      +

      不加载图片, 提升速度

      options.add_argument('blink-settings=imagesEnabled=false')
      +

      浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

      options.add_argument('--headless')
      +

      以最高权限运行

      options.add_argument('--no-sandbox')
      +

      手动指定使用的浏览器位置

      options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
      +

      添加crx插件

      option.add_extension('d:crxAdBlock_v2.17.crx')
      +

      禁用JavaScript

      option.add_argument("--disable-javascript")
      +

      设置开发者模式启动,该模式下webdriver属性为正常值

      options.add_experimental_option('excludeSwitches', ['enable-automation'])
      +

      禁用浏览器弹窗

      prefs = { 
      'profile.default_content_setting_values' : {
      'notifications' : 2
      }
      }
      options.add_experimental_option('prefs',prefs)
      +

      添加代理 ip

      options.add_argument("--proxy-server=http://XXXXX.com:80")

      driver = webdriver.Chrome(chrome_options=chrome_options)
      +

      其他配置项目参数

      指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区

      --user-data-dir=[PATH]
      +

      指定缓存Cache路径

      –disk-cache-dir=[PATH]
      +

      指定Cache大小,单位Byte

      –disk-cache-size=
      +

      重置到初始状态,第一次运行

      –first run
      +

      隐身模式启动

      –incognito
      +

      禁用Javascript

      –disable-javascript
      +

      将地址栏弹出的提示菜单数量改为num个

      --omnibox-popup-count="num"
      +

      修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果

      --user-agent="xxxxxxxx"
      +

      禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果

      --disable-plugins
      +

      禁用JavaScript,如果觉得速度慢在加上这个

      --disable-javascript
      +

      禁用java

      --disable-java
      +

       启动就最大化

      --start-maximized
      +

      取消沙盒模式

      --no-sandbox
      +

      单进程运行

      --single-process
      +

      每个标签使用单独进程

      --process-per-tab
      +

      每个站点使用单独进程

      --process-per-site
      +

      插件不启用单独进程

      --in-process-plugins
      +

      禁用弹出拦截

      --disable-popup-blocking
      +

      禁用插件

      --disable-plugins
      +

      禁用图像

      --disable-images
      +

      启动进入隐身模式

      --incognito
      +

      启用账户切换菜单

      --enable-udd-profiles
      +

      使用pac代理 [via 1/2]

      --proxy-pac-url
      +

      设置语言为简体中文

      --lang=zh-CN
      +

      自定义缓存目录

      --disk-cache-dir
      +

      自定义缓存最大值(单位byte)

      --disk-cache-size
      +

      自定义多媒体缓存最大值(单位byte)

      --media-cache-size
      +

      在工具 栏增加一个书签按钮

      --bookmark-menu
      +

      启用书签同步

      --enable-sync
      +

      使用缓存

      options.add_argument("--disk-cache-dir=/path/to/cache/folder")
      options.add_argument("--disable-application-cache")
      options.add_argument("--disable-cache")
      +

      参考:https://www.cnblogs.com/sn5200/p/15949796.html

      +]]>
      工具教程 - SpringBoot + python
      - 开发获得cookie的Post登录接口 - /posts/42075.html - 开发获得cookie的Post登录接口

      @RequestMapping(value = "/v1")的作用是把这个value和方法上的登录地址进行拼接,比如:/v1/login

      -

      @RestController标识该接口可以被托管

      -

      方法参数@RequestParam(value = "userName", required = true) String userName,代码中的required = true起到必填的作用

      -

      举个栗子

      @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 "用户名或密码错误!";

      }
      ]]>
      + 自动获取driver + /posts/1.html + 自动获取driver

      chrome

      下载驱动

      @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

      @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

      下载驱动

      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
      +

      使用

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

      firefox

      下载驱动

      @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
      +]]>
      工具教程 - SpringBoot + python
      @@ -3870,6 +3752,124 @@ if __name__ == "__init__": shell + + 开发时遇到端口冲突解决办法 + /posts/58345.html + 解决办法

      resources下面新建文件application.properties,名称不能变,只能是这个,运行时系统会自动获取这个端口数据

      +

      在里面输入代码数据

      +
      server.port=${port:8888}
      +]]>
      + + 工具教程 + + + SpringBoot + +
      + + 接口开发环境部署 + /posts/557.html + 开发环境
        +
      • IDEA
      • +
      • Maven
      • +
      • Spring Boot
      • +
      • JDK_86001
      • +
      +

      在idea安装SpringBoot插件

      在maven下安装插件,需要在pox.xml文件输入下面的数据,然后更新文件


      <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}是在上面里面定义的版本信息,如果多个插件的版本一致就可以在属性上进行定义,然后使用变量进行引用

      +]]>
      + + 工具教程 + + + SpringBoot + +
      + + 返回cookie的Get接口开发 + /posts/24951.html + 位置布局
      - java
      - com.course.server
      - intertype
      MyGetMethod
      Application
      - resources
      - application.properties
      +

      Application 类

      创建Application.java类,用来运行接口,类名只能是Application,不能自定义

      +
      @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接口都在该类里面写接口方法

      +
      @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请求

      +]]>
      + + 工具教程 + + + 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 + 编写需要参数才能访问的get请求

      使用参数就要用到@RequestParam 参数类型 参数变量,可以有多个参数

      +

      这个接口还是在MyGetMethod类里面编写方法,有两种方法

      +

      第一种url:key=value&&key=value

      +
      /**
      * 开发一个需要参数才能访问的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

      +

      /**
      * 第二种需要携带参数访问的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;
      }
      +]]>
      + + 工具教程 + + + SpringBoot + +
      + + 开发获取用户列表的Post接口 + /posts/16785.html + 开发获取用户列表的post请求

      开发添加人员信息时需要的字段数据

      首先,写一个User类,这将是添加时的字段数据

      +
      @Data
      public class User {
      private String userName;
      private String password;
      private String name;
      private String age;
      private String sex;
      }
      +

      然后开始写怎么获取用户列表,相当于添加用户

      @RequestBody User u请求post接口时,在Body填写上传的数据

      +
      @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 "参数不合法";
      }
      ]]>
      + + 工具教程 + + + SpringBoot + +
      + + 开发获得cookie的Post登录接口 + /posts/42075.html + 开发获得cookie的Post登录接口

      @RequestMapping(value = "/v1")的作用是把这个value和方法上的登录地址进行拼接,比如:/v1/login

      +

      @RestController标识该接口可以被托管

      +

      方法参数@RequestParam(value = "userName", required = true) String userName,代码中的required = true起到必填的作用

      +

      举个栗子

      @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 "用户名或密码错误!";

      }
      ]]>
      + + 工具教程 + + + SpringBoot + +
      为博客编写bat文件 /posts/2943790551.html @@ -3884,24 +3884,25 @@ if __name__ == "__init__": - Arrivals Thread Group的使用 - /posts/63387.html + Ultimate Thread Group的使用 + /posts/6166.html 前提
      • 安装插件,下载Custom Thread Groupsan插件

      • -
      • 添加Arrivals Thread Group

        +
      • 添加Ultimate 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线程
      • +
      • Start Threads Count : 线程数
      • +
      • Initial Delay,sec : 线程延迟启动,0指的是立即启动;5代表五秒后启动
      • +
      • Startup Time,sec : 线程及时启动,0代表立即启动,5代表五秒之内启动完成
      • +
      • Hold Load For,sec : 启动后运行的时间,120代表运行120秒
      • +
      • Shutdown Time : 代表运行结束后停止的时间,0代表运行结束后立即停止,5代表运行结束后五秒内停止
      - -
      ]]>
      + + +]]> 工具教程 @@ -3910,25 +3911,24 @@ if __name__ == "__init__":
      - Ultimate Thread Group的使用 - /posts/6166.html + Arrivals Thread Group的使用 + /posts/63387.html 前提
      • 安装插件,下载Custom Thread Groupsan插件

      • -
      • 添加Ultimate Thread Group

        +
      • 添加Arrivals 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代表运行结束后五秒内停止
      • +
      • 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线程
      - -
      -]]>
      + +]]> 工具教程 diff --git a/self/css/font_cursor.css b/self/css/font_cursor.css index 22ff726d..d71f3cc0 100644 --- a/self/css/font_cursor.css +++ b/self/css/font_cursor.css @@ -1 +1 @@ -@font-face{font-family:TXAQTJ;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/TXAQTJ.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071803Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=51e27d8c99cccec47dcdec8ca8c8d81f8332fbd179459986d1fca330f28fcf9d) format("truetype")}@font-face{font-family:FZZYJT;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/FZZYJT.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071742Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=3ecb7d1dc01217181e1bee30d86a3fd5821421562cb3b438a381a62539220c35) format("truetype")}@font-face{font-family:HYTMR35W;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/HYTMR35W.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071326Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=72cd4f41be63f047cc3454a46f27364329571eb0a3fcdadd1e1b5c56e3803049) format("truetype")}@font-face{font-family:HYTMR95W;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/HYTMR95W.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071726Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=c1e9faac77c243d0f1248c40711fcab907c5418b11077aecafe1d462c3c7ca5b) format("truetype")}@font-face{font-family:HYXDPLT;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/HYXDPLT.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071412Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=de3694141ac161f54678de22e8880d135f20b6a954d0bcd82b3c8b2929365eb1) format("truetype")}@font-face{font-family:ZhuZiAWan;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/ZhuZiAWan.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071435Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=8ef2d061d23f00b3b6805296b7170569a6fb58a194229939ea34045eda07a6bf) format("truetype")}@font-face{font-family:FZODZK;font-display:swap;src:url(https://gglss-font.s3.bitiful.net/font/FZODZK.ttf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=kgladOUFQEpRozhqYrn7ytMn%2F20240125%2F%2Fs3%2Faws4_request&X-Amz-Date=20240125T071451Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=95594135346648dbd204959d2481b8972a9d3d3ae7cfb2b22abeec5c6e53f4cb) format("truetype")} \ No newline at end of file +@font-face{font-family:TXAQTJ;font-display:swap;src:url(https://font.s3.bitiful.net/font/TXAQTJ.ttf) format("truetype")}@font-face{font-family:FZZYJT;font-display:swap;src:url(https://font.s3.bitiful.net/font/FZZYJT.ttf) format("truetype")}@font-face{font-family:HYTMR35W;font-display:swap;src:url(https://font.s3.bitiful.net/font/HYTMR35W.ttf) format("truetype")}@font-face{font-family:HYTMR95W;font-display:swap;src:url(https://font.s3.bitiful.net/font/HYTMR95W.ttf) format("truetype")}@font-face{font-family:HYXDPLT;font-display:swap;src:url(https://font.s3.bitiful.net/font/HYXDPLT.ttf) format("truetype")}@font-face{font-family:ZhuZiAWan;font-display:swap;src:url(https://font.s3.bitiful.net/font/ZhuZiAWan.ttf) format("truetype")}@font-face{font-family:FZODZK;font-display:swap;src:url(https://font.s3.bitiful.net/font/FZODZK.ttf) format("truetype")} \ No newline at end of file diff --git a/self/css/researchblog.css b/self/css/researchblog.css index b7901c56..cf4de670 100644 --- a/self/css/researchblog.css +++ b/self/css/researchblog.css @@ -1 +1 @@ -#web_bg{position:fixed;z-index:-999;width:100%;height:100%;background:url(https://api.paugram.com/bing);background-attachment:local;background-position:center;background-size:cover;background-repeat:no-repeat}[data-theme=light] #web_bg::before{position:absolute;width:100%;height:100%;content:''}[data-theme=dark] #web_bg::before{position:absolute;width:100%;height:100%;background-color:#000;content:''}#page-header:not(.not-top-img)::before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,0);content:''}#page-header{background:0 0!important;background-image:#000}#page-header.post-bg::before{background-color:rgba(0,0,0,0)}#footer::before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,0);content:''}body{color:#c9c9c9;font-size:16px;line-height:2}#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:100%;height:100%;background-color:#fff}#loading-box .loading-img{width:150px;height:150px;border-radius:50%;margin:auto;border:4px solid #f0f0f2}#nav{display:flex;padding:0 36px;width:100%;height:60px;box-shadow:none!important;border-bottom:1px solid #c9c9c9}#site-name,.site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=dark] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}.site-page:hover{color:#fff!important;background-color:#f05011;border-radius:8px}#nav .menus_items .menus_item{flex:1 1 auto;justify-content:flex-end;margin-left:auto;flex-wrap:nowrap;translate:50%;padding:0 0 0 15px;font-weight:700;display:inline-block;position:relative}#menus>.menus_items{flex:1 1 auto;justify-content:flex-end;margin-left:auto;display:flex;flex-wrap:nowrap}#toggleButtons{display:flex;flex:1 1 auto;justify-content:flex-end}[data-theme=light] .menus_item_child{border:1px solid #c9c9c9;margin:5px!important;border-radius:7px;padding:20px;padding-left:10px;padding-right:10px;width:100%;background-color:#fff!important}[data-theme=dark] .menus_item_child{border:1px solid #f05011;margin:5px!important;border-radius:7px;padding:20px;padding-left:10px;padding-right:10px;width:100%;background-color:#000!important}.site-page .child li a:hover{color:#fff!important;background-color:#f05011;border-radius:8px}@media screen and (max-width:768px){[data-theme=dark] .menus_item_child{border:none;background-color:#00000000!important}[data-theme=light] .menus_item_child{border:none;background-color:#00000000!important}}#nav ::after{background-color:transparent!important}#nav .menus_items .menus_item .menus_item_child li:hover{background:#ffffff00}.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=dark] #nav .menus_items .menus_item .menus_item_child{background-color:#00000000}#nav .menus_items .menus_item .menus_item_child li a{display:inline-block;padding:8px 16px;width:100%;color:#4c4948!important;text-shadow:none!important}[data-theme=dark] #nav .menus_items .menus_item .menus_item_child li a{display:inline-block;padding:8px 16px;width:100%;color:#fff!important;text-shadow:none!important}#nav .menus_items .menus_item:hover .menus_item_child{display:block;background-color:#fff}[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(250,250,250,.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;font-weight:700;display:inline-block;position:relative}@media screen and (max-width:768px){#toggleButtons{display:flex;flex:0 1 auto;justify-content:flex-end}}#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}.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:1470px;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}}@media screen and (max-width:900px){.layout{display:flex;flex:1 auto;margin:0 auto;padding:4px 15px;max-width:1200px;width:100%}#category-bar{background:rgba(255,255,255,0);border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c8c9c9;width:100%;margin-top:15px}}.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}[data-theme=light] #footer{background:linear-gradient(180deg,#fff0 0,#fff 25%)!important;opacity:.7;border-radius:8px;width:100%;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:#ff7242;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:hover .recent-post-info .article-title{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}#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;border-radius:8px}.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}#page-header #site-subtitle{color:#fff;font-size:1.15em}@media screen and (min-width:768px){#page-header #site-subtitle{font-size:1.72em}}[data-theme=light] #category-bar{padding:4px 0;background:#fff;border-radius:8px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c9c9c9;width:100%;margin-top:15px}[data-theme=dark] #category-bar{background:#121212;border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c9c9c9;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-more{margin-left:1rem;font-weight:700}.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex;margin-top:5px}@media screen and (max-width:768px){.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex;margin-top:6px;margin-bottom:6px}}.category-bar-items::-webkit-scrollbar{display:none}.category-bar-item a{padding:.1rem .5rem;margin:0 .25rem;font-weight:700;border-radius:8px}.category-bar-item:hover a{background:#f05012;color:#fff!important;border-radius:8px}.category-bar-item>a{padding:6px;padding-right:5px;padding-bottom:5px;padding-left:5px;padding-left:10px;padding-right:10px;border-radius:7px}@media screen and (min-width:900px){#aside-content{padding-right:15px;padding-left:0}}@media screen and (max-width:768px){#sidebar #sidebar-menus .menus_item>.site-page{display:block;font-size:12px;color:rgba(60,60,67,.8)}#sidebar #sidebar-menus .menus_items .menus_item_child{margin:0 -4px;list-style:none;display:flex;flex-direction:row;flex-wrap:wrap}}@media screen and (max-width:768px){[data-theme=light] #sidebar #sidebar-menus .menus_item_child .child{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;border:var(--style-border-always);background:#fff;font-size:14px}[data-theme=light] .menus_item_child>li{margin:4px;border-radius:7px;padding-left:1px;padding-right:10px;display:block;translate:50%;width:calc(50% - 8px)}[data-theme=dark] #sidebar #sidebar-menus .menus_item_child .child{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;border:var(--style-border-always);background:#fff0;font-size:14px}[data-theme=dark] .menus_item_child>li{margin:4px;border-radius:7px;padding-left:1px;padding-right:10px;display:block;translate:50%;width:calc(50% - 8px)}.menus_item_child:not(#sidebar-menusul){left:50%;translate:-30%}#sidebar #sidebar-menus .menus_item_child .child:hover{background:#ff7242;color:#fff}}#sidebar #sidebar-menus.open>.avatar-img img{height:100px;width:100px;border-radius:50%;border:5px solid #fff;filter:none}@media screen and (max-width:768px){.layout{padding:0 1rem}}@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}}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a{border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-content:space-between;border:1px solid #e3e8f7}#page>.page-title{display:none}[data-theme=light] #post .post-copyright .post-copyright-meta{color:#7b7776;font-weight:700}[data-theme=dark] #post .post-copyright{color:#ccc;font-weight:700;position:relative;margin:2rem 0 .5rem;padding:.5rem .8rem;border:1px solid #8f8989;-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:#fff0}[data-theme=dark] #post .post-copyright{color:#888;font-weight:700}#post .post-copyright .post-copyright-meta{color:#b7b7b7;font-weight:700}[data-theme=dark] a{color:#b7b7b7;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}[data-theme=light] a{color:#7b7776;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}[data-theme=light] #post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid var(--pseudo-hover);border-radius:12px;color:var(--pseudo-hover);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}[data-theme=dark] #post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid #b7b7b7;border-radius:12px;color:#b7b7b7;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}@media screen and (min-width:768px){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:#f05012}#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:#f05012;-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}}#article-container.post-content h1,#article-container.post-content h1:hover::before{text-align:center} \ No newline at end of file +#web_bg{position:fixed;z-index:-999;width:100%;height:100%;background:url(https://api.paugram.com/bing);background-attachment:local;background-position:center;background-size:cover;background-repeat:no-repeat}[data-theme=light] #web_bg::before{position:absolute;width:100%;height:100%;content:''}[data-theme=dark] #web_bg::before{position:absolute;width:100%;height:100%;background-color:#000;content:''}#page-header:not(.not-top-img)::before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,0);content:''}#page-header{background:0 0!important;background-image:#000}#page-header.post-bg::before{background-color:rgba(0,0,0,0)}#footer::before{position:absolute;width:100%;height:100%;background-color:rgba(0,0,0,0);content:''}body{color:#c9c9c9;font-size:16px;line-height:2}#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:100%;height:100%;background-color:#fff}#loading-box .loading-img{width:150px;height:150px;border-radius:50%;margin:auto;border:4px solid #f0f0f2}#page-header.full_page{height:30vh;background-attachment:fixed}#nav{display:flex;padding:0 36px;width:100%;height:60px;box-shadow:none!important;border-bottom:1px solid #c9c9c9}#site-name,.site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}[data-theme=dark] .site-page{padding:5px;padding-left:10px;padding-right:10px;border-radius:7px}.site-page:hover{color:#fff!important;background-color:#f05011;border-radius:8px}#nav .menus_items .menus_item{flex:1 1 auto;justify-content:flex-end;margin-left:auto;flex-wrap:nowrap;translate:50%;padding:0 0 0 15px;font-weight:700;display:inline-block;position:relative}#menus>.menus_items{flex:1 1 auto;justify-content:flex-end;margin-left:auto;display:flex;flex-wrap:nowrap}#toggleButtons{display:flex;flex:1 1 auto;justify-content:flex-end}[data-theme=light] .menus_item_child{border:1px solid #c9c9c9;margin:5px!important;border-radius:7px;padding:20px;padding-left:10px;padding-right:10px;width:100%;background-color:#fff!important}[data-theme=dark] .menus_item_child{border:1px solid #f05011;margin:5px!important;border-radius:7px;padding:20px;padding-left:10px;padding-right:10px;width:100%;background-color:#000!important}.site-page .child li a:hover{color:#fff!important;background-color:#f05011;border-radius:8px}@media screen and (max-width:768px){[data-theme=dark] .menus_item_child{border:none;background-color:#00000000!important}[data-theme=light] .menus_item_child{border:none;background-color:#00000000!important}}#nav ::after{background-color:transparent!important}#nav .menus_items .menus_item .menus_item_child li:hover{background:#ffffff00}.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=dark] #nav .menus_items .menus_item .menus_item_child{background-color:#00000000}#nav .menus_items .menus_item .menus_item_child li a{display:inline-block;padding:8px 16px;width:100%;color:#4c4948!important;text-shadow:none!important}[data-theme=dark] #nav .menus_items .menus_item .menus_item_child li a{display:inline-block;padding:8px 16px;width:100%;color:#fff!important;text-shadow:none!important}#nav .menus_items .menus_item:hover .menus_item_child{display:block;background-color:#fff}[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(250,250,250,.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;font-weight:700;display:inline-block;position:relative}@media screen and (max-width:768px){#toggleButtons{display:flex;flex:0 1 auto;justify-content:flex-end}}.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:1470px;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}}@media screen and (max-width:900px){.layout{display:flex;flex:1 auto;margin:0 auto;padding:4px 15px;max-width:1200px;width:100%}#category-bar{background:rgba(255,255,255,0);border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c8c9c9;width:100%;margin-top:15px}}.latest{margin-top:1rem}.aside-content{max-width:312px;min-width:300px}.recent-posts{width:100%!important;padding-right:15px}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}.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-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}#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}#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}[data-theme=light] #footer{background:linear-gradient(180deg,#fff0 0,#fff 25%)!important;opacity:.7;border-radius:8px;width:100%;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:#ff7242;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:hover .recent-post-info .article-title{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}#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;border-radius:8px}.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}#page-header #site-subtitle{color:#fff;font-size:1.15em}@media screen and (min-width:768px){#page-header #site-subtitle{font-size:1.72em}}[data-theme=light] #category-bar{padding:4px 0;background:#fff;border-radius:8px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c9c9c9;width:100%;margin-top:15px}[data-theme=dark] #category-bar{background:#121212;border-radius:12px;display:flex;white-space:nowrap;overflow:hidden;margin-bottom:0;border:1px solid #c9c9c9;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-more{margin-left:1rem;font-weight:700}.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex;margin-top:5px}@media screen and (max-width:768px){.category-bar-items{white-space:nowrap;overflow-x:scroll;display:flex;margin-top:6px;margin-bottom:6px}}.category-bar-items::-webkit-scrollbar{display:none}.category-bar-item a{padding:.1rem .5rem;margin:0 .25rem;font-weight:700;border-radius:8px}.category-bar-item:hover a{background:#f05012;color:#fff!important;border-radius:8px}.category-bar-item>a{padding:6px;padding-right:5px;padding-bottom:5px;padding-left:5px;padding-left:10px;padding-right:10px;border-radius:7px}@media screen and (min-width:900px){#aside-content{padding-right:15px;padding-left:0}}@media screen and (max-width:768px){#sidebar #sidebar-menus .menus_item>.site-page{display:block;font-size:12px;color:rgba(60,60,67,.8)}#sidebar #sidebar-menus .menus_items .menus_item_child{margin:0 -4px;list-style:none;display:flex;flex-direction:row;flex-wrap:wrap}}@media screen and (max-width:768px){[data-theme=light] #sidebar #sidebar-menus .menus_item_child .child{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;border:var(--style-border-always);background:#fff;font-size:14px}[data-theme=light] .menus_item_child>li{margin:4px;border-radius:7px;padding-left:1px;padding-right:10px;display:block;translate:50%;width:calc(50% - 8px)}[data-theme=dark] #sidebar #sidebar-menus .menus_item_child .child{display:flex;flex-direction:column;align-items:center;padding:8px;border-radius:8px;border:var(--style-border-always);background:#fff0;font-size:14px}[data-theme=dark] .menus_item_child>li{margin:4px;border-radius:7px;padding-left:1px;padding-right:10px;display:block;translate:50%;width:calc(50% - 8px)}.menus_item_child:not(#sidebar-menusul){left:50%;translate:-30%}#sidebar #sidebar-menus .menus_item_child .child:hover{background:#ff7242;color:#fff}}#sidebar #sidebar-menus.open>.avatar-img img{height:100px;width:100px;border-radius:50%;border:5px solid #fff;filter:none}@media screen and (max-width:768px){.layout{padding:0 1rem}}@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}}#aside-content .card-archives ul.card-archive-list>.card-archive-list-item a{border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-content:space-between;border:1px solid #e3e8f7}#page>.page-title{display:none}[data-theme=light] #post .post-copyright .post-copyright-meta{color:#7b7776;font-weight:700}[data-theme=dark] #post .post-copyright{color:#ccc;font-weight:700;position:relative;margin:2rem 0 .5rem;padding:.5rem .8rem;border:1px solid #8f8989;-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:#fff0}[data-theme=dark] #post .post-copyright{color:#888;font-weight:700}#post .post-copyright .post-copyright-meta{color:#b7b7b7;font-weight:700}[data-theme=dark] a{color:#b7b7b7;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}[data-theme=light] a{color:#7b7776;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}[data-theme=light] #post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid var(--pseudo-hover);border-radius:12px;color:var(--pseudo-hover);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}[data-theme=dark] #post .tag_share .post-meta__tags{display:inline-block;margin:8px 8px 8px 0;padding:0 12px;width:fit-content;border:1px solid #b7b7b7;border-radius:12px;color:#b7b7b7;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}@media screen and (min-width:768px){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:#f05012}#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:#f05012;-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}}#article-container.post-content h1,#article-container.post-content h1:hover::before{text-align:center} \ No newline at end of file diff --git a/self/img/siteicon/README.html b/self/img/siteicon/README.html index 3a84c5ad..663cc89d 100644 --- a/self/img/siteicon/README.html +++ b/self/img/siteicon/README.html @@ -1,4 +1,4 @@ -GGLSS | GGLSS

      Your Favicon Package

      This package was generated with RealFaviconGenerator v0.16

      Install instructions

      To install this package:

      Extract this package in <web site>/self/img/siteicon/. If your site is http://www.example.com, you should be able to access a file named http://www.example.com/self/img/siteicon/favicon.ico.

      Insert the following code in the head section of your pages:

      <link rel="apple-touch-icon" sizes="180x180" href="/self/img/siteicon/apple-touch-icon.png">
      +GGLSS | GGLSS

      Your Favicon Package

      This package was generated with RealFaviconGenerator v0.16

      Install instructions

      To install this package:

      Extract this package in <web site>/self/img/siteicon/. If your site is http://www.example.com, you should be able to access a file named http://www.example.com/self/img/siteicon/favicon.ico.

      Insert the following code in the head section of your pages:

      <link rel="apple-touch-icon" sizes="180x180" href="/self/img/siteicon/apple-touch-icon.png">
       <link rel="icon" type="image/png" sizes="32x32" href="/self/img/siteicon/favicon-32x32.png">
       <link rel="icon" type="image/png" sizes="16x16" href="/self/img/siteicon/favicon-16x16.png">
       <link rel="manifest" href="/self/img/siteicon/site.webmanifest">
      @@ -9,4 +9,4 @@
       <meta name="msapplication-TileColor" content="#333333">
       <meta name="msapplication-config" content="/self/img/siteicon/browserconfig.xml">
       <meta name="theme-color" content="#ffffff">
      -

      Optional - Check your favicon with the favicon checker


      评论
      WalineValine
      控制面板×

      性能设置

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

      主题设置

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

      主题色

      背景设置

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

      图片(手机)

      图片(电脑)

      渐变色

      纯色

      文章统计

      监控

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

      关于

      Hexo-theme-Acryple v1.0.100
      Ariasaka Console v0.01
      欢迎反馈!
      🍭查看新品🍬
      \ No newline at end of file +

      Optional - Check your favicon with the favicon checker


      评论
      WalineValine
      控制面板×

      性能设置

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

      主题设置

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

      主题色

      背景设置

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

      图片(手机)

      图片(电脑)

      渐变色

      纯色

      文章统计

      监控

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

      关于

      Hexo-theme-Acryple v1.0.100
      Ariasaka Console v0.01
      欢迎反馈!
      🍭查看新品🍬
      \ No newline at end of file diff --git a/sw.js b/sw.js index 99ab032e..89e61108 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -const workboxVersion="5.1.3";importScripts("https://storage.googleapis.com/workbox-cdn/releases/5.1.3/workbox-sw.js"),workbox.core.setCacheNameDetails({prefix:"your name"}),workbox.core.skipWaiting(),workbox.core.clientsClaim(),workbox.precaching.precacheAndRoute([{revision:"5a6c899f98b606e5cef3ddf51a776869",url:"./index.html"},{revision:"6563498f02d550740dd5b2adeb823018",url:"./js/main.js"},{revision:"d8172c3e3a5a768e9839b6609b360009",url:"./css/index.css"}],{directoryIndex:null}),workbox.precaching.cleanupOutdatedCaches(),workbox.routing.registerRoute(/\.(?:png|jpg|jpeg|gif|bmp|webp|svg|ico)$/,new workbox.strategies.CacheFirst({cacheName:"images",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/\.(?:eot|ttf|woff|woff2)$/,new workbox.strategies.CacheFirst({cacheName:"fonts",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new workbox.strategies.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets"})),workbox.routing.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new workbox.strategies.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/^https:\/\/cdn\.jsdelivr\.net/,new workbox.strategies.CacheFirst({cacheName:"static-libs",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.googleAnalytics.initialize(); \ No newline at end of file +const workboxVersion="5.1.3";importScripts("https://storage.googleapis.com/workbox-cdn/releases/5.1.3/workbox-sw.js"),workbox.core.setCacheNameDetails({prefix:"your name"}),workbox.core.skipWaiting(),workbox.core.clientsClaim(),workbox.precaching.precacheAndRoute([{revision:"058611eb8cd2d794172d3790e72f38d1",url:"./index.html"},{revision:"6563498f02d550740dd5b2adeb823018",url:"./js/main.js"},{revision:"d8172c3e3a5a768e9839b6609b360009",url:"./css/index.css"}],{directoryIndex:null}),workbox.precaching.cleanupOutdatedCaches(),workbox.routing.registerRoute(/\.(?:png|jpg|jpeg|gif|bmp|webp|svg|ico)$/,new workbox.strategies.CacheFirst({cacheName:"images",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/\.(?:eot|ttf|woff|woff2)$/,new workbox.strategies.CacheFirst({cacheName:"fonts",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new workbox.strategies.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets"})),workbox.routing.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new workbox.strategies.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.routing.registerRoute(/^https:\/\/cdn\.jsdelivr\.net/,new workbox.strategies.CacheFirst({cacheName:"static-libs",plugins:[new workbox.expiration.ExpirationPlugin({maxEntries:1e3,maxAgeSeconds:2592e3}),new workbox.cacheableResponse.CacheableResponsePlugin({statuses:[0,200]})]})),workbox.googleAnalytics.initialize(); \ No newline at end of file diff --git a/tags/Butterfly/index.html b/tags/Butterfly/index.html index b06a0b68..31347043 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 f4380c9f..18dbec3e 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 841a7d55..cf4dea20 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/Mac/index.html b/tags/Mac/index.html index f9010d99..8fd6b138 100644 --- a/tags/Mac/index.html +++ b/tags/Mac/index.html @@ -1 +1 @@ -标签: mac | GGLSS
      控制面板×

      性能设置

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

      主题设置

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

      主题色

      背景设置

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

      图片(手机)

      图片(电脑)

      渐变色

      纯色

      文章统计

      监控

      文章统计

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

      关于

      Hexo-theme-Acryple v1.0.100
      Ariasaka Console v0.01
      欢迎反馈!
      🍭查看新品🍬
      \ No newline at end of file +标签: mac | 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 b48b15ae..9dfbe23a 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 c4696787..f4df4a7c 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 89491377..68de25a6 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 f94693e3..13162c1d 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 c79a5be9..f81cffea 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 ee540ce2..9cbbac9d 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 e62b2cd6..2741166a 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 d5381a4a..2a462af6 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 269ed5b2..dac016f7 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/jmeter/index.html b/tags/jmeter/index.html index de10a0b7..1deada95 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 cd9d3f7d..82a8fa64 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 facf59da..d8f8bbb1 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 22a90155..aa7b814a 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 e5f46df3..ee5ecb6b 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 4749fd2e..b387de5b 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 393125ad..5a230c21 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/window/index.html b/tags/window/index.html index f7cdb1a6..09e695ce 100644 --- a/tags/window/index.html +++ b/tags/window/index.html @@ -1 +1 @@ -标签: window | GGLSS
      控制面板×

      性能设置

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

      主题设置

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

      主题色

      背景设置

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

      图片(手机)

      图片(电脑)

      渐变色

      纯色

      文章统计

      监控

      文章统计

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

      关于

      Hexo-theme-Acryple v1.0.100
      Ariasaka Console v0.01
      欢迎反馈!
      🍭查看新品🍬
      \ No newline at end of file +标签: window | 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 b80f9d79..20661637 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 185d4deb..7a338958 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 9cb70398..b51f29a1 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/\346\227\205\346\270\270/index.html" "b/tags/\346\227\205\346\270\270/index.html" index baddbfe0..c1dcf3b7 100644 --- "a/tags/\346\227\205\346\270\270/index.html" +++ "b/tags/\346\227\205\346\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/tags/\347\233\221\346\216\247/index.html" "b/tags/\347\233\221\346\216\247/index.html" index d5d62d6e..5ff2469e 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/\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 65939786..d22ec70e 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