无来

不管你来还是不来
我都在这里,夜夜点亮
不是为了守候
只是为了做好我自己

0%

mysqldbcompare用于比较两个服务器或同个服务器上的数据库,有文件和数据,并生成差异性SQL语句。

要比较数据表,请用另外一个工具:mysqldiff(点击查看教程)。

以下是mysqldbcompare的用法。

1 安装

mysqldbcompare是MySQL Utilities中的一个脚本,默认的MySQL不包含工具集,所以需要独立安装。

MySQL Utilities下载地址:http://downloads.mysql.com/archives/utilities/。
Windows系统中需提前安装“Visual C++ Redistributable Packages for Visual Studio 2013”,下载地址:https://www.microsoft.com/en-gb/download/details.aspx?id=40784。
Linux系统在下载页面选择对应发行版。

2 语法

mysqldbcompare的语法如下:

1
$ mysqldbcompare --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1:db2

以上参数中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--server1:MySQL服务器1配置。
--server2:MySQL服务器2配置。如果是同一服务器,--server2可以省略。
db1:db2:要比较的两个数据库。如果比较不同服务器上的同名数据库,可以省略:db2。
--all:比较所有两服务器上所有的同名数据库。--exclude排除无需比较的数据库。
--run-all-tests:运行完整比较,遇到第一次差异时不停止。
--changes-for=:修改对象。例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。
-d DIFFTYPE,--difftype=DIFFTYPE:差异的信息显示的方式,有[unified|context|differ|sql],默认是unified。如果使用sql,那么就直接生成差异的SQL,这样非常方便。
--show-reverse:在生成的差异修改里面,同时会包含server2和server1的修改。
--skip-table-options:保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT、ENGINE、CHARSET等差异。
--skip-diff:跳过对象定义比较检查。所谓对象定义,就是CREATE语句()里面的部分,--skip-table-options是()外面的部分。
--skip-object-compare:默认情况下,先检查两个数据库中相互缺失的对象,再对都存在对象间的差异。这个参数的作用就是,跳过第一步,不检查相互缺失的对象。
--skip-checksum-table:数据一致性验证时跳过CHECKSUM TABLE。
--skip-data-check:跳过数据一致性验证。
--skip-row-count:跳过字段数量检查。

3 示例

比较两个数据库,并生成差异SQL:

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
$ mysqldbcompare --server1=root:root@localhost --server2=root:root@localhost db1:db2 --changes-for=server1 -a --difftype=sql

# WARNING: Objects in server1.db1 but not in server1.db2:
# TABLE: table2
#
# WARNING: Objects in server1.db2 but not in server1.tb1:
# TABLE: table3
#
# Defn Row Data
# Type Object Name Diff Count Check
#-------------------------------------------------------------------------
# TABLE t1 pass pass -
# - Compare table checksum FAIL
# - Find row differences FAIL
#
# Transformation for --changes-for=server1:
#

# Data differences found among rows:
UPDATE db1.t1 SET b = 'Test 123' WHERE a = '1';
UPDATE db1.t1 SET b = 'Test 789' WHERE a = '3';
DELETE FROM db1.t1 WHERE a = '4';
INSERT INTO db1.t1 (a, b) VALUES('5', 'New row - db2');


# Database consistency check failed.
#
# ...done

WARNING之后提示两个数据库表之间的差异,也就是一个数据库中有,另一个数据库没有的数据表。

之后就是差异的SQL语句了,把有#号注释的行删掉,就能直接在数据库中执行了。

