Tenny's Blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 搜索

Java是什么

发表于 2017-04-08 | 分类于 Java学习记录

Java 技术

Java技术既是一门编程语言,也是一个平台。

Java编程语言

Java作为一门高级编程语言,具有如下特性:

  • 简单
  • 跨平台
  • 面向对象
  • 便携性
  • 分布式
  • 高性能
  • 多线程
  • 健壮的
  • 动态的
  • 安全的

在Java程序中,所有的源文件是以”.java”结尾的普通文本文件,java编译器将源文件编译成”.class”文件。”.class”文件包含的并不是类似”0101011”的机器语言代码,而是称之为字节码(bytecodes)的东东,而这个字节码其实是java虚拟机的机器语言。通过java虚拟机,再将字节码转换为本地机器可识别的代码。

编译图如下:

java编译图

因为java虚拟机可运行在不同的平台,所以我们的.class文件也可以运行在微软,Linux,苹果等不同平台。虚拟机的存在使得java实现了跨平台,也就是经常说的”一次编译,到处运行”。

java跨平台

Java平台

平台是供程序运行的硬件或软件环境。我们常说的微软操作系统,Linux系统,苹果操作系统这些都属于平台。大部分的平台是操作系统和基础硬件的合集。而Java平台与大多数平台不同,它是一个纯的软件平台,运行于其他的基于硬件的平台上(例如Windows)。

Java平台包含两部分:

  • Java虚拟机
  • Java应用程序接口(API)

上面已经提到过java虚拟机,它是java平台的基础,与不同的操作系统对接。

API是内置的许多有用的方法的集合。它将相关的类(class)和接口(interface)组合成库,这个库我们通常称之为包(package)。

java平台

作为一个平台独立的环境,Java平台的速度比传统编译(c++直接编译成机器指令,java编译后是字节码文件,还需要虚拟机翻译成机器指令)慢,。但是随着硬件的发展,java编译器和虚拟机的性能已大幅提升,其速度和传统编译已相差无几。

Nginx加权轮询算法

发表于 2017-04-06 | 分类于 Nginx

记录一下nginx加权分配算法。

nginx可以指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:

1
2
3
4
5
upstream backend {
server a weight=6;
server b weight=3;
server c weight=1;
}

按照配置,每有10次请求,其中6个会转发到a服务器,3个转发到b服务器,1个转发到c服务器。

每个服务器都有三个权重变量,先解释下它们的含义。

(1) weight

配置文件中指定的该服务器的权重,这个值是固定不变的。

(2) effective_weight

服务器的有效权重,初始值为weight。

在释放服务器时,如果发现和某服务器的通信过程中发生了错误,就减小它的effective_weight。
此后有新的请求过来时,在选取该服务器的过程中,再逐步增加effective_weight,最终又恢复到weight。
之所以增加这个字段,是为了当服务器发生错误时,降低其权重。

(3) current_weight

服务器目前的权重,初始为0,之后会动态调整。

那么如何动态调整呢?

nginx每次选取服务器时:

  1. 先遍历集群中所有服务器,将每个服务器的current_weight增加它的effective_weight,
  2. 再累加所有服务器的effective_weight,保存为total。
  3. 判断当前服务器的current_weight是否最大,是则选中该服务器,然后把它的current_weight减去total。
    不是则不会被选中,current_weight也就不用减了。

弄清了三个weight字段的含义后,加权轮询算法可描述为:

  1. 对于每个请求,遍历集群中的所有可用服务器,对于每个服务器执行:
    current_weight += effecitve_weight。
  2. 累加所有effective_weight,保存为total。
  3. 选出current_weight最大的服务器,作为本次选定的服务器。
  4. 对于本次选定的服务器,执行:current_weight -= total。

下面以表格形式记录其过程:

请求次数 开始current_weight 增加effective_weight 累加total 选中服务器 选中后current_weight
1 [0, 0, 0] [6, 3, 1] 10 a [-4, 3, 1]
2 [-4, 3, 1] [2, 6, 2] 10 b [2, -4, 2]
3 [2, -4, 2] [8, -1, 3] 10 a [-2, -1, 3]
4 [-2, -1, 3] [4, 2, 4] 10 a [-6, 2, 4]
5 [-6, 2, 4] [0, 5, 5] 10 b [0, -5, 5]
6 [0, -5, 5] [6, -2, 6] 10 a [-4, -2, 6]
7 [-4, -2, 6] [2, 1, 7] 10 c [2, 1, -3]
8 [2, 1, -3] [8, 4, -2] 10 a [-2, 4, -2]
9 [-2, 4, -2] [4, 7, -1] 10 b [4, -3, -1]
10 [4, -3, -1] [10, 0, 0] 10 a [0, 0, 0]

