From f7db43fd891ee8555ac0382ae18f6d2a7baac08b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com>
Date: Fri, 25 Oct 2024 14:28:55 +0800
Subject: [PATCH] 'commit'
---
Dockerfile | 22 -------------------
ExtendJar/引用外置jar包.md | 8 +++----
Minio.txt | 15 -------------
WebRoot/html/basicManage.html | 2 +-
WebRoot/html/login.html | 2 +-
WebRoot/html/pages/eduunit/eduList.html | 4 ++--
.../pages/personalCenter/personalcenter.html | 4 ++--
.../html/pages/projectManagement/xx/index.js | 14 ++++++------
.../pages/projectManagement/zbzx/index.js | 8 +++----
WebRoot/html/pages/school/schoolList.html | 14 ++++++------
WebRoot/html/redirect.html | 2 +-
WebRoot/html/static/css/style.css | 12 +++++-----
WebRoot/html/static/js/admin.js | 2 +-
src/main/resources/SetMinioDownload.json | 18 ---------------
发布.md | 8 -------
15 files changed, 36 insertions(+), 99 deletions(-)
delete mode 100644 Dockerfile
delete mode 100644 Minio.txt
delete mode 100644 src/main/resources/SetMinioDownload.json
delete mode 100644 发布.md
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 72152675..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-FROM dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:21
-
-# WORKDIR指令用于设置容器内部的工作目录,即后续指令执行时的当前目录。当Docker容器启动并执行命令时,这些命令将在WORKDIR指定的目录中执行。
-WORKDIR /root
-
-# ENV TZ这样的用法通常是用来设置时区环境变量,TZ代表Time Zone
-ENV TZ=Asia/Shanghai
-
-# 让容器内部正常显示中文
-ENV LANG C.UTF-8
-
-# 将target文件夹下的jar包gw-charge.jar复制到容器的/root目录下
-COPY ./lib /root/lib
-COPY ./target /root/target
-
-#设置这个环境变量后,您可以在Docker容器中启动Java应用程序时使用这些参数。
-ENV JAVA_OPTS="-Xms512m -Xmx1024m"
-
-# 标识为生产环境
-ENV WORKING_ENV="pro"
-
-ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -cp /root/target/classes:/root/lib/* com.dsideal.base.BaseApplication" ]
diff --git a/ExtendJar/引用外置jar包.md b/ExtendJar/引用外置jar包.md
index 10c4e843..282d51af 100644
--- a/ExtendJar/引用外置jar包.md
+++ b/ExtendJar/引用外置jar包.md
@@ -1,9 +1,9 @@
```shell
将第三方包打进本地仓库,然后依赖本地仓库
- mvn install:install-file -Dfile=D:/dsWork/dsProject/ds-base/ExtendJar/aspose-words-20.12-jdk17-crack.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=20.12 -Dpackaging=jar
- mvn install:install-file -Dfile=D:/dsWork/dsProject/ds-base/ExtendJar/aspose-cells-23.4.jar -DgroupId=com.aspose -DartifactId=aspose-cells -Dversion=23.4 -Dpackaging=jar
- mvn install:install-file -Dfile=D:/dsWork/dsProject/ds-base/ExtendJar/aspose.slides-19.3.jar -DgroupId=com.aspose -DartifactId=aspose-slides -Dversion=19.3 -Dpackaging=jar
- mvn install:install-file -Dfile=D:/dsWork/dsProject/ds-base/ExtendJar/aspose-pdf-22.7.1.cracked.jar -DgroupId=com.aspose -DartifactId=aspose-pdf -Dversion=22.7.1 -Dpackaging=jar
+ mvn install:install-file -Dfile=D:/dsWork/dsProject/dsBase/ExtendJar/aspose-words-20.12-jdk17-crack.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=20.12 -Dpackaging=jar
+ mvn install:install-file -Dfile=D:/dsWork/dsProject/dsBase/ExtendJar/aspose-cells-23.4.jar -DgroupId=com.aspose -DartifactId=aspose-cells -Dversion=23.4 -Dpackaging=jar
+ mvn install:install-file -Dfile=D:/dsWork/dsProject/dsBase/ExtendJar/aspose.slides-19.3.jar -DgroupId=com.aspose -DartifactId=aspose-slides -Dversion=19.3 -Dpackaging=jar
+ mvn install:install-file -Dfile=D:/dsWork/dsProject/dsBase/ExtendJar/aspose-pdf-22.7.1.cracked.jar -DgroupId=com.aspose -DartifactId=aspose-pdf -Dversion=22.7.1 -Dpackaging=jar
```
```xml
diff --git a/Minio.txt b/Minio.txt
deleted file mode 100644
index 89604e4b..00000000
--- a/Minio.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-#Minio 配置
-minio_endpoint: http://10.10.14.212:9000
-minio_accesskey: wJDQP0ZZpyLHIfnPXYPn
-minio_secretkey: ZkmTmuoMK6f601rQF5OOQB2JlSvmBOjrHRhIz6bt
-minio_bucketName:dsideal
-minio_path_prefix=http://10.10.14.212:9000/dsideal/
-
-
-#Minio 配置
-minio_endpoint: http://10.10.14.212:9000
-minio_accesskey: wJDQP0ZZpyLHIfnPXYPn
-minio_secretkey: ZkmTmuoMK6f601rQF5OOQB2JlSvmBOjrHRhIz6bt
-minio_bucketName:dsideal
-minio_path_prefix=http://10.10.14.212:9000/dsideal/
\ No newline at end of file
diff --git a/WebRoot/html/basicManage.html b/WebRoot/html/basicManage.html
index 72426f1b..193f4e9c 100644
--- a/WebRoot/html/basicManage.html
+++ b/WebRoot/html/basicManage.html
@@ -170,7 +170,7 @@
async: false,
success: function (result) {
console.log(result);
- window.location.href = '/ds-base/html/login.html';
+ window.location.href = '/dsBase/html/login.html';
}
});
diff --git a/WebRoot/html/login.html b/WebRoot/html/login.html
index ac6dd0e6..1e8410ab 100644
--- a/WebRoot/html/login.html
+++ b/WebRoot/html/login.html
@@ -100,7 +100,7 @@
if (result.success) {
//存储csrf_token到本地存储器
//setCsrfLocalStorage(result);
- window.location.href = '/ds-base/html/basicManage.html';
+ window.location.href = '/dsBase/html/basicManage.html';
} else {
alert(result.msg);
refreshCaptcha();
diff --git a/WebRoot/html/pages/eduunit/eduList.html b/WebRoot/html/pages/eduunit/eduList.html
index bc3af293..6870a74c 100644
--- a/WebRoot/html/pages/eduunit/eduList.html
+++ b/WebRoot/html/pages/eduunit/eduList.html
@@ -399,7 +399,7 @@
var title = "部门维护";
var newid = randomFrom(100000, 999999);
$("#org_tab_id").val(newid);
- var url = "/ds-base/html/pages/dep/depList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ var url = "/dsBase/html/pages/dep/depList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
content: '',
@@ -414,7 +414,7 @@
var title = "职工信息管理";
var newid = randomFrom(100000, 999999);
$("#tea_tab_id").val(newid);
- var url = "/ds-base/html/pages/tea/teaList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id + "&org_type_id=" + data.org_type_id;
+ var url = "/dsBase/html/pages/tea/teaList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id + "&org_type_id=" + data.org_type_id;
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
content: '',
diff --git a/WebRoot/html/pages/personalCenter/personalcenter.html b/WebRoot/html/pages/personalCenter/personalcenter.html
index a72a9b33..91bda7e2 100644
--- a/WebRoot/html/pages/personalCenter/personalcenter.html
+++ b/WebRoot/html/pages/personalCenter/personalcenter.html
@@ -336,13 +336,13 @@
}
window.bindQq=function () {
- var url=document.location.protocol+'//'+document.domain+"/ds-base/html/pages/personalCenter/qq-passport.html";
+ var url=document.location.protocol+'//'+document.domain+"/dsBase/html/pages/personalCenter/qq-passport.html";
window.open('https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101470748&response_type=code&scope=all&redirect_uri='+url);
}
window.bindWx=function () {
- var url=document.location.protocol+'//'+document.domain+"/ds-base/html/pages/personalCenter/wx-passport.html";
+ var url=document.location.protocol+'//'+document.domain+"/dsBase/html/pages/personalCenter/wx-passport.html";
window.open("https://open.weixin.qq.com/connect/qrconnect?appid=wx3e0449144386938a&redirect_uri="+url+"&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect");
}
window.bindEmail=function () {
diff --git a/WebRoot/html/pages/projectManagement/xx/index.js b/WebRoot/html/pages/projectManagement/xx/index.js
index 91d2ed8c..0b7676bc 100644
--- a/WebRoot/html/pages/projectManagement/xx/index.js
+++ b/WebRoot/html/pages/projectManagement/xx/index.js
@@ -59,7 +59,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 技术方案上报
window.jsfasb = function () {
var newid = 2;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/jsfasb/projectList.html?step_code=0202_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/jsfasb/projectList.html?step_code=0202_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '技术方案上报',
content: '',
@@ -71,7 +71,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 项目采购
window.xmcg = function () {
var newid = 3;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/xmcg/projectList.html?step_code=0207_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/xmcg/projectList.html?step_code=0207_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '项目采购',
content: '',
@@ -83,7 +83,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 项目实施
window.xmss = function () {
var newid = 4;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/xmss/projectList.html?step_code=0301_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/xmss/projectList.html?step_code=0301_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '项目实施',
content: '',
@@ -95,7 +95,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 实施问题整改
window.xmss_wt = function () {
var newid = 4;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/xmss/projectList.html?step_code=0302_0303_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/xmss/projectList.html?step_code=0302_0303_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '项目实施',
content: '',
@@ -107,7 +107,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 项目单位验收
window.xmdwys = function () {
var newid = 5;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/xmdwys/projectList.html?step_code=0304_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/xmdwys/projectList.html?step_code=0304_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '项目单位验收',
content: '',
@@ -119,7 +119,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 申请市级验收
window.sqsjys = function () {
var newid = 6;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/sqsjys/projectList.html?step_code=0305_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/sqsjys/projectList.html?step_code=0305_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '申请市级验收',
content: '',
@@ -131,7 +131,7 @@ layui.use(['table', 'laytpl', 'form', 'element'], function () {
// 资金请示文件提交
window.zjqswjtj = function () {
var newid = 7;
- var url = "/ds-base/html/pages/projectManagement/xx/xmdb/zjqswjtj/projectList.html?step_code=0308_1";
+ var url = "/dsBase/html/pages/projectManagement/xx/xmdb/zjqswjtj/projectList.html?step_code=0308_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '资金请示文件提交',
content: '',
diff --git a/WebRoot/html/pages/projectManagement/zbzx/index.js b/WebRoot/html/pages/projectManagement/zbzx/index.js
index 30c994d3..d941faf8 100644
--- a/WebRoot/html/pages/projectManagement/zbzx/index.js
+++ b/WebRoot/html/pages/projectManagement/zbzx/index.js
@@ -57,7 +57,7 @@ layui.use(['table', 'laytpl', 'form'], function () {
// 初审专家分配
window.cszjfp = function () {
var newid = 2;
- var url = "/ds-base/html/pages/projectManagement/zbzx/xmdb/cszjfp/projectList.html?step_code=0201";
+ var url = "/dsBase/html/pages/projectManagement/zbzx/xmdb/cszjfp/projectList.html?step_code=0201";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '初审专家分配',
content: '',
@@ -69,7 +69,7 @@ layui.use(['table', 'laytpl', 'form'], function () {
// 技术方案复审
window.jsfafs = function () {
var newid = 3;
- var url = "/ds-base/html/pages/projectManagement/zbzx/xmdb/jsfafs/projectList.html?step_code=0205_1";
+ var url = "/dsBase/html/pages/projectManagement/zbzx/xmdb/jsfafs/projectList.html?step_code=0205_1";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '技术方案复审',
content: '',
@@ -81,7 +81,7 @@ layui.use(['table', 'laytpl', 'form'], function () {
// 监理公司分配
window.jlgsfp = function () {
var newid = 5;
- var url = "/ds-base/html/pages/projectManagement/zbzx/xmdb/jlgsfp/projectList.html?step_code=0206";
+ var url = "/dsBase/html/pages/projectManagement/zbzx/xmdb/jlgsfp/projectList.html?step_code=0206";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '监理公司分配',
content: '',
@@ -93,7 +93,7 @@ layui.use(['table', 'laytpl', 'form'], function () {
// 验收专家分配
window.yszjfp = function () {
var newid = 4;
- var url = "/ds-base/html/pages/projectManagement/zbzx/xmdb/yszjfp/projectList.html?step_code=0306";
+ var url = "/dsBase/html/pages/projectManagement/zbzx/xmdb/yszjfp/projectList.html?step_code=0306";
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: '验收专家分配',
content: '',
diff --git a/WebRoot/html/pages/school/schoolList.html b/WebRoot/html/pages/school/schoolList.html
index 9d73875b..c23edc1d 100644
--- a/WebRoot/html/pages/school/schoolList.html
+++ b/WebRoot/html/pages/school/schoolList.html
@@ -439,7 +439,7 @@
var title = "部门管理";
var newid = randomFrom(100000, 999999);
$("#org_tab_id").val(newid);
- var url = "/ds-base/html/pages/dep/depList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ var url = "/dsBase/html/pages/dep/depList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
content: '',
@@ -456,7 +456,7 @@
var title = "教师管理";
var newid = randomFrom(100000, 999999);
$("#tea_tab_id").val(newid);
- var url = "/ds-base/html/pages/tea/teaList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id + "&org_type_id=" + data.org_type_id;
+ var url = "/dsBase/html/pages/tea/teaList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id + "&org_type_id=" + data.org_type_id;
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
content: '',
@@ -474,10 +474,10 @@
var title = "班级管理";
var newid = randomFrom(100000, 999999);
$("#class_tab_id").val(newid);
- var url = "/ds-base/html/pages/class/classList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ var url = "/dsBase/html/pages/class/classList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
if(obj.data.showClassTree)
{
- url = "/ds-base/html/pages/class/classListTree.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ url = "/dsBase/html/pages/class/classListTree.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
}
window.parent.parent.layui.element.tabAdd('wenav_tab', {
@@ -497,10 +497,10 @@
var title = "学生管理";
var newid = randomFrom(100000, 999999);
$("#stu_tab_id").val(newid);
- var url = "/ds-base/html/pages/student/stuList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ var url = "/dsBase/html/pages/student/stuList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
if(obj.data.showClassTree)
{
- url = "/ds-base/html/pages/student/stuListTree.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ url = "/dsBase/html/pages/student/stuListTree.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
}
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
@@ -517,7 +517,7 @@
var title = "家长管理";
var newid = randomFrom(100000, 999999);
$("#par_tab_id").val(newid);
- var url = "/ds-base/html/pages/parent/parList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
+ var url = "/dsBase/html/pages/parent/parList.html?level=" + level + "&area_id=" + $("#area_id").val() + "&org_id=" + data.org_id;
window.parent.parent.layui.element.tabAdd('wenav_tab', {
title: title,
content: '',
diff --git a/WebRoot/html/redirect.html b/WebRoot/html/redirect.html
index 28300617..b2e40b5f 100644
--- a/WebRoot/html/redirect.html
+++ b/WebRoot/html/redirect.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/WebRoot/html/static/css/style.css b/WebRoot/html/static/css/style.css
index 3c593177..5cc4dec5 100644
--- a/WebRoot/html/static/css/style.css
+++ b/WebRoot/html/static/css/style.css
@@ -47,10 +47,10 @@ background-color: #2B2F31; color: #ed6b20;
.navbar-nav .dropdown-menu li:hover a, .topbar-nav .dropdown-menu li.active a { background: rgba(51,150,251,1); color: #fff; }
-.banner{ height:240px; background:url(/ds-base/html/static/images/banner.jpg) center top no-repeat;}
-.banner_teacher{ height:240px; background:url(/ds-base/html/static/images/banner_teacher.jpg) center top no-repeat;}
-.banner_student{ height:240px; background:url(/ds-base/html/static/images/banner_student.jpg) center top no-repeat;}
-.banner_login{ height:639px; background:url(/ds-base/html/static/images/login.jpg) center top no-repeat;}
+.banner{ height:240px; background:url(/dsBase/html/static/images/banner.jpg) center top no-repeat;}
+.banner_teacher{ height:240px; background:url(/dsBase/html/static/images/banner_teacher.jpg) center top no-repeat;}
+.banner_student{ height:240px; background:url(/dsBase/html/static/images/banner_student.jpg) center top no-repeat;}
+.banner_login{ height:639px; background:url(/dsBase/html/static/images/login.jpg) center top no-repeat;}
.banner p, .banner_teacher p,.banner_student p { text-align: right; color: #fff; font: bold 30px/50px "microsoft yahei"; padding:100px 100px 0 0; }
/*portlet*/
@@ -62,8 +62,8 @@ footer { height:70px; text-align: center; font-size: 12px; margin-top: 50px; }
.copy .weixin span{ display:block; color:#fff;}
.title01 { border:0; text-align:center; padding-bottom: 35px; }
-.title01 h1{ display:inline-block; background:url(/ds-base/html/static/images/titbg02.jpg) left bottom repeat-x; font: bold 24px/66px "microsoft yahei"; color: #424242;}
-.title01 h1 span{ display:block; background:url(/ds-base/html/static/images/titbg01.png) center bottom no-repeat;}
+.title01 h1{ display:inline-block; background:url(/dsBase/html/static/images/titbg02.jpg) left bottom repeat-x; font: bold 24px/66px "microsoft yahei"; color: #424242;}
+.title01 h1 span{ display:block; background:url(/dsBase/html/static/images/titbg01.png) center bottom no-repeat;}
.title01 h1 span b{ color:#4b78dd;}
/*ptlist01*/
diff --git a/WebRoot/html/static/js/admin.js b/WebRoot/html/static/js/admin.js
index 1f1054ab..e849bf9d 100644
--- a/WebRoot/html/static/js/admin.js
+++ b/WebRoot/html/static/js/admin.js
@@ -623,7 +623,7 @@ layui.define(['jquery', 'form', 'layer', 'element'], function (exports) {
;
var str = $(this).text().slice(4, 8);
if (str == '数据分析') {
- window.open("/ds-base/html/pages/dataSystem/dataSystem.html")
+ window.open("/dsBase/html/pages/dataSystem/dataSystem.html")
} else {
tab.tabAdd(title, url, index + 1);
tab.tabChange(index + 1);
diff --git a/src/main/resources/SetMinioDownload.json b/src/main/resources/SetMinioDownload.json
deleted file mode 100644
index 5955e673..00000000
--- a/src/main/resources/SetMinioDownload.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "Version": "2012-10-17",
- "Statement": [{
- "Effect": "Allow",
- "Principal": {
- "AWS": ["*"]
- },
- "Action": ["s3:GetBucketLocation", "s3:ListBucket"],
- "Resource": ["arn:aws:s3:::dsideal"]
- }, {
- "Effect": "Allow",
- "Principal": {
- "AWS": ["*"]
- },
- "Action": ["s3:GetObject"],
- "Resource": ["arn:aws:s3:::dsideal/*"]
- }]
-}
\ No newline at end of file
diff --git a/发布.md b/发布.md
deleted file mode 100644
index 1e4ef0c9..00000000
--- a/发布.md
+++ /dev/null
@@ -1,8 +0,0 @@
-```shell
-docker run --name dsBase -p 8001:8001 -d registry.cn-hangzhou.aliyuncs.com/dsideal/ds-base:20240923104735
-```
-
-
-
-解决Docker容器 iptables问题---docker: Error response from daemon: driver failed programming external connectivity on endpoint quizzical_thompson
-https://www.cnblogs.com/sucretan2010/p/11310626.html