说明:执行MySQL语句时可能会遇到这样错误:`Error 1054 - Unknown column ‘name’ in ‘aspect’``

这是因为mysqldbcompare生成的ALTER语句中,用逗号,拼装了多条ADD、CHANGE等语句,如果这些语句还包含AFTER关键字,就会提示这个错误并中断执行MySQL语句。解决的办法就是:去除AFTER及其后面的条件。

这可能是MySQL的一个Bug,详情参考:http://bugs.mysql.com/bug.php?id=34972http://bugs.mysql.com/bug.php?id=60650。

Yii2 advanced add module

在Yii2高级版添加新的模块

0 下载Yii2框架,配置环境

https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md

1 先在项目的根目录下复制一份 backend 为 api

1
cp backend/ api -r

2 拷贝 api 环境

1
2
cp -a environments/dev/frontend environments/dev/api
cp -a environments/prod/frontend environments/prod/api

3 修改 environments/index.php 文件之后的代码(主要是添加了一些 api 相关的代码)

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
return [
'Development' => [
'path' => 'dev',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
'Production' => [
'path' => 'prod',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
];

4 然后再执行初始化命令

1
php init

5 然后记得去 common/config/bootstrap.php 最后一行添加如下代码:

1
Yii::setAlias('api', dirname(dirname(__DIR__)) . '/api');

6 修改一下配置文件 api/config/main.php

1
2
3
4
5
return [
'id' => 'app-api',
// ...
'controllerNamespace' => 'api\controllers',
]

7 api 里面的控制器等有命名空间的文件

8

** 三十二品 **
法善大妙

正无,依一
庄无,尊

离持,能究一法
离非,无尽福化
法无,不威,一知应

开经偈

1
2
3
4
5
6
7
无上甚深微妙法
百千万劫难遭遇
我今见闻得受持
愿解如来真实义
南无祇园会上佛菩萨
南无祇园会上佛菩萨
南无祇园会上佛菩萨

第一品 法会因由分

1
2
3
4
5
6
7
如是我闻:
一时,佛在舍卫国,祇树给孤独园。
与大比丘众,千二百五十人俱,
尔时,世尊食时,
著衣持钵,入舍卫大城乞食。
于其城中,次第乞已,还至本处。
饭食讫,收衣钵,洗足已,敷座而坐。

第二品 善现启请分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
时,长老须菩提在大众中,
即从座起,偏袒右肩,右膝着地,合掌恭敬而白佛言:
“稀有,世尊!如来善护念诸菩萨,善付嘱诸菩萨。
世尊,善男子、善女人,发阿耨多罗三藐三菩提心,
应云何住,云何降伏其心?”

佛言:
“善哉!善哉!
须菩提,如汝所说,
如来善护念诸菩萨,
善付嘱诸菩萨。
汝今谛听,当为汝说。
善男子,善女人,
发阿耨多罗三藐三菩提心,
应如是住,如是降伏其心。”

“唯然,世尊,愿乐欲闻”

第三品 大乘正宗分

1
2
3
4
5
6
7
8
9
10
11
佛告须菩提:
“诸菩萨摩诃萨,应如是降伏其心:
所有一切众生之类,
若卵生,若胎生,若湿生,若化生,若有色,若无色,若有想,若无想,若非有想非无想。
我皆令入无余涅槃而灭度之。
如是灭度无量无数无边众生,
实无众生得灭度者。
何以故?
须菩提,
若菩萨有我相、人相、众生相、寿者相,
即非菩萨。”

第四品 妙行无住分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
“复次,须菩提,
菩萨于法,应无所住行于布施,
所谓不住色布施,不住声香味触法布施。
须菩提,
菩萨应如是布施,不住于相。
何以故?
若菩萨不住相布施,其福德不可思量。
须菩提,于意云何?
东方虚空可思量否?”
“不也,世尊”
“须菩提,南西北方,四维上下虚空可思量不?”
“不也,世尊”

“须菩提,若菩萨无住相布施,
福德亦复如是,不可思量。
须菩提,菩萨但应如所教住。”

第五品 如理实见分

1
2
3
4
5
6
7
8
9
10
“须菩提,于意云何?
可以身相见如来不?”
“不也,世尊。不可以身相得见如来。”
“何以故?
如来所说身相,即非身相”
佛告须菩提:
“凡所有相,
皆是虚妄,
若见诸相非相,
即见如来”

第六品 正信稀有分

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
须菩提白佛言:
“世尊,颇有众生,得闻如是言说章句,生实信不?”
佛告须菩提:
“莫作是说,
如来灭后,后五百岁,
有持戒修福者,于此章句,能生信心,以此为实。
当知是人,
不于一佛二佛三四五佛而种善根。
已于无量千万佛所种诸善根。
闻是章句乃至一念生净信者,
须菩提,
如来悉知悉见,
是诸众生得如是无量福德。
何以故?
是诸众生无复我相、人相、众生相、寿者相,无法相亦无非法相。
何以故?
是诸众生,
若心取相,则为著我人众生寿者。
若取法相,即著我人众生寿者。
何以故?
若取非法相,即著我人众生寿者。
是故不应取法,不应取非法。
以是义故,
如来常说,汝等比丘,知我说法,如筏喻者。
法尚应舍,何况非法。”

第七品 无得无说分

1
2
3
4
5
6
7
8
9
10
11
“须菩提,于意云何?
如来得阿耨多罗三藐三菩提耶?
如来有所说法耶?”
须菩提言:
“如我解佛所说义,
无有定法名阿耨多罗三藐三菩提,
亦无有定法如来可说。
何以故?
如来所说法,皆不可取,不可说,非法非非法。
所以者何?
一切圣贤皆以无为法而有差别。”

第八品 依法出生分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
“须菩提,于意云何?
若人满三千大千世界七宝,以用布施,
是人所得福德,宁为多不?”
须菩提言:
“甚多,世尊,
何以故?
是福德即非福德性,是故如来说福德多。”

“若复有人,于此经中,受持乃至四句偈等,
为他人说。其福胜彼。
何以故?
须菩提,
一切诸佛,及诸佛阿耨多罗三藐三菩提法,皆从此经出。
须菩提,所谓佛法者,即非佛法”

第九品 一相无相分

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
“须菩提,于意云何?
须陀洹能作是念,我的须陀洹果不。”
须菩提言:“不也,世尊。
何以故?
须陀洹名为入流,而无所入,不入色身香味触法。是名须陀洹。”

“须菩提,于意云何?
斯陀含能作是念,我得斯陀含果不?”
须菩提言:“不也,世尊
何以故?
斯陀含名一往来,而实无往来,是名斯陀含。”

“须菩提,于意云何?
阿那含能作是念,我得阿那含果不?”
须菩提言:“不也,世尊。
何以故?
阿那含名为不来,而实无不来,是名阿那含”

“须菩提,于意云何?
阿罗汉能作是念,我得阿罗汉道不?”
须菩提言:“不也,世尊
何以故?
实无有法名阿罗汉,
世尊,若阿罗汉作是念,我得阿罗汉道。即著我人众生寿者。
世尊,佛说我得无诤三昧,人中最为第一,是第一离欲阿罗汉
我不作是念,我是离欲阿罗汉,
世尊,我若作是念,我得阿罗汉道,世尊则不说须不提是乐阿兰那行者
以须菩提实无所行,而名须菩提是乐阿兰那行”

第十品 庄严净土分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
佛告须菩提:“于意云何?
如来昔在燃灯佛所,于法有所得不?”
“不也,世尊。如来在燃灯佛所,于法实无所得。”
“须菩提,于意云何,菩萨庄严佛土不?”
“不也,世尊。
何以故?
庄严佛土者,即非庄严,是名庄严。”

“是故,须菩提,
诸菩萨摩诃萨,应如是生清净心,
不应住色生心,不应住声香味触法生心,应无所住而生其心。
须菩提,譬如有人身如须弥山王,
于意云何,是身为大不?”
须菩提言:“甚大,世尊。
何以故?
佛说非身,是名大身。”

第十一品 无为福盛分

1
2
3
4
5
6
7
8
9
10
11
12
“须菩提,
如恒河中所有沙数,如是沙等恒河,
于意云何,是诸恒河沙,宁为多不?”
须菩提言:“甚多,世尊。但诸恒河尚多无数,何况其沙。”
“须菩提,我今实言告汝,
若有善男子、善女人,以七宝满尔所恒河沙数三千大千世界,
以用布施,得福多不?”
须菩提言:“甚多,世尊。”
佛告须菩提:
“若善男子、善女人,
于此经中乃至受持四句偈等,为他人说。
而此福德胜前福德。”

第十二品 尊重正教分

1
2
3
4
5
6
“复次,须菩提,
随说是经乃至四句偈等,
当知此处,一切世间天人阿修罗,皆应供养,如佛塔庙。
何况有人尽能受持读诵,
须菩提,当知是人,成就最上第一希有之法。
若是经典所在之处,即为有佛,若尊重弟子。”

第十三品 如法受持分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
尔时,须菩提白佛言:
“世尊,当何名此经,我等云何奉持?”
佛告须菩提:
“是经名为金刚般若波罗蜜,以是名字,汝当奉持。
所以者何?
须菩提,佛说般若波罗蜜,即非般若波罗蜜,是名般若波罗蜜
须菩提,于意云何,如来有所说法不?”
须菩提白佛言:“世尊,如来无所说。”

“须菩提,于意云何,三千大千世界所有微尘,是为多不?”
须菩提言:“甚多,世尊。”
“须菩提,
诸微尘,如来说非微尘,是名微尘。
如来说世界,即非世界,是名世界。
须菩提,于意云何,可以三十二相见如来不?”
“不也,世尊,不可以三十二相得见如来。
何以故?
如来说三十二相,即是非相,是名三十二相。”

“须菩提,
若有善男子、善女人,以恒河沙等身命布施,
若复有人,于此经中,乃至四句偈等,为他人说。
其福甚多。”

第十四品 离相寂灭分

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
尔时,须菩提闻说是经,深解义趣.
涕泪悲泣,而白佛言:
“稀有,世尊。佛说如是甚深经典,
我从昔来所得慧眼,未曾得闻如是之经。
世尊,
若复有人得闻是经,
信心清净,则生实相。
当知是人,成就最上第一希有功德。
世尊,
是实相者即是非相,是故如来说名实相。
我今得闻如是经典,信解受持,不足为难,
若当来世,后五百岁,
其有众生,得闻是经,信解受持,
是人则为第一希有。
何以故?
此人无我相,无人相,无众生相,无寿者相。
所以者何?
我相即是非相,人相众生相寿者相,即是非相。
何以故?
离一切诸相即是诸佛。”

佛告须菩提:
“如是如是,若复有人,得闻是经,不惊不怖不畏。
当知是人甚为稀有。
何以故?
须菩提,如来说第一波罗蜜,即非第一波罗蜜,是名第一波罗蜜”

“须菩提,忍辱波罗蜜,如来说非忍辱波罗蜜,是名忍辱波罗蜜。
何以故?
须菩提,
如我昔为歌利王割截身体,
我于尔时,
无我相无人相无众生相无寿者相。
何以故?
我于往昔节节支解时,
若有我相人相众生相寿者相,应生嗔恨。”

“须菩提
又念过去于五百世做忍辱仙人,
于尔所世,无我相无人相无众生相无寿者相。
是故,须菩提,
菩萨应离一切相,发阿罗多诺三藐三菩提心,
不应住色生心,不应住声香味触法生心,应生无所住心,
若心有住则为非住。
是故,佛说菩萨心不应住色布施,
须菩提,菩萨为利益一切众生,应如是布施,
如来说一切诸相,即是非相,
又说一切众生,即非众生”

“须菩提,如来是真语者,实语者,如语者,不诳语者,不异语者。
须菩提,
如来所得法,此法无实无虚,
须菩提,
若菩萨心住于法而行布施,如人入暗,则无所见。
若菩萨心不住法而行布施,如人有目,日光明照,见种种色。”

“须菩提,当来之世,
若有善男子、善女人,能于此经受持读诵,则为如来。
以佛智慧,悉知是人,悉见是人,皆得成就无量无边功德。”

第十五品 持经功德分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
“须菩提,若善男子、善女人,
初日分,以恒河沙等身布施,
中日分,复以恒河沙等身布施,
后日分,亦以恒河沙等身布施。
如是无量百千万亿劫,以身布施
若复有人,闻此经典,信心不逆,其福胜彼。
何况书写受持读诵,为人解说。”

“须菩提,以要言之,是经有不可思议,不可称量,无边功德。
如来为发大乘者说,为发最上乘者说,
若有人能受持读诵,广为人说。
如来悉知是人,悉见是人,
皆得成就不可量、不可称、无有边,不可思议功德
如是人等,则为荷担如来阿耨多罗三藐三菩提。
何以故?
须菩提,
若乐小法者,着我见、人见众生见寿者见,
则与此经,不能受持读诵,为人解说。”

“须菩提,
在在处处若有此经,一切世间天人阿修罗,所应供养,
当知此处,则为是塔
皆应恭敬,作礼围绕,以诸华香而散其出”

第十六品 能净业障分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
“复次,须菩提,
若善男子、善女人,受持读诵此经
若为人轻贱,是人先世罪业,应坠恶道。
以今世人轻贱故,
先世罪业则为消灭,当得阿耨多罗三藐三菩提。”

“须菩提,
我念过去无量阿僧祇劫,
于燃灯佛前,得值八百四千万亿那由他诸佛,
悉皆供养成事,无空过者。
若复有人,于后末世,能受持读诵此经,
所得功德,于我所供养诸佛功德
百分不及一、千万亿乃至算数譬喻不能及。”

“须菩提,若善男子、善女人,
于后末世,有受持读诵此经。
所得功德,我若具说
或有人闻,心则狂乱,狐疑不信。
须菩提,当知是经义不可思议,果报亦不可思议。”

第十七品 究竟无我分

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
尔时,须菩提白佛言:
“世尊,善男子、善女人发阿耨多罗三藐三菩提心,
云何应住,云何降伏其心?”
佛告须菩提:
“善男子、善女人,发阿耨多罗三藐三菩提心者,
当生如是心
我应灭度一切众生,灭度一切众生已,而无有一众生实灭度者。
何以故?
须菩提,若菩萨有我相人相众生相寿者相,则非菩萨。
所以者何?
须菩提,实无有法发阿罗多了三藐三菩提心者。”

“须菩提,于意云何?
如来于燃灯佛所,有法得阿耨多罗三藐三菩提不?
不也,世尊.如我解佛所说义,
佛于燃灯佛所,无有法得阿耨多罗三藐三菩提。”

佛言:“如是如是,
须菩提,实无有法如来得阿耨多罗三藐三菩提,
须菩提,若有法如来得阿耨多罗三藐三菩提,
燃灯佛则不与我授记,汝于来世,当得做佛,号释迦牟尼。
以实无有法得阿耨多罗三藐三菩提,
是故燃灯佛与我授记,作是言,
汝于来世,当得做佛,号释迦牟尼。
何以故?
如来者,即诸法如义。
若有人言,
如来得阿耨多罗三藐三菩提。
须菩提,实无有法,佛得阿耨多罗三藐三菩提。”

“须菩提,如来所得阿耨多罗三藐三菩提,于是中无实无虚,
是故如来说一切法皆佛法,
须菩提,所言一切法者,即非一切法,是故名一起法。”

“须菩提,譬如人身长大。”
须菩提言:“世尊,如来说人身长大,即为非大身,是名大身。”

“须菩提,菩萨亦如是,
若作是言,我当灭度无量众生,
即不名菩萨。
何以故?
须菩提,实无有法名菩萨。
是故如来说,一切法无我无人无众生无寿者。”

须菩提,若菩萨作是言,我当庄严佛土。
即不名菩萨。
何以故?
如来说庄严佛土者,即非庄严,是名庄严。
若菩萨通达无我法者,如来说名真菩萨。

第十八品 一体同观分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
“须菩提,于意云何,如来有肉眼不?”
“如是、世尊。如来有肉眼”
“须菩提,于意云何,如来有天眼不?”
“如是、世尊。如来有天眼”
“须菩提,于意云何,如来有慧眼不?”
“如是、世尊。如来有慧眼”
“须菩提,于意云何?如来有法眼不?”
“如是、世尊。如来有法眼”
“须菩提,于意云何?如来有佛言不?”
“如是、世尊。如来有佛眼”
“须菩提,如恒河中所有沙,如来说是沙不?”
“如是、世尊。如来说是沙”
“须菩提,如一恒河中所有沙,有如是沙等恒河,
是诸恒河所有沙数佛世界。如是宁为多不?”
“甚多,世尊。”
佛告须菩提:“尔所国土中,所有众生,若干种心,如来悉知。
何以故?
如来说诸心皆为非心,是名为心。
所以者何?
须菩提,过去心不可得,现在心不可得,未来心不可得。”

第十九品 法界通化分

1
2
3
4
5
6
7
“须菩提,于意云何?
若有人满三千大千世界七宝,以用布施。
是人以是因缘,得福多不?”
“如是,世尊。此人以是因缘,得福甚多。”

“须菩提,若福德有实,如来不说得福德多,
以福德无故,如来说得福德多”

第二十品 离色离相分

1
2
3
4
5
6
7
8
9
10
11
“须菩提,于意云何?
佛可以具足色身见不?”
“不也,世尊。如来不应以具足色身见?
何以故?
如来说具足色身,即非具足色身,是名具足色身。”

“须菩提,于意云何?
如来可以具足诸相见不?
不也,世尊。如来不应以具足诸相见。
何以故?
如来说诸相具足,即非具足,是名诸相具足”

第二十一品 非说所说分

1
2
3
4
5
6
7
8
9
10
11
12
“须菩提,汝勿谓如来作是念,我当有所说法。
莫作是念。
何以故?
若有人言如来有所说法,即为谤佛,不能解我所说故。
须菩提,说法者,无法可说,是名说法。”
尔时慧命须菩提白佛言:
“世尊,颇有众生,于未来世,闻是说法,生信心不?”
佛言:
“须菩提,
彼非众生,非不众生,
何以故?
众生众生者,如来说即非众生,是名众生”

第二十二品 无法可得分

1
2
3
4
5
须菩提白佛言:
“世尊,如来得阿耨多罗三藐三菩提,为无所得耶?”
佛言:“如是如是,
我于阿耨多罗三藐三菩提,乃至无有少法可得,
是名阿耨多罗三藐三菩提。”

第二十三品 净心行善分

1
2
3
4
5
6
7
“复次,须菩提
是法平等,无有高下。是名阿耨多罗三藐三菩提。
以无我无人无众生无寿者,修一切善法
即得阿耨多罗三藐三菩提。

须菩提,
所言善法者,即非善法,是名善法。”

第二十四品 福智无比分

1
2
3
4
5
6
7
8
“须菩提,
若三千大千世界中,所有诸须弥山王,
如是等七宝聚。
有人持用布施。
若有人以此般若波罗蜜经,乃至四句偈等。
受持读诵,为他人说。
于前福德,
百分不及一、百千万亿分乃至算数譬喻所不能及”

第二十五品 化无所化分

1
2
3
4
5
6
7
8
9
10
11
12
“须菩提,于意云何?
汝等勿谓如来作是念
我当灭度众生。
莫作是念,
何以故?
实无有众生如来度者。
若有众生如来得灭度者,
如来即有我人众生寿者”

“须菩提,如来说有我者,
即非有我,但凡夫之人以为有我
须菩提,凡夫者,如来说即非凡夫。”

第二十六品 法身非相分

1
2
3
4
5
6
7
8
9
10
“须菩提,于意云何,可以三十二相观如来不?”
须菩提言:“如是如是,以三十二相观如来。”
佛言:“若以三十二相观如来,转轮圣王即是如来。”
须菩提白佛言:
“世尊,如我解佛所说义,不应以三十二相观如来。”
尔时,世尊说偈言:
“若以色求我,
以音声求我,
是人行邪道,
不能见如来。”

第二十七品 无断无灭分

1
2
3
4
5
6
7
8
9
10
“须菩提,汝若作是念,
如来不以具足相故,得阿耨多罗三藐三菩提。
须菩提,
莫作是念,如来不以具足相故,得阿耨多罗三藐三菩提。”

“须菩提,汝若作是念,
发阿耨多罗三藐三菩提心者,说诸法断灭。
莫作是念,
何以故?
发阿耨多罗三藐三菩提心者,于法不说断灭相”

第二十八品 不贪不受分

1
2
3
4
5
6
7
8
9
“须菩提,
若菩萨以满恒河沙等世界七宝布施,
若复有人知一切法无我,得成于忍。
此菩萨胜前菩萨所得功德。
何以故?
须菩提,以诸菩萨不受福德故。”
须菩提白佛言:
“世尊,云何菩萨不受福德?”
“须菩提,菩萨所作福德,不应贪著,是故说菩萨不受福德。”

第二十九品 威仪寂灭分

1
2
3
4
5
6
“须菩提,若有人言,
如来若来若去,若坐若卧。
是人不解我所说义,
何以故?
如来者无所从来,亦无所去,
故名如来”

第三十品 一合理相分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
“须菩提,
若善男子、善女人,
以三千大千世界碎为微尘,
于意云何,是微尘众宁为多不?”
“甚多,世尊
何以故?
若是微尘众实有者,佛则不说是微尘众。
所以者何?
佛说微尘众,即非微尘众,是名微尘众
世尊,
如来说三千大千世界,即非世界,是名世界。
若世界实有,即是一合相。
如来说一合相,即非一合相,是名一合相”

“须菩提,
一合相者,即是不可说,但凡夫之人贪著其事。”

第三十一品 知见不生分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
“须菩提,
若人言,佛说我见人见众生见寿者见,
须菩提,于意云何,是人解我所说义否?”
“不也,世尊,是人不解如来所说义。
何以故?
如来说我见人见众生见寿者见,
即非我见人见众生见寿者见,
是名我见人见众生见寿者见。”

“须菩提,
发阿耨多罗三藐三菩提心者,
于一切法,
应如是知、如是见、如是信解,不生法相
所言法相者,如来说即非法相,是名法相。”

第三十二品 应化非真分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
“须菩提,若有人以满无量阿僧祇世界七宝持用布施。
若善男子、善女人发菩提心者,持于此经,乃至四句偈等,
受持读诵,为人演说。
其福胜彼
云何为人演说?
不取于相,如如不动。
何以故?
一切有为法,
如梦幻泡影
如露亦如电
应作如是观”

佛说是经已
时长老须菩提及诸比丘、比丘尼
优婆塞、优婆夷,一切世间天人阿修罗
问佛所说,皆大欢喜,信受奉行。

回向偈

1
2
3
4
5
6
7
8
愿以此功德
庄严佛净土
上报四重恩,
下济三途苦
若有见闻者
悉发菩提心
尽此一报身
同生极乐国

删除当前目录下面所有备份文件:

1
rm *.bak

如果想删除多级目录下面的所有备份文件,可以用:

1
find ./ -name *.bak -exec rm {} \;

或者:

1
find ./ -name *.bak | xargs rm -rf

两者的区别是,第一个是一次性把结果传过去,如果量太大,会导致错误,而后者可以避免这个错误。

QEMU VM ESCAPE 环境搭建

0.参考

1.安装操作系统 ubuntu 17.10

1
http://mirrors.163.com/ubuntu-releases/17.10/ubuntu-17.10.1-desktop-amd64.iso

2. 安装指定版本的qemu

不要使用make install. 后续使用绝对路径执行qemu

1
2
3
4
5
6
7
8
$ git clone git://git.qemu-project.org/qemu.git
$ cd qemu
$ git checkout bd80b59
$ mkdir -p bin/debug/native
$ cd bin/debug/native
$ ../../../configure --target-list=x86_64-softmmu --enable-debug \
$ --disable-werror
$ make -j 4

3. 创建ubuntu镜像,用户qemu运行虚拟机

3.1) 下载linux源代码

1
https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.15.18.tar.xz

3.2) 编译内核

可能需要安装一下依赖包,发现错误百度一下即可。

1
2
3
make defconfig
make kvmconfig
make -j 4

3.3) 创建Debian-Stretch image

  • 3.3.1) 安装debootstrap工具

    1
    sudo apt-get install debootstrap
  • 3.3.2)安装Debian镜像需要的依赖包

    1
    2
    3
    4
    5
    mkdir qemu
    sudo debootstrap --include=openssh-server,curl,tar,gcc,\
    libc6-dev,time,strace,sudo,less,psmisc,\
    selinux-utils,policycoreutils,checkpolicy,selinux-policy-default \
    stretch qemu
  • 3.3.4) 创建镜像
    这个镜像配置后,可以通过ssh使用root用户免密钥登录。

*脚本中 enp0s3为host机网卡的名称,通过ifconfig先查看后,修改脚本保持一至

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
set -eux

# Set some defaults and enable promtless ssh to the machine for root.
sudo sed -i '/^root/ { s/:x:/::/ }' qemu/etc/passwd
echo 'T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100' | sudo tee -a qemu/etc/inittab
printf '\nauto enp0s3\niface enp0s3 inet dhcp\n' | sudo tee -a qemu/etc/network/interfaces
echo 'debugfs /sys/kernel/debug debugfs defaults 0 0' | sudo tee -a qemu/etc/fstab
echo "kernel.printk = 7 4 1 3" | sudo tee -a qemu/etc/sysctl.conf
echo 'debug.exception-trace = 0' | sudo tee -a qemu/etc/sysctl.conf
echo "net.core.bpf_jit_enable = 1" | sudo tee -a qemu/etc/sysctl.conf
echo "net.core.bpf_jit_harden = 2" | sudo tee -a qemu/etc/sysctl.conf
echo "net.ipv4.ping_group_range = 0 65535" | sudo tee -a qemu/etc/sysctl.conf
echo -en "127.0.0.1\tlocalhost\n" | sudo tee qemu/etc/hosts
echo "nameserver 8.8.8.8" | sudo tee -a qemu/etc/resolve.conf
echo "ubuntu" | sudo tee qemu/etc/hostname
sudo mkdir -p qemu/root/.ssh/
rm -rf ssh
mkdir -p ssh
ssh-keygen -f ssh/id_rsa -t rsa -N ''
cat ssh/id_rsa.pub | sudo tee qemu/root/.ssh/authorized_keys

# Build a disk image
dd if=/dev/zero of=qemu.img bs=1M seek=2047 count=1
sudo mkfs.ext4 -F qemu.img
sudo mkdir -p /mnt/qemu
sudo mount -o loop qemu.img /mnt/qemu
sudo cp -a qemu/. /mnt/qemu/.
sudo umount /mnt/qemu

4.运行qemu

1
2
3
4
5
6
7
../Security/qemu/bin/debug/build/x86_64-softmmu/qemu-system-x86_64   \
-kernel /home/dango/Kernel/linux-4.15.7/arch/x86/boot/bzImage \
-append "console=ttyS0 root=/dev/sda rw" \
-hda /home/dango/Kernel/Image/image03/qemu.img \
-enable-kvm -m 2G -nographic \
-netdev user,id=t0, -device rtl8139,netdev=t0,id=nic0 \
-netdev user,id=t1, -device pcnet,netdev=t1,id=nic1
  • ../Security/qemu/bin/debug/build/x86_64-softmmu/qemu-system-x86_64为第2步生成qemu程序路径
  • /home/dango/Kernel/linux-4.15.7/arch/x86/boot/bzImage 为第3.2中生成的路径
  • /home/dango/Kernel/Image/image03/qemu.img 为第3.3.4中生成文件

虚拟机运行起来后,提示输入用户名root,即登录guest虚拟机。

5.测试qemu。

在第4步中运行起的客户机,在guest 虚拟机执行如下操作

5.1 用vim创建c源代码文件mmu.c

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
//mmu.c
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
#include <assert.h>
#include <inttypes.h>

#define PAGE_SHIFT 12
#define PAGE_SIZE (1 << PAGE_SHIFT)
#define PFN_PRESENT (1ull << 63)
#define PFN_PFN ((1ull << 55) - 1)

int fd;

uint32_t page_offset(uint32_t addr)
{
return addr & ((1 << PAGE_SHIFT) - 1);
}

uint64_t gva_to_gfn(void *addr)
{
uint64_t pme, gfn;
size_t offset;
offset = ((uintptr_t)addr >> 9) & ~7;
lseek(fd, offset, SEEK_SET);
read(fd, &pme, 8);
if (!(pme & PFN_PRESENT))
return -1;
gfn = pme & PFN_PFN;
return gfn;
}

uint64_t gva_to_gpa(void *addr)
{
uint64_t gfn = gva_to_gfn(addr);
assert(gfn != -1);
return (gfn << PAGE_SHIFT) | page_offset((uint64_t)addr);
}

int main()
{
uint8_t *ptr;
uint64_t ptr_mem;

fd = open("/proc/self/pagemap", O_RDONLY);
if (fd < 0) {
perror("open");
exit(1);
}

ptr = malloc(256);
strcpy(ptr, "Where am I?");
printf("%s\n", ptr);
ptr_mem = gva_to_gpa(ptr);
printf("Your physical address is at 0x%"PRIx64"\n", ptr_mem);

return 0;
}

5.2 用gcc编译如下代码

如果没有先安装gcc,编译可能会有一些warning,不用在意。

1
gcc -c  mmu.c

5.3 执行程序

1
./mmu.o

1
2
3
4
5
6
7
8
9
10
11
12
hillock:~ liuligang$ wget -O /dev/null --content-disposition  http://airhubdemo.shareco.cn
--2018-03-01 18:19:17-- http://airhubdemo.shareco.cn/
正在解析主机 airhubdemo.shareco.cn (airhubdemo.shareco.cn)... 119.61.68.138
正在连接 airhubdemo.shareco.cn (airhubdemo.shareco.cn)|119.61.68.138|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:https://airhubdemo.shareco.cn [跟随至新的 URL]
--2018-03-01 18:19:17-- https://airhubdemo.shareco.cn/
正在连接 airhubdemo.shareco.cn (airhubdemo.shareco.cn)|119.61.68.138|:443... 已连接。
错误: 无法验证 airhubdemo.shareco.cn 的由 “L=HangZhou,ST=ZheJiang,C=CN,O=H3C,CN=www.h3c.com” 颁发的证书:
出现了自己签名的证书。
错误: 证书通用名 “www.h3c.com” 与所要求的主机名 “airhubdemo.shareco.cn” 不符。
要以不安全的方式连接至 airhubdemo.shareco.cn,使用“--no-check-certificate”

1 按照官网安装手册安装WSL UBUNTU

在windows10 上安装linux系统。具体参考官方文档。
https://docs.microsoft.com/en-us/windows/wsl

2 中文支持

启动WSL安装中文包

1
2
3
apt-get update
apt-get install language-pack-zh-hans
update-locale LANG=zh_CN.UTF-8

重启

3 window10 命令行乱码

按下WIN+R快捷键,在运行的窗口中输入:control,打开控制面板;

选择区域–>管理–>非Unicode程序的语言–>更改系统区域设置:中文(简体,中国)

重启电脑,dos中文操作显示,中文输入可以正常使用。

With mysqldump it is not possible by the parameters to exclude individual databases. However, the database can be easily queried from the information_schema and this makes an exclude.

1
2
3
4
5
6
mysqldump --databases
`mysql --skip-column-names
-e "SELECT GROUP_CONCAT(schema_name SEPARATOR ' ')
FROM information_schema.schemata
WHERE schema_name NOT IN ('mysql','performance_schema','information_schema','db_test');"`
>/dump.sql

  • 1、下载安装lnmp一建安装脚本 https://lnmp.org/
  • 2、修改/usr/local/php/etc/php-fpm.conf
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
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
catch_workers_output = yes
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 80
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 80
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
php_flag[display_errors] = On