可以看到,选中服务器依次为[a, b, a, a, b, a, c, a, b, a]。

a,b,c分别被选中了6,3,1次,正好是符合其权重值的;
服务器a虽然权重大,但没有被连续选取,不会对a服务器连续请求;
经过10次请求后,a,b,c的当前权重current_weight又全部归0,如此便可循环往复。

ps: 这里我们发现total永远都是10,因为这里假定服务器都没有发生故障或返回错误,其effective_weight不变。实际中如果服务器发生了错误,nginx当然也会进行降权处理,total也会变啦。这里我们学习一下正常算法,出错的情况就先不展开了。

hexo-next主题添加打赏功能

发表于 2017-04-05 | 分类于 hexo+github博客

next主题集成了打赏功能,使用起来比较简单。

首先获取微信收款二维码和支付宝收款二维码:

微信:点击右上角的加号”+”,点击”收付款”,点击”我要收款”,就可以看到自己的收款二维码了。还可以点击”设置金额”,之后保存图片(名字可修改为wechatpay.png)。

支付宝: 同理,点击右上角的加号”+”,点击”收钱”,出现二维码,也可以设置金额,之后保存图片(名字可修改为ailpay.jpg)。

我们可以在source目录下建立一个images文件夹,将上面保存的图片放入。

微信和支付宝生成的二维码都有外框,不喜欢外框的话可以利用美图秀秀等软件进行剪裁。选定宽度和高度并勾选锁定剪裁尺寸,一般都是剪裁一个正方形,将剪裁框拖到合适地方,点击”剪裁按钮”,再Ctrl + s 保存即可(支付宝图片同理)。
剪裁图片

找到主题next下的配置文件_config.yml,添加信息如下:

1
2
3
4
# reward
reward_comment: 如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
wechatpay: /images/wechatpay.png
alipay: /images/alipay.jpg

hexo发布,文章下面就会出现一个赏字,点开效果如下:
打赏效果

以上就成功添加了打赏功能(虽然基本不会有人打赏。。。)

多台电脑hexo部署到github的坑

发表于 2017-04-05 | 分类于 hexo+github博客

之前在家里搭建了博客,成功部署到github上,并将hexo目录也上传至github/hexo仓库保存。
后来到公司想把它们down下来,方便两边修改同步。

第一个坑是hexo发布博客到github

同样进行了一系列的node安装,hexo安装等,并且在hexo博客目录下down下了guthub/hexo的资源,本地启动,没问题。
但是当我发布想发布到yourname.github.io上时,问题来了,它居然把我的整个hexo博客目录扔到了yourname.github.io上,不是说好的只发布.deploy_git下的内容呢!!

于是我就茫然了啊,我去查看hexo下的_config.yml文件,

1
2
3
4
deploy:
type: git
repo: git@github.com:tenny-peng/tenny-peng.github.io.git
branch: master

没错啊,是这个地址啊。

后来一想也不对,就算这里错了也不对,不是目标地址错了,而是发布的内容错了。

网上查到了这篇博客: hexo部署到github遇到的坑,最后说删除hexo目录下的.git文件,然后我就试了试,重新发布,然后又报错了。。这里想截图可是命令行找不到了,大概就是说没有指定repository,然后我点开.deploy_git文件夹,突然想到在家里.deploy_git文件夹下面是有.git的,而且还是我自己指定的。

哈哈,瞬间好像知道了,打开git bash,切换到hexo/.deploy_git,执行

1
git init

再绑定远程仓库

1
git remote add origin git@github.com:tenny-peng/tenny-peng.github.io.git

回到cmd命令行

1
hexo d

搞定了,成功提交了正确的博客内容。

第二个坑是hexo目录与github/hexo同步

然后再把我的hexo目录和github/hexo同步,刚才把hexo目录下的.git删了。好吧,重新建回来。
git bash切换到hexo根目录

1
2
3
git init
git remote add origin git@github.com:tenny-peng/hexo.git

执行pull指令

1
2
3
4
5
6
7
8
9
10
11
12
$ git pull origin master
From github.com:tenny-peng/hexo
* branch master -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.npmignore
_config.yml
db.json
node_modules/.bin/JSONStream
node_modules/.bin/JSONStream.cmd
node_modules/.bin/acorn
node_modules/.bin/acorn.cmd
...

这里说一下,第一个坑中hexo目录下的内容是我直接从github/hexo上down下来复制过来的,然后本地又进行过hexo生成和发布操作,错误具体原因不太清除(知道的童鞋欢迎指正),网上查到解决办法是先清理

1
2
3
4
5
6
7
8
9
10
11
$ git clean -f -d
Skipping repository .deploy_git/
Removing .npmignore
Removing _config.yml
Removing db.json
Removing node_modules/
Removing package.json
Removing public/
Removing scaffolds/
Removing source/
Removing themes/

清理后hexo目录下只剩.deploy_git和.git目录,再拉取就可以了

1
2
3
4
$ git pull origin master
From github.com:tenny-peng/hexo
* branch master -> FETCH_HEAD
Checking out files: 100% (7651/7651), done.

所以下次可以先同步好hexo文件夹,这样第二个坑应该就不会出现了。

修复TortoiseGit图标不显示

发表于 2017-04-04 | 分类于 TortoiseGit
  1. win + r 打开运行,输入regedit.exe打开注册表

  2. 找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer

  3. 修改符串值 “Max Cached Icons” (如没有则新建)值为 “10000”(切换到十进制)。
    注册表

  4. Ctrl + Alt + Del 打开任务管理器,找到explorer.explorer
    任务管理器

  5. 右键选中explorer.exe,在弹出选项中选择”结束进程”,这个时候会发现电脑底部状态栏没有了,不用担心。

  6. 任务管理器上方的”文件”选项,点击”新建任务(运行)”,输入explorer.exe,确定即可。
    重启explorer

由于Windows Explorer Shell 支持的 Overlay Icon 最多 15 个,Windows 自身使用了 4 个,只剩 11 个可扩展使用。我们在这里调节了它的最大图标数。
explorer.exe是Windows程序管理器或者文件资源管理器,它用于管理Windows图形壳,包括桌面和文件管理,重启explorer.exe就可以看到我们的修改了。

MarkDown设置字体颜色

发表于 2017-04-03 | 分类于 markdown

记录一下如何设置字体颜色和大小

1
2
<font color=red size=5>gray</font>
<font color="#4590a3" size="6px">文字</font>

效果如下:

red
文字

hexo引用本地图片

发表于 2017-04-03 | 分类于 markdown

markdown文章里引用图片有两种方式。

一种是直接引用互联网上的图片,使用绝对路径 http://xxx.com/xxx.jpg

一种是使用本地图片。

因为最后要发布到网上,所以引用本地图片路径必须是相对路径xxx/xxx.png

这里讲如何引用本地图片。

首先在站点_config.yml 中找到”post_asset_folder”属性,将其设置为”true”。Hexo 提供了一种更方便管理 Asset 的设定:post_asset_folder。当设置post_asset_folder为true参数后,在建立文件时,Hexo会自动建立一个与文章同名的文件夹,您可以把与该文章相关的所有资源都放到那个文件夹,如此一来,您便可以更方便的使用资源。

启动cmd,切换到hexo的目录下执行

1
npm install https://github.com/CodeFalling/hexo-asset-image --save

等待一段时即可。

安装完成后用hexo新建文章的时候_posts目录下面会多出一个和文章同名的文件夹。图片就可以放在该文件夹下面使用。

hexo new1

hexo new2

把你要引用的图片放在同名目录下,如下引用即可。

1
![xxx](testpic/xxxxxx.png)

个人感觉也可以不装这个插件,自己手动建立同名文件夹也可以的。但是装了还是方便,毕竟hexo新建文章能初始化一些信息。

再说下本人踩过的坑。在source目录下建立images文件夹存放图片,然后通过../images/xxx.png引用,感觉是没什么问题的,实际在本地也没问题。但是上传到github就不对了。github上去找寻的路径类似
https://tenny-peng.github.io/2017/04/04/images/xxx.png。
很明显这是找不到的,因为发布后2017/04/04下只有文章,没有其他文件或文件夹。也试过在_posts下建立images,通过images/xxx.png引用,结果是一样的。

然后建立了同名文件夹,到github上查看发布后的文件才发现,对于每个md文件,生成一个同名的文件夹,里面有一个index.html文件是md文件转化的内容,我们当初自建的同名文件夹下的图片也在该文件夹下,例如,在github上,对于testpic.md,生成一个testpic文件夹,里面有一个index.html,其内容就是我们得testpic.md里编写的内容,而我们当时正好建立了同名的文件夹来存放图片,此时,这些图片也到了github下的同名文件夹。如此一来,引用就没有问题了。

本地目录

github目录

Git简单教程

发表于 2017-04-03 | 分类于 git

简介

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,

可以有效、高速的处理从很小到非常大的项目版本管理。

安装

由于本人是Windows平台,所以这里安装的是Windows平台下的工具。

点击https://git-scm.com/download/win下载