多个mp3文件合并成一个mp3文件

一种方法是连接到一起

1
ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3

解释:

  • -i代表输入参数
  • contact:123.mp3|124.mp3代表着需要连接到一起的音频文件
  • -acodec copy output.mp3 重新编码并复制到新文件中

另一种方法是混合到一起

1
ffmpeg64.exe -i 124.mp3 -i 123.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

解释:

  • -i代表输入参数
  • -filter_complex ffmpeg滤镜功能,非常强大,详细请查看文档
  • amix是混合多个音频到单个音频输出
  • inputs=2代表是2个音频文件,如果更多则代表对应数字
  • duration 确定最终输出文件的长度
  • longest(最长)|shortest(最短)|first(第一个文件)
  • dropout_transition
    The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds.
  • -f mp3 输出文件格式

音频文件截取指定时间部分

1
ffmpeg64.exe -i 124.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3

解释:

  • -i代表输入参数
  • -acodec copy output.mp3 重新编码并复制到新文件中
  • -ss 开始截取的时间点
  • -t 截取音频时间长度

音频文件格式转换

1
ffmpeg64.exe -i null.ape -ar 44100 -ac 2 -ab 16k -vol 50 -f mp3 null.mp3

解释:

  • -i代表输入参数
  • -acodec aac(音频编码用AAC)
  • -ar 设置音频采样频率
  • -ac 设置音频通道数
  • -ab 设定声音比特率
  • -vol <百分比> 设定音量