如果网速太慢可以百度搜索“git下载”。

下载完成之后一路next就可以了,

安装完成后,开始菜单找到”git”->”Git Bash”,

在命令行输入

1
git --version

看到类似如下结果,说明我们安装成功了。

git_bash_img

安装完成后,还需要一点设置,在打开的git bash命令行中输入

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

注意把上面改成自己的名字和邮箱地址

git config命令的–global参数,表示你这台机器上所有的Git仓库都会使用这个配置,

当然也可以对某个仓库指定不同的用户名和Email地址。

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

使用github

我们希望项目不只是在本地,只有有网,哪里都可以获取自己的项目,
GitHub 正是这样一个面向开源及私有软件项目的托管平台。
我们可以把自己的项目放在这个平台上,可以和其他人维护项目。

后面会讲git的基本操作,你也可以直接到后面查看。作为一般流程,这里让我们先注册一个github账号

进入github网站,点击sign up

注册github

填写信息后点击”create an account” 按钮

注册github

之后进入到我们的首页

github首页

这样我们已经成功拥有了一个github账号,让我们正式开始吧~

简单说下仓库的概念,仓库的英文名是repository,你可以简单理解成一个目录,
这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,
以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

点击上面的+号,新建一个仓库
github首页

输入我们的仓库名称后,点击下面”create repository”按钮即可创建一个仓库
仓库信息

我们可以看到这个仓库是空的,什么都没有。
空仓库

接下来,我们回到本地git上。

克隆仓库

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以还需要一点设置:

回到git bash命令窗口,创建SSH key:

1
$ ssh-keygen -t rsa -C "youremail@example.com"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

登录你的github,进入setting,点击”SSH and GPG keys”,点击右上角”New SSH Key”,tite随便填,Key文本框里粘贴id_rsa.pub文件的内容,最后点击”Add SSh Key”即可。
填写公钥

可以看到我这里已经有两个了,一个家里一个公司,这样就可以两边同步信息了。

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

接下来输入

1
cd e:

切换目录,执行

1
git clone git@github.com:tenny-peng/test.git

稍等一会,就可将github上的项目克隆到本地

本地仓库

这里我选的e盘根目录,你可以自己修改,注意:选择的目录下不可以有仓库同名目录
如我的e盘下不能有test这个目录,不然在克隆时会报错。

克隆仓库
这里有一个警告,说我们的仓库是空的,不用管它,我们马上会添加文件。

添加文件

使用Windows的童鞋要特别注意:

千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了
一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf
(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,
明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载
Notepad++代替记事本,不但功能强大,而且免费!记得把notepad++的默认编码设置为UTF-8
without BOM即可。

在仓库test文件目录下,我们先编写一个readme.txt文件,内容如下:

1
2
Git is a version control system.
Git is free software.

新建文件

这里我们可以看到test目录下有一个隐藏的.git目录(看不到可自行百度“windows查看隐藏文件方法”),这个就说明此目录是由git管理的仓库了,如果删除了这个隐藏的目录,那个git也就不认识这个目录了,也不能对此目录下的文件进行管理了。

回到命令行,输入

1
git add readme.txt

添加文件

什么反馈信息也没有?那就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

使用

1
git status

可查看当前仓库状态

添加状态

我们发现提示有新文件,但是这样还不够。

我们继续输入

1
git commit -m "add readme.txt"

这样才把文件提交到仓库,再次输入”git status”查看状态

提交状态

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

推送

这里我就在仓库里新增了一个文件,当然还会有修改,删除操作。其实这样就可以管理自己的项目了。但是,我们似乎忘记了github。对,我们需要的是随时随处可获取,所以我们需要把本地仓库的内容同步到github这个托管平台。

当你从远程仓库克隆时,实际上Git自动把本地的master分支(分支后面再讲,简单理解为仓库的多个版本,默认一个主分支)和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

要查看远程库的信息,输入

1
git remote

或

1
git remote -v

获取更详细信息

远程信息

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

接下来我们把本地改动(这里新增了一个文件,对于git,新增,修改,删除,都属于改动)推送到远程仓库。

1
git push origin master

推送分支

刷新浏览器中我们的github主页,可以看到,readme.txt文件已经同步到远程仓库了。
查看远程分支

以上我们就使用git创建了自己的仓库,并将其同步到远程服务器上,以便我们在其它地方,或其他人获取。



参考:

廖雪峰的git教程

git互动百科

github互动百科

Markdown基础语法

发表于 2017-04-03 | 分类于 markdown

标准mrakdown语法

加粗和斜体

字体加粗以两个*或两个_开头结尾

1
__重要的事情说三遍!!!__ **重要的事情说三遍!!!**

效果如下:

重要的事情说三遍!!!

字体倾斜以一个*或_开头结尾

1
_一段斜体文字_ *一段斜体文字*

效果如下:

一段斜体文字

链接和邮件

链接:

1
2
bla bla bla [example](http://url.com/ "Title")
这是我们常用的网站: [百度一下](www.baidu.com "百度一下")

效果如下:

这是我们常用的网站: baidu

也可以定义一个id来对应链接地址

1
2
3
4
5
bla bla bla [example][id]. Then, anywhere else in the doc, define the link:
[id]: http://example.com/ "Title"
这是我们常用的网站: [baidu][baiduId]
[baiduId]: www.baidu.com "百度一下"

效果如下:

这是我的博客,欢迎访问。

邮件:

1
2
An email <example@example.com> link.
这是我的邮箱<mpengtaoqi@163.com>。

效果如下:

这是我的邮箱mpengtaoqi@163.com。

图片

行内引用 (标题可选):

1
2
![alt text](/path/img.jpg "Title")
这里出现一个引用的图片![图片替代文字](https://tenny-peng.github.io/images/avatar.jpg "偷得浮生半日闲")

效果如下:

这里出现一个引用的图片图片替代文字

使用id引用图片链接:

1
2
3
4
5
![alt text][id]
[id]: /url/to/img.jpg "Title"
使用id引用图片链接![图片替代文字][img_id]
[img_id](https://tenny-peng.github.io/images/avatar.jpg "偷得浮生半日闲")

效果如下:

使用id引用图片链接图片替代文字

标题

底线形式:

1
2
3
4
5
标题 1
========
标题 2
--------

效果如下:

标题 1

标题 2

#模式 (末尾的#可选):

1
2
3
4
5
# 标题 1 #
## 标题 2 ##
###### 标题 6

效果如下:

标题 1

标题 2

标题 6

列表

有序的, 不带段落:

1
2
3
1. Git
2. Hexo
3. MarkDown

效果如下:

  1. Git
  2. Hexo
  3. MarkDown

无序的, 带段落:

1
2
3
4
5
* 一个条目.
巴拉巴拉拉,这里是段落文字.
* 其他条目

效果如下:

  • 一个条目.

    巴拉巴拉巴拉,这里是段落文字.

  • 其他条目

你可以嵌套使用它们:

1
2
3
4
5
6
7
8
* Work
* java
* Blog
1. github
2. atom
* markdown
3. hexo
* learn

效果如下:

  • Work
    • java
  • Blog
    1. github
    2. atom
      • markdown
    3. hexo
  • learn

区块引用

1
2
3
4
5
6
7
8
9
> 类似邮件的引用方式
> 在断好的行前加上`>`
> > 也可以嵌套使用
> #### 引用标题
>
> * 也可以是一个列表
> * 等等

效果如下:

类似邮件的引用方式
在断好的行前加上>

也可以嵌套使用

引用标题

  • 也可以是一个列表
  • 等等

内联代码

1
2
3
4
5
`<some code>` 使用引号和反引号标记行内代码片段。
如果要在代码区段内插入反引号,可以用多个反引号来开启和结束代码区段。
例如 `` `this` ``.

效果如下:

<some code> 使用引号和反引号标记行内代码片段。

如果要在代码区段内插入反引号,可以用多个反引号来开启和结束代码区段。

例如 `this` .

代码块

在句段的行首插入1个tab 或 4个空格,则表示代码块。

1
2
3
这是一段普通的文字。
这一段代码块。

分隔线

用三个以上的星号或减号或底线来建立一个水平分隔线。

行内不能有其他东西,但你可以在星号或是减号中间插入空格。

1
2
3
4
5
---
* * *
- - - -

效果如下:




换行

在一行的结尾处加上2个或2个以上的空格

1
2
Roses are red,
Violets are blue.

效果如下:

Roses are red,
Violets are blue.

表格

1
2
3
4
5
6
| 字段 | 左对齐 | 居中 | 右对齐 | //表头
|------|:------|:----:|------:| //对齐方式(默认左对齐)
| 1 | left1 | center1 | right1 | //内容
| 2 | left2 | center2 | right2 |
| 3 | left3 | center3 | right3 |
| 4 | left4 | center4 | right4 |

效果如下:

默认字段 左对齐字段 居中字段 右对齐字段
1 left1 center1 right1
2 left2 center2 right2
3 left3 center3 right3
4 left4 center4 right4
123
Tenny Peng

Tenny Peng

29 日志
20 分类
27 标签
RSS
© 2018 Tenny Peng
由 Hexo 强力驱动
主题 - NexT.Pisces